@font-face{font-family:"InterVariable";font-style:normal;font-weight:100 900;font-display:swap;src:url("../fonts/inter/InterVariable.woff2") format("woff2")}@font-face{font-family:"InterVariable";font-style:italic;font-weight:100 900;font-display:swap;src:url("../fonts/inter/InterVariable-Italic.woff2") format("woff2")}:root{--primary: #22303F;--primary-700: #1A2530;--primary-100: #E7EBEF;--accent: #C97B4A;--accent-strong: #B26839;--accent-ink: #9C5528;--accent-soft: #F3E4D8;--accent-bright: #DFA077;--bg: #F4F1EC;--surface: #FFFFFF;--surface-dim: #FAF7F2;--ink: #22303F;--ink-muted: #5F6C79;--line: #E3DCD1;--line-strong: #CFC6B8;--ok: #4A8465;--ok-bright: #7ED6A5;--ok-soft: #E7F0EA;--ok-ink: #2F5C44;--warn: #E2B24C;--warn-soft: #F9EFDC;--warn-ink: #78591B;--danger: #B04A3A;--danger-soft: #F5E4E1;--chart-1: #C97B4A;--chart-2: #3A72B0;--chart-3: #B08434;--chart-4: #5D9AD4;--chart-5: #8F4E22;--chart-other: #9AA5B1;--font-sans: "InterVariable", "Inter", system-ui, "Segoe UI", Roboto, Arial, sans-serif;--radius: .625rem;--radius-sm: .4rem;--shadow-1: 0 1px 2px rgba(34, 48, 63, .05), 0 4px 14px rgba(34, 48, 63, .06);--shadow-2: 0 2px 6px rgba(34, 48, 63, .08), 0 12px 28px rgba(34, 48, 63, .10);--ring: 0 0 0 .2rem rgba(201, 123, 74, .22)}:root{--bs-body-bg: var(--bg);--bs-body-color: var(--ink);--bs-body-font-family: var(--font-sans);--bs-border-color: var(--line);--bs-border-radius: var(--radius-sm);--bs-heading-color: var(--primary);--bs-link-color: var(--accent-ink);--bs-link-hover-color: var(--accent-strong);--bs-link-color-rgb: 156, 85, 40;--bs-link-hover-color-rgb: 178, 104, 57;--bs-primary: #22303F;--bs-primary-rgb: 34, 48, 63;--bs-secondary-color: var(--ink-muted);--bs-secondary-rgb: 95, 108, 121;--bs-success-rgb: 74, 132, 101;--bs-success: var(--ok);--bs-success-bg-subtle: var(--ok-soft);--bs-success-border-subtle: #C6D9CD;--bs-success-text-emphasis: #2F5C44;--bs-warning-rgb: 226, 178, 76;--bs-warning: var(--warn);--bs-warning-bg-subtle: var(--warn-soft);--bs-warning-border-subtle: #ECDAB2;--bs-warning-text-emphasis: #78591B;--bs-danger-rgb: 176, 74, 58;--bs-danger: var(--danger);--bs-danger-bg-subtle: var(--danger-soft);--bs-danger-border-subtle: #E5C2BB;--bs-danger-text-emphasis: #7D352A;--bs-light-bg-subtle: var(--surface-dim);--bs-focus-ring-color: rgba(201, 123, 74, .25)}.btn-primary{--bs-btn-bg: var(--primary);--bs-btn-border-color: var(--primary);--bs-btn-hover-bg: var(--primary-700);--bs-btn-hover-border-color: var(--primary-700);--bs-btn-active-bg: var(--primary-700);--bs-btn-active-border-color: var(--primary-700);--bs-btn-disabled-bg: var(--primary);--bs-btn-disabled-border-color: var(--primary);--bs-btn-focus-shadow-rgb: 201, 123, 74}.btn-outline-primary{--bs-btn-color: var(--primary);--bs-btn-border-color: var(--line-strong);--bs-btn-hover-bg: var(--primary);--bs-btn-hover-border-color: var(--primary);--bs-btn-active-bg: var(--primary);--bs-btn-active-border-color: var(--primary);--bs-btn-focus-shadow-rgb: 201, 123, 74}.form-control,.form-select{background-color:var(--surface);border-color:var(--line-strong)}.form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:var(--ring)}.form-check-input:checked{background-color:var(--accent);border-color:var(--accent)}.form-check-input:focus{border-color:var(--accent);box-shadow:var(--ring)}.progress{--bs-progress-bg: var(--line);--bs-progress-bar-bg: var(--accent)}.table{--bs-table-bg: var(--surface);--bs-table-border-color: var(--line);--bs-table-striped-bg: var(--surface-dim);--bs-table-hover-bg: var(--accent-soft)}.card{--bs-card-border-color: var(--line);--bs-card-border-radius: var(--radius);box-shadow:var(--shadow-1)}.alert{--bs-alert-border-radius: var(--radius-sm)}html{position:relative;min-height:100%;font-size:15px}@media(min-width: 768px){html{font-size:16px}}body{display:flex;flex-direction:column;min-height:100vh;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-weight:650;letter-spacing:-0.01em}a{text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:.2em}a.btn:hover,a.tile-link:hover,a.hub-pill:hover,a.detention-node:hover,.navbar .nav-link:hover,.navbar-brand:hover{text-decoration:none}::selection{background:var(--accent-soft);color:var(--primary)}@keyframes fade-up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.anim-fade-up{animation:fade-up .35s ease-out backwards}@media(prefers-reduced-motion: reduce){.anim-fade-up{animation:none}*,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important}}.app-topbar{background:linear-gradient(180deg, var(--primary) 0%, var(--primary-700) 100%);box-shadow:0 1px 0 rgba(244,241,236,.08),0 6px 18px rgba(26,37,48,.25)}.app-topbar .navbar{padding-block:.55rem}.app-topbar .navbar-nav{--bs-nav-link-color: rgba(244, 241, 236, .78);--bs-nav-link-hover-color: #F4F1EC}.app-topbar .navbar-nav .nav-link{position:relative;font-weight:480;white-space:nowrap}.app-topbar .navbar-nav .nav-link:hover{text-decoration:none}.app-topbar .navbar-nav .nav-link.active{color:#f4f1ec}.app-topbar .navbar-nav .nav-link.active::after{content:"";position:absolute;inset-inline:.95rem;bottom:.15rem;height:2px;border-radius:1px;background:var(--accent-bright)}.app-topbar .navbar-nav .btn-link.nav-link{border:0}.brand{display:flex;align-items:center;gap:.6rem}.brand:hover{text-decoration:none}.brand img{width:28px;height:28px;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.35)}.brand-wordmark{font-weight:640;font-size:1.02rem;letter-spacing:.18em;color:#f4f1ec}main{flex:1}.page-head{margin-block:1.75rem 1.25rem}.page-head h1{margin-bottom:.2rem}.page-head p{color:var(--ink-muted);margin-bottom:0}.app-footer{margin-top:3rem;padding-block:1.1rem;border-top:1px solid var(--line);color:var(--ink-muted);font-size:.85rem}.app-footer a{color:var(--ink-muted)}#dropzone{border-radius:var(--radius) !important;border-color:var(--line-strong) !important;background:var(--surface) !important;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}#dropzone:hover{border-color:var(--accent) !important;box-shadow:var(--shadow-1)}#dropzone.border-primary{border-color:var(--accent) !important;background:var(--accent-soft) !important}.table-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-1);overflow-x:auto;position:relative}.table-card>.table{margin-bottom:0;border-radius:0;box-shadow:none;overflow:visible}.table{--bs-table-bg: transparent;overflow:hidden;border-radius:var(--radius-sm);box-shadow:var(--shadow-1);background:var(--surface);font-size:.9rem}.table>thead th{background:rgba(0,0,0,0);color:var(--ink-muted);font-size:.7rem;font-weight:650;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;border-bottom:1px solid var(--line-strong);padding:.6rem .75rem}.table>tbody td{padding:.8rem .75rem;border-color:var(--line);font-variant-numeric:tabular-nums}.table>thead th:first-child,.table>tbody td:first-child{padding-left:1.15rem}.table>thead th:last-child,.table>tbody td:last-child{padding-right:1.15rem}.table>tbody tr:last-child td{border-bottom:0}.table>tbody tr{transition:background-color .12s ease}.table>tbody tr:hover{background-color:var(--surface-dim)}.table>tbody tr:focus-within{background-color:color-mix(in srgb, var(--accent-soft) 45%, var(--surface))}.file-cell{display:flex;align-items:center;gap:.6rem;min-width:0}.file-cell .file-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-ink);font-size:.95rem}.file-cell .file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-cell .file-open{flex:0 0 auto}.badge{border-radius:999px;font-weight:600;font-variant-numeric:tabular-nums;padding:.38em .7em}.matching-notes{white-space:pre-line;max-width:420px;color:var(--ink-muted);font-size:.82rem;margin-top:.3rem}.attach-form{width:auto;display:inline-flex;vertical-align:middle}.attach-form .form-select{max-width:230px;cursor:pointer}.tile-link{display:block;height:100%;color:inherit;transition:transform .15s ease,box-shadow .15s ease}.tile-link:hover{text-decoration:none;transform:translateY(-2px)}.tile-link:hover .card{box-shadow:var(--shadow-2);border-color:var(--accent)}.tile-link .card{height:100%}.tile-icon{font-size:1.5rem;color:var(--accent-ink)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(170px, 1fr));gap:.75rem}.kpi-card{display:flex;flex-direction:column;gap:.15rem;padding:.85rem 1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-1)}.kpi-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.kpi-value{font-size:1.25rem;font-weight:650;font-variant-numeric:tabular-nums;color:var(--ink)}.kpi-value.kpi-positive{color:var(--ok-ink)}.kpi-value.kpi-negative{color:var(--danger)}.kpi-sub{font-size:.75rem;color:var(--ink-muted)}.timeline{list-style:none;margin:0;padding:0;position:relative}.timeline::before{content:"";position:absolute;left:14px;top:6px;bottom:6px;width:2px;background:var(--line-strong);border-radius:1px}.timeline-item{position:relative;display:flex;gap:.75rem;padding:0 0 1rem 0}.timeline-item:last-child{padding-bottom:0}.timeline-item.is-future .timeline-label,.timeline-item.is-future .timeline-date{color:var(--ink-muted)}.timeline-item.is-future .timeline-dot{background:var(--surface-dim);color:var(--ink-muted);border-style:dashed}.timeline-dot{flex:0 0 auto;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);border:1px solid var(--line-strong);font-size:.85rem}.timeline-date{font-size:.75rem;color:var(--ink-muted);font-variant-numeric:tabular-nums}.timeline-label{font-size:.875rem;color:var(--ink)}.geo-issue-icon{color:var(--warn-ink)}.report-check{padding:.1rem 0}.report-check .bi{margin-right:.3rem}.report-check.is-attention{color:var(--warn-ink)}.portfolio-map-card{position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-2)}#portfolioMap{height:min(62vh,560px);min-height:380px;background:var(--primary-700);font-family:var(--font-sans)}.map-tiles .leaflet-tile{filter:saturate(0.25) sepia(0.24) brightness(1.06) contrast(0.88) hue-rotate(-8deg)}.map-veil{position:absolute;inset:0;z-index:640;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 42%, rgba(34, 48, 63, 0.35), rgba(26, 37, 48, 0.95));transition:opacity 1s ease .2s,visibility 0s linear 1.3s;pointer-events:none}.map-veil img{width:64px;height:64px;border-radius:14px;box-shadow:0 8px 30px rgba(0,0,0,.45);animation:veil-breathe 1.8s ease-in-out infinite}.map-veil.is-lifted{opacity:0;visibility:hidden}@keyframes veil-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}.map-summary{position:absolute;z-index:680;top:.9rem;left:.9rem;display:flex;gap:1.5rem;padding:.6rem 1.1rem;border-radius:var(--radius);background:rgba(255,255,255,.78);backdrop-filter:blur(10px) saturate(1.3);-webkit-backdrop-filter:blur(10px) saturate(1.3);border:1px solid rgba(255,255,255,.65);box-shadow:var(--shadow-1);opacity:0;transform:translateY(-6px);transition:opacity .5s ease,transform .5s ease}.map-summary.is-visible{opacity:1;transform:none}.map-summary.is-dimmed{opacity:.12;pointer-events:none}.map-summary-item{display:flex;flex-direction:column;min-width:5.5rem}.map-summary-item .map-summary-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-muted)}.map-summary-item .map-summary-value{font-size:1.05rem;font-weight:680;color:var(--primary);font-variant-numeric:tabular-nums}.map-summary-item .map-summary-value small{font-size:.72rem;font-weight:500;color:var(--ink-muted)}.map-note{position:absolute;z-index:680;bottom:.9rem;left:.9rem;padding:.3rem .7rem;border-radius:999px;background:rgba(34,48,63,.78);color:#f4f1ec;font-size:.74rem;backdrop-filter:blur(6px)}.map-pin{position:relative;display:block;width:34px;height:44px;line-height:1;animation:pin-drop .55s cubic-bezier(0.22, 1.2, 0.36, 1) both;transform-origin:50% 100%}.map-pin-drop{position:absolute;left:4px;top:4px;width:26px;height:26px;background:linear-gradient(145deg, var(--primary) 0%, var(--primary-700) 100%);border:2px solid rgba(255,255,255,.95);border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 8px 16px rgba(26,37,48,.38)}.map-pin-dot{position:absolute;left:13px;top:13px;width:8px;height:8px;border-radius:50%}.map-pin::after{content:"";position:absolute;left:3px;top:28px;width:28px;height:12px;border-radius:50%;border:2px solid var(--accent);opacity:0;animation:pin-ripple .8s ease-out .38s 1 both}@keyframes pin-drop{from{opacity:0;transform:translateY(-34px) scale(0.7)}60%{opacity:1}to{opacity:1;transform:none}}@keyframes pin-ripple{from{opacity:.8;transform:scale(0.3)}to{opacity:0;transform:scale(1.5)}}.map-pin--occupied .map-pin-dot{background:var(--ok-bright)}.map-pin--vacant .map-pin-dot{background:var(--warn);animation:dot-pulse 1.8s ease-in-out infinite}.map-pin--unknown .map-pin-dot{background:var(--line-strong)}@keyframes dot-pulse{0%,100%{box-shadow:0 0 0 0 rgba(226,178,76,.55)}50%{box-shadow:0 0 0 6px rgba(226,178,76,0)}}.leaflet-marker-icon:hover .map-pin-drop{transform:rotate(-45deg) translate(2px, -2px);box-shadow:0 12px 20px rgba(26,37,48,.45);transition:transform .15s ease,box-shadow .15s ease}.leaflet-popup-content-wrapper{border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow-2);padding:0}.leaflet-popup-content{margin:0;padding:.95rem 1.05rem;font-family:var(--font-sans);min-width:240px}.leaflet-popup-tip{box-shadow:var(--shadow-1)}.map-popup h3{font-size:.98rem;font-weight:660;color:var(--primary);margin:0 0 .1rem}.map-popup .map-popup-address{color:var(--ink-muted);font-size:.78rem;margin-bottom:.55rem}.map-popup .map-popup-badges{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:.55rem}.map-popup .map-popup-badges span{font-size:.7rem;font-weight:600;padding:.2em .6em;border-radius:999px}.map-popup .map-popup-badges .map-badge-mode{background:var(--accent-soft);color:var(--accent-ink)}.map-popup .map-popup-badges .map-badge-health--occupied{background:var(--ok-soft);color:var(--ok-ink)}.map-popup .map-popup-badges .map-badge-health--vacant{background:var(--warn-soft);color:var(--warn-ink)}.map-popup .map-popup-badges .map-badge-health--unknown{background:var(--primary-100);color:var(--primary)}.map-popup .map-popup-row{display:flex;justify-content:space-between;gap:1rem;font-size:.8rem;color:var(--ink-muted);padding-block:.12rem}.map-popup .map-popup-row strong{color:var(--ink);font-variant-numeric:tabular-nums}.map-popup .map-popup-link{display:block;margin-top:.65rem;text-align:center;font-size:.82rem;font-weight:600;padding:.42rem .5rem;border-radius:var(--radius-sm);background:var(--primary);color:#f4f1ec}.map-popup .map-popup-link:hover{background:var(--primary-700);color:#fff;text-decoration:none}.leaflet-control-attribution{background:rgba(244,241,236,.82) !important;color:var(--ink-muted);font-size:.64rem}.map-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3.5rem 1.5rem;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface)}.map-empty img{width:56px;height:56px;border-radius:12px;margin-bottom:1rem;box-shadow:var(--shadow-1)}@media(prefers-reduced-motion: reduce){.map-pin,.map-pin::after,.map-veil img,.map-pin--vacant .map-pin-dot{animation:none !important}.map-veil,.map-summary{transition:none !important}}.chart-s1{--series: var(--chart-1)}.chart-s2{--series: var(--chart-2)}.chart-s3{--series: var(--chart-3)}.chart-s4{--series: var(--chart-4)}.chart-s5{--series: var(--chart-5)}.chart-other{--series: var(--chart-other)}.series-dot{display:inline-block;flex:0 0 auto;width:.62rem;height:.62rem;border-radius:50%;background:var(--series, var(--chart-1))}.dash-section{animation:fade-up .4s ease-out backwards}.dash-section:nth-of-type(1){animation-delay:0.08s}.dash-section:nth-of-type(2){animation-delay:0.16s}.dash-section:nth-of-type(3){animation-delay:0.24s}.dash-section:nth-of-type(4){animation-delay:0.32s}@media(prefers-reduced-motion: reduce){.dash-section{animation:none}}.dash-card-sub{font-size:.78rem;color:var(--ink-muted);margin:-0.35rem 0 .85rem}.detention-scroll{overflow-x:auto}.detention-canvas{position:relative;display:flex;gap:3.25rem;justify-content:space-between;min-width:620px;padding:.25rem .1rem}.detention-canvas.no-persons{min-width:460px}.detention-links{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.detention-links path{fill:none;stroke:var(--line-strong);stroke-width:1.5;transition:stroke .15s ease-out}.detention-links path.is-share{stroke:var(--accent);stroke-width:1.75}.detention-links path.is-dim{stroke:var(--line);opacity:.45}.detention-links path.is-hot{stroke:var(--accent-strong);stroke-width:2.25;opacity:1}.detention-links text{font-size:.68rem;font-weight:600;fill:var(--accent-ink);stroke:var(--surface);stroke-width:3;paint-order:stroke}.detention-col{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;gap:.65rem;flex:1 1 0;min-width:0;max-width:240px}.detention-col-head{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-muted);text-align:center;margin-bottom:.1rem}.detention-node{display:flex;align-items:center;gap:.55rem;padding:.5rem .65rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-1);color:inherit;transition:border-color .15s ease-out,box-shadow .15s ease-out}.detention-node.is-hot{border-color:var(--accent);box-shadow:var(--ring)}a.detention-node:hover{text-decoration:none;border-color:var(--accent)}.detention-node-body{min-width:0;display:flex;flex-direction:column;gap:.05rem}.detention-label{font-size:.8rem;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detention-sub{font-size:.7rem;color:var(--ink-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.detention-avatar{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--primary);color:var(--accent-bright);font-size:.68rem;font-weight:650;letter-spacing:.02em}.detention-note{font-size:.75rem;color:var(--ink-muted);margin:.75rem 0 0}.history-chart-wrap{position:relative}.history-chart{display:block;width:100%;height:auto;touch-action:pan-y}.history-chart .grid-line{stroke:var(--line);stroke-width:1}.history-chart .axis-label{font-size:.62rem;fill:var(--ink-muted);font-variant-numeric:tabular-nums}.history-chart .series-line{fill:none;stroke:var(--series, var(--chart-1));stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.history-chart .series-end{fill:var(--series, var(--chart-1));stroke:var(--surface);stroke-width:2}.history-chart .end-label{font-size:.68rem;font-weight:650;fill:var(--ink);font-variant-numeric:tabular-nums;stroke:var(--surface);stroke-width:3;paint-order:stroke}.history-chart .crosshair{stroke:var(--line-strong);stroke-width:1;visibility:hidden}.chart-legend{display:flex;flex-wrap:wrap;gap:.35rem 1rem;margin-bottom:.5rem;font-size:.75rem;color:var(--ink-muted)}.chart-legend-item{display:inline-flex;align-items:center;gap:.4rem}.chart-legend-key{display:inline-block;width:1rem;height:2px;border-radius:1px;background:var(--series, var(--chart-1))}.chart-tooltip{position:absolute;z-index:2;pointer-events:none;visibility:hidden;background:var(--primary);color:#fff;border-radius:var(--radius-sm);box-shadow:var(--shadow-2);padding:.45rem .6rem;font-size:.72rem;line-height:1.35;max-width:220px}.chart-tooltip .tt-date{font-weight:600;color:var(--accent-bright);margin-bottom:.15rem}.chart-tooltip .tt-row{display:flex;align-items:center;gap:.4rem;font-variant-numeric:tabular-nums}.chart-tooltip .tt-row .chart-legend-key{flex:0 0 auto}.chart-tooltip .tt-row strong{font-weight:650}.chart-table{margin-top:.5rem;font-size:.75rem}.chart-table summary{color:var(--accent-ink);cursor:pointer}.chart-table .table{margin:.5rem 0 0}.alloc-bar{display:flex;gap:2px;height:14px;border-radius:4px;overflow:hidden;background:var(--surface-dim)}.alloc-segment{background:var(--series, var(--chart-1));min-width:1px}.alloc-rows{display:flex;flex-direction:column;gap:.3rem;margin-top:.75rem}.alloc-row{display:flex;align-items:baseline;gap:.5rem;font-size:.78rem}.alloc-row .series-dot{align-self:center}.alloc-row .alloc-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alloc-row .alloc-type{color:var(--ink-muted);font-size:.7rem;white-space:nowrap}.alloc-row .alloc-fill{flex:1 1 auto;border-bottom:1px dotted var(--line);align-self:center;min-width:.75rem}.alloc-row .alloc-value{font-variant-numeric:tabular-nums;white-space:nowrap}.alloc-row .alloc-share{color:var(--ink-muted);font-size:.7rem;font-variant-numeric:tabular-nums;min-width:2.6rem;text-align:right}.mini-bars{display:flex;flex-direction:column;gap:.55rem}.mini-bar-row{display:grid;grid-template-columns:minmax(72px, 0.8fr) 1fr auto;align-items:center;gap:.6rem;font-size:.78rem}.mini-bar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-bar-track{height:10px}.mini-bar-fill{display:block;height:100%;min-width:2px;background:var(--chart-1);border-radius:0 4px 4px 0}.mini-bar-value{font-variant-numeric:tabular-nums;white-space:nowrap}.mini-bar-value small{color:var(--ink-muted)}.deadline-month{margin-bottom:1.4rem}.deadline-month-title{font-size:.72rem;font-weight:650;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-muted);display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem}.deadline-month-title::after{content:"";flex:1 1 auto;height:1px;background:var(--line)}.deadline-badge{display:inline-block;margin-left:.4rem;padding:.05rem .45rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-ink);font-size:.68rem;font-weight:600;font-variant-numeric:tabular-nums}.deadline-meta{font-size:.75rem;color:var(--ink-muted)}.deadline-meta a{color:var(--accent-ink)}.deadline-meta-sep{margin:0 .3rem}.deadline-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.35rem;padding:3rem 1rem;background:var(--surface);border:1px dashed var(--line-strong);border-radius:var(--radius)}.deadline-empty .bi{font-size:1.6rem;color:var(--accent)}.deadline-legend li{margin-bottom:.3rem}.home-deadline-row{display:flex;align-items:baseline;gap:.6rem;padding:.35rem 0;font-size:.82rem}.home-deadline-row+.home-deadline-row{border-top:1px solid var(--line)}.home-deadline-date{flex:0 0 auto;font-variant-numeric:tabular-nums;font-weight:600;color:var(--accent-ink)}.home-deadline-label{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-deadline-meta{margin-left:auto;flex:0 0 auto;font-size:.72rem;color:var(--ink-muted);white-space:nowrap}.home-deadline-meta a{color:var(--accent-ink)}.nav-badge{display:inline-block;min-width:1.15rem;margin-left:.35rem;padding:.04rem .34rem;border-radius:999px;background:var(--accent);color:var(--surface);font-size:.66rem;font-weight:700;line-height:1.3;text-align:center;font-variant-numeric:tabular-nums;vertical-align:text-top}.alerts-row{display:flex;align-items:flex-start;gap:.6rem}.alerts-row-body{flex:1 1 auto;min-width:0}.alerts-dismiss-form{flex:0 0 auto}.alerts-dismiss{display:inline-flex;align-items:center;justify-content:center;width:1.7rem;height:1.7rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-muted);font-size:.72rem;transition:color .15s ease,border-color .15s ease,background .15s ease}.alerts-dismiss:hover,.alerts-dismiss:focus-visible{background:var(--surface-dim);border-color:var(--line-strong);color:var(--ink)}.alerts-dismiss:focus-visible{outline:none;box-shadow:var(--ring)}.alerts-new{display:inline-block;margin-left:.4rem;padding:.05rem .45rem;border-radius:999px;background:var(--primary-100);color:var(--primary);font-size:.66rem;font-weight:650;text-transform:uppercase;letter-spacing:.04em}.deadline-badge.is-past{background:var(--warn-soft);color:var(--warn-ink)}.score-hero{display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem 2.5rem;padding:1.25rem 1.5rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-1)}.score-figure{display:flex;align-items:baseline;gap:.4rem}.score-value{font-size:3rem;font-weight:700;line-height:1;color:var(--primary);font-variant-numeric:tabular-nums}.score-scale{color:var(--ink-muted);font-size:1rem}.score-delta{margin-left:.6rem;padding:.1rem .5rem;border-radius:999px;font-size:.72rem;font-weight:650;font-variant-numeric:tabular-nums}.score-delta.is-up{background:var(--ok-soft);color:var(--ok-ink)}.score-delta.is-down{background:var(--warn-soft);color:var(--warn-ink)}.score-dimensions{flex:1 1 260px;display:grid;gap:.8rem}.score-bar{height:.5rem;margin:.2rem 0;background:var(--primary-100)}.score-bar .progress-bar{background:var(--accent)}.score-quest{display:flex;align-items:baseline;gap:.6rem;padding:.35rem 0}.score-quest+.score-quest{border-top:1px solid var(--line)}.score-quest-gain{flex:0 0 auto;padding:.05rem .45rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-ink);font-size:.72rem;font-weight:650;font-variant-numeric:tabular-nums}.score-quest-body{font-size:.85rem}.score-quest-target{margin-left:.3rem;color:var(--accent-ink);font-size:.78rem}.score-penalty{padding:.2rem 0}.score-penalty-points{display:inline-block;min-width:2.4rem;color:var(--warn-ink);font-weight:650;font-variant-numeric:tabular-nums}.score-property{padding:.3rem 0}.score-property+.score-property{border-top:1px solid var(--line)}.score-property summary{display:flex;justify-content:space-between;gap:.6rem;cursor:pointer;font-size:.85rem;font-weight:600}.score-factor{padding:.08rem 0}.score-factor .bi{margin-right:.3rem}.score-factor.is-missing{color:var(--ink-muted)}.score-tile{text-decoration:none}.score-tile:hover{border-color:var(--accent)}.score-tile-scale{font-size:.8rem;color:var(--ink-muted);font-weight:400}.hub{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-2);padding:1.1rem 1.25rem 1.25rem;margin-bottom:1rem;overflow:hidden}.hub::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg, var(--accent), var(--accent-bright), var(--accent))}.hub-head{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}.hub-pierre-wrap{position:relative;flex:0 0 auto}.hub-pierre{display:block;animation:pierre-bob 3.2s ease-in-out infinite}.hub-pierre-wrap::after{content:"";position:absolute;left:50%;bottom:-7px;width:36px;height:8px;border-radius:50%;background:radial-gradient(closest-side, rgba(34, 48, 63, 0.3), transparent);transform:translateX(-50%) scaleX(1);animation:pierre-shadow 3.2s ease-in-out infinite}@keyframes pierre-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes pierre-shadow{0%,100%{transform:translateX(-50%) scaleX(1);opacity:1}50%{transform:translateX(-50%) scaleX(0.72);opacity:.55}}.hub-title{flex:1 1 260px;min-width:0}.hub-pierre-line{font-size:.82rem;color:var(--ink-muted);margin-top:.1rem}.hub-progress{display:flex;align-items:center;gap:.55rem;flex:0 0 auto}.hub-progress-count{font-size:.8rem;color:var(--ink-muted);font-variant-numeric:tabular-nums}.hub-progress-count strong{color:var(--ink);font-weight:650}.hub-bar{display:inline-block;width:120px;height:7px;border-radius:999px;background:var(--surface-dim);border:1px solid var(--line);overflow:hidden}.hub-bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-bright));transition:width .6s cubic-bezier(0.22, 0.8, 0.36, 1)}.hub-collapse{flex:0 0 auto;border:0;background:none;padding:.2rem .1rem;font-size:.78rem;color:var(--ink-muted);text-decoration:underline;text-underline-offset:.2em;cursor:pointer}.hub-collapse:hover{color:var(--accent-ink)}.hub-steps{list-style:none;display:flex;gap:.35rem;margin:1rem 0 0;padding:0}.hub-step{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.35rem;text-align:center;position:relative;padding-top:.15rem}.hub-step:not(:first-child)::before{content:"";position:absolute;top:1.05rem;right:calc(50% + 1.05rem);left:calc(-50% + 1.05rem);height:2px;background:var(--line);border-radius:1px}.hub-step.is-done:not(:first-child)::before{background:var(--accent)}.hub-step-icon{z-index:1;display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--surface-dim);border:1px solid var(--line-strong);color:var(--ink-muted);font-size:.85rem;transition:background .25s ease-out,color .25s ease-out,border-color .25s ease-out}.hub-step.is-done .hub-step-icon{background:var(--accent);border-color:var(--accent);color:#fff}.hub-step.is-active .hub-step-icon{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink);animation:hub-ring 2.2s ease-out infinite}@keyframes hub-ring{0%{box-shadow:0 0 0 0 rgba(201,123,74,.35)}70%{box-shadow:0 0 0 9px rgba(201,123,74,0)}100%{box-shadow:0 0 0 0 rgba(201,123,74,0)}}.hub-step-title{font-size:.72rem;color:var(--ink-muted);line-height:1.25}.hub-step.is-active .hub-step-title{color:var(--ink);font-weight:600}.hub-step.is-done .hub-step-title{color:var(--ink)}.hub-panel{margin-top:1.1rem;padding-top:1rem;border-top:1px solid var(--line)}.hub-panel-cta{text-align:center;padding:.35rem 0 .1rem}.hub-scene-counts{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:.8rem}.hub-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;border-radius:999px;background:var(--surface-dim);border:1px solid var(--line);font-size:.78rem;color:var(--ink-muted);font-variant-numeric:tabular-nums}.hub-chip strong{color:var(--ink)}.hub-chip--busy{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}.hub-chip--busy strong{color:var(--accent-ink)}.hub-spinner{display:inline-block;width:.8rem;height:.8rem;border-radius:50%;border:2px solid var(--accent-soft);border-top-color:var(--accent);animation:hub-spin .9s linear infinite}@keyframes hub-spin{to{transform:rotate(360deg)}}.hub-feed{list-style:none;margin:0 auto;padding:0 .35rem 0 0;max-width:560px;max-height:330px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) rgba(0,0,0,0)}.hub-feed-item{display:flex;align-items:baseline;gap:.55rem;padding:.4rem .15rem;font-size:.8rem;animation:fade-up .3s ease-out backwards}.hub-feed-item+.hub-feed-item{border-top:1px dashed var(--line)}.hub-feed-state{flex:0 0 auto;align-self:center;display:inline-flex;align-items:center;justify-content:center;width:1.15rem}.hub-feed-state.is-ok{color:var(--ok)}.hub-feed-name{min-width:0;max-width:45%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:var(--ink)}.hub-feed-stage{color:var(--ink-muted)}.hub-pill{position:fixed;right:1.1rem;bottom:1.1rem;z-index:1030;display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .85rem;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);box-shadow:var(--shadow-2);font-size:.8rem;color:var(--ink);cursor:pointer}.hub-pill:hover{border-color:var(--accent)}.hub-pill strong{font-variant-numeric:tabular-nums}.hub-congrats{display:flex;align-items:center;gap:.75rem;padding:.8rem 1rem;margin-bottom:1rem;background:var(--ok-soft);border:1px solid var(--ok);border-radius:var(--radius);color:var(--ok-ink);font-size:.9rem;animation:fade-up .45s ease-out backwards}.hub-congrats img{flex:0 0 auto}.hub-congrats strong{font-weight:650}.hub-dropzone{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:1.6rem 1rem;border:2px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-dim);cursor:pointer;text-align:center;transition:border-color .15s ease-out,background .15s ease-out,transform .15s ease-out}.hub-dropzone>.bi{font-size:1.7rem;color:var(--accent)}.hub-dropzone:hover,.hub-dropzone:focus-visible,.hub-dropzone.is-over{border-color:var(--accent);background:var(--accent-soft)}.hub-dropzone.is-over{transform:scale(1.01)}.hub-browse{color:var(--accent-ink);text-decoration:underline;text-underline-offset:.2em}.hub-upload-progress{display:flex;align-items:center;justify-content:center;gap:.55rem;padding:1.4rem 1rem;font-size:.85rem;color:var(--ink)}.hub-cta-row{display:inline-flex;align-items:stretch;gap:.5rem;flex-wrap:wrap;justify-content:center}.hub-cta-eye{display:inline-flex;align-items:center}.hub-attach{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem .75rem;margin-top:.9rem;padding-top:.8rem;border-top:1px dashed var(--line)}.hub-attach-label{font-size:.78rem;color:var(--ink-muted)}.hub-attach-form{display:inline-flex;align-items:center;gap:.4rem}.hub-attach-form .form-select{width:auto;max-width:240px}.hub-mfa-note{margin-top:1rem;padding-top:.7rem;border-top:1px dashed var(--line);font-size:.75rem;color:var(--ink-muted)}.hub-mfa-note a{color:var(--accent-ink)}.hub--finale{animation:hub-finale-exit .6s ease-in 3s forwards}.hub--finale .hub-step-icon{animation:hub-pop .45s cubic-bezier(0.34, 1.56, 0.64, 1) backwards}.hub--finale .hub-step:nth-child(1) .hub-step-icon{animation-delay:.15s}.hub--finale .hub-step:nth-child(2) .hub-step-icon{animation-delay:.29s}.hub--finale .hub-step:nth-child(3) .hub-step-icon{animation-delay:.43s}.hub--finale .hub-step:nth-child(4) .hub-step-icon{animation-delay:.57s}.hub--finale .hub-step:nth-child(5) .hub-step-icon{animation-delay:.71s}.hub--finale .hub-step:nth-child(6) .hub-step-icon{animation-delay:.85s}.hub-bar-final{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-bright));animation:hub-bar-full 1s ease-out .5s backwards}@keyframes hub-pop{from{transform:scale(0.3);opacity:0}}@keyframes hub-bar-full{from{width:83%}}@keyframes hub-finale-exit{to{opacity:0;transform:translateY(-12px)}}@media(max-width: 575.98px){.hub-step-title{display:none}.hub-progress{order:3;flex:1 1 100%}.hub-bar{flex:1 1 auto;width:auto}}@media(prefers-reduced-motion: reduce){.hub-pierre,.hub-pierre-wrap::after,.hub-step.is-active .hub-step-icon,.hub-spinner,.hub-feed-item,.hub-congrats,.hub--finale,.hub--finale .hub-step-icon,.hub-bar-final{animation:none}.hub-bar span,.hub-dropzone{transition:none}}.hub-geocoding-hint{color:var(--warn-ink)}.hub-geocoding-hint .bi{margin-right:.25rem}.auth-body{background:radial-gradient(55% 40% at 88% -8%, rgba(201, 123, 74, 0.12), transparent 60%),radial-gradient(45% 35% at -5% 105%, rgba(34, 48, 63, 0.07), transparent 60%),var(--bg)}.auth-body>main{flex:1 1 auto;display:grid;place-items:center;width:100%;padding:1.5rem 1rem}.auth-footer{padding:.9rem 1rem 1.1rem;text-align:center;font-size:.75rem;color:var(--ink-muted)}.auth-footer a{color:var(--ink-muted)}.auth-footer span{margin-right:.35rem}.mfa-card{width:min(100%,420px)}.auth-wrap{display:flex;justify-content:center;width:100%}.auth-card{display:grid;grid-template-columns:minmax(300px, 5fr) minmax(340px, 7fr);width:min(100%,940px);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-2);overflow:hidden}.auth-brand{display:flex;flex-direction:column;gap:1.4rem;padding:2rem 1.9rem;color:#fff;background:radial-gradient(120% 90% at 15% 0%, rgba(201, 123, 74, 0.28), transparent 55%),linear-gradient(160deg, var(--primary-700), var(--primary))}.auth-brand-top{display:flex;align-items:center;gap:.6rem}.auth-wordmark{font-weight:650;letter-spacing:.18em;font-size:.95rem}.auth-headline{font-size:1.45rem;line-height:1.3;font-weight:650;margin:0;color:#fff}.auth-benefits{list-style:none;display:flex;flex-direction:column;gap:.8rem;margin:0;padding:0;font-size:.86rem}.auth-benefits li{display:flex;gap:.65rem;align-items:baseline;color:rgba(255,255,255,.88)}.auth-benefits .bi{flex:0 0 auto;color:var(--accent-bright)}.auth-pierre{margin-top:auto;display:flex;align-items:center;gap:.65rem;font-size:.78rem;color:rgba(255,255,255,.82)}.auth-pierre img{flex:0 0 auto}.auth-form{padding:2.1rem 2.2rem}@media(max-width: 767.98px){.auth-card{grid-template-columns:1fr}.auth-brand{gap:.8rem;padding:1.4rem 1.5rem}.auth-headline{font-size:1.15rem}.auth-benefits,.auth-pierre{display:none}.auth-form{padding:1.5rem 1.4rem}}