/* North East Exchange — Swiss, Arial only, light + dark.
   Tokens adapted from art.hellodamien.com/assets/tokens.css */
:root{
  --font: Arial, "Helvetica Neue", Helvetica, sans-serif;
  --bg:#FFFFFF; --paper:#F5F5F3; --raised:#FFFFFF; --sunk:#EFEFEC;
  --ink:#111111; --ink-2:#555555; --ink-3:#8A8A8A;
  --line:#DCDCD8; --line-2:#EBEBE8;
  --hover:rgba(0,0,0,.045); --press:rgba(0,0,0,.08);
  --need:#D7301A; --need-t:rgba(215,48,26,.09);
  --has:#1F4FE0; --has-t:rgba(31,79,224,.09);
  --ok:#12805C;
  --e1:0 1px 2px rgba(0,0,0,.05),0 1px 1px rgba(0,0,0,.03);
  --e2:0 2px 6px rgba(0,0,0,.06),0 12px 32px rgba(0,0,0,.09);
  --e3:0 8px 24px rgba(0,0,0,.10),0 24px 64px rgba(0,0,0,.14);
  --r:2.5px; --hair:1px solid var(--line);
  --pad:20px; --max:1180px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#1A1A1A; --paper:#202020; --raised:#262626; --sunk:#141414;
  --ink:#EDEDED; --ink-2:#A6A6A6; --ink-3:#727272;
  --line:#353535; --line-2:#2A2A2A;
  --hover:rgba(255,255,255,.06); --press:rgba(255,255,255,.1);
  --need:#FF6A52; --need-t:rgba(255,106,82,.13);
  --has:#6E92FF; --has-t:rgba(110,146,255,.14);
  --ok:#3DBB8C;
  --e1:0 1px 2px rgba(0,0,0,.4);
  --e2:0 4px 12px rgba(0,0,0,.35),0 16px 40px rgba(0,0,0,.4);
  --e3:0 10px 30px rgba(0,0,0,.5),0 30px 80px rgba(0,0,0,.55);
  color-scheme:dark;}}
:root[data-theme="dark"]{
  --bg:#1A1A1A; --paper:#202020; --raised:#262626; --sunk:#141414;
  --ink:#EDEDED; --ink-2:#A6A6A6; --ink-3:#727272;
  --line:#353535; --line-2:#2A2A2A;
  --hover:rgba(255,255,255,.06); --press:rgba(255,255,255,.1);
  --need:#FF6A52; --need-t:rgba(255,106,82,.13);
  --has:#6E92FF; --has-t:rgba(110,146,255,.14);
  --ok:#3DBB8C;
  --e1:0 1px 2px rgba(0,0,0,.4);
  --e2:0 4px 12px rgba(0,0,0,.35),0 16px 40px rgba(0,0,0,.4);
  --e3:0 10px 30px rgba(0,0,0,.5),0 30px 80px rgba(0,0,0,.55);
  color-scheme:dark;}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:80px}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.45 var(--font);-webkit-font-smoothing:antialiased;min-height:100vh}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
::selection{background:var(--has-t)}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
:where(.tabs,.icon-btn,.search,.btn,.act) svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
:where(.tabs,.icon-btn,.search,.btn,.act) svg .fill{fill:currentColor;stroke:none}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--bg);padding:8px 12px;border-radius:var(--r);z-index:99}
.skip:focus{left:8px}
.num{font-variant-numeric:tabular-nums}

/* ---------- top bar ---------- */
.bar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:16px;height:60px;padding:0 var(--pad);
  background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:var(--hair)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;min-width:0}
.mark{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--r);background:var(--ink);color:var(--bg);font-weight:700;font-size:20px;line-height:1}
.brand-t{display:flex;flex-direction:column;line-height:1.1}
.brand-t b{font-size:15px;letter-spacing:-.01em}
.brand-s{font-size:11px;color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;margin-top:2px}
.tabs{display:flex;gap:2px;margin:0 auto}
.tabs a{display:flex;align-items:center;gap:7px;padding:8px 12px;border-radius:var(--r);text-decoration:none;color:var(--ink-2);font-size:14px}
.tabs a:hover{background:var(--hover);color:var(--ink)}
.tabs a[aria-current="page"]{color:var(--ink);background:var(--sunk);box-shadow:inset 0 0 0 1px var(--line)}
.tabs svg{width:18px;height:18px}
.bar-r{display:flex;align-items:center;gap:8px;margin-left:auto}
.tabs + .bar-r{margin-left:0}

/* ---------- buttons, chips ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 16px;border-radius:var(--r);border:var(--hair);background:var(--raised);font-size:15px;font-weight:700;cursor:pointer;text-decoration:none;box-shadow:var(--e1);white-space:nowrap}
.btn:hover{background:var(--paper)}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.btn-primary:hover{background:var(--ink);opacity:.88}
.btn-big{min-height:52px;font-size:16px;padding:0 20px}
.btn-block{width:100%}
.btn-quiet{box-shadow:none;background:transparent}
.btn[disabled]{opacity:.45;cursor:default}
.icon-btn{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r);border:var(--hair);background:var(--raised);cursor:pointer;box-shadow:var(--e1)}
.icon-btn:hover{background:var(--paper)}
.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 6px;margin:0 -2px}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:var(--r);border:var(--hair);background:var(--raised);font-size:14px;cursor:pointer;color:var(--ink-2)}
.chip:hover{color:var(--ink);background:var(--paper)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chip .c{font-size:12px;opacity:.7}
.seg{display:inline-flex;border:var(--hair);border-radius:var(--r);background:var(--sunk);padding:2px}
.seg button{border:0;background:transparent;min-height:34px;padding:0 12px;border-radius:2px;font-size:14px;color:var(--ink-2);cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--raised);color:var(--ink);box-shadow:var(--e1);font-weight:700}

/* ---------- type ---------- */
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-weight:700;margin:0 0 10px}
h1{font-size:clamp(34px,6.4vw,64px);line-height:1;letter-spacing:-.035em;font-weight:700;margin:0 0 16px;max-width:15ch}
h1 .soft{color:var(--ink-3)}
h2{font-size:22px;line-height:1.15;letter-spacing:-.015em;margin:0}
h3{font-size:16px;margin:0}
.lede{font-size:18px;color:var(--ink-2);max-width:52ch;margin:0}
.muted{color:var(--ink-2)}
.small{font-size:13px}

/* ---------- hero ---------- */
.hero{padding:44px 0 28px;border-bottom:var(--hair)}
.hero-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:40px;align-items:end}
.actions{display:grid;gap:10px}
.act{display:flex;align-items:center;gap:14px;padding:16px 18px;border:var(--hair);border-radius:var(--r);background:var(--raised);box-shadow:var(--e2);cursor:pointer;text-align:left;width:100%}
.act:hover{transform:translateY(-1px);box-shadow:var(--e3)}
.act .dot{flex:none;width:12px;height:12px;border-radius:50%}
.act b{display:block;font-size:17px}
.act span{display:block;font-size:14px;color:var(--ink-2)}
.act .arr{margin-left:auto;color:var(--ink-3)}
.stats{display:flex;gap:28px;margin-top:22px;flex-wrap:wrap}
.stat b{display:block;font-size:28px;letter-spacing:-.02em;line-height:1}
.stat span{font-size:12px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.1em}

/* ---------- controls ---------- */
.controls{position:sticky;top:60px;z-index:20;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:var(--hair);padding:12px 0 6px}
.ctl-row{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.search{flex:1;display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:var(--hair);border-radius:var(--r);background:var(--raised);box-shadow:var(--e1)}
.search input{flex:1;border:0;outline:0;background:transparent;min-width:0;font-size:16px}
.search kbd{font:12px var(--font);color:var(--ink-3);border:var(--hair);border-radius:2px;padding:1px 5px}
.search svg{color:var(--ink-3)}

/* ---------- board ---------- */
.cols{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:24px 0 40px}
.col-h{display:flex;align-items:baseline;gap:10px;padding:0 0 10px;border-bottom:2px solid var(--ink);margin-bottom:0}
.col-h .lab{display:inline-flex;align-items:center;gap:8px}
.col-h .c{color:var(--ink-3);font-size:14px}
.col-h .hint{margin-left:auto;font-size:13px;color:var(--ink-3)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none}
.dot.need{background:var(--need)}
.dot.has{background:transparent;box-shadow:inset 0 0 0 2px var(--has)}
.dot.partner{background:linear-gradient(90deg,var(--need) 50%,var(--has) 50%)}
.list{list-style:none;margin:0;padding:0}
.row{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:start;padding:14px 4px;border-bottom:var(--hair);cursor:pointer;border-radius:0;text-decoration:none}
.row:hover{background:var(--hover)}
.row .n{font-size:12px;color:var(--ink-3);padding-top:3px}
.row .t{font-weight:700;font-size:16px;line-height:1.25}
.row .o{font-size:14px;color:var(--ink-2);margin-top:2px}
.meta{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px;font-size:12px;color:var(--ink-3)}
.meta .tc{color:var(--ink-3);border:1px dashed var(--line);padding:0 5px;border-radius:2px}
.meta .new{color:var(--ok);border:1px solid var(--ok);padding:0 5px;border-radius:2px}
.pill{align-self:start;display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:3px 8px;border-radius:var(--r);white-space:nowrap}
.pill.help{background:var(--has-t);color:var(--has)}
.pill.use{background:var(--need-t);color:var(--need)}
.pill.gp{border:1px solid var(--need);color:var(--need)}
.pill.zero{color:var(--ink-3);border:var(--hair)}
.mob-seg{display:none}
.empty{padding:28px 0;color:var(--ink-3)}
.more{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:20px 0 48px;border-top:var(--hair);flex-wrap:wrap}

/* ---------- section pages ---------- */
.page-h{padding:40px 0 22px;border-bottom:var(--hair)}
.page-h h1{font-size:clamp(30px,5vw,48px);max-width:20ch}
.sec{padding:26px 0}
.sec + .sec{border-top:var(--hair)}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}

/* match pairs */
.pair{display:grid;grid-template-columns:62px 1fr 28px 1fr;gap:14px;align-items:center;padding:14px 4px;border-bottom:var(--hair);cursor:pointer}
.pair:hover{background:var(--hover)}
.side .lbl{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:6px}
.side .t{font-weight:700;line-height:1.25;margin-top:3px}
.side .o{font-size:14px;color:var(--ink-2)}
.pair .why{grid-column:2/-1;font-size:13px;color:var(--ink-3);margin-top:-6px}
.arrow{color:var(--ink-3);text-align:center}
.fit{display:flex;flex-direction:column;gap:5px}
.fit b{font-size:13px}
.bar-m{height:4px;background:var(--sunk);border-radius:2px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line-2)}
.bar-m i{display:block;height:100%;background:var(--ink)}

/* cards */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.card{border:var(--hair);border-radius:var(--r);background:var(--raised);box-shadow:var(--e1);padding:16px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:8px;width:100%}
.card:hover{box-shadow:var(--e2);transform:translateY(-1px)}
.card .k{font-size:12px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em}
.card h3{font-size:17px;line-height:1.2}
.card .cnt{display:flex;gap:14px;font-size:14px;color:var(--ink-2);margin-top:auto;padding-top:8px;border-top:var(--hair)}
.card .cnt span{display:flex;align-items:center;gap:6px}

/* gaps */
.gap{display:grid;grid-template-columns:40px 1fr auto;gap:14px;padding:18px 4px;border-bottom:var(--hair);align-items:start}
.gap .n{font-size:28px;font-weight:700;letter-spacing:-.02em;color:var(--need);line-height:1}
.gap .fix{font-size:14px;color:var(--ink-2);margin-top:6px}
.gap .fix b{color:var(--ink)}
.bal{display:grid;grid-template-columns:minmax(120px,190px) 1fr 1fr minmax(90px,130px);gap:0;align-items:center;font-size:14px}
.bal > div{padding:10px 0;border-bottom:var(--hair)}
.bal .h{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.bal .l{display:flex;justify-content:flex-end;padding-right:8px}
.bal .r{padding-left:8px;border-left:1px solid var(--ink)}
.bal .bn{height:18px;background:var(--need);border-radius:2px 0 0 2px;display:flex;align-items:center;justify-content:flex-start;padding-left:5px;color:#fff;font-size:12px;font-weight:700;min-width:22px}
.bal .bh{height:18px;background:var(--has);border-radius:0 2px 2px 0;display:flex;align-items:center;justify-content:flex-end;padding-right:5px;color:#fff;font-size:12px;font-weight:700;min-width:22px}
.bal .read{padding-left:14px;color:var(--ink-2);font-size:13px}
.bal .read.short{color:var(--need);font-weight:700}

/* calendar */
.months{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;margin-bottom:14px}
.months button{min-height:52px;border:var(--hair);border-radius:var(--r);background:var(--raised);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:13px;padding:4px 0}
.months button b{font-size:11px;color:var(--ink-3);font-weight:400}
.months button .heat{width:70%;height:3px;border-radius:2px;background:var(--need);opacity:.15}
.months button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.months button[aria-pressed="true"] b{color:var(--bg);opacity:.7}
.months button.now{box-shadow:inset 0 -2px 0 var(--need)}
.gantt{border-top:2px solid var(--ink);font-size:13px}
.g-row{display:grid;grid-template-columns:minmax(150px,34%) repeat(12,1fr);align-items:center;border-bottom:var(--hair);min-height:40px;cursor:pointer}
.g-row:hover{background:var(--hover)}
.g-row.head{min-height:30px;cursor:default;font-size:11px;color:var(--ink-3);letter-spacing:.06em}
.g-row.head:hover,.g-row.grp:hover{background:none}
.g-row.grp{cursor:default;min-height:34px;font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;background:var(--paper)}
.g-lab{padding:6px 10px 6px 4px;line-height:1.2;min-width:0}
.g-lab b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.g-lab span{color:var(--ink-3);font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.g-c{height:100%;position:relative;border-left:1px solid var(--line-2);display:flex;align-items:center;justify-content:center}
.g-c.now{background:var(--need-t)}
.g-c i{display:block;height:10px;width:100%}
.g-c i.need{background:var(--need)}
.g-c i.has{background:var(--has);opacity:.85}
.g-c i.s{border-radius:2px 0 0 2px}
.g-c i.e{border-radius:0 2px 2px 0}
.g-c i.s.e{border-radius:2px}
.crunch .g-c{font-size:12px;font-weight:700}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--ink-2);margin:10px 0}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{display:inline-block;width:16px;height:8px;border-radius:2px}

/* ---------- sheet ---------- */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.36);z-index:40;animation:fade .18s ease}
.sheet{position:fixed;z-index:50;left:50%;top:50%;transform:translate(-50%,-50%);width:min(680px,calc(100vw - 32px));max-height:min(86vh,900px);overflow:auto;background:var(--raised);border:var(--hair);border-radius:var(--r);box-shadow:var(--e3);animation:pop .2s ease;overscroll-behavior:contain}
.sheet-grip{display:none}
.sheet-x{position:sticky;top:12px;float:right;margin:12px 12px 0 0;z-index:2}
.sheet-body{padding:26px 26px 30px}
.sheet h2{font-size:26px;line-height:1.1;letter-spacing:-.02em;margin:6px 0 6px;padding-right:40px}
.sheet .who{font-size:16px;color:var(--ink-2);margin:0 0 12px}
.sheet .who a{color:var(--ink)}
.kind{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.kind.need{color:var(--need)} .kind.has{color:var(--has)}
.block{margin-top:22px;padding-top:16px;border-top:var(--hair)}
.block-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:6px}
.block-h h3{font-size:17px}
.block p{margin:4px 0}
.opt{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:var(--hair)}
.opt:last-child{border-bottom:0}
.opt .t{font-weight:700;line-height:1.25}
.opt .o{font-size:14px;color:var(--ink-2)}
.opt .why{font-size:12px;color:var(--ink-3);margin-top:4px}
.opt .fitrow{display:flex;align-items:center;gap:8px;margin-top:6px}
.opt .fitrow .bar-m{width:70px}
.opt .fitrow b{font-size:12px}
.note{padding:12px 14px;border-radius:var(--r);background:var(--paper);border:var(--hair);font-size:14px;color:var(--ink-2)}
.note.gapn{border-color:var(--need);background:var(--need-t);color:var(--ink)}
.src{font-size:13px;color:var(--ink-3)}
.src a{color:var(--ink-2)}

/* forms */
.step-h{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-weight:700;margin-bottom:6px}
.choices{display:grid;gap:10px;margin-top:14px}
.choice{display:flex;gap:14px;align-items:center;padding:16px;border:var(--hair);border-radius:var(--r);background:var(--raised);box-shadow:var(--e1);cursor:pointer;text-align:left;width:100%}
.choice:hover{box-shadow:var(--e2)}
.choice b{display:block;font-size:17px}
.choice span{display:block;font-size:14px;color:var(--ink-2)}
label.f{display:block;font-weight:700;font-size:15px;margin:18px 0 6px}
label.f span{font-weight:400;color:var(--ink-3)}
.inp{width:100%;min-height:48px;padding:10px 12px;border:var(--hair);border-radius:var(--r);background:var(--bg);font-size:16px;box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}
textarea.inp{min-height:110px;resize:vertical;line-height:1.4}
.inp:focus{outline:2px solid var(--ink);outline-offset:-1px}
.guess{margin-top:10px;font-size:14px;color:var(--ink-2)}
.guess b{color:var(--ink)}
.steps{display:flex;gap:4px;margin:0 0 16px}
.steps i{flex:1;height:3px;border-radius:2px;background:var(--line)}
.steps i.on{background:var(--ink)}
.form-foot{display:flex;gap:10px;justify-content:space-between;margin-top:24px}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* toast */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:60;background:var(--ink);color:var(--bg);padding:12px 16px;border-radius:var(--r);box-shadow:var(--e3);font-size:15px;max-width:calc(100vw - 32px)}

/* footer */
.foot{border-top:var(--hair);margin-top:20px;padding:30px 0 40px;font-size:14px;color:var(--ink-2)}
.foot .fg{display:grid;grid-template-columns:2fr 1fr 1fr;gap:28px}
.foot h4{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:0 0 8px}
.foot ul{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.foot a{color:var(--ink-2)}
.foot p{margin:0 0 8px;max-width:56ch}

@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:translate(-50%,-48%)}}
@keyframes rise{from{transform:translateY(100%)}}

/* ---------- phone ---------- */
@media (max-width:760px){
  :root{--pad:16px}
  html{scroll-padding-top:120px}
  body{padding-bottom:calc(68px + env(safe-area-inset-bottom))}
  .bar{height:56px;gap:10px;backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--bg)}
  .brand-s{display:none}
  .tabs{position:fixed;left:0;right:0;bottom:0;z-index:35;margin:0;justify-content:space-around;gap:0;
    background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    border-top:var(--hair);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .tabs a{flex-direction:column;gap:3px;padding:6px 4px;font-size:11px;flex:1;min-height:52px;justify-content:center}
  .tabs a[aria-current="page"]{background:none;box-shadow:none;color:var(--ink);font-weight:700}
  .tabs a[aria-current="page"] svg{stroke-width:2.2}
  .tabs svg{width:22px;height:22px}
  .bar-r{margin-left:auto}
  .tabs + .bar-r{margin-left:auto}
  .hero{padding:26px 0 20px}
  .hero-grid{grid-template-columns:1fr;gap:20px}
  .lede{font-size:16px}
  .stats{gap:20px;margin-top:16px}
  .stat b{font-size:24px}
  .controls{position:static;padding-top:10px;backdrop-filter:none;-webkit-backdrop-filter:none}
  .search kbd{display:none}
  .cols{grid-template-columns:1fr;padding-top:8px}
  .cols.only-need .col-has,.cols.only-has .col-need{display:none}
  .mob-seg{display:flex;width:100%}
  .mob-seg button{flex:1}
  .col-h{display:none}
  .pair{grid-template-columns:1fr;gap:6px}
  .pair .arrow{display:none}
  .pair .why{grid-column:1;margin-top:0}
  .pair .fit{flex-direction:row;align-items:center}
  .pair .fit .bar-m{width:80px}
  .sheet{left:0;right:0;top:auto;bottom:0;transform:none;width:100%;max-height:92vh;border-radius:12px 12px 0 0;border-bottom:0;animation:rise .24s cubic-bezier(.2,.8,.2,1);padding-bottom:env(safe-area-inset-bottom)}
  .sheet-grip{display:block;width:40px;height:4px;border-radius:2px;background:var(--line);margin:8px auto 0}
  .sheet-body{padding:8px 18px 28px}
  .sheet h2{font-size:23px}
  .months{grid-template-columns:repeat(6,1fr)}
  .g-row{grid-template-columns:42% repeat(12,1fr)}
  .bal{grid-template-columns:96px 1fr 1fr}
  .bal .read,.bal .h.rd{display:none}
  .gap{grid-template-columns:32px 1fr}
  .gap > .btn{grid-column:2;justify-self:start}
  .foot .fg{grid-template-columns:1fr 1fr}
  .foot .fg > div:first-child{grid-column:1/-1}
  .toast{bottom:calc(84px + env(safe-area-inset-bottom))}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.act:hover,.card:hover{transform:none}}

/* ---------- landscape skyline ---------- */
.land{padding:30px 0 34px;border-bottom:var(--hair);background:linear-gradient(var(--paper),var(--bg))}
.land .sec-h{align-items:flex-end;margin-bottom:22px}
.land-read{display:flex;gap:10px}
.land-read > div{border:var(--hair);border-radius:var(--r);background:var(--raised);box-shadow:var(--e1);padding:10px 14px;min-width:160px;display:flex;flex-direction:column;gap:2px}
.land-read .k{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.land-read b{font-size:20px;letter-spacing:-.01em}
.land-read .num{font-size:13px;color:var(--ink-2)}
.sky{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:6px;align-items:stretch}
.sky-col{display:flex;flex-direction:column;align-items:stretch;min-width:0}
.sky-up,.sky-down{display:flex;align-items:center;gap:3px}
.sky-up{flex-direction:column-reverse;justify-content:flex-start;height:calc(var(--hu) * 15px);padding-bottom:4px}
.sky-down{flex-direction:column;height:calc(var(--nu) * 15px);padding-top:4px}
.sq{position:relative;display:block;width:min(100%,46px);height:12px;border:0;border-radius:2px;padding:0;cursor:pointer;transition:transform .12s,box-shadow .12s}
.sq.has{background:var(--has)} .sq.need{background:var(--need)}
.sq.tc{background:transparent;box-shadow:inset 0 0 0 1.5px currentColor}
.sq.has.tc{color:var(--has)} .sq.need.tc{color:var(--need)}
.sq:hover,.sq:focus-visible{transform:scaleY(1.35) scaleX(1.06);box-shadow:var(--e2);z-index:3;outline:none}
.sq .tip{display:none;position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);width:max-content;max-width:220px;background:var(--ink);color:var(--bg);font-size:12px;line-height:1.3;padding:7px 9px;border-radius:var(--r);box-shadow:var(--e3);text-align:left;pointer-events:none;z-index:5}
.sq .tip b{display:block;font-weight:400;opacity:.7;margin-top:2px}
.sq:hover .tip,.sq:focus-visible .tip{display:block}
.sky-col:first-child .sq .tip,.sky-col:nth-child(2) .sq .tip{left:0;transform:none}
.sky-col:last-child .sq .tip,.sky-col:nth-last-child(2) .sq .tip{left:auto;right:0;transform:none}
.sky-lab{border:0;border-top:2px solid var(--ink);border-bottom:1px solid var(--line);background:transparent;padding:7px 2px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;font-weight:700;color:var(--ink)}
.sky-lab:hover{background:var(--hover)}
.sky-lab .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.sky-lab .ct{display:flex;gap:6px;font-size:11px;font-weight:400}
.sky-lab .ct i{font-style:normal} .sky-lab .ct .h{color:var(--has)} .sky-lab .ct .n{color:var(--need)}
.legend a{color:var(--ink-2)}

@media (max-width:760px){
  .land{padding:22px 0 24px}
  .land-read{width:100%}
  .land-read > div{flex:1;min-width:0;padding:8px 10px}
  .land-read b{font-size:17px}
  .sky{gap:3px}
  .sky-lab{font-size:9px;padding:6px 0;letter-spacing:-.01em}
  .sky-lab .nm{writing-mode:vertical-rl;transform:rotate(180deg);height:62px;white-space:nowrap;overflow:visible}
  .sky-lab .ct{flex-direction:column;gap:0;align-items:center}
  .sq{height:10px}
  .sky-up{height:calc(var(--hu) * 13px)} .sky-down{height:calc(var(--nu) * 13px)}
  .sq .tip{display:none!important}
  .tabs a span{font-size:10px}
}

/* ---------- full-page map (after the North East Planning Atlas) ---------- */
body.mapmode{overflow:hidden}
body.mapmode .foot{display:none}
.xmap{position:relative;height:calc(100dvh - 60px);overflow:hidden;background:var(--bg);user-select:none;-webkit-user-select:none}
.xmap-canvas{position:absolute;inset:0;display:block;cursor:grab;touch-action:none;outline:none}
.xm-tbl{border-collapse:collapse;background:var(--raised);box-shadow:var(--e1);font-size:11px}
.xm-tbl th,.xm-tbl td{border:var(--hair);padding:6px 10px;height:30px}
.xm-tbl th{font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);text-align:left;white-space:nowrap}
.xm-tbl td{text-align:right;font-weight:700;color:var(--ink);min-width:62px;white-space:nowrap;font-size:12px}
.xm-stats{position:absolute;left:16px;top:16px;z-index:5}
.xm-stats td{min-width:96px;max-width:150px;overflow:hidden;text-overflow:ellipsis}
.xm-pos{position:absolute;right:16px;top:16px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.xm-pos .xm-tbl td{min-width:92px}
.xm-btns{display:flex;background:var(--raised);border:var(--hair);box-shadow:var(--e1)}
.xm-btns button{width:40px;height:36px;border:0;border-left:var(--hair);background:transparent;font-size:17px;font-weight:700;cursor:pointer;color:var(--ink)}
.xm-btns button:first-child{border-left:0}
.xm-btns button:hover{background:var(--hover)}
.xm-btns button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.xm-sheet{position:absolute;left:16px;top:176px;bottom:16px;width:312px;z-index:6;background:var(--raised);border:var(--hair);box-shadow:var(--e2);display:flex;flex-direction:column;max-height:calc(100% - 192px)}
.xm-sheet.shut{bottom:auto}
.xm-sheet.shut .xm-sheet-b{display:none}
.xm-sheet-h{display:flex;align-items:baseline;gap:8px;border:0;border-bottom:var(--hair);background:transparent;padding:14px 16px 12px;cursor:pointer;text-align:left;color:var(--ink)}
.xm-sheet-h .code,.xm-sheets .code{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--ink-3)}
.xm-sheet-h b{font-size:20px;letter-spacing:-.01em}
.xm-sheet-h .hide{margin-left:auto;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px}
.xm-sheet-b{overflow:auto;padding:4px 16px 14px;overscroll-behavior:contain}
.xm-sub{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin:8px 0 4px}
.xm-desc{font-size:13px;color:var(--ink-2);margin:0 0 6px;line-height:1.45}
.xm-desc .h{color:var(--has)} .xm-desc .n{color:var(--need)}
.xm-acts{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:12px 0 4px}
.xm-acts .btn{min-height:42px;font-size:14px;padding:0 10px}
.xm-acts .btn-quiet{grid-column:1/-1;justify-content:flex-start;font-weight:400;color:var(--ink-2);border:0;padding:0 2px;min-height:30px}
.xm-acts .btn-primary .dot.need{background:var(--need)}
.xm-k{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:16px 0 6px;padding-top:12px;border-top:var(--hair)}
.xm-sheets{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.xm-sheets button{font-size:12.5px;padding:0 7px}
.xm-sheets .code{white-space:nowrap}
.xm-sheets button{display:flex;align-items:center;gap:6px;min-height:34px;padding:0 8px;border:var(--hair);background:var(--bg);font-size:13px;cursor:pointer;color:var(--ink);text-align:left}
.xm-sheets button:hover{background:var(--hover)}
.xm-sheets button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.xm-sheets button[aria-pressed="true"] .code,.xm-sheets button[aria-pressed="true"] .ct i{color:var(--bg)}
.xm-sheets .ct{margin-left:auto;display:flex;gap:5px;font-size:11px}
.xm-sheets .ct i{font-style:normal} .xm-sheets .ct .h{color:var(--has)} .xm-sheets .ct .n{color:var(--need)}
.xm-legend{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:12px;color:var(--ink-2)}
.xm-legend li{display:flex;align-items:center;gap:8px}
.xm-legend svg{width:22px;height:22px;flex:none}
.xm-index{list-style:none;margin:0;padding:0}
.xm-index button{display:flex;gap:10px;width:100%;border:0;border-bottom:var(--hair);background:transparent;padding:7px 2px;font-size:13px;text-align:left;cursor:pointer;color:var(--ink)}
.xm-index button:hover{background:var(--hover)}
.xm-index button.on{font-weight:700}
.xm-index .num{color:var(--ink-3);font-size:11px;padding-top:1px}
.xm-index .ap{color:var(--ink-3)}
.xm-help{font-size:11px;color:var(--ink-3);margin:14px 0 0;line-height:1.6}
.xm-help b{color:var(--ink-2)}
.xmap.has-insp .xm-title{display:none}
.xm-insp{position:absolute;right:16px;top:132px;bottom:16px;width:360px;z-index:7;background:var(--raised);border:var(--hair);box-shadow:var(--e3);overflow:auto;padding:18px 18px 20px;overscroll-behavior:contain;animation:fade .15s}
.xm-x{position:absolute;right:10px;top:10px;width:34px;height:34px;box-shadow:none}
.xm-kind{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:0 0 4px}
.xm-insp h2{font-size:26px;line-height:1.05;letter-spacing:-.02em;margin:0 40px 6px 0}
.xm-addr{font-size:13px;color:var(--ink-2);margin:0 0 12px}
.xm-cnt{width:100%;box-shadow:none}
.xm-cnt td{min-width:0} .xm-cnt td.h{color:var(--has)} .xm-cnt td.n{color:var(--need)}
.xm-sec{margin-top:16px;padding-top:12px;border-top:2px solid var(--ink)}
.xm-sec h3{font-size:12px;letter-spacing:.12em;text-transform:uppercase;margin:0 0 4px}
.xm-list{list-style:none;margin:0;padding:0}
.xm-list button{display:flex;align-items:baseline;gap:8px;width:100%;border:0;border-bottom:var(--hair);background:transparent;padding:9px 2px;text-align:left;cursor:pointer;font-size:14px;color:var(--ink)}
.xm-list button:hover{background:var(--hover)}
.xm-list .dot{position:relative;top:-1px}
.xm-list .t{flex:1;line-height:1.3}
.xm-list .w{font-size:11px;color:var(--ink-3);white-space:nowrap}
.xm-title{position:absolute;right:16px;bottom:16px;z-index:5;display:grid;grid-template-columns:96px 150px 150px;grid-template-rows:auto auto auto;background:var(--raised);border:1.5px solid var(--ink);box-shadow:var(--e2);font-size:11px}
.xm-title > div{border-right:var(--hair);border-bottom:var(--hair);padding:6px 9px;display:flex;flex-direction:column;justify-content:center;min-width:0}
.xm-title span{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.xm-title b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xm-title .t-sheet{grid-row:1/3;border-right:1.5px solid var(--ink)}
.xm-title .t-sheet b{font-size:30px;letter-spacing:-.02em;line-height:1}
.xm-title .t-bar{grid-column:1/-1;flex-direction:row;align-items:center;gap:10px;border-bottom:0;border-right:0;height:28px}
.xm-title .t-bar i{display:block;height:6px;border:1.5px solid var(--ink);background:linear-gradient(90deg,var(--ink) 25%,transparent 25% 50%,var(--ink) 50% 75%,transparent 75%)}
.xm-title .t-bar span{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--ink)}
.xm-tip[hidden]{display:none}
.xm-tip{position:absolute;z-index:9;pointer-events:none;background:var(--ink);color:var(--bg);padding:7px 10px;font-size:12px;box-shadow:var(--e3);display:flex;flex-direction:column;gap:2px;max-width:240px}
.xm-tip span{opacity:.75}
@media (max-width:1100px){ .xm-title{display:none} .xm-insp{bottom:16px} }
@media (max-width:760px){
  .xmap{height:calc(100dvh - 56px - 64px - env(safe-area-inset-bottom))}
  .xm-stats,.xm-pos .xm-tbl,.xm-help{display:none}
  .xm-pos{top:10px;right:10px}
  .xm-btns button{width:42px;height:40px}
  .xm-sheet,.xm-sheet.shut{left:8px;right:8px;top:auto;bottom:8px;width:auto;max-height:52%}
  .xm-sheet-h{padding:12px 14px}
  .xm-sheet-h b{font-size:17px}
  .xm-insp{left:0;right:0;top:auto;bottom:0;width:auto;max-height:68%;border-radius:12px 12px 0 0;padding:16px 16px 20px;animation:rise .22s cubic-bezier(.2,.8,.2,1)}
  .xm-insp h2{font-size:22px}
  .xm-tip{display:none!important}
}
