.gp-portal{--bone:#f5f2ea;--paper:#fff;--ink:#17181c;--ink-soft:#3a3b40;--muted:#6e6a60;--brass:#9c6b34;--brass-light:#b98a4f;--line:#e3ddd0;--line-soft:#ece7db;--ok-bg:#e6f7ee;--ok-fg:#2a9d60;--warn-bg:#fef6e4;--warn-fg:#c47d0e;--info-bg:#eaf0f6;--info-fg:#2f5e8c;background:var(--bone);color:var(--ink);font-family:var(--font-hanken), sans-serif;-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100dvh;font-size:16px;line-height:1.6;display:flex}.gp-portal .serif{font-family:var(--font-fraunces), serif}.gp-portal .wrap{width:100%;max-width:1080px;margin:0 auto;padding:0 24px}.gp-portal a{color:inherit;text-decoration:none}.gp-portal .pnav{background:var(--paper);border-bottom:1px solid var(--line)}.gp-portal .pnav-inner{justify-content:space-between;align-items:center;height:68px;display:flex}.gp-portal .logo{font-family:var(--font-fraunces), serif;letter-spacing:.5px;align-items:center;gap:10px;font-size:20px;font-weight:500;display:flex}.gp-portal .logo-mark{gap:3px;width:16px;height:24px;display:flex}.gp-portal .logo-mark span{background:var(--brass);border-radius:1px;flex:1}.gp-portal .logo-mark span:nth-child(2){background:var(--ink)}.gp-portal .pnav-actions{align-items:center;gap:18px;font-size:14px;display:flex}.gp-portal .pnav-actions a,.gp-portal .pnav-actions button{color:var(--ink-soft);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.gp-portal .pnav-actions a:hover,.gp-portal .pnav-actions button:hover{color:var(--brass)}.gp-portal main{flex:1;padding:40px 0 64px}.gp-portal .login-shell{flex:1;justify-content:center;align-items:center;padding:48px 24px;display:flex}.gp-portal .login-card{background:var(--paper);border:1px solid var(--line);border-radius:6px;width:100%;max-width:420px;padding:38px 34px;box-shadow:0 10px 40px #17181c0f}.gp-portal .eyebrow{letter-spacing:1.5px;text-transform:uppercase;color:var(--brass);margin-bottom:10px;font-size:12px;font-weight:600}.gp-portal .login-card h1{font-family:var(--font-fraunces), serif;margin:0 0 8px;font-size:27px;font-weight:500}.gp-portal .login-card p.sub{color:var(--muted);margin:0 0 24px;font-size:15px}.gp-portal label{color:var(--ink-soft);margin-bottom:7px;font-size:13px;font-weight:600;display:block}.gp-portal input[type=text],.gp-portal input[type=password],.gp-portal textarea{border:1px solid var(--line);background:var(--bone);width:100%;font:inherit;color:var(--ink);border-radius:4px;padding:12px 14px;transition:border-color .2s,background .2s}.gp-portal input:focus,.gp-portal textarea:focus{border-color:var(--brass);background:var(--paper);outline:none}.gp-portal textarea{resize:vertical;min-height:110px}.gp-portal .btn{background:var(--ink);color:var(--bone);font:inherit;cursor:pointer;border:none;border-radius:3px;justify-content:center;align-items:center;gap:8px;padding:13px 22px;font-size:15px;font-weight:600;transition:background .2s;display:inline-flex}.gp-portal .btn:hover{background:#2a2b30}.gp-portal .btn:disabled{opacity:.6;cursor:default}.gp-portal .btn-full{width:100%;margin-top:4px}.gp-portal .login-help{color:var(--muted);text-align:center;margin-top:18px;font-size:13px}.gp-portal .form-error{color:#b3261e;background:#fdecec;border:1px solid #f3c2bd;border-radius:4px;margin-bottom:16px;padding:10px 13px;font-size:13.5px}.gp-portal .form-ok{background:var(--ok-bg);color:var(--ok-fg);border:1px solid #9de0be;border-radius:4px;margin-bottom:16px;padding:10px 13px;font-size:13.5px}.gp-portal .dash-head{margin-bottom:28px}.gp-portal .dash-head h1{font-family:var(--font-fraunces), serif;margin:4px 0;font-size:30px;font-weight:500}.gp-portal .dash-head .period{color:var(--muted);text-transform:capitalize;font-size:14px}.gp-portal .stat-grid{grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:32px;display:grid}.gp-portal .stat-card{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:20px 22px}.gp-portal .stat-card .label{letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:12.5px}.gp-portal .stat-card .value{font-family:var(--font-fraunces), serif;font-size:26px;font-weight:500}.gp-portal .panel{background:var(--paper);border:1px solid var(--line);border-radius:6px;margin-bottom:24px;padding:24px 26px}.gp-portal .panel h2{font-family:var(--font-fraunces), serif;margin:0 0 16px;font-size:19px;font-weight:500}.gp-portal .rows{flex-direction:column;display:flex}.gp-portal .row{border-top:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:14px;padding:14px 0;display:flex}.gp-portal .row:first-child{border-top:none}.gp-portal .row .main{min-width:0}.gp-portal .row .title{font-size:15px;font-weight:600}.gp-portal .row .meta{color:var(--muted);margin-top:2px;font-size:13px}.gp-portal .row .reply{background:var(--bone);color:var(--ink-soft);border-radius:4px;margin-top:8px;padding:10px 12px;font-size:13.5px}.gp-portal .row .amount{font-family:var(--font-fraunces), serif;white-space:nowrap;font-size:17px}.gp-portal .bld-grid{gap:16px;display:grid}.gp-portal .bld-card{border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:18px 20px}.gp-portal .bld-top{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.gp-portal .bld-name{font-family:var(--font-fraunces), serif;font-size:18px;font-weight:500}.gp-portal .bld-sub{color:var(--muted);font-size:13px}.gp-portal .bld-stats{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.gp-portal .bld-stat .label{letter-spacing:.5px;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:11.5px}.gp-portal .bld-stat .value{font-size:16px;font-weight:600}.gp-portal .pill{white-space:nowrap;border-radius:999px;padding:4px 11px;font-size:12px;font-weight:600;display:inline-block}.gp-portal .pill-ok{background:var(--ok-bg);color:var(--ok-fg)}.gp-portal .pill-warn{background:var(--warn-bg);color:var(--warn-fg)}.gp-portal .pill-info{background:var(--info-bg);color:var(--info-fg)}.gp-portal .badge{letter-spacing:.4px;text-transform:uppercase;border-radius:3px;padding:3px 9px;font-size:11px;font-weight:600;display:inline-block}.gp-portal .badge-res{color:#0b5d3b;background:#d7f0e2}.gp-portal .badge-com{color:#7c4a03;background:#fdeccd}.gp-portal .empty{color:var(--muted);padding:8px 0;font-size:14px}@media (max-width:720px){.gp-portal .stat-grid{grid-template-columns:1fr}.gp-portal .bld-stats{grid-template-columns:1fr 1fr}.gp-portal .dash-head h1{font-size:25px}}
