:root{
  --bg:#f4f6f8;--panel:#ffffff;--ink:#172033;--muted:#7a8496;--line:#e2e7ee;
  --nav:#0d1525;--nav-2:#121d31;--nav-line:#243149;--brand:#2e63f5;--brand-2:#204fd2;
  --good:#0f8a5f;--warn:#b76a00;--bad:#c23b4d;--info:#2368b5;
  --r:10px;--r-lg:14px;--shadow:0 8px 24px rgba(20,32,51,.055);
  --font-body:"Metropolis","Manrope","Avenir Next","Inter","Segoe UI",Arial,sans-serif;
  --font-display:"Grift","Metropolis","Manrope","Avenir Next","Inter","Segoe UI",Arial,sans-serif;
}
*{box-sizing:border-box}
html{font-size:16px;background:var(--bg)}
body{margin:0;font-family:var(--font-body);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app{display:block;min-height:100dvh}

/* Sidebar */
.sidebar{background:linear-gradient(180deg,#0b1322 0%,#101a2c 100%);color:#fff;position:fixed;left:0;top:0;bottom:0;width:264px;height:auto;overflow:hidden;z-index:50;border-right:1px solid rgba(255,255,255,.055);display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.sidebar-head{padding:20px 16px 13px;min-width:0}.sidebar-scroll{min-height:0;height:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 10px 24px;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#52617a transparent}.sidebar-scroll::-webkit-scrollbar{width:7px}.sidebar-scroll::-webkit-scrollbar-track{background:transparent}.sidebar-scroll::-webkit-scrollbar-thumb{background:#46566f;border-radius:999px;border:2px solid transparent;background-clip:content-box}.sidebar-scroll::-webkit-scrollbar-thumb:hover{background:#687892;background-clip:content-box}
.brand{display:flex;gap:11px;align-items:center;padding:0}.logo{width:42px;height:42px;border-radius:10px;background:linear-gradient(145deg,#3976ff,#18a1b8);display:grid;place-items:center;font-family:var(--font-display);font-size:17px;font-weight:800;box-shadow:0 8px 22px rgba(46,99,245,.25)}.brand-name{font-family:var(--font-display);font-size:15px;font-weight:750;letter-spacing:-.01em}.brand small{display:block;color:#8492a8;font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:165px}
.nav-title{font-size:9px;letter-spacing:.14em;color:#71819a;font-weight:800;padding:17px 10px 6px;text-transform:uppercase}.nav{display:grid;gap:3px}.nav a{display:flex;gap:10px;align-items:center;min-height:40px;padding:8px 10px;border-radius:8px;color:#aab6c9;font-weight:600;font-size:13px;position:relative;transition:.15s ease}.nav a:hover{background:rgba(255,255,255,.055);color:#f5f8ff}.nav a.active{background:#1d2a40;color:#fff}.nav a.active:before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:999px;background:#4b79ff}.nav-icon{width:18px;height:18px;display:grid;place-items:center;flex:0 0 18px;color:#7f8da5}.nav a.active .nav-icon,.nav a:hover .nav-icon{color:#9fb7ff}.nav-icon svg{width:17px;height:17px;display:block;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.context-box{border:1px solid #2a3952;background:#131f33;border-radius:9px;padding:10px;margin:7px 0 4px}.context-company{display:flex;gap:9px;align-items:center}.context-company .logo-sm{width:35px;height:35px;border-radius:7px}.context-kicker{font-size:9px;letter-spacing:.12em;color:#7f8fa8;font-weight:800;text-transform:uppercase}.context-box .name{font-weight:700;font-size:13px;margin-top:2px;line-height:1.25}.context-box .small{color:#8f9db2}.context-box .btn{margin-top:9px;width:100%;background:#1d2a40;border:1px solid #31415b;color:#e7edf7}.context-box .btn:hover{background:#273751}
.userbox{position:relative;z-index:2;margin:10px;border:1px solid #2a3952;background:#142035;border-radius:10px;padding:10px;box-shadow:0 -12px 22px rgba(9,15,26,.18)}.userbox .user-name{font-weight:700;font-size:12px}.userbox .user-meta{font-size:10px;color:#8d9ab0;margin-top:3px;line-height:1.35}.userbox .user-actions{display:flex;gap:7px;margin-top:9px}.userbox .btn{min-height:32px;padding:6px 9px;font-size:11px}.userbox .btn.ghost{background:transparent;border-color:#31415c;color:#cbd5e5}

/* Main shell */
.main{min-width:0;min-height:100dvh;margin-left:264px}.topbar{min-height:76px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);backdrop-filter:blur(10px);display:flex;align-items:center;gap:12px;padding:12px 24px;position:sticky;top:0;z-index:30}.topbar h1{font-family:var(--font-display);font-size:21px;line-height:1.2;margin:0;font-weight:720;letter-spacing:-.025em}.topbar .sub{font-size:11px;color:var(--muted);margin-top:3px}.crumb{margin-left:auto;font-size:11px;color:#758096;max-width:650px;text-align:right;background:#f7f8fb;border:1px solid var(--line);padding:6px 9px;border-radius:7px}.content{padding:22px 24px 34px;max-width:1680px;margin:auto}

/* Typography / common */
.row{display:flex;gap:10px;align-items:center}.wrap{flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--muted)}.small{font-size:12px}.xs{font-size:10.5px}.bold{font-weight:700}.section-title{font-family:var(--font-display);font-size:16px;font-weight:700;letter-spacing:-.01em}.entity-title{font-family:var(--font-display);font-size:22px;font-weight:720;letter-spacing:-.025em;line-height:1.15}.eyebrow{font-size:9px;text-transform:uppercase;letter-spacing:.14em;font-weight:800;color:var(--muted)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}.pad{padding:16px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.grid6{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}

/* Buttons */
.btn{border:1px solid transparent;border-radius:8px;padding:8px 12px;font-weight:650;background:#edf1f7;color:#263248;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;transition:.15s ease}.btn:hover{transform:translateY(-1px);filter:brightness(.985)}.btn.primary{background:var(--brand);color:#fff;box-shadow:0 6px 16px rgba(46,99,245,.18)}.btn.primary:hover{background:var(--brand-2)}.btn.good{background:#e8f7f0;color:#126a49}.btn.danger{background:#ffedf0;color:#aa3040}.btn.dark{background:#1c2739;color:#fff}.btn.ghost{background:#fff;border-color:var(--line);color:#344056}.btn.sm{padding:6px 9px;font-size:11px;min-height:32px}.btn.big{min-height:45px;font-size:14px}

/* Forms */
.input,.select,.textarea{width:100%;border:1px solid #d7dee8;border-radius:8px;padding:9px 10px;background:#fff;outline:none;color:var(--ink);min-height:40px;transition:.15s}.textarea{min-height:92px;resize:vertical}.big-input{min-height:46px}.input:hover,.select:hover,.textarea:hover{border-color:#c5cedb}.input:focus,.select:focus,.textarea:focus{border-color:#7195ff;box-shadow:0 0 0 3px #edf2ff}label{display:block;font-size:11px;font-weight:700;color:#4a566c;margin-bottom:5px}.help{font-size:10.5px;color:var(--muted);margin-top:4px}.field{min-width:0}

/* Badges & tags */
.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:6px;font-size:9.5px;font-weight:750;background:#eef2ff;color:#3346a8;letter-spacing:.01em}.badge.good{background:#e9f8f1;color:#17653f}.badge.bad{background:#ffecef;color:#a83240}.badge.warn{background:#fff4e3;color:#955600}.badge.info{background:#edf5ff;color:#1b5b9b}.badge.dark{background:#f0f2f6;color:#4b5565}.badge.critical{background:#ffe8ec;color:#a62c3b}.badge.high{background:#fff1dc;color:#9a5700}.badge.medium{background:#eff2f6;color:#4d586a}.badge.low{background:#edf8f4;color:#237455}.tag{font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;background:#f2f4f7;color:#38445a;padding:4px 6px;border-radius:5px;font-size:10px;border:1px solid #e7ebf0}

/* Dashboard */
.kpi{padding:14px 15px;border-radius:11px;box-shadow:none}.kpi .label{font-size:10px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.055em}.kpi .num{font-family:var(--font-display);font-size:25px;font-weight:720;letter-spacing:-.03em;margin-top:5px}.hero{background:linear-gradient(135deg,#111b2e,#1a2b48 65%,#21406a);color:#fff;border-radius:14px;padding:19px 20px;box-shadow:0 14px 30px rgba(14,26,47,.12)}.hero .muted{color:#aebbd0}.live-time{font-family:var(--font-display);font-size:25px;font-weight:720;letter-spacing:-.02em}

/* Tables */
.table-wrap{overflow:auto;border-radius:10px}.table{width:100%;border-collapse:separate;border-spacing:0;min-width:1180px}.table th{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#788397;background:#f7f8fa;text-align:left;padding:10px 10px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap;font-weight:750}.table th:first-child{border-left:1px solid var(--line);border-radius:8px 0 0 0}.table th:last-child{border-right:1px solid var(--line);border-radius:0 8px 0 0}.table td{padding:11px 10px;border-bottom:1px solid #ebeff4;font-size:11.5px;vertical-align:middle;background:#fff}.table tr:hover td{background:#fafcff}.table tr:last-child td:first-child{border-radius:0 0 0 8px}.table tr:last-child td:last-child{border-radius:0 0 8px 0}.link{color:var(--brand);font-weight:700}

/* Entity cards */
.company-card,.asset-card,.project-card{box-shadow:none;transition:.15s ease}.company-card:hover,.asset-card:hover,.project-card:hover{border-color:#b8c7e8;background:#fcfdff;transform:translateY(-1px)}.hierarchy{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.hierarchy span{border:1px solid var(--line);background:#fafbfd;padding:5px 7px;border-radius:6px;font-size:10px;font-weight:650;color:#566176}.tech{border:1px solid var(--line);background:#fafbfc;border-radius:8px;padding:9px 10px}.tech .k{font-size:8.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-weight:750}.tech .v{font-size:11.5px;font-weight:650;margin-top:4px;color:#273248}
.logo-img{width:64px;height:64px;object-fit:contain;border:1px solid var(--line);border-radius:9px;background:#fff;padding:5px}.logo-sm{width:40px;height:40px;object-fit:contain;border:1px solid var(--line);border-radius:7px;background:#fff;padding:3px}.no-logo{display:grid;place-items:center;font-size:8px;color:#8b95a7;background:#f8fafc}

/* Lists / activity */
.alert{padding:10px 12px;border-radius:8px;margin-bottom:14px;font-size:11px;border:1px solid transparent}.alert.good{background:#ebf8f2;color:#17653f;border-color:#d8eee4}.alert.bad{background:#fff0f2;color:#a83240;border-color:#f4d9de}.alert.warn{background:#fff7e9;color:#8e5500;border-color:#f2e4c7}.activity{display:flex;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line);align-items:flex-start}.activity:last-child{border-bottom:0}.activity:hover{background:#fbfcfe}.dot{width:7px;height:7px;border-radius:50%;background:#4d7dff;margin-top:6px;flex:0 0 auto}.empty{padding:28px;text-align:center;color:var(--muted);border:1px dashed #cfd6e1;border-radius:10px;background:#fbfcfe}
.step{display:flex;align-items:flex-start;gap:11px;padding:12px;border:1px solid var(--line);border-radius:9px;background:#fff}.step-num{width:28px;height:28px;border-radius:7px;background:#edf2ff;color:#2457f5;font-weight:750;display:grid;place-items:center;flex:0 0 auto}.choice{border:1px solid var(--line);border-radius:9px;padding:11px;background:#fff}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.perm{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:9px;background:#fbfcfe}.perm:hover{border-color:#c4d1ed;background:#fff}.perm input{margin-top:2px}

/* Dialogs */
dialog{border:0;border-radius:14px;padding:0;width:min(920px,94vw);max-height:92vh;box-shadow:0 30px 90px rgba(0,0,0,.24);background:#fff}dialog::backdrop{background:rgba(8,14,25,.52);backdrop-filter:blur(2px)}.dialog-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:2}.dialog-head>.bold{font-family:var(--font-display);font-size:15px}.dialog-body{padding:16px;overflow:auto}.review-box{border:1px solid var(--line);background:#fafbfd;border-radius:9px;padding:11px}.danger-text{color:var(--bad);font-weight:700}.good-text{color:var(--good);font-weight:700}details.advanced{border:1px solid var(--line);border-radius:9px;padding:10px;background:#fafbfd}details.advanced summary{cursor:pointer;font-weight:700}

/* Mobile punch cards */
.mobile-only{display:none}.desktop-only{display:block}.mobile-punch-list{display:none}.mobile-punch{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fff;margin-bottom:9px;box-shadow:0 4px 14px rgba(20,32,51,.04)}.mobile-punch .title{font-size:13px;font-weight:700;margin:7px 0}.mobile-actions{position:sticky;bottom:8px;z-index:15;padding-top:10px}.mobile-actions .btn{width:100%;box-shadow:0 8px 24px rgba(36,87,245,.18)}.mobile-menu{display:none}.sidebar-overlay{display:none}

/* Login */
.login{min-height:100dvh;display:grid;grid-template-columns:1.04fr .96fr;background:#0e1422}.login-left{color:#fff;padding:64px;display:flex;flex-direction:column;justify-content:center;background:radial-gradient(circle at 15% 18%,rgba(53,103,255,.30),transparent 33%),radial-gradient(circle at 75% 72%,rgba(18,141,165,.16),transparent 30%),#0c1424}.login-left h1{font-family:var(--font-display);font-size:46px;letter-spacing:-.04em;margin:18px 0 10px}.login-left p{font-size:17px;line-height:1.65;color:#b9c4d5;max-width:640px}.login-right{background:#f7f8fa;display:flex;align-items:center;justify-content:center;padding:34px}.login-box{width:min(440px,100%)}

@media(max-width:1200px){.grid6{grid-template-columns:repeat(3,1fr)}.grid4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){
 html{font-size:16px}.app{display:block}.main{margin-left:0}.sidebar{position:fixed;left:0;top:0;bottom:0;width:min(86vw,300px);height:100dvh;transform:translateX(-105%);transition:.22s;box-shadow:20px 0 60px rgba(0,0,0,.25);display:grid;grid-template-rows:auto minmax(0,1fr) auto}.sidebar.open{transform:none}.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(8,14,25,.52);z-index:45}.sidebar-overlay.show{display:block}.mobile-menu{display:inline-flex;min-width:40px;padding:7px 9px}.grid2,.grid3,.grid6{grid-template-columns:1fr}.grid4{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.topbar{min-height:64px;padding:10px 12px;align-items:center}.topbar h1{font-size:18px}.topbar .sub{font-size:10.5px}.crumb{display:none}.content{padding:12px 12px 24px}.login{grid-template-columns:1fr}.login-left{display:none}.login-right{min-height:100dvh;padding:16px}.desktop-only{display:none!important}.mobile-only{display:block}.mobile-punch-list{display:block}.table-wrap.mobile-hide{display:none}.permission-grid{grid-template-columns:1fr}.row.mobile-stack{align-items:stretch;flex-direction:column}.row.mobile-stack>.spacer{display:none}.btn{min-height:42px}.btn.sm{min-height:38px}.input,.select,.textarea{font-size:16px;min-height:46px}dialog{width:96vw;max-height:94vh;border-radius:12px}.dialog-body{padding:13px}.hero{padding:15px}.live-time{font-size:21px}.context-box{margin-top:8px}.pad{padding:13px}.kpi{padding:12px}.kpi .num{font-size:22px}.entity-title{font-size:19px}.logo-img{width:54px;height:54px}
}
@media(max-width:430px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar h1{font-size:17px}.content{padding:10px}.hero .row{align-items:flex-start}.hero .spacer{display:none}.hero .row.wrap{flex-direction:column}.hero [style*="text-align:right"]{text-align:left!important}.btn.big{width:100%}}

.external-company-card{box-shadow:none}.external-company-card:hover{border-color:#bac8e8;background:#fcfdff}


/* v4.1.3 digital signature / approval workflow */
.external-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:210px;overflow:auto;margin-top:8px;padding-right:3px}.external-option[hidden]{display:none!important}
.signoff-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.signoff-card{position:relative;border:1px solid var(--line);background:#fafbfd;border-radius:10px;padding:12px 12px 12px 44px;min-height:122px}.signoff-card.done{border-color:#bfe1d2;background:#fbfffd}.signoff-step{position:absolute;left:12px;top:12px;width:24px;height:24px;border-radius:7px;background:#e9eef6;color:#536075;display:grid;place-items:center;font-size:11px;font-weight:800}.signoff-card.done .signoff-step{background:#e8f7f0;color:#126a49}.signature-box{margin-top:8px;background:#fff;border:1px solid var(--line);border-radius:7px;padding:6px;display:inline-flex}.signature-thumb{display:block;max-width:145px;max-height:48px;object-fit:contain}.signature-preview{display:block;max-width:220px;max-height:80px;object-fit:contain;background:#fff}.signature-missing{padding:10px;border:1px dashed #cbd3df;border-radius:7px;color:var(--muted);font-size:10px}.signature-user-box{border:1px solid var(--line);border-radius:8px;padding:8px;background:#fafbfd;min-height:70px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px}
@media(max-width:850px){.external-picker,.signoff-grid{grid-template-columns:1fr}.signoff-card{min-height:auto}.signature-preview{max-width:180px}}

/* v4.3 controlled closeout + signature workflow */
.closeout-panel{border-top:3px solid #2457f5}
.closeout-progress{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.closeout-panel .signoff-card{min-height:150px}
.approval-send,.client-decision{border-color:#c8d5f3;background:#f8faff}
.signature-admin-card{border-color:#d7deea;background:#fbfcfe}
.signature-admin-card .signature-preview{max-width:230px;max-height:82px}
.warn-text{color:#9a5b00}
.project-external-picker summary{font-weight:700;cursor:pointer}
.external-project-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.closeout-alert-card{border-left:4px solid #c47700}
@media(max-width:850px){.closeout-progress,.external-project-list{grid-template-columns:1fr}.closeout-panel .signoff-card{min-height:auto}.approval-send form{align-items:stretch}.approval-send .select{max-width:none!important;width:100%}}
