:root{--bg: #0b1120;--bg-elevated: #10172a;--surface: #131a2e;--surface-2: #1a2138;--surface-hover: #202848;--text: #e9ecf5;--text-secondary: #a7aec2;--text-dim: #6d7690;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--brand-from: #e4611c;--brand-to: #feb12b;--brand: #f0821f;--brand-dim: rgba(240, 130, 31, .14);--gold: #fccd58;--amber: #ffb32c;--gradient-brand: linear-gradient(135deg, var(--brand-from), var(--brand-to));--gradient-bg-hero: linear-gradient(135deg, #210904, #7a2f0e 55%, #e4611c);--ok: #3ea56b;--ok-dim: rgba(62, 165, 107, .15);--warn: #ffb32c;--warn-dim: rgba(255, 179, 44, .14);--danger: #d15550;--danger-dim: rgba(209, 85, 80, .16);--info: #5a7fc0;--info-dim: rgba(90, 127, 192, .16);--font-display: "Radiotechnika", "Inter", sans-serif;--font-ui: "Inter", -apple-system, "Segoe UI", Roboto, sans-serif;--font-condensed: "Avenir Next Condensed", "Arial Narrow", var(--font-ui);--font-mono: "JetBrains Mono", "SF Mono", Consolas, monospace;--radius: 10px;--radius-sm: 6px;--radius-lg: 16px;--sidebar-w: 236px;--header-h: 56px;--shadow-card: 0 1px 0 rgba(255, 255, 255, .03) inset, 0 8px 24px rgba(0, 0, 0, .35);--shadow-drawer: -24px 0 64px rgba(0, 0, 0, .55);--logo-ink: #f2f4f9;color-scheme:dark}[data-theme=light]{--bg: #f7f1e6;--bg-elevated: #fbf7ef;--surface: #ffffff;--surface-2: #fdf6ea;--surface-hover: #f5ecdd;--text: #241a12;--text-secondary: #5d5347;--text-dim: #988c7c;--border: rgba(33, 9, 4, .1);--border-strong: rgba(33, 9, 4, .2);--brand-from: #d4570f;--brand-to: #f29a25;--brand: #dd6a14;--brand-dim: rgba(221, 106, 20, .1);--gold: #8a5c00;--amber: #a86e00;--ok: #2e8c58;--ok-dim: rgba(46, 140, 88, .12);--warn: #c07d00;--warn-dim: rgba(255, 179, 44, .18);--danger: #bf3f39;--danger-dim: rgba(191, 63, 57, .1);--info: #3e63a8;--info-dim: rgba(62, 99, 168, .1);--shadow-card: 0 1px 2px rgba(33, 9, 4, .05), 0 8px 24px rgba(33, 9, 4, .07);--shadow-drawer: -24px 0 64px rgba(33, 9, 4, .18);--logo-ink: #2f2f2f;color-scheme:light}@font-face{font-family:Radiotechnika;src:url(../fonts/Radiotechnika.otf) format("opentype");font-weight:400;font-display:swap}@font-face{font-family:Inter;src:url(../fonts/Inter-Regular.otf) format("opentype");font-weight:400;font-display:swap}@font-face{font-family:Inter;src:url(../fonts/Inter-SemiBold.otf) format("opentype");font-weight:600;font-display:swap}@font-face{font-family:Avenir Next Condensed;src:url(../fonts/avenir-next-condensed-regular.ttf) format("truetype");font-weight:400;font-display:swap}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-ui);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);min-height:100vh;transition:background .25s ease,color .25s ease}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{font-weight:600;line-height:1.25}h1{font-size:22px}h2{font-size:17px}h3{font-size:14px}.display{font-family:var(--font-display);font-weight:400;letter-spacing:.04em}.condensed{font-family:var(--font-condensed)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--text-secondary)}.dim{color:var(--text-dim)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--header-h) 1fr;grid-template-areas:"sidebar header" "sidebar main";min-height:100vh}.sidebar{grid-area:sidebar;background:var(--bg-elevated);border-right:1px solid var(--border);padding:14px 10px 20px;overflow-y:auto}.logo{display:flex;align-items:center;gap:10px;padding:6px 10px 16px}.logo-mark{width:34px;height:34px;flex:none;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%);background:var(--gradient-brand);display:grid;place-items:center;color:#fff;font-family:var(--font-display);font-size:17px}.logo-name{font-family:var(--font-display);font-size:19px;letter-spacing:.05em}.logo-name b{font-weight:400;background:var(--gradient-brand);-webkit-background-clip:text;background-clip:text;color:transparent}.nav-section{margin-top:14px}.nav-title{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--text-dim);padding:0 10px 6px}.nav a{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13.5px}.nav a:hover{background:var(--surface-hover);color:var(--text);text-decoration:none}.nav a.active{background:var(--brand-dim);color:var(--brand);font-weight:600}.nav a.active .ico{color:var(--brand)}.ico{width:16px;height:16px;flex:none;color:var(--text-dim)}.nav-badge{margin-left:auto;font-size:10px;font-weight:600;padding:1px 7px;border-radius:99px;background:var(--danger-dim);color:var(--danger)}.header{grid-area:header;display:flex;align-items:center;gap:16px;padding:0 20px;background:var(--bg-elevated);border-bottom:1px solid var(--border)}.tenant-chip{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary)}.tenant-chip .code{font-family:var(--font-mono);font-size:11.5px;padding:2px 7px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);color:var(--text)}.header-right{margin-left:auto;display:flex;align-items:center;gap:14px}.utc-clock{font-family:var(--font-mono);font-size:13px;color:var(--gold)}.utc-clock span{color:var(--text-dim);font-size:11px;margin-right:5px}.role-chip{font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:99px;background:var(--brand-dim);color:var(--brand)}.user-chip{display:flex;align-items:center;gap:8px;font-size:13px}.avatar{width:30px;height:30px;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%);background:var(--gradient-brand);color:#fff;font-size:11.5px;font-weight:600;display:grid;place-items:center}.theme-toggle{width:38px;height:38px;flex:none;padding:0;border-radius:50%;border:1px solid var(--border-strong);background:transparent;color:var(--text-secondary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.theme-toggle:hover{background:var(--surface-hover);color:var(--text)}.theme-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.theme-toggle .ico-moon,[data-theme=light] .theme-toggle .ico-sun{display:none}[data-theme=light] .theme-toggle .ico-moon{display:block}.main{grid-area:main;padding:22px 24px 40px;overflow-y:auto}.page-head{display:flex;align-items:flex-end;gap:14px;margin-bottom:18px}.page-head .sub{color:var(--text-secondary);font-size:13px;margin-top:3px}.page-head .actions{margin-left:auto;display:flex;gap:8px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card)}.card-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}.card-head h2{font-size:15px}.card-head .hint{font-size:12px;color:var(--text-dim)}.card-body{padding:16px}.kpi{position:relative;padding:16px;overflow:hidden}.kpi:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--gradient-brand)}.kpi .label{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:7px}.kpi .value{font-family:var(--font-display);font-size:34px;letter-spacing:.03em;margin:6px 0 2px}.kpi .value small{font-size:16px;color:var(--text-dim)}.kpi .delta{font-size:12px}.kpi.ok:before{background:var(--ok)}.kpi.warn:before{background:var(--warn)}.kpi.danger:before{background:var(--danger)}.grid-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:18px}.grid-2{display:grid;grid-template-columns:1.6fr 1fr;gap:14px}.grid-2>*{min-width:0}@media(max-width:1100px){.grid-2{grid-template-columns:1fr}}.progress{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden}.progress>i{display:block;height:100%;border-radius:99px;background:var(--gradient-brand)}.progress.ok>i{background:var(--ok)}.progress.warn>i{background:var(--warn)}.progress.danger>i{background:var(--danger)}.btn{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.btn:hover{background:var(--surface-hover)}.btn-primary{border:none;background:var(--gradient-brand);color:#fff}.btn-primary:hover{filter:brightness(1.08);background:var(--gradient-brand)}.btn-ghost{border-color:transparent;background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--surface-hover);color:var(--text)}.btn-danger{border-color:transparent;background:var(--danger-dim);color:var(--danger)}.btn-sm{height:28px;padding:0 10px;font-size:12px}.btn[disabled]{opacity:.5;cursor:not-allowed}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:99px}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-ok{background:var(--ok-dim);color:var(--ok)}.badge-warn{background:var(--warn-dim);color:var(--warn)}.badge-danger{background:var(--danger-dim);color:var(--danger)}.badge-info{background:var(--info-dim);color:var(--info)}.badge-neutral{background:var(--surface-2);color:var(--text-secondary)}.utc-offset{font-family:var(--font-mono);font-size:11.5px;padding:1px 6px;border-radius:var(--radius-sm);background:var(--surface-2);color:var(--gold);border:1px solid var(--border)}.dow{display:inline-flex;gap:3px}.dow i{font-style:normal;width:20px;height:20px;display:grid;place-items:center;font-size:10px;font-weight:600;border-radius:4px;background:var(--surface-2);color:var(--text-dim)}.dow i.on{background:var(--brand-dim);color:var(--brand)}.toolbar{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap}.search{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;min-width:260px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-dim)}.search input{border:none;outline:none;background:transparent;color:var(--text);width:100%}.search input::placeholder{color:var(--text-dim)}.toolbar .spacer{flex:1}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim);padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}table.data td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}table.data tbody tr:hover{background:var(--surface-hover)}table.data .num{text-align:left;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.row-actions{display:flex;gap:4px;justify-content:flex-end;opacity:.75}.icon-btn{width:28px;height:28px;display:grid;place-items:center;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer}.icon-btn:hover{background:var(--surface-hover);color:var(--text)}.icon-btn.danger:hover{background:var(--danger-dim);color:var(--danger)}.pagination{display:flex;align-items:center;gap:6px;padding:12px 16px;font-size:12.5px;color:var(--text-secondary)}.pagination .pages{margin-left:auto;display:flex;gap:4px}.page-btn{min-width:28px;height:28px;padding:0 6px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer}.page-btn.active{background:var(--gradient-brand);border-color:transparent;color:#fff;font-weight:600}.page-btn:hover:not(.active){background:var(--surface-hover)}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--text-secondary);margin-bottom:5px}.field label .req{color:var(--danger)}.input,.select{width:100%;height:36px;padding:0 11px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text);outline:none}textarea.input{height:auto;padding:8px 11px;resize:vertical}.input:focus,.select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-dim)}.input.error{border-color:var(--danger)}.field .help{font-size:11.5px;color:var(--text-dim);margin-top:4px}.field .help.error{color:var(--danger)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-row-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.switch{position:relative;width:38px;height:21px;border-radius:99px;border:none;background:var(--surface-2);cursor:pointer;flex:none}.switch:after{content:"";position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:var(--text-dim);transition:transform .15s ease,background .15s ease}.switch.on{background:var(--gradient-brand)}.switch.on:after{transform:translate(17px);background:#fff}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#04070f99;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(520px,94vw);background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-drawer);z-index:50;display:flex;flex-direction:column}.drawer-head{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--border)}.drawer-head h2{font-size:16px}.drawer-body{padding:20px;overflow-y:auto;flex:1}.drawer-foot{display:flex;gap:8px;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--border)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px}.tab{padding:8px 14px;border:none;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tab.active{color:var(--brand);border-bottom-color:var(--brand)}.steps{display:flex;gap:0;margin-bottom:22px}.step{flex:1;display:flex;align-items:center;gap:10px;padding:0 8px}.step .n{width:30px;height:30px;flex:none;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%);display:grid;place-items:center;font-size:13px;font-weight:600;background:var(--surface-2);color:var(--text-dim)}.step .t{font-size:12.5px;color:var(--text-dim);line-height:1.3}.step .t b{display:block;color:var(--text-secondary);font-size:13px}.step:after{content:"";flex:1;height:1px;background:var(--border-strong);margin:0 6px}.step:last-child:after{display:none}.step.done .n{background:var(--ok-dim);color:var(--ok)}.step.current .n{background:var(--gradient-brand);color:#fff}.step.current .t b{color:var(--text)}.job-panel{display:flex;align-items:center;gap:16px;padding:14px 16px}.job-panel .spin{width:34px;height:34px;flex:none;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%);background:conic-gradient(var(--brand-from),var(--brand-to),var(--brand-from));animation:rotate 1.6s linear infinite}@keyframes rotate{to{transform:rotate(360deg)}}.notice{display:flex;gap:12px;padding:12px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);font-size:13px}.notice.warn{border-color:var(--warn);background:var(--warn-dim)}.notice.danger{border-color:var(--danger);background:var(--danger-dim)}.notice.ok{border-color:var(--ok);background:var(--ok-dim)}.login-page{min-height:100vh;display:grid;place-items:center;position:relative;overflow:hidden;background:radial-gradient(700px 500px at 85% 15%,rgba(228,97,28,.18),transparent 65%),radial-gradient(600px 500px at 10% 90%,rgba(254,177,43,.1),transparent 60%),var(--bg)}[data-theme=light] .login-page{background:radial-gradient(700px 500px at 85% 15%,rgba(242,154,37,.25),transparent 65%),radial-gradient(600px 500px at 10% 90%,rgba(212,87,15,.12),transparent 60%),var(--bg)}.hex-decor{position:absolute;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%);pointer-events:none}.login-wrap{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:26px}.login-brand{text-align:center}.login-brand .logo{justify-content:center;padding:0 0 6px}.login-brand .login-sub{margin-bottom:0}.login-card{position:relative;width:min(400px,92vw);padding:30px 34px}.tenant-logo{display:flex;justify-content:center;padding:4px 0 22px}.tenant-logo svg{height:44px;width:auto}.login-card .logo{justify-content:center;padding-bottom:8px}.login-sub{text-align:center;color:var(--text-secondary);font-family:var(--font-condensed);font-size:15px;margin-bottom:24px}.login-tenant{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:20px;font-size:13px;color:var(--text-secondary)}.login-foot{margin-top:18px;text-align:center;font-size:12px;color:var(--text-dim)}.theme-toggle-fixed{position:fixed;top:16px;right:16px;z-index:60}.lang-toggle-fixed{position:fixed;top:16px;right:158px;z-index:60}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.flex{display:flex;align-items:center;gap:8px}.right{margin-left:auto}.burger{display:none;width:38px;height:38px;flex:none;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;place-items:center}.burger:hover{background:var(--surface-hover);color:var(--text)}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#04070f8c;z-index:85}@media(max-width:1024px){.app{grid-template-columns:1fr;grid-template-areas:"header" "main"}.burger{display:grid}.sidebar{position:fixed;top:0;bottom:0;left:0;width:264px;z-index:90;transform:translate(-105%);transition:transform .22s ease;box-shadow:none}.sidebar.open{transform:none;box-shadow:24px 0 64px #00000073}.sidebar-overlay.show{display:block}}@media(max-width:900px){.form-row,.form-row-3,.grid-2{grid-template-columns:1fr}}@media(max-width:700px){.main{padding:16px 12px 32px}.header{gap:8px;padding:0 10px}.tenant-chip,.utc-clock{display:none}.page-head{flex-wrap:wrap}.page-head .actions{width:100%;flex-wrap:wrap}.toolbar{padding:10px 12px}.search{min-width:0;flex:1 1 100%}.toolbar .select,.toolbar .input{flex:1 1 40%;width:auto!important}.steps{flex-direction:column;align-items:stretch;gap:10px}.step{padding:0}.step:after{display:none}.job-panel{flex-wrap:wrap}.card-body>.flex{flex-wrap:wrap;row-gap:8px}.pagination{flex-wrap:wrap;gap:8px}.g-label{width:150px;padding:0 10px;font-size:11px}.login-logo-img{width:180px}.kpi .value{font-size:28px}}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.seg button{height:32px;min-width:40px;padding:0 10px;border:none;border-right:1px solid var(--border);background:transparent;color:var(--text-secondary);font-size:12.5px;cursor:pointer}.seg button:last-child{border-right:none}.seg button:hover:not(.active){background:var(--surface-hover)}.seg button.active{background:var(--brand-dim);color:var(--brand);font-weight:600}.gantt{overflow-x:auto}.g-head,.g-row{display:flex;align-items:stretch;min-width:720px}.g-label{width:224px;flex:none;display:flex;align-items:center;gap:8px;padding:0 14px;font-size:12px;border-bottom:1px solid var(--border);white-space:nowrap}.g-head .g-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim)}.g-days{flex:1;display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid var(--border);border-bottom:1px solid var(--border)}.g-day{padding:8px;font-size:11px;color:var(--text-dim);border-right:1px solid var(--border)}.g-day:last-child{border-right:none}.g-day b{color:var(--text-secondary);font-weight:600}.g-track{flex:1;position:relative;height:40px;border-left:1px solid var(--border);border-bottom:1px solid var(--border);background-image:linear-gradient(to right,var(--border) 1px,transparent 1px);background-size:calc(100% / 7) 100%}.g-blk{position:absolute;top:8px;height:24px;min-width:24px;border-radius:4px;display:flex;align-items:center;justify-content:center;padding:0 4px;font-size:10px;font-weight:600;white-space:nowrap;cursor:default}.g-blk.flight{background:var(--ok);color:#fff}.g-blk.standby{background:var(--surface-2);border:1px dashed var(--border-strong);color:var(--text-secondary)}.g-blk.train{background:var(--warn-dim);border:1px solid var(--warn);color:var(--warn)}.g-blk.off{background:var(--danger-dim);border:1px solid var(--danger);color:var(--danger)}.g-blk.vac{background:var(--info-dim);border:1px solid var(--info);color:var(--info)}.g-link{position:absolute;top:50%;height:2px;margin-top:-1px;background:var(--ok);opacity:.45}.legend{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--border);font-size:12px;color:var(--text-secondary)}.legend .g-blk{position:static;height:18px;min-width:26px;padding:0 7px}.user-menu{position:relative}button.user-chip{border:none;background:transparent;padding:4px 10px;border-radius:99px;cursor:pointer}button.user-chip:hover{background:var(--surface-hover)}button.user-chip.role-admin{background:var(--gradient-brand);color:#fff;font-weight:600;padding:6px 14px}button.user-chip.role-admin:hover{background:var(--gradient-brand);filter:brightness(1.08)}button.user-chip.role-admin .caret{color:#ffffffd9}.user-dropdown-head{padding:8px 10px 9px;border-bottom:1px solid var(--border);margin-bottom:5px}.user-dropdown-head strong{display:block;font-size:13px}.user-dropdown-head span{font-size:11.5px}.user-chip .caret{width:12px;height:12px;color:var(--text-dim)}.user-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:170px;padding:6px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-card);z-index:70}.user-dropdown a{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:var(--radius-sm);color:var(--text);font-size:13px}.user-dropdown a:hover{background:var(--surface-hover);text-decoration:none}.user-dropdown a.danger{color:var(--danger)}.user-dropdown a.danger:hover{background:var(--danger-dim)}.dropzone{display:flex;flex-direction:column;align-items:center;gap:8px;padding:36px 20px;border:1.5px dashed var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text-secondary);text-align:center}.dropzone:hover{border-color:var(--brand);background:var(--brand-dim)}.dropzone .hex-ico{width:42px;height:42px;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%);background:var(--gradient-brand);display:grid;place-items:center;color:#fff}.logo-upload{display:flex;align-items:center;gap:16px}.logo-upload .preview{width:180px;height:64px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elevated);display:grid;place-items:center}.dd{position:relative;display:inline-flex}.dd-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:130px;padding:6px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-card);z-index:70}.dd-menu a{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--radius-sm);color:var(--text);font-size:13px;font-family:var(--font-mono)}.dd-menu a:hover{background:var(--surface-hover);text-decoration:none}.logo-img{height:46px;width:auto;display:block}img.logo-img-light,[data-theme=light] img.logo-img-dark{display:none}[data-theme=light] img.logo-img-light{display:block}.login-logo-img{width:230px;margin:0 auto 4px;display:block}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable .sort-dir{margin-left:4px;font-style:normal;color:var(--brand)}th.sortable:not(.is-sorted) .sort-dir{opacity:.35}table.data td.sel,table.data th.sel{width:32px;text-align:center}table.data tr.is-selected td{background:var(--brand-dim)}table.data tr.is-inactive td{color:var(--text-dim);background:var(--surface-2)}table.data tr.is-inactive td strong{color:var(--text-dim)}.bulk-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;margin-bottom:12px;border:1px solid var(--brand);background:var(--brand-dim);border-radius:var(--radius)}.bulk-bar .count{font-weight:600;margin-right:6px}.bulk-bar .spacer{flex:1}.tag-computed{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:1px 6px;border-radius:999px;background:var(--info-dim);color:var(--info);vertical-align:middle}.tag-manual{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:1px 6px;border-radius:999px;background:var(--surface-2);color:var(--text-secondary);vertical-align:middle}.masked{letter-spacing:2px;color:var(--text-dim)}.mono{font-family:var(--font-mono, ui-monospace, Menlo, monospace)}.field .unit{display:inline-block;margin-left:6px;color:var(--text-dim);font-size:12px}.g-blk.dh{background:var(--warn-dim);color:var(--warn);border:1px solid var(--warn)}.g-blk.rest{background:var(--surface-2);color:var(--text-secondary);border:1px dashed var(--border)}.g-blk.wrest{background:var(--info-dim);color:var(--info);border:1px dashed var(--info)}.g-blk.event{background:var(--surface-2);color:var(--text-secondary);border:1px solid var(--border)}.g-blk.err{background:var(--danger-dim);color:var(--danger);border:1px solid var(--danger)}.g-night{position:absolute;top:0;bottom:0;background:#7878a01a;pointer-events:none}[data-theme=light] .g-night{background:#3c3c7812}.g-track{position:relative}.g-row.is-current .g-label{color:var(--brand);font-weight:600}.run-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 18px}.run-panel .m{display:flex;flex-direction:column;gap:2px}.run-panel .m .k{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.run-panel .m .v{font-size:18px;font-weight:600}.run-panel .m .v small{font-size:12px;font-weight:400;color:var(--text-secondary);margin-left:4px}.pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok);margin-right:6px;box-shadow:0 0 0 0 var(--ok);animation:pulse 1.6s infinite}@keyframes pulse{70%{box-shadow:0 0 0 8px transparent}to{box-shadow:0 0 0 0 transparent}}tr.expand-row>td{padding:0;background:var(--surface-2)}tr.expand-row table.data{margin:0}tr.expand-row table.data th{font-size:11px}.caret-btn svg{transition:transform .15s}.caret-btn.open svg{transform:rotate(90deg)}.tab-panel{display:none}.tab-panel.active{display:block}.tabs.sub{margin-top:0}.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;font-size:13px}.kv .k{color:var(--text-dim)}.delta-up{color:var(--danger)}.delta-down{color:var(--ok)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.danger{background:var(--danger)}.dot.dim{background:var(--text-dim)}.empty{padding:32px;text-align:center;color:var(--text-dim)}.multiselect{position:relative}.multiselect .ms-box{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-height:36px;padding:4px 30px 4px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);cursor:pointer}.multiselect .ms-box:focus-visible,.multiselect.open .ms-box{border-color:var(--brand);outline:none}.multiselect .ms-box .placeholder{color:var(--text-dim)}.multiselect .ms-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:12px;background:var(--brand-dim);color:var(--brand)}.multiselect .ms-caret{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--text-dim);pointer-events:none}.multiselect .ms-list{display:none;position:absolute;z-index:30;left:0;right:0;top:calc(100% + 4px);padding:6px;max-height:240px;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 8px 24px #00000040}.multiselect.open .ms-list{display:block}.multiselect .ms-list label{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--radius-sm);cursor:pointer}.multiselect .ms-list label:hover{background:var(--surface-hover)}.multiselect .ms-list label .muted{margin-left:auto;font-size:12px}.info-tip{position:relative;display:inline-flex;vertical-align:middle;margin-left:4px}.info-tip>button{width:16px;height:16px;border-radius:50%;border:1px solid var(--border-strong);background:transparent;color:var(--text-secondary);font:600 10px/1 var(--font-ui);display:inline-flex;align-items:center;justify-content:center;cursor:help;padding:0}.info-tip>button:hover,.info-tip>button:focus-visible{color:var(--brand);border-color:var(--brand);outline:none}.info-tip .tip-body{display:none;position:absolute;z-index:40;top:calc(100% + 8px);left:0;width:340px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 8px 24px #00000040;font:400 12.5px/1.5 var(--font-ui);color:var(--text);text-transform:none;letter-spacing:0;text-align:left;white-space:normal}.info-tip .tip-body p{margin:0 0 8px}.info-tip .tip-body ul{margin:0;padding-left:16px}.info-tip .tip-body li{margin:0 0 4px}.info-tip .tip-body .mono{font-size:12px}.info-tip:hover .tip-body,.info-tip:focus-within .tip-body,.info-tip.open .tip-body{display:block}th .info-tip .tip-body{font-weight:400}.info-tip.tip-left .tip-body{left:auto;right:0}.tab-panel .card-head,.card-body .card-head{border-bottom:none}.rot-g{--dw: 330px}.rot-g .g-head,.rot-g .g-row{min-width:max-content}.rot-g .g-label{width:230px;position:sticky;left:0;background:var(--surface);z-index:2}.rot-g .g-head .g-label{z-index:3}.rot-g .g-days,.rot-g .g-cells{flex:none;display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:var(--dw);border-left:1px solid var(--border);border-bottom:1px solid var(--border)}.rot-g .g-day{border-right:1px solid var(--border)}.rot-g .g-day .cnt{display:block;font-weight:400;margin-top:2px}.rot-g .g-day.mstart{box-shadow:inset 2px 0 0 var(--border-strong)}.rot-g .g-cell{display:flex;align-items:center;min-height:44px;padding:0 8px;border-right:1px solid var(--border)}.rot-g .g-cell.mstart{box-shadow:inset 2px 0 0 var(--border-strong)}.rot-g .g-blk{position:static;flex:none;height:24px;padding:0 7px;font-family:var(--font-mono);font-weight:600;font-size:10.5px}.rot-g .g-blk.free{background:transparent;border:1px dashed var(--border-strong);color:var(--text-secondary)}.rot-g .g-blk.err{background:var(--danger);color:#fff;border:none}.rot-g .g-blk.tgo{background:var(--warn);color:#1a1200;border:none}.rot-g .g-lnk{flex:none;width:14px;height:2px;background:var(--border-strong)}.rot-g .g-gap{flex:none;position:relative;width:46px;height:2px;border-top:2px dotted var(--danger)}.rot-g .g-gap:after{content:attr(data-t);position:absolute;left:50%;top:-15px;transform:translate(-50%);font-size:9.5px;color:var(--danger);white-space:nowrap;font-weight:600}.rot-g .g-gap.d:after{top:5px}.rot-g .g-ovn{flex:none;margin-left:7px;padding:0 6px;height:16px;line-height:15px;border-radius:999px;border:1px dashed var(--warn);color:var(--warn);font-size:9.5px;font-family:var(--font-mono)}.rot-g .g-idle{color:var(--text-dim);font-size:11px}.rot-g .g-group .g-label{width:100%;position:static;background:var(--surface-2);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim)}.rot-g .g-row.free-row .g-cells{background:var(--surface-2)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;background:#05080f9e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-overlay[hidden]{display:none!important}.modal{width:min(560px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-drawer)}.modal-head{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:16px;margin:0}.modal-body{padding:16px 18px;overflow:auto}.modal-foot{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--border)}.modal-foot .right{margin-left:auto}.modal .summary{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;padding:10px 12px;margin:4px 0 10px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:13px}.modal .summary b{font-variant-numeric:tabular-nums;font-size:15px}.rot-g .g-blk{cursor:pointer}.rot-g .g-blk:hover{filter:brightness(1.12)}.hover-tip{position:fixed;z-index:80;max-width:300px;padding:7px 10px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);box-shadow:0 8px 22px #00000052;font:400 12.5px/1.45 var(--font-ui);color:var(--text);pointer-events:none}.hover-tip[hidden]{display:none!important}.hover-tip b{font-family:var(--font-mono);font-weight:600;margin-right:4px}.utc-offset.unknown{background:var(--warn-dim);color:var(--warn);border-color:var(--warn)}.rot-g .g-row.g-group{min-width:0;width:100%;position:sticky;left:0;z-index:2;background:var(--surface-2)}.card.kpi[role=button]{cursor:pointer}.card.kpi[role=button]:hover,.card.kpi[role=button]:focus-visible{border-color:var(--border-strong);outline:none}.btn[data-tip]{cursor:pointer}.hover-tip,.info-tip .tip-body{padding:8px 12px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);box-shadow:0 8px 24px #0000004d;font:400 12.5px/1.5 var(--font-ui);color:var(--text)}.hover-tip{max-width:320px}[data-tip]{cursor:help}a[data-tip],button[data-tip],[role=button][data-tip],.icon-btn[data-tip],.rot-g .g-blk[data-tip],.page-btn[data-tip]{cursor:pointer}button[data-tip]:disabled{cursor:not-allowed}table.data.dense td{padding-top:7px;padding-bottom:7px}.utc-offset.expired{text-decoration:line-through;opacity:.55}.page-head{align-items:flex-start}.page-head>div:first-child{position:relative;min-width:0}.page-head .actions{margin-top:-3px;min-height:34px;align-items:center}.page-head .back-link{position:absolute;left:0;bottom:100%;margin-bottom:3px;font-size:12.5px;line-height:16px;white-space:nowrap;color:var(--text-secondary)}.main{padding-top:28px}.page-head .back-link:hover{color:var(--brand);text-decoration:none}.row-desc{max-width:520px;margin-top:2px;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{white-space:nowrap}.info-tip.tip-wide .tip-body{width:460px}[hidden]{display:none!important}.input:disabled,.select:disabled{background:transparent;border-style:dashed;color:var(--text-secondary);cursor:not-allowed;opacity:1}.chip-list{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:2px;height:26px;padding:0 3px 0 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--brand-dim);color:var(--brand)}.chip-x{display:grid;place-items:center;width:20px;height:20px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;opacity:.65;cursor:pointer}.chip-x:hover,.chip-x:focus-visible{opacity:1;background:var(--surface-hover)}.nav-split{display:flex;height:34px;margin:4px 0;border-radius:var(--radius-sm);overflow:hidden;background:var(--gradient-brand)}.nav .nav-split a{padding:0;border-radius:0;color:#fff;font-size:13px;font-weight:600}.nav .nav-split a:hover{background:#ffffff24;color:#fff}.nav .nav-split .nav-split-main{flex:1;justify-content:center;gap:7px}.nav .nav-split .nav-split-side{flex:none;width:40px;justify-content:center;border-left:1px solid rgba(255,255,255,.35)}.nav .nav-split .nav-split-side .ico{color:#fff}.nav .nav-split .nav-split-side.active{background:#00000038;color:#fff}.nav .nav-split .nav-split-side.active .ico{color:#fff}.dd-menu a.dd-rich{display:block;min-width:360px;font-family:var(--font-ui);line-height:1.35}.dd-menu a.dd-rich strong{display:block;font-weight:600}.dd-menu a.dd-rich span{display:block;margin-top:2px;font-size:12px;color:var(--text-secondary)}.gfit .g-days{grid-template-columns:repeat(var(--days, 7),1fr)}.gfit .g-track{background-size:calc(100% / var(--days, 7)) 100%}.gfit .g-blk{min-width:0;padding:0;overflow:hidden;box-sizing:border-box;border:1px solid var(--surface)}.gfit .g-blk:not(.nolbl){padding:0 3px}.gfit .g-blk.flight{box-shadow:inset 0 0 0 1px #00000073}.gfit .g-blk.dh{box-shadow:inset 0 0 0 1px var(--warn)}.gfit .g-blk.err{box-shadow:inset 0 0 0 1px var(--danger)}.gfit .g-blk.rest,.gfit .g-blk.event{box-shadow:inset 0 0 0 1px var(--border-strong)}.gfit .g-blk.wrest{box-shadow:inset 0 0 0 1px var(--info)}.gfit .g-blk.nolbl{color:transparent}.gantt .g-row[hidden]{display:none}.kpi-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.kpi-toggle:hover{box-shadow:0 0 0 1px var(--border-strong)}.kpi-toggle.is-on{box-shadow:0 0 0 2px var(--brand)}.kpi-toggle .kpi-on{display:none}.kpi-toggle.is-on .kpi-on{display:block;margin-top:4px;font-size:12px;color:var(--brand)}.gfit .g-link{top:8px;height:24px;margin-top:0;margin-left:-1px;padding:0 1px;box-sizing:content-box;z-index:1;opacity:1;background:linear-gradient(var(--text-secondary),var(--text-secondary)) center / 100% 2px no-repeat}.legend .g-link-sample{display:inline-block;width:28px;height:2px;background:var(--text-secondary)}.gfit .g-pair{position:absolute;top:4px;bottom:4px;border-radius:6px;cursor:pointer}.gfit .g-pair:hover{background:var(--surface-hover)}.gfit [data-pn]{cursor:pointer}:root{--night: rgba(120,120,160,.1)}[data-theme=light]{--night: rgba(60,60,120,.07)}.gscroll .g-head,.gscroll .g-row{min-width:max-content}.gscroll .g-label{position:sticky;left:0;z-index:3;background:var(--surface)}.gscroll .g-head .g-label{z-index:4}.gscroll .g-days{flex:none;grid-template-columns:repeat(var(--days),var(--dw, 120px))}.gscroll .g-day{overflow:hidden;white-space:nowrap;padding:8px 6px}.gscroll .g-track{flex:none;width:calc(var(--days) * var(--dw, 120px));background-image:linear-gradient(to right,var(--border) 1px,transparent 1px),linear-gradient(to right,var(--night) 0,var(--night) 25%,transparent 25%,transparent 91.667%,var(--night) 91.667%);background-size:var(--dw, 120px) 100%,var(--dw, 120px) 100%}.gscroll .g-label .route{min-width:0;overflow:hidden;text-overflow:ellipsis}.gfit .g-pair.over{background:var(--warn-dim);box-shadow:inset 0 0 0 1px var(--warn)}.legend .g-over-sample{display:inline-block;width:28px;height:14px;border-radius:4px;background:var(--warn-dim);box-shadow:inset 0 0 0 1px var(--warn)}.g20{max-height:854px;overflow:auto}.g20 .g-head{position:sticky;top:0;z-index:5;background:var(--surface)}.g-blk.nopair{background:var(--danger);color:#fff}.gfit .g-blk.nopair{box-shadow:inset 0 0 0 1px #00000073}.g-join{border-top:3px solid var(--border-strong)}.g-join .g-row:first-child .g-label,.g-join .g-row:first-child .g-track{border-top:0}.g-noxbar{overflow-x:hidden}.g-blk.overq{background:var(--warn);color:#1a1200}.gfit .g-blk.overq{box-shadow:inset 0 0 0 1px #00000073}.gfit.dim-ok .g-blk.flight{opacity:.25}.g-blk.crew-part{background:var(--warn);color:#1a1200}.g-blk.crew-none{background:var(--danger);color:#fff}.gfit .g-blk.crew-part,.gfit .g-blk.crew-none{box-shadow:inset 0 0 0 1px #00000073}.lang-toggle{display:inline-flex;flex:none;height:38px;padding:3px;border:1px solid var(--border-strong);border-radius:999px}.lang-toggle button{min-width:38px;padding:0 10px;border:0;border-radius:999px;background:transparent;color:var(--text-secondary);font:600 12px var(--font-ui);letter-spacing:.04em;cursor:pointer}.lang-toggle button:hover{color:var(--text)}.lang-toggle button.active{background:var(--brand-dim);color:var(--brand)}html.i18n-pending body{visibility:hidden}.toolbar .tb-group{display:flex;align-items:center;gap:8px}.bar-chart{display:grid;grid-template-columns:76px minmax(0,1fr);grid-template-rows:260px auto;column-gap:14px;padding:28px 24px 12px 16px}.bar-chart .bc-axis{position:relative}.bar-chart .bc-axis span{position:absolute;right:0;transform:translateY(50%);font:11px var(--font-mono);color:var(--text-dim);white-space:nowrap}.bar-chart .bc-plot{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);align-items:end;justify-items:center;border-bottom:1px solid var(--border-strong)}.bar-chart .bc-line{position:absolute;left:0;right:0;height:0;border-top:1px solid var(--border-strong);opacity:.6}.bar-chart .bc-group{position:relative;display:flex;align-items:flex-end;gap:14px;height:100%}.bar-chart .bc-bar{position:relative;width:56px;border-radius:4px 4px 0 0;cursor:default}.bar-chart .bc-bar:hover{filter:brightness(1.12)}.bar-chart .bc-lbl{position:absolute;left:50%;bottom:100%;transform:translate(-50%);margin-bottom:4px;display:flex;flex-direction:column;align-items:center;gap:2px;font:11px var(--font-mono);color:var(--text-secondary);white-space:nowrap}.bar-chart .bc-delta{font:600 12px var(--font-ui)}.bc-b.dec:after,.bc-b.inc:after{content:"";position:absolute;top:-4px;right:-4px;bottom:0;left:-4px;border:2px solid;border-bottom:0;border-radius:7px 7px 0 0;pointer-events:none}.bc-b.dec:after{border-color:var(--ok)}.bc-b.inc:after{border-color:var(--danger)}.bar-chart .bc-b.dec .bc-lbl,.bar-chart .bc-b.inc .bc-lbl{margin-bottom:8px}.bar-chart .bc-b.dec .bc-delta{color:var(--ok)}.bar-chart .bc-b.inc .bc-delta{color:var(--danger)}.bar-chart .bc-names{grid-column:2;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);justify-items:center;padding-top:12px;font-size:13px;text-align:center}.bc-a{background:var(--info)}.bc-b{background:var(--brand)}.badge-b{background:var(--brand-dim);color:var(--brand)}.legend .bc-key{position:relative;display:inline-block;width:12px;height:12px;border-radius:3px}.legend .bc-key.dec:after,.legend .bc-key.inc:after{top:-3px;right:-3px;bottom:-3px;left:-3px;border-bottom:2px solid;border-radius:5px}.legend .bc-key.dec:after{border-bottom-color:var(--ok)}.legend .bc-key.inc:after{border-bottom-color:var(--danger)}@media(max-width:900px){.bar-chart .bc-bar{width:30px}.bar-chart .bc-group{gap:10px}.bar-chart .bc-lbl,.bar-chart .bc-delta{font-size:10px}}.toolbar .search{min-width:390px}@media(max-width:640px){.toolbar .search{min-width:0;flex:1 1 100%}}.tabs{flex-wrap:wrap}
