:root{--bg:#f5f7fa;--panel:#ffffff;--text:#16202a;--muted:#667085;--line:#e4e7ec;--brand:#7b0f14;--brand-dark:#5f0b10;--ok:#176b45;--warn:#8a5a00}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{background:#15191e;color:white;padding:22px 16px;display:flex;flex-direction:column;gap:18px}.brand{padding:8px 10px 18px;border-bottom:1px solid rgba(255,255,255,.12)}.brand strong{display:block;font-size:20px;letter-spacing:.05em}.brand span{color:#b9c0c7;font-size:12px}.nav-section{margin-top:5px}.nav-title{color:#88919a;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:8px 10px}.nav-link{display:block;padding:10px;border-radius:8px;color:#e6eaee;margin:2px 0}.nav-link:hover{background:rgba(255,255,255,.08)}.nav-link.disabled{color:#69727c;cursor:default}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding-top:14px;font-size:12px;color:#aeb5bd}.main{min-width:0}.topbar{height:68px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:10}.userbox{text-align:right;font-size:13px}.userbox strong{display:block}.content{padding:28px;max-width:1500px;margin:0 auto}.page-title{margin:0 0 6px;font-size:28px}.page-subtitle{margin:0 0 24px;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:0 1px 2px rgba(16,24,40,.04)}.card h3{margin:0 0 8px}.card p{margin:0;color:var(--muted);line-height:1.45}.card-action{margin-top:16px;display:inline-flex;background:var(--brand);color:white;padding:9px 12px;border-radius:8px;font-weight:700}.card-action:hover{background:var(--brand-dark)}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:700;background:#eef2f6;color:#344054}.badge.ok{background:#e9f7ef;color:var(--ok)}.badge.warn{background:#fff7e6;color:var(--warn)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#15191e,#2a3138)}.login-card{width:100%;max-width:430px;background:white;padding:34px;border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.28)}.login-logo{margin-bottom:26px}.login-logo strong{display:block;color:var(--brand);font-size:28px;letter-spacing:.06em}.login-logo span{color:var(--muted)}.form-row{margin-bottom:16px}label{display:block;font-size:13px;font-weight:700;margin-bottom:6px}input,select{width:100%;border:1px solid #cfd5dc;border-radius:8px;padding:10px 11px;background:white}input:focus,select:focus{outline:2px solid rgba(123,15,20,.15);border-color:var(--brand)}.btn{border:0;background:var(--brand);color:white;padding:10px 14px;border-radius:8px;font-weight:700;cursor:pointer}.btn.secondary{background:#3f4852}.btn.danger{background:#9f1d26}.error{background:#fff0f0;border:1px solid #ffc8c8;color:#8a1010;padding:10px 12px;border-radius:8px;font-size:13px}.error,.notice{margin-bottom:16px}.notice{background:#f2f7ff;border:1px solid #cfe1ff;padding:12px;border-radius:8px;color:#274c77}.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:12px}table{width:100%;border-collapse:collapse}td,th{padding:12px 14px;border-bottom:1px solid var(--line);text-align:left;font-size:13px;vertical-align:top}th{background:#f8fafc;font-size:12px;color:#475467}.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.permission-group{margin-bottom:18px}.permission-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px}.check{display:flex;gap:8px;align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:9px}.check input{width:auto}.qr{display:block;max-width:240px;margin:18px auto}.code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;word-break:break-all;background:#f3f4f6;padding:10px;border-radius:8px}@media (max-width:850px){.shell{grid-template-columns:1fr}.sidebar{display:none}.two-col{grid-template-columns:1fr}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.login-viewport{min-height:100svh;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#020b14}.login-stage{position:relative;width:min(100vw,calc(100svh * 16 / 9));aspect-ratio:16/9;max-height:100svh;flex:0 0 auto;overflow:hidden;background-color:#020b14;background-image:url(/heliflite-login-bg.webp);background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.login-brand-mask{position:absolute;left:2.2%;top:1.3%;width:29%;height:15.5%;z-index:2;background:linear-gradient(90deg,rgba(2,11,20,1),rgba(2,11,20,.995) 72%,rgba(2,11,20,.72) 88%,rgba(2,11,20,0))}.login-brand-logo{position:absolute;left:3.3%;top:4.1%;width:23.8%;height:auto;z-index:3;display:block;object-fit:contain}.login-iso-mask{position:absolute;left:2.2%;bottom:1.8%;width:10.8%;height:16%;z-index:2;background:radial-gradient(circle at 44% 55%,rgba(2,11,20,1) 0,rgba(2,11,20,.995) 62%,rgba(2,11,20,.82) 77%,rgba(2,11,20,0) 100%)}.login-iso-logo{position:absolute;left:3.1%;bottom:4%;width:7.8%;height:auto;z-index:3;display:block;object-fit:contain}.login-panel{position:absolute;left:65.32%;top:24.2%;width:31.15%;height:55.2%;padding:3.65% 2.38% 2.15%;border:1px solid rgba(132,157,179,.72);border-radius:1.35vw;background:linear-gradient(180deg,rgba(10,31,49,.965),rgba(6,23,38,.985));box-shadow:0 22px 60px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.04);color:#f7fbff;display:flex;flex-direction:column;justify-content:center;z-index:4}.login-form{width:100%}.login-field{position:relative;margin-bottom:3.25%}.login-field-icon{position:absolute;left:4.7%;top:50%;width:6.2%;aspect-ratio:1;transform:translateY(-50%);color:#f4f8fc;pointer-events:none}.login-field-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.login-field input{width:100%;height:clamp(46px,4.15vw,72px);padding:0 4.5% 0 15.3%;border:1px solid rgba(142,165,186,.48);border-radius:.72vw;background:linear-gradient(180deg,rgba(32,57,78,.92),rgba(25,49,69,.92));color:#fff;font-size:clamp(13px,1.12vw,19px);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}.login-field input::placeholder{color:rgba(245,249,253,.88);opacity:1}.login-field input:focus{outline:none;border-color:rgba(197,218,235,.92);box-shadow:0 0 0 3px rgba(63,139,198,.18),inset 0 1px 0 rgba(255,255,255,.05)}.login-submit{width:100%;height:clamp(48px,4.25vw,74px);border:0;border-radius:.72vw;background:linear-gradient(180deg,#d00013,#b10010);color:white;font-size:clamp(17px,1.38vw,24px);font-weight:700;cursor:pointer;box-shadow:0 12px 28px rgba(156,0,15,.22);transition:transform .12s ease,filter .12s ease}.login-submit:hover{filter:brightness(1.08)}.login-submit:active{transform:translateY(1px)}.login-restricted{margin:4.5% 0 0;text-align:center;color:rgba(244,248,252,.9);font-size:clamp(10px,.82vw,14px)}.login-version{margin:2.2% 0 0;text-align:center;color:rgba(216,228,238,.68);font-size:clamp(9px,.68vw,12px)}.login-error{margin:0 0 3.5%;padding:2.5% 3.2%;border:1px solid rgba(255,111,111,.5);border-radius:.6vw;background:rgba(129,7,18,.82);color:#fff;font-size:clamp(11px,.8vw,14px)}@media (max-width:820px){.login-viewport{align-items:stretch}.login-stage{width:100vw;min-height:100svh;max-height:none;aspect-ratio:auto;background-size:cover;background-position:43%;display:flex;align-items:center;justify-content:center;padding:24px 16px}.login-brand-logo,.login-brand-mask,.login-iso-logo,.login-iso-mask{display:none}.login-panel{position:relative;left:auto;top:auto;width:min(92vw,460px);height:auto;padding:30px 24px 24px;border-radius:18px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.login-field{margin-bottom:14px}.login-field input,.login-submit{height:58px;border-radius:10px}.login-field input{font-size:16px;padding-left:56px}.login-field-icon{left:17px;width:24px;height:24px}.login-restricted{margin-top:18px;font-size:12px}.login-version{margin-top:8px;font-size:10px}}@media (max-width:980px){.login-hero{display:flex;align-items:center;justify-content:center;padding:28px 18px;background-position:42%}.login-panel{position:relative;left:auto;top:auto;width:min(92vw,460px);min-height:0;padding:30px 24px 24px;border-radius:18px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.login-field input,.login-submit{height:58px}.login-field input{font-size:16px;padding-left:56px}.login-field-icon{left:17px;width:24px;height:24px}}.login-copyright{position:absolute;right:3.4%;bottom:1.3%;z-index:5;margin:0;color:rgba(225,234,241,.72);font-size:clamp(8px,.62vw,11px);letter-spacing:.01em;text-align:right}.sidebar-copyright{margin-top:18px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08);font-size:10px;line-height:1.45;color:#7f8993}@media (max-width:820px){.login-copyright{left:16px;right:16px;bottom:12px;text-align:center;font-size:10px}}.password-input-wrap{position:relative;width:100%;min-width:0}.password-input-wrap>input{padding-right:46px!important}.password-toggle{position:absolute;top:50%;right:10px;width:34px;height:34px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:8px;background:transparent;color:#667085;cursor:pointer;z-index:2}.password-toggle:hover{background:rgba(15,23,42,.07)}.password-toggle:focus-visible{outline:2px solid #8aa9c0;outline-offset:2px}.password-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.login-field .password-input-wrap>input{padding-right:15.3%!important}.login-field .password-toggle{right:4.4%;width:8%;height:58%;min-width:30px;min-height:30px;color:#f4f8fc}.login-field .password-toggle:hover{background:rgba(255,255,255,.08)}@media (max-width:820px){.login-field .password-input-wrap>input{padding-right:56px!important}.login-field .password-toggle{right:12px;width:38px;height:38px}}