:root{
  color-scheme:light;
  --ink:#17252f;
  --muted:#667782;
  --subtle:#8a99a2;
  --navy:#12344d;
  --navy-strong:#0c293e;
  --blue:#176b87;
  --blue-hover:#10586f;
  --teal:#0f766e;
  --canvas:#f3f6f7;
  --surface:#ffffff;
  --surface-soft:#f8fafb;
  --line:#dbe3e7;
  --line-strong:#c6d1d7;
  --success:#18794e;
  --success-soft:#e7f6ee;
  --warning:#9a6700;
  --warning-soft:#fff5d6;
  --danger:#b42318;
  --danger-soft:#fdeadf;
  --info-soft:#e6f2f6;
  --shadow-sm:0 1px 2px rgba(18,52,77,.06);
  --shadow-md:0 10px 30px rgba(18,52,77,.09);
  --radius:8px;
  --topbar-height:68px;
}

*{box-sizing:border-box}
html{min-height:100%;scroll-behavior:smooth}
body{min-height:100%;margin:0;background:var(--canvas);color:var(--ink);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
body.navigation-open{overflow:hidden}
a{color:var(--blue);text-decoration:none}
a:hover{color:var(--blue-hover)}
button,input,select,textarea{font:inherit;letter-spacing:0}
button{cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(23,107,135,.22);outline-offset:2px}
button:disabled{cursor:not-allowed;opacity:.55}
img{max-width:100%}
[hidden]{display:none!important}

.skip-link{position:fixed;top:10px;left:10px;z-index:5000;padding:9px 12px;border-radius:6px;background:var(--navy);color:#fff;transform:translateY(-160%)}
.skip-link:focus{color:#fff;transform:translateY(0)}

.topbar{position:sticky;top:0;z-index:1200;height:var(--topbar-height);border-bottom:1px solid var(--line);background:rgba(255,255,255,.98);box-shadow:var(--shadow-sm)}
.topbar-inner{display:flex;width:100%;max-width:1540px;height:100%;align-items:center;gap:28px;margin:0 auto;padding:0 28px}
.brand{display:inline-flex;flex:0 0 auto;align-items:center;gap:10px;color:var(--navy)}
.brand:hover{color:var(--navy)}
.brand-mark{display:grid;width:36px;height:36px;grid-template-columns:repeat(3,1fr);align-items:end;gap:3px;padding:8px;border-radius:7px;background:var(--navy)}
.brand-mark i{display:block;border-radius:1px;background:#fff}
.brand-mark i:nth-child(1){height:45%;background:#91d1ca}
.brand-mark i:nth-child(2){height:75%}
.brand-mark i:nth-child(3){height:100%;background:#e9bd61}
.brand-copy{display:flex;flex-direction:column;line-height:1.15}
.brand-copy strong{font-size:15px;font-weight:800}
.brand-copy small{margin-top:3px;color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase}

.topbar nav{display:flex;min-width:0;flex:1;align-items:center;justify-content:space-between;gap:24px}
.primary-navigation{display:flex;min-width:0;align-items:center;gap:4px}
.nav-link,.nav-dropdown-toggle{display:inline-flex;min-height:38px;align-items:center;padding:0 12px;border:0;border-radius:6px;background:transparent;color:#43545f;font-size:13px;font-weight:700}
.nav-link:hover,.nav-dropdown-toggle:hover{background:#eef3f4;color:var(--navy)}
.nav-link.active,.nav-dropdown.active>.nav-dropdown-toggle{background:#e4eff1;color:var(--navy)}
.nav-dropdown{position:relative}
.nav-dropdown-toggle{gap:7px}
.nav-dropdown-toggle span{font-size:15px;transition:transform .16s ease}
.nav-dropdown.open .nav-dropdown-toggle span{transform:rotate(180deg)}
.nav-dropdown-menu{position:absolute;top:45px;left:0;display:none;width:310px;grid-template-columns:1fr 1fr;gap:4px;padding:8px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow-md)}
.nav-dropdown.open .nav-dropdown-menu{display:grid}
.nav-dropdown-menu a{display:flex;min-width:0;flex-direction:column;padding:10px;border-radius:6px;color:var(--ink)}
.nav-dropdown-menu a:hover,.nav-dropdown-menu a.active{background:#eef5f5;color:var(--navy)}
.nav-dropdown-menu strong{font-size:12px}
.nav-dropdown-menu small{margin-top:2px;color:var(--muted);font-size:10px}

.account-navigation{display:flex;flex:0 0 auto;align-items:center;gap:9px;padding-left:18px;border-left:1px solid var(--line)}
.user-avatar{display:grid;width:34px;height:34px;place-items:center;border-radius:50%;background:#d8ece9;color:var(--teal);font-size:12px;font-weight:850}
.user-copy{display:flex;min-width:92px;flex-direction:column;line-height:1.15}
.user-copy strong{max-width:150px;overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.user-copy small{margin-top:3px;color:var(--muted);font-size:10px}
.nav-logout{padding:7px 9px;border-radius:6px;color:var(--muted);font-size:12px;font-weight:700}
.nav-logout:hover{background:var(--danger-soft);color:var(--danger)}
.topbar-menu-button{display:none;width:40px;height:40px;padding:8px;border:0;border-radius:6px;background:transparent}
.topbar-menu-button span{display:block;width:22px;height:2px;margin:5px auto;border-radius:1px;background:var(--navy)}

.container{width:100%;max-width:1480px;margin:0 auto;padding:30px 32px 44px}
.page-heading{margin-bottom:22px}
.page-eyebrow{margin:0 0 5px;color:var(--teal);font-size:11px;font-weight:800;text-transform:uppercase}
h1,h2,h3,h4{color:var(--ink);line-height:1.25;letter-spacing:0}
h1{margin:0;font-size:28px;font-weight:800}
h2{margin:0 0 14px;font-size:18px}
h3{margin:0 0 10px;font-size:15px}
p{margin-top:0}

.flash{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;padding:12px 14px;border:1px solid;border-radius:8px;box-shadow:var(--shadow-sm)}
.flash.error{border-color:#efc2bc;background:var(--danger-soft);color:#8f1f16}
.flash.success{border-color:#b6dfca;background:var(--success-soft);color:#14633f}
.flash-close{width:26px;height:26px;flex:0 0 auto;padding:0;border:0;border-radius:5px;background:transparent;color:currentColor;font-size:19px;line-height:1}

.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:12px;margin-bottom:22px}
.card,.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm)}
.card{min-width:0;padding:18px}
.panel{margin-bottom:18px;padding:20px}
.card.metric-card{position:relative;overflow:hidden;padding-top:16px}
.card.metric-card::before{position:absolute;top:0;right:0;left:0;height:3px;background:var(--line-strong);content:""}
.card.metric-card.status-success::before{background:var(--success)}
.card.metric-card.status-warning::before{background:#d49a18}
.card.metric-card.status-danger::before{background:var(--danger)}
.card.metric-card.status-info::before{background:var(--blue)}
.metric{font-size:30px;font-weight:850;line-height:1.1;font-variant-numeric:tabular-nums}
.metric-small{margin-bottom:7px;color:var(--muted);font-size:11px;font-weight:750;text-transform:uppercase}
.metric-label{margin-top:8px;color:var(--muted);font-size:12px;font-weight:700}

.grid-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px 18px}
.full{grid-column:1/-1}
form{margin:0}
label{display:flex;flex-direction:column;gap:7px;margin-bottom:14px;color:#34444e;font-size:12px;font-weight:750}
label small,.field-hint{color:var(--muted);font-size:11px;font-weight:500}
input,select,textarea{width:100%;min-height:42px;padding:9px 11px;border:1px solid var(--line-strong);border-radius:6px;background:#fff;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}
input::placeholder,textarea::placeholder{color:#9aa8b0}
input:hover,select:hover,textarea:hover{border-color:#a9b8c0}
input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,107,135,.12);outline:0}
textarea{min-height:110px;resize:vertical}
input[type="checkbox"],input[type="radio"]{width:17px;min-height:17px;padding:0;accent-color:var(--blue)}
input[type="file"]{min-height:44px;padding:7px;background:var(--surface-soft)}
input[type="file"]::file-selector-button{margin-right:10px;padding:7px 10px;border:0;border-radius:5px;background:#e3ecef;color:var(--navy);font-weight:750;cursor:pointer}

button,.button{display:inline-flex;min-height:40px;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border:1px solid var(--blue);border-radius:6px;background:var(--blue);color:#fff;font-weight:750;line-height:1.2;text-align:center;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
button:hover,.button:hover{border-color:var(--blue-hover);background:var(--blue-hover);color:#fff}
button:active,.button:active{transform:translateY(1px)}
.button.secondary,.secondary-button{border-color:var(--line-strong);background:#fff;color:var(--ink)}
.button.secondary:hover,.secondary-button:hover{border-color:#aab9c1;background:#f3f7f8;color:var(--navy)}
.button.danger,button.danger{border-color:var(--danger);background:var(--danger)}
.button.is-processing,button.is-processing{position:relative;padding-left:34px}
.button.is-processing::before,button.is-processing::before{position:absolute;left:13px;width:12px;height:12px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:button-spin .7s linear infinite;content:""}
@keyframes button-spin{to{transform:rotate(360deg)}}

.table-wrap{width:100%;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow-sm)}
table{width:100%;border-collapse:separate;border-spacing:0;white-space:nowrap}
th,td{padding:12px 14px;border-bottom:1px solid #e6ecef;text-align:left;font-size:12px;vertical-align:middle}
th{position:sticky;top:0;z-index:2;background:#eef3f4;color:#52636d;font-size:10px;font-weight:850;text-transform:uppercase}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover td{background:#f7fafb}
td a{font-weight:750}
td code{font-size:11px}
.table-primary{display:block;color:var(--navy);font-weight:800}
.table-secondary{display:block;margin-top:3px;color:var(--muted);font-size:11px}
.clickable-row{cursor:pointer}
.clickable-row:focus{outline:3px solid rgba(23,107,135,.18);outline-offset:-3px}
.empty-state{padding:42px 20px!important;color:var(--muted);text-align:center!important;white-space:normal}

.badge{display:inline-flex;min-height:25px;align-items:center;padding:4px 9px;border:1px solid transparent;border-radius:999px;background:#edf1f3;color:#53636d;font-size:10px;font-weight:850;white-space:nowrap}
.status-success{border-color:#bce0cd;background:var(--success-soft);color:var(--success)}
.status-warning{border-color:#eed99c;background:var(--warning-soft);color:var(--warning)}
.status-danger{border-color:#edc1bb;background:var(--danger-soft);color:var(--danger)}
.status-neutral{border-color:#d7e0e4;background:#edf1f3;color:#53636d}
.status-info{border-color:#bfd8e1;background:var(--info-soft);color:#145b72}
.severity-blocker{border-color:#edc1bb;background:var(--danger-soft);color:var(--danger)}
.severity-warning{border-color:#eed99c;background:var(--warning-soft);color:var(--warning)}
.severity-info{border-color:#bfd8e1;background:var(--info-soft);color:#145b72}

.section-heading,.content-header,.page-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.section-heading{align-items:center;margin:26px 0 12px}
.section-heading h2,.content-header h1{margin:0}
.section-heading p,.content-header p{margin:4px 0 0;color:var(--muted)}
.content-header{margin-bottom:22px}
.content-header .page-eyebrow{margin-bottom:6px}
.content-header-actions{display:flex;flex-wrap:wrap;gap:8px}
.back-link{display:inline-flex;margin-bottom:9px;color:var(--muted);font-size:12px;font-weight:750}
.back-link:hover{color:var(--blue)}

.dashboard-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px;padding:8px 0 2px}
.dashboard-header h1{font-size:30px}
.dashboard-context{margin:7px 0 0;color:var(--muted);font-size:13px}
.dashboard-context strong{color:var(--ink)}
.dashboard-section{margin-top:8px}

.project-toolbar{display:grid;grid-template-columns:minmax(240px,1fr) 220px auto;gap:9px;margin-bottom:14px;padding:12px;border:1px solid var(--line);border-radius:8px;background:#fff}
.project-toolbar input,.project-toolbar select{margin:0}
.toolbar-result{display:flex;align-items:center;justify-content:flex-end;color:var(--muted);font-size:11px;font-weight:700;white-space:nowrap}

.project-summary{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(2,minmax(150px,.6fr));gap:12px;margin-bottom:18px}
.project-summary-main{padding:18px;border:1px solid var(--line);border-left:4px solid var(--teal);border-radius:8px;background:#fff}
.project-summary-main strong{display:block;font-size:16px}
.project-summary-main span{display:block;margin-top:5px;color:var(--muted)}
.project-summary-item{padding:18px;border:1px solid var(--line);border-radius:8px;background:#fff}
.project-summary-item span{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase}
.project-summary-item strong{display:block;margin-top:6px;font-size:14px}

.upload-panel{display:flex;min-height:245px;flex-direction:column}
.upload-panel-header{margin-bottom:14px}
.upload-panel-header h2{margin-bottom:5px}
.upload-panel-header p{margin:0;color:var(--muted);font-size:12px}
.file-picker{display:flex;flex:1;flex-direction:column;justify-content:center;margin-bottom:14px;padding:18px;border:1px dashed #9fb2bb;border-radius:8px;background:#f8fbfb}
.file-picker input{background:#fff}
.current-file{margin:0 0 14px;padding:9px 11px;border-left:3px solid var(--teal);background:#eef6f5;color:#42545e;font-size:11px;overflow-wrap:anywhere}
.upload-panel>button{align-self:flex-start}
.workflow-panel{display:flex;align-items:center;justify-content:space-between;gap:18px}
.workflow-panel h2{margin-bottom:5px}
.workflow-panel p{margin:0;color:var(--muted)}

.users-layout{display:grid;grid-template-columns:340px minmax(0,1fr);align-items:start;gap:18px}
.users-create-panel{position:sticky;top:calc(var(--topbar-height) + 18px);margin:0}
.users-layout .section-heading{margin-top:0}

.validation-progress{margin-top:16px}
.validation-progress p{margin:7px 0}
.validation-runner{display:flex;align-items:center;justify-content:space-between;gap:18px}
.validation-runner p{max-width:760px;margin:4px 0 0;color:var(--muted)}
.notice{margin-bottom:16px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:#fff}
.notice-danger{border-color:#edc1bb;background:var(--danger-soft);color:var(--danger)}

.login-page{min-height:100vh;background:#edf2f2}
.login-shell{display:grid;min-height:100vh;grid-template-columns:minmax(340px,.8fr) minmax(440px,1.2fr)}
.login-brand-panel{position:relative;display:flex;min-height:100%;flex-direction:column;justify-content:space-between;overflow:hidden;padding:52px;background:var(--navy);color:#fff}
.login-brand-panel .brand{color:#fff}
.login-brand-panel .brand-mark{background:#fff}
.login-brand-panel .brand-mark i{background:var(--navy)}
.login-brand-panel .brand-mark i:first-child{background:var(--teal)}
.login-brand-panel .brand-mark i:last-child{background:#d49a18}
.login-brand-panel .brand-copy small{color:#bdd0da}
.login-brand-content{max-width:440px;margin:auto 0}
.login-kicker{margin:0 0 12px;color:#91d1ca;font-size:11px;font-weight:800;text-transform:uppercase}
.login-brand-content h1{max-width:430px;color:#fff;font-size:42px;line-height:1.12}
.login-brand-content p{max-width:380px;margin:16px 0 0;color:#c9d9e0;font-size:15px;line-height:1.7}
.login-ledger-visual{display:grid;max-width:420px;grid-template-columns:1.1fr .65fr .65fr;gap:1px;margin-top:34px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.18)}
.login-ledger-visual span{height:34px;background:var(--navy-strong)}
.login-ledger-visual span:nth-child(1),.login-ledger-visual span:nth-child(2),.login-ledger-visual span:nth-child(3){height:24px;background:#1c506a}
.login-brand-footer{color:#9fb7c3;font-size:11px}
.login-form-panel{display:grid;min-height:100%;place-items:center;padding:36px}
.login-card{width:min(440px,100%);padding:34px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow-md)}
.login-mobile-brand{display:none;margin-bottom:26px}
.login-card header{margin-bottom:24px}
.login-card h2{margin:0 0 7px;font-size:27px}
.login-card header p{margin:0;color:var(--muted)}
.login-card label{margin-bottom:17px}
.login-card button[type="submit"]{width:100%;margin-top:3px}
.password-field{position:relative}
.password-field input{padding-right:68px}
.password-toggle{position:absolute;top:4px;right:4px;min-height:34px;padding:0 10px;border-color:transparent;background:transparent;color:var(--blue);font-size:11px}
.password-toggle:hover{border-color:transparent;background:#edf4f5;color:var(--blue-hover)}
.login-note{margin:20px 0 0;color:var(--muted);font-size:10px;text-align:center}

code,pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}

@media(max-width:1050px){
  .topbar-inner{gap:16px;padding:0 18px}
  .nav-link,.nav-dropdown-toggle{padding:0 9px}
  .user-copy{display:none}
  .account-navigation{padding-left:10px}
  .login-brand-panel{padding:38px}
}

@media(max-width:860px){
  :root{--topbar-height:60px}
  .topbar{height:var(--topbar-height)}
  .topbar-inner{justify-content:space-between;padding:0 14px}
  .brand-mark{width:34px;height:34px}
  .brand-copy small{display:none}
  .topbar-menu-button{display:block}
  .topbar nav{position:fixed;top:60px;right:0;bottom:0;display:none;width:min(360px,100vw);min-width:0;overflow:auto;align-items:stretch;justify-content:flex-start;flex-direction:column;gap:16px;padding:14px;border-left:1px solid var(--line);background:#fff;box-shadow:-16px 20px 34px rgba(18,52,77,.14)}
  .topbar nav.open{display:flex}
  .primary-navigation{align-items:stretch;flex-direction:column}
  .nav-link,.nav-dropdown-toggle{width:100%;justify-content:space-between;padding:0 12px}
  .nav-dropdown-menu{position:static;display:grid;width:100%;grid-template-columns:1fr;margin-top:5px;border:0;border-left:2px solid var(--line);border-radius:0;box-shadow:none}
  .nav-dropdown-toggle span{display:none}
  .nav-dropdown-menu a{padding:9px 12px}
  .account-navigation{margin-top:auto;padding:14px 0 0;border-top:1px solid var(--line);border-left:0}
  .user-copy{display:flex;min-width:0;flex:1}
  .nav-logout{margin-left:auto}
  .container{padding:22px 18px 36px}
  .grid-2,.form-grid{grid-template-columns:1fr}
  .full{grid-column:auto}
  .project-summary{grid-template-columns:1fr 1fr}
  .project-summary-main{grid-column:1/-1}
  .users-layout{grid-template-columns:1fr}
  .users-create-panel{position:static}
  .login-shell{grid-template-columns:1fr}
  .login-brand-panel{display:none}
  .login-form-panel{padding:24px}
  .login-mobile-brand{display:flex}
}

@media(max-width:640px){
  body{font-size:13px}
  .container{padding:18px 12px 30px}
  h1{font-size:24px}
  .page-heading{margin-bottom:18px}
  .panel{padding:16px}
  .cards{grid-template-columns:1fr 1fr;gap:9px}
  .card{padding:14px}
  .metric{font-size:25px}
  .dashboard-header,.content-header,.section-heading,.workflow-panel,.validation-runner{align-items:stretch;flex-direction:column}
  .dashboard-header h1{font-size:26px}
  .dashboard-header>.button,.content-header-actions,.content-header-actions>*{width:100%}
  .content-header-actions{display:grid;grid-template-columns:1fr}
  .project-toolbar{grid-template-columns:1fr}
  .toolbar-result{justify-content:flex-start}
  .project-summary{grid-template-columns:1fr}
  .project-summary-main{grid-column:auto}
  .workflow-panel .button,.validation-runner button{width:100%}
  .login-form-panel{padding:14px}
  .login-card{padding:24px 20px}
  .login-card h2{font-size:24px}
  .table-mobile-cards{border:0;background:transparent;box-shadow:none;overflow:visible}
  .table-mobile-cards table,.table-mobile-cards thead,.table-mobile-cards tbody,.table-mobile-cards tr,.table-mobile-cards td{display:block;width:100%}
  .table-mobile-cards thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .table-mobile-cards tbody{display:grid;gap:9px}
  .table-mobile-cards tr{padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow-sm)}
  .table-mobile-cards td{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px;padding:7px 0;border:0;white-space:normal}
  .table-mobile-cards td::before{color:var(--muted);content:attr(data-label);font-size:10px;font-weight:800;text-transform:uppercase}
  .table-mobile-cards td:first-child{padding-top:2px}
  .table-mobile-cards td:last-child{padding-bottom:2px}
  .table-mobile-cards tr:hover td{background:transparent}
  .table-mobile-cards .empty-state{display:block;padding:28px 14px!important}
  .table-mobile-cards .empty-state::before{display:none}
}

@media(max-width:420px){
  .cards{grid-template-columns:1fr}
  .brand-copy strong{font-size:14px}
  .table-mobile-cards td{grid-template-columns:92px minmax(0,1fr)}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}
