:root{--font-family-primary:Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;--color-page:#f6f8fb;--color-panel:#fff;--color-panel-soft:#f9fbfd;--color-text-primary:#162033;--color-text-secondary:#5d6b82;--color-text-tertiary:#8a96a8;--color-text-inverse:#fff;--color-border-subtle:#dde5ef;--color-border-strong:#c8d3e2;--color-brand:#d99a00;--color-brand-strong:#b47b00;--color-brand-soft:#fff5d8;--color-sidebar:#fff;--color-sidebar-text:#213047;--color-link:#1b6ea8;--color-success:#1f9d62;--color-success-soft:#e7f7ee;--color-warning:#c47a00;--color-warning-soft:#fff4df;--color-danger:#d94343;--color-danger-soft:#fdeaea;--color-info:#2276d2;--chart-amber:#d99a00;--chart-blue:#2276d2;--chart-violet:#8b5cf6;--chart-green:#1f9d62;--chart-red:#d94343;--shadow-soft:0 1px 2px #121f340d, 0 12px 32px #121f340f;--shadow-subtle:0 1px 2px #121f340f;--radius-sm:6px;--radius-md:8px;--space-page:20px}*{box-sizing:border-box}html{background:var(--color-page)}body{background:linear-gradient(180deg, #ffffffe0, #f6f8fbe6 260px), var(--color-page);color:var(--color-text-primary);font-family:var(--font-family-primary);margin:0;font-size:14px;line-height:1.45}a{color:inherit;text-decoration:none}button,.button,input,select,textarea{font:inherit}button,.button{border:1px solid var(--color-brand);border-radius:var(--radius-sm);background:var(--color-brand);color:#1d1602;cursor:pointer;justify-content:center;align-items:center;gap:8px;min-height:36px;padding:8px 12px;font-weight:700;transition:background .14s,border-color .14s,color .14s,box-shadow .14s,transform .14s;display:inline-flex}button:hover,.button:hover{border-color:var(--color-brand-strong);background:#efb21d;box-shadow:0 8px 18px #d99a002e}button:active,.button:active{transform:translateY(1px)}button.secondary,.button.secondary{border-color:var(--color-border-subtle);color:var(--color-text-primary);background:#fff}button.secondary:hover,.button.secondary:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-subtle);background:#f7fafc}button.link-button{min-height:auto;color:var(--color-link);box-shadow:none;background:0 0;border:0;padding:0}button.link-button:hover{color:#0f4f7c;box-shadow:none;background:0 0}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.58}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #d99a0057}.admin-shell{grid-template-columns:264px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--color-border-subtle);background:var(--color-sidebar);height:100vh;color:var(--color-sidebar-text);padding-bottom:20px;transition:width .16s;position:sticky;top:0;overflow-y:auto}.sidebar.collapsed{width:88px}.brand-row{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;align-items:center;gap:12px;min-height:68px;padding:14px 16px;display:flex}.brand{min-width:0;color:var(--color-text-primary);align-items:center;gap:12px;display:flex}.brand-copy{min-width:0}.brand-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:16px;line-height:1.2;display:block;overflow:hidden}.brand span{color:var(--color-text-tertiary);letter-spacing:.08em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:11px;font-weight:700;line-height:1.4;display:block;overflow:hidden}.brand-mark,.login-brand-mark{border-radius:var(--radius-md);color:#191200;letter-spacing:.02em;background:linear-gradient(135deg,#e5a500,#f4c94f);flex:none;place-items:center;width:38px;height:38px;font-size:12px;font-weight:900;display:grid;box-shadow:0 8px 18px #d99a0038}.sidebar-toggle{border-color:var(--color-border-subtle);min-width:34px;min-height:34px;color:var(--color-text-secondary);background:#fff;padding:0}.sidebar-toggle:hover{border-color:var(--color-brand);background:var(--color-brand-soft);color:var(--color-brand-strong)}.sidebar.collapsed .brand{justify-content:center}.sidebar.collapsed .brand-copy,.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-chevron{display:none}.sidebar.collapsed .brand-row{flex-direction:column;align-items:center;padding-inline:12px}.nav-group{padding:4px 10px}.nav-group:first-of-type{margin-top:8px}.nav-parent,.nav-child{border-radius:var(--radius-md);align-items:center;gap:10px;display:flex}.nav-parent{width:100%;min-height:44px;color:var(--color-sidebar-text);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;padding:10px 12px;font-size:14px;font-weight:700}.nav-parent-main{align-items:center;gap:10px;min-width:0;display:flex}.nav-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nav-link{justify-content:flex-start}.nav-chevron{color:var(--color-text-tertiary);font-size:17px;line-height:1}.nav-parent.active,.nav-child.active{background:var(--color-brand-soft);color:var(--color-brand-strong)}.nav-parent:hover,.nav-child:hover{color:var(--color-text-primary);box-shadow:none;background:#f3f6fa}.nav-parent.active:hover,.nav-child.active:hover{background:var(--color-brand-soft);color:var(--color-brand-strong);box-shadow:none}.nav-icon{flex:0 0 24px;place-items:center;width:24px;height:24px;display:grid}.nav-icon-svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:20px;height:20px}.nav-children{gap:2px;padding:2px 0 2px 34px;display:grid}.nav-children[hidden]{display:none}.sidebar.collapsed .nav-parent{justify-content:center;padding-inline:12px}.nav-child{min-height:34px;color:var(--color-text-secondary);padding:7px 10px;font-size:13px;font-weight:600}.main{min-width:0}.topbar{border-bottom:1px solid var(--color-border-subtle);min-height:68px;padding:12px var(--space-page);z-index:10;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffeb;justify-content:space-between;align-items:center;gap:16px;display:flex;position:sticky;top:0}.building-picker,.user-menu{align-items:center;gap:10px;display:flex}.building-picker{min-width:min(340px,100%)}.building-picker label,.toolbar-label{color:var(--color-text-tertiary);letter-spacing:.05em;text-transform:uppercase;font-size:12px;font-weight:800}.building-picker select,.filter-bar input,.filter-bar select,.admin-form input,.admin-form select,.admin-form textarea,.login-form input{border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);min-height:38px;color:var(--color-text-primary);background:#fff;padding:8px 10px;transition:border-color .14s,box-shadow .14s,background .14s}.building-picker select{min-width:210px;font-weight:700}.filter-bar input[type=search]{flex:280px;min-width:260px}.building-picker select:focus,.filter-bar input:focus,.filter-bar select:focus,.admin-form input:focus,.admin-form select:focus,.admin-form textarea:focus,.login-form input:focus{border-color:var(--color-brand);outline:none;box-shadow:0 0 0 4px #d99a0024}.user-copy{align-items:center;gap:8px;display:flex}.status-dot{background:var(--color-success);border-radius:999px;width:8px;height:8px;display:inline-block;box-shadow:0 0 0 4px #1f9d621f}.user-avatar{background:var(--color-brand);color:#1d1602;border-radius:999px;place-items:center;width:38px;height:38px;font-size:12px;font-weight:900;display:grid}.user-avatar.small{width:34px;height:34px;font-size:11px}.profile-menu{position:relative}.profile-trigger{cursor:pointer;border-radius:999px;list-style:none;display:inline-flex}.profile-trigger::-webkit-details-marker{display:none}.profile-trigger:focus-visible{outline-offset:2px;outline:2px solid #d99a008c}.profile-popover{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);z-index:22;background:#fff;width:min(280px,86vw);padding:12px;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 12px 36px #0f172a24}.profile-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.profile-popover form{margin:0}.profile-popover .secondary{width:100%}.profile-popover .logout-button{border-color:var(--color-danger-soft);background:var(--color-danger-soft);color:var(--color-danger)}.profile-popover .logout-button:hover{border-color:var(--color-danger);background:var(--color-danger-soft);color:#b42323}.user-copy{flex-direction:column;align-items:flex-start;gap:1px}.user-copy strong{line-height:1.2}.user-copy span{color:var(--color-text-tertiary);font-size:12px}.content-header{padding:24px var(--space-page) 18px;grid-template-columns:minmax(0,1fr);align-items:start;gap:18px;display:grid}.content-header p{color:var(--color-text-secondary);margin:0 0 6px;font-weight:700}.content-header h1{letter-spacing:0;margin:0;font-size:28px;font-weight:800;line-height:1.15}.content-header small{color:var(--color-text-tertiary);margin-top:8px;font-weight:700;display:inline-flex}.dashboard-charts,.metrics-grid,.split-grid,.summary-grid{padding:0 var(--space-page) 16px;gap:14px;display:grid}.dashboard-charts{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.chart-card{border:1px solid var(--color-border-subtle);background:var(--color-panel);min-height:318px;box-shadow:var(--shadow-soft);border-radius:8px;align-content:start;gap:16px;padding:18px 18px 16px;display:grid;position:relative;overflow:hidden}.chart-card.revenue-card{grid-column:1/-1;min-height:420px}.chart-heading{justify-content:space-between;align-items:flex-start;gap:14px;min-width:0;display:flex}.chart-heading h2{color:var(--color-text-primary);margin:0;font-size:22px;font-weight:850;line-height:1.15}.chart-legend{color:var(--color-text-secondary);flex-wrap:wrap;justify-content:flex-end;gap:8px 14px;font-size:12px;font-weight:750;display:flex}.chart-legend.vertical{justify-content:stretch;gap:10px;width:min(230px,100%);min-width:170px;display:grid}.chart-legend span{white-space:nowrap;align-items:center;gap:7px;display:inline-flex}.chart-legend.vertical span{white-space:normal;grid-template-columns:10px minmax(0,1fr) auto;gap:3px 8px;display:grid}.chart-legend em{min-width:0;color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-style:normal;overflow:hidden}.chart-legend strong{color:var(--color-text-primary);grid-column:2;font-size:13px;line-height:1.2}.chart-legend small{color:var(--color-text-tertiary);background:#f4f7fb;border-radius:999px;grid-area:1/3/span 2;align-self:center;padding:5px 7px;font-size:11px;font-weight:800;line-height:1}.chart-legend i{border-radius:999px;flex:none;width:10px;height:10px;display:inline-block}.chart-summary-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.chart-summary-item{background:#f8fafc;border:1px solid #e7edf5;border-radius:8px;min-width:0;padding:12px}.chart-summary-item span{min-width:0;color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;font-size:12px;font-weight:800;display:flex;overflow:hidden}.chart-summary-item i{border-radius:999px;flex:none;width:9px;height:9px}.chart-summary-item strong{color:var(--color-text-primary);margin-top:8px;font-size:clamp(18px,2vw,26px);font-weight:850;line-height:1.05;display:block}.chart-plot,.donut-plot{min-width:0;position:relative}.chart-svg{width:100%;min-height:240px;display:block}.revenue-svg{min-height:272px}.chart-grid-line{stroke:#e6edf5;stroke-width:1px}.chart-baseline{stroke:#d9e2ee;stroke-width:1.2px}.chart-axis-label{fill:var(--color-text-tertiary);font-size:11px;font-weight:700}.chart-axis-label-strong{fill:var(--color-text-secondary);font-size:12px;font-weight:850}.chart-bar{opacity:.9;transition:opacity .16s,filter .16s,transform .16s}.chart-line{fill:none;stroke:var(--chart-amber);stroke-linecap:round;stroke-linejoin:round;stroke-width:3.5px}.chart-point{fill:var(--chart-amber);stroke:#fff;stroke-width:2.5px;transition:filter .16s,r .16s}.chart-hit-target{cursor:pointer;outline:none}.chart-hit-target:hover,.chart-hit-target:focus-visible{filter:drop-shadow(0 6px 10px #0f172a2e);opacity:1}.chart-hit-target:focus-visible{stroke:var(--color-text-primary);stroke-width:2px}.chart-tooltip{z-index:2;pointer-events:none;min-width:132px;color:var(--color-text-primary);background:#fff;border:1px solid #dbe4ef;border-radius:8px;padding:9px 10px;position:absolute;transform:translate(-50%,calc(-100% - 12px));box-shadow:0 14px 30px #0f172a29}.chart-tooltip:after{content:"";background:#fff;border-bottom:1px solid #dbe4ef;border-right:1px solid #dbe4ef;width:10px;height:10px;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)rotate(45deg)}.chart-tooltip span,.chart-tooltip strong,.chart-tooltip small{display:block}.chart-tooltip span{color:var(--color-text-secondary);font-size:12px;font-weight:800}.chart-tooltip strong{color:var(--color-text-primary);margin-top:4px;font-size:15px;font-weight:850}.chart-tooltip small{color:var(--color-text-tertiary);margin-top:5px;padding-left:12px;font-size:11px;font-weight:750;position:relative}.chart-tooltip small:before{background:var(--tooltip-color);content:"";border-radius:999px;width:7px;height:7px;position:absolute;top:4px;left:0}.donut-layout{justify-content:space-between;align-items:center;gap:22px;min-height:226px;display:flex}.donut-svg{flex:none;width:min(204px,44vw);display:block}.donut-track{fill:none;stroke:#edf1f6;stroke-width:6.8px}.donut-segment{fill:none;pointer-events:stroke;stroke-linecap:butt;stroke-width:6.8px;transition:filter .16s,stroke-width .16s}.donut-segment:hover,.donut-segment:focus-visible{stroke-width:7.8px}.donut-total{fill:var(--color-text-primary);pointer-events:none;font-size:4.8px;font-weight:850}.donut-caption{fill:var(--color-text-tertiary);pointer-events:none;font-size:2.7px;font-weight:800}.metrics-grid{grid-template-columns:repeat(5,minmax(160px,1fr))}.metric-card{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-panel);min-height:124px;box-shadow:var(--shadow-soft);color:var(--color-text-primary);align-items:flex-start;gap:14px;padding:18px;display:flex}.metric-icon{border:1px solid var(--color-border-subtle);width:38px;height:38px;color:var(--color-text-secondary);background:0 0;border-radius:999px;flex:none;place-items:center;display:grid}.metric-card span,.metric-card strong,.metric-card small,.summary-card span,.summary-card strong{display:block}.metric-card span{color:var(--color-text-secondary);font-weight:800}.metric-card strong{letter-spacing:0;margin-top:16px;font-size:clamp(20px,1.8vw,28px);line-height:1.05}.metric-card small{color:var(--color-text-tertiary);margin-top:12px;font-size:12px;font-weight:700}.split-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-grid>.panel{min-width:0;margin:0}.panel,.filter-bar,.route-actions,.notice{margin:0 var(--space-page) 16px}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.summary-card{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-panel);box-shadow:var(--shadow-subtle);padding:16px}.summary-card span{color:var(--color-text-secondary);font-size:13px;font-weight:800}.summary-card strong{margin-top:8px;font-size:24px;line-height:1.1}.panel{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-panel);box-shadow:var(--shadow-soft);overflow:hidden}.panel-heading{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;align-items:center;gap:14px;padding:16px;display:flex}.panel-heading h2{margin:0;font-size:17px;font-weight:850;line-height:1.2}.panel-heading p{color:var(--color-text-tertiary);margin:4px 0 0;font-size:12px;font-weight:700}.filter-bar,.route-actions{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-panel);box-shadow:var(--shadow-subtle);flex-wrap:wrap;align-items:center;gap:10px;padding:12px;display:flex}.route-actions{justify-content:flex-end}.route-actions .toolbar-label,.filter-bar .toolbar-label{margin-right:2px}.table-wrap{overflow-x:auto}table{border-collapse:separate;border-spacing:0;white-space:nowrap;width:100%}th,td{text-align:left;vertical-align:middle;border-bottom:1px solid #edf1f6;padding:12px}th{background:var(--color-panel-soft);color:var(--color-text-secondary);letter-spacing:.02em;text-transform:uppercase;font-size:12px;font-weight:850}td{color:var(--color-text-primary);font-size:13px}tbody tr:hover td{background:#fbfcfe}tbody tr:last-child td{border-bottom:0}.link-button{color:var(--color-link);background:0 0;border:0;min-height:auto;padding:0}.table-actions{align-items:center;gap:10px;display:flex}.table-actions a,.table-actions button{font-weight:800}.table-actions form{margin:0}.status-pill{border-radius:999px;align-items:center;min-height:24px;padding:3px 9px;font-size:12px;font-weight:850;display:inline-flex}.status-pill.success{background:var(--color-success-soft);color:var(--color-success)}.status-pill.warning{background:var(--color-warning-soft);color:var(--color-warning)}.status-pill.danger{background:var(--color-danger-soft);color:var(--color-danger)}.status-pill.neutral{color:var(--color-text-secondary);background:#eef2f6}.admin-form,.import-box{gap:14px;padding:16px;display:grid}.admin-form{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-form label,.import-box label{color:var(--color-text-secondary);gap:7px;font-weight:800;display:grid}.admin-form textarea{resize:vertical;min-height:112px}.admin-form .route-actions{box-shadow:none;background:0 0;border:0;grid-column:1/-1;margin:4px 0 0;padding:0}.embedded-actions{background:0 0}.notice{border:1px solid var(--color-border-subtle);border-left:4px solid var(--color-warning);border-radius:var(--radius-md);color:#694500;background:#fffaf0;padding:12px 14px;font-weight:700}.notice.success{border-left-color:var(--color-success);background:var(--color-success-soft);color:#17613f}.notice.error{border-left-color:var(--color-danger);background:var(--color-danger-soft);color:#922828}.notice.compact{margin:0}.login-page{background:radial-gradient(circle at 0 0,#d99a0029,#0000 30%),linear-gradient(#f8fafc 0%,#eef3f8 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);width:min(940px,100%);color:var(--color-text-primary);background:#fffffff0;grid-template-columns:minmax(0,1.05fr) minmax(320px,420px);gap:20px;padding:28px;display:grid;box-shadow:0 26px 70px #121f3424}.login-copy{border-radius:var(--radius-md);background:linear-gradient(135deg, #d99a001f, #2276d20f), var(--color-panel-soft);flex-direction:column;justify-content:center;min-height:320px;padding:28px;display:flex}.login-brand{align-items:center;gap:12px;margin-bottom:28px;font-size:18px;font-weight:900;display:flex}.login-copy p:first-of-type{color:var(--color-brand-strong);letter-spacing:.08em;text-transform:uppercase;margin-top:0;font-size:12px;font-weight:900}.login-copy h1{letter-spacing:0;margin:0 0 12px;font-size:40px;line-height:1.08}.login-copy p:last-child{max-width:520px;color:var(--color-text-secondary);margin:0;font-weight:700}.login-form,.seed-users{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-subtle);background:#fff;padding:18px}.login-form{align-content:start;gap:14px;display:grid}.login-form label{color:var(--color-text-secondary);gap:7px;font-weight:800;display:grid}.login-form input{min-height:44px}.seed-users{color:var(--color-text-secondary);margin-top:16px}.seed-users strong{color:var(--color-text-primary)}.seed-users p{margin:8px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}@media (max-width:1180px){.dashboard-charts{grid-template-columns:1fr}.chart-card.revenue-card{grid-column:auto}.metrics-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}.summary-grid{grid-template-columns:1fr}.content-header{grid-template-columns:minmax(0,1fr)}}@media (max-width:1024px){:root{--space-page:16px}.admin-shell{grid-template-columns:220px minmax(0,1fr)}.sidebar.collapsed{width:76px}.admin-form{grid-template-columns:1fr}}@media (max-width:760px){.admin-shell{display:block}.sidebar{width:100%;height:auto;max-height:48vh;position:static}.sidebar.collapsed{width:100%}.sidebar.collapsed .brand-copy,.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-chevron{display:block}.sidebar.collapsed .brand-row{flex-direction:row;align-items:center;padding-inline:16px}.sidebar.collapsed .brand{justify-content:flex-start}.sidebar.collapsed .nav-parent{justify-content:space-between;padding-inline:12px}.topbar{flex-direction:column;align-items:stretch;position:static}.building-picker,.user-menu{align-items:stretch}.building-picker{min-width:0}.building-picker select{flex:180px;min-width:0}.content-header{grid-template-columns:1fr;gap:10px}.content-header h1{font-size:24px}.user-menu{justify-content:flex-end}.metrics-grid,.split-grid,.summary-grid{grid-template-columns:1fr}.chart-heading,.donut-layout{flex-direction:column;align-items:flex-start}.chart-summary-strip{grid-template-columns:1fr}.chart-legend{justify-content:flex-start}.chart-legend.vertical{width:100%}.chart-svg{min-height:180px}.revenue-svg{min-height:220px}.filter-bar input[type=search]{min-width:100%}.route-actions{justify-content:flex-start}.login-card{grid-template-columns:1fr;padding:18px}.login-copy{min-height:auto}.login-copy h1{font-size:32px}}
