/* Layout: sticky top bar, compact hero, toolbar, ticker, big map, square panel, then stubby + state ladder, passport, award, FAQ.
   Palette: outback ochre and eucalyptus on warm sand, Southern Ocean blue, purple for taken squares, gold for the winner. */
:root{
  --bg:#f6efe2; --fg:#21170f; --muted:#6e5f4f; --line:#e3d6c1; --panel:#fffaf1; --panel2:#f1e6d3;
  --sea:#a9d8e6; --sea-deep:#7fc0d4; --coast:#93bf6f; --bush:#cfb979; --desert:#d66a32; --tropic:#4fa064; --border:#5a3a1e;
  --sold:#7b2cbf; --sold-2:#a46ae0; --win:#ffb81c; --sel:#140c05; --accent:#7b2cbf; --on-accent:#ffffff; --pin:#e23d28; --ochre:#c1531f;
  --glass:#7a4a12; --beer:#f4b630; --foam:#fff6df; --ok:#2f8a4d;
  --display:"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;
  --body:"Figtree",ui-sans-serif,system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --r:16px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#15100c; --fg:#f5ede2; --muted:#ab9a87; --line:#33281f; --panel:#1e1712; --panel2:#2a2019;
  --sea:#0e2a35; --sea-deep:#0a1f28; --coast:#4c7440; --bush:#76683f; --desert:#a3482a; --tropic:#2d6b40; --border:#e9c89b;
  --sold:#b98cf5; --sold-2:#8a5cd0; --win:#ffc94a; --sel:#ffffff; --accent:#b98cf5; --on-accent:#17101f; --pin:#ff6a52; --ochre:#ef8a52;
  --glass:#b07434; --beer:#f4b630; --foam:#fff1d0; --ok:#5cc47e; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#15100c; --fg:#f5ede2; --muted:#ab9a87; --line:#33281f; --panel:#1e1712; --panel2:#2a2019;
  --sea:#0e2a35; --sea-deep:#0a1f28; --coast:#4c7440; --bush:#76683f; --desert:#a3482a; --tropic:#2d6b40; --border:#e9c89b;
  --sold:#b98cf5; --sold-2:#8a5cd0; --win:#ffc94a; --sel:#ffffff; --accent:#b98cf5; --on-accent:#17101f; --pin:#ff6a52; --ochre:#ef8a52;
  --glass:#b07434; --beer:#f4b630; --foam:#fff1d0; --ok:#5cc47e; color-scheme:dark}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:70px}
body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 var(--body);-webkit-text-size-adjust:100%}
a{color:var(--accent);text-underline-offset:3px}
h1,h2{font-family:var(--display);text-wrap:balance;margin:0}
h1{font-weight:800;font-size:clamp(34px,8.6vw,64px);line-height:.95;letter-spacing:-.025em}
h2{font-weight:800;font-size:clamp(22px,4.6vw,28px);line-height:1.1;margin-bottom:10px}
p{margin:0}
.eyebrow{font:500 12px/1.2 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.muted{color:var(--muted)}
.small{font-size:13px}
.ten{display:inline-block;background:var(--win);color:#241600;padding:0 .14em;border-radius:.14em;transform:rotate(-4deg);box-shadow:4px 4px 0 var(--ochre)}

.topbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:21;background:var(--bg)}
.topin{max-width:960px;margin:0 auto;display:flex;align-items:center;gap:12px;padding-block:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.logo{display:inline-flex;align-items:center;gap:8px;font:800 19px/1 var(--display);color:var(--fg);text-decoration:none;white-space:nowrap}
.logosq{width:18px;height:18px;border-radius:4px;background:var(--sold);box-shadow:5px -5px 0 var(--win),0 0 0 2px var(--panel);transform:rotate(-8deg) translate(-2px,3px)}
.topstat{margin-left:auto;font:500 12px/1.2 var(--mono);color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;min-width:0}
.btn.grab{padding:10px 14px;font-size:14px;background:var(--accent);color:var(--on-accent);border-color:var(--accent);white-space:nowrap}

.demo{background:var(--win);color:#241600;font:600 13px/1.35 var(--body);text-align:center;padding-block:8px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}

.wrap{max-width:960px;margin:0 auto;padding-block:18px 56px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:grid;gap:18px}
.hero{display:grid;gap:10px;padding-top:4px}
.lede{max-width:60ch;color:var(--muted)}
.lede b{color:var(--fg);font-variant-numeric:tabular-nums}

.btn{font:700 15px/1 var(--body);border-radius:12px;padding:12px 16px;border:1.5px solid var(--line);background:var(--panel);color:var(--fg);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .12s ease,box-shadow .12s ease}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);box-shadow:0 3px 0 color-mix(in srgb,var(--accent) 55%,#000)}
.btn.dip{background:var(--win);color:#241600;border-color:var(--win);box-shadow:0 3px 0 var(--ochre)}
.btn.dip:hover .dice{display:inline-block;transform:rotate(25deg)}
.btn.trip{background:var(--panel)}
.btn.trip.on{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.btn:disabled{opacity:.55;cursor:default}
button:focus-visible,.btn:focus-visible,input:focus-visible,textarea:focus-visible,canvas:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

.toolbar{display:flex;gap:8px;flex-wrap:wrap}
.tbtns{display:flex;gap:8px;flex:1 1 auto}
.tbtns .btn{flex:1 1 0;white-space:nowrap}
.search{flex:1 1 260px;position:relative;min-width:0}
.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:18px;height:18px;stroke:var(--muted);fill:none;stroke-width:2.2}
input,textarea{font:16px/1.4 var(--body);padding:12px 13px;border-radius:12px;border:1.5px solid var(--line);background:var(--panel);color:var(--fg);width:100%}
.search input{padding-left:40px}
textarea{min-height:76px;resize:vertical}

.ticker{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:8px 10px;min-width:0;overflow:hidden}
.live{font:500 11px/1 var(--mono);letter-spacing:.08em;background:var(--pin);color:#fff;padding:5px 7px;border-radius:6px;flex:none;display:inline-flex;gap:6px;align-items:center}
.live::before{content:"";width:6px;height:6px;border-radius:50%;background:#fff;animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.25}}
.tickmask{overflow:hidden;flex:1;min-width:0;white-space:nowrap;mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent)}
.ticktrack{display:inline-block;white-space:nowrap;font-size:14px}
.ticktrack.run{animation:tick var(--dur,40s) linear infinite}
.ticktrack span{margin-right:40px}
.ticktrack b{color:var(--accent)}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}

.viewport{position:relative;border-radius:20px;background:var(--sea);border:2px solid var(--fg);box-shadow:6px 6px 0 var(--fg);height:min(72vh,calc(min(100vw,960px) * .9));min-height:340px;overflow:hidden;margin-right:6px}
canvas#map{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
canvas#map:active{cursor:grabbing}
.zoomctl{position:absolute;right:10px;top:10px;display:grid;gap:6px}
.zoomctl button{width:42px;height:42px;border-radius:12px;border:1.5px solid var(--fg);background:var(--panel);color:var(--fg);font:600 20px/1 var(--mono);cursor:pointer;display:grid;place-items:center;box-shadow:2px 2px 0 var(--fg)}
.hint{position:absolute;left:10px;top:10px;font:500 12px/1.3 var(--mono);background:var(--panel);color:var(--fg);padding:7px 10px;border-radius:8px;border:1.5px solid var(--fg);max-width:calc(100% - 76px);pointer-events:none;transition:opacity .4s}
.hint.gone{opacity:0}
.legend{position:absolute;left:10px;bottom:10px;display:flex;gap:10px;font:500 11px/1 var(--mono);background:var(--panel);color:var(--muted);padding:7px 9px;border-radius:8px;border:1px solid var(--line);pointer-events:none}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:10px;height:10px;border-radius:2px;display:inline-block}
.lg-free{background:var(--bush)} .lg-sold{background:var(--sold)} .lg-win{background:var(--win)}
.toast{position:absolute;left:50%;bottom:44px;transform:translateX(-50%);background:var(--fg);color:var(--bg);font:600 14px/1.35 var(--body);padding:10px 14px;border-radius:12px;max-width:calc(100% - 24px);text-align:center;pointer-events:none;animation:pop .35s ease}
@keyframes pop{from{transform:translate(-50%,10px) scale(.95);opacity:0}}

.card{background:var(--panel);border:1.5px solid var(--line);border-radius:var(--r);padding:18px;min-width:0}
.panel{background:var(--panel);border:2px solid var(--fg);border-radius:var(--r);padding:18px;display:grid;gap:12px;min-width:0;box-shadow:4px 4px 0 var(--fg)}
.panel .place{font:800 22px/1.15 var(--display);text-wrap:balance}
.panel .fact{background:var(--panel2);border-radius:12px;padding:10px 12px;font-size:15px}
.coord{font:500 12px/1.3 var(--mono);color:var(--muted);font-variant-numeric:tabular-nums}
.msg{font:700 22px/1.3 var(--display);overflow-wrap:anywhere}
.who{color:var(--muted);overflow-wrap:anywhere}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pill{font:500 11px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:6px 8px;border-radius:99px;background:var(--panel2);color:var(--fg)}
.pill.sold{background:var(--sold);color:var(--on-accent)}
.pill.win{background:var(--win);color:#241600}
.pill.big{background:var(--pin);color:#fff}
.pill.free{background:var(--ok);color:#fff}
.pill.ex{background:var(--win);color:#241600}
.listing{border:2px solid var(--fg);border-radius:14px;padding:14px;display:grid;gap:10px;background:var(--panel);position:relative}
.listing::before{content:"FOR SALE";position:absolute;top:-11px;right:14px;background:var(--pin);color:#fff;font:500 11px/1 var(--mono);letter-spacing:.1em;padding:5px 8px;border-radius:4px;transform:rotate(3deg)}
.lhead{font:800 20px/1.2 var(--display);text-wrap:balance}
.feats{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.feats li{background:var(--panel2);border-radius:99px;padding:6px 10px;font-size:13px;font-weight:600}
.lprice{font-size:14px;color:var(--muted)}
.lprice b{font:800 26px/1 var(--display);color:var(--fg);margin-right:6px}
.soldsticker{justify-self:start;font:800 22px/1 var(--display);letter-spacing:.06em;color:var(--pin);border:3px solid var(--pin);border-radius:8px;padding:6px 12px;transform:rotate(-4deg)}
.cardimg{width:100%;max-width:360px;border-radius:12px;border:1px solid var(--line)}
.cardbox{display:grid;gap:8px}

.potrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:18px}
.pot{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center}
.pot svg{width:92px;height:auto}
.pot .big{font:800 clamp(32px,7vw,46px)/1 var(--display);font-variant-numeric:tabular-nums;margin-bottom:4px}
.pot .stack{display:grid;gap:6px;min-width:0}
.ladder{display:grid;gap:9px}
.lrow{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;font-variant-numeric:tabular-nums}
.lrow b{font:500 13px/1 var(--mono)}
.lbar{height:14px;border-radius:7px;background:var(--panel2);overflow:hidden}
.lbar i{display:block;height:100%;background:linear-gradient(90deg,var(--sold-2),var(--sold));border-radius:7px;transition:width .8s ease}
.lrow small{font:500 11px/1 var(--mono);color:var(--muted)}
.lrow.lead b::after{content:" 👑";font-size:11px}

.passport{display:grid;gap:16px;background:var(--panel);background-image:repeating-linear-gradient(0deg,transparent 0 27px,color-mix(in srgb,var(--line) 70%,transparent) 27px 28px)}
.phead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:12px}
.phead>div:first-child{max-width:60ch}
.stampmeter{width:160px;height:12px;background:var(--panel2);border-radius:6px;overflow:hidden;border:1px solid var(--line)}
.stampmeter i{display:block;height:100%;width:0;background:var(--pin);transition:width .6s ease}
.stamps{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.stamp{display:grid;justify-items:center;gap:4px;padding:10px 4px;border-radius:12px;border:2px dashed var(--line);background:transparent;color:var(--muted);cursor:pointer;font:600 12px/1.2 var(--body);text-align:center}
.stamp .em{font-size:28px;line-height:1;filter:grayscale(1);opacity:.45}
.stamp.got{border:2.5px solid var(--pin);color:var(--pin);background:color-mix(in srgb,var(--pin) 8%,var(--panel));transform:rotate(var(--rot,-3deg))}
.stamp.got .em{filter:none;opacity:1}
.stamp.got.fresh{animation:stampin .45s cubic-bezier(.2,1.6,.4,1)}
@keyframes stampin{from{transform:scale(1.8) rotate(10deg);opacity:0}}

.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:24px;padding-block:6px}
.award{border-left:5px solid var(--win);padding-left:16px;display:grid;gap:8px;align-content:start}
.award p{max-width:60ch}
ol.steps{margin:0;padding-left:1.2em;display:grid;gap:8px;max-width:60ch}
.faq{display:grid;gap:8px}
.faq details{background:var(--panel);border:1.5px solid var(--line);border-radius:12px;padding:12px 14px}
.faq summary{font-weight:700;cursor:pointer}
.faq details p{margin-top:8px;color:var(--muted);max-width:65ch}
.foot{display:grid;gap:6px;font-size:14px;border-top:1px solid var(--line);padding-top:18px}

.sheet{position:fixed;inset:0;z-index:50;display:grid;align-items:end;justify-items:center}
.scrim{position:absolute;inset:0;background:rgba(20,12,5,.5);animation:fade .2s ease}
@keyframes fade{from{opacity:0}}
.sheetbox{position:relative;width:min(560px,100%);max-height:92vh;overflow:auto;background:var(--bg);border-radius:22px 22px 0 0;border:2px solid var(--fg);border-bottom:0;animation:up .28s cubic-bezier(.2,.9,.3,1);padding-bottom:max(18px,env(safe-area-inset-bottom,0px))}
@media (min-width:640px){.sheet{align-items:center}.sheetbox{border-radius:22px;border-bottom:2px solid var(--fg);box-shadow:8px 8px 0 var(--fg)}}
@keyframes up{from{transform:translateY(40px);opacity:0}}
.sheethead{display:flex;justify-content:space-between;align-items:start;gap:12px;padding:18px max(18px,env(safe-area-inset-right,0px)) 0 max(18px,env(safe-area-inset-left,0px))}
.sheetbody{display:grid;gap:14px;padding:12px max(18px,env(safe-area-inset-right,0px)) 0 max(18px,env(safe-area-inset-left,0px))}
.iconbtn{width:40px;height:40px;border-radius:12px;border:1.5px solid var(--line);background:var(--panel);color:var(--fg);font-size:16px;cursor:pointer;flex:none}
.lbl{font:600 13px/1.2 var(--body);color:var(--muted);margin-bottom:6px}
label{display:grid;gap:5px;font:600 13px/1.2 var(--body);color:var(--muted)}
label.check{display:flex;gap:10px;align-items:flex-start;font-weight:500;font-size:14px;color:var(--fg);line-height:1.4}
label.check input{width:20px;height:20px;flex:none;margin:0;accent-color:var(--accent)}
.cc{float:right;font:500 11px/1 var(--mono)}
.plots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.plot{display:grid;justify-items:center;gap:6px;padding:10px 4px;border-radius:12px;border:1.5px solid var(--line);background:var(--panel);color:var(--fg);cursor:pointer;font:700 14px/1 var(--body)}
.plot small{font:500 11px/1 var(--mono);color:var(--muted)}
.plot .gridico{display:grid;gap:1.5px;width:26px;height:26px}
.plot .gridico i{background:var(--sold);border-radius:1px}
.plot[aria-checked="true"]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--panel));box-shadow:0 0 0 2px var(--accent)}
.plot:disabled{opacity:.4;cursor:default}
.plotnote{font-size:13px;color:var(--muted);margin-top:6px}
.plotnote.bad{color:var(--pin);font-weight:600}
.preview{display:flex;flex-direction:column;gap:6px;align-items:flex-start;background:var(--sea);border-radius:12px;padding:12px}
.pvlbl{font:500 11px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--fg);opacity:.7}
.pvbubble{background:var(--panel);border:2px solid var(--sold);border-radius:10px;padding:6px 10px;font:600 14px/1.3 var(--body);max-width:100%;overflow-wrap:anywhere;position:relative}
.err{color:var(--pin);font-weight:600;font-size:14px}
.pay{width:100%;padding:16px;font-size:17px}

@media (max-width:480px){
  .topstat{font-size:11px}
  .tbtns{flex-basis:100%}
  .pot{grid-template-columns:72px 1fr;gap:14px}.pot svg{width:72px}
  .legend{display:none}
  .plots{grid-template-columns:repeat(2,1fr)}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .ticktrack.run,.live::before{animation:none}
  .stamp.got.fresh,.sheetbox,.scrim,.toast{animation:none}
  .lbar i,.stampmeter i{transition:none}
}
