:root { --ink:#102a43; --muted:#6b7d90; --line:#e5ebef; --paper:#f7f9fa; --panel:#fff; --blue:#137c8b; --blue-dark:#0d6470; --blue-soft:#e9f6f5; --orange:#db7a20; --orange-soft:#fff4e8; --green:#21805c; --green-soft:#eaf7f1; --red:#bf4b4b; --radius:14px; }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font:14px 'DM Sans',sans-serif; }
button, input, select, textarea { font:inherit; }
button { cursor:pointer; }
.app-shell { min-height:100vh; display:flex; }
.login-screen{position:fixed;inset:0;background:#f7f9fa;z-index:10;display:grid;grid-template-columns:minmax(350px,1fr) minmax(320px,.9fr);align-items:stretch}.login-screen.hidden{display:none}.login-panel{max-width:520px;width:100%;justify-self:end;padding:70px 76px;display:flex;flex-direction:column;justify-content:center}.login-brand{color:var(--ink);text-decoration:none;font:700 20px Manrope,sans-serif;display:flex;align-items:center;gap:9px;margin-bottom:52px}.login-brand .brand-light{color:var(--blue)}.login-panel h1{font:800 32px/1.17 Manrope,sans-serif;letter-spacing:-1px;margin:0 0 12px}.login-copy{color:var(--muted);line-height:1.55;margin:0 0 26px}.role-picker{display:grid;gap:9px}.role-card{border:1px solid var(--line);background:white;text-align:left;border-radius:10px;padding:14px 15px}.role-card.selected{border:2px solid var(--blue);background:var(--blue-soft);padding:13px 14px}.role-card strong,.role-card span{display:block}.role-card strong{font-size:13px}.role-card span{color:var(--muted);font-size:11px;margin-top:4px}.login-button{width:100%;margin:20px 0 12px}.login-panel small{color:var(--muted);text-align:center;font-size:10px}.login-aside{background:#103747;color:white;padding:70px;display:flex;flex-direction:column;justify-content:center}.login-aside>p{font-size:10px;letter-spacing:1.4px;color:#85c9c4;font-weight:700}.login-aside blockquote{font:700 28px/1.35 Manrope,sans-serif;letter-spacing:-.8px;margin:20px 0 36px;max-width:390px}.login-aside>div{display:flex;gap:9px;flex-wrap:wrap}.login-aside>div span{color:#d6e9e8;border:1px solid #3f6772;border-radius:20px;padding:7px 9px;font-size:11px}
.sidebar { width:248px; background:#0c2435; color:#d7e2e7; display:flex; flex-direction:column; padding:25px 14px 16px; position:fixed; inset:0 auto 0 0; }
.brand { color:#fff; text-decoration:none; font:700 20px Manrope,sans-serif; display:flex; align-items:center; gap:9px; padding:0 10px 32px; }.brand-mark { width:31px;height:31px; display:grid;place-items:center;background:#3dbaa8;border-radius:9px;color:#0d3445;font-weight:800; }.brand-light{color:#79d3c5; font-weight:600;}
.workspace-label,.eyebrow { font-size:10px; letter-spacing:1.2px; text-transform:uppercase; color:var(--muted); font-weight:700; margin:0 0 7px; }.sidebar .workspace-label{color:#8298a6;margin:0 10px 8px;}
.workspace-switcher{display:grid;gap:4px;margin-bottom:27px}.workspace-button{border:0;background:transparent;color:#bdccd3;text-align:left;padding:10px;border-radius:8px;font-weight:500}.workspace-button.active,.workspace-button:hover{background:#183b4e;color:#fff}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;background:#69d1b8;margin-right:9px}.command-dot{background:#f2b36c}.nav{display:grid;gap:4px}.nav-link{color:#b4c5ce;text-decoration:none;padding:10px;border-radius:8px;display:flex;justify-content:space-between;align-items:center;font-weight:500}.nav-link:hover,.nav-link.active{background:#173a4d;color:white}.nav-count{font-size:11px;background:#274b5d;border-radius:20px;padding:2px 7px}.alert-count{background:#704025;color:#ffd19f}.sidebar-bottom{margin-top:auto}.team-card{border-top:1px solid #234355;padding:17px 9px 11px;display:flex;gap:9px;align-items:center}.team-card strong,.team-card span{display:block}.team-card strong{font-size:12px;color:#fff}.team-card span{font-size:11px;color:#91a8b5;margin-top:2px}.avatar{width:30px;height:30px;border-radius:50%;background:#e4b47c;color:#43311d;display:grid;place-items:center;font-size:10px;font-weight:700}.help-button{border:0;background:transparent;color:#91a8b5;padding:8px 9px;font-size:12px}
.main-content{margin-left:248px;width:calc(100% - 248px);padding:35px 42px 60px;max-width:1600px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.topbar h1,.page-tools h2,.panel h2,.modal-heading h2{margin:0;font:700 23px Manrope,sans-serif;letter-spacing:-.5px}.topbar-actions{display:flex;align-items:center;gap:11px}.icon-button{border:1px solid var(--line);background:var(--panel);height:38px;width:38px;border-radius:9px;color:var(--ink);position:relative}.icon-button span{width:7px;height:7px;border:1px solid white;background:var(--orange);border-radius:50%;position:absolute;top:7px;right:8px}.primary-button,.outline-button{border-radius:8px;padding:10px 14px;font-weight:600;border:1px solid var(--blue)}.primary-button{background:var(--blue);color:#fff}.primary-button:hover{background:var(--blue-dark)}.outline-button{background:#fff;color:var(--blue)}
.page{display:none}.page.active-page{display:block}.society-context{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:13px 16px;display:flex;align-items:center;gap:11px;margin-bottom:20px}.building-icon{background:var(--blue-soft);color:var(--blue);height:35px;width:35px;display:grid;place-items:center;border-radius:9px;font-size:21px}.society-context strong,.society-context span{display:block}.society-context strong{font-weight:700}.society-context span{color:var(--muted);font-size:12px;margin-top:2px}.society-context .outline-button{margin-left:auto;font-size:12px;padding:7px 10px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.stat-card,.panel,.table-panel,.document-card,.vendor-card,.approval-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.stat-card{padding:17px}.stat-card p{color:var(--muted);margin:0 0 9px;font-size:12px}.stat-card strong{font:700 23px Manrope,sans-serif;display:block;letter-spacing:-.5px}.stat-card span{font-size:11px;color:var(--muted);margin-top:7px;display:block}.positive,.positive-text{color:var(--green)!important}.warning{color:var(--orange)!important}.dashboard-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:20px}.panel{padding:20px;min-height:226px}.panel-heading,.page-tools{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.panel h2,.page-tools h2{font-size:16px;letter-spacing:-.2px}.text-button{background:transparent;border:0;color:var(--blue);font-weight:600;font-size:12px;padding:3px}.chart-key{display:flex;gap:13px;color:var(--muted);font-size:11px;margin:17px 0 5px}.key-dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:4px}.income{background:var(--blue)}.expense{background:#9bb5bf}.bar-chart{height:126px;display:flex;justify-content:space-around;align-items:end;border-bottom:1px solid var(--line);padding:0 9px}.chart-column{height:100%;display:flex;align-items:end;gap:3px;position:relative;padding-bottom:22px}.chart-column .bars{height:100%;display:flex;align-items:end;gap:3px}.bars i,.bars b{display:block;width:15px;border-radius:4px 4px 0 0}.bars i{background:var(--blue)}.bars b{background:#aebfc6}.chart-column span{position:absolute;bottom:2px;color:var(--muted);font-size:10px}.approval-list,.ticket-list{margin-top:11px}.approval-item,.ticket-item{padding:12px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}.approval-item:last-child,.ticket-item:last-child{border:0}.item-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--orange-soft);color:var(--orange);font-weight:700}.ticket-item .item-icon{background:var(--blue-soft);color:var(--blue)}.item-main{flex:1;min-width:0}.item-main strong,.item-main span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-main strong{font-size:12px}.item-main span{font-size:11px;color:var(--muted);margin-top:3px}.amount{font-size:12px;font-weight:700}.status{font-style:normal;font-size:10px;font-weight:700;border-radius:20px;padding:4px 7px;white-space:nowrap}.pending{background:#fff2df;color:#a55e13}.good{background:var(--green-soft);color:var(--green)}.neutral{background:#eef3f5;color:#59707e}.compliance-item{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:13px 0}.compliance-item:last-child{border:0}.date-block{width:34px;text-align:center;color:var(--blue);font-size:10px;line-height:1.1}.date-block b{font-size:17px;display:block}.compliance-item div{flex:1}.compliance-item strong,.compliance-item span{display:block}.compliance-item strong{font-size:12px}.compliance-item span{font-size:11px;color:var(--muted);margin-top:3px}
.page-tools{margin-bottom:20px}.filter-row{display:flex;gap:8px;margin-bottom:18px}.filter{border:1px solid var(--line);background:#fff;color:var(--muted);padding:8px 11px;border-radius:20px;font-size:12px}.filter.active{border-color:var(--blue);color:var(--blue);background:var(--blue-soft)}.filter span{font-weight:700;margin-left:3px}.table-panel{overflow:hidden}.table-panel table{width:100%;border-collapse:collapse;text-align:left}.table-panel th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px;padding:13px 18px;background:#fbfcfc}.table-panel td{border-top:1px solid var(--line);padding:15px 18px;font-size:12px}.table-panel td strong,.table-panel td small{display:block}.table-panel td small{font-size:11px;color:var(--muted);margin-top:3px}.approval-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.approval-card{padding:18px}.approval-card .approval-top{display:flex;justify-content:space-between;margin-bottom:20px}.approval-card h3{font:700 15px Manrope,sans-serif;margin:0 0 7px}.approval-card p{font-size:12px;color:var(--muted);line-height:1.5;min-height:37px}.approval-card .approval-amount{font-size:21px;font-weight:700;margin:19px 0 13px}.approval-card footer{border-top:1px solid var(--line);padding-top:13px;display:flex;justify-content:space-between;align-items:center}.approval-card footer span{font-size:11px;color:var(--muted)}.mini-button{border:1px solid var(--blue);color:var(--blue);background:white;border-radius:7px;padding:6px 9px;font-weight:600;font-size:11px}.vendor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.vendor-card{padding:18px}.vendor-top{display:flex;justify-content:space-between;align-items:start}.vendor-card h3{margin:0;font:700 15px Manrope,sans-serif}.vendor-card p{color:var(--muted);font-size:12px;margin:5px 0 17px}.vendor-meta{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:12px;font-size:11px;color:var(--muted)}.vendor-meta b{color:var(--ink)}.finance-stats{margin-bottom:20px}.wide-panel{grid-column:1/-1}.ledger>div{display:grid;grid-template-columns:1fr 150px 120px;border-bottom:1px solid var(--line);padding:14px 0;font-size:12px}.ledger>div:last-child{border:0}.ledger b{font-weight:700}.ledger em{color:var(--muted);font-style:normal}.portfolio-table{grid-column:1/-1}.document-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.document-card{padding:16px;display:flex;align-items:center;gap:11px}.document-card>span{background:var(--blue-soft);color:var(--blue);font-size:10px;font-weight:700;padding:8px 6px;border-radius:6px}.document-card div{flex:1}.document-card strong,.document-card small{display:block}.document-card strong{font-size:12px}.document-card small{font-size:11px;color:var(--muted);margin-top:4px}.document-card button{border:0;background:transparent;color:var(--muted)}
dialog{border:0;border-radius:16px;padding:0;width:min(480px,calc(100% - 30px));box-shadow:0 20px 70px #0c243555}dialog::backdrop{background:#0c243566}dialog form{padding:25px}.modal-heading{display:flex;justify-content:space-between;align-items:start;margin-bottom:20px}.modal-heading h2{font-size:18px}.close-button{border:0;background:transparent;font-size:28px;line-height:20px;color:var(--muted)}dialog label{display:block;color:var(--ink);font-size:12px;font-weight:600;margin-top:14px}dialog input,dialog select,dialog textarea{display:block;width:100%;border:1px solid var(--line);border-radius:8px;padding:10px;margin-top:6px;color:var(--ink);background:white}dialog textarea{height:80px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}
@media(max-width:1000px){.stats-grid{grid-template-columns:repeat(2,1fr)}.approval-cards,.vendor-grid{grid-template-columns:repeat(2,1fr)}.main-content{padding:28px 26px}.dashboard-grid{grid-template-columns:1fr}.sidebar{width:220px}.main-content{margin-left:220px;width:calc(100% - 220px)}}@media(max-width:720px){.sidebar{display:none}.main-content{margin:0;width:100%;padding:22px 15px}.topbar h1{font-size:20px}.topbar{margin-bottom:20px}.society-context{align-items:flex-start}.society-context .outline-button{display:none}.stats-grid,.approval-cards,.vendor-grid,.document-grid{grid-template-columns:1fr}.topbar-actions .icon-button{display:none}.primary-button{padding:9px 11px;font-size:12px}.filter-row{overflow:auto}.table-panel{overflow:auto}.table-panel table{min-width:560px}.ledger>div{grid-template-columns:1fr auto;gap:4px}.ledger em{grid-column:2}.workspace-switcher{display:none}}
@media(max-width:720px){.login-screen{display:block;overflow:auto}.login-panel{padding:38px 25px;max-width:none}.login-aside{display:none}.login-brand{margin-bottom:38px}.login-panel h1{font-size:27px}}

/* --- Phase 1 additions: gate entries, notices, budget, residents --- */
.budget-list{margin-top:6px}
.budget-row{padding:13px 0;border-bottom:1px solid var(--line)}
.budget-row:last-child{border:0}
.budget-row-head{display:flex;justify-content:space-between;font-size:12px;margin-bottom:7px}
.budget-row-head strong{font-weight:700}
.budget-row-head span{color:var(--muted)}
.budget-track{background:#eef3f5;border-radius:20px;height:8px;overflow:hidden}
.budget-fill{background:var(--blue);height:100%;border-radius:20px}
.budget-fill.over{background:var(--red)}
.gate-type-tag{font-size:10px;font-weight:700;padding:3px 7px;border-radius:20px;background:var(--blue-soft);color:var(--blue);text-transform:capitalize}
.table-panel td .mini-button{margin-left:6px}
.empty-state{color:var(--muted);font-size:12px;padding:22px 0;text-align:center}
.notice-tag-urgent{background:#fde6e6;color:var(--red)}
.notice-tag-event{background:var(--green-soft);color:var(--green)}
.notice-tag-compliance{background:var(--orange-soft);color:var(--orange)}
.notice-tag-general{background:var(--blue-soft);color:var(--blue)}
.mini-button.approved{background:var(--green-soft);color:var(--green);border-color:var(--green-soft);cursor:default}
.text-muted{color:var(--muted);font-size:11px}
.vendor-card .mini-button,.approval-card footer > div{display:flex;gap:6px}
[data-role="guard"] .filter-row{margin-bottom:20px}
body[data-role="guard"] .primary-button{display:none}
