/* Street Parking Hacks — answer-first panel v4.
   Neo-brutalist surface (2px navy borders, hard offset shadows, flat fills)
   on the Google-Maps place-card structure. Tokens from the production site:
   navy #132d3d, cream #fff7e0, yellow #ffd33f, action #1f4a68. */
body.ns-on #carchip{display:none!important}
body.ns-on:not(.ns-lot-on) #cardbody>*:not(#ns-root){display:none!important}
body.ns-on #cardbody{padding:2px 16px calc(18px + env(safe-area-inset-bottom) + var(--composer-height,0px))}
#ns-root{color:#202124;font-family:inherit;line-height:1.45}
#ns-root *{box-sizing:border-box}
#ns-root button{font-family:inherit}

/* header */
.ns-head{padding:12px 40px 0 0}
.ns-street{margin:0;font-size:19px;line-height:1.2;font-weight:850;color:#132d3d;letter-spacing:-.01em}
.ns-provenance{display:block;margin-top:3px;color:#80868b;font-size:11px;font-weight:600}

/* verdict — status chip + heavy deadline */
.ns-hero{padding:14px 0 16px}
.ns-kicker{margin-bottom:8px;font-size:10.5px;font-weight:850;letter-spacing:.09em;text-transform:uppercase;color:#5c6166}
.ns-verdict{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:5px 12px;border:2px solid #132d3d;border-radius:999px;box-shadow:2px 2px 0 #132d3d;font-size:13px;font-weight:850;color:#132d3d}
.ns-hero.ok .ns-verdict{background:#9fe3ae}
.ns-hero.no .ns-verdict{background:#ffb3ab}
.ns-hero.warn .ns-verdict{background:#ffd33f}
.ns-verdict svg{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}
.ns-deadline{margin-top:9px;font-size:31px;line-height:1.05;font-weight:850;color:#132d3d;letter-spacing:-.025em}
.ns-next{margin:12px 0 0;font-size:13px;font-weight:750;color:#202124}
.ns-enforcement-note{margin:7px 0 0;padding:8px 10px;border:1px solid #c69618;border-radius:8px;background:#fff7d6;font-size:12px;font-weight:700;line-height:1.45;color:#6b4a00}
.ns-tail{margin:3px 0 0;font-size:12px;font-weight:550;color:#5c6166}
.ns-unknown{margin:0 0 18px;padding:13px 14px;border:2px dashed #9a6b00;border-radius:10px;background:#fff1b8;color:#132d3d}
.ns-unknown>span{display:block;font-size:10.5px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:#7a5200}
.ns-unknown strong{display:block;margin-top:5px;font-size:14.5px;font-weight:850;line-height:1.35}
.ns-unknown p{margin:4px 0 0;font-size:12.5px;font-weight:600;line-height:1.5;color:#57430a}

/* timeline — option D gauge card: frame + legend + hour ticks */
.ns-timeline{margin-top:12px;border:2px solid #132d3d;border-radius:10px;background:#fff;padding:9px 11px 7px}
.tl-cap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:3px 10px;margin-bottom:7px}
.tl-cap b{font-size:10px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:#5c6166}
.tl-cap i{font-style:normal;font-size:10.5px;font-weight:800;color:#b3261e;white-space:nowrap}
.tl-bar{height:12px;border:2px solid #132d3d;border-radius:6px;background:#fff;overflow:hidden}
.tl-plot{display:block;width:100%;height:100%}
.tl-block{fill:#e5493d}
.tl-tick{stroke:rgba(19,45,61,.28);stroke-width:1.5;vector-effect:non-scaling-stroke}
.tl-hours{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));height:auto;margin-top:4px;font-size:9.5px;font-weight:750;color:#5c6166}
.tl-hours span{min-width:0;text-align:center;white-space:nowrap}
.tl-hours span:nth-child(1){justify-self:start}
.tl-hours span:nth-child(5){justify-self:end}

/* context rows — stacked brutalist cards, Google-Maps row anatomy */
.ns-context{display:grid;gap:10px;padding:0 0 16px}
.ns-rows{display:grid;gap:10px}
.ns-row{display:flex;align-items:center;gap:11px;width:100%;min-height:52px;padding:8px 12px;border:2px solid #132d3d;border-radius:10px;background:#fff;box-shadow:3px 3px 0 #132d3d;text-align:left;cursor:pointer;color:#132d3d;font-size:13.5px;font-weight:750}
.ns-row.overnight{background:#ffd33f}
.ns-row .ric{flex:none;width:20px;height:20px}
.ns-row .ric svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ns-row .rtxt{flex:1;min-width:0}
.ns-row .rtxt small{display:block;font-size:11px;font-weight:650;color:#4c5358}
.ns-row.overnight .rtxt small{color:#57430a}
.ns-decision{align-items:flex-start;min-height:76px}
.ns-decision .ric{margin-top:3px}
.ns-decision .rtxt small{font-size:12px;font-weight:750;color:#5c6166;line-height:1.35}
.ns-decision .rtxt strong{display:block;margin-top:2px;font-size:15.5px;font-weight:850;line-height:1.3;color:#132d3d}
.ns-decision .rtxt>span{display:block;margin-top:3px;font-size:12.5px;font-weight:600;line-height:1.4;color:#4c5358}
.ns-decision.overnight .rtxt small,.ns-decision.overnight .rtxt>span{color:#57430a}
.ns-row .chev{flex:none;width:16px;height:16px}
.ns-row .chev svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.ns-row:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 #132d3d}
.ns-row:active{transform:translate(1px,1px);box-shadow:2px 2px 0 #132d3d}
.ns-row:focus-visible{outline:3px solid #1f4a68;outline-offset:2px}

/* location utilities — Google-Maps circles, brutalist skin */
.ns-utilities{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px 0;border-top:2px solid #132d3d}
.ns-util{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:70px;border:0;background:none;cursor:pointer;text-decoration:none;padding:2px}
.ns-util .uic{width:46px;height:46px;border-radius:50%;border:2px solid #132d3d;background:#fff;box-shadow:2.5px 2.5px 0 #132d3d;display:grid;place-items:center}
.ns-util svg{width:19px;height:19px;fill:none;stroke:#132d3d;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.ns-util span{font-size:11.5px;font-weight:800;color:#132d3d}
.ns-util:hover .uic{transform:translate(-1px,-1px);box-shadow:3.5px 3.5px 0 #132d3d;background:#fff7e0}
.ns-util:active .uic{transform:translate(1px,1px);box-shadow:1.5px 1.5px 0 #132d3d}
.ns-util:focus-visible{outline:3px solid #1f4a68;outline-offset:2px;border-radius:12px}

/* plan mode (overnight / custom) */
.ns-plan-row-head{display:flex;align-items:center;gap:10px;margin:0}
.ns-leaving-label{font-size:13px;font-weight:800;color:#132d3d}
#ns-leaving{min-height:42px;border:2px solid #132d3d;border-radius:9px;background:#fff;color:#132d3d;padding:6px 8px;font-size:14px;font-weight:750;font-family:inherit}
.ns-quiet{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;border:1.5px solid #132d3d;border-radius:9px;background:#fff7e0;padding:8px 12px;color:#1f4a68;font-size:12.5px;font-weight:800;text-decoration:none;white-space:nowrap;cursor:pointer;box-shadow:none}
.ns-quiet svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.ns-quiet:hover{background:#fff3bf}
.ns-quiet:active{background:#ffe899}
.ns-quiet:focus-visible{outline:3px solid #1f4a68;outline-offset:2px}
.ns-quiet.danger{border-color:#b3261e;background:#fff5f3;color:#b3261e}
.ns-quiet.danger:hover{background:#ffe8e4}
.ns-plan-row-head .ns-quiet{margin-left:auto}
.ns-solutions{display:grid;gap:10px;margin:0}
.ns-solution{display:flex;flex-direction:column;gap:1px;min-height:52px;padding:9px 12px;border:2px solid #132d3d;border-radius:10px;background:#fff;box-shadow:3px 3px 0 #132d3d;text-align:left;text-decoration:none;cursor:pointer}
.ns-solution strong{font-size:13.5px;font-weight:850;color:#132d3d}
.ns-solution span{font-size:11.5px;font-weight:600;color:#4c5358}
.ns-solution.primary{background:#132d3d}
.ns-solution.primary strong{color:#ffd33f}.ns-solution.primary span{color:#cdd6dc}
.ns-solution:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 #132d3d}
.ns-solution:active{transform:translate(1px,1px);box-shadow:2px 2px 0 #132d3d}
.ns-solution:focus-visible{outline:3px solid #1f4a68;outline-offset:2px}
.ns-nearby-results[hidden]{display:none}
.ns-nearby-results{display:grid;gap:10px}
/* Nearby results are follow-up options, so they read as a quieter nested
   list: indented, hairline-bordered, and without the primary card shadow. */
.ns-nearby-results{padding-left:12px}
.ns-nearby-item{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px 10px;padding:9px 12px;border:1.5px solid #47555e;border-radius:9px;background:#fdfaf1;box-shadow:none;text-align:left}
.ns-nearby-pick{display:grid;gap:1px;min-width:0;margin:0;padding:0;border:0;background:none;text-align:left;cursor:pointer;font:inherit}
.ns-nearby-item strong{color:#132d3d;font-size:13.5px;font-weight:850}
.ns-nearby-item span{color:#4c5358;font-size:11.5px;font-weight:600}
.ns-nearby-item b{grid-row:1;grid-column:2;align-self:center;padding:3px 8px;border:2px solid #132d3d;border-radius:999px;background:#9fe3ae;color:#132d3d;font-size:10.5px;font-weight:850}
.ns-nearby-item b.no{background:#ffb3ab}
.ns-nearby-item:hover{background:#fbf4df}
.ns-nearby-go{grid-column:1/-1;display:inline-flex;align-items:center;gap:7px;min-height:44px;margin-top:2px;padding:0 2px;color:#1f4a68;font-size:12.5px;font-weight:800;text-decoration:none}
.ns-nearby-go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.ns-nearby-go:hover span{text-decoration:underline}
.ns-nearby-go:focus-visible{outline:3px solid #1f4a68;outline-offset:2px;border-radius:8px}

/* parking session */
.ns-session-launch{padding:16px 0 0;border-top:2px solid #132d3d}
.ns-session[hidden]{display:none}
.ns-button{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:10px 12px;border:2px solid #132d3d;border-radius:10px;background:#fff;box-shadow:3px 3px 0 #132d3d;color:#132d3d;font-size:14px;font-weight:850;cursor:pointer;font-family:inherit}
.ns-button.primary{background:#132d3d;color:#ffd33f}
.ns-button.overnight{background:#ffd33f}
.ns-button:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 #132d3d}
.ns-button:active{transform:translate(1px,1px);box-shadow:2px 2px 0 #132d3d}
.ns-button:focus-visible{outline:3px solid #1f4a68;outline-offset:2px}
.ns-session.active{margin:16px 0 0;padding:13px 14px;border:2px solid #132d3d;border-radius:12px;background:#fff3bf;box-shadow:4px 4px 0 #132d3d}
.ns-session-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;align-items:start}
.ns-session-title{min-width:0}
.ns-session-kicker{display:block;font-size:10.5px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:#57430a}
.ns-session-street{display:block;margin-top:2px;font-size:15px;font-weight:850;color:#132d3d;overflow-wrap:anywhere}
.ns-session-age{grid-column:1;font-size:11.5px;font-weight:650;color:#57430a;align-self:center}
.ns-session-deadline{display:flex;align-items:center;gap:9px;margin-top:9px}
.ns-session-deadline svg{flex:none;width:20px;height:20px;fill:none;stroke:#132d3d;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.ns-session-deadline strong{display:block;font-size:17px;font-weight:850;color:#132d3d}
.ns-session-deadline span{font-size:12px;font-weight:800;color:#b3261e}
.ns-inline{display:flex;gap:8px;margin-top:11px}
.ns-inline .ns-button{flex:1;box-shadow:2px 2px 0 #132d3d}
.ns-note{margin:8px 0 0;font-size:11.5px;font-weight:550;color:#5f6368}
.ns-session.active .ns-note{color:#57430a}
.ns-confirm{margin:6px 0 0;font-size:12px;font-weight:800;color:#136b31}
.ns-confirm:empty{display:none}
.ns-reminders{margin-top:11px;padding-top:10px;border-top:2px solid rgba(19,45,61,.25)}
.ns-reminders-label{font-size:12.5px;font-weight:850;color:#132d3d}
.ns-reminder-options{display:flex;gap:7px;margin-top:8px}
.ns-reminder-options button{flex:1;min-height:44px;border:2px solid #132d3d;border-radius:999px;background:#fff;color:#132d3d;font-size:12.5px;font-weight:800;cursor:pointer;font-family:inherit;box-shadow:2px 2px 0 #132d3d}
.ns-reminder-options button:active{transform:translate(1px,1px);box-shadow:0 0 0 #132d3d}
.ns-reminder-options button[aria-pressed="true"]{background:#132d3d;color:#ffd33f}
.ns-reminder-disclaimer{display:flex;align-items:flex-start;gap:6px;margin:10px 0 0;color:#57430a;font-size:11.5px;font-weight:550;line-height:1.45}
.ns-reminder-disclaimer svg{flex:none;width:14px;height:14px;margin-top:1px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ns-push-slot{margin-top:12px;padding-top:12px;border-top:1px solid rgba(19,45,61,.25)}
.ns-push-slot[hidden]{display:none}
.ns-push-alert{gap:8px;box-shadow:2px 2px 0 #132d3d}
.ns-push-alert svg{flex:none;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ns-push-note{margin:8px 0 0;color:#57430a;font-size:11.5px;font-weight:550;line-height:1.45}
.ns-end-parking{grid-column:2;grid-row:1/3;align-self:start;min-height:44px;border:1.5px solid #132d3d;border-radius:8px;background:transparent;padding:7px 10px;color:#132d3d;font-size:12px;font-weight:800;cursor:pointer;font-family:inherit;box-shadow:none;white-space:nowrap}
.ns-end-parking:hover{background:#fff7e0}
.ns-end-parking:focus-visible{outline:3px solid #1f4a68;outline-offset:2px}
.ns-session.active+.ns-context{margin-top:28px;padding-top:24px;border-top:2px solid #132d3d}

/* Community evidence stays visibly separate from verified city rules. */
.ns-community{margin:16px 0 0;padding:14px 16px 16px;border:2px dashed #7a4a2a;border-radius:12px;background:#f4e5cc;box-shadow:none}
.ns-community-tag{font-size:10.5px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:#6a3e22}
.ns-community-boundary{display:block;margin-top:4px;font-size:11.5px;font-weight:650;line-height:1.45;color:#6a3e22}
.ns-community-line{display:block;margin-top:4px;font-size:12.5px;font-weight:800;color:#136b31}
.ns-community-line.stale{color:#43494e;font-weight:650}
.ns-review-signals{margin-top:10px;padding-top:8px;border-top:1px solid rgba(106,62,34,.32)}
.ns-review-signal{margin:0;padding:3px 0;color:#43494e;font-size:12.5px;font-weight:700;line-height:1.45}
.ns-review-signal.match{color:#275b37}.ns-review-signal.problem{color:#7a3a2a}
.ns-tip-list{margin-top:12px;padding-top:10px;border-top:1px solid rgba(106,62,34,.32)}
.ns-tip-label{display:block;margin-bottom:2px;color:#6a3e22;font-size:10.5px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}
.ns-tip-item{display:flex;justify-content:space-between;gap:10px;margin:0;padding:7px 0;border-bottom:1px solid rgba(106,62,34,.18);color:#202124;font-size:12.5px;font-weight:650;line-height:1.45}
.ns-tip-item:last-child{border-bottom:0}.ns-tip-item span{min-width:0;overflow-wrap:anywhere}.ns-tip-item time{flex:none;color:#5c6166;font-size:11px;font-weight:600}
.ns-binary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:13px}
.ns-binary>span{font-size:13px;font-weight:800;color:#202124}
.ns-binary>div{display:flex;gap:7px}
.ns-binary button{min-width:64px;min-height:44px;border:2px solid #132d3d;border-radius:999px;background:#fff;color:#132d3d;font-size:12.5px;font-weight:850;cursor:pointer;font-family:inherit;box-shadow:2px 2px 0 #132d3d}
.ns-binary button:active{transform:translate(1px,1px);box-shadow:0 0 0 #132d3d}
.ns-community-rows{margin-top:13px}
.ns-community-body[hidden]{display:none}
.ns-community.collapsed{padding:0;border:2px dashed #7a4a2a;background:#f8ecda;box-shadow:none}
.ns-community.collapsed[data-fresh="true"]{background:#f4e5cc}
.ns-community.collapsed .ns-community-body{padding:14px 16px 16px;border-top:1px dashed #9b6b4c}
.ns-community-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:58px;border:0;border-radius:11px;background:transparent;padding:10px 13px;color:#132d3d;text-align:left;cursor:pointer;font-family:inherit}
.ns-community-toggle strong{display:block;font-size:14px;font-weight:850;line-height:1.3}
.ns-community-toggle small{display:block;margin-top:3px;color:#5c6166;font-size:12px;font-weight:600;line-height:1.4}
.ns-community-toggle>svg{flex:none;width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.ns-community-toggle[aria-expanded="true"]>svg{transform:rotate(180deg)}

/* feedback — confirm / correct / temporary update */
.ns-feedback-wrap{margin-top:20px;padding-top:18px;border-top:2px solid #132d3d}
.ns-feedback-wrap.contained{margin:0;padding:0;border:0}
.ns-feedback-title{margin:0 0 12px;color:#132d3d;font-size:16px;font-weight:850;line-height:1.35}
.ns-feedback{min-height:66px;box-shadow:2px 2px 0 #132d3d}
.ns-feedback .ric{display:grid;place-items:center;width:32px;height:32px;border:1.5px solid currentColor;border-radius:50%}
.ns-feedback .ric svg{width:17px;height:17px}
.ns-feedback .rtxt strong{display:block;font-size:14.5px;font-weight:850;line-height:1.3;color:#132d3d}
.ns-feedback .rtxt>span{display:block;margin-top:3px;font-size:12.5px;font-weight:600;line-height:1.4;color:#4c5358}
.ns-feedback.confirm .ric{background:#e8f7ec;color:#136b31}
.ns-feedback.error .ric{background:#fff0ee;color:#b3261e}
.ns-feedback.temporary .ric{background:#fff3bf;color:#7a5b00}

/* More — bordered disclosure */
.ns-more-wrap{margin-top:16px}
.ns-authority{margin:0 0 10px;color:#5c6166;font-size:12.5px;font-weight:600;line-height:1.45}
.ns-more-wrap .ns-note{margin:0 0 10px}
.ns-more{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:46px;border:2px dashed #5c6166;border-radius:10px;background:none;padding:10px;color:#43494e;font-size:13px;font-weight:800;cursor:pointer}
.ns-more:hover{background:#fff}
.ns-more svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.ns-more[aria-expanded="true"] svg{transform:rotate(180deg)}
.ns-more-panel{padding-top:10px}
.ns-more-panel[hidden]{display:none}

/* plan sheet */
.ns-plan-sheet{position:fixed;inset:0;z-index:250;background:rgba(19,45,61,.5);display:flex;align-items:flex-end;padding:12px}
.ns-plan-sheet[hidden]{display:none}
.ns-plan-dialog{width:min(440px,100%);margin:0 auto;background:#fff7e0;border:2px solid #132d3d;border-radius:14px;padding:18px;box-shadow:6px 6px 0 #132d3d}
.ns-plan-dialog h2{margin:0;color:#132d3d;font-size:19px;font-weight:850}
.ns-plan-dialog p{margin:5px 0 13px;color:#4c5358;font-size:12.5px;font-weight:600}
.ns-plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}
.ns-plan-grid label{font-size:11.5px;font-weight:800;color:#132d3d}
.ns-plan-grid input{display:block;width:100%;min-height:42px;margin-top:4px;border:2px solid #132d3d;border-radius:9px;padding:7px;color:#132d3d;background:#fff;font-size:12.5px;font-weight:650;font-family:inherit}

/* host sheets — same brutalist skin (report, directions, photo, tip, holiday) */
body.ns-on .sheet{background:#fff7e0;border:2px solid #132d3d;border-radius:16px;box-shadow:6px 6px 0 #132d3d}
body.ns-on .sheet-title{color:#132d3d;font-weight:850}
body.ns-on .sheet .grip{background:rgba(19,45,61,.35)}
body.ns-on .mx-flagrow{border:2px solid #132d3d;border-radius:10px;background:#fff;box-shadow:3px 3px 0 #132d3d;padding:11px 13px;margin-top:10px}
body.ns-on .mx-flagrow:first-of-type{border-top:2px solid #132d3d}
body.ns-on .mx-flagrow:hover{background:#fff;transform:translate(-1px,-1px);box-shadow:4px 4px 0 #132d3d}
body.ns-on .mx-flagrow b{font-weight:850;color:#132d3d}
body.ns-on .mx-flagrow small{color:#4c5358}
body.ns-on .sheet a#dir-google,body.ns-on .sheet a#dir-apple{border:2px solid #132d3d;border-radius:10px;background:#fff;box-shadow:3px 3px 0 #132d3d;margin-top:10px;padding:12px 13px;font-weight:750;color:#132d3d}
body.ns-on .sheet a#dir-google:hover,body.ns-on .sheet a#dir-apple:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 #132d3d}
body.ns-on .sheet .cancel{border:2px dashed #5c6166;border-radius:10px;background:transparent;color:#43494e;font-weight:800;box-shadow:none;margin-top:12px}
body.ns-on .sheet .cancel:hover{background:#fff}
body.ns-on .sheet .cancel:active{transform:translate(1px,1px)}
body.ns-on .sheetsubmit{border:2px solid #132d3d;background:#132d3d;color:#ffd33f;border-radius:10px;font-weight:850;box-shadow:2px 2px 0 #132d3d;margin-top:12px}
body.ns-on .sheetsubmit:disabled{background:#9db0bc;border-color:#9db0bc;color:#fff;box-shadow:none}
body.ns-on .repcat{border:2px solid #132d3d;background:#fff;color:#132d3d;font-weight:750}
body.ns-on .repcat.on{background:#132d3d;border-color:#132d3d;color:#ffd33f}
body.ns-on .reptext{border:2px solid #132d3d;border-radius:10px;background:#fff}
body.ns-on .reptext:focus-visible{outline:3px solid #1f4a68;outline-offset:1px}
body.ns-on .repphoto{border:2px dashed #5c6166;border-radius:10px;background:#fff;color:#43494e;font-weight:750}

/* host toast — brutalist card instead of the dark chip */
body.ns-on .toast{background:#fff7e0!important;color:#132d3d!important;border:2px solid #132d3d;box-shadow:3px 3px 0 #132d3d;border-radius:12px;padding:10px 14px;font-size:12.5px;font-weight:750;line-height:1.4}

@media(max-width:640px){
  .ns-deadline{font-size:27px}
  .ns-binary{flex-direction:column;align-items:stretch}
  .ns-binary>div{width:100%}
  .ns-binary button{flex:1}
}
@media(min-width:820px){body.ns-on #card{width:414px}.ns-plan-sheet{align-items:center}}
@media(prefers-reduced-motion:reduce){#ns-root *,#ns-root *::before,#ns-root *::after{transition:none!important;animation:none!important;transform:none!important}}

/* Final design pass: one measured type and spacing system for the complete map flow. */
:root{--ns-s1:4px;--ns-s2:8px;--ns-s3:12px;--ns-s4:16px;--ns-s5:20px;--ns-s6:24px;--ns-s7:32px}
#ns-root{font-size:16px;line-height:1.55}
body.ns-on #cardbody{padding:var(--ns-s1) var(--ns-s5) calc(var(--ns-s6) + env(safe-area-inset-bottom) + var(--composer-height,0px))}
.ns-head{padding:var(--ns-s4) 44px 0 0}
body.ns-on #card:has(.backbtn:not([hidden])) .ns-street{padding-right:56px}
.ns-street{font-size:20px;line-height:1.25}
.ns-provenance{margin-top:var(--ns-s1);font-size:13px;color:#46525a;line-height:1.45}
.ns-hero{padding:var(--ns-s4) 0 var(--ns-s5)}
.ns-kicker{margin-bottom:var(--ns-s2);font-size:12px;line-height:1.3;letter-spacing:.07em}
.ns-verdict{min-height:38px;padding:6px 13px;font-size:14px}
.ns-deadline{margin-top:var(--ns-s3);font-size:32px}
.ns-next{margin-top:var(--ns-s3);font-size:14px;line-height:1.5}
.ns-tail{margin-top:var(--ns-s1);font-size:13px;line-height:1.55}
.ns-timeline{margin-top:var(--ns-s4);padding:var(--ns-s3) var(--ns-s3) 10px}
.tl-cap{margin-bottom:var(--ns-s2);gap:var(--ns-s1) var(--ns-s3)}
.tl-cap b{font-size:11.5px}.tl-cap i{font-size:12px}
.tl-hours{height:16px;margin-top:5px;font-size:11px}
.ns-context{gap:var(--ns-s2);padding-bottom:var(--ns-s4)}
.ns-rows{gap:var(--ns-s3)}
.ns-row{gap:var(--ns-s3);min-height:58px;padding:10px 13px;font-size:14.5px;line-height:1.4}
.ns-row .rtxt small{font-size:12.5px;line-height:1.4}
.ns-utilities{gap:var(--ns-s3);padding:var(--ns-s4) 0}
.ns-util{gap:var(--ns-s2);min-height:76px}
.ns-util .uic{width:48px;height:48px}
.ns-util span{font-size:13px;line-height:1.35}
.ns-leaving-label{font-size:14px}
#ns-leaving{min-height:44px;font-size:16px}
.ns-quiet{font-size:13.5px}
.ns-solutions,.ns-nearby-results{gap:var(--ns-s3)}
.ns-solution{gap:2px;min-height:58px;padding:11px 13px}
.ns-solution strong,.ns-nearby-item strong{font-size:14.5px}
.ns-solution span,.ns-nearby-item span{font-size:13px;line-height:1.4}
.ns-nearby-item{gap:2px var(--ns-s3);padding:11px 13px}
.ns-nearby-item b{font-size:12px}
.ns-session-launch{padding-top:var(--ns-s5)}
.ns-button{min-height:50px;font-size:15px}
.ns-session.active{margin-top:var(--ns-s5);padding:var(--ns-s4)}
.ns-session-kicker{font-size:12px;letter-spacing:.06em}
.ns-session-street{font-size:16px}.ns-session-age{font-size:13px}
.ns-session-deadline{margin-top:var(--ns-s3)}
.ns-session-deadline strong{font-size:18px}.ns-session-deadline span{font-size:13px}
.ns-inline{gap:var(--ns-s3);margin-top:var(--ns-s3)}
.ns-note{margin-top:var(--ns-s3);font-size:13px;line-height:1.55}
.ns-confirm{margin-top:var(--ns-s2);font-size:13px}
.ns-reminders{margin-top:var(--ns-s4);padding-top:var(--ns-s3)}
.ns-reminders-label{font-size:14px}
.ns-reminder-options{gap:var(--ns-s2);margin-top:var(--ns-s3)}
.ns-reminder-options button{font-size:13px}
.ns-community{margin-top:var(--ns-s5);padding:var(--ns-s4)}
.ns-community-tag{font-size:12px;letter-spacing:.06em}
.ns-community-line{margin-top:var(--ns-s2);font-size:14px;line-height:1.45}
.ns-binary{gap:var(--ns-s3);margin-top:var(--ns-s4)}
.ns-binary>span{font-size:14px;line-height:1.45}
.ns-binary button{font-size:13px}
.ns-community-rows{margin-top:var(--ns-s4)}
.ns-more-wrap{margin-top:var(--ns-s5)}
.ns-more-wrap .ns-note{margin-bottom:var(--ns-s3)}
.ns-more{min-height:48px;font-size:14px}
.ns-more-panel{padding-top:var(--ns-s3)}
.ns-plan-dialog{padding:var(--ns-s5)}
.ns-plan-dialog h2{font-size:21px}.ns-plan-dialog p{margin:var(--ns-s2) 0 var(--ns-s4);font-size:14px;line-height:1.55}
.ns-plan-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ns-s3);margin:var(--ns-s3) 0}
.ns-plan-grid label{min-width:0;font-size:13px}
.ns-plan-grid input{min-width:0;min-height:44px;margin-top:var(--ns-s2);padding:8px;font-size:16px}
body.ns-on .sheet{font-size:16px}
body.ns-on .sheet-title{font-size:20px;line-height:1.3}
body.ns-on .mx-flagrow{padding:13px 14px;margin-top:var(--ns-s3)}
body.ns-on .mx-flagrow b{font-size:15px}body.ns-on .mx-flagrow small{font-size:13.5px;line-height:1.45}
body.ns-on .sheet a#dir-google,body.ns-on .sheet a#dir-apple{min-height:48px;padding:13px 14px;font-size:15px}
body.ns-on .sheet .cancel,body.ns-on .sheetsubmit,body.ns-on .repcat,body.ns-on .repphoto{min-height:44px;font-size:14px}
body.ns-on .rep-dest,body.ns-on .tip-sub,body.ns-on .tip-d{font-size:13.5px;line-height:1.55}
body.ns-on .tips-h{font-size:13px}
body.ns-on .nb .nb-n{width:24px;height:24px;font-size:12.5px}
body.ns-on .nb-m{font-size:13px;line-height:1.45}
body.ns-on #basics-body h5{font-size:13px;letter-spacing:.04em}
body.ns-on #basics-body .hub-action{min-height:44px;font-size:14px}
body.ns-on .curbsw{width:24px;height:24px;font-size:12px}
body.ns-on #basics-body details li{font-size:14px;line-height:1.55}
body.ns-on #basics-body .hub-note{font-size:13.5px;line-height:1.55}
body.ns-on #basics-body .src{font-size:13px;line-height:1.55}
body.ns-on .holiday-date{font-size:13.5px}
body.ns-on .reptext{font-size:16px;line-height:1.55}
body.ns-on .toast{padding:var(--ns-s3) var(--ns-s4);font-size:14px;line-height:1.5}
body.ns-on .mx-legendbar .li{font-size:11px}
body.ns-on .mx-strip .tx{font-size:10px;font-weight:500}
body.ns-on .mx-strip .ib{font-size:0}
body.ns-on #q{min-height:44px;font-size:16px;line-height:1.4}
body.ns-on .icon-btn{width:44px;height:44px;min-width:44px;min-height:44px}
body.ns-on .closebtn{width:44px;height:44px;min-width:44px;min-height:44px}
html[lang="ko"] #ns-root,html[lang="ko"] #ns-root button{word-break:keep-all;overflow-wrap:break-word}
html[lang="ko"] .ns-kicker,html[lang="ko"] .tl-cap b,html[lang="ko"] .ns-session-kicker,html[lang="ko"] .ns-community-tag,html[lang="ko"] .ns-unknown>span,html[lang="ko"] #basics-body h5{letter-spacing:0}
/* Headline wrapping is a per-language job. English and Spanish keep the
   tight display tracking and wrap by phrase; Korean drops negative tracking
   (it jams syllable blocks), opens the line-height so Hangul is never cropped,
   and balances the short two-line deadline so "해요" is not left alone. */
.ns-street,.ns-deadline{overflow-wrap:break-word;text-wrap:pretty}
html[lang="ko"] .ns-street,html[lang="ko"] .ns-deadline{letter-spacing:0;word-break:keep-all}
html[lang="ko"] .ns-deadline{line-height:1.25;text-wrap:balance}
html[lang="en"] .ns-street,html[lang="en"] .ns-deadline{word-break:normal}

/* Parking facilities use the same answer-first card language as curb verdicts. */
.lot-sheet{color:#202124;font-family:inherit;font-size:16px;line-height:1.55}
.lot-sheet *{box-sizing:border-box}
.lot-head{padding-top:var(--ns-s4)}
.lot-hero{padding:var(--ns-s4) 0 var(--ns-s5)}
.lot-lede{margin:var(--ns-s3) 0 0;color:#4c5358;font-size:14px;font-weight:600;line-height:1.5;text-wrap:pretty}
.lot-utilities{padding:var(--ns-s4) 0 var(--ns-s5)}
.lot-details{margin:0 0 var(--ns-s5);border:2px solid #132d3d;border-radius:10px;background:#fff;overflow:hidden}
.lot-details h3{margin:0;padding:var(--ns-s3) var(--ns-s4);background:#fff7e0;border-bottom:1.5px solid #d8ccb0;color:#5c6166;font-size:12px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}
.lot-facts{padding:0 var(--ns-s4)}
.lot-fact{display:grid;grid-template-columns:22px minmax(0,1fr);gap:var(--ns-s3);align-items:start;padding:var(--ns-s3) 0;border-bottom:1px solid #e4dfd2;color:#202124;font-size:14px;font-weight:600;line-height:1.5}
.lot-fact:last-child{border-bottom:0}
.lot-fact-icon{color:#5c6166;margin-top:1px}
.lot-fact-icon .ic,.lot-fact-icon svg{display:block;width:19px;height:19px}
.lot-community{margin:0 0 var(--ns-s5);padding:var(--ns-s4);border:2px dashed #7a4a2a;border-radius:12px;background:#f4e5cc}
.lot-tips{display:grid;gap:var(--ns-s2);margin-top:var(--ns-s2)}
.lot-tip{display:grid;grid-template-columns:22px minmax(0,1fr);gap:var(--ns-s2);align-items:start;color:#4c3a2a}
.lot-tip>span .ic,.lot-tip>span svg{display:block;width:18px;height:18px}
.lot-tip p{margin:0;font-size:13px;font-weight:600;line-height:1.5}
.lot-tip small{color:#6a5a4a;font-size:11.5px}
.lot-tip-button{margin-top:var(--ns-s3);box-shadow:2px 2px 0 #132d3d}
.lot-source{margin:0;color:#5c6166;font-size:12px;font-weight:600;line-height:1.55}
.lot-source:empty{display:none}
.lot-source a{color:#1f4a68;text-decoration:none}
.lot-source .foot-links{display:grid;gap:var(--ns-s2);margin-top:var(--ns-s2)}

@media(min-width:820px){body.ns-on #card{width:440px}}
@media(max-width:640px){body.ns-on #cardbody{padding-inline:18px}}
@media(max-width:520px){
  body.ns-on #cardbody{padding-inline:16px}
  body.ns-on .toast{width:min(280px,calc(100% - 32px));max-width:calc(100% - 32px);padding:7px 10px;font-size:14px;line-height:1.35;border-width:1.5px;border-radius:9px;box-shadow:2px 2px 0 #132d3d;text-wrap:pretty}
  .ns-head{padding-top:var(--ns-s3)}
  .ns-street{font-size:18px;line-height:1.25}
  .ns-provenance{font-size:12px}
  .ns-hero{padding:var(--ns-s3) 0 var(--ns-s4)}
  .ns-verdict{min-height:36px;padding:5px 11px;font-size:13px}
  .ns-deadline{font-size:26px;line-height:1.08}
  .ns-next{font-size:13px}.ns-tail{font-size:12px}
  .ns-timeline{margin-top:var(--ns-s3);padding:10px 10px 8px}
  .ns-row{padding:9px 11px;font-size:14px}
  .ns-row .rtxt small{font-size:12px}
  .ns-decision .rtxt strong{font-size:14.5px}
  .ns-decision .rtxt>span{font-size:14px}
  .ns-unknown p{font-size:14px}
  .ns-utilities{gap:var(--ns-s2);padding:var(--ns-s4) 0}
  .ns-util{min-height:68px}.ns-util .uic{width:44px;height:44px}.ns-util span{font-size:12px}
  .lot-lede{font-size:14px}
  .lot-details h3{padding:10px 12px;font-size:11.5px}
  .lot-facts{padding:0 12px}
  .lot-fact{gap:10px;padding:10px 0;font-size:14px}
  .lot-community{padding:12px}
}

/* Card diet (2026-09-05): one loud layer, everything else quiet.
   Only the timeline, the primary CTA and the overnight card keep the
   bordered brutalist treatment. Rows become hairline-divided lines, the
   feedback block collapses to one line, and provenance moves to the footer. */
.ns-deadline.calm{font-size:20px;font-weight:800;letter-spacing:-.015em;line-height:1.25;color:#2b3f4c}
.ns-rows{gap:0}
.ns-row{border:0;border-bottom:1px solid #d7dbe0;border-radius:0;background:transparent;box-shadow:none;padding:12px 2px}
.ns-row:first-child{border-top:1px solid #d7dbe0}
.ns-row:hover{transform:none;box-shadow:none;background:#faf5e6}
.ns-row:active{transform:none;box-shadow:none;background:#f3ecd8}
.ns-decision{min-height:64px}
.ns-decision .rtxt strong{font-size:15px}
.ns-decision .rtxt>span{font-size:12.5px;color:#5c6166}
.ns-row.overnight{border:1.5px solid #c69618;border-radius:10px;background:#fff1b8;padding:12px}
.ns-row.overnight+.ns-rows .ns-row:first-child{border-top:0}
.ns-util .uic{box-shadow:none;border-width:1.5px}
.ns-util:hover .uic{transform:none;box-shadow:none}
.ns-util:active .uic{transform:none;box-shadow:none}
.ns-utilities{border-top:1px solid #d7dbe0}
.ns-session-launch{border-top:0;padding-top:4px}
.ns-feedback-wrap{margin-top:0;padding-top:0;border-top:1px solid #d7dbe0}
.ns-feedback-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;min-height:48px;font-size:14px;font-weight:750;color:#2b3f4c;cursor:pointer;list-style:none}
.ns-feedback-title::-webkit-details-marker{display:none}
.ns-feedback-title>svg{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.ns-feedback-wrap[open] .ns-feedback-title>svg{transform:rotate(180deg)}
.ns-feedback-wrap>.ns-rows{padding-bottom:8px}
.ns-feedback{min-height:60px;box-shadow:none}
.ns-community{margin-top:14px;border:1px dashed #b08a67;background:#fbf4e6}
.ns-community.collapsed{border:1px dashed #b08a67;background:#fbf4e6}
.ns-community.collapsed[data-fresh="true"]{background:#f7ecd8}
.ns-community-toggle{min-height:50px}
.ns-more-wrap{margin-top:14px;padding-top:12px;border-top:1px solid #d7dbe0}
.ns-authority{margin:0;font-size:12px;color:#5c6166}
.ns-more-wrap .ns-provenance{display:block;margin:4px 0 0;font-size:11.5px;color:#80868b;font-weight:600;line-height:1.4}
@media(max-width:520px){.ns-decision .rtxt>span{font-size:14px}}

/* X0 (2026-09-07): current brutalist base, volume lowered, answer tied to the map.
   Decisions from the design review: keep the language (navy/cream/yellow, borders,
   hard shadows on the answer and the CTA), soften the rest, never fold decision rows.
   - soft brutal: 1.5px borders, 2px offset shadows
   - tonal decision rows (pale cream fill + 1px line) instead of bare hairlines
   - verdict pill and deadline take the map line colour (green ok / red no / amber check);
     ok green is #007a58 (white text 5.35:1, CVD-safe vs the red, dE 62/80).
     These read the styles/index.css tokens so the pill, the legend swatches and
     the map line cannot drift apart; see scripts/test-status-colour-single-source.mjs
   - utilities: Directions filled navy, others cream
   - timeline as an instrument: 14px bar, darker ticks and labels
   - community box uses the navy dashed line, not brown
   - overnight card keeps its yellow (caution) at lower saturation;
     on a green verdict it collapses to one quiet row (see .overnight-quiet) */
.ns-verdict{border-width:1.5px;box-shadow:2px 2px 0 #132d3d}
.ns-hero.ok .ns-verdict{background:var(--green);color:#fff}
.ns-hero.no .ns-verdict{background:var(--red);color:#fff}
.ns-hero.warn .ns-verdict{background:var(--amber);color:#1f1a00}
.ns-hero.ok .ns-deadline{color:var(--green-tx)}
.ns-hero.no .ns-deadline{color:#8c1d16}
.ns-hero.warn .ns-deadline{color:#6f5000}
.ns-timeline{border-width:1.5px}
.tl-bar{height:14px;border-width:1.5px}
.tl-block{fill:#c9342a}
.tl-tick{stroke:rgba(19,45,61,.45);stroke-width:2}
.tl-hours{font-size:10.5px;color:#132d3d;font-weight:800}
.ns-rows{gap:8px}
.ns-row{border:1px solid rgba(19,45,61,.4);border-radius:10px;background:#fffbea;padding:12px}
.ns-row:first-child{border-top:1px solid rgba(19,45,61,.4)}
.ns-row:hover{background:#fff6d6}
.ns-row.overnight{background:#fff6cc;border:1.5px solid #d9a800}
.ns-row.overnight-quiet{background:#fffbea;border:1px solid rgba(19,45,61,.4);min-height:52px;margin-bottom:0}
.ns-row.overnight-quiet .ric{color:#8a6400}
.ns-row.overnight-quiet .rtxt{font-size:14.5px;font-weight:800;color:#132d3d}
.ns-util .uic{background:#fff3c4;border:1px solid rgba(19,45,61,.35);box-shadow:none}
.ns-util:first-child .uic{background:#132d3d;border-color:#132d3d}
.ns-util:first-child svg{stroke:#ffd33f}
.ns-button{border-width:1.5px;box-shadow:2px 2px 0 #132d3d}
.ns-community,.ns-community.collapsed{border:1px dashed rgba(19,45,61,.4);background:#fffbea}
.ns-community.collapsed[data-fresh="true"]{background:#fffbea}
.ns-community-tag,.ns-community-boundary{color:#4a5660}
.ns-community-toggle strong{color:#132d3d}

/* Allowed-now card: keep the action above optional rule detail. */
.ns-hero-compact{padding-bottom:var(--ns-s3)}
.ns-rule-details{margin:var(--ns-s3) 0 var(--ns-s4);border-bottom:1px solid rgba(19,45,61,.25)}
.ns-rule-details>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--ns-s3);min-height:48px;padding:8px 0;color:#132d3d;font-size:14px;font-weight:750;cursor:pointer;list-style:none}
.ns-rule-details>summary::-webkit-details-marker{display:none}
.ns-rule-details>summary>svg{flex:none;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transform:rotate(90deg)}
.ns-rule-details[open]>summary>svg{transform:rotate(-90deg)}
.ns-rule-details>summary:focus-visible{outline:3px solid #1f4a68;outline-offset:2px;border-radius:6px}
.ns-rule-details[open]{padding-bottom:var(--ns-s3)}
.ns-rule-details .ns-timeline{margin-top:var(--ns-s1)}

/* Selected-time answers (2026-09-12): the kicker names the chosen Fullerton time. */
.ns-kicker.ns-when{text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:750;color:#46525a}

/* Phone-first allowed card (2026-09-12): answer, parking action, then one
   disclosure for rules, options, location actions and community. Desktop
   keeps its full pane: the button is hidden and the region stays open. */
.ns-expand{display:flex;align-items:center;justify-content:space-between;gap:var(--ns-s3);width:100%;min-height:48px;margin-top:var(--ns-s2);padding:10px 12px;border:1px solid rgba(19,45,61,.4);border-radius:10px;background:#fffbea;color:#132d3d;font-size:14.5px;font-weight:800;line-height:1.4;text-align:left;cursor:pointer;font-family:inherit}
.ns-expand>svg{flex:none;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.ns-expand[aria-expanded="true"]>svg{transform:rotate(180deg)}
.ns-expand:hover{background:#fff6d6}
.ns-expand:focus-visible{outline:3px solid #1f4a68;outline-offset:2px}
@media(max-width:819px){
  #ns-root.ns-folded .ns-details{display:none}
  /* Expanded sheet may grow past the 46vh default, but never under the time
     row, which may now be two lines tall (bottom edge about 130px). */
  body.ns-on #card.ns-expanded{max-height:min(72dvh,calc(100dvh - 148px - env(safe-area-inset-top)))}
}
@media(min-width:820px){.ns-expand{display:none}}

/* The three parking options share one compact row layout. */
.ns-row.ns-option{min-height:52px;padding:12px;align-items:center}
.ns-row.ns-option .rtxt{font-size:14.5px;font-weight:800;line-height:1.4}
.ns-row.ns-option .ric{margin-top:0}

/* Purpose pass (2026-09-15): the action a red status demands, the posted-hours
   check a green card must not fold away, and the City pages the card defers
   to, next to the data date. No new colours: red-tx and amber-tx tokens. */
.ns-action{margin:var(--ns-s2) 0 0;font-size:14.5px;line-height:1.45;font-weight:800;color:var(--red-tx)}
.ns-check{color:var(--amber-tx);font-weight:700}
.ns-sources{display:flex;flex-wrap:wrap;gap:0 var(--ns-s4);margin:var(--ns-s1) 0 0;padding:0}
.ns-sources a{display:inline-flex;align-items:center;min-height:44px;color:#1f4a68;font-size:12.5px;font-weight:750;text-decoration:none}
.ns-sources a:hover{text-decoration:underline}
.ns-sources a:focus-visible{outline:3px solid #1f4a68;outline-offset:2px;border-radius:6px}
@media(max-width:520px){.ns-action{font-size:14px}.ns-sources a{font-size:13px}}
