.login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172aeb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;z-index:9999;padding:1rem}.login-card{width:min(420px,100%);background:#fff;border-radius:16px;padding:2rem 1.75rem;box-shadow:0 20px 60px #00000059;display:flex;flex-direction:column;gap:.75rem;font-family:-apple-system,system-ui,sans-serif;color:#1f2937}.login-header{display:flex;justify-content:space-between;align-items:baseline;font-size:.85rem;color:#6b7280}.login-brand{font-weight:600;letter-spacing:.05em;text-transform:uppercase}.login-site{font-style:italic}.login-title{margin:.25rem 0 0;font-size:1.5rem;font-weight:600}.login-hint{margin:0 0 .75rem;font-size:.85rem;line-height:1.45;color:#4b5563}.login-label{font-size:.8rem;font-weight:500;color:#374151;margin-bottom:-.25rem}.login-input{border:1px solid #d1d5db;border-radius:8px;padding:.6rem .75rem;font-size:1rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em;outline:none;transition:border-color .15s,box-shadow .15s}.login-input:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f12e}.login-error{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;border-radius:8px;padding:.55rem .75rem;font-size:.85rem}.login-submit{margin-top:.5rem;background:#4f46e5;color:#fff;border:none;border-radius:10px;padding:.7rem;font-size:1rem;font-weight:500;cursor:pointer;transition:background .15s,opacity .15s}.login-submit:hover:not(:disabled){background:#4338ca}.login-submit:disabled{opacity:.55;cursor:not-allowed}.login-checkbox{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#4b5563;cursor:pointer;-webkit-user-select:none;user-select:none}.login-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:#4f46e5;cursor:pointer}.login-link{margin-top:.5rem;background:none;border:none;padding:.25rem 0;font-size:.8rem;color:#6b7280;cursor:pointer;text-align:center;text-decoration:underline;text-underline-offset:2px}.login-link:hover:not(:disabled){color:#1f2937}.login-link:disabled{opacity:.5;cursor:not-allowed}.nav{display:flex;align-items:center;gap:var(--gap-lg);padding:10px 16px;background:var(--bg-panel);border-radius:var(--radius-panel);margin-bottom:var(--gap-md);box-shadow:var(--shadow-panel);position:relative}.nav__brand{display:flex;align-items:baseline;gap:8px;font-weight:700;color:var(--text-primary)}.nav__site{color:var(--text-secondary);font-weight:400;font-size:.95em}.nav__links{display:flex;align-items:center;gap:4px;margin-left:auto}.nav__link{padding:6px 14px;background:none;border:none;border-bottom:2px solid transparent;font:inherit;color:var(--text-secondary);cursor:pointer;border-radius:0;transition:color .12s ease,border-color .12s ease,background .12s ease}.nav__link:hover{color:var(--text-primary);background:#0f172a0a;border-radius:6px 6px 0 0}.nav__link.is-active{color:var(--text-primary);font-weight:700;border-bottom-color:var(--accent-primary)}.nav__logout{margin-left:8px;padding:6px 14px;background:transparent;border:1px solid rgba(15,23,42,.12);border-radius:6px;color:var(--text-secondary);cursor:pointer;font:inherit;transition:border-color .12s ease,color .12s ease}.nav__logout:hover{color:var(--text-primary);border-color:#0f172a40}.nav__hamburger{display:none;margin-left:auto;padding:6px 10px;background:none;border:1px solid rgba(15,23,42,.12);border-radius:6px;cursor:pointer;font-size:1.1em}@media (max-width: 720px){.nav__hamburger{display:inline-block}.nav__links{display:none;position:absolute;top:100%;right:12px;margin:6px 0 0;flex-direction:column;align-items:stretch;padding:8px;gap:4px;background:var(--bg-panel);border-radius:var(--radius-panel);box-shadow:0 8px 20px #0f172a1f;min-width:180px;z-index:10}.nav__links.is-open{display:flex}.nav__link{text-align:left;border-bottom:none;border-left:3px solid transparent;padding:8px 12px}.nav__link.is-active{border-bottom:none;border-left-color:var(--accent-primary);background:#16a34a14;border-radius:6px}.nav__logout{margin-left:0;margin-top:4px}}.panel{background:var(--bg-panel);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);display:flex;flex-direction:column}.hero-row{flex:0 0 auto;display:grid;grid-template-columns:1fr 220px 220px 220px;gap:var(--gap-md);height:clamp(360px,55vh,900px)}@media (max-width: 1100px),(max-height: 580px){.hero-row{display:contents;height:auto}.panel-flow{aspect-ratio:800 / 580;min-height:280px}.panel-flow{order:1}.panel-chart{order:2}.panel-kpi{order:3}.panel-controls{order:4}}.panel-flow{padding:0 0 6px;overflow:hidden}.panel-flow .last-update{font-size:11px;color:var(--text-secondary);padding:8px 14px 0;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-flow .logout-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px 4px 10px;border-radius:var(--radius-pill);background:var(--bg-panel);border:1px solid #e5e7eb;color:var(--text-secondary);font-family:inherit;font-size:11px;font-weight:500;letter-spacing:.01em;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s ease,border-color .15s ease,background .15s ease,box-shadow .15s ease,transform .05s ease;box-shadow:var(--shadow-panel)}.panel-flow .logout-pill svg{flex-shrink:0;opacity:.85;transition:opacity .15s ease,transform .15s ease}.panel-flow .logout-pill:hover{color:var(--text-primary);border-color:#d1d5db;background:#f9fafb;box-shadow:0 2px 6px #0f172a14}.panel-flow .logout-pill:hover svg{opacity:1;transform:translate(1px)}.panel-flow .logout-pill:active{transform:translateY(.5px);box-shadow:0 1px 2px #0f172a0d}.panel-flow .logout-pill:focus-visible{outline:2px solid #6366f1;outline-offset:2px}.flow-svg{flex:1 1 0;min-height:0;width:100%;height:100%;display:block}.panel-kpi{padding:0;gap:var(--gap-sm);display:flex;flex-direction:column;background:transparent;box-shadow:none}.kpi-tile{flex:1 1 0;min-height:0;background:var(--bg-panel);border-radius:var(--radius-tile);padding:8px 12px;display:flex;flex-direction:column;justify-content:center;box-shadow:var(--shadow-panel);position:relative;overflow:hidden}.kpi-tile:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:2px;background:var(--accent, var(--text-tertiary))}.kpi-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}.kpi-value{font-size:24px;font-weight:700;color:var(--text-primary);line-height:1.15}.kpi-value.small{font-size:15px}.kpi-value .unit{font-size:13px;font-weight:500;color:var(--text-tertiary);margin-left:2px}.kpi-sub{font-size:12px;color:var(--text-secondary);margin-top:3px}.kpi-sub.up{color:#16a34a}.kpi-sub.down{color:#dc2626}.kpi-area{display:contents}@media (max-width: 1100px),(max-height: 580px){.kpi-area{display:grid;grid-template-columns:1fr 1fr;gap:8px;order:3}.panel-kpi{display:contents}.panel-kpi .kpi-tile{flex:0 0 auto;min-height:80px}.kpi-value{font-size:20px}.kpi-value.small{font-size:14px}}.panel-chart{flex:1 1 0;min-height:0;padding:8px 14px}.panel-chart.combine{flex:1 1 0}.chart-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px;flex:0 0 auto}.chart-toolbar h3{font-size:13px;font-weight:600;color:var(--text-primary)}.chart-toolbar .toolbar-right{font-size:11px;color:var(--text-secondary);display:flex;gap:var(--gap-lg);align-items:center}.toolbar-btn{padding:3px 10px;border-radius:6px;border:1px solid #e5e7eb;background:var(--bg-panel);cursor:pointer;font-size:11px;color:#4b5563}.toolbar-btn.active{background:#fff7ed;color:#f97316;border-color:#fdba74}.toolbar-segment{display:inline-flex;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.toolbar-segment .toolbar-btn{border:none;border-radius:0}.toolbar-segment .toolbar-btn+.toolbar-btn{border-left:1px solid #e5e7eb}.chart-canvas{flex:1 1 0;min-height:160px;width:100%}@media (max-width: 1100px),(max-height: 580px){.panel-chart{min-height:380px;max-width:100%;overflow:hidden}.chart-canvas{min-height:280px}.toolbar-btn{padding:7px 14px;font-size:12px}.legend-bar{font-size:10px;gap:4px 10px;max-width:100%;padding:4px 8px 0;overflow:hidden}.legend-item{font-size:10px}}.legend-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 12px;padding:3px 6px 0;font-size:10px;color:#4b5563;flex:0 0 auto}.legend-item{display:inline-flex;align-items:center;gap:4px}.legend-line{width:16px;height:2px;border-radius:1px}.legend-swatch{width:11px;height:11px;border-radius:3px}.legend-dashed{width:16px;height:0;border-top:1.6px dashed currentColor}.legend-dotted{width:16px;height:0;border-top:1.6px dotted currentColor;opacity:.65}.panel-controls{padding:0;gap:var(--gap-sm);display:flex;flex-direction:column;background:transparent;box-shadow:none;overflow:hidden}.control-tile{flex:1 1 0;min-height:0;background:var(--bg-panel);border-radius:var(--radius-tile);padding:6px 10px 6px 14px;display:flex;flex-direction:column;justify-content:center;gap:5px;box-shadow:var(--shadow-panel);position:relative;overflow:hidden}.control-tile:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:2px;background:var(--accent, var(--text-tertiary))}.control-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.control-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.control-status{font-size:11px;font-weight:600;color:var(--text-primary)}.control-body{display:flex;flex-direction:column;gap:4px;align-items:stretch}.control-row{display:flex;gap:5px;align-items:center}.control-row .ctl-btn{flex:1 1 auto}.ctl-segment{display:flex;border:1px solid var(--border-subtle, #e5e7eb);border-radius:6px;overflow:hidden}.ctl-segment .ctl-btn{border:none;border-radius:0;padding:5px 4px;font-size:11px;flex:1 1 0;min-width:0}.ctl-segment .ctl-btn+.ctl-btn{border-left:1px solid var(--border-subtle, #e5e7eb)}.control-hint{font-size:11px;color:var(--text-tertiary);margin-top:2px}.ctl-btn{width:100%;padding:5px 10px;border:1px solid var(--border-subtle, #e5e7eb);border-radius:6px;background:#fff;color:var(--text-primary);font-size:12px;font-weight:600;cursor:pointer;transition:background 80ms,border-color 80ms;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ctl-btn:hover{background:#f9fafb}.ctl-btn:disabled{opacity:.4;cursor:not-allowed}.ctl-btn:disabled:hover{background:#fff}.ctl-btn.active{background:var(--accent, #2563eb);border-color:var(--accent, #2563eb);color:#fff}.ctl-btn.danger{border-color:#fecaca;color:#b91c1c}.ctl-btn.danger:hover{background:#fef2f2}.ctl-input{flex:0 1 60px;min-width:0;padding:4px 6px;border:1px solid var(--border-subtle, #e5e7eb);border-radius:5px;font-size:12px;text-align:right}.ctl-select{flex:1 1 0;min-width:0;padding:3px 4px;border:1px solid var(--border-subtle, #e5e7eb);border-radius:5px;font-size:12px;background:#fff;color:var(--text-primary);cursor:pointer}.ctl-select:disabled{opacity:.4;cursor:not-allowed}.ctl-suffix{font-size:11px;color:var(--text-secondary);white-space:nowrap;flex:0 0 auto}.control-hint{display:none}@media (max-width: 1100px),(max-height: 580px){.panel-controls{overflow:visible;gap:8px}.panel-controls .control-tile{flex:0 0 auto;min-height:auto;padding:12px 14px}.ctl-btn{padding:10px 12px;font-size:13px}.ctl-input,.ctl-select{padding:8px 10px;font-size:13px}.control-label,.control-status{font-size:12px}}.ems-mode-tile{position:relative;background:var(--bg-panel);border-radius:var(--radius-tile);padding:8px 12px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-panel);border:1px solid transparent;transition:border-color .2s,box-shadow .2s;flex:0 0 auto}.ems-mode-tile.is-active{border-color:#16a34a59;box-shadow:0 1px 2px #0f172a0a,0 0 0 1px #16a34a1f}.ems-mode-tile.is-safe{border-color:#f59e0b40}.ems-mode-tile__header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ems-mode-tile__label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-weight:700;display:inline-flex;align-items:center;gap:6px}.ems-mode-tile__dot{width:8px;height:8px;border-radius:50%;background:var(--zbs-amber);box-shadow:0 0 0 3px var(--zbs-amber-soft);flex-shrink:0}.ems-mode-tile.is-active .ems-mode-tile__dot{background:var(--zbs-green);box-shadow:0 0 0 3px var(--zbs-green-soft);animation:ems-pulse 2s ease-in-out infinite}@keyframes ems-pulse{0%,to{box-shadow:0 0 0 3px var(--zbs-green-soft)}50%{box-shadow:0 0 0 5px #16a34a2e}}.ems-mode-tile__status{font-size:10px;color:var(--text-tertiary);font-family:var(--font-mono);text-align:right}.ems-mode-tile__switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:3px;background:var(--bg-soft);border-radius:8px;border:1px solid var(--border-line)}.ems-mode-tile__btn{display:flex;flex-direction:column;gap:1px;padding:6px 6px 5px;border:none;border-radius:6px;background:transparent;font:inherit;cursor:pointer;transition:background .12s,color .12s,transform 80ms;color:var(--text-secondary)}.ems-mode-tile__btn-label{font-size:12px;font-weight:800;letter-spacing:.08em}.ems-mode-tile__btn-sub{font-size:9.5px;color:var(--text-tertiary);letter-spacing:.02em}.ems-mode-tile__btn:hover:not(.is-active):not(:disabled){background:#0f172a08;color:var(--text-primary)}.ems-mode-tile__btn--safe.is-active{background:var(--zbs-amber);color:#fff}.ems-mode-tile__btn--safe.is-active .ems-mode-tile__btn-sub{color:#ffffffc7}.ems-mode-tile__btn--active.is-active{background:var(--zbs-green);color:#fff}.ems-mode-tile__btn--active.is-active .ems-mode-tile__btn-sub{color:#ffffffd1}.ems-mode-tile__btn:disabled{opacity:.55;cursor:not-allowed}.ems-mode-tile__hint{font-size:10.5px;color:var(--text-tertiary)}.ems-mode-tile__error{font-size:11px;color:#b91c1c;padding:4px 8px;background:var(--accent-fail-soft);border-radius:4px}.ems-mode-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;z-index:110;display:flex;align-items:center;justify-content:center;padding:16px}.ems-mode-modal{background:var(--bg-panel);border-radius:var(--radius-panel);padding:22px;max-width:460px;width:100%;box-shadow:0 20px 60px #0f172a4d;display:flex;flex-direction:column;gap:14px}.ems-mode-modal__title{margin:0;font-size:16px;font-weight:700}.ems-mode-modal__body{margin:0;font-size:13px;line-height:1.5;color:var(--text-secondary)}.ems-mode-modal__warning{padding:12px 14px;background:var(--accent-fail-soft);border-left:4px solid var(--accent-fail);border-radius:6px;color:#7f1d1d;font-size:13px;line-height:1.4}.ems-mode-modal__warning strong{color:#991b1b}.ems-mode-modal__actions{display:flex;gap:8px;justify-content:flex-end}.ctl-logout{margin-top:12px;align-self:center;background:transparent;border:1px solid var(--border-subtle, #e5e7eb);border-radius:6px;padding:6px 14px;font-size:12px;color:#6b7280;cursor:pointer;transition:background .15s,color .15s}.ctl-logout:hover{background:#f3f4f6;color:#111827}.settings-page{display:flex;flex-direction:column;gap:var(--gap-md)}.settings-page__error{color:#991b1b;background:var(--accent-fail-soft)}.settings-form-layout{display:grid;grid-template-columns:220px 1fr;gap:var(--gap-md);align-items:flex-start}.settings-form__rail{position:sticky;top:12px;display:flex;flex-direction:column;gap:6px}.settings-form__stream{display:flex;flex-direction:column;gap:var(--gap-md);min-width:0}.section-nav{background:var(--bg-panel);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);padding:8px;display:flex;flex-direction:column;gap:2px}.section-nav__item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;background:none;border:none;font:inherit;font-size:13px;color:var(--text-secondary);cursor:pointer;text-align:left;position:relative;transition:background .12s,color .12s}.section-nav__item:hover{background:var(--bg-soft);color:var(--text-primary)}.section-nav__item.is-active{background:var(--zbs-green-soft);color:var(--zbs-green-dark);font-weight:600}.section-nav__item.is-active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--accent-primary);border-radius:0 2px 2px 0}.section-nav__label{flex:1 1 auto}.section-nav__dot{width:7px;height:7px;border-radius:50%;background:transparent;flex-shrink:0}.section-nav__item.has-dirty .section-nav__dot{background:var(--accent-warn);box-shadow:0 0 0 3px #f59e0b2e}.section-nav__group{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-weight:700;padding:10px 12px 4px}.settings-form__advanced-toggle{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);padding:8px 12px;background:var(--bg-panel);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);cursor:pointer;-webkit-user-select:none;user-select:none}.settings-block{padding:14px 18px;scroll-margin-top:12px}.settings-block__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px 18px;align-items:flex-start}.settings-block__grid--advanced{margin-top:6px;padding-top:12px;border-top:1px dashed rgba(15,23,42,.12)}.settings-field{background:var(--bg-soft);border-radius:var(--radius-tile);border:1px solid var(--border-line);padding:10px 12px 10px 14px;position:relative;display:flex;flex-direction:column;gap:4px;transition:background .12s,border-color .12s}.settings-field:before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 2px 2px 0;background:var(--text-tertiary);opacity:.35}.settings-field.is-active:before{background:var(--accent-primary);opacity:1}.settings-field.is-dirty:before{background:var(--accent-warn);opacity:1}.settings-field.is-error:before{background:var(--accent-fail);opacity:1}.settings-field.is-dirty{background:#fffbeb;border-color:#f59e0b59}.settings-field.is-error{background:var(--accent-fail-soft);border-color:#dc262659}.settings-field__label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center;gap:6px}.settings-field__row{display:flex;align-items:baseline;gap:6px}.settings-field__num-input{flex:1 1 auto;border:none;background:transparent;outline:none;padding:0;width:100%;font-family:var(--font-mono);font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text-primary);line-height:1.15;min-width:0}.settings-field__num-input::-webkit-outer-spin-button,.settings-field__num-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.settings-field__num-input{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.settings-field__unit{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--text-tertiary);flex-shrink:0}.settings-field__sub{font-family:var(--font-mono);font-size:10px;color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-top:2px}.settings-field__help{font-size:11px;color:var(--text-secondary);line-height:1.4;margin-top:4px}.settings-field__error{font-size:11px;color:#b91c1c;font-weight:600;margin-top:2px}.settings-field--seg .settings-field__choices,.settings-field--bool .settings-field__choices{display:flex;gap:4px;padding:2px;background:#fff;border-radius:8px;border:1px solid var(--border-soft);margin-top:4px;flex-wrap:wrap}.settings-field__choice{flex:1 1 auto;padding:7px 10px;border:none;border-radius:6px;background:transparent;font:inherit;font-size:12px;font-weight:600;color:var(--text-secondary);cursor:pointer;text-align:center;min-width:80px;transition:background .12s,color .12s}.settings-field__choice:hover:not(.is-active){background:var(--bg-soft);color:var(--text-primary)}.settings-field__choice.is-active{background:var(--accent-primary);color:#fff}.settings-field--critical .settings-field__choice[data-mode=active]{color:#b91c1c}.settings-field--critical .settings-field__choice[data-mode=active].is-active{background:var(--accent-fail);color:#fff}.settings-field--critical .settings-field__choice[data-mode=safe].is-active{background:var(--accent-primary);color:#fff}.soc-visual{grid-column:1 / -1;display:flex;flex-direction:column;gap:8px;padding:12px 14px;background:var(--bg-soft);border:1px solid var(--border-line);border-radius:var(--radius-tile)}.soc-visual__header{display:flex;align-items:center;gap:10px}.soc-visual__label{font-size:11px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.soc-visual__empty{font-size:12px;color:var(--text-tertiary);margin:0;font-style:italic}.soc-visual__bar{position:relative;height:28px;border-radius:14px;background:linear-gradient(90deg,#fee2e2 0%,#fee2e2 var(--p-min, 25%),#fef3c7 var(--p-min, 25%),#fef3c7 var(--p-emer, 35%),#d1fae5 var(--p-emer, 35%),#d1fae5 var(--p-exp, 50%),var(--zbs-green) var(--p-exp, 50%),var(--zbs-green) var(--p-max, 95%),#fee2e2 var(--p-max, 95%),#fee2e2 100%);border:1px solid var(--border-soft)}.soc-visual__marker{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--text-primary);border-radius:1px}.soc-visual__marker:after{content:attr(data-label);position:absolute;bottom:-22px;left:50%;transform:translate(-50%);font-family:var(--font-mono);font-size:10px;font-variant-numeric:tabular-nums;color:var(--text-secondary);white-space:nowrap}.soc-visual__legend{display:flex;flex-wrap:wrap;gap:14px;padding-top:22px;font-size:11px;color:var(--text-secondary);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.soc-visual__legend span{display:inline-flex;align-items:center;gap:4px}.soc-visual__legend span:before{content:"";width:8px;height:8px;border-radius:2px}.soc-visual__legend .l-floor:before{background:#fca5a5}.soc-visual__legend .l-emer:before{background:#fcd34d}.soc-visual__legend .l-exp:before{background:#6ee7b7}.soc-visual__legend .l-active:before{background:var(--zbs-green)}.save-bar{position:sticky;bottom:12px;display:flex;align-items:center;gap:14px;padding:10px 16px;background:var(--bg-panel);border-radius:var(--radius-panel);border:1px solid var(--border-line);box-shadow:0 -2px 8px #0f172a0f;flex-wrap:wrap}.save-bar__count{color:var(--text-secondary);font-size:13px}.save-bar__count strong{color:var(--text-primary);font-weight:700}.save-bar__error{color:#b91c1c;background:var(--accent-fail-soft);padding:4px 10px;border-radius:6px;font-size:12px}.save-bar__restart{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);cursor:pointer}.save-bar__restart input{cursor:pointer}.save-bar__actions{margin-left:auto;display:flex;gap:8px}.settings-form__overrides{padding:0}.settings-form__overrides>summary{list-style:none;cursor:pointer;padding:10px 16px;font-weight:600;font-size:13px;color:var(--text-primary);display:flex;align-items:center;gap:8px}.settings-form__overrides>summary::-webkit-details-marker{display:none}.settings-form__overrides>summary:before{content:"▸";color:var(--text-tertiary);font-size:10px;transition:transform .12s}.settings-form__overrides[open]>summary:before{transform:rotate(90deg)}.overrides-viewer__pre{background:#1f2937;color:#e5e7eb;padding:14px 16px;border-radius:0 0 var(--radius-panel) var(--radius-panel);font-family:var(--font-mono);font-size:12px;overflow-x:auto;white-space:pre;margin:0}.overrides-viewer__empty{color:var(--text-tertiary);font-style:italic;padding:8px 16px 16px;margin:0}.confirm-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.confirm-modal{background:#fff;border-radius:var(--radius-panel);padding:24px;max-width:560px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0f172a4d;display:flex;flex-direction:column;gap:14px}.confirm-modal__title{margin:0;font-size:16px;font-weight:700}.confirm-modal__warning{padding:12px 14px;background:var(--zbs-amber-soft);border-left:4px solid var(--accent-warn);border-radius:6px;color:#78350f;font-size:13px;line-height:1.4}.confirm-modal__warning code{background:#78350f1a;padding:1px 6px;border-radius:4px;font-family:var(--font-mono)}.confirm-modal__ack{display:flex;align-items:center;gap:8px;margin-top:8px;font-weight:600;cursor:pointer}.confirm-modal__ack input{width:18px;height:18px}.confirm-modal__changes{list-style:none;margin:0;padding:0;border:1px solid var(--border-line);border-radius:8px;overflow:hidden}.confirm-modal__change{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border-line);font-size:13px}.confirm-modal__change:last-child{border-bottom:none}.confirm-modal__key{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary)}.confirm-modal__arrow{color:var(--text-tertiary)}.confirm-modal__value{margin-left:auto;font-family:var(--font-mono);font-weight:700;color:var(--text-primary);background:#f1f5f9;padding:2px 8px;border-radius:4px}.confirm-modal__restart{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);cursor:pointer}.confirm-modal__error{color:#b91c1c;background:var(--accent-fail-soft);padding:8px 12px;border-radius:6px;font-size:12px}.confirm-modal__actions{display:flex;gap:8px;justify-content:flex-end}@media (max-width: 720px){.settings-form-layout{grid-template-columns:1fr}.settings-form__rail{position:static;flex-direction:row;overflow-x:auto;-webkit-overflow-scrolling:touch}.section-nav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;padding:6px}.section-nav__item{flex-shrink:0;padding:6px 10px}.section-nav__item.is-active:before{display:none}.section-nav__group,.settings-form__advanced-toggle{display:none}.settings-block__grid{grid-template-columns:1fr}.save-bar{flex-direction:column;align-items:stretch;gap:8px}.save-bar__actions{margin-left:0}}.tech-page{display:flex;flex-direction:column;gap:var(--gap-md)}.tech-hero-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--gap-md);align-items:stretch}.tech-hero-kpis .kpi-tile{min-height:76px;padding:10px 14px}@media (max-width: 1100px){.tech-hero-kpis{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}.tech-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-md)}.tech-row--three{grid-template-columns:1fr 1fr 1fr}@media (max-width: 1100px){.tech-row,.tech-row--three{grid-template-columns:1fr}}.tech-card{background:var(--bg-panel);border-radius:var(--radius-panel);padding:14px 18px;box-shadow:var(--shadow-panel);display:flex;flex-direction:column;gap:10px;min-width:0}.tech-card__header{display:flex;align-items:baseline;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--border-line);flex-wrap:wrap}.tech-card__title{margin:0;font-size:14px;font-weight:700;color:var(--text-primary);letter-spacing:-.01em}.tech-card__status{padding:2px 10px;border-radius:var(--radius-pill);font-size:11px;font-weight:600}.tech-card__status--ok{background:var(--zbs-green-soft);color:#065f46}.tech-card__status--warn{background:var(--zbs-amber-soft);color:#92400e}.tech-card__status--fail{background:var(--accent-fail-soft);color:#991b1b}.tech-card__status--info{background:var(--accent-info-soft);color:#155e75}.tech-card__actions{margin-left:auto;display:flex;gap:6px}.tech-card__body{display:flex;flex-direction:column;gap:10px}.tech-card__footer{font-size:12px;color:var(--text-tertiary)}.tech-card__loading{color:var(--text-tertiary);font-style:italic;margin:0}.tech-card__empty{color:var(--text-tertiary);margin:0;padding:6px 0;font-size:12px}.tech-card__error{color:#b91c1c;font-size:12px}.tech-card__hint{font-size:11px;color:#92400e;margin:6px 0 0;padding:6px 8px;background:var(--zbs-amber-soft);border-radius:6px}.tech-submetrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px 14px}.tech-submetrics--three{grid-template-columns:repeat(3,1fr)}@media (max-width: 720px){.tech-submetrics,.tech-submetrics--three{grid-template-columns:repeat(2,1fr)}}.submetric{background:var(--bg-soft);border-radius:8px;border:1px solid var(--border-line);padding:8px 10px 8px 12px;position:relative}.submetric:before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;background:var(--text-tertiary);border-radius:0 2px 2px 0;opacity:.35}.submetric.is-ok:before{background:var(--zbs-green);opacity:1}.submetric.is-warn:before{background:var(--zbs-amber);opacity:1}.submetric.is-fail:before{background:var(--accent-fail);opacity:1}.submetric__label{font-size:10px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-weight:700}.submetric__value{font-family:var(--font-mono);font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-primary);letter-spacing:-.01em;line-height:1.2;margin-top:2px}.submetric__unit{font-size:11px;color:var(--text-tertiary);font-weight:600;margin-left:2px}.submetric__sub{font-family:var(--font-mono);font-size:10px;color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-top:1px}.svc-list{display:flex;flex-direction:column;gap:4px}.svc{display:flex;align-items:center;gap:12px;padding:7px 10px;background:var(--bg-soft);border:1px solid var(--border-line);border-radius:8px}.svc__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.svc__dot--ok{background:var(--zbs-green);box-shadow:0 0 0 3px var(--zbs-green-soft)}.svc__dot--warn{background:var(--zbs-amber);box-shadow:0 0 0 3px var(--zbs-amber-soft)}.svc__dot--fail{background:var(--accent-fail);box-shadow:0 0 0 3px var(--accent-fail-soft)}.svc__name{font-weight:600;font-size:13px;color:var(--text-primary)}.svc__state{font-family:var(--font-mono);font-size:11px;color:var(--text-secondary)}.svc__uptime{margin-left:auto;font-family:var(--font-mono);font-size:11px;font-variant-numeric:tabular-nums;color:var(--text-tertiary)}.phase-bars{display:flex;flex-direction:column;gap:4px}.phase-bars__row{display:grid;grid-template-columns:28px 1fr 72px 64px 80px;gap:10px;align-items:center;padding:6px 8px;background:var(--bg-soft);border-radius:6px;border:1px solid var(--border-line);font-family:var(--font-mono);font-size:12px}.phase-bars__label{font-family:-apple-system,Segoe UI,sans-serif;font-weight:700;color:var(--text-primary);font-size:13px}.phase-bars__bar{height:8px;background:#fff;border-radius:4px;border:1px solid var(--border-line);position:relative;overflow:hidden}.phase-bars__fill{position:absolute;top:0;left:0;bottom:0;border-radius:4px;transition:width .2s ease}.phase-bars__fill--ok{background:var(--zbs-green)}.phase-bars__fill--warn{background:var(--zbs-amber)}.phase-bars__fill--fail{background:var(--accent-fail)}.phase-bars__mark{position:absolute;top:-2px;bottom:-2px;width:0;pointer-events:none;z-index:1}.phase-bars__mark--contract{border-left:2px dashed var(--accent-fail, #b91c1c)}.phase-bars__mark--peakshave{border-left:2px dashed var(--zbs-amber, #d97706)}.phase-bars__v,.phase-bars__i,.phase-bars__w{font-variant-numeric:tabular-nums;color:var(--text-primary);font-weight:600;text-align:right}.phase-bars__legend{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;margin-top:8px;font-size:11px;color:var(--text-tertiary)}.phase-bars__legend-item{display:inline-flex;align-items:center;gap:6px}.phase-bars__legend-item:before{content:"";width:14px;height:0;border-top:2px dashed currentColor;display:inline-block}.phase-bars__legend-item--contract{color:var(--accent-fail, #b91c1c)}.phase-bars__legend-item--peakshave{color:var(--zbs-amber, #d97706)}.phase-bars__legend-hint{color:var(--text-tertiary);margin-left:auto}.tech-meters-extra{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:10px;padding-top:8px;border-top:1px solid var(--border-line);font-family:var(--font-mono);font-size:11px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.tech-meters-extra__label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;font-size:10px;margin-right:4px}@media (max-width: 720px){.phase-bars__row{grid-template-columns:22px 1fr 58px 54px 70px;gap:6px;font-size:11px}}.reg-rows{display:flex;flex-direction:column;gap:4px}.reg-row{display:grid;grid-template-columns:56px 1fr auto auto;gap:10px;align-items:center;padding:7px 10px;background:var(--bg-soft);border:1px solid var(--border-line);border-radius:6px;font-family:var(--font-mono);font-size:12px}.reg-row__addr{color:var(--text-tertiary);font-weight:600}.reg-row__name{color:var(--text-secondary)}.reg-row__val{background:#fff;border:1px solid var(--border-line);border-radius:4px;padding:2px 8px;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums}.reg-row__pill{padding:1px 7px;font-size:10px}.reg-row__humanized{color:var(--text-secondary);font-size:11px;text-align:right;min-width:0}.tech-reg-more{margin-top:6px}.tech-reg-more>summary{list-style:none;cursor:pointer;font-size:12px;color:var(--text-secondary);font-weight:600;padding:4px 0}.tech-reg-more>summary::-webkit-details-marker{display:none}.tech-reg-more>summary:before{content:"▸ ";color:var(--text-tertiary)}.tech-reg-more[open]>summary:before{content:"▾ "}@media (max-width: 720px){.reg-row{grid-template-columns:50px 1fr auto}.reg-row__humanized,.reg-row__pill{grid-column:2;text-align:left;margin-top:4px}}.tech-serial-row{display:flex;flex-wrap:wrap;gap:12px;font-size:11px;color:var(--text-tertiary);font-family:var(--font-mono)}.tech-serial-row code{background:var(--bg-soft);border:1px solid var(--border-line);padding:1px 6px;border-radius:4px;color:var(--text-secondary)}.tech-slave-block{margin-top:6px;padding-top:10px;border-top:1px dashed rgba(15,23,42,.1)}.tech-slave-block__title{margin:0 0 8px;font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;font-weight:700}.tech-events-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.tech-events-list__item{display:grid;grid-template-columns:90px 88px 1fr;gap:8px;align-items:baseline;padding:5px 8px;border-left:3px solid transparent;border-radius:0 6px 6px 0;font-size:12px}.tech-events-list__item--ok{border-left-color:var(--zbs-green)}.tech-events-list__item--info{border-left-color:var(--accent-info)}.tech-events-list__item--warn{border-left-color:var(--zbs-amber);background:#fef3c759}.tech-events-list__item--fail{border-left-color:var(--accent-fail);background:#fee2e259}.tech-events-list__time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:11px;color:var(--text-tertiary)}.tech-events-list__type{background:#0f172a0f;padding:1px 6px;border-radius:4px;font-family:var(--font-mono);font-size:10px;color:var(--text-secondary);text-align:center;letter-spacing:.04em}.tech-events-list__detail{color:var(--text-secondary);font-size:12px}.tech-events-summary{margin:0 0 6px;color:var(--text-secondary);font-size:12px}@media (max-width: 720px){.tech-events-list__item{grid-template-columns:70px 70px 1fr;gap:6px}}.tech-decisions-table{width:100%;border-collapse:collapse;font-size:12px}.tech-decisions-table th{text-align:left;color:var(--text-secondary);font-weight:500;padding:4px 6px;border-bottom:1px solid var(--border-line)}.tech-decisions-table td{padding:5px 6px;border-bottom:1px solid var(--border-line)}.tech-decisions-table .mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.tech-decisions-mode{background:#0f172a0f;padding:1px 6px;border-radius:4px;font-family:var(--font-mono);font-size:11px}.tech-decisions-eng{color:var(--text-tertiary);font-family:var(--font-mono)}.tech-decisions-reason{color:var(--text-secondary);font-size:12px}.tech-actions-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}@media (max-width: 720px){.tech-actions-grid{grid-template-columns:repeat(2,1fr)}}.tech-action{display:flex;flex-direction:column;gap:4px}.tech-action__btn{padding:10px 14px;border:1px solid var(--border-soft);background:var(--bg-soft);border-radius:8px;cursor:pointer;font:inherit;font-weight:600;font-size:13px;color:var(--text-primary);text-align:center;transition:border-color .12s,transform 80ms,background .12s}.tech-action__btn:hover:not(:disabled){border-color:var(--zbs-green);background:#fff;transform:translateY(-1px)}.tech-action__btn:disabled{opacity:.55;cursor:not-allowed}.tech-action__result{font-size:11px;padding:2px 4px;font-family:var(--font-mono)}.tech-action__result.is-ok{color:var(--zbs-green-dark)}.tech-action__result.is-fail{color:var(--accent-fail)}.tech-logs-btn{padding:8px 14px;border:1px solid var(--border-soft);background:var(--bg-panel);border-radius:8px;cursor:pointer;font:inherit;font-weight:600;font-size:13px;color:var(--text-primary)}.tech-logs-btn:hover{background:var(--bg-soft)}.logs-viewer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}.logs-viewer{background:var(--bg-panel);border-radius:var(--radius-panel);max-width:1100px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0f172a4d;overflow:hidden}.logs-viewer__header{display:flex;align-items:center;gap:16px;padding:14px 20px;border-bottom:1px solid var(--border-line)}.logs-viewer__header h3{margin:0;font-size:14px}.logs-viewer__controls{margin-left:auto;display:flex;gap:8px}.logs-viewer__controls select,.logs-viewer__controls button{padding:6px 12px;border:1px solid var(--border-soft);border-radius:6px;background:var(--bg-panel);font:inherit;font-size:13px;cursor:pointer}.logs-viewer__body{padding:16px 20px;overflow:auto;flex:1 1 auto}.logs-viewer__pre{background:#0f172a;color:#e2e8f0;padding:14px;border-radius:8px;font-family:var(--font-mono);font-size:12px;white-space:pre;margin:0}details.tech-diag{background:var(--bg-panel);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);padding:0}details.tech-diag>summary{list-style:none;cursor:pointer;padding:12px 18px;display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700;color:var(--text-primary)}details.tech-diag>summary::-webkit-details-marker{display:none}details.tech-diag>summary:before{content:"▸";color:var(--text-tertiary);font-size:10px;transition:transform .12s}details.tech-diag[open]>summary:before{transform:rotate(90deg)}details.tech-diag>summary .hint{margin-left:auto;font-weight:400;font-size:12px;color:var(--text-secondary)}.tech-diag__body{padding:14px 18px;border-top:1px solid var(--border-line)}.tech-diag-table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:12px;font-family:var(--font-mono)}.tech-diag-table td{padding:4px 6px;border-bottom:1px solid var(--border-line)}.tech-diag-table td.mono{font-family:var(--font-mono)}.tech-diag__pre{background:#0f172a;color:#e2e8f0;padding:12px;border-radius:6px;font-family:var(--font-mono);font-size:11px;overflow:auto;max-height:320px;white-space:pre}.tech-page__footer{margin-top:4px;color:var(--text-tertiary);font-size:11px;display:flex;flex-wrap:wrap;gap:14px;padding:4px 4px 0;font-family:var(--font-mono)}.tech-page__footer code{background:var(--bg-soft);border:1px solid var(--border-line);padding:1px 6px;border-radius:4px}.tech-git-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-soft);border:1px solid var(--border-line);border-radius:var(--radius-pill);font-size:11px;color:var(--text-secondary);font-family:var(--font-mono)}.tech-git-pill__commit{color:var(--text-primary);font-weight:700}.tech-git-pill__dirty{color:var(--accent-warn);font-weight:700}:root{--bg-body: #f1f3f7;--bg-panel: #fff;--bg-soft: #f8fafc;--border-line: #eef1f5;--border-soft: #e5e7eb;--text-primary: #1f2937;--text-secondary: #6b7280;--text-tertiary: #9ca3af;--text-strong: #374151;--color-pv: #f59e0b;--color-pv-soft: #fbbf24;--color-battery: #22c55e;--color-battery-soft: #86efac;--color-grid: #ef4444;--color-grid-soft: #fca5a5;--color-load: #f97316;--color-load-soft: #fdba74;--color-backup: #9ca3af;--color-backup-soft: #cbd5e1;--color-soc: #ec4899;--color-now: #dc2626;--zbs-green: #16a34a;--zbs-green-dark: #15803d;--zbs-green-soft: #d1fae5;--zbs-lime: #65a30d;--zbs-orange: #f97316;--zbs-orange-soft: #ffedd5;--zbs-amber: #f59e0b;--zbs-amber-soft: #fef3c7;--accent-primary: var(--zbs-green);--accent-warn: var(--zbs-amber);--accent-fail: #dc2626;--accent-info: #0891b2;--accent-fail-soft: #fee2e2;--accent-info-soft: #cffafe;--strat-charge: #bbf7d0;--strat-discharge: #c4b5fd;--strat-standby: #d1d5db;--strat-selfuse: #fed7aa;--strat-charge-only: #16a34a;--strat-feed-priority: #67e8f9;--strat-peak-shaving: #ef4444;--strat-backup: #1f2937;--gap-xs: 4px;--gap-sm: 6px;--gap-md: 8px;--gap-lg: 12px;--radius-panel: 12px;--radius-tile: 10px;--radius-pill: 45px;--shadow-panel: 0 1px 2px rgba(15, 23, 42, .04);--font-stack: -apple-system, "Segoe UI", "PingFang SC", "Helvetica Neue", sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}html,body{overflow-x:hidden}body{font-family:var(--font-stack);background:var(--bg-body);color:var(--text-primary);overflow-y:hidden}#root{padding:10px;display:flex;flex-direction:column;gap:var(--gap-md)}body.route-settings,body.route-tech{overflow-y:auto}body.route-settings,body.route-settings #root,body.route-tech,body.route-tech #root{height:auto;min-height:100vh}@media (max-width: 1100px),(max-height: 580px){html,body,#root{height:auto}body{overflow-y:visible}#root{min-height:100vh;padding:8px;gap:8px}.panel-flow,.panel-chart,.panel-kpi,.panel-controls{flex:0 0 auto}}button{font:inherit;cursor:pointer}.panel-header{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--border-line)}.panel-header__title{font-size:14px;font-weight:700;margin:0;color:var(--text-primary);letter-spacing:-.01em}.panel-header__hint{font-size:12px;color:var(--text-secondary);margin:0}.panel-header__pill{margin-left:auto;padding:2px 10px;border-radius:var(--radius-pill);font-size:11px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.pill{padding:2px 10px;border-radius:var(--radius-pill);font-size:11px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.pill--ok{background:var(--zbs-green-soft);color:#065f46}.pill--warn{background:var(--zbs-amber-soft);color:#92400e}.pill--fail{background:var(--accent-fail-soft);color:#991b1b}.pill--info{background:var(--accent-info-soft);color:#155e75}.pill--neutral{background:#0f172a0f;color:var(--text-secondary)}.pill--dirty{background:#f59e0b1f;color:#92400e;padding-left:8px}.pill--dirty:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent-warn);box-shadow:0 0 0 3px #f59e0b2e}.btn-primary{padding:8px 18px;background:var(--accent-primary);color:#fff;border:none;border-radius:8px;font:inherit;font-weight:600;font-size:13px;cursor:pointer;transition:background .12s ease,transform 80ms ease}.btn-primary:hover:not(:disabled){background:var(--zbs-green-dark)}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-primary:disabled{background:var(--border-soft);color:#fff;cursor:not-allowed}.btn-secondary{padding:8px 14px;background:transparent;color:var(--text-secondary);border:1px solid var(--border-soft);border-radius:8px;font:inherit;font-size:13px;cursor:pointer;transition:border-color .12s,color .12s,background .12s}.btn-secondary:hover:not(:disabled){color:var(--text-primary);border-color:#cbd5e1;background:#0f172a05}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-danger{padding:8px 14px;background:transparent;color:var(--accent-fail);border:1px solid var(--accent-fail);border-radius:8px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:background .12s,color .12s}.btn-danger:hover:not(:disabled){background:var(--accent-fail);color:#fff}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.btn-link{background:transparent;border:none;padding:4px 8px;color:var(--text-secondary);font:inherit;font-size:13px;cursor:pointer}.btn-link:hover{color:var(--text-primary);text-decoration:underline}.panel-card{background:var(--bg-panel);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);padding:14px 18px}.page-header{display:flex;align-items:flex-start;gap:16px;padding:14px 18px;background:var(--bg-panel);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel)}.page-header__main{display:flex;flex-direction:column;gap:2px;min-width:0}.page-header__title{font-size:18px;font-weight:700;margin:0;color:var(--text-primary);letter-spacing:-.01em}.page-header__hint{font-size:12px;color:var(--text-secondary);margin:0}.page-header__hint code{background:#f1f5f9;padding:1px 6px;border-radius:4px;font-size:11px;color:#475569;font-family:var(--font-mono)}.page-header__meta{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap}@media (max-width: 720px){.page-header{flex-direction:column;align-items:stretch}.page-header__meta{margin-left:0}}
