:root{--navy:#10263f;--navy-2:#173b5e;--blue:#1768d4;--cyan:#00a6a6;--bg:#f3f6f9;--panel:#fff;--text:#172536;--muted:#6d7b8a;--line:#dfe6ed;--ok:#15936b;--warn:#d88a10;--danger:#d44949;--shadow:0 12px 34px rgba(19,42,67,.08);font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--text);background:var(--bg)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);font-size:14px}a{color:var(--blue);text-decoration:none}button,input,select{font:inherit}small{display:block;color:var(--muted);margin-top:4px}.app-shell{display:grid;grid-template-columns:250px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:linear-gradient(180deg,var(--navy),#0a1b2d);color:#fff;padding:28px 20px;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:12px;color:inherit}.brand-mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#18c4be,#2d73ec);font-weight:800;color:#fff;letter-spacing:-1px;box-shadow:0 8px 20px rgba(0,166,166,.25)}.brand strong{display:block;font-size:15px}.brand small{color:#9eb2c6;font-size:11px}.sidebar nav{display:grid;gap:6px;margin:42px 0}.sidebar nav a{padding:12px 14px;color:#b8c6d3;border-radius:10px;display:flex;align-items:center;gap:12px;font-weight:600}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.09);color:#fff}.sidebar nav a.active{box-shadow:inset 3px 0 #19c2bd}.sidebar nav span{width:18px;text-align:center}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding-top:18px}.user-chip{display:flex;gap:10px;align-items:center}.avatar{width:34px;height:34px;border-radius:50%;background:#1d6dd8;display:grid;place-items:center;font-weight:800}.user-chip small{color:#8fa5b9;text-transform:capitalize}.link-button{background:none;border:0;color:#9fb2c4;padding:12px 0;cursor:pointer}.main-content{grid-column:2;padding:30px 34px 50px;min-width:0}.topbar{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:24px}.topbar h1{font-size:29px;line-height:1.1;margin:4px 0 0;letter-spacing:-.8px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:1.5px;color:var(--cyan);margin:0;text-transform:uppercase}.topbar-date{text-align:right;font-weight:700}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.kpi-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi-card:before{content:"";position:absolute;width:7px;inset:0 auto 0 0;background:#8ba0b4}.kpi-card.accent:before{background:var(--blue)}.kpi-card.warning:before{background:var(--warn)}.kpi-card.danger:before{background:var(--danger)}.kpi-card span{color:var(--muted);font-weight:600}.kpi-card strong{display:block;font-size:34px;margin:10px 0 5px;letter-spacing:-1.5px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:20px;margin-bottom:18px;min-width:0}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.panel-head h2{font-size:18px;margin:4px 0 0}.panel-head>a{font-size:13px;font-weight:700}.split-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:18px}.project-list{display:grid}.project-row{display:grid;grid-template-columns:44px minmax(120px,1fr) 70px 105px auto;gap:12px;align-items:center;padding:13px 0;border-top:1px solid var(--line)}.project-row:first-child{border-top:0}.project-code{width:38px;height:38px;border-radius:10px;background:#eaf2fc;color:var(--blue);display:grid;place-items:center;font-weight:800}.project-main strong{display:block}.project-metric{text-align:right}.project-metric strong{font-size:17px}.project-status{font-size:11px;font-weight:800;text-align:center;border-radius:20px;padding:7px 9px}.ok-status{color:var(--ok);background:#e7f7f1}.muted-status{color:#87681d;background:#fff4d6}.timeline{display:grid}.timeline-item{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:start;padding:12px 0;border-top:1px solid var(--line)}.timeline-item:first-child{border-top:0}.timeline-item p{margin:4px 0;color:var(--muted);font-size:12px}.status-dot{width:9px;height:9px;border-radius:50%;margin-top:5px;background:#97a7b7}.status-dot.completed{background:var(--ok)}.status-dot.running,.status-dot.queued{background:var(--blue)}.status-dot.failed{background:var(--danger)}.badge{display:inline-flex;width:max-content;border-radius:20px;padding:5px 8px;font-size:10px;font-weight:800;text-transform:uppercase;background:#eef2f5;color:#657585}.badge.completed,.badge.online{background:#e3f6ee;color:var(--ok)}.badge.running,.badge.queued{background:#e7f0ff;color:var(--blue)}.badge.failed,.badge.error{background:#feeaea;color:var(--danger)}.badge.partial,.badge.unreachable{background:#fff2d9;color:#9a6400}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}.wide-table{max-height:66vh}table{border-collapse:collapse;width:100%;min-width:780px}th,td{padding:12px 13px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{position:sticky;top:0;background:#f6f8fa;color:#536273;font-size:11px;text-transform:uppercase;letter-spacing:.6px;z-index:1}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#f8fbfd}td strong{display:block}.note-cell{min-width:220px;white-space:normal}.row-muted{opacity:.68}.component-pill{display:inline-block;padding:5px 8px;background:#edf3f9;color:#36536e;border-radius:7px;font-size:11px;font-weight:700}.filter-panel{padding:16px}.filter-form{display:flex;gap:12px;align-items:end}.filter-form label{min-width:150px}.filter-form .grow{flex:1}label{display:grid;gap:7px;color:#435466;font-size:12px;font-weight:700}input,select{width:100%;border:1px solid #cdd7e0;border-radius:9px;background:#fff;padding:10px 11px;color:var(--text);outline:none}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,104,212,.12)}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cbd7e1;background:#fff;color:#2d4b66;border-radius:9px;padding:10px 14px;font-weight:750;cursor:pointer;white-space:nowrap}.button:hover{border-color:#91a9bd}.button.primary{background:var(--blue);border-color:var(--blue);color:#fff}.button.small{padding:7px 10px;font-size:11px}.button.tiny{padding:5px 8px;font-size:10px}.button.wide{width:100%}.button:disabled{cursor:not-allowed;opacity:.45}.result-count{color:var(--muted);font-weight:700}.empty-state{text-align:center;color:var(--muted);padding:28px!important}.flash{padding:12px 15px;border-radius:10px;margin-bottom:15px;background:#e7f0ff;color:#245b9f;font-weight:650}.flash.success{background:#e2f6ed;color:#147252}.flash.error{background:#fee7e7;color:#9f3030}.stack-form{display:grid;gap:14px}.users-grid{grid-template-columns:1fr 1fr}.info-list{list-style:none;padding:0;margin:0;display:grid;gap:18px}.info-list li{display:grid;gap:4px}.info-list span{color:var(--muted)}.permission-form{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.permission-chip,.mini-check{display:inline-flex;align-items:center;gap:4px}.permission-chip input,.mini-check input{width:auto}.permission-chip span{border:1px solid var(--line);border-radius:6px;padding:4px 6px}.permission-chip input:checked+span{background:#e7f0ff;border-color:#a9c7ef;color:var(--blue)}.narrow-panel{max-width:580px}.muted{color:var(--muted);line-height:1.6}.auth-shell{background:#eaf0f5;display:grid;place-items:center;padding:28px}.login-wrap{width:min(1040px,100%);min-height:620px;display:grid;grid-template-columns:1.25fr .85fr;border-radius:24px;overflow:hidden;background:#fff;box-shadow:0 28px 80px rgba(12,34,55,.18)}.login-panel{position:relative;padding:46px;color:#fff;background:radial-gradient(circle at 90% 10%,rgba(24,196,190,.38),transparent 34%),linear-gradient(145deg,#102c49,#0b1d31);overflow:hidden}.login-brand{position:relative;z-index:2}.login-copy{position:relative;z-index:2;margin-top:120px;max-width:470px}.login-copy h1{font-size:44px;line-height:1.07;letter-spacing:-1.8px;margin:13px 0 20px}.login-copy>p:last-child{font-size:16px;line-height:1.7;color:#c7d5e2}.login-orbit span{position:absolute;border:1px solid rgba(255,255,255,.12);border-radius:50%}.login-orbit span:nth-child(1){width:360px;height:360px;right:-120px;bottom:-100px}.login-orbit span:nth-child(2){width:250px;height:250px;right:-60px;bottom:-50px}.login-orbit span:nth-child(3){width:60px;height:60px;right:70px;bottom:65px;background:#18c4be;border:0;box-shadow:0 0 50px rgba(24,196,190,.5)}.login-card{padding:68px 48px;align-self:center}.login-card h2{font-size:28px;margin:9px 0}.login-card .muted{margin-bottom:28px}.security-note{font-size:11px;color:var(--muted);text-align:center;margin-top:25px}.auth-flash{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:3}.compact .project-row{grid-template-columns:44px 1fr 170px auto}
@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.split-grid{grid-template-columns:1fr}.filter-form{flex-wrap:wrap}.filter-form .grow{flex-basis:100%}}
@media(max-width:760px){.app-shell{display:block}.sidebar{position:static;width:100%;height:auto;padding:18px}.sidebar nav{display:flex;overflow:auto;margin:18px 0 0}.sidebar nav a{white-space:nowrap}.sidebar-footer{display:none}.main-content{padding:22px 15px}.kpi-grid{grid-template-columns:1fr 1fr;gap:10px}.kpi-card{padding:15px}.kpi-card strong{font-size:27px}.project-row{grid-template-columns:40px 1fr auto}.project-metric,.project-status{display:none}.topbar-date{display:none}.filter-form{display:grid}.filter-form label,.filter-form .grow{min-width:0}.login-wrap{grid-template-columns:1fr}.login-panel{display:none}.login-card{padding:48px 30px}.users-grid{grid-template-columns:1fr}}

/* Collapsible desktop navigation */
.app-shell,.sidebar,.main-content{transition:grid-template-columns .22s ease,width .22s ease,padding .22s ease}
.sidebar-toggle{width:38px;height:38px;flex:0 0 38px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--navy);display:grid;place-items:center;cursor:pointer;box-shadow:0 5px 16px rgba(19,42,67,.07)}
.sidebar-toggle:hover{border-color:#91a9bd;background:#f8fbfd}
.sidebar-toggle span{font-size:25px;line-height:1;transition:transform .22s ease}
.topbar{gap:14px}.topbar-title{flex:1}
.app-shell.sidebar-collapsed{grid-template-columns:78px 1fr}
.sidebar-collapsed .sidebar{width:78px;padding-left:13px;padding-right:13px}
.sidebar-collapsed .brand{justify-content:center}
.sidebar-collapsed .brand-copy,.sidebar-collapsed .nav-label,.sidebar-collapsed .user-copy,.sidebar-collapsed .sidebar-footer form{display:none}
.sidebar-collapsed .sidebar nav a{justify-content:center;padding-left:10px;padding-right:10px}
.sidebar-collapsed .sidebar nav .nav-icon{width:18px}
.sidebar-collapsed .user-chip{justify-content:center}
.sidebar-collapsed .sidebar-toggle span{transform:rotate(180deg)}
@media(max-width:760px){.sidebar-toggle{display:none}.app-shell.sidebar-collapsed{display:block}.sidebar-collapsed .sidebar{width:100%;padding:18px}.sidebar-collapsed .brand{justify-content:flex-start}.sidebar-collapsed .brand-copy,.sidebar-collapsed .nav-label{display:block}.sidebar-collapsed .sidebar nav a{justify-content:flex-start}.topbar{gap:0}}

/* Portal usability refinements */
.sidebar{overflow:visible}.sidebar nav .nav-icon{width:18px;flex:0 0 18px;text-align:center}.sidebar nav .nav-label{width:auto;white-space:nowrap}
.sidebar-toggle{position:absolute;top:30px;right:-18px;z-index:11}.topbar{gap:0}
.device-list{border:1px solid var(--line);border-radius:12px;max-height:68vh;overflow-y:auto;overflow-x:hidden;background:#f7f9fb}
.device-card{padding:16px;background:#fff;border-bottom:1px solid var(--line)}.device-card:last-child{border-bottom:0}.device-card:hover{background:#fbfdff}
.device-card-head{display:grid;grid-template-columns:minmax(190px,1.2fr) minmax(140px,.8fr) minmax(170px,1fr) auto;gap:18px;align-items:center}
.device-card-head strong{display:block;overflow-wrap:anywhere}.meta-label{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;margin-bottom:4px}
.device-components{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;margin:14px 0 0;background:var(--line);border:1px solid var(--line);border-radius:9px;overflow:hidden}
.device-components>div{background:#f8fafc;padding:10px 12px;min-width:0}.device-components dt{color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}.device-components dd{margin:5px 0 0;font-size:12px;font-weight:650;overflow-wrap:anywhere}
.device-note{margin-top:10px;padding:9px 11px;border-radius:8px;background:#fff7e6;color:#72531c;font-size:12px;line-height:1.45}.device-note span{font-weight:800;margin-right:8px}
.password-reset{margin-top:9px}.password-reset summary{width:max-content;color:var(--blue);font-size:11px;font-weight:800;cursor:pointer;list-style:none}.password-reset summary::-webkit-details-marker{display:none}.password-reset summary:before{content:"↻";margin-right:5px}.reset-password-form{display:flex;align-items:end;gap:7px;margin-top:9px;padding:9px;background:#f6f8fa;border-radius:8px;min-width:250px}.reset-password-form label{flex:1}.reset-password-form input{padding:7px 8px}.users-table td:first-child{min-width:185px}
@media(max-width:1100px){.device-components{grid-template-columns:repeat(3,minmax(0,1fr))}.device-card-head{grid-template-columns:1fr 1fr auto}.device-card-head>div:nth-child(3){grid-column:1/3}}
@media(max-width:760px){.sidebar{overflow:hidden}.device-list{max-height:none}.device-card-head{grid-template-columns:1fr auto}.device-card-head>div:nth-child(2),.device-card-head>div:nth-child(3){grid-column:1/3}.device-components{grid-template-columns:1fr 1fr}.device-components>div:first-child{grid-column:1/3}.reset-password-form{min-width:220px;flex-direction:column;align-items:stretch}}

/* Locked asset lifecycle and warehouse */
.lock-state{display:inline-flex;margin-top:8px;padding:4px 7px;border-radius:20px;font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.45px}.lock-state.locked{background:#e3f6ee;color:var(--ok)}.lock-state.unlocked{background:#fff2d9;color:#9a6400}.pending-link{display:inline-flex;margin:8px 0 0 6px;font-size:10px;font-weight:800;color:var(--danger)}
.badge.pending,.badge.pending_review,.badge.quarantine,.badge.repair{background:#fff2d9;color:#9a6400}.badge.approved,.badge.in_stock,.badge.deployed{background:#e3f6ee;color:var(--ok)}.badge.rejected,.badge.destroyed,.badge.lost{background:#feeaea;color:var(--danger)}.badge.retired{background:#eef2f5;color:#657585}
.approval-summary{display:flex;gap:24px;align-items:end;justify-content:space-between}.approval-summary>div{max-width:700px}.approval-summary h2{margin:5px 0}.status-tabs{display:flex;gap:6px;flex-wrap:wrap}.status-tabs a{display:flex;align-items:center;gap:7px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;color:#566677;font-weight:750}.status-tabs a.active{background:#e7f0ff;border-color:#a9c7ef;color:var(--blue)}
.change-request-list{display:grid;gap:14px}.change-request-card{margin-bottom:0}.change-request-card>header{display:flex;align-items:center;justify-content:space-between;gap:14px}.change-request-card>header>div{display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:center}.change-request-card>header small{grid-column:2}.change-values{display:grid;grid-template-columns:.7fr 1fr 1fr;gap:12px;margin-top:15px}.change-values>div{padding:12px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;min-width:0}.change-values span{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.change-values strong{overflow-wrap:anywhere}.change-values .old-value{border-left:4px solid #9bacbc}.change-values .new-value{border-left:4px solid var(--warn);background:#fffaf0}
.review-actions{display:grid;gap:8px;margin-top:12px}.review-form{display:flex;align-items:end;gap:9px;padding:11px;border-radius:10px;background:#f5f8fb}.review-form label{min-width:170px}.review-form .grow{flex:1}.reject-form{background:#fff7f7}.danger-button{color:#a33131;border-color:#e9bcbc;background:#fff}.reviewed-note{margin-top:12px;padding:11px;border-radius:9px;background:#f4f7fa;color:var(--muted)}.reviewed-note span{display:block;color:var(--text);margin-top:5px}
.warehouse-tools{grid-template-columns:1fr 1fr}.asset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.asset-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow);min-width:0}.asset-card header{display:flex;align-items:center;justify-content:space-between;gap:8px}.asset-type{font-size:10px;color:var(--muted);font-weight:850;text-transform:uppercase;letter-spacing:.7px}.asset-serial{display:block;font-size:16px;margin:14px 0;overflow-wrap:anywhere}.asset-card dl{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:0}.asset-card dt{font-size:9px;color:var(--muted);font-weight:800;text-transform:uppercase}.asset-card dd{margin:5px 0 0;font-size:11px;overflow-wrap:anywhere}.asset-card p{font-size:12px;line-height:1.45;padding:9px;border-radius:8px;background:#f6f8fa}.warehouse-kpis{margin-bottom:18px}
.integrity-panel{border-color:#efc3c3}.integrity-list{display:grid;gap:10px}.integrity-list article{display:grid;grid-template-columns:1fr 1.2fr 1.2fr;gap:14px;align-items:center;padding:12px;border:1px solid #f0d1d1;border-radius:10px;background:#fff8f8}.integrity-list article>div{display:grid;grid-template-columns:auto 1fr;gap:5px 9px;align-items:center}.integrity-list article small{grid-column:2}.integrity-list p{margin:0;color:#814141;font-size:12px;line-height:1.5}.integrity-list form{display:flex;align-items:end;gap:7px}.integrity-list form label{flex:1}.integrity-list form input{padding:8px}
.user-tools{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;margin-top:9px}.user-tools details{margin-top:0}.user-tools summary{width:max-content;color:var(--blue);font-size:11px;font-weight:800;cursor:pointer;list-style:none}.user-tools summary::-webkit-details-marker{display:none}.user-edit summary:before{content:"✎";margin-right:5px}.user-edit-panel{position:relative;z-index:2;margin-top:9px;padding:10px;background:#f6f8fa;border:1px solid var(--line);border-radius:9px;min-width:310px}.user-edit-form{display:grid;grid-template-columns:1fr 1fr;gap:9px}.user-edit-form label:nth-of-type(2){grid-column:1/3}.user-edit-form .active-check{display:flex;align-items:center;gap:7px}.user-edit-form .active-check input{width:auto}.user-edit-panel>form:last-child{margin-top:9px;padding-top:9px;border-top:1px solid var(--line)}
@media(max-width:1100px){.approval-summary{align-items:flex-start;flex-direction:column}.asset-grid{grid-template-columns:1fr 1fr}.review-form{flex-wrap:wrap}.review-form .grow{flex-basis:50%}.integrity-list article{grid-template-columns:1fr 1fr}.integrity-list form{grid-column:1/3}}
@media(max-width:760px){.change-values{grid-template-columns:1fr}.review-form{display:grid}.review-form label,.review-form .grow{min-width:0}.asset-grid{grid-template-columns:1fr}.asset-card dl{grid-template-columns:1fr 1fr}.warehouse-tools{grid-template-columns:1fr}.status-tabs{width:100%}.status-tabs a{flex:1;justify-content:center}.pending-link{display:flex;margin-left:0}.sidebar nav{margin-bottom:0}.integrity-list article{grid-template-columns:1fr}.integrity-list form{grid-column:auto;display:grid}.user-edit-panel{min-width:250px}.user-edit-form{grid-template-columns:1fr}.user-edit-form label:nth-of-type(2){grid-column:auto}}
