.portal{background:var(--wb-surface-sunk);grid-template-columns:240px 1fr;min-height:100vh;display:grid}.portal-side{background:var(--wb-ink);color:var(--wb-ink-300);flex-direction:column;gap:6px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.portal-side .brand-logo{align-items:center;gap:8px;padding:4px 8px 18px;display:flex}.portal-side .brand-logo .tag{letter-spacing:.14em;text-transform:uppercase;background:var(--wb-lime);color:var(--wb-ink);border-radius:5px;padding:2px 7px;font-size:9px;font-weight:900}.portal-nav-link{border-radius:var(--wb-radius-2);color:var(--wb-ink-300);font-weight:500;font-size:var(--wb-fs-14);align-items:center;gap:10px;padding:10px 12px;display:flex}.portal-nav-link:hover{background:var(--wb-ink-700);color:var(--wb-paper)}.portal-nav-link.active{background:var(--wb-lime);color:var(--wb-ink);font-weight:700}.portal-side .spacer{flex:1}.portal-side .back{color:var(--wb-ink-400);padding:8px 12px;font-size:12px}.portal-side .back:hover{color:var(--wb-lime)}.portal-main{padding:24px 32px var(--wb-space-16);min-width:0}.portal-topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.portal-topbar h1{font-weight:900;font-size:var(--wb-fs-32);letter-spacing:var(--wb-tracking-tight)}.portal-topbar .sub{color:var(--wb-fg-3);font-size:var(--wb-fs-14)}.brand-select{border-radius:var(--wb-radius-pill);border:1.5px solid var(--wb-ink);background:var(--wb-surface);height:42px;color:var(--wb-ink);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23101810' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;padding:0 38px 0 16px;font-family:inherit;font-size:13px;font-weight:700}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px;display:grid}.kpi{background:var(--wb-surface);border:1.5px solid var(--wb-ink-800);border-radius:var(--wb-radius-3);box-shadow:var(--wb-shadow-stamp);padding:18px}.kpi .k{text-transform:uppercase;letter-spacing:.06em;color:var(--wb-fg-3);font-size:12px;font-weight:700}.kpi .v{letter-spacing:var(--wb-tracking-tight);margin-top:6px;font-size:34px;font-weight:900;line-height:1.1}.kpi .v small{color:var(--wb-fg-3);font-size:14px;font-weight:700}.portal-card{background:var(--wb-surface);border:1px solid var(--wb-border);border-radius:var(--wb-radius-4);margin-bottom:20px;padding:22px}.portal-card h2{font-weight:900;font-size:var(--wb-fs-20);margin-bottom:14px}.ptable{border-collapse:collapse;width:100%;font-size:13px}.ptable th{text-align:left;color:var(--wb-fg-3);border-bottom:1px solid var(--wb-border);padding:10px 8px;font-weight:700}.ptable td{border-bottom:1px solid var(--wb-border);padding:10px 8px}.ptable tr:last-child td{border-bottom:none}.status-pill{border-radius:var(--wb-radius-pill);align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-flex}.status-paid{background:var(--wb-success-soft);color:var(--wb-success)}.status-preparing{background:var(--wb-warning-soft);color:#7a5a13}.status-shipped{background:var(--wb-info-soft);color:var(--wb-info)}.status-completed{background:var(--wb-ink-100);color:var(--wb-ink)}.status-cancelled{background:var(--wb-danger-soft);color:var(--wb-danger)}.conn-row{border-bottom:1px solid var(--wb-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 0;display:flex}.conn-row:last-child{border-bottom:none}.conn-row .dot{border-radius:50%;width:9px;height:9px;margin-right:7px;display:inline-block}.conn-on{background:var(--wb-success)}.conn-off{background:var(--wb-ink-300)}.portal-gate{text-align:center;background:var(--wb-surface);border:1.5px solid var(--wb-ink-800);max-width:460px;box-shadow:var(--wb-shadow-stamp);border-radius:var(--wb-radius-4);margin:12vh auto;padding:36px}@media (max-width:900px){.portal{grid-template-columns:1fr}.portal-side{flex-flow:wrap;gap:4px;height:auto;position:static}.portal-side .spacer,.portal-side .back{display:none}.kpi-grid{grid-template-columns:repeat(2,1fr)}.portal-main{padding:18px}}
