.portal-shell{--navy:#142922;--green:#205c48;--mint:#dcebe3;--cream:#f5f3ed;--line:#e2e5df;--muted:#738078;min-height:100vh;background:#f8f8f5;color:#17231f;font-family:Manrope,system-ui,sans-serif;display:grid;grid-template-columns:244px 1fr}.portal-sidebar{position:sticky;top:0;height:100vh;background:var(--navy);color:#dce6e1;padding:28px 18px 20px;display:flex;flex-direction:column}.portal-brand{display:flex;align-items:center;gap:11px;padding:0 10px 38px}.portal-brand>span{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#dfece5;color:#173c30;font-family:Newsreader,serif;font-size:24px;font-weight:600}.portal-brand strong{display:block;color:#fff;font-family:Newsreader,serif;font-size:22px;line-height:1}.portal-brand small{font-size:8px;letter-spacing:.26em;color:#8ba198}.portal-sidebar nav p{margin:0 12px 12px;font-size:9px;font-weight:800;letter-spacing:.18em;color:#6f8980}.portal-sidebar button,.sidebar-bottom button{width:100%;border:0;background:transparent;color:#a9b9b3;text-align:left;border-radius:8px;padding:11px 12px;margin:2px 0;cursor:pointer;font-weight:600;font-size:13px}.portal-sidebar button i{font-style:normal;display:inline-block;width:26px;font-size:17px;color:#90a49d}.portal-sidebar button.active{background:#244037;color:#fff}.portal-sidebar button.active i{color:#cbe1d5}.sidebar-bottom{margin-top:auto}.user-chip{border-top:1px solid #2c443c;margin-top:16px;padding:20px 7px 0;display:flex;align-items:center;gap:9px}.user-chip>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#d6e4dc;color:#1a4638;font-size:11px;font-weight:800}.user-chip div{min-width:0}.user-chip strong,.user-chip small{display:block;white-space:nowrap}.user-chip strong{font-size:11px;color:#f7fbf9}.user-chip small{font-size:9px;color:#8da39a}.user-chip b{margin-left:auto;color:#81968e;letter-spacing:1px}.portal-main{min-width:0;padding:0 42px}.portal-topbar{min-height:106px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.portal-topbar p{font-size:9px;font-weight:800;letter-spacing:.13em;color:#8a968f;margin:0 0 5px}.portal-topbar h1{font-family:Newsreader,serif;font-weight:500;font-size:28px;margin:0;letter-spacing:-.02em}.top-actions{display:flex;gap:10px;align-items:center}.role-switch{font-size:10px;color:#7a877f;border-right:1px solid var(--line);padding-right:12px}.role-switch select,.overview-title select{border:1px solid #d9ddd7;border-radius:7px;background:#fff;padding:9px 11px;margin-left:6px;color:#283c35;font-weight:700}.icon-button{position:relative;width:38px;height:38px;border:1px solid #d9ddd7;border-radius:8px;background:#fff}.icon-button span{position:absolute;width:6px;height:6px;border-radius:50%;background:#c7674a;right:8px;top:7px}.primary-action{border:0;border-radius:8px;background:#1d5642;color:#fff;padding:11px 17px;font-size:12px;font-weight:800}.overview-title{display:flex;justify-content:space-between;align-items:end;padding:31px 0 20px}.overview-title h2,.panel h3{font-family:Newsreader,serif;font-weight:600;margin:0}.overview-title h2{font-size:24px}.overview-title p,.panel-head p{color:var(--muted);font-size:11px;margin:4px 0 0}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.metric-card,.panel{border:1px solid var(--line);background:#fff;border-radius:10px}.metric-card{padding:18px 19px}.metric-card>div{display:flex;justify-content:space-between;color:#69776f;font-size:11px}.metric-card i{font-style:normal;color:#47715f}.metric-card>strong{display:block;font-family:Newsreader,serif;font-size:28px;margin:12px 0 5px}.metric-card small{font-size:9px;color:#89938e}.metric-card small.up{color:#348361}.portal-grid{display:grid;grid-template-columns:2fr .85fr;gap:13px;margin-top:13px}.panel{padding:20px}.panel-head{display:flex;justify-content:space-between;align-items:start}.panel-head h3{font-size:18px}.legend{display:flex;gap:12px;font-size:9px;color:#78857e}.legend i,.status-panel dt i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.legend .billed,.status-panel .billed{background:#d8e6de}.legend .paid,.status-panel .paid{background:#315f4d}.chart{height:186px;display:flex;align-items:end;gap:22px;padding:24px 12px 0;border-bottom:1px solid #e5e9e4;background:repeating-linear-gradient(to top,transparent 0,transparent 45px,#edf0ec 46px)}.bars{height:100%;flex:1;position:relative;display:flex;align-items:end;justify-content:center;gap:3px}.bar{width:13px;border-radius:4px 4px 0 0}.bar.billed{background:#d9e5de}.bar.paid{background:#32604e}.bars span{position:absolute;bottom:-20px;font-size:9px;color:#849088}.cashflow-panel{padding-bottom:32px}.donut{width:125px;height:125px;border-radius:50%;margin:14px auto;background:conic-gradient(#2c604d 0,#2c604d 61%,#e0e8e2 61%);display:grid;place-items:center}.donut:before{content:"";position:absolute;width:87px;height:87px;border-radius:50%;background:#fff}.donut div{position:relative;text-align:center}.donut strong,.donut span{display:block}.donut strong{font-family:Newsreader,serif;font-size:25px}.donut span{font-size:9px;color:#819087}.status-panel dl{margin:0}.status-panel dl div{display:flex;justify-content:space-between;padding:7px 2px;font-size:10px}.status-panel dd{font-weight:800}.status-panel .pending{background:#dbe5df}.status-panel .late{background:#c77a62}.project-panel,.activity-panel{margin-top:13px}.panel-head button{border:0;background:transparent;color:#2d654f;font-size:10px;font-weight:800}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;margin-top:16px;font-size:10px}th{text-align:left;color:#89948e;font-size:8px;letter-spacing:.08em;padding:9px;border-bottom:1px solid #e5e8e3}td{padding:12px 9px;border-bottom:1px solid #edf0ec;color:#5d6b64}td:first-child{color:#21332c;white-space:nowrap}.project-icon{display:inline-grid;place-items:center;width:29px;height:29px;margin-right:9px;border-radius:7px;background:#dbe9e1;color:#285c48;font-size:8px;font-weight:800}.project-icon.p1{background:#efe4d9;color:#875a36}.project-icon.p2{background:#e3e4ef;color:#545783}.project-icon.p3{background:#eee6d9;color:#79603f}.status{padding:5px 8px;border-radius:20px;background:#e4f0e9;color:#267051;font-size:8px;font-weight:800}.activity-panel{margin-bottom:16px}.activity-row{display:grid;grid-template-columns:34px 1fr auto;gap:11px;align-items:center;padding:12px 2px;border-bottom:1px solid #edf0ec}.activity-row>span{width:30px;height:30px;border-radius:8px;background:#e2ebe5;display:grid;place-items:center;color:#315e4c;font-size:8px;font-weight:800}.activity-row strong,.activity-row small{display:block}.activity-row strong{font-size:10px}.activity-row small{font-size:9px;color:#88928d;margin-top:2px}.activity-row>b{font-size:10px}.activity-row>b.positive{color:#348360}.activity-row>b.warning{color:#9c6947}.placeholder-panel{min-height:500px;margin-top:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.placeholder-mark{font-size:34px;color:#3c6c59}.placeholder-panel>p{font-size:9px;letter-spacing:.16em;color:#849089;font-weight:800}.placeholder-panel h2{font-family:Newsreader,serif;font-size:32px;margin:4px}.placeholder-panel span{font-size:12px;color:#748078}.placeholder-panel button{margin-top:20px;border:0;border-radius:8px;background:#1d5642;color:#fff;padding:11px 16px;font-weight:700}.portal-main footer{display:flex;justify-content:space-between;color:#8e9893;font-size:8px;padding:3px 0 20px}@media (max-width:900px){.portal-shell{grid-template-columns:76px 1fr}.portal-sidebar{padding-inline:10px}.portal-brand div,.portal-sidebar nav p,.portal-sidebar button:not(.active){font-size:0}.portal-sidebar button i{font-size:18px}.portal-sidebar button.active{font-size:0}.user-chip div,.user-chip b{display:none}.portal-main{padding:0 20px}.metric-grid{grid-template-columns:repeat(2,1fr)}.portal-grid{grid-template-columns:1fr}.role-switch{display:none}}@media (max-width:620px){.portal-shell{display:block}.portal-sidebar{position:fixed;z-index:10;top:auto;bottom:0;width:100%;height:66px;padding:8px;display:flex;flex-direction:row}.portal-brand,.sidebar-bottom{display:none}.portal-sidebar nav{display:flex;width:100%;justify-content:space-around}.portal-sidebar nav p{display:none}.portal-sidebar button,.portal-sidebar button.active{font-size:0;width:auto;margin:0}.portal-main{padding:0 14px 70px}.portal-topbar{min-height:90px}.portal-topbar h1{font-size:23px}.primary-action{font-size:0;width:38px;padding:0;height:38px}.primary-action:first-letter{font-size:18px}.metric-grid{grid-template-columns:1fr 1fr}.metric-card{padding:14px}.metric-card>strong{font-size:23px}.portal-grid{display:block}.status-panel{margin-top:13px}.overview-title{align-items:center}.overview-title p{display:none}.overview-title select{max-width:135px}.top-actions{gap:5px}}.login-shell{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 72% 20%,#d8e7de 0,transparent 30%),#f4f2ec;padding:20px}.login-card{width:min(420px,100%);background:#fff;border:1px solid #dfe4de;border-radius:14px;padding:38px;box-shadow:0 24px 80px #1429221f}.login-brand{display:flex;align-items:center;gap:9px;margin-bottom:38px}.login-brand span{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#173c30;color:#fff;font:600 23px Newsreader,serif}.login-brand strong{font:600 22px Newsreader,serif}.login-card>p{font-size:9px;font-weight:800;letter-spacing:.16em;color:#47715f}.login-card h1{font:500 34px Newsreader,serif;margin:5px 0}.login-card>span{display:block;color:#738078;font-size:12px;margin-bottom:28px}.login-card label{display:grid;gap:7px;font-size:10px;font-weight:800;color:#5c6a63}.login-card input{border:1px solid #d8ddd7;border-radius:8px;padding:12px;font-size:13px}.login-card form button{width:100%;margin-top:14px;border:0;border-radius:8px;background:#1d5642;color:#fff;padding:13px;font-weight:800}.login-card form button:disabled{opacity:.65}.login-card>small{display:block;text-align:center;color:#8b9590;font-size:9px;margin-top:18px}.login-error{color:#a54838;background:#f8eae6;border-radius:6px;padding:8px;margin-top:10px;font-size:10px}
