:root{--paper:#ece7db;--paper-2:#e3ddcd;--card:#fbfaf7;--card-2:#f4f1e9;--ink:#191c1f;--ink-2:#4c545c;--ink-3:#8a9099;--rule:#191c1f24;--rule-soft:#191c1f12;--desk:#d8d2c2;--red:#e2523b;--teal:#12aea6;--yellow:#f0b12b;--cobalt:#3b5be4;--green:#4c9d5c;--plum:#8a55d1;--slate:#6d7a89;--cream:#f6ecd8;--shadow-card:0 1px 0 #ffffffe6 inset, 0 2px 3px -2px #191c1f4d, 0 14px 24px -20px #191c1fa6;--shadow-pop:0 1px 0 #ffffffe6 inset, 0 6px 10px -6px #191c1f66, 0 18px 30px -18px #191c1f99;--font-ui:"Bricolage Grotesque", "Trebuchet MS", system-ui, sans-serif;--font-mono:"Space Mono", ui-monospace, "SFMono-Regular", monospace}*{box-sizing:border-box}html,body{height:100%}body{font-family:var(--font-ui);color:var(--ink);background-color:var(--paper);-webkit-font-smoothing:antialiased;background-image:linear-gradient(#191c1f09 1px,#0000 1px),linear-gradient(90deg,#191c1f09 1px,#0000 1px),radial-gradient(120% 90% at 50% 0,#ffffffb3,#0000 60%);background-size:26px 26px,26px 26px,100% 100%;margin:0;overflow:hidden}button{color:inherit;font-family:inherit}.tt-app{grid-template-rows:62px minmax(0,1fr);height:100vh;display:grid}.tt-top{border-bottom:1px solid var(--rule);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:linear-gradient(#ffffffd9,#ffffff73);grid-template-columns:300px minmax(0,1fr) auto;align-items:center;gap:16px;padding:0 16px;display:grid}.tt-brand{align-items:center;gap:11px;display:flex}.tt-crest{flex:none;width:38px;height:38px}.crest-ring{fill:none;stroke:var(--ink);stroke-width:1.4px}.crest-ring-2{fill:none;stroke:var(--ink);stroke-width:.8px;stroke-dasharray:3 3.4;transform-origin:22px 22px;animation:34s linear infinite crest-spin}.crest-roof{fill:var(--card);stroke:var(--ink);stroke-width:1.5px;stroke-linejoin:round}.crest-door{fill:var(--red)}.crest-mast{stroke:var(--ink);stroke-width:1.4px;stroke-linecap:round}@keyframes crest-spin{to{transform:rotate(360deg)}}.tt-brandtext h1{letter-spacing:-.035em;font-variation-settings:"opsz" 40;margin:0;font-size:21px;font-weight:800;line-height:1}.tt-brandtext p{font-family:var(--font-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;margin:3px 0 0;font-size:8.5px}.tt-sep{opacity:.5}.tt-modebar{justify-content:center;display:flex}.tt-mode{border:1px solid var(--rule);background:var(--card);box-shadow:var(--shadow-card);border-radius:999px;align-items:center;gap:9px;padding:6px 14px 6px 11px;transition:border-color .2s,background .2s;display:inline-flex}.tt-mode-dot{background:var(--ink-3);border-radius:50%;width:8px;height:8px;transition:background .2s,box-shadow .2s;box-shadow:0 0 0 3px #8a90992e}.tt-mode-label{letter-spacing:-.01em;font-size:12.5px;font-weight:700}.tt-mode-hint{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.04em;font-size:9.5px}.tt-mode[data-mode=plop]{background:#fff6f3;border-color:#e2523b80}.tt-mode[data-mode=plop] .tt-mode-dot{background:var(--red);animation:1s ease-in-out infinite pulse-dot;box-shadow:0 0 0 3px #e2523b33}.tt-mode[data-mode=zone]{background:#f0fbfa;border-color:#12aea680}.tt-mode[data-mode=zone] .tt-mode-dot{background:var(--teal);animation:1s ease-in-out infinite pulse-dot;box-shadow:0 0 0 3px #12aea633}@keyframes pulse-dot{50%{transform:scale(1.45)}}.tt-topright{align-items:center;gap:12px;display:flex}.tt-census{gap:2px;display:flex}.tt-census-cell{text-align:center;border-left:1px solid var(--rule-soft);min-width:62px;padding:4px 10px}.tt-census-cell:first-child{border-left:none}.tt-census-cell b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:17px;font-weight:700;line-height:1.05;display:block}.tt-census-cell label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:2px;font-size:8px;display:block}.tt-stamp{min-width:116px;color:var(--ink-3);background:#ffffff73;border:2px solid;border-radius:6px;place-items:center;gap:1px;padding:6px 12px;display:grid;position:relative;transform:rotate(-2.5deg)}.tt-stamp:after{content:"";opacity:.55;border:1px dashed;border-radius:3px;position:absolute;inset:2px}.tt-stamp-score{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:15px;font-weight:700;line-height:1}.tt-stamp-label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;font-size:7.5px}.tt-stamp[data-tier=good]{color:var(--green)}.tt-stamp[data-tier=great]{color:var(--teal)}.tt-stamp[data-tier=ok]{color:var(--yellow)}.tt-stamp[data-tier=bad]{color:var(--red)}.tt-stamp.is-stamping{animation:.45s cubic-bezier(.2,1.5,.4,1) stamp-in}@keyframes stamp-in{0%{opacity:.15;transform:rotate(-14deg)scale(1.7)}60%{opacity:1;transform:rotate(-2.5deg)scale(.94)}to{transform:rotate(-2.5deg)scale(1)}}.tt-iconbtn{border:1px solid var(--rule);background:var(--card);width:34px;height:34px;box-shadow:var(--shadow-card);cursor:pointer;border-radius:9px;place-items:center;font-size:15px;transition:transform .12s,box-shadow .12s;display:grid}.tt-iconbtn:hover{transform:translateY(-1px)}.tt-iconbtn:active{transform:translateY(1px)scale(.96)}.tt-iconbtn[aria-pressed=false]{opacity:.5}.tt-main{grid-template-columns:254px minmax(0,1fr) 306px;gap:14px;min-height:0;padding:14px;display:grid}.tt-rail{flex-direction:column;gap:12px;min-height:0;display:flex}.tt-panel{border:1px solid var(--rule);background:var(--card);box-shadow:var(--shadow-card);border-radius:12px;flex-direction:column;min-height:0;padding:11px 12px 13px;display:flex}.tt-panel-grow{flex:1;min-height:0}.tt-panel-title{border-bottom:1px solid var(--rule-soft);font-family:var(--font-mono);letter-spacing:.17em;text-transform:uppercase;color:var(--ink-2);justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 10px;padding-bottom:7px;font-size:9.5px;font-weight:700;display:flex}.tt-panel-title>span:first-child{white-space:nowrap}.tt-panel-note{letter-spacing:.08em;color:var(--ink-3);text-transform:none;text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:0 auto;font-size:8.5px;font-weight:400;overflow:hidden}.tt-catalog{scrollbar-width:thin;flex:1;min-height:0;margin:-2px -4px -4px;padding:2px 4px 10px;overflow:hidden auto;-webkit-mask-image:linear-gradient(#000 0 calc(100% - 26px),#0000 100%);mask-image:linear-gradient(#000 0 calc(100% - 26px),#0000 100%)}.tt-cat-group{margin-bottom:12px}.tt-cat-head{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:6px;margin-bottom:6px;font-size:8.5px;display:flex}.tt-cat-head:after{content:"";background:repeating-linear-gradient(90deg, var(--rule) 0 3px, transparent 3px 6px);flex:1;height:1px}.tt-cards{grid-template-columns:1fr 1fr;gap:7px;display:grid}.tt-card{border:1px solid var(--rule);background:linear-gradient(180deg, #fff, var(--card-2));box-shadow:var(--shadow-card);cursor:pointer;text-align:left;border-radius:9px;grid-template-rows:auto auto auto;gap:2px;padding:9px 8px 8px;transition:transform .15s cubic-bezier(.2,1.3,.4,1),box-shadow .15s,border-color .15s;display:grid;position:relative}.tt-card:hover{box-shadow:var(--shadow-pop);border-color:#191c1f40;transform:translateY(-2.5px)}.tt-card:active{transition-duration:60ms;transform:translateY(0)scale(.965)}.tt-card-art{place-items:center;height:46px;display:grid;overflow:hidden}.tt-card-art svg{width:auto;max-width:100%;height:46px;display:block}.tt-card:hover .tt-card-art svg{animation:.5s cubic-bezier(.25,1.4,.4,1) card-hop}@keyframes card-hop{40%{transform:translateY(-3px)rotate(-2deg)}}.tt-card-name{letter-spacing:-.015em;font-size:11.5px;font-weight:700;line-height:1.1}.tt-card-hint{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-3);text-transform:uppercase;font-size:7.5px}.tt-card.is-armed{border-color:var(--ink);box-shadow:var(--shadow-pop), 0 0 0 2px #191c1f1a;background:#fff}.tt-card.is-armed:before{content:"armed";background:var(--ink);color:#fff;font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;border-radius:4px;padding:1px 5px;font-size:7px;animation:.25s cubic-bezier(.2,1.6,.4,1) chip-in;position:absolute;top:-7px;right:-5px}@keyframes chip-in{0%{opacity:0;transform:scale(.4)rotate(-12deg)}}.tt-card.is-armed:after{content:"";border:1.5px dashed #191c1f66;border-radius:12px;animation:8s linear infinite dash-march;position:absolute;inset:-4px}@keyframes dash-march{to{stroke-dashoffset:100px;background-position:60px 0}}.tt-decals{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.tt-decal{aspect-ratio:1;border:1px dashed var(--rule);background:var(--card-2);cursor:pointer;border-radius:9px;place-items:center;font-size:19px;transition:transform .16s cubic-bezier(.2,1.5,.4,1),background .16s,border-color .16s;display:grid}.tt-decal:hover{border-color:var(--ink-3);background:#fff;transform:translateY(-2px)rotate(-5deg)scale(1.1)}.tt-decal:active{transform:scale(.9)}.tt-decal.is-armed{border:1.5px solid var(--ink);box-shadow:var(--shadow-pop);background:#fff;transform:translateY(-2px)scale(1.06)}.tt-tip{border:1px dashed var(--rule);background:repeating-linear-gradient(45deg,#f0b12b12 0 7px,#0000 7px 14px);border-radius:9px;flex:none;gap:7px;margin-top:9px;padding:8px 9px;display:flex}.tt-tip i{font-size:12px;font-style:normal;line-height:1.3}.tt-tip p{color:var(--ink-2);margin:0;font-size:10.5px;line-height:1.42;animation:.45s tip-in}.tt-tip kbd{font-family:var(--font-mono);background:#191c1f17;border-radius:3px;padding:0 3px;font-size:8.5px}@keyframes tip-in{0%{opacity:0;transform:translateY(4px)}}.tt-meters{flex-direction:column;gap:9px;display:flex}.tt-meter-row{grid-template-columns:54px 1fr 30px;align-items:center;gap:7px;display:grid}.tt-meter-name{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);font-size:8.5px}.tt-meter-track{border:1px solid var(--rule);background:repeating-linear-gradient(90deg,#191c1f21 0 1px,#0000 1px 10%);border-radius:3px;height:11px;position:relative;overflow:hidden}.tt-meter-fill{background:var(--m-color,var(--teal));background-image:linear-gradient(115deg,#ffffff59 0 22%,#0000 22% 50%,#ffffff59 50% 72%,#0000 72%);background-size:16px 100%;border-radius:2px;width:0%;transition:width .55s cubic-bezier(.2,1.2,.35,1);animation:1.1s linear infinite stripe-flow;position:absolute;inset:0 auto 0 0}@keyframes stripe-flow{to{background-position:16px 0}}.tt-meter-val{font-family:var(--font-mono);text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-2);font-size:10px;font-weight:700}.tt-meter-row.is-bumped .tt-meter-val{animation:.4s cubic-bezier(.2,1.6,.4,1) val-bump}@keyframes val-bump{40%{color:var(--ink);transform:scale(1.35)}}.tt-stagewrap{flex-direction:column;gap:12px;min-width:0;min-height:0;display:flex}.tt-stage{border-radius:14px;flex:1;min-height:0;position:relative;overflow:hidden}.tt-board{border:1px solid var(--rule);background:radial-gradient(120% 100% at 50% 0%, #efeade 0%, var(--desk) 78%, #c9c2b0 100%);border-radius:14px;position:absolute;inset:0;overflow:hidden;box-shadow:inset 0 1px #ffffffb3,inset 0 -30px 60px -40px #191c1f8c}.tt-canvashost{position:absolute;inset:0}.tt-canvashost canvas,.tt-canvashost>*{width:100%;height:100%;display:block}.tt-plane{transform-origin:0 0;pointer-events:none;width:1200px;height:800px;position:absolute;top:0;left:0}.tt-site{pointer-events:none;position:absolute;inset:0}.tt-site .c{width:calc(15px * var(--inv,1));height:calc(15px * var(--inv,1));border:calc(1.5px * var(--inv,1)) solid #191c1f6b;position:absolute}.tt-site .tl{top:calc(-7px * var(--inv,1));left:calc(-7px * var(--inv,1));border-bottom:none;border-right:none}.tt-site .tr{top:calc(-7px * var(--inv,1));right:calc(-7px * var(--inv,1));border-bottom:none;border-left:none}.tt-site .bl{bottom:calc(-7px * var(--inv,1));left:calc(-7px * var(--inv,1));border-top:none;border-right:none}.tt-site .br{bottom:calc(-7px * var(--inv,1));right:calc(-7px * var(--inv,1));border-top:none;border-left:none}.tt-site .dim{transform:translateY(150%) scale(var(--inv,1));transform-origin:0 0;font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:#191c1f6b;white-space:nowrap;font-size:8.5px;position:absolute;bottom:0;left:0}.tt-firstlot[hidden]{display:none}.tt-firstlot{transform:translate(-50%, -50%) scale(var(--inv,1));color:#191c1f66;text-align:center;pointer-events:none;border:1.5px dashed #191c1f38;border-radius:14px;justify-items:center;gap:3px;padding:20px 26px;animation:3.4s ease-in-out infinite firstlot-breathe;display:grid;position:absolute;top:50%;left:50%}.tt-firstlot svg{width:64px;height:44px;margin-bottom:4px}.tt-firstlot b{letter-spacing:-.02em;color:#191c1f8c;font-size:15px;font-weight:800}.tt-firstlot span{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;font-size:9px}@keyframes firstlot-breathe{50%{opacity:.55}}.tt-roads{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.tt-roads.is-off{opacity:0}.road-base{fill:none;stroke:#f0ece0d9;stroke-linecap:round;stroke-linejoin:round}.road-line{fill:none;stroke:#191c1f66;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:14 16;animation:2.4s linear infinite road-flow}@keyframes road-flow{to{stroke-dashoffset:-30px}}.road-node{fill:#191c1f47}.tt-zones{position:absolute;inset:0}.tt-zone{border-radius:calc(7px * var(--inv,1));border:calc(2px * var(--inv,1)) dashed var(--z-color,var(--teal));background:color-mix(in srgb, var(--z-color,var(--teal)) 14%, transparent);animation:.42s cubic-bezier(.2,1.4,.4,1) zone-settle;position:absolute;box-shadow:inset 0 0 0 1px #fff6}@keyframes zone-settle{0%{opacity:0;transform:scale(1.06)}55%{opacity:1}}.tt-zone.is-draft{border-style:solid;border-width:2px;animation:none}.tt-zone-tag{transform:translateY(-100%) scale(var(--inv,1));transform-origin:0 100%;background:var(--z-color,var(--teal));color:#fff;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;pointer-events:auto;cursor:pointer;border-radius:5px 5px 5px 0;align-items:center;gap:4px;padding:2px 6px;font-size:8.5px;display:flex;position:absolute;top:0;left:0;box-shadow:0 3px 6px -3px #191c1f99}.tt-zone-tag:hover{filter:brightness(1.08)}.tt-zone-tag b{font-weight:700}.tt-zone-tag span{opacity:.75;font-size:9px}.tt-zone-count{transform:scale(var(--inv,1)) translate(-5px, -4px);transform-origin:100% 100%;font-family:var(--font-mono);letter-spacing:.08em;color:color-mix(in srgb, var(--z-color,var(--teal)) 70%, var(--ink));text-transform:uppercase;font-size:8px;position:absolute;bottom:0;right:0}.tt-fx{pointer-events:none;position:absolute;inset:0;overflow:hidden}.tt-ripple{border:2px solid var(--fx-color,#fff);border-radius:50%;width:12px;height:12px;margin:-6px 0 0 -6px;animation:.62s cubic-bezier(.15,.8,.3,1) forwards ripple-out;position:absolute}@keyframes ripple-out{to{opacity:0;border-width:.4px;transform:scale(9)}}.tt-dust{background:var(--fx-color,#fff);border-radius:50%;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;animation:.6s ease-out forwards dust-fly;position:absolute}@keyframes dust-fly{to{transform:translate(var(--dx), var(--dy)) scale(.2);opacity:0}}.tt-fxlabel{background:var(--ink);color:#fff;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;border-radius:6px;padding:3px 8px;font-size:9px;animation:.9s cubic-bezier(.2,1,.3,1) forwards fxlabel-up;position:absolute;transform:translate(-50%,-50%)}@keyframes fxlabel-up{0%{opacity:0;transform:translate(-50%,-30%)scale(.7)}25%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-160%)scale(1)}}.tt-vignette{pointer-events:none;background:radial-gradient(115% 85% at 50% 45%,#0000 42%,#191c1f47 100%);border-radius:14px;position:absolute;inset:0}.tt-scanline{pointer-events:none;opacity:.25;background:repeating-linear-gradient(0deg,#ffffff14 0 1px,#0000 1px 3px);position:absolute;inset:0}.tt-board.is-armed{cursor:none}.tt-board.is-zoning{cursor:crosshair}.tt-board.is-armed .tt-plane,.tt-board.is-zoning .tt-plane{pointer-events:none}.tt-capture{z-index:5;position:absolute;inset:0}.tt-crosshair{pointer-events:none;z-index:4;position:absolute;inset:0}.tt-crosshair-x,.tt-crosshair-y{background:repeating-linear-gradient(var(--dir,0deg), #191c1f59 0 5px, transparent 5px 10px);position:absolute}.tt-crosshair-x{height:1px;left:0;right:0;top:var(--cy,50%);--dir:90deg}.tt-crosshair-y{width:1px;top:0;bottom:0;left:var(--cx,50%)}.tt-townhall{scrollbar-width:none;border:1px solid var(--rule);background:linear-gradient(180deg, #fff, var(--card-2));box-shadow:var(--shadow-card);border-radius:12px;flex:none;align-items:center;gap:5px;padding:8px 9px;display:flex;overflow-x:auto}.tt-th-group{border-right:1px solid var(--rule-soft);flex:none;align-items:center;gap:4px;padding-right:7px;display:flex}.tt-th-group:last-child{border-right:none;padding-right:0}.tt-th-spacer{flex:1}.tt-btn{border:1px solid var(--rule);background:var(--card);letter-spacing:-.01em;white-space:nowrap;cursor:pointer;border-radius:9px;flex:none;align-items:center;gap:5px;padding:7px 9px;font-size:11px;font-weight:700;transition:transform .1s,box-shadow .1s,background .15s,opacity .15s;display:inline-flex;position:relative;box-shadow:inset 0 1px #ffffffe6,0 2px #191c1f1a}.tt-btn .glyph{font-size:13px;line-height:1}.tt-btn.is-icon{padding:7px 10px}.tt-btn.is-icon .glyph{text-align:center;width:12px;font-size:15px;font-weight:700}.tt-btn kbd{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.06em;background:#191c1f14;border-radius:3px;padding:1px 3px;font-size:7.5px}.tt-btn:hover:not(:disabled){background:#fff;transform:translateY(-1px)}.tt-btn:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 1px #ffffffe6,0 0 #191c1f1a}.tt-btn:disabled{opacity:.35;cursor:not-allowed}.tt-btn.is-toggle[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.tt-btn.is-toggle[aria-pressed=true] kbd{color:#ffffffbf;background:#fff3}.tt-btn.is-danger:hover:not(:disabled){color:var(--red);background:#fff2ef;border-color:#e2523b8c}.tt-btn.is-primary{background:linear-gradient(180deg, var(--red), #cf4630);color:#fff;border-color:#b93d29;box-shadow:inset 0 1px #ffffff59,0 3px #a03623}.tt-btn.is-primary:hover:not(:disabled){filter:brightness(1.03);background:linear-gradient(#e75f48,#d24a34)}.tt-btn.is-primary kbd{color:#ffffffd9;background:#ffffff38}.tt-btn.is-primary.is-busy{animation:.9s ease-in-out infinite btn-busy}@keyframes btn-busy{50%{filter:brightness(1.18)}}.tt-zoomreadout{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-3);text-align:center;font-variant-numeric:tabular-nums;min-width:36px;font-size:9.5px}.tt-permit{scrollbar-width:thin;flex:1;min-height:0;margin:-2px -4px -4px;padding:2px 4px 4px;overflow-y:auto}.tt-empty{text-align:center;border:1px dashed var(--rule);background:repeating-linear-gradient(45deg,#191c1f05 0 6px,#0000 6px 12px);border-radius:10px;place-items:center;gap:8px;padding:26px 12px;display:grid}.tt-empty svg{width:62px;height:46px}.tt-empty p{color:var(--ink-2);max-width:210px;margin:0;font-size:11.5px;line-height:1.45}.tt-empty b{color:var(--ink);font-weight:700}.tt-permit-head{border:1px solid var(--rule);background:var(--card-2);border-radius:9px;align-items:center;gap:9px;margin-bottom:11px;padding:8px 9px;display:flex}.tt-permit-swatch{border:1px solid #191c1f33;border-radius:7px;flex:none;width:30px;height:30px;box-shadow:inset 0 -6px 10px -8px #0009}.tt-permit-id b{letter-spacing:-.02em;font-size:13px;font-weight:700;display:block}.tt-permit-id span{font-family:var(--font-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);font-size:8px}.tt-field{margin-bottom:12px}.tt-field-head{justify-content:space-between;align-items:baseline;margin-bottom:5px;display:flex}.tt-field-label{font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2);font-size:8.5px}.tt-field-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);font-size:9.5px;font-weight:700}.tt-swatches{grid-template-columns:repeat(8,1fr);gap:5px;display:grid}.tt-swatch{aspect-ratio:1;cursor:pointer;border:1px solid #191c1f2e;border-radius:6px;padding:0;transition:transform .15s cubic-bezier(.2,1.6,.4,1),box-shadow .15s;box-shadow:inset 0 -5px 8px -7px #000c}.tt-swatch:hover{transform:translateY(-3px)scale(1.12);box-shadow:0 5px 9px -5px #191c1fb3}.tt-swatch:active{transform:scale(.88)}.tt-swatch.is-on{box-shadow:0 0 0 2px var(--card), 0 0 0 3.5px var(--ink);transform:translateY(-2px)}.tt-range{align-items:center;height:26px;display:flex;position:relative}.tt-range:before{content:"";pointer-events:none;background:repeating-linear-gradient(90deg,#191c1f38 0 1px,#0000 1px 12.5%);height:7px;position:absolute;top:4px;left:2px;right:2px}input[type=range]{appearance:none;cursor:ew-resize;background:0 0;width:100%;height:26px;margin:0}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--r-color,var(--ink)) var(--r-pct,50%), #191c1f24 var(--r-pct,50%));border-radius:2px;height:4px;margin-top:12px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:linear-gradient(180deg, #fff 0 45%, var(--card-2) 45% 100%);border:1px solid #191c1f8c;border-radius:4px;width:15px;height:20px;margin-top:-8px;transition:transform .12s;box-shadow:0 2px 4px -2px #191c1fcc}input[type=range]:hover::-webkit-slider-thumb{transform:scaleY(1.14)}input[type=range]:active::-webkit-slider-thumb{background:linear-gradient(#fff 0 45%,#e6e0d2 45% 100%);transform:scale(.92)}.tt-seg{gap:4px;display:flex}.tt-seg button{border:1px solid var(--rule);background:var(--card);font-family:var(--font-mono);cursor:pointer;border-radius:7px;flex:1;padding:6px 0;font-size:9.5px;transition:transform .12s,background .15s}.tt-seg button:hover{background:#fff;transform:translateY(-1px)}.tt-seg button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.tt-permit-actions{grid-template-columns:1fr 1fr;gap:6px;margin-top:4px;display:grid}.tt-ordinances{gap:6px;display:grid}.tt-ord{border:1px solid var(--rule);background:var(--card);cursor:pointer;text-align:left;border-radius:9px;grid-template-columns:26px 1fr auto;align-items:center;gap:9px;padding:7px 9px;transition:transform .14s,box-shadow .14s,border-color .14s;display:grid}.tt-ord:hover{box-shadow:var(--shadow-pop);transform:translate(2px)}.tt-ord-chip{background:color-mix(in srgb, var(--o-color) 20%, #fff);border:1px solid color-mix(in srgb, var(--o-color) 55%, transparent);border-radius:7px;place-items:center;width:26px;height:26px;font-size:13px;display:grid}.tt-ord-name{letter-spacing:-.015em;font-size:12px;font-weight:700;line-height:1.15}.tt-ord-rule{font-family:var(--font-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-size:7.5px}.tt-ord-go{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);border:1px dashed var(--rule);border-radius:5px;padding:3px 6px;font-size:8px}.tt-ord.is-on{border-color:var(--o-color);box-shadow:0 0 0 2px color-mix(in srgb, var(--o-color) 22%, transparent)}.tt-ord.is-on .tt-ord-go{background:var(--o-color);border-color:var(--o-color);color:#fff}.tt-districtlist{gap:4px;margin-top:9px;display:grid}.tt-district{background:var(--card-2);font-family:var(--font-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);border-radius:7px;align-items:center;gap:7px;padding:4px 7px;font-size:8.5px;animation:.3s cubic-bezier(.2,1.5,.4,1) chip-in;display:flex}.tt-district i{background:var(--d-color);border-radius:2px;flex:none;width:9px;height:9px}.tt-district span{color:var(--ink-3);margin-left:auto}.tt-district button{cursor:pointer;color:var(--ink-3);background:0 0;border:none;padding:0 1px;font-size:11px;line-height:1}.tt-district button:hover{color:var(--red)}.tt-ghost{z-index:60;pointer-events:none;will-change:transform;place-items:center;display:grid;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}.tt-ghost-body{filter:drop-shadow(0 8px 10px #191c1f59);place-items:center;animation:1.5s ease-in-out infinite ghost-bob;display:grid}@keyframes ghost-bob{50%{transform:translateY(-4px)}}.tt-ghost-shadow{filter:blur(2px);background:#191c1f4d;border-radius:50%;width:26px;height:7px;animation:1.5s ease-in-out infinite ghost-shadow;position:absolute;bottom:-14px}@keyframes ghost-shadow{50%{opacity:.65;transform:scale(.78)}}.tt-ghost-tag{background:var(--ink);color:#fff;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;border-radius:5px;padding:2px 6px;font-size:8px;position:absolute;top:26px}.tt-notices{z-index:50;pointer-events:none;flex-direction:column-reverse;align-items:flex-start;gap:6px;max-width:340px;display:flex;position:fixed;bottom:96px;left:282px}.tt-notice{border:1px solid var(--rule);box-shadow:var(--shadow-pop);letter-spacing:-.01em;background:#fbfaf7f7;border-radius:9px;align-items:center;gap:8px;padding:7px 13px 7px 10px;font-size:11.5px;font-weight:600;animation:.34s cubic-bezier(.2,1.4,.4,1) notice-in;display:flex}.tt-notice.is-out{animation:.3s ease-in forwards notice-out}.tt-notice i{font-size:14px;font-style:normal}.tt-notice em{font-style:normal;font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);font-size:8.5px}@keyframes notice-in{0%{opacity:0;transform:translate(-10px,8px)scale(.94)}}@keyframes notice-out{to{opacity:0;transform:translateY(-6px)scale(.97)}}.tt-boot{z-index:90;background:var(--paper);place-items:center;transition:opacity .5s,visibility .5s;display:grid;position:fixed;inset:0}.tt-boot.is-done{opacity:0;visibility:hidden}.tt-boot-inner{text-align:center}.tt-boot-art{width:190px;height:142px}.tt-boot-art .bl{stroke:var(--ink);stroke-width:1.4px;stroke-dasharray:4 4}.tt-boot-art .bh,.tt-boot-art .bh2{fill:var(--card);stroke:var(--ink);stroke-width:1.6px;stroke-linejoin:round;transform-origin:50% 70px;animation:1.6s cubic-bezier(.2,1.3,.4,1) infinite boot-rise}.tt-boot-art .bh2{animation-delay:.25s}.tt-boot-art .bd{fill:var(--red);transform-origin:50% 70px;animation:1.6s cubic-bezier(.2,1.3,.4,1) .45s infinite boot-rise}@keyframes boot-rise{0%,70%,to{transform:scaleY(1)}35%{transform:scaleY(1.1)translateY(-3px)}}.tt-boot-title{letter-spacing:-.03em;margin:4px 0 2px;font-size:17px;font-weight:800}.tt-boot-sub{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin:0;font-size:9px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
