.landingLogo{width:min(320px,92%);height:auto;display:block;margin:0 auto 18px}.landingHeroTitle{font-size:1.75rem;font-weight:700;margin:0 0 8px;color:#1e293b}.landingHeroSub{color:var(--muted);margin:0 0 40px}.landingCard{background:var(--panel);border-radius:var(--radius-4);border:1px solid var(--border);padding:28px;width:min(520px,100%);text-align:center}.landingCardInternal{border-top:4px solid var(--success)}.landingBtn{width:min(320px,100%);font-size:1.2rem}.loginFormPanel .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:var(--radius-4);font-weight:600;font-size:.9rem;border:1px solid transparent;cursor:pointer;transition:transform .06s ease,background .15s ease,border-color .15s ease,filter .15s ease}.loginFormPanel .btn:active{transform:translateY(1px)}.loginFormPanel .btn:disabled{opacity:.6;cursor:not-allowed}.loginFormPanel .btnPrimary{background:linear-gradient(135deg,var(--primary),var(--primary-2));color:#fff;box-shadow:0 8px 18px color-mix(in srgb,var(--primary) 22%,transparent)}.loginFormPanel .btnPrimary:hover:not(:disabled){filter:saturate(1.08)}.loginFormPanel .btnSecondary{background:transparent;color:#1e293b;border-color:#0f172a2e}.loginFormPanel .btnSecondary:hover:not(:disabled){background:#0f172a0a}.loginWrap{min-height:100vh;display:flex;align-items:stretch;justify-content:center;padding:0;background:radial-gradient(circle at 12% 18%,color-mix(in srgb,var(--primary) 12%,transparent),transparent 58%),radial-gradient(circle at 88% 78%,color-mix(in srgb,var(--success) 10%,transparent),transparent 52%),var(--bg)}.loginLayout{width:100%;min-height:100vh;display:grid;grid-template-columns:1.25fr .85fr;border:none;border-radius:0;overflow:hidden;box-shadow:none;background:transparent}.loginVisualPanel{position:relative;overflow:hidden;background:linear-gradient(120deg,color-mix(in srgb,var(--primary) 18%,#09162f),color-mix(in srgb,var(--primary) 8%,#0a1f2a) 45%,color-mix(in srgb,var(--primary-2) 16%,#0d1f1a))}.loginVisualPanel:after{content:"";position:absolute;right:8%;top:18%;width:250px;height:350px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,color-mix(in srgb,var(--primary-2) 34%,transparent) 0%,color-mix(in srgb,var(--primary-2) 17%,transparent) 40%,transparent 72%);filter:blur(5px);animation:cleanBeamPulse 8s ease-in-out infinite}.loginVisualGlow{position:absolute;top:-30%;right:-30%;bottom:-30%;left:-30%;background:radial-gradient(circle at 35% 40%,color-mix(in srgb,var(--primary) 35%,transparent),color-mix(in srgb,var(--primary-2) 22%,transparent) 42%,transparent 70%);filter:blur(36px);animation:visualDrift 16s ease-in-out infinite alternate}.plantFlowSvg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1}.plantOutline{fill:#0f172a59;stroke:#94a3b88c;stroke-width:2}.plantDetailLines line{stroke:#94a3b86b;stroke-width:3;stroke-linecap:round}.plantTowerCaps path{fill:#0f172a9e;stroke:#94a3b894;stroke-width:2}.plantSteam path{fill:none;stroke:#e2e8f057;stroke-width:2;stroke-linecap:round;animation:steamRise 6.5s ease-in-out infinite}.plantTankRings line{stroke:#94a3b866;stroke-width:2;stroke-linecap:round}.plantValveNodes circle{fill:#0f172a8c;stroke:#94a3b89e;stroke-width:2}.flowTrack{fill:none;stroke:#94a3b838;stroke-width:9;stroke-linecap:round;stroke-linejoin:round}.flowPath{fill:none;stroke:url(#flowGradient);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:16 22}.flowPathA{animation:flowForward 3.8s linear infinite}.flowPathB{animation:flowForward 5.4s linear infinite reverse;opacity:.85}.flowNode{fill:var(--primary);animation:nodeShift 5.5s ease-in-out infinite}.loginVisualCopy{position:absolute;left:clamp(20px,4vw,36px);bottom:clamp(20px,4vw,38px);z-index:2;max-width:420px}.loginVisualCopy h2{margin:0 0 8px;font-size:clamp(1.3rem,2vw,1.8rem);font-weight:700;color:#fff}.loginVisualCopy p{margin:0;color:#ffffffe6;font-size:.98rem;font-weight:500}.loginFormPanel{display:flex;align-items:center;justify-content:center;padding:clamp(20px,3vw,36px);background:linear-gradient(180deg,#f8fbff,#eef4ff);border-left:1px solid rgba(15,23,42,.1);color:#1e293b}.loginCard{width:100%;max-width:510px;background:#fff;border-radius:var(--radius-4);box-shadow:0 18px 42px #0f172a29;border:1px solid rgba(148,163,184,.45);padding:28px 24px}.loginDevRoleRow{display:flex;gap:10px;justify-content:center;margin-top:6px}@keyframes flowForward{to{stroke-dashoffset:-76}}@keyframes nodeShift{0%,to{fill:var(--primary);filter:drop-shadow(0 0 2px color-mix(in srgb,var(--primary) 50%,transparent))}55%{fill:var(--primary-2);filter:drop-shadow(0 0 6px color-mix(in srgb,var(--primary-2) 60%,transparent))}}@keyframes visualDrift{0%{transform:translate3d(-3%,0,0)}to{transform:translate3d(4%,-3%,0)}}@keyframes steamRise{0%,to{opacity:.22;transform:translateY(2px)}50%{opacity:.56;transform:translateY(-3px)}}@keyframes cleanBeamPulse{0%,to{opacity:.38;transform:translateZ(0) scale(.96)}50%{opacity:.64;transform:translate3d(0,-4px,0) scale(1.02)}}@media (max-width: 980px){.loginLayout{grid-template-columns:1fr;min-height:0}.loginVisualPanel{min-height:280px}.loginFormPanel{border-left:none;border-top:1px solid rgba(15,23,42,.1)}.loginVisualCopy{max-width:min(92%,560px)}}@media (prefers-reduced-motion: reduce){.loginVisualGlow,.loginVisualPanel:after,.flowPathA,.flowPathB,.flowNode,.plantSteam path{animation:none}}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff")}:root{--bg: #0f1520;--panel: #161e2c;--panel-border: #263349;--text: #e6ecf5;--text-dim: #93a2ba;--accent: #4da3ff;--green: #33c481;--amber: #e8b339;--red: #ef5a5a;--radius: 10px;--status-good: #0ca30c;--status-warning: #fab219;--status-serious: #ec835a;--status-critical: #d03b3b;--primary: var(--accent);--primary-2: #33c481;--success: var(--green);--muted: var(--text-dim);--border: var(--panel-border);--radius-4: 12px;font-family:Inter,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:var(--accent)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid rgba(255,255,255,.08);background:linear-gradient(90deg,#0e3b34,#143650 45%,#0f1a2e);box-shadow:0 2px 12px #00000059;flex-shrink:0}.app-header .brand-row{display:flex;align-items:center;gap:10px}.app-header .brand-icon{width:34px;height:34px;border-radius:9px;background:#ffffff1f;display:flex;align-items:center;justify-content:center;font-size:17px}.app-header .brand{font-weight:800;letter-spacing:.02em;font-size:15px;text-transform:uppercase;color:#f3f8f5}.app-header .right{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--text-dim)}.app-header .clock{text-align:right;color:#fff;line-height:1.2}.app-header .clock .time{font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}.app-header .clock .date{font-size:11px;color:#e6ecf5a6}.app-body{flex:1;display:flex;align-items:stretch;min-height:0}.app-main{flex:1;min-width:0}.sidebar{flex-shrink:0;width:216px;display:flex;flex-direction:column;justify-content:space-between;padding:16px 10px;border-right:1px solid var(--panel-border);background:var(--panel);transition:width .16s ease}.sidebar.collapsed{width:60px}.sidebar-nav{display:flex;flex-direction:column;gap:3px}.sidebar-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;color:var(--text-dim);font-size:13.5px;font-weight:550;text-decoration:none;white-space:nowrap;overflow:hidden}.sidebar-link:hover{background:#ffffff0f;color:var(--text)}.sidebar-link.active{background:linear-gradient(135deg,var(--accent),var(--green));color:#06121f}.sidebar-icon{display:grid;place-items:center;flex-shrink:0;width:20px;height:20px}.sidebar.collapsed .sidebar-label{display:none}.sidebar-toggle{display:flex;align-items:center;gap:12px;padding:10px 12px;border:none;border-radius:8px;background:transparent;color:var(--text-dim);font-size:12.5px;cursor:pointer}.sidebar-toggle:hover{background:#ffffff0f;color:var(--text)}@media (max-width: 900px){.app-body{flex-direction:column}.sidebar{width:100%;flex-direction:row;justify-content:flex-start;border-right:none;border-bottom:1px solid var(--panel-border);padding:8px 12px;overflow-x:auto}.sidebar.collapsed{width:100%}.sidebar-nav{flex-direction:row}.sidebar-toggle{display:none}}.page{padding:24px 32px;max-width:1920px;margin:0 auto;width:100%}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media (max-width: 900px){.grid-2{grid-template-columns:1fr}}.card{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:18px 20px;margin-bottom:20px}.card h2{margin:0 0 4px;font-size:16px}.card .subtitle{color:var(--text-dim);font-size:13px;margin-bottom:14px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--panel-border)}th{color:var(--text-dim);font-weight:500}tr.highlight{background:#4da3ff14}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:500}.badge.on{background:#33c48126;color:var(--green)}.badge.off{background:#93a2ba26;color:var(--text-dim)}.badge.unknown{background:#e8b33926;color:var(--amber)}.badge.manual{border:1px solid var(--accent)}.pill{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;background:#4da3ff1f;color:var(--accent)}.next-tag{font-size:11px;padding:1px 7px;border-radius:6px;background:var(--accent);color:#06121f;font-weight:600;margin-left:6px}button{font-family:inherit;background:var(--accent);color:#06121f;border:none;border-radius:7px;padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer}button.secondary{background:transparent;color:var(--text);border:1px solid var(--panel-border)}button.danger{background:var(--red);color:#200}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-family:inherit;background:#0c121c;color:var(--text);border:1px solid var(--panel-border);border-radius:7px;padding:7px 10px;font-size:13px}.form-row{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.form-row label{font-size:12px;color:var(--text-dim)}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:32px;width:340px;text-align:center}.login-card h1{font-size:18px;margin-bottom:6px}.login-card p{color:var(--text-dim);font-size:13px;margin-bottom:20px}.login-card .role-buttons{display:flex;gap:10px;justify-content:center}.muted{color:var(--text-dim)}.small{font-size:12px}.strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px}.tile{border-radius:9px;padding:7px 6px;text-align:center;position:relative;border:1px solid rgba(255,255,255,.08)}.tile .tile-name{font-weight:700;font-size:11.5px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}.tile .tile-spc{font-size:9.5px;opacity:.85;margin-top:1px}.tile .tile-spc b{font-size:13px}.tile .tile-chip{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;letter-spacing:.04em;background:#0000006b;color:#fff;border-radius:999px;padding:2px 9px}.tile .tile-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.tile .tile-chip-on{color:#4ee08a}.tile .tile-chip-off{color:#d9dde5}.tile .tile-chip-unknown{color:#f0b429}.tile .tile-next{display:block;margin-top:5px;font-size:8.5px;font-weight:700;letter-spacing:.03em;background:#00000038;border-radius:4px;padding:1px 0}.tile-start{background:#0ca30c;color:#eafff0;border-color:#00000040;animation:pulse-start 1.4s ease-in-out infinite}.tile-start .tile-next{background:#00000052}.tile-stop{background:#d03b3b;color:#fff0ef;border-color:#00000040;animation:pulse-stop 1.4s ease-in-out infinite}.tile-stop .tile-next{background:#00000052}.tile-on-ok{background:#cdeecb;color:#0f5c14}.tile-on-ok .tile-next{background:#0f5c1424}.tile-off-ok{background:#f6d2ce;color:#8a2a24}.tile-off-ok .tile-next{background:#8a2a2424}.tile-unknown{background:#333c4d;color:var(--text-dim)}@keyframes pulse-start{0%,to{box-shadow:0 0 #0ca30c00;transform:scale(1)}50%{box-shadow:0 0 16px 5px #0ca30cd9;transform:scale(1.035)}}@keyframes pulse-stop{0%,to{box-shadow:0 0 #d03b3b00;transform:scale(1)}50%{box-shadow:0 0 16px 5px #d03b3bd9;transform:scale(1.035)}}.legend{display:flex;align-items:center;gap:16px;font-size:12px;color:var(--text-dim);margin-bottom:12px}.legend .legend-item{display:flex;align-items:center;gap:6px}.legend .legend-dot{width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,.2)}.posting-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.posting-card{background:#0f1622;border:1px solid var(--panel-border);border-radius:12px;padding:14px}.posting-card.recommended{border-color:var(--status-good);box-shadow:0 0 0 1px #0ca30c59 inset,0 0 16px #0ca30c1f}.posting-card .posting-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.posting-card .posting-name{font-weight:700;font-size:13px}.posting-card .posting-rank{font-size:10px;color:var(--text-dim)}.posting-avg-row{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}.posting-avg-row .avg-label{font-size:10px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.posting-avg-row .avg-value{font-size:24px;font-weight:800}.status-light{display:inline-block;width:13px;height:13px;border-radius:50%;margin-left:auto}.capsule-row{display:flex;gap:6px}.capsule{flex:1;border-radius:8px;padding:8px 4px 6px;text-align:center;border:1px solid rgba(255,255,255,.08);position:relative}.capsule .capsule-tag{font-size:8px;text-transform:uppercase;letter-spacing:.05em;opacity:.85;display:block}.capsule .capsule-name{font-weight:700;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.capsule .capsule-spc{font-size:12px;font-weight:700;margin-top:1px}.capsule .capsule-dot{position:absolute;top:4px;right:5px;width:7px;height:7px;border-radius:50%;border:1px solid rgba(255,255,255,.6)}.capsule .capsule-dot.on{background:#12b34a}.capsule .capsule-dot.off{background:#3a3a3a}.recommended-posting{border:1px solid var(--green);box-shadow:0 0 0 1px #33c48133 inset}
