:root{--bg:#151515;--surface:#1c1c1c;--surface2:#232323;--border:#2a2a2a;--border2:#383838;--text:#e8e8e8;--text-secondary:#a6a6a6;--muted:#9a9a9a;--faint:#8e8e8e;--rule:#3a3a3a;--green:#30d158;--blue:#0a84ff;--yellow:#ffd60a;--orange:#ff9f0a;--red:#ff453a;--cyan:#40c8e0;--purple:#bf5af2;--green-text:var(--green);--red-text:var(--red);--yellow-text:var(--yellow);--orange-text:var(--orange);--blue-text:color-mix(in srgb, var(--blue) 96%, white);--purple-text:var(--purple);--font-ui:system-ui, -apple-system, sans-serif;--fs-large-title:calc(26rem / 13);--fs-title1:calc(22rem / 13);--fs-title2:calc(17rem / 13);--fs-title3:calc(15rem / 13);--fs-headline:1rem;--fs-body:1rem;--fs-callout:calc(12rem / 13);--fs-subheadline:calc(11rem / 13);--fs-footnote:calc(10rem / 13);--fs-caption:calc(10rem / 13);--page-px:24px;--page-py:20px;--card-px:16px;--card-py:14px;--card-head-py:12px;--gap-xs:4px;--gap-sm:8px;--gap-md:12px;--gap-lg:14px;--module-head-h:48px;--pointer-target:28px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:20px;--card-shadow:0 1px 3px #00000073, 0 1px 2px #0000004d;--label-size:calc(20rem / 13);--nav-height:52px;--btn-size:34px;--btn-glyph:17px;--btn-size-sm:22px;--btn-glyph-sm:14px;--wind-calm:#fff;--wr-stroke:#fff;--wr-mask:#181b1f;--wr-label:#fff;--wr-sep:#ffffff26;--wr-text:#ffffffa6;--chart-grid:#ffffff0f;--chart-axis:#555;--chart-hover:#2e2e2e;--chart-fill:#e8e8e8;--series-1:#e8e8e8;--series-2:var(--blue);--series-3:var(--cyan);--series-rcklite:#ef4444;--chart-0:var(--cyan);--chart-1:#a78bfa;--chart-2:#f472b6;--chart-3:#38bdf8;--chart-4:#86efac;--chart-5:#e879f9;--duration-base:.2s;--duration-slow:.4s;--duration-breathe:1s;--transition-fast:.15s ease;--transition-base:var(--duration-base) ease;--transition-slow:var(--duration-slow) ease;--transition-canvas:.8s ease-in-out;--transition-enter:.25s;--transition-pop:.18s;--launch-exit:.9s;--ease-out-swift:cubic-bezier(.2, .8, .2, 1);--ease-in-out-soft:cubic-bezier(.45, 0, .25, 1);--veil-bg:#00000073;--material-modal-bg:color-mix(in srgb, var(--surface) 88%, transparent);--material-modal-blur:blur(20px) saturate(130%);--z-nav:20;--z-panel:10;--z-tooltip:50;--z-modal:100;--z-map-overlay:500;--z-launch:600}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:13px}html.is-ios{font:-apple-system-body;font-family:var(--font-ui)}button,input,select,textarea{font-variant-numeric:inherit;font-family:inherit}body{font-family:var(--font-ui);font-variant-numeric:tabular-nums;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}.logo-app-img{filter:brightness(0)invert()}[data-theme=light] .logo-app-img{filter:brightness(0)}.text-eyebrow{color:var(--faint);letter-spacing:.12em;text-transform:uppercase;font-size:.769231rem}.text-hero{letter-spacing:-.04em;font-size:4.15385rem;font-weight:300;line-height:1}.text-display{letter-spacing:-.03em;font-size:2.15385rem;font-weight:300;line-height:1}.text-title{letter-spacing:-.01em;font-size:1.15385rem;font-weight:400}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes spin{to{transform:rotate(360deg)}}.fade-up{animation:fadeUp var(--duration-slow) var(--ease-out-swift) both}.fade-up-d1{animation:fadeUp var(--duration-slow) 60ms var(--ease-out-swift) both}.fade-up-d2{animation:fadeUp var(--duration-slow) .12s var(--ease-out-swift) both}.fade-up-d3{animation:fadeUp var(--duration-slow) .18s var(--ease-out-swift) both}.fade-up-d4{animation:fadeUp var(--duration-slow) .24s var(--ease-out-swift) both}@keyframes fadeIn{0%{opacity:0}}@keyframes popIn{0%{opacity:0;transform:scale(.96)translateY(-4px)}to{opacity:1;transform:none}}@keyframes statePop{0%{transform:scale(.7)}to{transform:scale(1)}}.state-pop{animation:statePop var(--transition-pop) var(--ease-out-swift)}@keyframes valueTick{0%,15%{opacity:.25}to{opacity:1}}.value-tick{animation:valueTick var(--duration-breathe) ease-in-out}@media (prefers-reduced-motion:reduce){.state-pop,.live-dot,.badge-dot{animation:none}}.page,.rack-grid-wrap{animation:fadeUp var(--transition-enter) var(--ease-out-swift) backwards}html.theme-fade,html.theme-fade *,html.theme-fade :before,html.theme-fade :after{transition:background-color var(--duration-base) var(--ease-in-out-soft), color var(--duration-base) var(--ease-in-out-soft), border-color var(--duration-base) var(--ease-in-out-soft), box-shadow var(--duration-base) var(--ease-in-out-soft)!important}@media (prefers-reduced-motion:reduce){html.theme-fade,html.theme-fade *,html.theme-fade :before,html.theme-fade :after{transition:none!important}}.launch-veil{z-index:var(--z-launch);background:var(--bg);pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.launch-veil-mark{position:relative}.launch-veil-gouttes{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.lv-goutte{fill:var(--blue);opacity:0;transform-box:fill-box;transform-origin:50%;animation:.3s cubic-bezier(.5,0,.85,.55) both lv-chute}.lv-goutte-2{animation-delay:.15s}.lv-goutte-3{animation-delay:.28s}.lv-goutte-4{animation-delay:.43s}@keyframes lv-chute{0%{opacity:0;transform:translateY(0)scale(1)}18%{opacity:1}99%{opacity:1}to{transform:translateY(var(--lv-chute)) scale(1, 1.45);opacity:0}}.launch-veil .logo-square{transform-box:fill-box;transform-origin:50% 100%;animation:.32s both lv-batit}.launch-veil .logo-square:nth-of-type(3){animation-delay:.3s}.launch-veil .logo-square:nth-of-type(4){animation-delay:.45s}.launch-veil .logo-square:first-of-type{animation-delay:.58s}.launch-veil .logo-square:nth-of-type(2){animation-delay:.73s}@keyframes lv-batit{0%{animation-timing-function:var(--ease-out-swift);transform:scaleY(0)}65%{animation-timing-function:ease-in-out;transform:scaleY(1.045)}to{transform:scaleY(1)}}.launch-veil .logo-text-g{animation:fadeUp .32s var(--ease-out-swift) .88s both}.launch-veil-leaving{animation:launchVeilOut var(--launch-exit) var(--ease-in-out-soft) forwards}@keyframes launchVeilOut{to{opacity:0}}.launch-veil-leaving .launch-veil-mark{animation:launchMarkThrough var(--launch-exit) var(--ease-out-swift) forwards}@keyframes launchMarkThrough{to{transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){.launch-veil{display:none}.page,.rack-grid-wrap,.fade-up,.fade-up-d1,.fade-up-d2,.fade-up-d3,.fade-up-d4{animation-name:fadeIn}}::-webkit-scrollbar{width:3px;height:3px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}.hide-scrollbar::-webkit-scrollbar{display:none}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.spinner{border:1.5px solid color-mix(in srgb, currentColor 40%, transparent);border-top-color:currentColor;border-radius:50%;width:10px;height:10px;animation:.7s linear infinite spin;display:inline-block}.live-dot{background:var(--green);border-radius:50%;flex-shrink:0;width:5px;height:5px;animation:2s infinite blink;display:inline-block}.bg-grid{pointer-events:none;background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);opacity:.5;z-index:0;background-size:60px 60px;position:fixed;inset:0}.bg-vignette{pointer-events:none;background:radial-gradient(ellipse at center, transparent 25%, var(--bg) 78%);z-index:0;position:fixed;inset:0}[data-theme=light]{--bg:#efefef;--surface:#fff;--surface2:#f5f5f5;--border:#e0e0e0;--border2:#c8c8c8;--text:#111;--text-secondary:#505050;--muted:#616161;--faint:#6b6b6b;--rule:#ccc;--green:#34c759;--blue:#007aff;--yellow:#fc0;--orange:#ff9500;--red:#ff3b30;--cyan:#30b0c7;--purple:#af52de;--green-text:color-mix(in srgb, var(--green) 59%, black);--red-text:color-mix(in srgb, var(--red) 70%, black);--yellow-text:color-mix(in srgb, var(--yellow) 49%, black);--orange-text:color-mix(in srgb, var(--orange) 59%, black);--blue-text:color-mix(in srgb, var(--blue) 82%, black);--purple-text:color-mix(in srgb, var(--purple) 75%, black);--card-shadow:0 1px 4px #00000014, 0 1px 2px #0000000d;--wind-calm:#111;--wr-stroke:#6b7280;--wr-mask:#efefef;--wr-label:#111;--wr-sep:#0000001f;--wr-text:#505050;--chart-grid:#0000001a;--chart-axis:#505050;--chart-hover:#b0b0b0;--chart-fill:#374151;--series-1:#222;--series-2:#1a6fd4;--series-3:#007a63;--series-rcklite:#dc2626;--chart-0:#007a63;--chart-1:#7c3aed;--chart-2:#db2777;--chart-3:#0369a1;--chart-4:#16a34a;--chart-5:#a21caf}[data-theme=light] body{background:var(--bg)!important;color:var(--text)!important}[data-theme=light] .navbar{background:color-mix(in srgb, var(--bg) 92%, transparent)!important}[data-theme=light] .navbar-link{color:var(--text-secondary)!important}[data-theme=light] .navbar-link:hover{color:var(--text)!important;background:var(--surface2)!important}[data-theme=light] .navbar-back{color:var(--text-secondary)!important}[data-theme=light] .navbar-sep{background:var(--border)!important}[data-theme=light] .navbar-rack-action{background:var(--surface2)!important;border-color:var(--border2)!important;color:var(--text-secondary)!important}[data-theme=light] .navbar-rack-action:hover{background:var(--border)!important;border-color:var(--border2)!important}[data-theme=light] .navbar-rack-id{color:var(--text)!important}[data-theme=light] .navbar-rack-info:not(.rack-online):not(.rack-offline){color:var(--muted)!important}[data-theme=light] .navbar-dot-wrap:after{background:color-mix(in srgb, var(--surface) 98%, transparent)!important;color:var(--text)!important;border-color:var(--border2)!important}[data-theme=light] .clock-time{color:var(--text)!important}[data-theme=light] .clock-date{color:var(--muted)!important}[data-theme=light] .navbar-time .clock-time{color:var(--text)!important}[data-theme=light] .navbar-time .clock-date,[data-theme=light] .hero-eye{color:var(--muted)!important}[data-theme=light] .hero-eye:before{background:var(--border2)!important}[data-theme=light] .hero-title em{color:var(--muted)!important}[data-theme=light] .hero-sub{color:var(--text-secondary)!important}[data-theme=light] .hero-meta-item{color:var(--muted)!important}[data-theme=light] .divider{background:var(--border)!important}[data-theme=light] .section-tag{color:var(--muted)!important}[data-theme=light] .section-tag:before{background:var(--border2)!important}[data-theme=light] .section-count{color:var(--faint)!important}[data-theme=light] .rack-card{background:var(--surface)!important;border-color:var(--border)!important}[data-theme=light] .rack-card:hover{background:var(--surface2)!important;border-color:var(--border2)!important}[data-theme=light] .rack-id{color:var(--muted)!important}[data-theme=light] .rack-name{color:var(--text)!important}[data-theme=light] .rack-chip{background:var(--surface2)!important}[data-theme=light] .mod-card{background:var(--surface)!important;border-color:var(--border)!important}[data-theme=light] .mod-card:hover{background:var(--surface2)!important;border-color:var(--border2)!important}[data-theme=light] .mod-icon{background:var(--surface2)!important;border-color:var(--border)!important}[data-theme=light] .mod-title{color:var(--text)!important}[data-theme=light] .mod-desc{color:var(--text-secondary)!important}[data-theme=light] .mod-arrow{color:var(--muted)!important}[data-theme=light] footer{border-top-color:var(--border)!important}[data-theme=light] .foot-left,[data-theme=light] .foot-link{color:var(--faint)!important}[data-theme=light] .foot-link:hover,[data-theme=light] .login-clock,[data-theme=light] .login-clock .clock-time,[data-theme=light] .login-clock .clock-date{color:var(--muted)!important}[data-theme=light] .login-logo-name{color:var(--text)!important}[data-theme=light] .card{background:var(--surface)!important;border-color:var(--border)!important}[data-theme=light] .card:before{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--border2) 12%, transparent), transparent)!important}[data-theme=light] .card-eyebrow{color:var(--muted)!important}[data-theme=light] .card-title{color:var(--text)!important}[data-theme=light] .field-label{color:var(--muted)!important}[data-theme=light] .input{background:var(--bg)!important;border-color:var(--border2)!important;color:var(--text)!important}[data-theme=light] .input::placeholder{color:var(--faint)!important}[data-theme=light] .input:focus{border-color:var(--border2)!important;box-shadow:0 0 0 3px color-mix(in srgb, var(--border2) 8%, transparent)!important}[data-theme=light] .pw-btn{color:var(--muted)!important}[data-theme=light] .pw-btn:hover{color:var(--text-secondary)!important}[data-theme=light] .card-footer{border-top-color:var(--border)!important}[data-theme=light] .footer-txt,[data-theme=light] .footer-badge{color:var(--muted)!important}[data-theme=light] .footer-dot{background:var(--border)!important}[data-theme=light] .success-title{color:var(--text)!important}[data-theme=light] .success-sub{color:var(--muted)!important}.wind-calm-text{color:var(--wind-calm)}.nav{height:var(--nav-height);padding:0 var(--page-px);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:var(--z-nav);background:#0a0a0acc;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.nav-left{align-items:center;gap:14px;display:flex}.nav-right{align-items:center;gap:10px;display:flex}.nav-brand{align-items:center;gap:9px;display:flex}.nav-mark{background:var(--text);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.nav-name{letter-spacing:-.01em;font-size:1rem;font-weight:500}.nav-ver{color:var(--faint);font-size:.769231rem}.nav-sep{background:var(--border2);flex-shrink:0;width:1px;height:16px}.nav-title{letter-spacing:-.01em;font-size:1rem;font-weight:400}.nav-back{color:var(--faint);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:color var(--transition-base);background:0 0;border:none;padding:0;font-size:.769231rem}.nav-back:hover{color:var(--muted)}.nav-time{color:var(--faint);letter-spacing:.06em;font-size:.769231rem}.rack-tabs{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.rack-tab{border-radius:var(--radius-sm);cursor:pointer;color:var(--faint);letter-spacing:.06em;transition:color var(--transition-base), background var(--transition-base);white-space:nowrap;background:0 0;border:none;padding:5px 10px;font-size:.769231rem}.rack-tab:hover{color:var(--muted)}.rack-tab.active{background:var(--border2);color:var(--text)}.status-badge{border-radius:var(--radius-pill);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:5px;padding:3px 9px;font-size:.769231rem;display:flex}.badge-online{background:color-mix(in srgb, var(--green) 7%, transparent);color:var(--green-text);border:1px solid color-mix(in srgb, var(--green) 13%, transparent)}.badge-offline{background:color-mix(in srgb, var(--red) 6%, transparent);color:var(--red-text);border:1px solid color-mix(in srgb, var(--red) 13%, transparent)}.badge-fix3d{background:color-mix(in srgb, var(--green) 7%, transparent);color:var(--green-text);border:1px solid color-mix(in srgb, var(--green) 13%, transparent)}.badge-fix2d{background:color-mix(in srgb, var(--yellow) 7%, transparent);color:var(--yellow-text);border:1px solid color-mix(in srgb, var(--yellow) 13%, transparent)}.badge-info{background:color-mix(in srgb, var(--blue) 7%, transparent);color:var(--blue-text);border:1px solid color-mix(in srgb, var(--blue) 13%, transparent)}.badge-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:4px;height:4px;animation:2s infinite blink}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);position:relative;overflow:hidden}.card:before{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#ffffff08,#0000);height:1px;position:absolute;top:0;left:20%;right:20%}.card-head{padding:var(--card-head-py) var(--card-px);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;display:flex}.card-eyebrow{color:var(--faint);letter-spacing:.12em;text-transform:uppercase;font-size:.769231rem}.card-body{padding:var(--card-py) var(--card-px)}.card-interactive{cursor:pointer;transition:border-color var(--transition-base), background var(--transition-base)}.card-interactive:hover{border-color:var(--border2);background:#131313}.section-tag:before{content:"";background:var(--rule);flex-shrink:0;width:14px;height:1px;display:block}.section-header{align-items:center;gap:10px;margin-bottom:14px;display:flex}.metric-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 0;display:flex}.metric-row:last-child{border-bottom:none}.metric-label{color:var(--muted);font-size:.846154rem;font-weight:400}.metric-val{color:var(--muted);font-size:.923077rem}.val-good{color:var(--green-text)}.val-warn{color:var(--yellow-text)}.val-danger{color:var(--orange-text)}.val-alert{color:var(--red-text)}.val-muted{color:var(--muted)}.wind-normal{color:var(--text)}.wind-yellow{color:var(--yellow-text)}.wind-orange{color:var(--orange-text)}.wind-red{color:var(--red-text)}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.panel{border-left:1px solid var(--border);background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.panel-tabs{border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.panel-tab{color:var(--faint);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:color var(--transition-base), border-color var(--transition-base);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px;font-size:.769231rem}.panel-tab:hover{color:var(--muted)}.panel-tab.active{color:var(--text);border-bottom-color:var(--text)}.panel-body{padding:var(--card-py) var(--card-px);flex:1;overflow-y:auto}.field{margin-bottom:14px}.field-label{color:var(--faint);letter-spacing:.1em;text-transform:uppercase;margin-bottom:7px;font-size:.769231rem;display:block}.field-wrap{position:relative}.input{border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text);letter-spacing:.04em;transition:border-color var(--transition-base), box-shadow var(--transition-base);background:#0e0e0e;outline:none;padding:11px 14px;font-size:1rem}.input::placeholder{color:var(--faint)}.input:focus{border-color:var(--border2);box-shadow:0 0 0 3px #ffffff04}.input.error{border-color:color-mix(in srgb, var(--red) 25%, transparent)}.btn-primary{background:var(--text);width:100%;color:var(--bg);border-radius:var(--radius-md);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:opacity var(--transition-base), transform var(--transition-fast);border:none;justify-content:center;align-items:center;gap:8px;padding:12px;font-size:.923077rem;display:flex}.fl-actions{align-items:stretch;gap:8px;display:flex}.fl-actions .btn-secondary{flex:none}.btn-primary:hover{opacity:.9}.btn-primary:active{transform:scale(.99)}.btn-primary:disabled{opacity:.35;cursor:not-allowed}.btn-secondary{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:border-color var(--transition-base), color var(--transition-base);padding:8px 12px;font-size:.769231rem}.btn-secondary:hover{border-color:var(--border2);color:var(--text)}.login-topbar{z-index:10;justify-content:flex-end;align-items:center;padding:24px 32px;display:flex;position:fixed;top:0;left:0;right:0}.login-clock{color:var(--text-secondary);letter-spacing:.06em;text-align:right;font-size:1rem}.login-clock .clock-time{color:var(--text-secondary);font-size:1rem}.login-clock .clock-date{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-top:2px;font-size:.769231rem}.login-body{flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100vh;padding:32px 24px;display:flex}.login-logo{flex-direction:column;align-items:center;gap:10px;margin-top:-20px;display:flex}.login-card{border-radius:var(--radius-xl);width:100%;max-width:420px;box-shadow:var(--card-shadow);padding:36px;overflow:visible}.card-title{letter-spacing:-.02em;color:var(--text);margin-bottom:28px;font-size:1.53846rem;font-weight:400}.error-row{color:var(--red-text);letter-spacing:.04em;align-items:center;gap:6px;min-height:18px;margin:8px 0 4px;font-size:.769231rem;transition:opacity .2s;display:flex}.ios-boot-error{text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:100vh;padding:24px;display:flex}.ios-boot-error-title{color:var(--red-text);letter-spacing:.04em;font-size:1.07692rem}.ios-boot-error-detail{color:var(--muted);letter-spacing:.02em;max-width:420px;font-size:.846154rem}.pw-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;align-items:center;padding:0;transition:color .2s;display:flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.pw-btn:hover{color:var(--text-secondary)}.card-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:20px;padding-top:16px;display:flex}.footer-txt{color:var(--muted);letter-spacing:.04em;font-size:.769231rem}.login-fallback{cursor:pointer;color:var(--faint);letter-spacing:.04em;background:0 0;border:none;padding:0;font-size:.769231rem;transition:color .2s}.login-fallback:hover{color:var(--muted)}.login-fallback:disabled{opacity:.35;cursor:not-allowed}.success{text-align:center;padding:20px 0}.success-icon{background:color-mix(in srgb, var(--green) 10%, transparent);border:1px solid color-mix(in srgb, var(--green) 25%, transparent);border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;margin:0 auto 14px;display:flex}.success-title{letter-spacing:-.01em;margin-bottom:4px;font-size:1.15385rem;font-weight:400}.success-sub{color:var(--muted);font-size:.846154rem}.login-gf{opacity:.18;position:fixed;bottom:28px;right:32px}.login-gf img{filter:invert();width:auto;height:80px}[data-theme=light] .login-gf img{filter:none}.page{padding:var(--page-py) var(--page-px);gap:var(--gap-lg);flex-direction:column;display:flex}.grid-2{gap:var(--gap-md);grid-template-columns:repeat(2,1fr);display:grid}.grid-3{gap:var(--gap-md);grid-template-columns:repeat(3,1fr);display:grid}.grid-4{gap:var(--gap-md);grid-template-columns:repeat(4,1fr);display:grid}@media (width>=1440px){:root{--page-px:32px;--page-py:28px;--gap-md:14px;--gap-lg:18px}}@media (width<=1024px){:root{--page-px:16px;--page-py:16px}.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){:root{--page-px:12px;--page-py:12px;--gap-md:10px;--label-size:16px}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}@media (width<=480px){:root{--page-px:10px;--page-py:10px;--gap-md:8px;--label-size:14px}}.vstack{gap:var(--gap-md);flex-direction:column;display:flex}@media (aspect-ratio<=1){.page{max-width:min(1440px,100%);padding-left:48px;padding-right:48px}.rack-grid,.mod-grid{grid-template-columns:repeat(2,1fr)}.navbar-time .clock-time{font-size:clamp(18px,2.5vw,28px)}.fr24-layout{grid-template-rows:52px 1fr}.sensors-layout{grid-template-columns:1fr 400px}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-ui);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.page{max-width:1400px;margin:0 auto;padding:40px 32px 48px}@media (width<=640px){.page{padding:24px 16px 40px}}.home-logo{padding:48px 0 40px}.home-logo img{width:auto;height:180px;display:block}.hero{max-width:640px;padding:64px 0 48px}.hero-eye{color:var(--text-secondary);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:10px;margin-bottom:20px;font-size:1rem;display:flex}.hero-eye:before{content:"";background:var(--rule);width:16px;height:1px;display:block}.hero-title{letter-spacing:-.035em;margin-bottom:18px;font-size:clamp(2.46154rem,5vw,4rem);font-weight:300;line-height:1.05}.hero-title em{color:var(--text-secondary);font-style:italic}.hero-sub{color:var(--text-secondary);margin-bottom:32px;font-size:1.38462rem;font-weight:400;line-height:1.6}.hero-meta{flex-wrap:wrap;gap:24px;display:flex}.hero-meta-item{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:6px;font-size:1rem;display:flex}.hero-meta-item span{color:var(--text-secondary)}.divider{background:var(--border);height:1px;margin:0 0 40px}.section{margin-bottom:48px}.section-hd{align-items:center;gap:10px;margin-bottom:16px;display:flex}.section-tag{color:var(--text-secondary);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:8px;font-size:1rem;display:flex}.section-tag:before{content:"";background:var(--rule);width:14px;height:1px;display:block}.section-count{color:var(--muted);font-size:1rem}.rack-zone{margin-bottom:20px}.rack-zone-hd{margin-bottom:12px}.rack-zone-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;font-size:.923077rem}.rack-zone-divider{background:var(--border);height:1px;margin:4px 0 20px}.rack-groups-wrap{grid-template-columns:repeat(2,1fr);align-items:stretch;gap:13px;display:grid}@media (width<=900px){.rack-groups-wrap{grid-template-columns:1fr}}.rack-groups-wrap .rack-card{height:100%}.rack-grid{grid-template-columns:repeat(2,1fr);gap:13px;display:grid}@media (width>=1200px){.rack-grid{grid-template-columns:repeat(4,1fr)}}@media (width<=640px){.rack-grid{grid-template-columns:1fr}}.rack-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;box-shadow:var(--card-shadow);border-radius:12px;padding:22px 25px;transition:border-color .2s,background .2s,box-shadow .2s}@media (hover:hover){.rack-card:hover:not(.is-locked){border-color:var(--border2);background:var(--surface2)}}.rack-card.is-locked{cursor:default}.rack-card:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.rack-card-top{flex-direction:column;margin-bottom:15px;display:flex}.rack-name-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.rack-id{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;font-size:1rem}.rack-name{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:1.61538rem;font-weight:400;overflow:hidden}.rack-chips{flex-wrap:wrap;gap:5px;margin-bottom:15px;display:flex}.rack-chip{background:var(--surface2);border-radius:4px;align-items:center;gap:3px;padding:3px 8px;font-size:.769231rem;display:flex}.eq-on{color:var(--green-text)}.eq-off{color:var(--red-text)}.eq-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:5px;height:5px}.eq-unavail{color:var(--muted);border:1px solid var(--border2);background:0 0}.eq-ring{border:1.5px solid;border-radius:50%;flex-shrink:0;width:5px;height:5px}.rack-svc-grid,.rack-btn{display:none}.rack-btn:hover{border-color:var(--border2);color:var(--text-secondary)}.rack-audit-sep{border-top:1px solid var(--border);margin:14px 0 10px}.rack-audit-row{cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:0;display:flex}.rack-audit-row:hover .rack-audit-age{color:var(--text-secondary)}.rack-audit-pill{letter-spacing:.06em;border-radius:20px;flex-shrink:0;align-items:center;gap:5px;padding:3px 9px;font-size:.769231rem;display:flex}.audit-ok{background:color-mix(in srgb, var(--green) 7%, transparent);color:var(--green-text);border:1px solid color-mix(in srgb, var(--green) 13%, transparent)}.audit-warn{background:color-mix(in srgb, var(--yellow) 7%, transparent);color:var(--yellow-text);border:1px solid color-mix(in srgb, var(--yellow) 13%, transparent)}.audit-fail{background:color-mix(in srgb, var(--red) 6%, transparent);color:var(--red-text);border:1px solid color-mix(in srgb, var(--red) 13%, transparent)}.rack-audit-age{color:var(--muted);font-size:.846154rem;transition:color .15s}.rack-audit-fail-count{color:var(--red-text);letter-spacing:.04em;font-size:.769231rem;font-weight:500}.rack-audit-chevron{opacity:.5;flex-shrink:0;width:10px;height:10px;margin-left:auto;transform:rotate(180deg)}.rack-card-meta{min-width:0}.rack-lieu-text{letter-spacing:-.01em;color:var(--text);white-space:nowrap;text-overflow:ellipsis;max-width:200px;font-size:1.61538rem;font-weight:400;overflow:hidden}.rack-lieu-warn{border-radius:var(--radius-sm);border:1px solid var(--orange-text);color:var(--orange-text);letter-spacing:.04em;vertical-align:middle;cursor:help;margin-left:8px;padding:1px 6px;font-size:.769231rem}.rack-id-row{align-items:center;gap:5px;display:flex}.rack-attach{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin-top:4px;font-size:.846154rem;overflow:hidden}.rack-lieu-actions{flex-shrink:0;align-items:center;gap:2px;display:flex}.rack-lieu-btn{width:var(--btn-size-sm);height:var(--btn-size-sm);cursor:pointer;color:var(--muted);border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s;display:flex}.rack-lieu-btn:hover{color:var(--text-secondary)}.rack-lieu-btn:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.rack-lieu-btn svg{width:var(--btn-glyph-sm);height:var(--btn-glyph-sm)}.rack-lieu-edit{align-items:center;gap:5px;margin-bottom:2px;display:flex}.rack-lieu-input{color:var(--text);background:var(--bg);border:1px solid var(--border2);border-radius:4px;outline:none;width:120px;padding:2px 6px;font-size:.846154rem;transition:border-color .15s}.rack-lieu-input:focus{border-color:var(--text-secondary)}.loading{color:var(--text-secondary);padding:20px 0;font-size:1.07692rem}.racks-error{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:28px 16px;display:flex}.racks-error-title{letter-spacing:.08em;text-transform:uppercase;color:var(--red-text);font-size:.923077rem}.racks-error-detail{color:var(--text-secondary);overflow-wrap:anywhere;max-width:420px;font-size:1rem}footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.foot-left{color:var(--muted);letter-spacing:.06em;font-size:1rem}.foot-right{gap:16px;display:flex}.foot-link{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;font-size:1rem;transition:color .2s}.foot-link:hover{color:var(--text-secondary)}.w-4{width:16px}.h-4{height:16px}.w-8{width:32px}.h-8{height:32px}@media (width<=768px),(height<=500px){:root{--rack-row-h:60px;--rack-row-px:14px;--rack-svc-col:22px}.page{padding:12px max(12px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left))}.section{margin-bottom:24px}.section-hd{margin-bottom:10px}.rack-zone{margin-bottom:14px}.rack-zone-hd{top:var(--nb-height);z-index:2;padding:6px 0;padding-right:calc(var(--rack-row-px) + 1px);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex;position:sticky}.rack-zone-divider{display:none}.rack-groups-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);display:block;overflow:hidden}.rack-groups-wrap .rack-card{height:auto}.rack-card{min-height:var(--rack-row-h);padding:8px var(--rack-row-px);border:none;border-bottom:1px solid var(--border);box-shadow:none;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;align-items:center;gap:10px;transition:background-color .22s ease-out;display:flex}.rack-groups-wrap .rack-card:last-child{border-bottom:none}.rack-card:not(.is-locked):active{background:var(--surface2);transition-duration:0s}.rack-card.is-locked{opacity:.6}.rack-card-top{flex:auto;min-width:0;margin-bottom:0}.rack-name{font-size:1.15385rem}.rack-card-meta{align-items:baseline;gap:8px;min-width:0;display:flex}.rack-id{margin-bottom:0;font-size:.769231rem}.rack-id-row{flex-shrink:0}.rack-lieu-text{color:var(--text-secondary);order:1;max-width:none;font-size:.846154rem}.rack-attach{order:2;margin-top:0}.rack-chips{display:none}.rack-svc-grid{grid-template-columns:repeat(5, var(--rack-svc-col));flex-shrink:0;align-items:center;display:grid}.rack-svc-cell{justify-content:center;align-items:center;display:flex}.rack-svc-mark{background:currentColor;border-radius:50%;width:6px;height:6px}.svc-on{color:var(--green-text)}.svc-off{color:var(--red-text)}.svc-absent{color:var(--muted)}.svc-absent .rack-svc-mark{border-radius:0;width:8px;height:1px}.rack-svc-col-name{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:center;font-size:.692308rem;text-decoration:none}@media (prefers-reduced-transparency:reduce){.rack-zone-hd{background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.rack-zone-hd{background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:1px solid var(--border2)}}}.metar-block{--metar-title:var(--fs-body);--metar-text:var(--fs-callout);--metar-name:var(--fs-subheadline);--metar-label:var(--fs-footnote);--metar-line:1.4;--metar-row-gap:2px;--metar-grid-top:7px;flex-direction:column;min-width:0;display:flex}.metar-head{align-items:baseline;gap:6px;display:flex}.metar-spacer{flex:1}.metar-id{font-size:var(--metar-title);color:var(--text);font-weight:600}.metar-name{font-size:var(--metar-name);line-height:var(--metar-line);color:var(--text-secondary);margin:2px 0 0}.metar-time{font-size:var(--metar-label);color:var(--text-secondary);flex-shrink:0}.metar-cat{font-size:var(--metar-label);letter-spacing:.06em;border-radius:3px;flex-shrink:0;padding:1px 4px;font-weight:600}.metar-grid{margin:var(--metar-grid-top) 0 0;gap:var(--metar-row-gap);display:grid}.metar-grid>div{font-size:var(--metar-text);line-height:var(--metar-line);justify-content:space-between;gap:8px;display:flex}.metar-grid dt{color:var(--text-secondary)}.metar-grid dd{color:var(--text);text-align:right;margin:0}:root{--nb-height:104px}.navbar{z-index:20;height:var(--nb-height);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:flex-start;padding:12px 24px 0 32px;display:flex;position:fixed;top:0;left:0;right:0}.nb-spacer{height:var(--nb-height);flex-shrink:0}.navbar-left{flex:auto;align-items:flex-start;gap:16px;min-width:0;display:flex}.navbar-left-extra{flex:auto;align-items:flex-start;min-width:0;margin-top:-1px;display:flex}.navbar-right{align-items:flex-start;display:flex}.navbar-brand{flex-shrink:0;align-items:flex-start;gap:20px;display:flex}.navbar-brand>.navbar-sep{height:40px;margin-top:1px}.navbar-brand>.navbar-rack{margin-top:-2px}.navbar-brand-logo{flex-direction:column;flex-shrink:0;align-items:flex-start;gap:4px;display:flex}.navbar-mark{border-radius:var(--radius-md);flex-shrink:0;margin:-8px;padding:8px;line-height:0;transition:opacity .1s ease-out}button.navbar-mark{cursor:pointer;background:0 0;border:none}.navbar-mark:active{opacity:.72}.navbar-mark svg{width:auto;height:64px;display:block}.navbar{--nb-version-h:11px}.navbar-version-wrap{min-height:var(--nb-version-h);align-self:flex-end;align-items:center;gap:5px;display:flex}.navbar-version{color:var(--muted);letter-spacing:.08em;white-space:nowrap;font-size:11px;line-height:1}.navbar-version-btn{cursor:pointer;background:0 0;border:none;padding:0}.navbar-version-btn:hover .navbar-version{color:var(--text-secondary)}.navbar-status{display:flex;position:relative}.navbar-dot-wrap-sm{cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:3px;transition:background .15s;display:flex}.navbar-dot-wrap-sm:hover{background:var(--surface2)}.status-detail-list{transform-origin:0 0;min-width:220px;left:0;right:auto}.status-detail-row{align-items:center;gap:8px;padding:6px 8px;display:flex}.status-detail-row+.status-detail-row{margin-top:2px}.status-detail-row .navbar-dot{flex-shrink:0}.navbar-sep{background:var(--border2);width:1px;height:16px}.navbar-links{gap:2px;display:flex}.navbar-link{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;background:0 0;border:none;border-radius:6px;padding:5px 10px;font-size:13px;text-decoration:none;transition:color .2s,background .2s;display:inline-block}.navbar-link:hover{color:var(--text);background:var(--surface2)}.navbar-back{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:5px 10px;font-size:13px;text-decoration:none;transition:color .2s;display:inline-block}.navbar-back:hover{color:var(--text)}.navbar-live{align-items:center;gap:6px;display:flex}.navbar-dot{border-radius:50%;width:5px;height:5px}.dot-online{background:var(--green);animation:2s infinite blink}.dot-offline{background:var(--red)}.dot-checking{background:var(--yellow);animation:1s infinite blink}.navbar-dot.state-pop{animation:statePop var(--transition-pop) var(--ease-out-swift)}.dot-online.state-pop{animation:statePop var(--transition-pop) var(--ease-out-swift), blink 2s infinite}.dot-checking.state-pop{animation:statePop var(--transition-pop) var(--ease-out-swift), blink 1s infinite}.dot-stale{background:var(--orange)}.navbar-dot-wrap{cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;padding:8px;transition:background .15s;display:flex;position:relative}.navbar-dot-wrap:hover{background:var(--surface2)}.navbar-clock-col{flex-direction:column;align-items:flex-end;gap:4px;margin-top:-2px;display:flex}.navbar-time{text-align:right}.navbar-time .clock-time{color:var(--text);font-size:26px;font-weight:300;line-height:1}.navbar-time .clock-date{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;margin-top:4px;font-size:10px}.navbar-btn-row{min-height:var(--btn-size);justify-content:flex-end;align-items:center;gap:8px;display:flex}.navbar-rack-action{width:var(--btn-size);height:var(--btn-size);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface2);color:var(--text-secondary);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:transform .1s ease-out,color .2s,border-color .2s,background .2s;display:flex}.navbar-rack-action:hover{border-color:var(--border2);background:var(--border);color:var(--text)}.navbar-rack-action:active{border-color:var(--border2);background:var(--border);color:var(--text);transform:scale(.97)}.navbar-rack-action[aria-expanded=true]{border-color:var(--border2);background:var(--border);color:var(--text)}.navbar-rack-action svg{width:var(--btn-glyph);height:var(--btn-glyph)}.app-menu-trigger-initials{letter-spacing:.01em;font-size:12px;font-weight:600;line-height:1}.app-menu-trigger-initials.is-stale{color:var(--orange-text)}.app-menu{display:flex;position:relative}.app-menu-list{z-index:calc(var(--z-tooltip) + 1);background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-lg);transform-origin:100% 0;min-width:268px;animation:popIn var(--transition-pop) var(--ease-out-swift) both;flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 8px 24px #0000004d}.app-menu-item{border-radius:var(--radius-md);color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:12px;padding:14px;transition:background .15s;display:flex}.app-menu-item+.app-menu-item{margin-top:2px}.app-menu-item:hover,.app-menu-item:focus-visible{background:var(--border)}.app-menu-item:active{background:var(--border2)}.app-menu-icon{color:var(--muted);flex-shrink:0;display:flex}.app-menu-icon svg{width:var(--btn-glyph);height:var(--btn-glyph)}.app-menu-text{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.app-menu-label{font-size:14px;font-weight:400;line-height:1.3}.app-menu-sub{color:var(--muted);letter-spacing:.06em;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.app-menu-chevron{width:14px;height:14px;color:var(--muted);flex-shrink:0;transition:transform .15s}.app-menu-chevron.is-open{transform:rotate(180deg)}.profile-list{flex-direction:column;padding:2px 6px 6px;display:flex}.profile-list-row{border-radius:var(--radius-md);align-items:center;gap:4px;padding:2px;display:flex}.profile-list-row.is-active{background:var(--surface)}.profile-list-pick{text-align:left;min-width:0;color:var(--text);cursor:pointer;border-radius:var(--radius-md);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;flex:1;padding:8px;font-size:13px;overflow:hidden}.profile-list-pick:hover{background:var(--border)}.profile-list-input{flex:1;min-width:0;padding:6px 8px;font-size:12px}.profile-list-action{border-radius:var(--radius-md);border:1px solid var(--border);color:var(--muted);letter-spacing:.06em;cursor:pointer;background:0 0;flex-shrink:0;padding:5px 8px;font-size:10px}.profile-list-action:hover:not(:disabled){border-color:var(--border2);color:var(--text)}.profile-list-action:disabled{opacity:.4;cursor:not-allowed}.profile-list-action.is-danger{border-color:var(--red-text);color:var(--red-text)}.profile-list-action.is-danger:hover{background:var(--red);color:var(--bg)}.profile-list-row.is-confirming{background:var(--surface)}.profile-list-confirm{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;padding:8px;font-size:12px;overflow:hidden}.profile-list-tag{border-radius:var(--radius-sm);border:1px solid var(--border2);color:var(--muted);letter-spacing:.08em;margin-left:6px;padding:1px 5px;font-size:9px}.profile-list-new{border:1px dashed var(--border2);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;margin-top:4px;padding:9px 8px;font-size:12px}.profile-list-new:hover{color:var(--text);background:var(--surface)}.profile-list-note{color:var(--muted);letter-spacing:.04em;padding:8px;font-size:10px}.navbar-rack{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.navbar-rack-id{letter-spacing:.1em;color:var(--text);font-size:22px}.navbar-rack-info{color:var(--text-secondary);letter-spacing:.06em;font-size:15px}.navbar-rack-gps,.navbar-rack-note{color:var(--muted);letter-spacing:.06em;white-space:nowrap;text-overflow:ellipsis;max-width:220px;margin-top:2px;font-size:10px;overflow:hidden}.navbar-rack-lieu{color:var(--text);letter-spacing:.1em;white-space:nowrap;text-overflow:ellipsis;max-width:220px;font-size:22px;overflow:hidden}.rack-online{color:var(--green-text)}.rack-offline{color:var(--red-text)}.navbar-logo-gf{filter:brightness(0)invert();flex-shrink:0;width:auto;height:140px;display:block}[data-theme=light] .navbar-logo-gf{filter:brightness(0)}@media (width<=1024px){:root{--nb-height:80px}.navbar{height:var(--nb-height);align-items:center;padding:0 16px}.nb-spacer{height:var(--nb-height)}.navbar-left-extra,.navbar-brand>.navbar-sep,.navbar-brand>.navbar-rack{margin-top:0}.navbar-mark svg{height:48px}.navbar-clock-col{flex-direction:row;align-items:center;gap:8px;margin-top:0}.navbar-time .clock-time{font-size:18px}.navbar-time .clock-date{font-size:9px}.navbar-rack-id,.navbar-rack-lieu{font-size:14px}.navbar-rack-info{font-size:11px}.navbar-rack-gps{display:none}.navbar-rack-action{width:var(--pointer-target);height:var(--pointer-target)}}@media (width<=768px){:root{--nb-height:calc(56px + env(safe-area-inset-top))}.navbar{height:var(--nb-height);padding:env(safe-area-inset-top) max(12px, env(safe-area-inset-right)) 0 max(12px, env(safe-area-inset-left))}.nb-spacer{height:var(--nb-height)}.navbar-mark svg{height:32px}.navbar-time .clock-time{font-size:14px}.navbar-time .clock-date,.navbar-rack,.navbar-version{display:none}.navbar-btn-row{gap:2px}.navbar-dot-wrap{padding:4px}}@media (aspect-ratio<=1) and (width>=769px){.navbar-left-extra,.navbar-rack{display:none}}@media (width<=768px),(height<=500px){.navbar-left-extra{display:none}.navbar-rack-action{border-radius:var(--radius-md);width:44px;height:44px}.navbar{background:color-mix(in srgb, var(--bg) 72%, transparent);-webkit-backdrop-filter:blur(20px)saturate(140%);backdrop-filter:blur(20px)saturate(140%)}.navbar-has-identity .navbar-rack{min-width:0;display:flex}.navbar-has-identity .navbar-time,.navbar-has-identity .navbar-sep{display:none}.navbar-has-identity .navbar-rack-id{letter-spacing:-.01em;text-transform:none;white-space:nowrap;text-overflow:ellipsis;font-size:15px;overflow:hidden}.navbar-has-identity .navbar-rack-info{letter-spacing:.08em;font-size:10px}}@media (prefers-reduced-transparency:reduce){.navbar{background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.navbar{background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:1px solid var(--border2)}}@media (prefers-reduced-motion:reduce){.dot-online,.dot-checking,.navbar-dot.state-pop,.dot-online.state-pop,.dot-checking.state-pop{animation:none}.app-menu-list{animation-name:fadeIn}}@media (height<=500px){:root{--nb-height:calc(48px + env(safe-area-inset-top))}.navbar{height:var(--nb-height);padding:env(safe-area-inset-top) max(16px, env(safe-area-inset-right)) 0 max(16px, env(safe-area-inset-left))}.nb-spacer{height:var(--nb-height)}.navbar-mark svg{height:28px}.navbar-time .clock-date,.navbar-rack-info{display:none}}.app-menu-item:disabled{cursor:default;opacity:.5}.app-menu-radio{padding-left:46px}.app-menu-radio:before{content:"";background:0 0;border-radius:50%;flex-shrink:0;width:6px;height:6px}.app-menu-radio[aria-checked=true]:before{background:var(--blue)}.app-menu-radio[aria-checked=false] .app-menu-label{color:var(--muted)}.app-menu-item:disabled:hover{background:0 0}.page-module{max-width:none;padding:24px}:root{--module-panel-w:280px}.rack-grid-wrap{height:calc(100dvh - var(--nb-height));box-sizing:border-box;flex-direction:column;gap:8px;padding:8px;display:flex;position:relative;overflow:hidden}.rack-row{flex:1;grid-template-columns:1fr 1fr;gap:8px;min-height:0;display:grid}.rack-grid-side{flex:1;grid-template-columns:1fr 1fr;gap:8px;min-height:0;display:grid;overflow:hidden}.rack-grid-side-capped{grid-template-rows:1fr 1fr}.rack-cell{min-width:0;height:100%;overflow:hidden}.rack-cell-capped{height:50%}.rack-module-wrap{flex-direction:column;height:100%;min-height:0;display:flex;position:relative}.rack-module-wrap>*{flex:1;min-width:0;min-height:0}.rack-empty{letter-spacing:.08em;text-transform:uppercase;height:100%;color:var(--faint);text-align:center;justify-content:center;align-items:center;padding:0 24px;font-size:.923077rem;display:flex}.rack-veil{z-index:var(--z-tooltip);background:color-mix(in srgb, var(--bg) 82%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.rack-veil-text{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);font-size:.923077rem}.module-loading{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;justify-content:center;align-items:center;gap:6px;height:100%;padding:16px;display:flex}.module-head{align-items:center;gap:var(--gap-sm);min-height:var(--module-head-h);padding:0 var(--card-px);box-sizing:border-box;flex:none;display:flex}.module-head-icon{flex-shrink:0;display:flex}.module-head-icon svg{width:22px;height:22px}.module-head-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-size:.923077rem}.module-head-rank{display:none}.module-notice-icon{opacity:.8;display:flex}.module-notice-icon svg{width:28px;height:28px}.module-notice-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-size:1rem}.module-notice-sub{color:var(--text-secondary);text-align:center;font-size:.846154rem}.module-notice-badge{letter-spacing:.08em;text-transform:uppercase;color:var(--faint);border:1px solid var(--border);border-radius:999px;margin-top:2px;padding:2px 8px;font-size:.769231rem}.rack-thumb{box-sizing:border-box;border:1px solid var(--border2);background:var(--bg);border-radius:4px;flex-direction:column;flex-shrink:0;gap:2px;width:46px;height:32px;padding:2px;display:flex}.rack-thumb-side{grid-template-columns:1fr 1fr;gap:2px;display:grid}.rack-thumb-row{flex:1;grid-template-columns:1fr 1fr;gap:2px;min-height:0;display:grid}.rack-thumb-block{opacity:.85;border-radius:2px}.rack-thumb-empty{background:var(--surface2)}.rack-cameras{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;gap:8px;height:100%;display:flex}.rack-cameras-empty{justify-content:center;align-items:center;gap:var(--gap-sm);flex-direction:column;flex:1;min-height:0;display:flex}.rack-cameras-empty,.rack-cameras-grid{padding:0 var(--card-px) var(--card-px)}.rack-cameras-grid{flex:1;gap:8px;min-height:0;display:grid}.rack-cameras-row{grid-auto-columns:1fr;grid-auto-flow:column}.rack-cameras-stacked{grid-auto-rows:1fr;grid-auto-flow:row}.rack-cameras-quad{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr}.rack-camera-slot{border:1px solid var(--border);background:var(--surface2);border-radius:6px;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.rack-camera-slot-name{letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);text-align:center;padding:0 8px;font-size:.846154rem}.rack-camera-slot-idle{flex-direction:column;gap:4px}.rack-camera-slot-note{color:var(--text-secondary);text-align:center;opacity:.7;font-size:.769231rem}.camera-player{background:var(--bg);cursor:pointer;width:100%;height:100%;position:relative}.camera-player:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.camera-player video{object-fit:contain;width:100%;height:100%;display:block}.camera-player.is-fullscreen{background:#000}.camera-player.is-fullscreen .camera-player-label{font-size:1rem;bottom:12px;left:14px}.camera-player-label{letter-spacing:.06em;color:#ffffffd0;background:#00000080;border-radius:4px;padding:1px 6px;font-size:.769231rem;position:absolute;bottom:6px;left:8px}.camera-player-state{color:var(--text-secondary);justify-content:center;align-items:center;font-size:.846154rem;display:flex;position:absolute;inset:0}.camera-player-quality{letter-spacing:.06em;color:#ffffffd0;cursor:pointer;background:#00000080;border:1px solid #0000;border-radius:4px;padding:1px 6px;font-size:.769231rem;position:absolute;bottom:6px;right:8px}.camera-player-quality:hover{border-color:#ffffff80}.camera-player.is-fullscreen .camera-player-quality{font-size:1rem;bottom:12px;right:14px}.camera-player-gear{color:#ffffffd0;cursor:pointer;background:#00000080;border:1px solid #0000;border-radius:4px;align-items:center;padding:2px;display:flex;position:absolute;top:6px;right:8px}.camera-player-gear:hover{border-color:#ffffff80}.camera-player-gear:after{content:"";inset:calc((20px - 2px - var(--pointer-target)) / 2);position:absolute}.camera-player-gear:active,.camera-player-quality:active{border-color:#ffffff80}.ptz-gear-icon{width:14px;height:14px}.camera-ptz-panel{cursor:default;transform-origin:100% 0;animation:popIn var(--transition-pop) var(--ease-out-swift) both;background:#000000b8;border:1px solid #ffffff2e;border-radius:6px;flex-direction:column;gap:8px;padding:8px;display:flex;position:absolute;top:30px;right:8px}.camera-ptz-panel button{color:#ffffffd0;cursor:pointer;background:#ffffff14;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;width:26px;height:26px;font-size:.846154rem;display:flex}.camera-ptz-panel button:hover{border-color:#ffffff80}.camera-ptz-panel button{position:relative}.camera-ptz-panel button:after{content:"";inset:calc((26px - 2px - var(--pointer-target)) / 2);position:absolute}.camera-ptz-panel button:active{background:#ffffff2e;border-color:#ffffff80}.camera-ptz-panel button:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.camera-ptz-pad{grid-template-rows:repeat(3,26px);grid-template-columns:repeat(3,26px);justify-content:center;gap:2px;display:grid}.ptz-arrow{width:14px;height:14px}.ptz-cell-up{grid-area:1/2}.ptz-cell-up .ptz-arrow{transform:rotate(90deg)}.ptz-cell-left{grid-area:2/1}.ptz-cell-home{grid-area:2/2}.ptz-cell-right{grid-area:2/3}.ptz-cell-right .ptz-arrow{transform:rotate(180deg)}.ptz-cell-down{grid-area:3/2}.ptz-cell-down .ptz-arrow{transform:rotate(-90deg)}.camera-ptz-rows{color:#ffffffd0;grid-template-columns:1fr 26px 26px auto;align-items:center;gap:2px 4px;font-size:.769231rem;display:grid}.camera-ptz-rows .camera-ptz-aux{grid-column:4}.camera-ptz-aux,.camera-ptz-mem,.camera-ptz-ok{width:auto;padding:0 6px;font-size:.769231rem}.camera-ptz-preset-block{flex-direction:column;gap:2px;display:flex}.camera-ptz-section-title{color:var(--text-secondary);text-align:center;font-size:.769231rem}.camera-ptz-presets{justify-content:center;gap:2px;display:flex}.camera-ptz-mem.is-active{color:var(--green-text);border-color:currentColor}.camera-ptz-osd{gap:2px;display:flex}.camera-ptz-osd input{color:#ffffffd0;background:#ffffff14;border:1px solid #0000;border-radius:4px;width:96px;height:26px;padding:0 6px;font-size:.769231rem}.camera-ptz-osd input:focus{border-color:#ffffff80;outline:none}.camera-ptz-status{max-width:120px;color:var(--text-secondary);text-align:center;font-size:.692308rem}.rack-config{width:420px;z-index:var(--z-tooltip);box-sizing:border-box;border:1px solid var(--border2);border-radius:var(--radius-lg);background:var(--surface);animation:rack-config-in var(--transition-enter) var(--ease-out-swift) backwards;flex-direction:column;display:flex;position:absolute;top:8px;bottom:8px;right:8px;overflow:hidden;box-shadow:0 8px 32px #00000059}@keyframes rack-config-in{0%{opacity:0;transform:translate(16px)}}.rack-config-head{border-bottom:1px solid var(--border);background:var(--surface2);flex:none;align-items:center;gap:8px;padding:10px 12px;display:flex}.rack-config-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text);flex-direction:column;gap:2px;margin-right:auto;font-size:.923077rem;display:flex}.rack-config-scope{letter-spacing:.06em;color:var(--faint);font-size:.769231rem}.rack-config-icon-btn{width:24px;height:24px;color:var(--text-secondary);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;font-size:1.07692rem;line-height:1;display:flex}.rack-config-icon-btn svg{width:14px;height:14px;display:block}.rack-config-icon-btn:hover{border-color:var(--border2);color:var(--text)}.rack-config-icon-btn{transition:transform .1s ease-out,color .2s,border-color .2s}.rack-config-icon-btn:active{background:var(--surface2);color:var(--text);transform:scale(.96)}.rack-config-label{letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-size:.769231rem}.rack-config-presets{border-bottom:1px solid var(--border);flex-direction:column;flex:none;gap:4px;padding:10px 12px;display:flex}.rack-config-stations{border-bottom:1px solid var(--border);flex-direction:column;flex:none;gap:8px;padding:10px 12px;display:flex}.rack-config-station{align-items:center;gap:8px;display:flex}.rack-config-station-text{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.rack-config-station-name{color:var(--text);font-size:.923077rem}.rack-config-station-state{color:var(--muted);font-size:.769231rem}.rack-config-preset{text-align:left;cursor:pointer;color:inherit;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:10px;padding:5px 6px;display:flex}.rack-config-preset:hover{background:var(--surface2)}.rack-config-preset:active{background:var(--border)}.rack-config-preset[aria-checked=true]{border-color:var(--accent);background:var(--surface2)}.rack-config-preset-text{flex-direction:column;gap:2px;min-width:0;display:flex}.rack-config-preset-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-size:.846154rem}.rack-config-preset-usage{color:var(--text-secondary);font-size:.846154rem}.rack-config-body{flex:1;min-height:0;display:flex}.rack-config-modules{border-right:1px solid var(--border);flex-direction:column;flex:0 0 150px;gap:2px;margin:0;padding:8px;list-style:none;display:flex;overflow-y:auto}.rack-config-module{border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;padding:6px 4px;transition:transform .15s;display:flex}.rack-config-module.is-selected{border-color:var(--border2);background:var(--surface2)}.rack-config-module.is-off .rack-config-module-name{color:var(--faint)}.rack-config-module.is-dragged{z-index:1;background:var(--surface2);border-color:var(--border2);position:relative;box-shadow:0 6px 16px #00000059}.rack-config-grip{cursor:grab;color:var(--muted);touch-action:none;-webkit-user-select:none;user-select:none;font-size:1rem;line-height:1}.rack-config-grip svg{width:13px;height:13px;display:block}.rack-config-module.is-dragged .rack-config-grip{cursor:grabbing}@media (prefers-reduced-motion:reduce){.rack-config-module{transition:none}.rack-config,.camera-ptz-panel{animation-name:fadeIn}}.rack-config-module-name{cursor:pointer;letter-spacing:.06em;text-transform:uppercase;min-width:0;color:var(--text-secondary);text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:6px;padding:0;font-size:.769231rem;display:flex}.rack-config-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.rack-config-switch{cursor:pointer;border:1px solid var(--border2);background:var(--surface2);border-radius:999px;flex-shrink:0;width:26px;height:14px;padding:1px;position:relative}.rack-config-switch:after{content:"";inset:calc((14px - 2px - var(--pointer-target)) / 2) calc((26px - 2px - var(--pointer-target)) / 2);position:absolute}.rack-config-switch[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.rack-config-switch-knob{background:var(--muted);border-radius:50%;width:10px;height:10px;display:block}.rack-config-switch[aria-checked=true] .rack-config-switch-knob{background:var(--bg);margin-left:auto}.rack-config-detail{flex-direction:column;flex:1;gap:12px;min-width:0;padding:10px 12px;display:flex;overflow-y:auto}.rack-config-detail-head{align-items:center;gap:8px;display:flex}.rack-config-detail-icon{display:flex}.rack-config-detail-icon svg{width:20px;height:20px}.rack-config-detail-text{flex-direction:column;gap:2px;margin-right:auto;display:flex}.rack-config-detail-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-size:.923077rem}.rack-config-detail-sub{color:var(--text-secondary);font-size:.846154rem}.rack-config-option{flex-direction:column;gap:6px;display:flex}.rack-config-choices{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.rack-config-btn{cursor:pointer;letter-spacing:.06em;color:var(--text-secondary);background:var(--surface2);border:1px solid var(--border);border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-size:.769231rem;transition:transform .1s ease-out,color .2s,border-color .2s,background .2s;display:flex}.rack-config-btn:hover:not(:disabled){border-color:var(--border2);color:var(--text)}.rack-config-btn:active:not(:disabled){background:var(--border);color:var(--text);transform:scale(.97)}.rack-config-btn[aria-pressed=true]{border-color:var(--accent);color:var(--text)}.rack-config-btn:disabled{cursor:default;opacity:.6}.rack-config-empty{color:var(--faint);font-size:.846154rem}.services-panel-body{flex-direction:column;flex:1;gap:14px;min-height:0;padding:12px;display:flex;overflow-y:auto}.services-svc{background:var(--surface);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:8px;padding:10px;display:flex}.services-svc-head{align-items:center;gap:8px;display:flex}.services-svc-text{flex-direction:column;gap:2px;min-width:0;margin-right:auto;display:flex}.services-svc-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-size:.846154rem}.services-svc-sub{color:var(--text-secondary);font-size:.846154rem}.services-svc-status{letter-spacing:.06em;color:var(--text-secondary);white-space:nowrap;font-size:.769231rem}.services-svc-actions{align-items:center;gap:6px;display:flex}.services-svc-error{color:var(--red-text);overflow-wrap:anywhere;font-size:.846154rem}.services-note{color:var(--faint);margin:0;font-size:.846154rem}.module-error{box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:120px;padding:16px;display:flex}.module-error-title{letter-spacing:.08em;text-transform:uppercase;color:var(--red-text);font-size:.923077rem}.module-error-detail{color:var(--text-secondary);text-align:center;overflow-wrap:anywhere;max-width:360px;font-size:.923077rem}.module-error-retry{letter-spacing:.08em;text-transform:uppercase;color:var(--text);background:var(--surface2);border:1px solid var(--border2);cursor:pointer;border-radius:6px;padding:6px 14px;font-size:.846154rem}.module-error-retry:hover{border-color:var(--border)}.rack-daemon{box-sizing:border-box;background:var(--surface);border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;flex-wrap:wrap;align-items:baseline;gap:12px;padding:6px 12px;font-size:.846154rem;display:flex}.rack-daemon-title{letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.rack-daemon-stats{color:var(--text-secondary)}.rack-daemon-detail{color:var(--text);overflow-wrap:anywhere}.rack-daemon-alerte{border-color:color-mix(in srgb, var(--orange) 25%, transparent)}.rack-daemon-alerte .rack-daemon-title{color:var(--orange-text)}.rack-daemon-arret{border-color:color-mix(in srgb, var(--red) 25%, transparent)}.rack-daemon-arret .rack-daemon-title{color:var(--red-text)}@media (width<=768px),(height<=500px){:root{--module-panel-w:clamp(200px, 34vw, 280px);--module-flow-h:200px}.rack-grid-wrap{height:auto;min-height:calc(100dvh - var(--nb-height));padding-bottom:max(8px, env(safe-area-inset-bottom));overflow:visible}.camera-player-quality{padding:14px;font-size:.923077rem;bottom:8px;right:8px}.rack-row,.rack-grid-side{display:contents}.rack-cell,.rack-cell-capped{flex-shrink:0;order:var(--cell-order);height:auto;overflow:visible}.rack-module-wrap{height:auto}.rack-grid-wrap>.rack-veil{top:var(--nb-height);position:fixed;bottom:0;left:0;right:0}.rack-grid-wrap .rack-cameras,.rack-grid-wrap .rack-spectrum{height:auto}.rack-grid-wrap .wcc-wrap,.rack-grid-wrap .meteo-card,.rack-grid-wrap .rack-flights{height:auto;overflow:visible}.rack-grid-wrap .wcc-chart-wrap,.rack-grid-wrap .meteo-map-area,.rack-grid-wrap .spectrum-frame,.rack-grid-wrap .fl-map-area{height:var(--module-flow-h);flex:none}.rack-grid-wrap .meteo-panel,.rack-grid-wrap .fl-panel{height:auto}.rack-cell{isolation:isolate}.rack-grid-wrap .module-head,.page-module .module-head{top:var(--nb-height);z-index:var(--z-map-overlay);padding:var(--card-head-py) var(--card-px);border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:color-mix(in srgb, var(--surface) 86%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky}.module-head-rank{letter-spacing:.08em;color:var(--muted);flex-shrink:0;margin-left:auto;padding-left:10px;font-size:.769231rem;display:inline}.module-head-rank:not(:last-child){margin-left:0}.rack-grid-wrap .rack-cameras-grid{flex:none;grid-auto-rows:auto}.rack-grid-wrap .rack-camera-slot{aspect-ratio:16/9}@media (prefers-reduced-transparency:reduce){.rack-grid-wrap .module-head,.page-module .module-head{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.rack-grid-wrap .module-head,.page-module .module-head{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid var(--border2)}}.rack-grid-wrap:has(.rack-config):after{content:"";z-index:calc(var(--z-tooltip) - 1);pointer-events:none;background:var(--veil-bg);position:fixed;inset:0}.rack-pager-wrap:has(.rack-config):after{content:"";z-index:calc(var(--z-tooltip) - 1);pointer-events:none;background:var(--veil-bg);position:fixed;inset:0}.page-module:has(.rack-config):after{content:"";z-index:calc(var(--z-tooltip) - 1);pointer-events:none;background:var(--veil-bg);position:fixed;inset:0}.rack-config{background:var(--material-modal-bg);-webkit-backdrop-filter:var(--material-modal-blur);backdrop-filter:var(--material-modal-blur);top:calc(var(--nb-height) + 8px);left:max(8px, env(safe-area-inset-left));right:max(8px, env(safe-area-inset-right));bottom:max(8px, env(safe-area-inset-bottom));width:auto;position:fixed}.rack-config-grip{justify-content:center;align-self:stretch;align-items:center;width:44px;margin:-6px 0 -6px -6px;font-size:1.15385rem;display:flex}.rack-config-grip svg{width:15px;height:15px}.rack-config-presets{display:none}.rack-config-icon-btn{border-radius:var(--radius-md);width:44px;height:44px}.rack-config-btn{min-height:44px;padding:10px 14px;font-size:.846154rem}.rack-config-module{min-height:44px;padding:6px}@media (prefers-reduced-transparency:reduce){.rack-config{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.rack-config{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid var(--border2)}}}@media (width<=600px){.rack-config-body{flex-direction:column}.rack-config-modules{border-right:none;border-bottom:1px solid var(--border);flex:none;max-height:40%}.rack-config-detail{flex:1}}.stack-switch{border-bottom:1px solid var(--border);flex-direction:column;gap:.615385rem;margin-bottom:.153846rem;padding-bottom:.923077rem;display:flex}.stack-switch-list{color:var(--text-secondary);flex-direction:column;gap:.307692rem;margin:0;padding:0;font-size:.846154rem;list-style:none;display:flex}.stack-switch-list li{align-items:center;gap:.461539rem;display:flex}.stack-switch-actions{flex-wrap:wrap;align-items:center;gap:.461539rem;display:flex}.stack-switch-confirm{background:var(--surface);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:.615385rem;padding:.769231rem;display:flex}.stack-switch-confirm-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-size:.846154rem}.stack-switch-confirm .is-danger{border-color:var(--red-text);color:var(--red-text)}.stack-switch-confirm .is-danger:hover:not(:disabled){background:var(--red);color:var(--bg)}.stack-switch-progress{color:var(--text-secondary);align-items:center;gap:.615385rem;margin:0;font-size:.846154rem;display:flex}.stack-switch-report{background:var(--surface);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:.615385rem;padding:.769231rem;display:flex}.stack-switch-step-ok{color:var(--green-text)}.stack-switch-step-fail{color:var(--red-text);flex-wrap:wrap}.rack-pager-wrap{height:calc(100dvh - var(--nb-height));flex-direction:column;display:flex;position:relative;overflow:hidden}.rack-pager{flex-direction:column;flex:1;min-height:0;display:flex}.rack-pager-frame{scroll-snap-type:x mandatory;overscroll-behavior-x:none;scrollbar-width:none;flex:1;min-height:0;display:flex;overflow:auto hidden}.rack-pager-frame::-webkit-scrollbar{display:none}.rack-pager-page{scroll-snap-align:start;scroll-snap-stop:always;overscroll-behavior:none;-webkit-overflow-scrolling:touch;min-width:0;height:100%;padding:8px max(8px, env(safe-area-inset-right)) 8px max(8px, env(safe-area-inset-left));flex:0 0 100%;overflow:hidden auto}.rack-pager .rack-cameras,.rack-pager .wcc-wrap,.rack-pager .meteo-card,.rack-pager .rack-spectrum,.rack-pager .rack-flights{height:100%;min-height:0}.rack-pager .wcc-chart-wrap,.rack-pager .meteo-map-area,.rack-pager .spectrum-frame,.rack-pager .fl-map-area{flex:1;min-height:0}.rack-pager .rack-cameras-grid{flex:1;grid-auto-rows:1fr;min-height:0}.rack-summary{flex-direction:column;gap:12px;padding:4px 4px 8px;display:flex}.rack-summary-head{flex-direction:column;gap:2px;display:flex}.rack-summary-title{letter-spacing:-.01em;margin:0;font-size:1.69231rem;font-weight:600}.rack-summary-sub{color:var(--muted);margin:0;font-size:.923077rem}.rack-summary-state{font-weight:600}.rack-summary-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.rack-summary-card{text-align:left;width:100%;min-height:88px;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);transition:transform var(--transition-fast);flex-direction:column;gap:6px;padding:12px 14px;display:flex}.rack-summary-card:active{transition-duration:0s;transform:scale(.98)}.rack-summary-card-head{align-items:center;gap:8px;display:flex}.rack-summary-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.rack-summary-label{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.923077rem;font-weight:600}.rack-summary-card-body{justify-content:space-between;align-items:center;gap:12px;display:flex}.rack-summary-text{flex-direction:column;gap:2px;min-width:0;display:flex}.rack-summary-value{letter-spacing:-.02em;font-size:1.84615rem;font-weight:600}.rack-summary-detail{color:var(--muted);font-size:.923077rem}.rack-summary-spark{opacity:.9;flex:0 0 96px}.rack-pager-dots{padding-bottom:env(safe-area-inset-bottom);flex-shrink:0;justify-content:center;align-items:center;gap:2px;display:flex}.rack-pager-dot{width:var(--pointer-target);background:0 0;border:none;justify-content:center;align-items:center;height:44px;padding:0;display:flex}.rack-pager-dot:before{content:"";background:var(--muted);opacity:.35;width:7px;height:7px;transition:opacity var(--duration-base) var(--ease-out-swift), background-color var(--duration-base) var(--ease-out-swift);border-radius:50%}.rack-pager-dot-on:before{opacity:1;background:var(--text)}@media (prefers-reduced-motion:reduce){.rack-summary-card,.rack-pager-dot:before{transition:none}}.exp-back{cursor:pointer;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;background:0 0;border:0;align-items:center;gap:6px;margin-bottom:20px;padding:0;font-size:.846154rem;font-weight:400;transition:color .15s;display:inline-flex}.exp-back:hover{color:var(--text-secondary)}.exp-back-arrow{font-size:1rem}.exp-title{letter-spacing:-.02em;margin:0 0 6px;font-size:2.15385rem;font-weight:300}.exp-sub{color:var(--text-secondary);max-width:62ch;margin:0 0 24px;font-size:1.07692rem;font-weight:400;line-height:1.6}.exp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);flex-direction:column;gap:24px;max-width:900px;padding:28px;display:flex}.exp-step{flex-direction:column;gap:10px;display:flex}.exp-step-lb{color:var(--text-secondary);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:8px;font-size:.769231rem;display:flex}.exp-step-lb:before{content:"";background:var(--rule);width:12px;height:1px;display:block}.exp-step-n{color:var(--muted);letter-spacing:.1em;font-size:.692308rem}.exp-dates{grid-template-columns:1fr 130px 1fr 130px auto;align-items:end;gap:8px;display:grid}.exp-field{flex-direction:column;gap:5px;min-width:0;display:flex}.exp-field-lb{color:var(--muted);letter-spacing:.08em;font-size:.769231rem}.exp-input{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);width:100%;transition:border-color var(--transition-fast);outline:none;padding:9px 12px;font-size:1rem;font-weight:400}.exp-input:focus{border-color:var(--border2)}.exp-input::-webkit-calendar-picker-indicator{filter:invert(.5);cursor:pointer}.exp-search{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-md);height:40px;color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;white-space:nowrap;transition:color var(--transition-fast), border-color var(--transition-fast);padding:0 20px;font-size:.846154rem;font-weight:400}.exp-search:hover:not(:disabled){color:var(--text);border-color:var(--muted)}.exp-search:disabled{opacity:.4;cursor:default}.exp-chips{flex-wrap:wrap;gap:6px;display:flex}.exp-chip{text-align:left;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface2);color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);flex-direction:column;gap:2px;padding:8px 15px;font-size:1rem;font-weight:400;display:flex}.exp-chip:hover{border-color:var(--border2);color:var(--text)}.exp-chip-on{border-color:var(--blue);background:color-mix(in srgb, var(--blue) 7%, transparent);color:var(--blue-text)}.exp-chip-sub{color:var(--muted);font-size:.769231rem}.exp-chip-on .exp-chip-sub{color:var(--blue-text);opacity:.75}.exp-badge{border:1px solid var(--border2);border-radius:var(--radius-md);background:var(--surface2);color:var(--text);align-self:flex-start;align-items:center;gap:10px;padding:9px 16px;font-size:1rem;display:inline-flex}.exp-badge-id{color:var(--muted);letter-spacing:.06em;font-size:.769231rem}.exp-run{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.exp-soon{color:var(--muted);margin:0;font-size:.923077rem;line-height:1.7}.exp-go{border-radius:var(--radius-md);background:var(--blue);color:#fff;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:opacity var(--transition-fast);border:none;padding:11px 28px;font-size:.923077rem}.exp-go:hover:not(:disabled){opacity:.85}.exp-go:disabled{opacity:.4;cursor:default}.exp-nvr{flex-direction:column;gap:12px;display:flex}.exp-nvr-list{flex-direction:column;gap:14px;display:flex}.exp-nvr-ch{flex-direction:column;gap:5px;display:flex}.exp-nvr-ch-lb{color:var(--text-secondary);align-items:baseline;gap:8px;font-size:.846154rem;font-weight:400;display:flex}.exp-nvr-ch-ip{color:var(--muted);letter-spacing:.04em;font-size:.769231rem}.exp-nvr-track{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;width:100%;height:14px;transition:border-color var(--transition-fast);padding:0;display:block;position:relative;overflow:hidden}.exp-nvr-track:hover:not(:disabled){border-color:var(--blue)}.exp-nvr-track:hover:not(:disabled) .exp-nvr-seg{opacity:1}.exp-nvr-track:disabled{cursor:default}.exp-nvr-seg{background:var(--blue);opacity:.8;min-width:2px;transition:opacity var(--transition-fast);position:absolute;top:0;bottom:0}.nvr-player{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding-top:20px;display:flex}.nvr-player-hd{justify-content:space-between;align-items:center;gap:10px;display:flex}.nvr-player-lb{color:var(--text-secondary);font-size:.846154rem}.nvr-player-close{cursor:pointer;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;background:0 0;border:0;padding:0;font-size:.769231rem;transition:color .15s}.nvr-player-close:hover{color:var(--text-secondary)}.nvr-player-frame{border-radius:var(--radius-sm);background:#000}.nvr-player-video{aspect-ratio:16/9;border-radius:var(--radius-sm);background:#000;width:100%;display:block}.nvr-player-frame:fullscreen{justify-content:center;align-items:center;display:flex}.nvr-player-frame:fullscreen .nvr-player-video{aspect-ratio:auto;height:100%}.nvr-player-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.nvr-seek{flex-direction:column;gap:4px;display:flex}.nvr-seek-range{appearance:none;background:0 0;width:100%;height:18px;margin:0}.nvr-seek-range::-webkit-slider-runnable-track{background:var(--surface2);border:1px solid var(--border);border-radius:2px;height:4px}.nvr-seek-range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--blue);border:1px solid var(--border2);cursor:ew-resize;border-radius:2px;width:8px;height:14px;margin-top:-6px}.nvr-crop{flex-direction:column;gap:8px;display:flex}.nvr-seek-lb,.nvr-crop-lb{color:var(--text-secondary);letter-spacing:.04em;font-size:.846154rem}.nvr-seek-range:focus,.nvr-crop-range:focus{outline:none}.nvr-crop-sliders{height:22px;position:relative}.nvr-crop-sliders:before{content:"";background:var(--surface2);border:1px solid var(--border);border-radius:2px;height:4px;position:absolute;top:9px;left:0;right:0}.nvr-crop-cov{background:var(--blue);opacity:.25;pointer-events:none;min-width:2px;height:4px;position:absolute;top:9px}.nvr-crop-fill{background:var(--blue);opacity:.6;pointer-events:none;border-radius:2px;height:4px;position:absolute;top:10px}.nvr-crop-range{appearance:none;pointer-events:none;background:0 0;width:100%;height:22px;margin:0;position:absolute;inset:0}.nvr-crop-range::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;background:var(--blue);border:1px solid var(--border2);cursor:ew-resize;border-radius:3px;width:12px;height:18px}.nvr-export-progress{flex-direction:column;gap:6px;display:flex}.nvr-export-bar{background:var(--surface2);border:1px solid var(--border);border-radius:3px;height:6px;overflow:hidden}.nvr-export-bar-fill{background:var(--blue);height:100%;transition:width .5s linear}.exp-nvr-window{color:var(--muted);letter-spacing:.04em;justify-content:space-between;font-size:.769231rem;display:flex}.exp-nvr-note{color:var(--muted);font-size:.769231rem;line-height:1.5}.exp-muted{color:var(--muted);font-size:.923077rem}.exp-error{border-radius:var(--radius-md);background:color-mix(in srgb, var(--red) 6%, transparent);border:1px solid color-mix(in srgb, var(--red) 19%, transparent);color:var(--red-text);overflow-wrap:anywhere;padding:11px 15px;font-size:.923077rem}.exp-done{border-radius:var(--radius-md);background:color-mix(in srgb, var(--green) 7%, transparent);border:1px solid color-mix(in srgb, var(--green) 13%, transparent);color:var(--green-text);overflow-wrap:anywhere;padding:11px 15px;font-size:.923077rem}@media (width<=1024px){.exp-dates{grid-template-columns:1fr 1fr}.exp-search{grid-column:1/-1}}.exp-back{position:relative}.exp-back:after{content:"";position:absolute;inset:-8px -6px}.exp-back:active{color:var(--text)}.exp-search:active:not(:disabled){color:var(--text);border-color:var(--muted)}.exp-chip:active{border-color:var(--border2);color:var(--text)}.exp-go:active:not(:disabled){opacity:.7}.exp-back:focus-visible,.exp-search:focus-visible,.exp-chip:focus-visible,.exp-go:focus-visible,.exp-nvr-track:focus-visible,.nvr-player-close:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.wp-login{gap:16px;max-width:420px}.wp-session{color:var(--text-secondary);align-items:center;gap:12px;margin-bottom:16px;font-size:.923077rem;display:flex}.wp-list{flex-direction:column;gap:16px;display:flex}.wp-page{gap:16px;padding:24px}.wp-head{align-items:center;gap:8px;display:flex}.wp-switch-label{color:var(--text-secondary);cursor:pointer;font-size:.846154rem}.wp-link{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.wp-url{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;min-width:0;color:var(--text);margin-right:auto;font-size:.923077rem}.wp-users{flex-direction:column;gap:8px;display:flex}.wp-user{min-height:var(--pointer-target);align-items:center;gap:8px;display:flex}.wp-user-text{flex-direction:column;gap:2px;min-width:0;margin-right:auto;display:flex}.wp-user-login{color:var(--text);font-size:1rem}.wp-expired,.wp-danger{color:var(--red-text)}.wp-danger:hover:not(:disabled){border-color:var(--red);color:var(--red-text)}.wp-form{grid-template-columns:1fr 1fr auto auto;align-items:end;gap:8px;display:grid}.wp-form .field{margin:0}.wp-form>.services-svc-sub{grid-column:1/-1}.wp-form-actions{gap:8px;display:flex}.wp-form-actions .rack-config-btn,.wp-link .rack-config-btn,.wp-user .rack-config-btn,.wp-session .rack-config-btn{min-height:var(--pointer-target)}.wp-secret{border:1px solid var(--border2);border-radius:var(--radius-md);background:var(--surface2);color:var(--text);flex-direction:column;gap:4px;padding:12px 16px;font-size:.923077rem;display:flex}.wp-secret-value{letter-spacing:.04em;-webkit-user-select:all;user-select:all;font-size:1.15385rem}.wp-empty{color:var(--text-secondary);font-size:.923077rem}@media (width<=720px){.wp-form{grid-template-columns:1fr}}.wind-module{--wm-head-h:calc(var(--fs-footnote) * 1.35 + 18px);grid-template-columns:1fr clamp(340px,20vw,460px);align-items:stretch;gap:16px;display:grid}.wcc-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);box-sizing:border-box;flex-direction:column;height:100%;display:flex;position:relative;overflow:hidden}.wcc-tabs{background:var(--surface2);border:1px solid var(--border2);border-radius:10px;gap:4px;padding:4px;display:flex}.wcc-tab{letter-spacing:.06em;cursor:pointer;color:var(--muted);transition:color var(--transition-base), background var(--transition-base), border-color var(--transition-base);background:0 0;border:none;border-radius:6px;padding:4px 10px;font-size:.769231rem}.wcc-tab.active{background:var(--rule);color:var(--text);border:1px solid var(--muted)}.wcc-tab:hover:not(.active){color:var(--text-secondary);background:var(--surface2)}.wcc-sensor-state{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);align-items:center;gap:14px;margin-left:auto;font-size:.692308rem;display:flex}.wcc-sensor-item{align-items:center;gap:5px;display:flex}.wcc-state-dot{border-radius:50%;flex-shrink:0;width:5px;height:5px}.wcc-state-on{background:var(--green)}.wcc-state-off{background:var(--red)}.wcc-state-unplugged{background:var(--orange)}.wcc-outage{text-align:center;justify-content:center;align-items:center;gap:6px;padding:16px 24px}.wcc-body{flex-direction:column;flex:1;min-height:0;padding:12px 16px;display:flex;overflow:hidden}.wcc-chart-wrap{touch-action:pan-y;flex:1;min-height:80px;margin-bottom:8px;position:relative;overflow:hidden}.wcc-canvas{width:100%;height:100%;display:block;position:absolute;top:0;left:0}.wcc-tooltip{background:var(--surface2);border:1px solid var(--border2);pointer-events:none;opacity:0;color:var(--text-secondary);white-space:nowrap;border-radius:8px;padding:8px 12px;font-size:.769231rem;transition:opacity .15s;position:absolute}.wcc-tooltip.visible{opacity:1}.wcc-tooltip-row{align-items:center;gap:6px;margin-bottom:2px;display:flex}.wcc-tooltip-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.wcc-tooltip-value{font-size:1rem}.wcc-tooltip-time{color:var(--text-secondary)}.wcc-xlabels{flex-shrink:0;justify-content:space-between;padding:0 2px;display:flex}.wcc-xlabel{color:var(--text-secondary);letter-spacing:.04em;font-size:.769231rem}.wcc-footer{border-top:1px solid var(--border);flex-shrink:0;margin-top:8px;padding-top:12px}.wcc-stats{flex-wrap:wrap;gap:12px 24px;margin-bottom:14px;display:flex}.wcc-stats-group{flex-direction:column;gap:10px;min-width:10rem;display:flex}.wcc-stat{flex-direction:column;gap:2px;display:flex}.wcc-stat-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);align-items:center;gap:4px;font-size:.769231rem;display:flex}.wcc-stat-value{align-items:center;gap:4px;font-size:1.15385rem;display:flex}.wcc-legend{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.wcc-legend.with-stats{border-top:1px solid var(--border2);padding-top:10px}.wcc-legend-item{color:var(--text-secondary);align-items:center;gap:6px;font-size:.769231rem;display:flex}.wcc-legend-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.wcc-legend-sensors{align-items:center;gap:16px;margin-left:auto;display:flex}.wcc-legend-toggle{cursor:pointer;transition:color var(--transition-base);background:0 0;border:none;padding:0;position:relative}.wcc-legend-toggle:after{content:"";position:absolute;inset:-9px -7px}.wcc-legend-toggle:hover{color:var(--text)}.wcc-legend-toggle:active{opacity:.7}.wcc-legend-toggle[aria-pressed=false]{color:var(--muted)}.wcc-legend-toggle:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:4px}.wdc-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);box-sizing:border-box;height:100%;padding:12px 16px;position:relative}.wdc-section-label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);min-height:var(--wm-head-h);align-items:center;font-size:.769231rem;display:flex}.wdc-wind-row{align-items:center;gap:20px;margin-bottom:48px;display:flex}.wdc-wind-main{flex-shrink:0;align-items:baseline;gap:4px;display:flex}.wdc-wind-value{letter-spacing:-.04em;font-size:4.92308rem;font-weight:300;line-height:1;transition:color .6s}.wdc-wind-unit{color:var(--muted);margin-bottom:8px;font-size:1.07692rem}.wdc-badges-grid{flex:1;grid-template-columns:1fr;gap:8px;display:grid}.wdc-badge{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:14px 16px;transition:border-color .3s}.wdc-badge:hover{border-color:var(--border2)}.wdc-badge-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px;font-size:.769231rem}.wdc-badge-row{align-items:baseline;gap:8px;display:flex}.wdc-badge-avg{letter-spacing:-.02em;color:var(--text);font-size:1.53846rem;font-weight:400}.wdc-badge-sep{color:var(--border2);font-size:.769231rem}.wdc-badge-gust{color:var(--text-secondary);font-size:1rem}.wdc-divider{background:var(--border);height:1px;margin:0 0 40px}.wdc-rose-section{align-items:center;gap:16px;display:flex}.wdc-rose-block{flex-direction:column;flex-shrink:0;align-items:center;gap:12px;display:flex}.wdc-direction-row{align-items:baseline;gap:8px;display:flex}.wdc-metrics{flex:1}.wdc-direction-value{font-size:var(--fs-title1);letter-spacing:-.03em;color:var(--text);font-weight:400;line-height:1}.wdc-direction-cardinal{font-size:var(--fs-callout);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;line-height:1}.wdc-metric-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding-bottom:20px;display:flex}.wdc-metric-row:last-child{border-bottom:none;padding-bottom:0}.wdc-metric-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;font-size:.769231rem}.wdc-metric-value{color:var(--text-secondary);white-space:nowrap;margin-left:12px;font-size:1rem}.nwc-wrap{--nwc-chip-h:calc(var(--fs-subheadline) * 1.4 + 4px + var(--fs-title2) * 1.4);--nwc-sep-h:32px;align-items:flex-start;display:flex}.nwc-group{flex:none;align-items:flex-start;display:flex}.nwc-sep{width:1px;height:var(--nwc-sep-h);background:var(--border2);margin-top:calc((var(--nwc-chip-h) - var(--nwc-sep-h)) / 2);flex-shrink:0;margin-inline:16px}.nwc-chip{flex-direction:column;gap:4px;display:flex}.nwc-chip+.nwc-chip{margin-left:16px}.nwc-chip-label{letter-spacing:.12em;line-height:1.4;font-size:var(--fs-subheadline);color:var(--muted);text-transform:uppercase}.nwc-chip-value{letter-spacing:.08em;line-height:1.4;font-size:var(--fs-title2);align-items:center;gap:6px;display:flex}.nwc-chip-sub{white-space:nowrap;font-size:var(--fs-subheadline);color:var(--text-secondary);letter-spacing:.02em;line-height:1.4}.nwc-gps,.nwc-metar{align-items:center;display:flex;position:relative}.nwc-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.nwc-dot-critical{background:var(--red);animation:.8s infinite blink}.nwc-dot-warning{background:var(--yellow);animation:1.6s infinite blink}.nwc-dot-info{background:var(--blue)}@media (prefers-reduced-motion:reduce){.nwc-dot-critical,.nwc-dot-warning{animation:none}}.nwc-signal{flex-direction:column;gap:3px;display:flex}.nwc-chip+.nwc-signal{margin-left:16px}.nwc-signal-row{min-height:calc(var(--fs-title2) * 1.4);align-items:center;gap:8px;display:flex}.nwc-signal-track{background:var(--border2);border-radius:2px;flex-shrink:0;width:56px;height:4px;overflow:hidden}.nwc-signal-fill{height:100%;transition:width var(--transition-slow);border-radius:2px}.nwc-signal-value{letter-spacing:.08em;line-height:1.4;font-size:var(--fs-title2)}.nwc-tooltip{z-index:200;background:var(--surface);border:1px solid var(--border2);border-radius:10px;min-width:220px;padding:12px 16px;position:absolute;top:calc(100% + 12px);right:0;box-shadow:0 8px 32px #0004}.nwc-tt-row{border-bottom:1px solid var(--border);justify-content:space-between;gap:16px;padding:3px 0;display:flex}.nwc-tt-label{color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-size:.769231rem}.nwc-tt-value{color:var(--text);text-align:right;font-size:.846154rem}.nwc-tooltip-metar{width:320px}@media (width<=1024px){.nwc-chip-value,.nwc-signal-value{font-size:var(--fs-title3)}.nwc-chip-label,.nwc-chip-sub{font-size:var(--fs-footnote)}.nwc-chip+.nwc-chip,.nwc-chip+.nwc-signal{margin-left:12px}.nwc-signal-row{min-height:calc(var(--fs-title3) * 1.4)}.nwc-wrap{--nwc-chip-h:calc(var(--fs-footnote) * 1.4 + 4px + var(--fs-title3) * 1.4)}.nwc-sep{margin-inline:12px}}@media (width<=768px),(height<=500px){.page-module{padding:12px}.wind-module,.station-row{grid-template-columns:1fr}.station-row:not(.has-video)>.station-power{grid-column:auto}.station-row.has-video>.station-power{contain:none;overflow-y:visible}.wind-module .wcc-wrap{height:min(60dvh,480px)}.wcc-header{flex-wrap:wrap}.wdc-wind-value{font-size:3.69231rem}.wdc-wind-row,.wdc-divider{margin-bottom:24px}.wdc-section-label{min-height:0;margin-bottom:12px;display:block}}.station-row{grid-template-columns:1fr clamp(340px,20vw,460px);gap:16px;margin-top:16px;display:grid}.station-row:not(.has-video)>.station-power{grid-column:2}.station-row.has-video>.station-power{contain:size;overflow-y:auto}.station-power{flex-direction:column;display:flex}.station-power .power-body{flex:1 0 auto}.station-cameras .rack-cameras-grid{flex:none;grid-auto-rows:auto}.station-cameras .rack-camera-slot{aspect-ratio:16/9;max-height:min(60dvh,480px)}.power-body{flex-direction:column;gap:12px;display:flex}.power-gauges{grid-template-columns:1fr 1fr;gap:16px;display:grid}.arc-gauge{color:var(--muted);flex-direction:column;align-items:center;margin:0;display:flex;position:relative}.arc-gauge svg{aspect-ratio:1;width:100%;max-width:120px;display:block}.arc-gauge-track,.arc-gauge-value{fill:none;stroke-width:9px;stroke-linecap:round}.arc-gauge-track{stroke:var(--border2)}.arc-gauge-value{stroke:currentColor;transition:stroke-dasharray .3s ease-out}.arc-gauge-good{color:var(--green)}.arc-gauge-info{color:var(--blue)}.arc-gauge-warn{color:var(--yellow)}.arc-gauge-danger{color:var(--orange)}.arc-gauge-alert{color:var(--red)}.arc-gauge-center{aspect-ratio:1;pointer-events:none;justify-content:center;align-items:baseline;gap:2px;max-width:120px;margin:0 auto;padding-top:31%;display:flex;position:absolute;top:0;left:0;right:0}.arc-gauge-number{color:var(--text);font-size:1.84615rem;font-weight:600;line-height:1}.arc-gauge-unit{color:var(--muted);font-size:.846154rem}.arc-gauge-caption{color:var(--muted);text-align:center;margin-top:-8px;font-size:.846154rem}.power-tiles{grid-template-columns:1fr 1fr;gap:8px;display:grid}.power-tile,.power-trend{border-radius:var(--radius-md);background:color-mix(in srgb, var(--text) 4%, transparent);flex-direction:column;gap:4px;min-width:0;padding:8px 12px;display:flex}.power-tile-label{color:var(--muted);font-size:.769231rem}.power-tile-value{color:var(--text);font-size:.923077rem}.power-trends{flex:auto;grid-template-columns:1fr 1fr;gap:8px;min-height:64px;display:grid}.power-trend-range{color:var(--text-secondary);font-size:.846154rem}.power-trend .meteo-sparkline{flex:auto;height:auto;min-height:28px}.power-device{border-top:1px solid var(--border);flex-direction:column;gap:4px;padding-top:12px;display:flex}.power-device-state{color:var(--text-secondary);font-size:.846154rem}.power-device-health{color:var(--muted);font-size:.769231rem}@media (prefers-reduced-motion:reduce){.arc-gauge-value{transition:none}}.rack-spectrum{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);height:100%;box-shadow:var(--card-shadow);flex-direction:column;display:flex;overflow:hidden}.spectrum-frame{box-sizing:border-box;min-height:0;margin:0 var(--card-px) var(--card-px);border:1px solid var(--border);border-radius:var(--radius-sm);background:#151515;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.spectrum-scale{flex:none;position:relative}.spectrum-view{transform-origin:0 0;border:0;display:flex}.spectrum-state{justify-content:center;align-items:center;gap:var(--gap-sm);padding:var(--card-px);box-sizing:border-box;background:var(--surface);flex-direction:column;display:flex;position:absolute;inset:0}.spectrum-signin{min-height:var(--pointer-target);font-size:var(--fs-footnote);letter-spacing:.06em;text-transform:uppercase;color:var(--text);border:1px solid var(--border);cursor:pointer;transition:background var(--transition-fast);background:0 0;border-radius:999px;margin-top:4px;padding:4px 12px}.spectrum-signin:hover{background:color-mix(in srgb, var(--text) 8%, transparent)}.spectrum-signin:active{background:color-mix(in srgb, var(--text) 14%, transparent)}.spectrum-signin:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.spectrum-empty{box-sizing:border-box;min-height:0;padding:0 var(--card-px) var(--card-px);justify-content:center;align-items:center;gap:var(--gap-sm);flex-direction:column;flex:1;display:flex}.leaflet-container{background:var(--bg)}.leaflet-control-zoom,.leaflet-control-attribution{display:none}.map-position{color:var(--blue);filter:drop-shadow(0 0 2px #000000d9);display:block}.map-position svg{width:100%;height:100%;display:block}.panel-toggle{z-index:var(--z-map-overlay);border:1px solid var(--border2);background:var(--surface);width:18px;height:40px;color:var(--text-secondary);cursor:pointer;border-left:none;border-radius:0 6px 6px 0;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s,transform .1s ease-out;display:flex;position:absolute;top:50%;left:0;transform:translateY(-50%)}.panel-toggle svg{width:12px;height:12px}.panel-toggle:hover{background:var(--surface2);color:var(--text)}.panel-toggle:active{background:var(--surface2);color:var(--text);transform:translateY(-50%)scale(.97)}@media (width<=600px){.panel-toggle{border:1px solid var(--border2);border-top:none;border-radius:0 0 6px 6px;width:40px;height:18px;top:0;left:50%;transform:translate(-50%)}.panel-toggle svg{transform:rotate(90deg)}.panel-toggle:active{transform:translate(-50%)scale(.97)}}@media (width<=768px),(height<=500px){.panel-toggle:after{content:"";position:absolute;inset:-2px -13px}}@media (width<=600px){.panel-toggle:after{inset:-13px -2px}}.meteo-card{--meteo-panel-w:var(--module-panel-w);--meteo-text-lg:var(--fs-body);--meteo-text:var(--fs-callout);--meteo-text-sm:var(--fs-subheadline);--meteo-label:var(--fs-footnote);--meteo-ink:var(--text);--meteo-ink-2:var(--text-secondary);isolation:isolate;z-index:0;background:var(--surface);border:1px solid var(--border);height:100%;min-height:0;box-shadow:var(--card-shadow);border-radius:12px;flex-direction:column;display:flex;position:relative;overflow:hidden}.meteo-head{gap:10px;padding:12px 16px;display:flex}.meteo-head-right{font-size:var(--meteo-text-sm);letter-spacing:.1em;text-transform:uppercase;color:var(--meteo-ink-2);align-items:center;gap:8px;min-width:0;margin-left:auto;display:flex}.meteo-change-city,.meteo-city-cancel{border:1px solid var(--border);color:var(--meteo-ink-2);font-size:var(--meteo-text-sm);letter-spacing:.06em;cursor:pointer;background:0 0;border-radius:5px;padding:2px 7px;transition:color .15s,border-color .15s}.meteo-change-city:hover,.meteo-change-city:active{color:var(--meteo-ink);border-color:var(--border2)}.meteo-city-cancel:hover,.meteo-city-cancel:active{color:var(--red-text);border-color:var(--red-text)}.meteo-source-dot{background:var(--red);border-radius:50%;flex-shrink:0;width:5px;height:5px}.meteo-source-dot.on{background:var(--green)}.meteo-error{font-size:var(--meteo-text);color:var(--red-text);border-bottom:1px solid var(--border);margin:0;padding:6px 16px}.meteo-body{flex:1;min-height:0;display:flex;overflow:hidden}.meteo-panel{width:var(--meteo-panel-w);background:var(--bg);border-right:1px solid var(--border);transition:width .2s var(--ease-out-swift);flex-shrink:0;overflow:hidden}.meteo-panel.collapsed{border-right:none;width:0}.meteo-panel-inner{height:100%;width:var(--meteo-panel-w);flex-direction:column;display:flex;overflow:hidden}.meteo-card.expanded{--meteo-panel-w:clamp(340px, 28vw, 460px)}.meteo-section{border-bottom:1px solid var(--border);font-size:var(--meteo-label);letter-spacing:.14em;text-transform:uppercase;color:var(--meteo-ink-2);flex-shrink:0;margin:0;padding:6px 10px 5px}.meteo-loading{font-size:var(--meteo-text);color:var(--meteo-ink-2);margin:0;padding:10px}.meteo-metar{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;padding:8px 10px}.meteo-card:not(.expanded) .meteo-metar{display:none}.meteo-days{border-bottom:1px solid var(--border);flex:none;max-height:176px;margin:0;padding:0;list-style:none;overflow-y:auto}.meteo-day{border:none;border-bottom:1px solid var(--border);width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;align-items:center;gap:6px;padding:5px 10px;transition:background .12s;display:flex}.meteo-day:hover{background:var(--surface2)}.meteo-day.sel{box-shadow:inset 3px 0 0 var(--blue);background:#4a9eff12}.meteo-day-name{width:86px;font-size:var(--meteo-text);color:var(--meteo-ink);flex-shrink:0}.meteo-day-icon{width:18px;height:18px;color:var(--meteo-ink);flex-shrink:0}.meteo-day-temps{font-size:var(--meteo-text-lg);flex:1;align-items:baseline;gap:4px;display:flex}.meteo-tmax{color:var(--meteo-ink)}.meteo-tmin{color:var(--meteo-ink-2);font-size:var(--meteo-text-sm)}.meteo-day-right{font-size:var(--meteo-text-sm);flex-direction:column;flex-shrink:0;align-items:flex-end;gap:1px;display:flex}.meteo-day-rain{color:var(--blue-text)}.meteo-day-wind{color:var(--meteo-ink-2)}.meteo-detail{flex:1;min-height:0;padding:7px 10px 10px;overflow-y:auto}.meteo-chart-head{font-size:var(--meteo-label);letter-spacing:.12em;text-transform:uppercase;color:var(--meteo-ink-2);justify-content:space-between;align-items:baseline;margin:8px 0 2px;display:flex}.meteo-chart-head:first-child{margin-top:0}.meteo-chart-head span:last-child{font-size:var(--meteo-text-sm);letter-spacing:0;text-transform:none;color:var(--meteo-ink)}.meteo-chart{background:var(--surface2);border:1px solid var(--border);border-radius:3px;overflow:hidden}.meteo-chart-stack{position:relative}.meteo-chart-overlay{pointer-events:none;position:absolute;inset:0}.meteo-sparkline{width:100%;display:block}.meteo-axis{font-size:var(--meteo-label);color:var(--meteo-ink-2);justify-content:space-between;margin-top:1px;padding:0 1px;display:flex}.meteo-forecast-error{padding:10px}.meteo-forecast-error p{font-size:var(--meteo-text);color:var(--red-text);margin:0 0 6px}.meteo-forecast-error button{border:1px solid var(--border);background:var(--surface2);color:var(--meteo-ink);font-size:var(--meteo-text-sm);cursor:pointer;border-radius:4px;padding:3px 8px}.meteo-city{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;min-height:0;padding:16px;display:flex;overflow-y:auto}.meteo-city>.module-notice-sub{max-width:42ch}.meteo-city>.meteo-city-search,.meteo-city>.meteo-city-list{box-sizing:border-box;width:100%;max-width:340px}.meteo-city-search{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.meteo-city-hint{font-size:var(--meteo-text);color:var(--meteo-ink-2);margin:0;line-height:1.5}.meteo-city-error{font-size:var(--meteo-text);color:var(--red-text);margin:0}.meteo-city-input{box-sizing:border-box;border:1px solid var(--border);background:var(--surface2);width:100%;color:var(--meteo-ink);font-size:var(--meteo-text-lg);border-radius:6px;padding:7px 10px}.meteo-city-input:focus{border-color:var(--border2);outline:none}.meteo-city-list{border:1px solid var(--border);border-radius:6px;margin:0;padding:0;list-style:none;overflow:hidden}.meteo-city-item{border:none;border-bottom:1px solid var(--border);width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:baseline;gap:10px;padding:7px 10px;transition:background .12s;display:flex}.meteo-city-item:hover{background:var(--surface2)}.meteo-city-name{font-size:var(--meteo-text);color:var(--meteo-ink)}.meteo-city-coords{font-size:var(--meteo-text-sm);color:var(--meteo-ink-2);flex-shrink:0}.meteo-map-wrap{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.meteo-map-area{flex:1;position:relative;overflow:hidden}.meteo-map{position:absolute;inset:0}.meteo-map-badge{z-index:500;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:var(--meteo-text-sm);letter-spacing:.08em;text-transform:uppercase;color:#ffffffd9;pointer-events:none;background:#000000b8;border:1px solid #ffffff14;border-radius:5px;padding:2px 6px;position:absolute;top:8px;left:8px}.meteo-map-badge.nowcast{color:var(--green-text);background:#2ecc7114;border-color:#2ecc7133}.meteo-legend{z-index:500;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;background:#000000b8;border:1px solid #ffffff14;border-radius:5px;flex-direction:column;gap:3px;padding:5px 7px;display:flex;position:absolute;bottom:8px;right:8px}@media (prefers-contrast:more){.meteo-map-badge,.meteo-map-badge.nowcast,.meteo-legend{-webkit-backdrop-filter:none;backdrop-filter:none;background:#000;border-color:#fff6}}.meteo-legend-label{font-size:var(--meteo-label);letter-spacing:.1em;text-transform:uppercase;color:#ffffffbf}.meteo-legend-bar{background:linear-gradient(90deg,#0f0,#0ff,#00f,#f0f,red);border-radius:2px;width:96px;height:5px}.meteo-legend-scale{width:96px;font-size:var(--meteo-label);color:#ffffffbf;justify-content:space-between;display:flex}.meteo-controls{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:8px;padding:6px 12px;display:flex}.meteo-btn{width:var(--btn-size-sm);height:var(--btn-size-sm);border:1px solid var(--border);background:var(--surface2);color:var(--meteo-ink);cursor:pointer;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,border-color .15s,background .15s,transform .1s ease-out;display:flex}.meteo-btn:active:not(:disabled){border-color:var(--border2);transform:scale(.96)}.meteo-btn svg{width:var(--btn-glyph-sm);height:var(--btn-glyph-sm)}.meteo-btn:hover:not(:disabled){border-color:var(--border2);color:var(--meteo-ink)}.meteo-btn.on{color:var(--blue-text);background:#4a9eff26;border-color:#4a9eff59}.meteo-btn:disabled{opacity:.3;cursor:default}.meteo-timeline{flex:1;align-items:center;gap:2px;display:flex;overflow:hidden}.meteo-dot{--meteo-dot-c:#4a9eff40;background:var(--meteo-dot-c);cursor:pointer;border:none;border-radius:2px;flex:1;min-width:2px;height:4px;padding:0;transition:opacity .1s}.meteo-dot.sel{--meteo-dot-c:var(--blue)}.meteo-dot.nowcast{--meteo-dot-c:#2ecc7133}.meteo-dot.nowcast.sel{--meteo-dot-c:var(--green)}.meteo-dot:hover,.meteo-dot:active{opacity:.65}.meteo-frame-time{text-align:right;width:104px;font-size:var(--meteo-text-sm);color:var(--meteo-ink-2);flex-shrink:0}.meteo-fullscreen{z-index:900;background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0}.meteo-fullscreen-body{flex:1;min-height:0;padding:8px}.meteo-fullscreen .meteo-card{height:100%}.metar-screen-body{justify-content:center;align-items:center;display:flex}.metar-screen{--metar-title:var(--fs-title3);--metar-text:var(--fs-body);--metar-name:var(--fs-callout);--metar-label:var(--fs-subheadline);--metar-row-gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);width:min(420px,100%);padding:24px}@media (width<=768px),(height<=500px){.meteo-card:not(.expanded) .meteo-metar{display:flex}.meteo-btn{border-radius:var(--radius-md);width:44px;height:44px}.meteo-btn svg{width:var(--btn-glyph);height:var(--btn-glyph)}.meteo-change-city,.meteo-city-cancel{min-height:44px;padding:0 14px}.meteo-dot{height:var(--pointer-target);background:linear-gradient(var(--meteo-dot-c), var(--meteo-dot-c)) center / 100% 4px no-repeat}}.rack-flights{--fl-panel-w:var(--module-panel-w);--fl-text:var(--fs-callout);--fl-text-sm:var(--fs-subheadline);--fl-label:var(--fs-footnote);--fl-ink:var(--text);--fl-ink-2:var(--text-secondary);isolation:isolate;z-index:0;background:var(--surface);border:1px solid var(--border);height:100%;min-height:0;box-shadow:var(--card-shadow);border-radius:12px;flex-direction:column;display:flex;position:relative;overflow:hidden}.fl-count{font-size:var(--fl-text-sm);letter-spacing:.1em;text-transform:uppercase;color:var(--fl-ink-2);margin-left:auto}.fl-error{font-size:var(--fl-text-sm);color:var(--red-text);margin:0;padding:6px 16px}.fl-body{flex:1;min-height:0;display:flex;overflow:hidden}.fl-panel{width:var(--fl-panel-w);background:var(--bg);border-right:1px solid var(--border);transition:width .2s var(--ease-out-swift);flex-shrink:0;overflow:hidden}.fl-panel.collapsed{border-right:none;width:0}.fl-panel-inner{height:100%;width:var(--fl-panel-w);flex-direction:column;min-height:0;display:flex;overflow:hidden}.fl-controls{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:10px 12px;display:flex}.fl-slider{flex-direction:column;gap:4px;display:flex}.fl-slider-label{font-size:var(--fl-label);letter-spacing:.08em;text-transform:uppercase;color:var(--fl-ink-2)}.fl-slider-label b{color:var(--fl-ink);font-weight:500}.fl-slider input{width:100%;accent-color:var(--blue)}.fl-list{flex:1;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}.fl-row{border:none;border-bottom:1px solid var(--border);width:100%;font-size:var(--fl-text);color:var(--fl-ink);text-align:left;cursor:pointer;background:0 0;align-items:baseline;gap:8px;padding:5px 12px;display:flex}.fl-row:hover{background:var(--surface2)}.fl-row.sel{background:#4a9eff1f}.fl-row-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.fl-row-dist,.fl-row-alt{font-size:var(--fl-text-sm);color:var(--fl-ink-2)}.fl-empty{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;padding:16px;display:flex}.fl-detail{border-top:1px solid var(--border);font-size:var(--fl-text-sm);flex-direction:column;gap:3px;margin:0;padding:8px 12px;display:flex}.fl-detail>div{justify-content:space-between;gap:8px;display:flex}.fl-detail dt{color:var(--fl-ink-2)}.fl-detail dd{color:var(--fl-ink);margin:0}.fl-map-area{flex:1;min-width:0;position:relative;overflow:hidden}.fl-map{position:absolute;inset:0}.fl-map-alert{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;min-width:0;padding:24px;display:flex}.fl-map-alert-label{letter-spacing:.12em;color:var(--muted);text-transform:uppercase;font-size:.846154rem;line-height:1.4}.fl-map-alert-value{letter-spacing:.08em;color:var(--red-text);font-size:1.38462rem;line-height:1.4}.fl-map-alert-sub{color:var(--muted);max-width:420px;font-size:.923077rem;line-height:1.5}.fl-plane{width:22px;height:22px;color:var(--blue);filter:drop-shadow(0 0 3px #0009);display:block}.fl-plane svg{width:100%;height:100%;display:block}.fl-plane.sel{color:var(--orange)}@media (width<=600px){.fl-map-alert{padding:16px}.meteo-body,.fl-body{flex-direction:column}.meteo-panel,.fl-panel{border-right:none;border-bottom:1px solid var(--border);width:100%;height:42%;transition:height .2s var(--ease-out-swift)}.meteo-panel.collapsed,.fl-panel.collapsed{border-bottom:none;width:100%;height:0}.meteo-panel-inner,.fl-panel-inner{width:100%}.meteo-map-area,.fl-map-area{border-radius:0 0 var(--radius-lg) var(--radius-lg)}}:root{--screen-bar-height:38px}.screen-bar{flex:0 0 var(--screen-bar-height);align-items:center;gap:var(--gap-sm);background:var(--surface);border-bottom:1px solid var(--border);padding:0 8px;display:flex}.screen-bar-spacer{flex:1}.screen-bar-sep{width:1px;height:16px;margin:0 var(--gap-xs);background:var(--border);flex:none}.screen-bar-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);white-space:nowrap;margin-right:8px;font-size:.846154rem}.screen-bar-btn{width:var(--btn-size-sm);height:var(--btn-size-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface2);color:var(--text-secondary);font-size:var(--btn-glyph-sm);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}.screen-bar-btn svg{width:var(--btn-glyph-sm);height:var(--btn-glyph-sm)}.screen-bar-btn:hover{color:var(--text);border-color:var(--text-secondary)}.screen-bar-btn.is-on{color:var(--accent);border-color:var(--accent)}.screen-bar-btn[aria-expanded=true]{color:var(--text);border-color:var(--text-secondary)}.screen-bar-close{height:var(--btn-size-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface2);color:var(--text-secondary);letter-spacing:.06em;cursor:pointer;padding:0 10px;font-size:.846154rem;transition:color .15s,border-color .15s}.screen-bar-close:hover{color:var(--red-text);border-color:var(--red-text)}.screen-bar-btn,.screen-bar-close{position:relative}.screen-bar-btn:after,.screen-bar-close:after{content:"";inset:calc((var(--btn-size-sm) - 2px - var(--pointer-target)) / 2);position:absolute}.screen-bar-btn:active,.screen-bar-close:active{color:var(--text);border-color:var(--text-secondary)}.screen-bar-btn:focus-visible,.screen-bar-close:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.modal-veil{z-index:var(--z-modal);padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));background:var(--veil-bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-panel{border:1px solid var(--border2);background:var(--material-modal-bg);-webkit-backdrop-filter:var(--material-modal-blur);backdrop-filter:var(--material-modal-blur);animation:popIn var(--transition-pop) var(--ease-out-swift);border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.modal-head{justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--fs-title3);color:var(--text);margin:0;font-weight:600}.modal-close{width:var(--pointer-target);height:var(--pointer-target);color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;padding:0;display:grid}.modal-close:hover{color:var(--text)}.modal-close:active{transform:scale(.95)}.modal-close svg{width:16px;height:16px}@media (width<=768px),(height<=500px){.modal-close{width:44px;height:44px;margin:-8px -8px -8px 0}}@media (prefers-reduced-motion:reduce){.modal-panel{animation:none}.modal-close:active{transform:none}}@media (prefers-reduced-transparency:reduce){.modal-panel{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.modal-panel{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none;border-color:var(--text)}}.changelog-panel{width:min(520px,100%);max-height:min(600px,100%)}.changelog-body{overflow-anchor:none;flex-direction:column;gap:20px;padding-right:4px;display:flex;overflow-y:auto}.changelog-entry-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 8px;padding-bottom:8px;display:flex}.changelog-entry-version{font-size:var(--fs-callout);color:var(--text);font-weight:600}.changelog-entry-date{font-size:var(--fs-footnote);color:var(--faint)}.changelog-group{font-size:var(--fs-caption);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:12px 0 4px;font-weight:600}.changelog-group:first-of-type{margin-top:0}.changelog-list{font-size:var(--fs-callout);color:var(--text-secondary);flex-direction:column;gap:6px;margin:0;padding-left:18px;line-height:1.45;display:flex}.feedback-panel{width:min(440px,100%)}.feedback-hint{font-size:var(--fs-callout);color:var(--muted);margin:0}.feedback-message,.feedback-contact{border:1px solid var(--border2);background:var(--surface);width:100%;color:var(--text);font-size:var(--fs-body);border-radius:6px;padding:8px 10px}.feedback-message{resize:vertical;min-height:120px}.feedback-message::placeholder,.feedback-contact::placeholder{color:var(--faint)}.feedback-error{min-height:1.07692rem;font-size:var(--fs-callout);color:var(--red-text)}.feedback-send{align-self:flex-end}.feedback-sent{flex-direction:column;gap:12px;display:flex}.feedback-sent-text{font-size:var(--fs-body);color:var(--text);margin:0}:root{--accent:var(--blue)}.kiosk{flex-direction:column;height:100dvh;display:flex}.kiosk-body{height:calc(100dvh - var(--screen-bar-height))}.kiosk-focus{flex:1;min-height:0}.web-bar{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.web-bar-site{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}.web-bar-dot{background:var(--red);border-radius:50%;flex:none;align-self:center;width:8px;height:8px}.web-bar-dot.live{background:var(--green)}.web-bar-name{font-size:var(--fs-title3);color:var(--text);font-weight:600}.web-bar-state{font-size:var(--fs-footnote);color:var(--muted)}.web-bar-actions{flex:none;align-items:center;gap:8px;display:flex}.web-bar-actions .rack-config-btn{min-height:28px}@media (pointer:coarse){.web-bar-actions .rack-config-btn{min-height:44px}}.web-checking{min-height:100vh}.web-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:100vh;padding:32px 16px;display:flex}.web-empty-title{font-size:var(--fs-title2);color:var(--text);font-weight:600}.web-empty-detail{font-size:var(--fs-callout);color:var(--text-secondary)}@media (width<=768px){.web-bar{flex-wrap:wrap;padding:8px 16px}.web-page{padding:16px}}
