/* BLACKSNOW V35: single finishing design layer for public website and multi-page Perfex concept. No backend changes. */
:root{--bs-core:#211E27;--bs-bordeaux:#88455A;--bs-bordeaux-hover:#72384C;--bs-rose:#D7A7B6;--bs-base:#F8F6F8;--bs-surface:#FFFFFF;--bs-border:#E8E1E7;--bs-text:#231F29;--bs-muted:#6A626D;--bs-rad:16px}
/* Shared brand locks, readable at compact sizes */
.top .brand,.top-v28 .brand{display:flex;align-items:center;flex:0 0 auto}
.top .bs-logo,.top-v28 .bs-logo{width:clamp(188px,16vw,232px);height:auto;max-height:53px}
.top .nav a{white-space:nowrap}
.top .nav a:focus-visible,.top .toggle:focus-visible{outline:3px solid #B87890;outline-offset:3px}
/* Consistent public vertical rhythm while keeping full-bleed heroes */
body:not(.portal-body) .section,body:not(.portal-body) .bs-section{scroll-margin-top:90px}
body:not(.portal-body) .hero.hero-bleed,body:not(.portal-body) .v29-hero,body:not(.portal-body) .site-pagehero{border-radius:0!important}
body:not(.portal-body) .brand-card,body:not(.portal-body) .site-tile{transition:transform .18s ease,border-color .18s ease}
body:not(.portal-body) .brand-card:hover,body:not(.portal-body) .site-tile:hover{transform:translateY(-3px)}
/* Portal master palette and component geometry */
body.portal-body{--p-base:var(--bs-base);--p-surface:#fff;--p-text:var(--bs-text);--p-muted:var(--bs-muted);--p-rule:var(--bs-border);--p-bordeaux:var(--bs-bordeaux);--p-deep:var(--bs-core);background:var(--bs-base);color:var(--bs-text);font-family:Inter,'DM Sans',system-ui,Arial,sans-serif;font-size:13.5px;line-height:1.55}
body.portal-body .app{background:var(--bs-base);grid-template-columns:238px minmax(0,1fr);min-height:100vh}
body.portal-body .sidebar{background:var(--bs-core)!important;padding:22px 13px 18px;gap:10px;overflow-y:auto}
body.portal-body .sidebar .brand{padding:0 8px 10px;min-width:0}
body.portal-body .sidebar .bs-logo{width:197px;max-width:100%;height:auto;max-height:55px}
body.portal-body .sidebar-caption{margin-top:8px;padding:8px 12px 3px;font-size:10px;letter-spacing:.115em;color:#BEB1BE}
body.portal-body .sidebar .nav-item{display:flex;align-items:center;gap:10px;margin:1px 0;padding:9px 11px;min-height:41px;font-size:13px;line-height:1.3;border-radius:11px;border:1px solid transparent;color:#E8E1E9}
body.portal-body .sidebar .nav-item.active{background:var(--bs-bordeaux)!important;border-color:#B27B8D!important;box-shadow:inset 3px 0 #E5C1CD!important;color:#fff!important}
body.portal-body .sidebar .nav-item:hover:not(.active){background:#3C313E!important;color:white!important}
body.portal-body .sidebar .ni{flex:0 0 21px;width:21px;text-align:center}
body.portal-body .topbar{height:68px;padding:0 clamp(18px,2.6vw,40px);border-bottom:1px solid var(--bs-border);background:#FFFFFFF5}
body.portal-body .content{max-width:1580px;min-width:0;padding:clamp(22px,2.4vw,34px) clamp(18px,2.6vw,40px) 76px;margin:0 auto}
body.portal-body h1{font-size:clamp(31px,2.55vw,42px);line-height:1.12;margin-top:0;margin-bottom:10px;letter-spacing:-.04em}
body.portal-body h2{font-size:clamp(19px,1.48vw,23px);line-height:1.24;letter-spacing:-.025em}
body.portal-body :is(.intro,.v21-head,.v22-head,.finance-intro,.service-head){margin-bottom:19px}
body.portal-body :is(.intro,.v21-head,.v22-head,.finance-intro,.service-head) p{color:var(--bs-muted);font-size:13px;line-height:1.58}
body.portal-body :is(.panel,.v21-panel,.v22-panel,.finance-panel,.service-panel,.invoice-table-panel){background:#fff;border:1px solid var(--bs-border);border-radius:var(--bs-rad);box-shadow:0 6px 24px #2C182407;padding:clamp(17px,1.6vw,24px);min-width:0}
body.portal-body :is(.v21-kpis,.v22-kpis,.service-kpis,.finance-metrics,.invoice-metrics){gap:12px;margin-bottom:15px}
body.portal-body :is(.v21-kpi,.v22-kpi,.finance-kpi,.service-kpi,.invoice-metric){padding:18px 20px;min-height:110px;border-radius:var(--bs-rad);box-shadow:0 3px 14px #2C182404}
body.portal-body :is(.v21-layout,.v22-grid,.invoice-layout,.grid){gap:14px}
body.portal-body .v21-welcome{padding:23px 25px;border-radius:17px;background:#F1E6EA;border:1px solid #E8D5DE}
body.portal-body .v21-banner{background:#2B2530!important;border-color:#2B2530!important;border-radius:17px}
body.portal-body .detail-hero{background:#2B2530!important;border-radius:17px;padding:25px;margin-bottom:16px}
body.portal-body :is(.panel.dark,.finance-kpi-dark,.invoice-metric.important,.finance-document-header){background:#2B2530!important;border-color:#2B2530!important;color:#fff!important}
body.portal-body :is(.panel.dark,.finance-kpi-dark,.invoice-metric.important,.finance-document-header) :is(h1,h2,h3,strong){color:#fff!important}
body.portal-body .btn.primary{background:var(--bs-bordeaux)!important;border-color:var(--bs-bordeaux)!important;color:#fff!important}
body.portal-body .btn.primary:hover{background:var(--bs-bordeaux-hover)!important;border-color:var(--bs-bordeaux-hover)!important}
body.portal-body .btn{border-radius:999px;padding:9px 15px;min-height:39px}
body.portal-body :is(.table-wrap,.finance-table-scroll,.v21-tablewrap,.v22-tablewrap,.service-table-wrap,.invoice-table-panel .table-wrap){overflow-x:auto;max-width:100%;scrollbar-color:#C8A7B5 #F4EFF2;scrollbar-width:thin}
body.portal-body :is(table,.finance-table,.v21-table,.v22-table){border-collapse:collapse;min-width:580px;max-width:none}
body.portal-body :is(table,.finance-table,.v21-table,.v22-table) th{font-size:10px;letter-spacing:.085em;padding:12px 13px;white-space:nowrap;background:#FAF8FA;color:#655B67;border-bottom:1px solid var(--bs-border)}
body.portal-body :is(table,.finance-table,.v21-table,.v22-table) td{font-size:12.5px;line-height:1.45;padding:12px 13px;border-bottom:1px solid #EEE8ED;vertical-align:middle}
body.portal-body :is(table,.finance-table,.v21-table,.v22-table) tbody tr:hover{background:#FCFAFB}
body.portal-body :is(.field input,.field textarea,.field select,.search,.v22-field input){background:#fff;border:1px solid #D8CDD5;border-radius:12px;min-height:43px}
body.portal-body :is(.field input,.field textarea,.field select,.search,.v22-field input):focus-visible{outline:3px solid #D3A2B2;outline-offset:1px;border-color:var(--bs-bordeaux)}
body.portal-body .status{font-size:11px;padding:5px 10px;border-radius:999px}
body.portal-body .status.warn{background:#FFF1D9;color:#825A16}
body.portal-body .status.red{background:#F7E4E9;color:#85344B}
body.portal-body .status.blue{background:#E6EFF5;color:#375E77}
body.portal-body .status:not(.warn):not(.blue):not(.neutral):not(.red){background:#E4EFE7;color:#305F3E}
body.portal-body a:focus-visible,body.portal-body button:focus-visible{outline:3px solid #B77E92;outline-offset:3px}
@media (max-width:1120px){body.portal-body .app{grid-template-columns:216px minmax(0,1fr)}body.portal-body .sidebar .bs-logo{width:178px}}
@media (max-width:760px){body.portal-body .app{display:block}body.portal-body .sidebar{position:fixed;left:0;top:0;bottom:0;width:min(86vw,294px);height:100dvh;z-index:40;transform:translateX(-110%);box-shadow:14px 0 40px #1B0D1D35}body.portal-body .sidebar.show{transform:translateX(0)}body.portal-body .mobile-nav-shade.show{z-index:39}body.portal-body .topbar{height:62px;padding-inline:15px}body.portal-body .content{padding:22px 15px 70px}body.portal-body .v21-welcome{padding:18px}body.portal-body :is(.v21-kpi,.v22-kpi,.finance-kpi,.service-kpi,.invoice-metric){min-height:102px;padding:14px 15px}body.portal-body :is(.v21-kpis,.v22-kpis,.service-kpis,.finance-metrics,.invoice-metrics){gap:10px}}
@media (max-width:420px){body.portal-body :is(.v21-kpis,.v22-kpis,.service-kpis,.finance-metrics,.invoice-metrics){grid-template-columns:repeat(2,minmax(0,1fr))}body.portal-body h1{font-size:30px}body.portal-body .number{font-size:26px}}
@media print{body.portal-body .sidebar,body.portal-body .mobile-menu,body.portal-body .top-actions{display:none!important}body.portal-body .app{display:block!important}body.portal-body .content{max-width:none;padding:0!important}body.portal-body :is(.panel,.v21-panel,.v22-panel,.finance-panel,.service-panel){box-shadow:none!important;break-inside:avoid}}
@media (prefers-reduced-motion:reduce){body.portal-body *{animation:none!important;transition:none!important}}
