:root{--ink:#172033;--muted:#64748b;--canvas:#f4f7fb;--surface:#fff;--surface-soft:#f8fafc;--line:#e2e8f0;--brand:#132238;--brand-2:#1d3557;--primary:#246bfd;--primary-dark:#1554d1;--success:#16845b;--warning:#b76e00;--danger:#c43b4d;--info:#3268a8;--radius-sm:.55rem;--radius:.85rem;--radius-lg:1.2rem;--shadow-sm:0 1px 2px rgb(15 23 42/.05);--shadow:0 10px 30px rgb(15 23 42/.08);--sidebar:17rem;--header:4.5rem;--focus:0 0 0 .22rem rgb(36 107 253/.2);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--canvas);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:.95rem;line-height:1.55}a{color:var(--primary);text-underline-offset:.2em}a:hover{color:var(--primary-dark)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}h1,h2,h3,h4,h5,h6{color:#101828;font-weight:700;letter-spacing:-.02em}.text-muted{color:var(--muted)!important}.skip-link{position:fixed;left:1rem;top:-5rem;z-index:2000;background:#fff;padding:.65rem 1rem;border-radius:.5rem}.skip-link:focus{top:1rem}
.app-sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);display:flex;flex-direction:column;background:var(--brand);color:#e7edf6;z-index:1040;box-shadow:8px 0 30px rgb(9 18 31/.12)}.brand-lockup{height:var(--header);display:flex;align-items:center;gap:.75rem;padding:0 1.15rem;border-bottom:1px solid rgb(255 255 255/.1)}.brand-lockup strong,.brand-lockup small{display:block}.brand-lockup strong{font-size:.93rem;color:#fff}.brand-lockup small{color:#9fb0c7;font-size:.76rem}.brand-mark,.login-logo{display:grid;place-items:center;width:2.35rem;height:2.35rem;border-radius:.7rem;background:var(--primary);color:#fff;font-weight:800;letter-spacing:-.04em;flex:none}.sidebar-close{display:none;margin-left:auto;border:0;background:transparent;color:#fff;font-size:1.6rem}.sidebar-context{margin:1rem;padding: .8rem .9rem;background:rgb(255 255 255/.06);border:1px solid rgb(255 255 255/.08);border-radius:var(--radius);display:flex;flex-direction:column}.sidebar-context strong{color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-context small,.context-label{color:#9fb0c7;font-size:.72rem}.context-label{text-transform:uppercase;letter-spacing:.08em}.sidebar-nav{padding:.15rem .75rem 1rem;overflow-y:auto;flex:1;scrollbar-width:thin}.nav-group-label{display:block;padding:1rem .7rem .35rem;color:#8295ae;font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.11em}.nav-item{display:flex;align-items:center;gap:.7rem;min-height:2.7rem;padding:.48rem .65rem;border-radius:.65rem;color:#cbd6e5;text-decoration:none;font-weight:600;font-size:.87rem}.nav-item:hover{color:#fff;background:rgb(255 255 255/.07)}.nav-item.active{background:#fff;color:var(--brand);box-shadow:var(--shadow-sm)}.nav-icon{display:grid;place-items:center;width:1.75rem;height:1.75rem;border-radius:.5rem;background:rgb(255 255 255/.09);font-size:.57rem;font-weight:800;letter-spacing:.04em}.nav-item.active .nav-icon{background:#e9f0ff;color:var(--primary)}.sidebar-footer{padding:.8rem;border-top:1px solid rgb(255 255 255/.1)}.sidebar-user{display:flex;align-items:center;gap:.65rem;padding:.75rem .5rem}.sidebar-user strong,.sidebar-user small{display:block}.sidebar-user strong{color:#fff;font-size:.84rem}.sidebar-user small{color:#9fb0c7;font-size:.72rem}.avatar{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:50%;background:#e9f0ff;color:var(--primary);font-weight:800;flex:none}.logout-button{width:100%;border:1px solid rgb(255 255 255/.15);background:transparent;color:#dce5f1;border-radius:.6rem;padding:.5rem}.logout-button:hover{background:rgb(255 255 255/.08);color:#fff}.platform-sidebar{background:#231942}.platform-sidebar .brand-mark{background:#7c5cff}
.app-frame{min-height:100vh;margin-left:var(--sidebar)}.top-header{height:var(--header);position:sticky;top:0;z-index:1020;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1rem,3vw,2rem);background:rgb(255 255 255/.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.header-title small,.header-title strong{display:block}.header-title small{font-size:.72rem;color:var(--muted)}.header-title strong{font-size:1.05rem}.header-actions,.header-identity{display:flex;align-items:center;gap:.65rem}.header-identity strong,.header-identity small{display:block}.header-identity strong{font-size:.82rem}.header-identity small{font-size:.7rem;color:var(--muted)}.notification-button{position:relative;display:grid;place-items:center;width:2.55rem;height:2.55rem;border:1px solid var(--line);border-radius:.75rem;text-decoration:none;background:#fff;color:var(--ink);font-size:.65rem;font-weight:800}.notification-button b{position:absolute;right:-.35rem;top:-.35rem;min-width:1.25rem;height:1.25rem;border-radius:1rem;display:grid;place-items:center;background:var(--danger);color:#fff;font-size:.63rem}.menu-button{display:none;width:2.6rem;height:2.6rem;border:1px solid var(--line);background:#fff;border-radius:.7rem;padding:.65rem}.menu-button span{display:block;height:2px;background:var(--ink);margin:.23rem 0}.app-content{width:min(100%,96rem);margin:auto;padding:clamp(1rem,3vw,2rem)}.sidebar-backdrop{display:none}
.quick-actions{display:flex;gap:.55rem;overflow-x:auto;padding:.1rem 0 .9rem;scrollbar-width:none}.quick-action{display:flex;align-items:center;gap:.45rem;white-space:nowrap;padding:.52rem .75rem;background:#fff;border:1px solid var(--line);border-radius:.7rem;text-decoration:none;color:var(--ink);font-weight:650;font-size:.82rem;box-shadow:var(--shadow-sm)}.quick-action span{font-size:1.1rem;color:var(--primary)}.quick-action:hover{border-color:#b9cbef;background:#f8fbff}.app-alert,.subscription-banner{display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;margin-bottom:1rem;border-radius:var(--radius);border:1px solid}.app-alert button{margin-left:auto;border:0;background:transparent;font-size:1.25rem}.alert-success{background:#ecfdf5;border-color:#b8ead6;color:#126445}.alert-danger{background:#fff1f3;border-color:#f5c2ca;color:#92283a}.alert-warning{background:#fff8e7;border-color:#f2d59d;color:#805005}.alert-info{background:#eff6ff;border-color:#bfd7f5;color:#285986}.subscription-banner{background:#fff8e7;border-color:#efd08f;color:#754c08}.subscription-banner span{flex:1}.subscription-banner.status-expired,.subscription-banner.status-suspended{background:#fff1f3;border-color:#f0bdc6;color:#8e2939}.subscription-banner.status-trial{background:#eff6ff;border-color:#bfd7f5;color:#285986}
.card{border:1px solid var(--line)!important;border-radius:var(--radius)!important;background:var(--surface);box-shadow:var(--shadow-sm)}.shadow-sm{box-shadow:var(--shadow-sm)!important}.metric-card,.kpi-card{position:relative;overflow:hidden;transition:border-color .15s,transform .15s}.metric-card:hover,.kpi-card:hover{transform:translateY(-2px);border-color:#c4d4ee!important}.metric-icon{width:2.5rem;height:2.5rem;border-radius:.7rem;background:#eaf1ff;color:var(--primary);display:grid;place-items:center;font-size:.65rem;font-weight:800;margin-bottom:.8rem}.metric-value{font-size:1.75rem;font-weight:800;letter-spacing:-.04em}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.25rem}.page-header h1{font-size:1.55rem;margin:0}.page-header p{margin:.2rem 0 0;color:var(--muted)}.section-title{font-size:1rem;margin:1.6rem 0 .8rem}.empty-state{text-align:center;padding:2.5rem 1rem;border:1px dashed #cbd5e1;border-radius:var(--radius);background:var(--surface-soft)}.empty-state strong{display:block;margin-bottom:.25rem}
.btn{border-radius:.65rem;font-weight:650;padding:.55rem .85rem}.btn-sm{padding:.38rem .65rem;border-radius:.55rem}.btn-primary{background:var(--primary);border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.btn-danger{background:var(--danger);border-color:var(--danger)}.badge{border-radius:2rem;padding:.38em .65em;font-weight:700}.status-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .6rem;border-radius:2rem;font-size:.72rem;font-weight:750;background:#eef2f7;color:#475569}.status-badge:before{content:"";width:.4rem;height:.4rem;border-radius:50%;background:currentColor}.status-active,.status-paid,.status-completed,.status-delivered{background:#e9f9f1;color:#14704c}.status-pending,.status-open,.status-scheduled,.status-draft{background:#fff7e6;color:#966000}.status-in_progress,.status-confirmed,.status-issued,.status-trial{background:#ebf3ff;color:#275fa8}.status-overdue,.status-expired,.status-suspended,.status-cancelled{background:#fff0f2;color:#a52f43}
.form-control,.form-select{min-height:2.75rem;border-color:#cfd8e5;border-radius:.65rem;background-color:#fff}.form-control:focus,.form-select:focus{border-color:var(--primary);box-shadow:var(--focus)}.form-label{font-size:.82rem;font-weight:700;color:#344054}.form-text,.form-field small{font-size:.73rem;color:var(--muted)}.field-error,.text-danger.small{font-size:.75rem;color:var(--danger)!important;margin-top:.25rem}.table-responsive{border:1px solid var(--line);border-radius:var(--radius);background:#fff}.table{margin:0}.table>:not(caption)>*>*{padding:.8rem .9rem;border-color:#edf1f5;vertical-align:middle}.table thead th{background:#f8fafc;color:#475569;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.table tbody tr:hover{background:#fbfdff}.list-group{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.list-group-item{padding:.85rem 1rem;border-color:#edf1f5}.pagination .page-link{border-color:var(--line);color:var(--ink)}
.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(22rem,1fr) minmax(26rem,.85fr);background:#fff}.login-brand{display:grid;place-items:center;padding:3rem;background:radial-gradient(circle at 10% 15%,#294b73 0,transparent 35%),var(--brand);color:#dce7f4}.login-brand-inner{max-width:32rem}.login-logo{width:3.7rem;height:3.7rem;font-size:1.2rem;margin-bottom:2rem}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;font-weight:800;color:var(--primary)}.login-brand .eyebrow{color:#9fc1ff}.login-brand h1{color:#fff;font-size:clamp(2.5rem,6vw,4.6rem);margin:0}.login-tagline{font-size:1.35rem;color:#b9c9dc}.login-brand ul{padding:0;list-style:none;margin-top:3rem}.login-brand li{margin:.9rem 0}.login-brand li:before{content:"✓";display:inline-grid;place-items:center;width:1.5rem;height:1.5rem;margin-right:.6rem;border-radius:50%;background:rgb(255 255 255/.1);color:#8db6ff}.login-panel{display:grid;place-items:center;padding:2rem}.login-card{width:min(100%,27rem)}.login-card h2{font-size:1.7rem}.login-card .form-field{margin:1.1rem 0}.login-security{text-align:center;color:var(--muted);font-size:.72rem;margin-top:1rem}.login-mobile-brand{display:none;align-items:center;gap:.6rem;margin-bottom:2rem}.login-mobile-brand small{display:block;color:var(--muted)}.auth-alert{position:fixed;z-index:10;top:1rem;left:50%;transform:translateX(-50%);padding:.7rem 1rem;border:1px solid;border-radius:.7rem;background:#fff;box-shadow:var(--shadow)}
.mobile-bottom-nav{display:none}.chart-panel{padding:1rem}.mini-bars{height:9rem;display:flex;align-items:flex-end;gap:.55rem;border-bottom:1px solid var(--line);padding-top:1rem}.mini-bar{flex:1;min-height:.2rem;background:var(--primary);border-radius:.35rem .35rem 0 0;position:relative}.mini-bar span{position:absolute;bottom:-1.5rem;left:50%;transform:translateX(-50%);font-size:.62rem;color:var(--muted)}
.dashboard-hero{padding:1.25rem 1.35rem;background:linear-gradient(105deg,#fff 55%,#eef4ff);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.dashboard-hero h1{font-size:clamp(1.55rem,3vw,2.15rem)}.metric-label{color:var(--muted);font-size:.78rem;font-weight:650}.money-value{font-size:clamp(1.15rem,2.3vw,1.65rem);overflow-wrap:anywhere}.money-value small{font-size:.62em;color:var(--muted)}.section-heading{display:flex;align-items:end;justify-content:space-between}.section-heading a{margin-bottom:.8rem;font-size:.82rem;font-weight:700}.summary-link,.record-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink)}.summary-link:last-child{border-bottom:0}.record-row small{display:block;color:var(--muted)}.record-counter{text-decoration:none;color:var(--ink)}.record-counter small,.record-counter strong{display:block}.record-counter small{color:var(--muted)}.record-counter strong{font-size:1.4rem}.empty-icon{display:grid;place-items:center;width:2.75rem;height:2.75rem;margin:0 auto .8rem;border-radius:.8rem;background:#eaf1ff;color:var(--primary);font-size:.68rem;font-weight:850}.chart-legend{display:flex;gap:.8rem;font-size:.72rem;color:var(--muted);white-space:nowrap}.chart-legend span:before{content:"";display:inline-block;width:.55rem;height:.55rem;border-radius:.18rem;margin-right:.3rem}.legend-invoiced:before{background:var(--primary)}.legend-collected:before{background:var(--success)}.status-partially_paid,.status-partially-paid{background:#fff7e6;color:#966000}.status-verified{background:#e9f9f1;color:#14704c}.status-rejected{background:#fff0f2;color:#a52f43}.status-grace,.status-expiring{background:#fff7e6;color:#966000}.platform-body{--primary:#6d4aff;--primary-dark:#5534df}.platform-body .top-header{border-bottom-color:#e5defe}.platform-body .metric-icon{background:#f0edff;color:#6245d7}.assistant-card{border-color:#cfdcff!important;background:linear-gradient(145deg,#fff,#f7f9ff)}.assistant-answer{border-left:4px solid var(--primary)}.subscription-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}.subscription-stat{padding:1rem;border-radius:var(--radius);background:var(--surface-soft);border:1px solid var(--line)}.subscription-stat small,.subscription-stat strong{display:block}.subscription-stat small{color:var(--muted);font-size:.72rem}.subscription-stat strong{margin-top:.2rem;overflow-wrap:anywhere}
@media(max-width:991.98px){.app-sidebar{transform:translateX(-105%);transition:transform .2s ease}.sidebar-open .app-sidebar{transform:none}.sidebar-open .sidebar-backdrop{display:block;position:fixed;inset:0;background:rgb(15 23 42/.45);z-index:1030}.sidebar-close,.menu-button{display:block}.app-frame{margin-left:0}.header-identity span:not(.avatar){display:none}.app-content{padding-bottom:5.5rem}.mobile-bottom-nav{position:fixed;z-index:1025;display:grid;grid-template-columns:repeat(5,1fr);inset:auto 0 0;background:#fff;border-top:1px solid var(--line);padding:.35rem max(.35rem,env(safe-area-inset-right)) calc(.35rem + env(safe-area-inset-bottom)) max(.35rem,env(safe-area-inset-left));box-shadow:0 -8px 24px rgb(15 23 42/.08)}.mobile-bottom-nav a,.mobile-bottom-nav button{border:0;background:transparent;text-decoration:none;color:var(--muted);font-size:.62rem;text-align:center;padding:.25rem .1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-bottom-nav span{display:block;font-size:.58rem;font-weight:850;margin:auto auto .12rem;color:var(--ink)}.mobile-bottom-nav .active{color:var(--primary);font-weight:750}.platform-body .mobile-bottom-nav{display:none}}
@media(max-width:767.98px){body{font-size:.9rem}.top-header{height:4rem;padding:0 .8rem}.header-title small{display:none}.header-title strong{font-size:.9rem}.app-content{padding:1rem .8rem 5.5rem}.page-header{display:block}.page-header .btn,.page-header>div:last-child{margin-top:.7rem}.quick-actions{margin-inline:-.8rem;padding-inline:.8rem}.subscription-banner{align-items:flex-start;flex-wrap:wrap}.subscription-banner span{flex-basis:75%}.login-shell{display:block;background:var(--canvas);padding:1rem;min-height:100vh}.login-brand{display:none}.login-panel{min-height:calc(100vh - 2rem);padding:0}.login-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.35rem;box-shadow:var(--shadow)}.login-mobile-brand{display:flex}.card-body{padding:1rem}.row.g-2,.row.g-3{--bs-gutter-x:.7rem}.table>:not(caption)>*>*{padding:.7rem}.btn{min-height:2.7rem}.btn-sm{min-height:2.25rem}.header-actions{gap:.35rem}}
@media(max-width:767.98px){.dashboard-hero{padding:1rem;background:#fff}.metric-value{font-size:1.45rem}.money-value{font-size:1.05rem}.chart-legend{display:none}.subscription-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{min-width:42rem}.record-counter .card-body{padding:.75rem}.record-counter strong{font-size:1.2rem}.page-header .status-badge{margin-top:.7rem}}
@media(min-width:1440px){.app-content{padding-inline:2.5rem}.card-body{padding:1.25rem}.dashboard-hero{padding:1.5rem 1.75rem}}
@media(min-width:1900px){.app-content{max-width:104rem}.row.g-4{--bs-gutter-x:2rem}}
@media(max-width:430px){.subscription-overview{grid-template-columns:1fr}.quick-action{min-height:2.8rem}.login-card nav .btn{font-size:.78rem;padding-inline:.45rem}.summary-link{min-height:3rem}}
@media(max-width:390px){.header-title{max-width:9.5rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.notification-button{width:2.35rem;height:2.35rem}.app-content{padding-inline:.65rem}.login-shell{padding:.55rem}.login-panel{min-height:calc(100vh - 1.1rem)}.login-card{padding:1.1rem}.mobile-bottom-nav a,.mobile-bottom-nav button{font-size:.57rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.app-sidebar,.top-header,.quick-actions,.mobile-bottom-nav,.subscription-banner,.app-alert{display:none!important}.app-frame{margin:0}.app-content{padding:0;width:100%}body{background:#fff}.card{box-shadow:none!important}}
