11/* ============================================================
22 Country Explorer — styles.css
3- Dark, modern, fully responsive UI with accessible contrast .
4- Includes sort chips and a smooth fading modal (open/close ).
3+ Dark, modern, responsive UI with sort chips and fading modal .
4+ Includes robust flag <img> support (Chrome-friendly ).
55 ============================================================ */
66
77: root {
@@ -25,11 +25,11 @@ body{
2525 margin : 0 ;
2626 font-family : 'Inter' , system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
2727 color : var (--text );
28- background : var (--bg ); /* solid background, no gradient */
28+ background : var (--bg );
2929 letter-spacing : .2px ;
3030}
3131
32- /* Normalize button look (Reset & chips) */
32+ /* Normalize buttons */
3333button {
3434 font : inherit;
3535 color : inherit;
@@ -90,35 +90,35 @@ button{
9090
9191.hint { margin-top : 6px ; font-size : 12px ; color : var (--muted ) }
9292
93- /* Buttons (Reset) */
93+ /* Buttons */
9494.btn {
95- display : inline-flex; align-items : center; justify-content : center; gap : 8px ;
96- height : 42px ; padding : 0 14px ;
97- border-radius : 12px ;
95+ display : inline-flex; align-items : center; justify-content : center; gap : 8px ;
96+ height : 42px ; padding : 0 14px ;
97+ border-radius : 12px ;
9898 border : 1px solid # 2c3858 ;
9999 background : linear-gradient (180deg , color-mix (in oklab, var (--brand ) 22% , # 0d1222 ), # 0d1222 );
100- color : var (--text ); font-weight : 600 ; cursor : pointer;
100+ color : var (--text ); font-weight : 600 ; cursor : pointer;
101101 transition : filter .15s ease, transform .05s ease, box-shadow .15s ease, background .2s ease;
102102}
103- .btn : hover { filter : brightness (1.06 ) }
103+ .btn : hover { filter : brightness (1.06 ) }
104104.btn : active { transform : translateY (1px ) }
105- .btn : focus-visible { outline : none; box-shadow : var (--ring ) }
106- .btn-ghost { background : transparent; border-color : # 283352 }
107- .btn-ghost : hover { background : # 12172a ; filter : none }
105+ .btn : focus-visible { outline : none; box-shadow : var (--ring ) }
106+ .btn-ghost { background : transparent; border-color : # 283352 }
107+ .btn-ghost : hover { background : # 12172a ; filter : none }
108108
109109/* Sort bar & chips */
110110.sortbar {
111- display : flex; align-items : center; flex-wrap : wrap; gap : 10px ;
112- margin-top : 10px ;
111+ display : flex; align-items : center; flex-wrap : wrap; gap : 10px ;
112+ margin-top : 10px ;
113113}
114114.chip {
115- position : relative;
115+ position : relative;
116116 display : inline-flex; align-items : center; gap : 8px ;
117117 padding : 8px 12px ;
118- border-radius : 999px ;
118+ border-radius : 999px ;
119119 background : # 0e1426 ;
120120 border : 1px solid # 223056 ;
121- color : var (--text );
121+ color : var (--text );
122122 cursor : pointer;
123123 transition : transform .05s ease, box-shadow .15s ease, border-color .15s ease, background .15s ease;
124124}
@@ -129,43 +129,52 @@ button{
129129 border-color : color-mix (in oklab, var (--brand ) 45% , # 223056 );
130130}
131131.chip ::after {
132- content : "" ;
133- width : 0 ; height : 0 ;
134- border-left : 5px solid transparent;
135- border-right : 5px solid transparent;
136- margin-left : 4px ;
132+ content : "" ;
133+ width : 0 ; height : 0 ;
134+ border-left : 5px solid transparent;
135+ border-right : 5px solid transparent;
136+ margin-left : 4px ;
137137 transform : translateY (1px );
138138}
139- .chip .asc ::after { border-bottom : 7px solid var (--text ) } /* ▲ */
140- .chip .desc ::after { border-top : 7px solid var (--text ) } /* ▼ */
139+ .chip .asc ::after { border-bottom : 7px solid var (--text ) } /* ▲ */
140+ .chip .desc ::after { border-top : 7px solid var (--text ) } /* ▼ */
141141
142142/* Results grid */
143- .results { margin : 18px 0 36px }
143+ .results { margin : 18px 0 36px }
144144.grid {
145145 display : grid;
146146 grid-template-columns : repeat ( auto-fill, minmax (220px , 1fr ) );
147- gap : 14px ;
147+ gap : 14px ;
148148}
149149.card {
150150 position : relative;
151151 background : linear-gradient (180deg , var (--card ), # 111625 );
152- border : 1px solid # 212842 ;
153- border-radius : var (--radius );
154- padding : 14px ;
155- box-shadow : var (--shadow );
152+ border : 1px solid # 212842 ;
153+ border-radius : var (--radius );
154+ padding : 14px ;
155+ box-shadow : var (--shadow );
156156 transition : transform .18s ease, box-shadow .18s ease, border-color .18s ease;
157- cursor : pointer;
157+ cursor : pointer;
158158}
159159.card : hover {
160160 transform : translateY (-2px );
161161 border-color : color-mix (in oklab, var (--brand ) 45% , # 212842 );
162162 box-shadow : 0 12px 36px -14px rgba (0 , 0 , 0 , .55 );
163163}
164+
165+ /* Flag container (supports emoji or <img>) */
164166.flag {
165- width : 28px ; height : 24px ; border-radius : 6px ;
166- display : grid; place-items : center; font-size : 18px ; background : # 0f1424 ; border : 1px solid # 26304a ;
167+ width : 28px ; height : 24px ; border-radius : 6px ;
168+ display : grid; place-items : center; font-size : 18px ;
169+ background : # 0f1424 ; border : 1px solid # 26304a ; overflow : hidden;
167170}
168171.flag .flag-lg { width : 52px ; height : 42px ; font-size : 28px ; border-radius : 10px }
172+ /* Make <img> flags fill the container nicely */
173+ .flag img {
174+ width : 100% ; height : 100% ;
175+ display : block; object-fit : cover; border-radius : inherit;
176+ }
177+
169178.card-header { display : flex; gap : 10px ; align-items : center; margin-bottom : 10px }
170179.country-name { font-weight : 700 ; letter-spacing : .2px }
171180.country-capital { color : var (--muted ); font-size : 12px }
@@ -176,75 +185,57 @@ button{
176185.kpi { display : flex; gap : 6px ; align-items : center; background : # 0e1426 ; border : 1px solid # 223056 ; padding : 6px 8px ; border-radius : 999px }
177186.kpi strong { color : var (--text ) }
178187
179- .empty { margin : 28px 0 ; text-align : center; color : var (--muted ) }
188+ .empty { margin : 28px 0 ; text-align : center; color : var (--muted ) }
180189.hidden { display : none }
181190
182191/* Footer */
183- .site-footer { border-top : 1px solid # 1f2434 ; margin-top : 12px ; background : # 0b0d13 }
192+ .site-footer { border-top : 1px solid # 1f2434 ; margin-top : 12px ; background : # 0b0d13 }
184193.footer-inner { padding : 14px 0 ; display : flex; gap : 10px ; justify-content : space-between; color : var (--muted ); font-size : 12px }
185194.footer-inner .buy-link { color : var (--brand ) }
186195@media (max-width : 600px ){ .footer-inner { flex-direction : column } }
187196
188- /* ------------------------------
189- Modal (fade-in / fade-out with classes)
190- ------------------------------ */
197+ /* Modal with fade-in/out */
191198.modal {
192199 width : min (860px , 92vw );
193- border : none;
194- padding : 0 ;
195- background : transparent;
196-
197- /* animation base state */
198- opacity : 0 ;
199- transform : scale (0.97 );
200- transition : opacity 0.25s ease, transform 0.25s ease;
201- }
202-
203- /* when dialog is open AND we've added .open, play fade-in */
204- .modal .open {
205- opacity : 1 ;
206- transform : scale (1 );
207- }
208-
209- /* play fade-out before closing() */
210- .modal .closing {
211- opacity : 0 !important ;
212- transform : scale (0.97 );
200+ border : none; padding : 0 ; background : transparent;
201+ opacity : 0 ; transform : scale (0.97 );
202+ transition : opacity .25s ease, transform .25s ease;
213203}
204+ .modal .open { opacity : 1 ; transform : scale (1 ) }
205+ .modal .closing { opacity : 0 !important ; transform : scale (0.97 ) }
214206
215- /* Backdrop animates too — it only exists while [open] is set by the browser */
216207.modal ::backdrop {
217208 background : rgba (2 , 6 , 20 , 0 );
218209 backdrop-filter : blur (3px );
219- transition : background 0 .25s ease;
210+ transition : background .25s ease;
220211}
221212.modal .open ::backdrop { background : rgba (2 , 6 , 20 , 0.6 ) }
222213.modal .closing ::backdrop { background : rgba (2 , 6 , 20 , 0 ) !important }
223214
224215.modal-card {
225216 width : 100% ;
226217 background : linear-gradient (180deg , var (--panel ), var (--panel-2 ));
227- border : 1px solid # 223056 ; border-radius : 20px ; overflow : hidden;
218+ border : 1px solid # 223056 ; border-radius : 20px ; overflow : hidden;
228219}
229220.modal-header {
230221 display : flex; align-items : center; justify-content : space-between;
231- padding : 14px 16px ; border-bottom : 1px solid # 223056 ;
222+ padding : 14px 16px ; border-bottom : 1px solid # 223056 ;
232223}
233224.modal-flag-name { display : flex; align-items : center; gap : 12px }
234225.modal-title { margin : 0 ; font-size : 20px ; color : var (--text ) }
235226.modal-subtitle { color : var (--muted ); font-size : 12px }
236227.icon-btn { width : 36px ;height : 36px ;border-radius : 10px ;border : 1px solid # 2b3858 ;background : # 0f1322 ;color : var (--text );cursor : pointer }
237228.icon-btn : hover { background : # 121a30 }
238- .modal-content { padding : 16px }
229+ .modal-content { padding : 16px }
239230.details-grid { display : grid; gap : 12px ; grid-template-columns : repeat (2 , 1fr ) }
240231@media (max-width : 700px ){ .details-grid { grid-template-columns : 1fr } }
241232
242233.detail {
243234 background : # 0d1324 ; border : 1px solid # 213056 ; border-radius : 14px ; padding : 12px ;
244- color : var (--text );
235+ color : var (--text );
245236}
246237.dt { font-size : 11px ; color : var (--muted ); margin-bottom : 6px }
247- .dd { font-size : 14px ; color : var (--text ) }
238+ .dd { font-size : 14px ; color : var (--text ) }
248239.taglist { display : flex; gap : 6px ; flex-wrap : wrap }
249240.taglist .tag { border : 1px solid # 2b395c ; background : # 0c1224 ; padding : 4px 8px ; border-radius : 999px ; font-size : 12px ; color : var (--text ) }
250- .modal-footer { padding : 12px 16px ; border-top : 1px solid # 223056 ; display : flex; justify-content : flex-end }
241+ .modal-footer { padding : 12px 16px ; border-top : 1px solid # 223056 ; display : flex; justify-content : flex-end }
0 commit comments