:root{
  --paper:#f2ece0; --paper-2:#e9e1d1; --ink:#15130f; --ink-2:#4a453b; --line:#15130f22;
  --clear:#0f7a55; --limit:#b36b00; --declare:#2f4fc4; --banned:#c8321e;
  --clear-bg:#d8eadf; --limit-bg:#f5e3bd; --declare-bg:#dbe1f6; --banned-bg:#f6d6cf;
  --radius:3px; --wrap:1120px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]){
    --paper:#16140f; --paper-2:#201d16; --ink:#f0eadc; --ink-2:#b2ab9a; --line:#f0eadc26;
    --clear:#4cc796; --limit:#f0a73a; --declare:#8fa6ff; --banned:#ff7a62;
    --clear-bg:#14291f; --limit-bg:#2d2310; --declare-bg:#171e3b; --banned-bg:#3a1a14;
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.45 "Archivo",system-ui,sans-serif;font-stretch:100%;
  background-image:radial-gradient(var(--line) 1px,transparent 1px);background-size:22px 22px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
a{color:inherit}
:focus-visible{outline:3px solid var(--declare);outline-offset:2px}
[hidden]{display:none!important}

/* header */
.top{display:flex;justify-content:space-between;align-items:center;gap:16px;max-width:var(--wrap);margin:0 auto;padding:18px 16px}
.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-weight:900;font-stretch:75%;letter-spacing:.04em;line-height:1;font-size:19px}
.brand-mark{display:grid;place-items:center;width:40px;height:40px;background:var(--ink);color:var(--paper);border-radius:50%;font-size:20px}
.top-meta{font:400 12px/1.3 "JetBrains Mono",monospace;color:var(--ink-2);text-align:right}

main{max-width:var(--wrap);margin:0 auto;padding:0 16px 56px}

/* home */
.home{padding:clamp(8px,3vw,28px) 0 8px}
.kicker{font:600 12px "JetBrains Mono",monospace;letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px;color:var(--ink-2)}
h1{font-weight:900;font-stretch:70%;font-size:clamp(46px,9.5vw,112px);line-height:.88;letter-spacing:-.01em;margin:0 0 22px;text-transform:uppercase}
h1 em{font-style:normal;color:var(--banned);position:relative}
h1 em::after{content:"";position:absolute;left:0;right:0;bottom:.04em;height:.07em;background:currentColor}
.finder{position:relative;max-width:640px}
#q{width:100%;font:700 clamp(22px,4vw,30px) "Archivo",sans-serif;font-stretch:85%;padding:18px 18px;border:3px solid var(--ink);border-radius:var(--radius);
  background:var(--paper);color:var(--ink);box-shadow:6px 6px 0 var(--ink)}
#q::placeholder{color:var(--ink-2);opacity:.6}
#results{list-style:none;margin:10px 0 0;padding:0;border:3px solid var(--ink);background:var(--paper);max-height:min(60vh,420px);overflow:auto;position:absolute;left:0;right:0;z-index:5;box-shadow:6px 6px 0 var(--ink)}
#results li{display:flex;justify-content:space-between;gap:12px;padding:12px 16px;cursor:pointer;border-bottom:1px solid var(--line);font-weight:700}
#results li small{font:400 12px "JetBrains Mono",monospace;color:var(--ink-2);align-self:center}
#results li[aria-selected=true],#results li:hover{background:var(--ink);color:var(--paper)}
#results li[aria-selected=true] small,#results li:hover small{color:var(--paper)}
.quick{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 4px}
.chip{font:700 15px "Archivo",sans-serif;font-stretch:85%;text-transform:uppercase;letter-spacing:.04em;padding:8px 14px;border:2px solid var(--ink);border-radius:99px;text-decoration:none;background:transparent}
.chip:hover{background:var(--ink);color:var(--paper)}
.how{list-style:none;display:flex;gap:28px;flex-wrap:wrap;padding:0;margin:0;font:400 14px "JetBrains Mono",monospace;color:var(--ink-2)}
.how b{color:var(--ink);margin-right:6px}

/* country header: luggage tag */
.back{display:inline-block;margin:8px 0 14px;font:600 13px "JetBrains Mono",monospace;text-decoration:none;border-bottom:2px solid var(--ink)}
.tag{position:relative;display:grid;grid-template-columns:1fr auto;gap:12px 28px;background:var(--paper-2);border:3px solid var(--ink);border-radius:8px 8px 8px 8px;padding:22px 22px 20px 64px;margin-bottom:20px}
.tag::before{content:"";position:absolute;left:20px;top:50%;width:22px;height:22px;margin-top:-11px;border-radius:50%;border:3px solid var(--ink);background:var(--paper)}
.tag h2{margin:0;font-weight:900;font-stretch:68%;font-size:clamp(44px,9vw,92px);line-height:.9;text-transform:uppercase}
.tag .sub{font:400 13px/1.5 "JetBrains Mono",monospace;color:var(--ink-2)}
.tag .sub a{color:var(--ink)}
.tally{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.tally span{display:flex;flex-direction:column;align-items:center;min-width:64px;padding:8px 10px;border:2px solid currentColor;font:600 11px "JetBrains Mono",monospace;text-transform:uppercase;letter-spacing:.08em}
.tally span b{font:900 30px/1 "Archivo",sans-serif;font-stretch:70%;letter-spacing:0}
.tally .s-banned{color:var(--banned)}.tally .s-declare{color:var(--declare)}.tally .s-limit{color:var(--limit)}.tally .s-clear{color:var(--clear)}

/* direction switch */
.dir{display:grid;grid-template-columns:1fr 1fr;margin:0 0 16px;border:3px solid var(--ink);border-radius:var(--radius);overflow:hidden}
.dirbtn{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;text-decoration:none;font-weight:900;font-stretch:78%;font-size:clamp(17px,3.4vw,24px);text-transform:uppercase;line-height:1.05}
.dirbtn+.dirbtn{border-left:3px solid var(--ink)}
.dirbtn small{font:400 11px "JetBrains Mono",monospace;text-transform:none;opacity:.75;white-space:nowrap}
.dirbtn[aria-current=true]{background:var(--ink);color:var(--paper)}
.live ul{padding-left:18px}.live .kind{font:600 10px "JetBrains Mono",monospace;text-transform:uppercase;letter-spacing:.08em;border:1px solid currentColor;padding:1px 6px;margin-left:8px;color:var(--ink-2);white-space:nowrap}
.live .kind.warn{color:var(--limit)}
.live+.live{margin-top:18px}

/* toolbar */
.bar{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin:0 0 18px;position:sticky;top:0;z-index:4;background:var(--paper);padding:10px 0;border-bottom:2px solid var(--ink)}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{font:700 14px "Archivo",sans-serif;font-stretch:85%;text-transform:uppercase;letter-spacing:.05em;padding:8px 12px;border:2px solid var(--ink);background:transparent;color:var(--ink);border-radius:var(--radius);cursor:pointer}
.seg button[aria-pressed=true]{background:var(--ink);color:var(--paper)}
.find input{font:400 15px "JetBrains Mono",monospace;padding:9px 12px;border:2px solid var(--ink);border-radius:var(--radius);background:var(--paper);color:var(--ink);width:min(100%,300px)}

/* bag */
.bagbar{padding:14px 16px;margin:0 0 18px;border:3px solid var(--ink);font-weight:700;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.bagbar.v-banned{background:var(--banned-bg);border-color:var(--banned)}
.bagbar.v-declare{background:var(--declare-bg);border-color:var(--declare)}
.bagbar.v-limit{background:var(--limit-bg);border-color:var(--limit)}
.bagbar.v-clear{background:var(--clear-bg);border-color:var(--clear)}
.bagbar button{font:600 12px "JetBrains Mono",monospace;border:2px solid var(--ink);background:transparent;color:var(--ink);padding:5px 9px;cursor:pointer}

/* groups & tiles */
.group{margin:34px 0 0}
.group>h3{font:600 12px "JetBrains Mono",monospace;letter-spacing:.16em;text-transform:uppercase;margin:0 0 12px;display:flex;align-items:center;gap:12px}
.group>h3::after{content:"";flex:1;border-top:2px solid var(--ink)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:14px}
.tile{position:relative;background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);padding:0;text-align:left;color:inherit;font:inherit;display:flex;flex-direction:column;min-height:176px}
.tile .hd{display:flex;justify-content:space-between;gap:10px;padding:14px 14px 0;align-items:flex-start}
.tile .nm{font-weight:900;font-stretch:78%;font-size:25px;line-height:1;text-transform:uppercase}
.tile .hint{font:400 12px "JetBrains Mono",monospace;color:var(--ink-2);padding:4px 14px 0}
.tile .hl{padding:14px 14px 4px;font-weight:700;font-size:19px;line-height:1.2}
.tile .more{margin-top:auto;padding:10px 14px 12px;font-size:14px;color:var(--ink-2)}
.tile .more a{font:600 12px "JetBrains Mono",monospace;color:var(--ink)}
.tile .pick{position:absolute;inset:0;background:none;border:0;cursor:pointer;border-radius:var(--radius)}
.tile.sel{box-shadow:0 0 0 4px var(--ink)}
.tile.sel::after{content:"IN BAG";position:absolute;right:-2px;bottom:-2px;font:600 10px "JetBrains Mono",monospace;background:var(--ink);color:var(--paper);padding:3px 7px;letter-spacing:.1em}
.tile .more a{position:relative;z-index:2}
.tile.t-banned{background:var(--banned-bg);border-color:var(--banned)}
.tile.t-declare{background:var(--declare-bg);border-color:var(--declare)}
.tile.t-limit{background:var(--limit-bg);border-color:var(--limit)}
.tile.t-clear{background:var(--clear-bg);border-color:var(--clear)}
.tile.t-none{border-style:dashed;background:transparent;color:var(--ink-2);min-height:120px}
.tile.t-none .hl{font-weight:400;font-size:16px}

/* stamp */
.stamp{flex:none;display:inline-flex;align-items:center;gap:6px;transform:rotate(-4deg);padding:4px 9px 3px;border:3px solid currentColor;border-radius:4px;
  font:900 15px/1 "Archivo",sans-serif;font-stretch:75%;letter-spacing:.12em;text-transform:uppercase;filter:url(#ink);white-space:nowrap;background:transparent}
.s-banned{color:var(--banned)}.s-declare{color:var(--declare)}.s-limit{color:var(--limit)}.s-clear{color:var(--clear)}
.tile:nth-child(even) .stamp{transform:rotate(3deg)}
.ic{width:12px;height:12px;display:inline-block}

/* live */
.live{margin-top:36px;border:2px solid var(--ink);padding:18px;background:var(--paper-2)}
.live h3{margin:0 0 6px;font:600 12px "JetBrains Mono",monospace;letter-spacing:.16em;text-transform:uppercase}
.live p{margin:6px 0}
.live details{margin-top:10px}.live summary{cursor:pointer;font-weight:700}
.live li{margin:6px 0;font-size:15px}

footer{max-width:var(--wrap);margin:0 auto;padding:20px 16px 40px;font:400 12px/1.5 "JetBrains Mono",monospace;color:var(--ink-2);border-top:2px solid var(--ink)}

@media (max-width:640px){
  .tag{grid-template-columns:1fr;padding:18px 16px 16px 48px}.tag::before{left:14px;top:30px;margin-top:0}
  body{font-size:16px}.top-meta{display:none}
}
@media (prefers-reduced-motion:no-preference){
  .tile{transition:transform .12s}
  .tile:hover{transform:translate(-2px,-2px)}
  .stamp{animation:thud .35s ease-out both}
  @keyframes thud{from{opacity:0;transform:scale(1.8) rotate(-12deg)}to{opacity:1}}
}
@media print{.bar,.finder,.back,.top-meta{display:none}body{background:#fff}}

/* map */
.mapwrap{position:relative;margin:8px 0 28px;border:3px solid var(--ink);border-radius:var(--radius);background:var(--paper-2);overflow:hidden;box-shadow:6px 6px 0 var(--ink);transition:height .6s cubic-bezier(.2,.8,.2,1)}
.mapwrap .map{height:clamp(300px,46vw,540px);transition:height .6s cubic-bezier(.2,.8,.2,1)}
.mapwrap.compact{box-shadow:none;margin-bottom:16px}
.mapwrap.compact .map{height:clamp(190px,28vw,320px)}
.map{position:relative;width:100%;touch-action:none;cursor:grab;user-select:none;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:40px 40px}
.map.dragging{cursor:grabbing}
.map svg{display:block;width:100%;height:100%}
.land{fill:var(--paper);stroke:var(--ink);stroke-width:calc(.6px*var(--k,1));stroke-opacity:.55;cursor:pointer;transition:fill .15s}
.land.no-data{cursor:default;fill:var(--paper)}
.land:not(.no-data){fill:var(--paper-2);filter:brightness(.93)}
.land.has-rules{fill:var(--ink);stroke:var(--paper);stroke-opacity:1}
.land:not(.no-data):hover,.dot:hover{fill:var(--banned)}
.land.sel{fill:var(--banned);stroke:var(--ink);stroke-opacity:1;stroke-width:calc(1.2px*var(--k,1))}
.dot{fill:var(--paper);stroke:var(--ink);stroke-width:calc(1.4px*var(--k,1));r:calc(3.4px*var(--k,1));cursor:pointer}
.dot.has-rules{fill:var(--ink);stroke:var(--paper)}
.trail{fill:none;stroke:var(--banned);stroke-width:calc(2.2px*var(--k,1));stroke-linecap:round;pointer-events:none;stroke-opacity:.9}
.plane{fill:var(--paper);stroke:var(--ink);stroke-width:1.1;pointer-events:none;filter:drop-shadow(2px 3px 1.5px #0005)}
.ripple{fill:none;stroke:var(--banned);stroke-width:calc(2.4px*var(--k,1));pointer-events:none;opacity:0}
.ripple.go{animation:rip 1.1s ease-out}
@keyframes rip{from{r:0;opacity:1}to{r:calc(48px*var(--k,1));opacity:0}}
.map-tip{position:absolute;z-index:3;pointer-events:none;background:var(--ink);color:var(--paper);padding:7px 10px;border-radius:2px;display:flex;flex-direction:column;gap:2px;font:600 12px "JetBrains Mono",monospace}
.map-tip b{font:900 15px "Archivo",sans-serif;font-stretch:80%;text-transform:uppercase;letter-spacing:.03em}
.map-ctrl{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:4px;z-index:2}
.map-ctrl button{width:36px;height:36px;border:2px solid var(--ink);background:var(--paper);color:var(--ink);font:700 18px/1 "Archivo",sans-serif;cursor:pointer;border-radius:var(--radius)}
.map-ctrl button:hover{background:var(--ink);color:var(--paper)}
.legend{position:absolute;left:10px;bottom:8px;margin:0;display:flex;gap:6px;align-items:center;font:600 11px "JetBrains Mono",monospace;background:var(--paper);border:2px solid var(--ink);padding:4px 8px;border-radius:2px;max-width:calc(100% - 20px);flex-wrap:wrap}
.legend i{width:12px;height:12px;border:1.5px solid var(--ink);display:inline-block}
.legend .k1{background:var(--ink)}.legend .k2{background:var(--paper-2);margin-left:8px}
.legend span{margin-left:10px;color:var(--ink-2)}
.mapwrap.compact .legend{display:none}
@media (max-width:640px){.legend span{display:none}}

/* home-country picker */
.from{margin:16px 0 0;max-width:640px}
.from label{display:block;font:600 12px "JetBrains Mono",monospace;letter-spacing:.12em;text-transform:uppercase;margin-bottom:6px;color:var(--ink-2)}
.finder.small{display:flex;max-width:340px;position:relative}
.finder.small input{font:700 18px "Archivo",sans-serif;font-stretch:85%;padding:10px 12px;border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);flex:1;min-width:0;background:var(--paper);color:var(--ink);border-radius:var(--radius)}
.finder.small button{border:2px solid var(--ink);border-left:0;background:var(--paper);color:var(--ink);font:700 20px/1 "Archivo",sans-serif;padding:0 12px;cursor:pointer}
.finder.small ul{list-style:none;margin:0;padding:0;position:absolute;left:0;right:0;top:100%;z-index:6;border:2px solid var(--ink);background:var(--paper);max-height:260px;overflow:auto}
.finder.small li{display:flex;justify-content:space-between;gap:10px;padding:9px 12px;cursor:pointer;font-weight:700;border-bottom:1px solid var(--line)}
.finder.small li small{font:400 11px "JetBrains Mono",monospace;color:var(--ink-2)}
.finder.small li[aria-selected=true],.finder.small li:hover{background:var(--ink);color:var(--paper)}
.how{margin-top:18px}

/* staggered stamp thud + panel entrance */
@media (prefers-reduced-motion:no-preference){
  .stamp{animation-delay:calc(var(--i,0)*55ms + 250ms)}
  .tile{animation:rise .45s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0)*35ms)}
  @keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
  .tag{animation:rise .5s cubic-bezier(.2,.8,.2,1) both}
  h1 em::after{transform-origin:left;animation:draw .8s .3s cubic-bezier(.2,.8,.2,1) both}
  @keyframes draw{from{transform:scaleX(0)}to{transform:none}}
  .brand-mark{transition:transform .5s}.brand:hover .brand-mark{transform:rotate(360deg) translateX(3px)}
}
