/* App shell */
#app{padding-left:224px}header{position:fixed;inset:0 auto 0 0;width:224px;z-index:10;background:#202537;color:#fff;padding:34px 18px 22px;display:flex;flex-direction:column}.header-top-row{display:contents}.header-logo-fallback{padding:0 14px 30px}.header-logo{display:none}.brand-name{font-size:1.65rem;letter-spacing:-1px;font-weight:700;color:#fff;line-height:1.2}.brand-name span{color:#b9acf0;font-weight:450}.brand-caption{display:block;color:#b7bdcd;font-size:.75rem;margin-top:8px;letter-spacing:.06em}.header-actions{order:2;margin-top:auto;padding:24px 10px 0;border-top:1px solid #ffffff1c;display:grid;grid-template-columns:1fr 1fr;gap:10px}.header-actions>div{grid-column:1/-1}.company-name{font-size:.875rem;color:#d6d9e5;margin-bottom:6px}#last-updated{font-size:.75rem;line-height:1.6;color:#b7bdcd}.header-actions .clear-btn{background:transparent;border-color:#ffffff26;color:#e9eaf2;font-size:.8125rem;padding:8px}.header-actions .clear-btn:hover{background:#ffffff10}.tab-nav{display:flex;flex-direction:column;gap:7px}.tab-btn{border:0;background:transparent;color:#bdc3d4;display:flex;align-items:center;gap:12px;text-align:left;padding:13px 15px;border-radius:9px;font-size:.9375rem;font-weight:550;min-height:48px}.tab-btn svg{width:19px;height:19px;opacity:.9}.tab-btn:hover{background:#ffffff0a;color:#fff}.tab-btn.active{background:#ffffff12;color:#fff;box-shadow:inset 3px 0 #b9acf0}.office-bar{min-height:92px;background:#fff;border-bottom:1px solid var(--border);padding:18px 36px;display:flex;align-items:center;gap:24px}.office-bar .col-filter-wrap{flex:0 1 310px}.office-bar label{font-size:.75rem!important}.office-bar select{font-weight:600;background:#f8f9fc}.office-bar p{flex:1;font-size:.8125rem;color:var(--muted)}.connection-badge{color:#14684e;background:#eaf6f0;padding:6px 10px;border:1px solid #cce9dc;border-radius:6px;font-size:.75rem;font-weight:600;white-space:nowrap}.page-heading{padding:28px 36px 22px;display:flex;justify-content:space-between;align-items:center;gap:16px}.page-heading h1{font-size:1.875rem;font-weight:650;letter-spacing:-.8px;line-height:1.25}.page-heading p{font-size:.875rem;color:var(--muted);margin-top:7px}.page-eyebrow{font-size:.75rem;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:7px}.stats-bar{margin:0 36px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.stat-card{min-width:0;padding:20px 24px;position:relative}.stat-card+.stat-card::before{content:'';position:absolute;left:0;top:22px;bottom:22px;width:1px;background:var(--border)}.stat-card .lbl{font-size:.875rem;color:var(--muted)}.stat-card .val{font-size:1.875rem;font-weight:650;letter-spacing:-.7px;font-variant-numeric:tabular-nums;margin-top:5px}.stat-card:last-child .val{color:var(--purple)}main{padding:24px 36px 32px;min-width:0}#notice{margin:20px 36px 0;border:1px solid #e8c982;background:#fff8e6;color:#735215;border-radius:10px;padding:14px 18px;font-size:.875rem}.app-footer{margin-top:32px;padding-top:20px;border-top:1px solid var(--border);color:var(--muted);font-size:.75rem;text-align:center}
/* Filters and tables */
.controls-card{border:1px solid var(--border);border-radius:var(--radius);padding:20px;background:#fff;margin-bottom:18px}.controls-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px}.search-wrap{flex:1;min-width:200px;position:relative}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);display:flex}.search-icon svg{width:18px;height:18px}#global-search{width:100%;padding-left:42px;background:#f8f9fc}.col-filters{display:grid;grid-template-columns:2fr repeat(4,minmax(0,1fr));gap:14px}.col-filter-wrap{display:flex;flex-direction:column;gap:7px;min-width:0}.col-filter-wrap label{font-size:.875rem;font-weight:550;color:var(--muted)}.col-filter-wrap input,.col-filter-wrap select{width:100%}#export{background:#f0edf9;border-color:#e2dcf4;color:#4e3f8a}.view-explanation{font-size:.875rem;line-height:1.65;color:var(--muted);margin:0 0 18px;max-width:105ch}.view-notes{font-size:.875rem;color:var(--muted);margin-bottom:18px}.view-notes summary{display:inline-block;text-decoration:underline;text-decoration-color:#bac2cf;text-underline-offset:4px;cursor:pointer}.view-notes[open] summary{margin-bottom:10px}.table-wrap,.group-breakdown{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-sm)}table{width:100%;border-collapse:collapse;text-align:left;font-variant-numeric:tabular-nums}thead{background:#f0f2f7;color:#485469}th{padding:15px 18px;font-size:.8125rem;font-weight:650;text-align:left;white-space:nowrap;border-bottom:1px solid var(--border)}td{padding:16px 18px;font-size:.875rem;vertical-align:middle;border-bottom:1px solid #e9edf3}tbody tr:last-child td{border-bottom:0}tbody tr:nth-child(even){background:#fbfcfe}tbody tr:hover{background:#f1f3fb}#vacancy-table{min-width:1020px}#vacancy-table td:first-child{min-width:220px;max-width:320px}#vacancy-table td:nth-child(5){white-space:nowrap;font-weight:600}#vacancy-table td button,.overview-unit{border:0;background:transparent;font:inherit;font-weight:600;color:#3b396a;text-align:left;padding:0;line-height:1.55;cursor:pointer}#vacancy-table td button:hover,.overview-unit:hover{text-decoration:underline;text-underline-offset:3px}.sort-button{border:0;background:none;padding:0;font:inherit;color:inherit;text-align:left;display:block;width:100%;min-height:24px}.sort-button:hover{color:var(--purple)}th[aria-sort=ascending],th[aria-sort=descending]{color:#4b3988;background:#eae7f5}.status-pill{display:inline-block;font-size:.75rem;font-weight:600;padding:4px 8px;border-radius:5px;white-space:nowrap;background:#edf0f5;color:#516073;margin:2px 0}.status-pill.vacant{background:#e8f5ef;color:#14684e}.status-pill.future{background:#fff4d9;color:#805700}.status-pill.listed{background:#eeeafa;color:#57428f}.table-footer{padding:14px 18px;display:flex;justify-content:space-between;gap:16px;background:#fff;border-top:1px solid var(--border);font-size:.8125rem;color:var(--muted)}.pagination{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:14px;margin-top:18px;font-size:.875rem;color:var(--muted)}.page-size-label{display:flex;align-items:center;gap:10px;margin-right:auto}#page-size{min-height:38px;padding:7px 10px}.empty-state,.overview-empty{padding:36px 24px;font-size:.9375rem;color:var(--muted);text-align:center;line-height:1.7}.overview-empty{background:#f8f9fc;border-radius:8px}.group-breakdown table{min-width:640px}.breakdown-table th{background:#30354f;color:#fff}.breakdown-table td:first-child{font-weight:550}#mobile-cards{display:none}
/* Office health and statistics */
.overview-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:26px 0 20px}.overview-heading h2{font-size:1.375rem;font-weight:650;letter-spacing:-.35px}.overview-heading p{font-size:.875rem;color:var(--muted);margin-top:5px}.overview-heading label{display:flex;gap:10px;align-items:center;font-size:.875rem;color:var(--muted);white-space:nowrap}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stats-kpi{padding:22px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);min-width:0}.kpi-label{font-size:.875rem;color:var(--muted);font-weight:550}.kpi-val{font-size:2rem;line-height:1.25;letter-spacing:-.8px;font-weight:650;font-variant-numeric:tabular-nums;margin:10px 0 6px}.kpi-sub{font-size:.8125rem;color:var(--muted);line-height:1.6}.kpi-val.green{color:#167459}.kpi-val.red{color:#a73b4d}.kpi-val.amber{color:#8e6114}.kpi-val.purple{color:var(--purple)}.overview-kpis .stats-kpi:first-child{background:#eeebf8;border-color:#dcd4f2}.goal-card{background:#2d304a;color:#fff;border-radius:var(--radius);padding:28px 30px;margin:20px 0 30px}.goal-card h3{font-size:1.125rem;font-weight:600}.goal-sub{font-size:.875rem;color:#d3d5e4;margin-top:6px}.goal-field{display:flex;align-items:center;gap:16px;margin-top:20px}.goal-field label{font-size:.875rem}.goal-field input{width:110px}.occupancy-track{height:12px;border-radius:6px;background:#ffffff20;margin:25px 0;position:relative}.occupancy-track div{height:100%;border-radius:6px;background:#b1a3ee;max-width:100%}.occupancy-track span{position:absolute;left:95%;top:-5px;height:22px;border-left:2px solid #fff}.overview-goal-result{font-size:1.375rem;letter-spacing:-.3px;font-weight:600;margin:14px 0 20px}.overview-forecast{font-size:.9375rem;line-height:1.75;color:#e7e7f0;max-width:100ch}.overview-caveat{font-size:.8125rem;color:#c2c6d8;line-height:1.7;margin-top:12px;max-width:110ch}.stats-section-title{font-size:1.125rem;font-weight:650;letter-spacing:-.2px;margin:30px 0 12px}.stats-section-title:first-child{margin-top:8px}.overview-details{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:19px 22px;margin:16px 0}.overview-details>summary{font-weight:600;font-size:.9375rem;cursor:pointer;color:#303a51;padding:3px 0}.overview-details>summary::marker{color:#73669e}.overview-details[open]>summary{margin-bottom:18px}.overview-details .group-breakdown{box-shadow:none;border-radius:9px}.change-positive{color:#167459;font-weight:600;white-space:nowrap}.change-negative{color:#a33343;font-weight:600;white-space:nowrap}.rent-schedule-warning{display:block;white-space:normal;min-width:185px;max-width:270px;margin-top:8px;padding:9px 12px;background:#fff0a8;color:#6b2600;border:2px solid #a34300;border-radius:6px;font-size:.8125rem;font-weight:800;line-height:1.5}.overview-warning{padding:16px 20px;background:#fff4da;color:#775215;border:1px solid #eed59c;border-radius:10px;margin-bottom:20px;font-size:.875rem}.bd-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:14px}.bd-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:20px}.bd-type{font-size:.875rem;color:var(--muted)}.bd-count{font-size:1.625rem;font-weight:650;margin-top:8px;font-variant-numeric:tabular-nums}
/* Apartment details */
dialog{margin:auto;border:1px solid var(--border);border-radius:18px;padding:32px;width:min(680px,calc(100vw - 32px));max-height:88vh;color:var(--text);box-shadow:0 24px 80px #141b3b33}dialog::backdrop{background:#19213699;backdrop-filter:blur(3px)}.dialog-close{float:right;padding:8px 12px}.detail-title{font-size:1.375rem;line-height:1.4;letter-spacing:-.3px;padding-right:50px;margin:4px 0 8px}.detail-subtitle{font-size:.9375rem;color:var(--muted);margin-bottom:24px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;background:#f7f8fc;border:1px solid #e6eaf2;border-radius:12px;padding:8px 20px}.detail-item{padding:14px 0;border-bottom:1px solid #e2e7f0}.detail-item:last-child{grid-column:1/-1;border-bottom:0}.detail-label{font-size:.8125rem;color:var(--muted);margin-bottom:5px}.detail-value{font-size:.9375rem;font-weight:550}.description{white-space:pre-wrap;font-size:.9375rem;line-height:1.8;margin-top:22px}.buildium-lease-link{display:inline-flex;align-items:center;margin:0 0 16px;padding:11px 16px;border-radius:8px;background:#57459b;color:#fff;text-decoration:none;font-size:.875rem;font-weight:600}.buildium-lease-link:hover{background:#443580}
/* Sign in */
#login-screen{min-height:100dvh;display:grid;place-items:center;background:#202537;padding:28px;position:relative}.login-box{width:100%;max-width:430px;border:1px solid #e1e5ef;border-radius:18px;background:#fff;padding:38px;text-align:left;box-shadow:0 30px 100px #0003}.login-logo{height:58px;width:auto;max-width:100%;object-fit:contain;object-position:left;margin-bottom:30px}.login-eyebrow{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:7px}.login-box h3{font-size:1.75rem;letter-spacing:-.7px;font-weight:650;margin-bottom:8px}.login-intro{font-size:.9375rem;color:var(--muted);line-height:1.6;margin-bottom:28px}.login-field label{display:block;font-size:.875rem;font-weight:550;margin-bottom:8px}.login-field input{width:100%;min-height:48px;background:#f8f9fc}#login-error{font-size:.875rem;color:#a33343;line-height:1.6;margin:10px 0;min-height:20px}.login-btn{border:0;border-radius:8px;background:#57459b;color:white;width:100%;padding:13px;font-weight:600;min-height:48px}.login-btn:hover{background:#443580}.login-footer{margin-top:26px;padding-top:20px;border-top:1px solid var(--border);font-size:.75rem;color:var(--muted)}
/* Responsive layout */
@media(min-width:1800px){main,.page-heading,.office-bar{padding-left:48px;padding-right:48px}.stats-bar{margin-left:48px;margin-right:48px}}
@media(max-width:1200px){#app{padding-left:192px}header{width:192px;padding-left:12px;padding-right:12px}.brand-name{font-size:1.45rem}.tab-btn{gap:9px;padding:12px 10px;font-size:.875rem}.office-bar,main,.page-heading{padding-left:24px;padding-right:24px}.stats-bar{margin-left:24px;margin-right:24px}.office-bar{gap:16px}.office-bar p{display:none}.office-bar .connection-badge{margin-left:auto}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.col-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.col-filter-wrap:first-child{grid-column:span 1}.stat-card{padding:18px}.stat-card .val{font-size:1.625rem}}
@media(max-width:850px){#app{padding-left:0}header{position:static;width:auto;padding:18px 24px 0;display:block}.header-top-row{display:flex;justify-content:space-between;align-items:center;gap:16px}.header-logo-fallback{padding:0}.brand-caption{display:none}.header-actions{display:flex;margin:0;border:0;padding:0;gap:8px}.header-actions>div{display:none}.tab-nav{flex-direction:row;overflow-x:auto;gap:8px;margin-top:18px}.tab-btn{white-space:nowrap;border-radius:8px 8px 0 0;min-height:48px;padding:12px 14px}.tab-btn.active{box-shadow:inset 0 -3px #b9acf0}.office-bar{min-height:80px}.page-heading{padding-top:24px}.stats-bar{grid-template-columns:repeat(4,minmax(0,1fr))}.stat-card .lbl{font-size:.8125rem}}
@media(max-width:600px){header{padding:18px 16px 0}.header-actions .clear-btn{min-height:36px;padding:7px 10px}.tab-btn{font-size:.875rem;padding:12px 10px}.tab-btn svg{display:none}.tab-nav{gap:2px}.office-bar{padding:16px;gap:12px;align-items:flex-end}.office-bar .col-filter-wrap{flex:1}.connection-badge{font-size:.75rem;padding:5px 7px;margin-bottom:10px}.office-bar select{font-size:.875rem}.page-heading{padding:22px 16px 18px}.page-heading h1{font-size:1.625rem}.stats-bar{margin:0 16px;grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card{padding:15px 18px}.stat-card:nth-child(3),.stat-card:nth-child(4){border-top:1px solid var(--border)}.stat-card:nth-child(3)::before{display:none}.stat-card .val{font-size:1.625rem}main{padding:18px 16px 26px}.controls-card{padding:16px}.controls-top{gap:8px}.search-wrap{flex-basis:100%;min-width:0}.controls-top>.clear-btn{flex:1}.col-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.col-filters>.col-filter-wrap:first-child{grid-column:1/-1}.col-filter-wrap label{font-size:.875rem}.view-explanation{font-size:.875rem}#table-section .table-wrap{display:none}#mobile-cards{display:block}.mob-card{display:block;width:100%;border:1px solid var(--border);border-radius:12px;padding:16px;background:#fff;text-align:left;margin-bottom:12px}.mob-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.mob-building{font-size:.9375rem;font-weight:600;line-height:1.6;overflow-wrap:anywhere}.mob-unit{font-size:.875rem;white-space:nowrap;color:var(--muted)}.mob-card-bottom{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.mob-chip{font-size:.8125rem;background:#f0f2f7;padding:4px 8px;border-radius:5px;color:#536077}.mob-chip.rent{color:#272f43;font-weight:600}.page-size-label{flex-basis:100%}.pagination{gap:10px;justify-content:space-between}.pagination .clear-btn{padding:8px 10px}.overview-heading{flex-direction:column;align-items:flex-start}.stats-grid{gap:10px}.stats-kpi{padding:17px}.kpi-val{font-size:1.75rem}.kpi-label{font-size:.875rem}.kpi-sub{font-size:.8125rem}.goal-card{padding:22px}.overview-goal-result{font-size:1.1875rem}.overview-details{padding:16px}.group-breakdown{max-width:100%}.detail-grid{grid-template-columns:1fr}.detail-item:last-child{grid-column:auto}dialog{padding:24px}.login-box{padding:30px 26px}#notice{margin:16px}.app-footer{line-height:1.7}.goal-field{flex-wrap:wrap}}
@media print{#app{padding:0}header,.office-bar,#controls,.pagination,.app-footer{display:none!important}main{padding:16px 0}.stats-bar{margin:0}.page-heading{padding:0 0 20px}.goal-card{background:#fff;color:#202b3d;border:1px solid #aaa}.goal-card p{color:#202b3d}.group-breakdown,.table-wrap{box-shadow:none}.overview-details{break-inside:avoid}}

#data-freshness{margin:18px 36px 0;padding:14px 18px;border:1px solid #e8c982;background:#fff8e6;color:#735215;border-radius:10px;font-size:.875rem}@media(max-width:600px){#data-freshness{margin:16px}}

/* Visible sign-in progress, with a static indicator for reduced motion. */
.login-progress{display:flex;align-items:center;gap:16px;margin-top:22px;padding:18px 16px;background:#f1eefb;border:1px solid #ddd5f1;border-radius:12px;text-align:left}.login-spinner{display:block;flex:0 0 42px;width:42px;height:42px;border:4px solid #d8d0ed;border-top-color:#57459b;border-right-color:#57459b;border-radius:50%;animation:login-spin .85s linear infinite}.login-progress strong{display:block;color:#3e316e;font-size:.9375rem;line-height:1.5}.login-progress p{color:#5e5575;font-size:.875rem;line-height:1.6;margin-top:4px}.login-btn:disabled{opacity:1;background:#756796;color:#fff;cursor:wait}@keyframes login-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.login-spinner{animation:none}}

.scheduled-rent-changes{border:2px solid #8774ba;background:#faf8ff}.scheduled-rent-changes>summary{font-size:1.125rem;font-weight:750;color:#392764}

/* First-visit guided walkthrough */
.header-actions #take-tour{grid-column:1/-1}
dialog.tour-overlay{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;overflow:hidden;color:#263047;box-shadow:none}
.tour-overlay::backdrop{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.tour-spotlight{position:fixed;border:3px solid #c5b3ff;border-radius:12px;box-shadow:0 0 0 9999px #12182cbd;pointer-events:none}
.tour-card{position:fixed;width:min(390px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow:auto;background:#fff;border:1px solid #e3dcef;border-radius:16px;padding:24px;box-shadow:0 18px 65px #12182c55}
.tour-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}#tour-count{font-size:11px;font-weight:750;letter-spacing:.08em;color:#6c578f}
.tour-card button{font:inherit;cursor:pointer;border-radius:8px;min-height:42px;padding:8px 13px}.tour-card #tour-skip{border:0;background:transparent;color:#60697b;font-size:13px;padding:4px;white-space:nowrap}
.tour-card h2{font-size:22px;line-height:1.3;margin:0 0 12px;color:#29233f;letter-spacing:-.4px}.tour-card p{font-size:15px;line-height:1.7;color:#526078;margin:0}
.tour-actions{display:flex;justify-content:space-between;gap:12px;margin-top:22px}#tour-back{border:1px solid #dce0e8;background:#fff;color:#49566e}#tour-back:disabled{opacity:.4;cursor:default}#tour-next{border:1px solid #655099;background:#655099;color:#fff;font-weight:650}.tour-card button:focus-visible{outline:3px solid #a390d1;outline-offset:3px}
