*{box-sizing:border-box}:root{color:#1d1d1f;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-synthesis:none}html,body,#app,.app,#map{width:100%;height:100%;margin:0;overflow:hidden}body{background:#e5e7eb}button,input{font:inherit}button{color:inherit}.controls{position:fixed;top:max(12px,env(safe-area-inset-top));display:flex;gap:8px;z-index:10}.controls--right{right:max(12px,env(safe-area-inset-right))}.control-button{display:grid;width:48px;height:48px;padding:12px;border:1px solid rgba(29,29,31,.13);border-radius:13px;color:#1d1d1f;background:#fffffff5;box-shadow:0 4px 18px #0f172a21;cursor:pointer;place-items:center;-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px)}.control-button:hover{background:#fff}.control-button:active{transform:scale(.96)}.control-button:disabled{cursor:wait;opacity:.72}.control-button:focus-visible,.panel button:focus-visible,.panel input:focus-visible{outline:3px solid #0071e3;outline-offset:2px}.control-button svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.locate-button{position:fixed;right:max(12px,env(safe-area-inset-right));bottom:max(32px,calc(env(safe-area-inset-bottom) + 20px));z-index:10;border-radius:50%}.areas-button{position:fixed;right:max(68px,calc(env(safe-area-inset-right) + 56px));bottom:max(32px,calc(env(safe-area-inset-bottom) + 20px));z-index:10;display:flex;align-items:center;gap:8px;width:auto;white-space:nowrap}.compass-button{position:fixed;right:max(12px,env(safe-area-inset-right));top:max(72px,calc(env(safe-area-inset-top) + 60px));z-index:10;border-radius:50%}.control-button .compass-north{fill:#d64545;stroke:#d64545}.locate-button.is-active{color:#0071e3}.locate-button.is-loading svg{animation:locate-pulse .8s ease-in-out infinite alternate}.demo-banner{position:fixed;z-index:9;left:50%;top:max(14px,env(safe-area-inset-top));transform:translate(-50%);max-width:calc(100vw - 230px);padding:8px 12px;border:1px solid #e4a11b;border-radius:10px;background:#fffbebf7;color:#713f12;font-size:13px;font-weight:650;text-align:center;box-shadow:0 2px 12px #0f172a1a}.panel{position:fixed;z-index:20;top:max(68px,calc(env(safe-area-inset-top) + 56px));width:min(330px,calc(100vw - 24px));max-height:calc(100dvh - 92px);overflow:auto;padding:14px;border:1px solid rgba(29,29,31,.13);border-radius:14px;background:#fffffffa;box-shadow:0 12px 35px #0f172a33;-webkit-backdrop-filter:saturate(150%) blur(18px);backdrop-filter:saturate(150%) blur(18px)}.panel.panel--right{right:max(68px,calc(env(safe-area-inset-right) + 56px));top:max(12px,env(safe-area-inset-top));width:min(330px,calc(100vw - 80px))}.panel h2{margin:2px 4px 10px;font-size:17px;letter-spacing:-.2px}.panel fieldset{margin:6px 0 10px;padding:0;border:0}.panel legend{margin:8px 4px 6px;color:#6b7280;font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.04em}.panel label{display:flex;min-height:46px;align-items:center;gap:8px;padding:8px 9px;border-radius:9px;cursor:pointer}.panel label:hover{background:#f5f5f7}.panel input{width:19px;height:19px;margin:0;accent-color:#0071e3}.area-list{max-height:min(48dvh,360px);overflow:auto}.panel.areas-panel{top:auto;bottom:0;right:max(12px,env(safe-area-inset-right));display:flex;flex-direction:column;width:min(440px,calc(100vw - 24px));height:48dvh;max-height:none;padding:12px 12px max(12px,env(safe-area-inset-bottom));overflow:hidden;border-radius:18px 18px 0 0;animation:sheet-enter .18s ease-out}.area-sheet-header{display:grid;grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);flex:0 0 auto;align-items:center;min-height:44px;touch-action:none;-webkit-user-select:none;user-select:none;cursor:ns-resize}.area-sheet-header>button{justify-self:end;width:44px}.sheet-resize-handle{display:grid;place-items:center;justify-self:center;width:64px;min-height:44px;border-radius:9px;cursor:ns-resize}.sheet-resize-handle:before{content:"";width:28px;height:4px;border-radius:2px;background:#8a8a8d}.sheet-resize-handle:focus-visible{outline:3px solid #0071e3;outline-offset:-2px}.areas-panel.is-resizing{animation:none}.area-sheet-header h2{flex:1;margin:0}.panel svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}@keyframes sheet-enter{0%{transform:translateY(100%)}to{transform:translateY(0)}}.panel.areas-panel .area-list{flex:1 1 auto;min-height:0;margin:8px 0 0;max-height:none;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin}.areas-panel .area-master{position:sticky;top:0;z-index:2;min-height:44px;padding:7px 8px;border-radius:0;border-bottom:1px solid #e5e7eb;background:#fff;font-size:14px;font-weight:650}.area-row,.area-group-header,.area-columns{display:grid;grid-template-columns:44px minmax(0,1fr) var(--count-width, 64px) var(--count-width, 64px);column-gap:10px;align-items:center;min-height:44px;border-radius:0}.area-columns{min-height:28px;color:#687383;font-size:11px}.area-columns span:nth-child(2){padding-left:8px}.area-columns span:nth-child(3){text-align:center}.area-group-header{border-top:1px solid #d8dee6;background:#f3f5f7}.area-group-content{box-shadow:inset 2px 0 #c7ddf6;margin-left:0;padding-left:0}.area-row:hover{background:#f5f5f7}.areas-panel .area-toggle{min-height:44px;width:44px;justify-content:center;padding:0}.areas-panel .area-name,.areas-panel .area-group-title{min-width:0;min-height:44px;padding:5px 8px;background:transparent;border-radius:7px;font-size:14px;font-weight:500;text-align:left;overflow-wrap:anywhere}.areas-panel .area-group-title{font-weight:700}.area-group-title svg{flex:0 0 16px;width:16px;height:16px;transform:rotate(90deg)}.area-group-title[aria-expanded=false] svg{transform:none}.areas-panel .area-group-title{display:flex;align-items:center;gap:4px}.areas-panel .area-name[aria-pressed=false]{color:#6b7280}.areas-panel .area-focus{width:44px;height:44px;padding:10px;display:grid;place-items:center;background:transparent}.areas-panel .area-focus[aria-pressed=true]{color:#005bb5;background:#e7f1ff}.flyer-count{text-align:center;font-size:13px;color:#6b7280;font-variant-numeric:tabular-nums}.area-group-content[hidden]{display:none}.print-chooser{display:grid;grid-template-columns:minmax(0,1fr);flex:1 1 auto;min-width:0;min-height:0;align-content:start;gap:10px;margin-top:10px;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}.print-chooser>*{min-width:0;max-width:100%}.print-chooser label,.print-chooser button{overflow-wrap:anywhere;white-space:normal}.print-chooser label{padding:4px 2px;min-height:28px}.print-chooser label:has(input){min-height:44px}.print-chooser input{flex:0 0 19px}.print-chooser button:disabled{cursor:wait;opacity:.65}.print-chooser select{min-height:44px;width:100%;min-width:0;padding:8px 10px;font:inherit;color:inherit;background:#fff;border:1px solid #c9cdd3;border-radius:9px}.print-basemap-note{grid-column:1 / -1;min-width:0;margin:0;font-size:12px;line-height:1.4;color:#52525b;overflow-wrap:anywhere}.print-chooser select:focus-visible{outline:3px solid #0071e3;outline-offset:2px}.style-list label{font-weight:550}.style-list label:has(input:disabled){color:#8a8a8d;cursor:not-allowed}.style-note{margin:-5px 9px 7px 36px;color:#6b7280;font-size:12px;line-height:1.35}.panel-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.panel button{min-height:44px;padding:9px 11px;border:0;border-radius:9px;background:#f0f0f2;cursor:pointer;font-weight:600}.panel button:hover{background:#e5e5e7}.panel .primary-action{grid-column:1 / -1;background:#0071e3;color:#fff}.panel .primary-action:hover{background:#0068d1}.snackbar{position:fixed;z-index:30;left:50%;bottom:max(96px,calc(env(safe-area-inset-bottom) + 84px));transform:translate(-50%);width:max-content;max-width:calc(100vw - 24px);padding:11px 14px;border-radius:10px;background:#1d1d1f;color:#fff;font-size:14px;box-shadow:0 8px 25px #00000040}.maptiler-branding{position:absolute;left:10px;bottom:34px;z-index:9;line-height:0}.maptiler-branding[hidden]{display:none}.maptiler-branding img{width:110px;height:auto}.location-marker{width:19px;height:19px;border:3px solid white;border-radius:50%;background:#0071e3;box-shadow:0 1px 7px #00000059,0 0 0 10px #0071e32b}.print-sheet{display:none}.area-popup{max-height:min(55dvh,360px);overflow-y:auto;overflow-wrap:anywhere;color:#1d1d1f;font:14px/1.45 system-ui,sans-serif}.area-popup p{margin:8px 0}.area-report{display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;border-radius:6px;background:#005bb5;color:#fff;text-decoration:none}.area-report:focus-visible{outline:3px solid #005bb5;outline-offset:3px}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.location-consent{position:fixed;z-index:25;left:12px;bottom:100px;width:min(360px,calc(100vw - 24px));padding:16px;border-radius:12px;border:1px solid #c6c6c6;background:#fff;color:#161616;box-shadow:0 6px 30px #0003}.location-consent p{margin:0 0 12px;font-size:14px;line-height:1.5}.location-consent button{min-height:44px;width:100%;padding:8px;margin-top:6px;border:1px solid #8d8d8d;border-radius:6px;background:#fff;color:#161616;cursor:pointer}.location-consent button:first-of-type{background:#005bb5;color:#fff;border-color:#005bb5}.viewer-admin{position:fixed;bottom:6px;right:12px;z-index:8;color:#161616;background:#fff;padding:4px 8px;font-size:12px}.area-columns span:nth-child(4){text-align:center}.area-row[data-status=partial],.area-row[data-status=complete]{background:#f1f1f1}.area-row[data-status=partial] .area-name{text-decoration:underline dashed;text-underline-offset:4px}.maplibregl-popup-close-button{min-width:44px;min-height:44px;font-size:24px}.area-popup{padding-right:24px}@keyframes locate-pulse{to{opacity:.35;transform:scale(.78)}}@media(max-width:680px){.demo-banner{top:max(70px,calc(env(safe-area-inset-top) + 58px));max-width:calc(100vw - 24px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.panel{width:min(360px,calc(100vw - 24px))}.panel.areas-panel{width:100vw;right:0;left:0;border-left:0;border-right:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important}}@media print{@page{size:A4 landscape;margin:10mm}html,body{width:auto;height:auto;overflow:visible;background:#fff}#app{display:none!important}.print-sheet{display:grid;grid-template-rows:auto 1fr auto;width:277mm;height:190mm;margin:0;color:#111;background:#fff}.print-sheet h1{margin:0 0 4mm;font-size:17pt;line-height:1.2}.print-sheet img{width:100%;height:165mm;border:1px solid #aaa;object-fit:contain}.print-attribution{margin:2mm 0 0;font-size:7.5pt}}.area-info{position:absolute;z-index:3;left:12px;top:12px;width:max-content;max-width:min(360px,calc(100% - 84px));min-width:0;padding:14px;background:#fff;color:#202124;border-radius:18px;box-shadow:0 2px 12px #0002;overflow:visible;max-height:none!important;font:14px/1.4 system-ui;animation:info-in .18s ease-out;box-sizing:border-box}.full-info{font:inherit;min-height:44px;border:0;background:transparent;text-decoration:underline;text-align:left;color:#005bb5;cursor:pointer;padding:4px 0}.full-info-dialog{max-width:min(600px,calc(100vw - 32px));max-height:calc(100dvh - 32px);box-sizing:border-box;overflow:auto;background:#fff;color:#161616;border:1px solid #c6c6c6;border-radius:12px;padding:20px;overflow-wrap:anywhere}.full-info-dialog::backdrop{background:#0007}.full-info-dialog button{min-height:44px;min-width:80px}.area-info strong{display:block;font-size:18px;line-height:1.25;overflow-wrap:anywhere;margin-bottom:8px}.area-info dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:0 0 10px}.area-info dt,.area-info dd{margin:0;overflow-wrap:anywhere;min-width:0}.area-info .area-report{display:flex;align-items:center;justify-content:center;min-height:44px;padding:4px 12px;width:100%;box-sizing:border-box;border-radius:12px}.area-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}.area-labels span{position:absolute;transform:translate(-50%,-50%);font:600 13px/1 system-ui;white-space:nowrap;padding:0;border:0;background:none;box-shadow:none;text-shadow:none;outline:none}.style-list label{display:flex;align-items:center;gap:12px;min-height:76px;border-radius:10px;padding:6px}.style-list label:has(:checked){background:#edf4ff;color:#174ea6;outline:2px solid #2563eb}.style-list img{border-radius:8px;object-fit:cover}.is-guided .areas-button{display:none!important}@keyframes info-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(max-width:600px){.location-consent{inset:50% auto auto 50%!important;transform:translate(-50%,-50%);width:min(340px,calc(100vw - 32px));box-sizing:border-box}.area-info{left:8px;top:8px;padding:12px;font-size:13px}.area-info dl{gap:2px 8px}}@media(max-height:500px){.area-info{font-size:12px;padding:8px}.area-info strong{font-size:15px;margin-bottom:4px}.area-info dl{margin-bottom:4px}}@media(prefers-reduced-motion:reduce){.area-info{animation:none}.panel,.location-consent{animation:none!important;transition:none!important}}body:has(.report-app){margin:0;background:#f4f4f4;color:#161616;font:16px/1.5 Arial,sans-serif}.report-app{--surface:#fff;--text:#161616;--muted:#525252;--border:#8d8d8d;--accent:#0f62fe;box-sizing:border-box;width:min(640px,calc(100% - 32px));margin:24px auto;padding:24px;background:var(--surface);color:var(--text);overflow-wrap:anywhere}.report-app *,.report-app *:before,.report-app *:after{box-sizing:border-box;min-width:0}.report-app [hidden]{display:none!important}.report-app h1{font-size:28px;line-height:1.25;font-weight:400;margin:0 0 24px}.report-app h2{font-size:22px;line-height:1.3;margin:0 0 8px}.report-app p{margin:8px 0 16px}.report-reference{padding:12px 16px;border-left:3px solid var(--accent);background:#edf5ff}.report-app fieldset{margin:0;padding:0;border:0}.report-app .report-fields{display:flex;flex-direction:column;gap:20px}.report-app .report-field{display:flex;flex-direction:column;align-items:stretch;gap:8px}.report-app input:not([type=checkbox]):not([type=radio]),.report-app select,.report-app textarea{width:100%;max-width:100%;min-height:44px;border:1px solid var(--border);border-radius:0;padding:10px 12px;color:var(--text);background:var(--surface);font:inherit}.report-app textarea{resize:vertical}.report-app button{min-height:44px;border:1px solid var(--border);border-radius:0;padding:10px 16px;color:var(--text);background:var(--surface);font:inherit;cursor:pointer}.report-app button:disabled{opacity:.65;cursor:default}.report-app .report-primary{color:#fff;background:var(--accent);border-color:var(--accent)}.report-flyers>legend{padding:0 0 8px}.report-flyers label,.report-check{display:flex;align-items:center;gap:12px;padding:8px 0;min-height:44px;cursor:pointer}.report-flyers input,.report-check input{flex:0 0 20px;width:20px;height:20px;margin:0;accent-color:var(--accent)}.report-add{display:flex;align-items:flex-end;flex-wrap:wrap;gap:8px}.report-flyers label{align-items:flex-start}.report-flyers input{margin-top:2px}.report-add>label{flex:1 1 140px}.report-add button{flex:0 0 auto}.report-intent{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 0}.report-intent span{flex:1 1 140px}.report-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:24px 0 0}.report-message{white-space:pre-line}.report-message:not(:empty){padding:12px 16px;margin-top:20px;background:#fff4d6;border-left:3px solid #8a6500}.report-app :is(button,input,select,textarea):focus-visible{outline:3px solid var(--accent);outline-offset:3px}.report-radios label{display:flex;align-items:center;gap:12px;min-height:44px;padding:6px 0;cursor:pointer}.report-radios input[type=radio]{flex:0 0 20px;width:20px;height:20px;margin:0;accent-color:var(--accent)}.report-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;background:#0006}.report-dialog{position:relative;width:min(600px,100%);max-height:calc(100dvh - 32px);min-width:0;overflow:auto;overscroll-behavior:contain;border-radius:14px;background:#fff}.report-dialog .report-app{width:100%;margin:0;padding:24px 16px}.report-dialog .report-app h1{padding-right:44px;font-size:22px}.report-close{position:sticky;display:grid;place-items:center;float:right;top:8px;margin:8px 8px -52px 0;z-index:1;min-width:44px;min-height:44px;border:0;border-radius:8px;background:#f4f4f4;color:#161616;cursor:pointer}.report-close svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2}.report-close:focus-visible{outline:3px solid #0f62fe}@media(max-width:600px){.report-backdrop{padding:0;align-items:flex-end}.report-dialog{max-height:94dvh;border-radius:14px 14px 0 0}.report-app{margin:16px auto;padding:16px}}.report-app{color-scheme:light;border-radius:18px}.report-app :is(button,input:not([type=radio]):not([type=checkbox]),textarea){border-radius:10px}.report-app h1{margin-bottom:14px}.report-app .report-fields{gap:14px}.report-area-info{padding:16px;margin-bottom:20px;border:1px solid #c6d5e5;border-radius:12px;background:#edf5ff}.report-area-info>p{margin:0 0 8px}.report-area-info .report-quantities{margin-bottom:0;grid-template-columns:minmax(0,1fr) auto}.report-app .report-fields{padding:16px;border:1px solid #d6d6d6;border-radius:12px;background:#f4f4f4}.report-radios,.report-flyers{display:flex;flex-wrap:wrap;gap:4px 18px}.report-radios legend,.report-flyers legend{width:100%}.report-radios label,.report-flyers label{min-height:44px;align-items:center;max-width:100%}.report-quantities{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:8px 0 16px}.report-quantities dt,.report-quantities dd{margin:0}.report-dialog{animation:report-enter .22s cubic-bezier(.2,.7,.2,1)}@keyframes report-enter{0%{opacity:0;transform:translateY(48px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.report-dialog{animation:none!important}}

/* Public report field headings only; keep entered values normal. */
.report-app .report-field,
.report-app .report-radios > legend,
.report-app .report-flyers > legend {
  font-weight: 700;
}
.report-app .report-field > input:not([type=checkbox]):not([type=radio]),
.report-app .report-field > select,
.report-app .report-field > textarea {
  font-weight: 400;
}
