/* Atlasopia — atlas + passport look. Paper, ink and navy for the shell; each country page takes its accent from its flag. */
:root{
  color-scheme:light;
  --paper:#F4F6F7; --surface:#FFFFFF; --surface-2:#F8FAFB; --sunk:#EEF2F5;
  --ink:#0F1D2B; --ink-2:#33475B; --muted:#6A7988; --line:#DDE3E8; --line-2:#C9D2DA;
  --navy:#0E2A47; --on-navy:#FFFFFF; --gold:#A8822A; --gold-ink:#7A5B12; --gold-soft:#F3EBD8;
  --sea:#E3ECF2; --land:#CED8E1; --land-hi:#B7C5D1; --land-edge:#F7F9FA; --ctx:#E2E8ED; --out:#DCE3E9;
  --ok:#1F8A55; --ok-soft:#D7EEDF; --bad:#C2413A; --bad-soft:#F7DEDC;
  --s1:#2a78d6; --s2:#eb6834; --s3:#1baf7a; --world:#7F8C99;
  --q1:#cde2fb; --q2:#86b6ef; --q3:#3987e5; --q4:#1c5cab; --q5:#0d366b;
  --accent:var(--navy); --on-accent:#FFFFFF;
  --display:"Newsreader",Georgia,"Times New Roman",serif;
  --body:"Public Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"Cascadia Mono",Consolas,monospace;
  --r:12px; --r-s:8px;
  --shadow:0 1px 2px rgba(15,29,43,.05),0 6px 22px rgba(15,29,43,.06);
  --gutter:max(16px,env(safe-area-inset-left,0px));
  --gutter-r:max(16px,env(safe-area-inset-right,0px));
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --paper:#0A131D; --surface:#101C29; --surface-2:#13212F; --sunk:#0D1824;
    --ink:#E7EDF3; --ink-2:#B9C6D3; --muted:#8597A8; --line:#1F3042; --line-2:#2A3F55;
    --navy:#D4B062; --on-navy:#14100A; --gold:#D4B062; --gold-ink:#D4B062; --gold-soft:#2A2416;
    --sea:#0C1825; --land:#22364B; --land-hi:#2D4660; --land-edge:#0C1825; --ctx:#16263A; --out:#1A2B3E;
    --ok:#3DBE7E; --ok-soft:#173A2A; --bad:#EF6A62; --bad-soft:#40201F;
    --s1:#3987e5; --s2:#d95926; --s3:#199e70; --world:#8C99A6;
    --q1:#184f95; --q2:#256abf; --q3:#3987e5; --q4:#6da7ec; --q5:#b7d3f6;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.25);
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --paper:#0A131D; --surface:#101C29; --surface-2:#13212F; --sunk:#0D1824;
  --ink:#E7EDF3; --ink-2:#B9C6D3; --muted:#8597A8; --line:#1F3042; --line-2:#2A3F55;
  --navy:#D4B062; --on-navy:#14100A; --gold:#D4B062; --gold-ink:#D4B062; --gold-soft:#2A2416;
  --sea:#0C1825; --land:#22364B; --land-hi:#2D4660; --land-edge:#0C1825; --ctx:#16263A; --out:#1A2B3E;
  --ok:#3DBE7E; --ok-soft:#173A2A; --bad:#EF6A62; --bad-soft:#40201F;
  --s1:#3987e5; --s2:#d95926; --s3:#199e70; --world:#8C99A6;
  --q1:#184f95; --q2:#256abf; --q3:#3987e5; --q4:#6da7ec; --q5:#b7d3f6;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.25);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:120px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 15px/1.55 var(--body);overflow-x:hidden;font-feature-settings:"kern","liga"}
img{max-width:100%;display:block}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--s1);outline-offset:2px;border-radius:4px}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}
p{margin:0 0 .8em}
.wrap{max-width:1240px;margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter-r)}
.display{font-family:var(--display);font-weight:500;letter-spacing:-.02em;line-height:1.05}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.lede{font-size:18px;color:var(--ink-2);max-width:62ch}
.muted{color:var(--muted)}
.mono{font-family:var(--mono);font-feature-settings:"tnum"}
.num{font-variant-numeric:tabular-nums}
.small{font-size:13px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hidden{display:none!important}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:18px;height:62px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex:none}
.brand svg{width:30px;height:30px}
.brand b{font:600 22px/1 var(--display);letter-spacing:-.01em}
.brand b i{font-style:italic;font-weight:500;color:var(--gold-ink)}
.nav{display:flex;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a{padding:8px 11px;border-radius:8px;text-decoration:none;font-weight:500;font-size:14.5px;color:var(--ink-2);white-space:nowrap}
.nav a:hover{background:var(--sunk);color:var(--ink)}
.nav a[aria-current="page"]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--gold)}
.qsearch{position:relative;flex:0 1 250px}
.qsearch input{width:100%;height:38px;border:1px solid var(--line-2);background:var(--surface-2);border-radius:999px;padding:0 14px 0 36px;outline:none}
.qsearch input:focus{border-color:var(--s1);background:var(--surface)}
.qsearch svg{position:absolute;left:12px;top:11px;width:16px;height:16px;color:var(--muted)}
.drop{position:absolute;top:44px;left:0;right:0;min-width:260px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:6px;z-index:50}
.drop button{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:8px;border-radius:8px;text-align:left}
.drop button[aria-selected="true"],.drop button:hover{background:var(--sunk)}
.drop .flag{width:28px;height:21px}
.drop small{color:var(--muted);margin-left:auto;font-size:12px}
.lvl{flex:none;display:flex;align-items:center;gap:8px;text-decoration:none;border:1px solid var(--line-2);border-radius:999px;padding:4px 12px 4px 4px;font-size:13px}
.lvl b{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--navy);color:var(--on-navy);font:600 13px var(--mono)}
@media (max-width:900px){
  .top .wrap{flex-wrap:wrap;height:auto;padding-top:10px;padding-bottom:6px;gap:8px 12px}
  .nav{order:3;flex-basis:100%}
  .qsearch{flex:1}
  .lvl span{display:none}
  .lvl{padding:4px}
}

/* ---------- generic pieces ---------- */
main{min-height:70vh}
.page{padding-top:28px;padding-bottom:56px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.pad{padding:20px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 18px;border-radius:10px;border:1px solid var(--line-2);background:var(--surface);font-weight:600;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:var(--ink-2)}
.btn.primary{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}
.btn.primary:hover{filter:brightness(1.12)}
.btn.accent{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.small{height:34px;padding:0 12px;font-size:13.5px;border-radius:8px}
.btn[disabled]{opacity:.5;cursor:default}
.btn svg{width:17px;height:17px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;background:var(--sunk);border:1px solid var(--line);font-size:12.5px;color:var(--ink-2);max-width:100%}
.chip.gold{background:var(--gold-soft);border-color:transparent;color:var(--gold-ink)}
.chip.ok{background:var(--ok-soft);border-color:transparent;color:var(--ok)}
.chip.bad{background:var(--bad-soft);border-color:transparent;color:var(--bad)}
.flag{width:32px;aspect-ratio:4/3;height:auto;border-radius:3px;box-shadow:0 0 0 1px rgba(15,29,43,.12);object-fit:cover;background:var(--sunk)}
.seg{display:inline-flex;background:var(--sunk);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:none;padding:6px 12px;border-radius:7px;font-weight:500;font-size:14px;color:var(--ink-2)}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.meter{height:6px;border-radius:99px;background:var(--sunk);overflow:hidden}
.meter i{display:block;height:100%;border-radius:99px;background:var(--gold)}
.sec-h{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:40px 0 16px;flex-wrap:wrap}
.sec-h h2{font:500 30px/1.1 var(--display)}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:980px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.g2,.g3,.g4{grid-template-columns:minmax(0,1fr)}}
.tile{padding:14px 16px;border-radius:10px;background:var(--surface);border:1px solid var(--line);min-width:0}
.tile .k{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.tile .v{font:500 24px/1.2 var(--display);margin-top:4px;overflow-wrap:anywhere}
.tile .s{font-size:12px;color:var(--muted);margin-top:2px}
.empty{padding:28px;text-align:center;color:var(--muted)}
.loading{padding:80px 0;text-align:center;color:var(--muted)}
.spin{width:28px;height:28px;border-radius:50%;border:3px solid var(--line-2);border-top-color:var(--gold);animation:spin 0.9s linear infinite;margin:0 auto 12px}
@keyframes spin{to{transform:rotate(360deg)}}

/* tooltip + toasts */
.tip{position:fixed;z-index:80;pointer-events:none;background:var(--ink);color:var(--paper);padding:7px 10px;border-radius:8px;font-size:13px;line-height:1.35;max-width:260px;box-shadow:0 4px 18px rgba(0,0,0,.2);transform:translate(-50%,calc(-100% - 12px))}
.tip b{font-weight:600}
.tip .flag{width:22px;display:inline-block;vertical-align:-3px;margin-right:6px}
.toasts{position:fixed;right:var(--gutter-r);bottom:16px;z-index:90;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none}
.toast{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--gold);box-shadow:var(--shadow);border-radius:10px;padding:10px 14px;font-size:14px;max-width:340px;animation:tin .25s ease-out}
.toast b{display:block}
@keyframes tin{from{opacity:0;transform:translateY(8px)}}

/* ---------- maps ---------- */
.map{position:relative;background:var(--sea);border-radius:var(--r);overflow:hidden;border:1px solid var(--line);touch-action:none}
.map svg{display:block;width:100%;height:auto;user-select:none;-webkit-user-select:none}
.map path{vector-effect:non-scaling-stroke}
.map .c{fill:var(--land);stroke:var(--land-edge);stroke-width:.7}
.map .ctx{fill:var(--ctx);stroke:var(--land-edge);stroke-width:.5}
.map .ws{fill:url(#hatch);stroke:var(--land-edge);stroke-width:.5}
.map .out{fill:var(--out)}
.map.click .c:not(.out){cursor:pointer}
.map.click .c:not(.out):hover{fill:var(--land-hi)}
.map .c.hl{fill:var(--accent)}
.map .c.nb{fill:color-mix(in srgb,var(--accent) 22%,var(--land))}
.map .c.ok{fill:var(--ok);fill-opacity:.55}
.map .c.bad{fill:var(--bad)}
.map .c.target{fill:var(--gold);animation:pulse 1s ease-in-out 2}
@keyframes pulse{50%{fill-opacity:.35}}
.map .ring{fill:transparent;stroke:var(--ink-2);stroke-opacity:.55;vector-effect:non-scaling-stroke;stroke-width:1;cursor:pointer}
.map .ring:hover{stroke:var(--s1);stroke-opacity:1;stroke-width:2}
.map .ring.hl{stroke:var(--accent);stroke-width:2.5;stroke-opacity:1;fill:color-mix(in srgb,var(--accent) 30%,transparent)}
.map .ring.ok{stroke:var(--ok);stroke-width:2;stroke-opacity:1}
.map .ring.bad{stroke:var(--bad);stroke-width:2.5;stroke-opacity:1}
.map .ring.target{stroke:var(--gold);stroke-width:3;stroke-opacity:1}
.map .ring.out{display:none}
.map .grat{fill:none;stroke:var(--ink);stroke-opacity:.06;vector-effect:non-scaling-stroke}
.map .sphere{fill:var(--sea);stroke:var(--line-2);vector-effect:non-scaling-stroke}
.map .site{fill:var(--gold);stroke:var(--surface);stroke-width:1.5;vector-effect:non-scaling-stroke}
.map .lbl{font:600 11px var(--body);fill:var(--ink);paint-order:stroke;stroke:var(--sea);stroke-width:3px;pointer-events:none}
.map .zoom{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:6px}
.map .zoom button{width:34px;height:34px;border-radius:8px;border:1px solid var(--line-2);background:var(--surface);font-size:18px;line-height:1;display:grid;place-items:center;box-shadow:var(--shadow)}
.map .legend{position:absolute;left:10px;bottom:10px;background:color-mix(in srgb,var(--surface) 90%,transparent);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12px}
.legend .sw{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:5px}
.legend span{margin-right:10px;white-space:nowrap}

/* globe travel overlay */
.travel{position:fixed;inset:0;z-index:70;display:grid;place-items:center;background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:blur(6px);animation:fade .2s ease-out}
.travel canvas{width:min(68vmin,440px);height:min(68vmin,440px)}
.travel .pass{margin-top:14px;display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 16px;box-shadow:var(--shadow);font-size:14px}
.travel .pass b{font:600 18px var(--display)}
.travel .pass .mono{color:var(--muted)}
@keyframes fade{from{opacity:0}}

/* ---------- home ---------- */
.hero{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:36px;align-items:center;padding:34px 0 10px}
.hero h1{font-size:clamp(38px,5.4vw,64px)}
.hero .lede{margin:16px 0 22px}
.youcard{padding:20px}
.youcard .lvlrow{display:flex;align-items:center;gap:14px}
.youcard .badge{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:var(--navy);color:var(--on-navy);font:600 20px var(--mono);flex:none}
.youcard .stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}
.youcard .stats div{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px}
.youcard .stats b{display:block;font:600 20px var(--mono)}
.youcard .stats span{font-size:12px;color:var(--muted)}
@media (max-width:900px){.hero{grid-template-columns:minmax(0,1fr)}.youcard .stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.feature{display:flex;flex-direction:column;gap:10px;padding:20px;min-width:0}
.feature h3{font:500 22px/1.2 var(--display)}
.feature .grow{flex:1}
.cotd{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;align-items:start}
.cotd .flag{width:120px;border-radius:6px}
.conts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:980px){.conts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.conts{grid-template-columns:minmax(0,1fr)}}
.cont{padding:16px;display:flex;flex-direction:column;gap:10px;text-decoration:none}
.cont svg{width:100%;height:120px}
.cont svg path{fill:var(--land);stroke:var(--surface);stroke-width:.4}
.cont svg path.m1{fill:var(--q2)} .cont svg path.m2{fill:var(--q3)} .cont svg path.m3{fill:var(--q4)}
.cont h3{font:500 22px var(--display)}
.skillrow{display:grid;grid-template-columns:70px minmax(0,1fr) 46px;gap:8px;align-items:center;font-size:12.5px;color:var(--ink-2)}
.skillrow .meter i{background:var(--s1)}

/* ---------- atlas ---------- */
.toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:18px 0}
.toolbar input[type=search]{height:40px;border:1px solid var(--line-2);border-radius:10px;padding:0 12px;background:var(--surface);min-width:220px;flex:1;max-width:340px}
.toolbar select{height:40px;border:1px solid var(--line-2);border-radius:10px;padding:0 10px;background:var(--surface)}
#as{height:36px;border:1px solid var(--line-2);border-radius:10px;padding:0 8px;background:var(--surface);color:var(--ink)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:18px}
.ccard{display:flex;flex-direction:column;text-decoration:none;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:transform .12s,box-shadow .12s;cursor:pointer;text-align:left;padding:0}
.ccard:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.ccard .flag{width:100%;border-radius:0;box-shadow:none;border-bottom:1px solid var(--line)}
.ccard .b{padding:10px 12px 12px}
.ccard h3{font:600 16px/1.25 var(--body)}
.ccard .m{font-size:12.5px;color:var(--muted);margin-top:2px}
.ccard .v{font:500 13px var(--mono);margin-top:6px;color:var(--ink-2)}
.ccard .st{position:absolute}
.ccard{position:relative}
.ccard .stampmark{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;background:var(--surface);display:grid;place-items:center;box-shadow:var(--shadow);color:var(--gold-ink)}
.ccard .stampmark svg{width:18px;height:18px}

/* ---------- country page ---------- */
.cpage{--accent:var(--acc-l);--on-accent:#fff}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .cpage{--accent:var(--acc-d);--on-accent:#0A131D}}
:root[data-theme="dark"] .cpage{--accent:var(--acc-d);--on-accent:#0A131D}
.flagband{display:flex;height:6px}
.flagband i{flex:1}
.chero{position:relative;display:grid;grid-template-columns:minmax(0,1fr);min-height:260px;background:var(--navy);color:#fff;overflow:hidden}
.chero .ph{position:absolute;inset:0}
.chero .ph img{width:100%;height:100%;object-fit:cover}
.chero .ph::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,14,22,.15) 0%,rgba(6,14,22,.35) 45%,rgba(6,14,22,.86) 100%)}
.chero.nophoto{background:linear-gradient(135deg,color-mix(in srgb,var(--acc-l) 70%,#0a131d),#0a131d)}
.chero .in{position:relative;padding:120px 0 26px;display:flex;flex-direction:column;gap:6px;min-width:0}
.chero.nophoto .in{padding-top:56px}
.chero .eyebrow{color:rgba(255,255,255,.82)}
.chero h1{font:500 clamp(40px,6.5vw,76px)/1 var(--display);letter-spacing:-.02em;color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.35);overflow-wrap:anywhere}
.chero .t{display:flex;align-items:center;gap:18px}
.chero .t .flag{width:84px;border-radius:5px;box-shadow:0 0 0 1px rgba(255,255,255,.35),0 6px 20px rgba(0,0,0,.35);flex:none}
.chero .official{font-size:17px;color:rgba(255,255,255,.9);margin:4px 0 0}
.chero .native{display:flex;gap:6px 18px;flex-wrap:wrap;font-size:16px;color:#fff;margin:0}
.chero .native span small{color:rgba(255,255,255,.7);font-size:12px;margin-left:6px}
.chero .credit{position:absolute;right:var(--gutter-r);bottom:8px;font-size:11px;color:rgba(255,255,255,.72);max-width:min(560px,60%);text-align:right;line-height:1.3}
.chero .credit a{color:inherit}
.chero .acts{margin-top:14px}
.chero .acts .btn{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.4);color:#fff;backdrop-filter:blur(6px)}
.chero .acts .btn.primary{background:#fff;color:#0F1D2B;border-color:#fff}
@media (max-width:640px){.chero .in{padding-top:90px}.chero .t .flag{width:58px}.chero .credit{position:static;max-width:none;text-align:left;padding:0 0 10px}}
.keyfig{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:-1px;padding-top:18px}
.keyfig .tile{border-top:3px solid var(--accent)}
@media (max-width:980px){.keyfig{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cnav{position:sticky;top:62px;z-index:30;background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);margin-top:22px}
.cnav .wrap{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.cnav button{border:0;background:none;padding:12px 12px;font-weight:500;font-size:14px;color:var(--ink-2);white-space:nowrap;border-bottom:2px solid transparent}
.cnav button:hover{color:var(--ink)}
.cnav button.on{color:var(--ink);border-bottom-color:var(--accent)}
@media (max-width:900px){.cnav{top:100px}}
.csec{padding-top:8px}
.csec>h2{font:500 32px/1.15 var(--display);margin:44px 0 6px;display:flex;align-items:center;gap:12px}
.csec>h2::before{content:"";width:6px;height:28px;border-radius:3px;background:var(--accent)}
.csec>.sub{color:var(--muted);margin-bottom:18px}
.two{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:24px;align-items:start}
@media (max-width:900px){.two{grid-template-columns:minmax(0,1fr)}}
.prose{font-size:16.5px;line-height:1.7;max-width:70ch;color:var(--ink)}
.prose p{margin:0 0 1em}
.prose p:first-of-type::first-letter{font:500 3.1em/0.9 var(--display);float:left;margin:4px 8px 0 0;color:var(--accent)}
.facts{display:grid;grid-template-columns:minmax(110px,170px) minmax(0,1fr);gap:0;margin:0;border-top:1px solid var(--line)}
.facts dt,.facts dd{margin:0;padding:10px 0;border-bottom:1px solid var(--line)}
.facts dt{font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding-right:14px;padding-top:12px}
.facts dd{white-space:pre-line}
.callout{border-left:3px solid var(--accent);background:var(--surface);border-radius:0 10px 10px 0;padding:14px 16px;box-shadow:var(--shadow)}
.callout h4{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.callout p{margin:0;font-size:15px}
.dyk{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:18px}
.timeline{list-style:none;margin:0;padding:0;border-left:2px solid var(--line-2)}
.timeline li{position:relative;padding:0 0 16px 18px}
.timeline li::before{content:"";position:absolute;left:-7px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--surface);border:3px solid var(--accent)}
.timeline b{display:block;font-size:12.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.locs{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:14px}
@media (max-width:640px){.locs{grid-template-columns:minmax(0,1fr)}}
.locs .map{background:transparent;border:0}
.locs .globe{background:none;border:0}
.box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;min-width:0}
.box>h3{font:600 15px var(--body);margin-bottom:12px;display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.box>h3 small{font-weight:400;color:var(--muted);font-size:12px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.sample{font:italic 400 19px/1.4 var(--display);color:var(--ink)}
.cities{list-style:none;margin:0;padding:0}
.cities li{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}
.cities li:last-child{border-bottom:0}
.swatches{display:flex;gap:8px;margin:8px 0}
.swatches i{width:34px;height:34px;border-radius:8px;box-shadow:inset 0 0 0 1px rgba(15,29,43,.15)}
.bigflag{width:min(320px,100%);border-radius:6px;box-shadow:0 0 0 1px var(--line),var(--shadow)}
.whs{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.whs li{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;align-items:start;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.whs .yr{font:600 14px var(--mono);color:var(--accent)}
.whs a{text-decoration:none}
.whs a:hover{text-decoration:underline}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.gallery figure{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover}
.gallery figcaption{padding:8px 10px;font-size:12px;color:var(--muted);line-height:1.4}
.gallery figcaption b{display:block;color:var(--ink);font-size:13px;font-weight:600}
.nbs{display:flex;flex-wrap:wrap;gap:8px}
.nbs button{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:4px 12px 4px 4px;font-size:14px}
.nbs button:hover{border-color:var(--accent)}
.nbs .flag{width:26px;border-radius:50%;aspect-ratio:1}
.nbs small{color:var(--muted);font-size:12px}
.srcs{font-size:13.5px;color:var(--ink-2)}
.srcs li{margin-bottom:6px}
.pager{display:flex;justify-content:space-between;gap:12px;margin-top:40px;flex-wrap:wrap}

/* stamp quiz + stamps */
.quiz{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:24px;align-items:center}
@media (max-width:760px){.quiz{grid-template-columns:minmax(0,1fr)}}
.qq h4{font:500 21px/1.3 var(--display);margin:6px 0 12px}
.opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media (max-width:520px){.opts{grid-template-columns:minmax(0,1fr)}}
.opts button{display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 14px;border-radius:10px;border:1px solid var(--line-2);background:var(--surface);text-align:left;font-weight:500;font-size:15px}
.opts button:hover:not([disabled]){border-color:var(--ink-2);background:var(--surface-2)}
.opts button kbd{font:500 11px var(--mono);color:var(--muted);border:1px solid var(--line-2);border-radius:4px;padding:1px 5px;margin-left:auto}
.opts button.right{border-color:var(--ok);background:var(--ok-soft)}
.opts button.wrong{border-color:var(--bad);background:var(--bad-soft)}
.opts.flags button{justify-content:center;padding:10px}
.opts.flags img{width:100%;max-width:150px;aspect-ratio:4/3;border-radius:4px;box-shadow:0 0 0 1px var(--line-2)}
.stamp{width:200px;height:200px;margin:auto;color:var(--accent);transform:rotate(-8deg)}
.stamp.off{color:var(--line-2);transform:none}
.stamp text{font-family:var(--mono);font-weight:600;letter-spacing:.12em}
.stamp.new{animation:thud .45s cubic-bezier(.2,1.6,.4,1)}
@keyframes thud{from{transform:rotate(-8deg) scale(1.6);opacity:0}}

/* ---------- play ---------- */
.modes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
@media (max-width:900px){.modes{grid-template-columns:repeat(2,minmax(0,1fr))}}
.mode{padding:14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);text-align:left;display:flex;flex-direction:column;gap:6px}
.mode[aria-pressed="true"]{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}
.mode b{font-size:15px}
.mode span{font-size:12.5px;color:var(--muted)}
.scopes{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
@media (max-width:1100px){.scopes{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:560px){.scopes{grid-template-columns:repeat(2,minmax(0,1fr))}}
.scope{padding:12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);text-align:left}
.scope[aria-pressed="true"]{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}
.scope b{display:block;font-size:15px}
.scope span{font-size:12px;color:var(--muted)}
.scope .best{font:500 12.5px var(--mono);color:var(--gold-ink);margin-top:4px;display:block}
.drill{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;padding:16px 0 40px;align-items:start}
@media (max-width:980px){.drill{grid-template-columns:minmax(0,1fr)}.drill .side{order:-1;position:static}
  /* Study: title, map, the selected country, then the list of names */
  .drill.study > div:first-child,.drill.study .side{display:contents}
  .drill.study .hud{order:1}.drill.study #board{order:2}.drill.study #card{order:3}.drill.study .side > .card.pad{order:4}}
.hud{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.hud .clock{font:600 26px var(--mono);font-variant-numeric:tabular-nums;min-width:110px}
.hud .pen{color:var(--bad);font:600 14px var(--mono);opacity:0;transition:opacity .2s}
.hud .pen.on{opacity:1}
.hud .grow{flex:1}
.prog{display:flex;align-items:center;gap:10px;min-width:180px;flex:1}
.prog .meter{flex:1;height:8px}
.prog .meter i{background:var(--ok)}
.prompt{padding:18px;display:flex;flex-direction:column;gap:12px}
.prompt .ask{font:500 15px var(--body);color:var(--muted)}
.prompt .name{font:500 34px/1.1 var(--display);overflow-wrap:anywhere}
.prompt .pflag{width:100%;max-width:300px;border-radius:6px;box-shadow:0 0 0 1px var(--line-2),var(--shadow)}
.prompt .fb{min-height:24px;font-weight:600}
.fb.ok{color:var(--ok)} .fb.bad{color:var(--bad)}
.side{position:sticky;top:76px;display:flex;flex-direction:column;gap:12px}
.result{padding:24px;text-align:center}
.result .big{font:600 44px var(--mono);margin:6px 0}
.result .rec{display:inline-block;margin-top:6px}
.lb{width:100%;border-collapse:collapse;font-size:14px}
.lb td,.lb th{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left}
.lb th{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}
.lb td.r{text-align:right;font-family:var(--mono)}
.lb tr.me td{background:var(--gold-soft);font-weight:600}
.lb .rk{width:44px;font-family:var(--mono);color:var(--muted)}
.studycard{padding:16px;display:flex;flex-direction:column;gap:10px}
.studycard .flag{width:100%;max-width:220px;border-radius:5px}

/* ---------- passport ---------- */
.ppt{display:grid;grid-template-columns:200px minmax(0,1fr);gap:24px;padding:24px;background:linear-gradient(135deg,var(--surface) 0%,var(--surface-2) 100%);position:relative;overflow:hidden}
.ppt::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(135deg,transparent 0 14px,color-mix(in srgb,var(--gold) 6%,transparent) 14px 15px);pointer-events:none}
.ppt .emb{width:200px;height:200px;border-radius:14px;background:#0E2A47;display:grid;place-items:center;color:#D4B062;box-shadow:inset 0 0 0 1px rgba(212,176,98,.35)}
.ppt .emb svg{width:120px;height:120px}
.ppt dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 18px;margin:12px 0 0}
.ppt dt{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.ppt dd{margin:0;font:600 17px var(--mono)}
.mrz{grid-column:1/-1;font:500 clamp(10px,1.6vw,15px)/1.5 var(--mono);letter-spacing:.14em;color:var(--ink-2);border-top:1px dashed var(--line-2);padding-top:12px;overflow:hidden;white-space:nowrap}
@media (max-width:700px){.ppt{grid-template-columns:minmax(0,1fr)}.ppt .emb{width:100%;height:120px}.ppt dl{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stamps{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px}
.slot{aspect-ratio:1;border-radius:50%;border:1.5px dashed var(--line-2);display:grid;place-items:center;font:600 12px var(--mono);color:var(--muted);background:none;padding:0;position:relative}
.slot.got{border:0}
.slot svg{width:100%;height:100%}
.slot:hover{border-color:var(--ink-2)}
.ach{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.ach > div{display:flex;gap:14px;align-items:flex-start;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:var(--surface)}
.ach > div > div{min-width:0}
.ach > div.no{background:transparent;border-style:dashed;opacity:.72}
.ach svg{width:32px;height:32px;flex:none;color:var(--gold)}
.ach .no svg{color:var(--muted)}
.ach b{display:block;font-size:14.5px;line-height:1.3;margin:4px 0 3px}
.ach span{display:block;font-size:13px;line-height:1.45;color:var(--muted)}
@media (max-width:640px){.ach{grid-template-columns:minmax(0,1fr);gap:8px}.ach > div{padding:12px 14px}}
.rec-t{width:100%;border-collapse:collapse;font-size:14px}
.rec-t th,.rec-t td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left}
.rec-t td{font-family:var(--mono)}
.rec-t th{font-weight:600}
.rec-t thead th{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
@media (max-width:640px){
  .rec-t{table-layout:fixed;font-size:13px}
  .rec-t th,.rec-t td{padding:8px 4px}
  .rec-t thead th{font-size:10.5px;letter-spacing:.02em;line-height:1.25}
  .rec-t thead th:first-child{width:30%}
  .rec-t td{font-size:12px;text-align:center}
  .rec-t thead th:not(:first-child){text-align:center}
  .card.pad:has(> .rec-t){padding:14px 12px}
}

/* ---------- charts ---------- */
.chart{position:relative}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.chart .ax text{font:11px var(--body);fill:var(--muted)}
.chart .ax line,.chart .ax path{stroke:var(--line-2)}
.chart .gr line{stroke:var(--line);stroke-dasharray:2 3}
.chart .ln{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .end{font:600 12px var(--body);fill:var(--ink-2)}
.chart .xh{stroke:var(--ink-2);stroke-width:1;stroke-dasharray:3 3}
.chart .dot{stroke:var(--surface);stroke-width:2}
.legend-row{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-2);margin-bottom:8px}
.legend-row i{display:inline-block;width:16px;height:3px;border-radius:2px;vertical-align:middle;margin-right:6px}
.legend-row i.dash{background:repeating-linear-gradient(90deg,var(--world) 0 4px,transparent 4px 7px)!important}
.bars{display:grid;gap:7px}
.bars .br{display:grid;grid-template-columns:minmax(90px,38%) minmax(0,1fr) 56px;gap:10px;align-items:center;font-size:13.5px}
.bars .br>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bars .tr{height:12px;border-radius:0 4px 4px 0;background:var(--sunk);position:relative}
.bars .tr i{position:absolute;left:0;top:0;bottom:0;border-radius:0 4px 4px 0;background:var(--accent);min-width:2px}
.bars .br b{font:500 13px var(--mono);text-align:right}
.stack{display:flex;height:22px;gap:2px;margin:6px 0 10px}
.stack i{display:block;height:100%}
.stack i:first-child{border-radius:4px 0 0 4px}
.stack i:last-child{border-radius:0 4px 4px 0}
details.tbl{margin-top:8px;font-size:13px}
details.tbl summary{cursor:pointer;color:var(--muted)}
details.tbl table{border-collapse:collapse;margin-top:6px;width:100%}
details.tbl td,details.tbl th{padding:3px 8px;border-bottom:1px solid var(--line);text-align:right;font-family:var(--mono)}
details.tbl th:first-child,details.tbl td:first-child{text-align:left}
.foot{border-top:1px solid var(--line);padding:22px 0 34px;color:var(--muted);font-size:13px;background:var(--surface)}
.foot a{color:var(--ink-2)}
.about h3{font:500 22px var(--display);margin:26px 0 8px}
.about p,.about li{max-width:76ch}
/* Penny Routes boarding pass: floats bottom-right on European country pages */
.pr-pass{position:fixed;right:var(--gutter-r);bottom:16px;z-index:50;display:flex;width:300px;color:#fff;font-family:var(--body);filter:drop-shadow(0 10px 24px rgba(10,19,29,.28));animation:passin .7s cubic-bezier(.2,1.25,.4,1) 1.2s both;transition:transform .2s}
.pr-pass:hover{transform:translateY(-3px) rotate(-.6deg)}
.pr-main,.pr-stub{background:#0E2A47;border:1px solid rgba(212,176,98,.4)}
.pr-main{flex:1;min-width:0;padding:10px 12px 12px;border-radius:12px 0 0 12px;border-right:2px dashed rgba(212,176,98,.55);
  -webkit-mask:radial-gradient(circle 7px at 100% 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle 7px at 100% 100%,#0000 98%,#000) bottom/100% 51% no-repeat;
  mask:radial-gradient(circle 7px at 100% 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle 7px at 100% 100%,#0000 98%,#000) bottom/100% 51% no-repeat}
.pr-stub{width:58px;border-left:0;border-radius:0 12px 12px 0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:10px 0;
  -webkit-mask:radial-gradient(circle 7px at 0 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle 7px at 0 100%,#0000 98%,#000) bottom/100% 51% no-repeat;
  mask:radial-gradient(circle 7px at 0 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle 7px at 0 100%,#0000 98%,#000) bottom/100% 51% no-repeat}
.pr-stub span:first-child{font:600 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#D4B062;writing-mode:vertical-rl}
.pr-bar{width:26px;height:46px;background:repeating-linear-gradient(90deg,#fff 0 2px,transparent 2px 4px,#fff 4px 5px,transparent 5px 8px);opacity:.85}
.pr-top{display:flex;justify-content:space-between;align-items:center;font:600 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#D4B062}
.pr-x{all:unset;cursor:pointer;font:400 18px/1 var(--body);color:#fff;opacity:.7;padding:0 2px}
.pr-x:hover,.pr-x:focus-visible{opacity:1}.pr-x:focus-visible{outline:2px solid #D4B062;border-radius:4px}
.pr-route{display:flex;align-items:center;gap:8px;margin:8px 0 2px}
.pr-route small{display:block;font:500 9px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;opacity:.65}
.pr-route b{font:600 22px/1.1 var(--mono);letter-spacing:.04em}
.pr-route div:last-child{text-align:right}
.pr-line{flex:1;position:relative;height:14px;border-bottom:1px dashed rgba(255,255,255,.45);margin-bottom:6px}
.pr-line i{position:absolute;left:0;top:0;font-style:normal;font-size:13px;line-height:14px;color:#D4B062;animation:prfly 3.2s ease-in-out 2s infinite}
.pr-dest{margin:4px 0 8px;font-size:12.5px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pr-go{display:inline-block;background:#D4B062;color:#14100A;font-weight:600;font-size:13px;padding:6px 10px;border-radius:7px;text-decoration:none}
.pr-go:hover,.pr-go:focus-visible{background:#E6C67E}
@keyframes passin{from{opacity:0;transform:translate(30px,60px) rotate(5deg)}}
@keyframes prfly{0%{left:0;opacity:0}12%{opacity:1}85%{opacity:1}100%{left:calc(100% - 14px);opacity:0}}
@media (max-width:560px){.pr-pass{width:auto;left:var(--gutter);bottom:12px}.pr-dest{display:none}.pr-route b{font-size:18px}}
@media print{.pr-pass{display:none}}
/* Light/dark switch */
.theme{flex:none;width:38px;height:38px;border-radius:50%;border:1px solid var(--line-2);background:transparent;color:var(--ink-2);display:grid;place-items:center;cursor:pointer;padding:0}
.theme:hover{background:var(--sunk);color:var(--ink)}
.theme svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.theme .sun,:root[data-theme="dark"] .theme .moon{display:none}
:root[data-theme="dark"] .theme .sun{display:block}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .theme .sun{display:block}:root:not([data-theme="light"]) .theme .moon{display:none}}

/* Phones: wider margins, a menu that fits, and games with the clock, the question and a large map on one screen */
@media (max-width:640px){
  :root{--gutter:max(22px,env(safe-area-inset-left,0px));--gutter-r:max(22px,env(safe-area-inset-right,0px))}
  .top .wrap{gap:8px 10px}
  .brand b{font-size:20px}
  .nav{margin:0 -8px}
  .nav a{padding:7px 7px;font-size:14px}
  body.drilling .top .nav,body.drilling .qsearch{display:none}
  body.drilling .theme{margin-left:auto}
  .drill.game{gap:8px;padding:10px 0 24px}
  .drill.game > div:first-child{display:contents}
  .drill.game .hud{order:1;margin:0;gap:6px 10px}
  .drill.game .side{display:contents}
  .drill.game .prompt{order:2}
  .drill.game #board{order:3}
  .drill.game .dhelp{order:4;padding:10px 14px;font-size:12.5px}
  .drill.game .hud .eyebrow{flex-basis:100%;font-size:11px}
  .drill.game .prompt{gap:4px}
  .drill.game .prompt .ask{font-size:13px}
  .drill.game .prompt .name{font-size:26px}
  .drill.game .prompt .pflag{max-width:150px}
  .drill.game .opts{gap:8px}
  .drill.game .opts button{min-height:44px;padding:8px 12px}
  .drill.game .hud .clock{font-size:20px;min-width:0}
  .drill.game .prog{flex:0 1 auto;min-width:0;margin-left:auto}
  .drill.game .prog .meter{display:none}
  .drill.game .prompt{padding:10px 14px;min-height:92px}
  .drill.game .prompt:has([data-skip]){display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"ask btn" "name btn" "fb fb";gap:2px 12px;align-items:center}
  .drill.game .prompt:has([data-skip]) .ask{grid-area:ask;font-size:13px}
  .drill.game .prompt:has([data-skip]) .name{grid-area:name;font-size:26px}
  .drill.game .prompt:has([data-skip]) .pflag{grid-area:name;width:auto;height:46px;max-width:100%;justify-self:start}
  .drill.game .prompt:has([data-skip]) .fb{grid-area:fb;min-height:18px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .drill.game .prompt [data-skip]{grid-area:btn}

  /* Atlas: search, continent chips and colour picker in one tidy block, and countries as a compact list */
  .toolbar{gap:10px}
  .toolbar input[type=search]{flex:1 1 100%;min-width:0;max-width:none}
  .toolbar .seg{flex-wrap:nowrap;overflow-x:auto;max-width:100%;scrollbar-width:none}
  .toolbar .seg::-webkit-scrollbar{display:none}
  .toolbar .seg button{flex:none}
  .toolbar .seg.multi{flex-wrap:wrap;overflow:visible}
  .toolbar label{display:flex;align-items:center;gap:8px;width:100%}
  .toolbar label select{flex:1;min-width:0}
  #as{max-width:190px}
  #agrid.cards{grid-template-columns:minmax(0,1fr);gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)}
  #agrid .ccard{flex-direction:row;align-items:center;gap:12px;border:0;border-radius:0;border-bottom:1px solid var(--line);padding:9px 12px;min-height:54px}
  #agrid .ccard:last-child{border-bottom:0}
  #agrid .ccard:hover{transform:none;box-shadow:none;background:var(--surface-2)}
  #agrid .ccard .flag{width:40px;flex:none;border:0;border-radius:3px;box-shadow:0 0 0 1px var(--line)}
  #agrid .ccard .b{padding:0;flex:1;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:center}
  #agrid .ccard h3{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #agrid .ccard .m{grid-column:1;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #agrid .ccard .v{grid-column:2;grid-row:1 / span 2;margin:0;font-size:12.5px;text-align:right}
  #agrid .ccard .stampmark{position:static;order:3;width:24px;height:24px;box-shadow:none;flex:none}
  #agrid .ccard .stampmark svg{width:16px;height:16px}
}
.map.fill svg{height:100%}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

#main:focus{outline:none}
.skip{position:absolute;left:-999px;top:8px;z-index:60;background:var(--surface);color:var(--ink);padding:8px 14px;border-radius:8px;box-shadow:var(--shadow)}
.skip:focus{left:12px}

/* ---- page entrance, travel fade-out ---- */
@keyframes viewin{from{opacity:0;transform:translateY(10px)}}
@keyframes heroin{from{opacity:0;transform:scale(1.07)}}
.view>:not(.loading){animation:viewin .55s cubic-bezier(.2,.7,.2,1) both}
.cpage>*{animation:viewin .6s cubic-bezier(.2,.7,.2,1) both}
.cpage>:nth-child(2){animation-delay:.05s}.cpage>:nth-child(3){animation-delay:.12s}.cpage>:nth-child(4){animation-delay:.18s}.cpage>:nth-child(n+5){animation-delay:.24s}
.view>.cpage{animation:none}
.chero .ph img{animation:heroin 1.6s cubic-bezier(.2,.7,.2,1) both}
.travel.out{opacity:0;transition:opacity .5s ease;pointer-events:none}
.maphint{margin:8px 0 0;font-size:12.5px;color:var(--muted)}

/* ---- cost of living & data ---- */
.legend-row i.pt{width:10px;height:10px;border-radius:50%}
.legend-row i.ref{width:0;height:12px;border-radius:0;border-left:2px dashed var(--ink-2);background:none}
.bars.pl .tr .ref{position:absolute;top:-4px;bottom:-4px;width:0;border-left:2px dashed var(--ink-2)}
.scatter .o{fill:var(--world);fill-opacity:.6;stroke:var(--surface);stroke-width:1.5}
.scatter .o.est{fill:var(--surface);fill-opacity:1;stroke:var(--world);stroke-width:1.6}
.legend-row i.pt.est{box-shadow:inset 0 0 0 1.6px var(--world)}
.scatter .me{fill:var(--accent);stroke:var(--surface);stroke-width:2}
.scatter .lab{font:600 12px var(--body);fill:var(--ink);paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}
.scatter .refl{stroke:var(--ink-2);stroke-width:1.5;stroke-dasharray:4 4}
.scatter .hov{fill:none;stroke:var(--ink);stroke-width:2;pointer-events:none}
.bigstat{display:flex;align-items:center;gap:14px;margin:2px 0 12px}
.bigstat b{font:500 46px/1 var(--display);color:var(--ink);font-variant-numeric:tabular-nums}
.bigstat span{font-size:13px;line-height:1.4;color:var(--muted)}
.box .meter{margin:0 0 14px}
.box .meter i{background:var(--accent)}
.gini{margin:14px 0 10px}
.gini .scale{position:relative;height:10px;border-radius:99px;background:linear-gradient(90deg,var(--q1),var(--q5))}
.gini .scale i{position:absolute;top:-5px;width:4px;height:20px;margin-left:-2px;border-radius:2px;background:var(--ink);box-shadow:0 0 0 2px var(--surface)}
.gini .ticks{display:flex;justify-content:space-between;gap:12px;margin-top:6px;font-size:12px;color:var(--muted)}
.dtbox{overflow-x:auto}
/* Rankings: two columns on wide screens */
.rkgrid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px 28px;align-items:start;margin-top:16px}
.rkgrid .signin{margin-bottom:4px}
.rkside h2{margin:0 0 10px}
@media (max-width:980px){.rkgrid{grid-template-columns:minmax(0,1fr)}.rkside h2{margin-top:18px}}
/* Rankings sign-in form */
.signin .sgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px;margin-top:12px}
.signin label{display:grid;gap:6px;font-size:13px;font-weight:600;color:var(--ink-2)}
.signin input{width:100%;min-width:0;height:44px;padding:0 12px;border:1px solid var(--line-2);border-radius:10px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:16px;font-weight:400}
.signin input:focus{outline:2px solid var(--accent);outline-offset:1px}
.signin .sbtn{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:10px}
.signin .sbtn .btn{min-height:44px;flex:1 1 150px;justify-content:center}
.signin #nmm{margin:12px 0 0}
@media (max-width:560px){.signin .sgrid{grid-template-columns:minmax(0,1fr)}}
/* Country pages: long history in two columns under a milestones strip; All data as balanced columns; a lone last card spans the row */
.hist.long{display:grid;gap:20px}
.hist.long aside{order:-1}
.hist.long .timeline{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px 28px;border-left:0}
.hist.long .timeline li{padding:0 0 0 20px;border-left:2px solid var(--line-2)}
.hist.long .timeline li::before{left:-7px;top:2px}
.hist.long .prose{max-width:none;columns:2 300px;column-gap:48px}
.hist.long .prose h3{break-after:avoid}
#s-data .grid.g2{display:block;columns:2 380px;column-gap:16px}
#s-data .dtbox{break-inside:avoid;margin-bottom:16px}
.grid.g2 > :last-child:nth-child(odd){grid-column:1 / -1}
table.dt{width:100%;border-collapse:collapse;font-size:13px}
.dt th,.dt td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:right;vertical-align:top}
.dt thead th{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.dt thead th:first-child,.dt th[scope=row]{text-align:left}
.dt th[scope=row]{font-weight:400;color:var(--ink-2);min-width:14ch}
.dt td{font:13px var(--mono);white-space:nowrap}
.dt tbody tr:hover{background:var(--sunk)}
.ranks{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.rk{display:flex;flex-direction:column;gap:3px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:10px 14px}
.rk b{font:500 26px/1.05 var(--display);font-variant-numeric:tabular-nums}
.rk span{font-size:13px;color:var(--ink);line-height:1.25}
.rk small{font-size:12px;color:var(--muted)}
.box.wide{grid-column:1/-1}

/* ---- higher or lower ---- */
.hl{max-width:880px;margin:0 auto}
.hlbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px}
.hl .streak{font:500 14px var(--mono);color:var(--ink-2)}
.hl .q{font:500 clamp(26px,3.4vw,40px)/1.15 var(--display);margin:4px 0 6px}
.hl .def{color:var(--muted);font-size:14px;margin-bottom:22px}
.hl .pair{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:stretch;animation:viewin .35s cubic-bezier(.2,.7,.2,1) both}
.hl .vs{align-self:center;font:600 13px var(--mono);color:var(--muted);text-transform:uppercase}
.hl .pick{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;padding:24px 16px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);cursor:pointer;font:inherit;color:inherit;transition:border-color .15s,transform .15s}
.hl .pick:hover:not(:disabled){border-color:var(--ink-2);transform:translateY(-2px)}
.hl .pick:disabled{cursor:default}
.hl .hlflag{width:min(200px,100%);aspect-ratio:4/3;object-fit:cover;border-radius:6px;box-shadow:0 0 0 1px var(--line)}
.hl .pick b{font:500 22px/1.2 var(--display);text-align:center}
.hl .pick .val{font:600 18px var(--mono);min-height:1.4em}
.hl .pick kbd{position:absolute;top:10px;left:12px;font:500 11px var(--mono);color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:1px 5px}
.hl .pick.right{border-color:var(--ok);box-shadow:0 0 0 2px var(--ok)}
.hl .pick.wrong{border-color:var(--bad);box-shadow:0 0 0 2px var(--bad)}
.hl .pick.right .val::after{content:" ✓";color:var(--ok)}
.hl .pick.wrong .val::after{content:" ✗";color:var(--bad)}
.hl .hlres{margin-top:16px;color:var(--ink-2);min-height:1.5em;text-align:center}
.hlover{margin-top:18px;text-align:center}
.hlover h2{font:500 28px var(--display);margin-bottom:6px}
.hlover .row{justify-content:center;margin-top:14px}
@media (max-width:620px){.hl .pair{grid-template-columns:1fr}.hl .vs{justify-self:center}}
.cmpctl{display:flex;flex-wrap:wrap;gap:12px 20px;margin:2px 0 18px}
.cmpctl label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:600;color:var(--muted)}
.cmpctl select,.cmpctl input{height:40px;border:1px solid var(--line-2);border-radius:10px;padding:0 10px;background:var(--surface);color:var(--ink);font-size:15px;font-weight:400;min-width:240px;max-width:100%}
.cmpctl input{min-width:0;width:150px;font-family:var(--mono)}
.cmphead{font:500 22px/1.3 var(--display);margin:0 0 14px;color:var(--ink)}
.cmptbl{overflow-x:auto}
@media (max-width:560px){.cmpctl label,.cmpctl select{width:100%;min-width:0}}
