:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#233147;background:#f2f4f8;--bg:#f2f4f8;--card:#fff;--ink:#233147;--muted:#64748b;--line:#e3e8f0;--blue:#285ad7;--soft:#edf2ff;--green:#15765b;--shadow:0 3px 16px #15264f06;color-scheme:light}
*{box-sizing:border-box}body{margin:0}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #819ffc;outline-offset:3px}button:disabled{opacity:.55;cursor:wait}button:active{transform:translateY(1px)}[hidden]{display:none!important}.shell{max-width:1040px;margin:auto;padding:calc(14px + env(safe-area-inset-top) + var(--tg-content-safe-area-inset-top,0px)) 22px calc(20px + env(safe-area-inset-bottom));min-height:100dvh}header{display:flex;align-items:center;gap:12px;min-height:62px;margin-bottom:22px}.wordmark{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:700;letter-spacing:-.5px}.home-symbol{font-size:32px;background:var(--ink);color:var(--card);width:42px;height:42px;display:grid;place-items:center;border-radius:14px;line-height:1}.eyebrow{display:block;font-size:10px;font-weight:700;letter-spacing:1.8px;line-height:1.8;color:var(--muted)}.fresh{margin-left:auto;font-size:11px;color:var(--muted);text-align:right;max-width:160px;line-height:1.5}.fresh.stale{color:#a45f14}.health{display:inline-flex;gap:8px;align-items:center;font-size:12px;font-weight:600;border-radius:40px;padding:7px 12px;background:#e4f2ec;color:var(--green);margin:0 0 16px}.health.warning{color:#a25d0e;background:#fff1d6}.dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.grid{display:grid;grid-template-columns:1fr;gap:11px}.tile{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:19px;display:grid;grid-template-columns:45px 1fr 16px;align-items:center;gap:14px;box-shadow:var(--shadow);min-width:0;transition:border-color .15s,box-shadow .15s}.tile:hover{border-color:#aec1ed;box-shadow:0 5px 20px #285ad70a}.tile.primary{background:linear-gradient(125deg,#244fc5,#316be0);color:#fff;border-color:transparent}.tile.primary small{color:#d3e1ff}.tile.primary .chevron{color:#bad0ff}.tile .brand{width:44px;height:44px;padding:7px;object-fit:contain;border-radius:13px;background:#fff}.tile .symbol{width:44px;height:44px;border-radius:13px;background:var(--soft);color:var(--blue);display:grid;place-items:center;font-size:23px}.tile strong{display:block;font-size:16px;font-weight:600;letter-spacing:-.2px;overflow-wrap:anywhere}.tile .value{font-size:22px;letter-spacing:-.6px;margin-top:5px;display:block;font-weight:650}.tile>div{min-width:0}.tile[data-view="internet"] .value{font-size:20px}.tile small{display:block;color:var(--muted);font-size:11px;margin-top:6px;line-height:1.5}.tile .chevron{color:#92a2ba;font-size:23px}.section-title{font-size:11px;color:var(--muted);letter-spacing:1.4px;font-weight:700;margin:28px 0 12px}.panel{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:22px;margin-bottom:14px;box-shadow:var(--shadow);min-width:0}.report{white-space:pre-line;line-height:1.65;font-size:14px;overflow-wrap:anywhere}.report>b:first-child{font-size:21px;letter-spacing:-.5px}.report i{font-size:12px;color:var(--muted)}.report b{font-weight:650}.actions{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 22px}.actions button,.actions a,.retry{min-height:44px;padding:12px 16px;background:var(--card);border:1px solid var(--line);border-radius:12px;font-size:13px;text-decoration:none;color:var(--ink);text-align:left}.actions .execute{background:var(--soft);border-color:transparent;color:var(--blue)}.actions button:hover{border-color:var(--blue)}.quiet{background:none;color:var(--blue);min-height:44px;padding:10px;font-size:12px}.icon-button{width:42px;height:42px;border-radius:14px;background:var(--card);font-size:30px}.section-logo{width:42px;height:42px;object-fit:contain;float:right;margin:0 0 12px 12px;background:#fff;border-radius:10px;padding:5px}.progress{padding:13px 16px;margin-bottom:12px;background:var(--soft);border-radius:14px;color:var(--blue);font-size:12px;line-height:1.65}.progress strong{display:block}.chart-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:15px}.chart-head h2{font-size:14px;font-weight:600;margin:0}.chart-readout{font-size:11px;color:var(--muted);text-align:right;line-height:1.5}.chart svg{display:block;width:100%;height:auto;overflow:visible;touch-action:pan-y}.chart input{width:100%;accent-color:var(--blue);height:32px;margin:0}.chart-note{font-size:11px;color:var(--muted);line-height:1.6;white-space:pre-line}.chart-empty{padding:30px 0;color:var(--muted);font-size:13px}.driver{display:grid;grid-template-columns:1fr auto;gap:6px;margin:16px 0;font-size:13px}.driver span{color:var(--muted)}.driver .track{grid-column:1/-1;height:5px;background:var(--line);border-radius:5px;overflow:hidden}.driver .fill{height:100%;background:var(--blue);border-radius:5px}.event{padding:16px 0;border-top:1px solid var(--line);font-size:13px;line-height:1.5}.event:first-of-type{border-top:0}.event-title{font-weight:600}.event small{color:var(--muted);display:block}.event .actions{margin:10px 0 0}.event .actions button{padding:9px 12px;font-size:12px}.error{padding:25px;border:1px solid var(--line);border-radius:20px;background:var(--card);line-height:1.6}.error h1{font-size:24px}.error p{color:var(--muted);font-size:14px}footer{display:flex;justify-content:flex-end;align-items:center;font-size:10px;letter-spacing:.4px;color:var(--muted);margin-top:25px}#toast{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(90%,470px);padding:15px 18px;background:#1c2b45;color:#fff;border-radius:15px;box-shadow:0 6px 30px #0003;font-size:13px;line-height:1.5;z-index:10}.skeleton{height:96px;background:var(--line);border-radius:20px;margin-bottom:12px;animation:pulse 1.5s infinite alternate}@keyframes pulse{to{opacity:.4}}@media(min-width:740px){.shell{padding-left:36px;padding-right:36px}.grid{grid-template-columns:1fr 1fr;gap:14px}.tile{padding:22px;min-height:118px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.detail-grid .panel{margin-bottom:0}}@media(max-width:370px){.shell{padding-left:13px;padding-right:13px}.tile{gap:11px;padding:16px}.fresh{max-width:98px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
body.dark{--bg:#111820;--card:#1a2531;--ink:#e7edf5;--muted:#9aaabd;--line:#2b3a4b;--blue:#8eb0ff;--soft:#22354e;--green:#89d9b6;--shadow:none;background:var(--bg);color:var(--ink);color-scheme:dark}body.dark .health{background:#19382e}body.dark .health.warning{background:#3e301d;color:#e9bd77}body.dark .tile.primary{background:linear-gradient(125deg,#234aba,#295cb9)}
.panel h2{font-size:20px;font-weight:650;letter-spacing:-.4px;margin:0 0 14px}.hint{font-size:13px;line-height:1.7;color:var(--muted)}.login{max-width:540px;margin:8vh auto 20px;padding:30px}.login h1{font-size:36px;line-height:1.12;letter-spacing:-1.3px}.login>p{line-height:1.65;color:var(--muted);font-size:14px}.login .actions button{width:100%;text-align:center;font-size:15px;padding:16px}.progress-link{width:100%;text-align:left}.activity-row{display:grid;grid-template-columns:1fr auto;gap:7px;text-align:left;width:100%;padding:17px 0;background:transparent;border-bottom:1px solid var(--line);font-size:13px}.activity-row strong{font-weight:600}.activity-row span{color:var(--blue)}.activity-row small{color:var(--muted)}.activity-row .chevron{grid-column:2;grid-row:2}.confirm-dialog{border:1px solid var(--line);border-radius:24px;background:var(--card);color:var(--ink);padding:24px;width:min(94vw,620px);max-height:90dvh;box-shadow:0 20px 80px #0005}.confirm-dialog::backdrop{background:#0a142780;backdrop-filter:blur(3px)}.confirm-dialog h2{margin-top:0;font-size:22px}.dialog-body{max-height:53dvh;overflow:auto;padding-right:8px}.confirm-dialog .actions{justify-content:flex-end;margin-bottom:0}
.notification-inbox{padding:0;overflow:hidden;margin-bottom:16px}.notification-summary{list-style:none;display:flex;align-items:center;gap:7px;min-height:52px;padding:4px 12px;font-size:13px;font-weight:650;cursor:pointer;user-select:none}.notification-summary::-webkit-details-marker{display:none}.notification-summary:focus-visible{outline:3px solid #819ffc;outline-offset:-4px}.notification-toggle{width:22px;flex-shrink:0;display:grid;place-items:center;color:var(--muted);font-size:27px;font-weight:400;transform:rotate(90deg);transition:transform .15s}.notification-disclosure[open] .notification-toggle{transform:rotate(-90deg)}.notification-inline-actions{margin-left:auto;display:flex;align-items:center;gap:2px;white-space:nowrap}.notification-inline-actions button{min-height:44px;padding:8px 6px;background:transparent;color:var(--blue);font-size:11px;font-weight:550;border-radius:9px}.notification-inline-actions button:hover{background:var(--soft)}.notification-count{display:inline-grid;place-items:center;min-width:21px;height:21px;padding:0 5px;border-radius:7px;font-size:10px;background:var(--soft);color:var(--blue)}.notification-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:0 16px 13px}.notification-toolbar button,.notification-read{min-height:44px;padding:10px 13px;border-radius:11px;background:var(--soft);color:var(--blue);font-size:12px;font-weight:600}.notification-toolbar button:last-child{margin-left:auto;background:transparent}.notification-list{border-top:1px solid var(--line)}.notification-list .notification-row{margin:0 18px}.notification-row{display:flex;align-items:center;gap:6px;padding:13px 0;border-bottom:1px solid var(--line)}.notification-row:last-child{border-bottom:0}.notification-link{min-width:0;flex:1;display:flex;align-items:flex-start;gap:10px;padding:4px 0;min-height:44px;text-align:left;background:transparent}.notification-link:hover .notification-copy strong{color:var(--blue)}.notification-copy{min-width:0;flex:1;overflow-wrap:anywhere}.notification-copy strong{display:block;font-size:13px;line-height:1.5;font-weight:600}.notification-copy small{display:block;font-size:11px;line-height:1.5;color:var(--muted);margin-top:5px}.notification-body{display:block;font-size:12px;line-height:1.6;margin-top:3px;color:var(--muted)}.notification-dot{width:7px;height:7px;flex-shrink:0;margin-top:7px;border-radius:50%;background:var(--muted)}.notification-dot.warning{background:#d39121}.notification-dot.critical{background:#db5555}.notification-dot.info{background:var(--green)}.notification-link .chevron{color:var(--muted);font-size:22px;margin-top:1px}.notification-read{flex-shrink:0;align-self:center;background:transparent}.notification-empty{font-size:13px;color:var(--muted);padding:3px 20px 12px}.notification-history .notification-toolbar{padding:0 0 12px}.notification-history .notification-row.unread .notification-copy strong{color:var(--blue)}
@media(max-width:480px){.notification-history{padding:18px}.notification-row{flex-wrap:wrap;gap:2px}.notification-link{flex-basis:100%}.notification-read{margin-left:17px;padding:8px 12px;min-height:44px}.notification-summary{padding:4px 10px}.notification-toolbar{padding-left:14px;padding-right:14px}}
.home-symbol{display:block;object-fit:contain;background:#233147;flex-shrink:0}.home-temperatures{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 6px;margin-top:8px}.home-temperatures .value{font-size:20px}.home-temperatures .temperature-label{margin:0;font-size:10px}.home-temperatures .value{margin-top:1px}.tile-extra{display:block;font-size:13px;font-weight:600;margin-top:7px;line-height:1.4;color:var(--blue)}.tile small.tile-note{font-size:10px;margin-top:3px;line-height:1.4}.routers-heading{display:flex;align-items:baseline;gap:16px;justify-content:space-between}.routers-heading h1{font-size:25px;letter-spacing:-.7px;margin:4px 0 8px}.routers-heading p{margin:0;font-size:12px}.router-legend{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:4px 0 22px}.router-legend .test-icon{width:15px;height:11px;border-radius:2px}.router-legend .test-icon.quality{height:16px;width:18px}.router-list{display:flex;flex-direction:column;gap:12px}.router-site{font-size:12px;color:var(--muted);font-weight:600;margin:15px 4px 0}.router-site:first-child{margin-top:0}.router-card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px 20px;box-shadow:var(--shadow);min-width:0}.router-head{display:flex;align-items:center;gap:10px}.router-open{display:flex;align-items:center;gap:13px;padding:0;background:transparent;text-align:left;min-width:0;flex:1}.router-model-icon{width:76px;height:64px;object-fit:contain;padding:4px;background:#f4f6fa;border-radius:12px;flex-shrink:0}.router-name{min-width:0}.router-name strong{display:block;font-size:16px;font-weight:650;line-height:1.4;overflow-wrap:anywhere}.router-name small{display:block;color:var(--muted);font-size:11px;margin-top:4px;line-height:1.5}.router-state{font-size:10px;white-space:nowrap;background:var(--soft);color:var(--muted);padding:5px 8px;border-radius:7px}.router-state.ok{background:#e4f2ec;color:#15765b}.router-state.offline{background:#fce9e9;color:#b43c3c}.router-scope{font-size:11px;color:var(--muted);line-height:1.5;margin:12px 0}.router-metrics{display:grid;grid-template-columns:1fr 1fr 1.5fr;gap:10px}.router-speed,.router-quality{background:var(--bg);border-radius:12px;padding:13px;text-align:left;min-width:0}.router-speed-caption{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted)}.router-speed strong{display:block;font-size:19px;margin-top:8px;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.router-unit{display:block;font-size:10px;margin-top:2px;color:var(--muted)}.router-metrics small{display:block;font-size:10px;color:var(--muted);margin-top:8px;line-height:1.45}.router-metrics small.old{color:#a45f14}.router-quality-head{display:flex;justify-content:space-between;gap:10px;font-size:11px;align-items:center;margin-bottom:8px}.quality-state{font-size:11px;font-weight:600;color:var(--muted)}.quality-state.ok{color:var(--green)}.quality-state.warning{color:#a45f14}.quality-values{display:block;font-size:11px;line-height:1.7;font-variant-numeric:tabular-nums}.router-tests{display:flex;align-items:center;gap:8px;margin-top:13px}.router-tests>.hint{font-size:11px;margin:0 auto 0 0}.router-test{height:44px;width:52px;display:grid;place-items:center;background:var(--soft);border:1px solid transparent;border-radius:12px}.router-test:hover{border-color:var(--blue)}.test-icon{display:inline-block;flex-shrink:0;width:24px;height:16px;border-radius:3px;overflow:hidden;box-shadow:inset 0 0 0 1px #00000012}.test-icon.ru{background:linear-gradient(to bottom,#fff 0 33.33%,#1747a6 33.33% 66.66%,#d63640 66.66%)}.test-icon.de{background:linear-gradient(to bottom,#1e2026 0 33.33%,#d7383d 33.33% 66.66%,#f8c939 66.66%)}.test-icon.quality{height:24px;box-shadow:none;color:var(--blue)}.test-icon svg{display:block;width:100%;height:100%}.dark .router-state.ok{background:#163d35;color:#8adfbb}.dark .router-state.offline{background:#4a282f;color:#ff9d9d}.dark .quality-state.ok{color:#8adfbb}.dark .quality-state.warning,.dark .router-metrics small.old{color:#e1bb79}.dark .router-model-icon{background:#ecf0f6}
@media(max-width:650px){.router-metrics{grid-template-columns:1fr 1fr}.router-quality{grid-column:1/-1}.router-card{padding:15px}.router-model-icon{width:60px;height:58px}.router-name strong{font-size:15px}.router-head{gap:8px}.router-open{gap:10px}.router-state{padding:4px 6px}.router-quality-head{margin-bottom:5px}.router-quality small{margin-top:5px}.router-speed{padding:12px}.router-speed strong{font-size:18px}}
@media(max-width:360px){.router-head{flex-wrap:wrap}.router-state{margin-left:auto}.router-name strong{font-size:14px}.routers-heading{display:block}.routers-heading p{margin-bottom:10px}.home-temperatures{gap:8px 6px}}

.router-speed .speed-pair{display:flex;flex-wrap:wrap;gap:3px 10px}.speed-pair>span{white-space:nowrap}

.tile-values{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:5px}.tile .tile-values>.value{white-space:nowrap;margin:0;font-size:21px}.tile-delta{font-size:12px;line-height:1.45;color:var(--blue);text-align:right;white-space:nowrap}.tile-delta small{margin:0;font-size:10px}.tile-delta b{font-weight:600}.tile[data-view="heating"] .brand{padding:0}.section-logo[src*="myheat"]{padding:0}.server-lights{display:flex;gap:18px;margin:12px 0 8px}.server-light{display:inline-flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap}.server-light i{width:8px;height:8px;border-radius:50%;background:#94a3b8;flex-shrink:0}.server-light.online i{background:#1ba574;box-shadow:0 0 0 3px #1ba57418}.server-light.offline i{background:#da4e4e;box-shadow:0 0 0 3px #da4e4e18}.server-light b{font-weight:600}.router-card .router-site{font-size:16px;font-weight:650;color:var(--ink);margin:0 0 15px}.router-device{padding:0 0 14px}.router-device.extender{padding-top:12px;border-top:1px solid var(--line);margin-left:18px}.router-device.extender .router-model-icon{width:56px;height:48px}.router-device.extender .router-name strong{font-size:14px}.router-name .router-role{font-size:10px;margin-top:1px}.router-firmware{display:block;margin:5px 0 0 89px;font-size:11px;line-height:1.5;color:var(--muted)}.router-device.extender .router-firmware{margin-left:69px}.router-firmware.current,.version-state.current{color:var(--green)}.router-firmware.update,.version-state.update{color:#a56a0b}.dark .router-firmware.update,.dark .version-state.update{color:#edc06a}.router-scope{border-top:1px solid var(--line);padding-top:12px;margin-top:0}.version-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px;padding:14px 0;border-top:1px solid var(--line);font-size:13px}.version-row strong{font-weight:600}.version-state{font-size:13px;color:var(--muted);font-weight:600}.version-description,.version-checked{grid-column:1/-1;color:var(--muted);font-size:11px;line-height:1.6;overflow-wrap:anywhere}.version-checked{font-size:10px}.app-versions{margin-top:16px}.chart-legend{display:flex;flex-wrap:wrap;gap:16px;margin:0 0 12px}.chart-key{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px}.chart-key i{width:22px;border-top:3px solid}.multi-chart .chart-head{display:block}.multi-chart .chart-head h2{font-size:16px}.multi-chart .chart-readout{text-align:left;display:flex;flex-wrap:wrap;gap:2px 12px;margin-bottom:14px}.multi-chart .chart-readout small{flex-basis:100%;font-size:10px}.multi-chart .chart-readout span{font-variant-numeric:tabular-nums}
@media(max-width:650px){.router-firmware{margin-left:70px}.router-device.extender .router-firmware{margin-left:66px}}
@media(max-width:390px){.tile .tile-values>.value{font-size:18px;letter-spacing:-.5px}.tile-values{gap:5px}.tile-delta{font-size:10px}.tile-delta small{font-size:9px}.notification-summary{gap:4px;font-size:12px;padding-left:8px;padding-right:6px}.notification-inline-actions button{font-size:10px;padding-left:4px;padding-right:4px}.notification-toggle{width:18px}.server-lights{gap:13px}}

.home-internet{display:grid;gap:8px;margin-top:8px}.internet-reading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:2px 12px}.tile .internet-label{margin:0;font-size:11px;white-space:nowrap}.internet-speeds{display:flex;gap:5px 10px;flex-wrap:wrap;font-size:18px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.4px}.internet-speeds>span{white-space:nowrap}.internet-old{font-size:13px;opacity:.8}

.photo-deltas{display:grid;gap:5px}.delta-pair{display:block}@media(min-width:740px){.home-internet{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}}

.host-metrics{display:flex;gap:10px;align-items:center;margin-left:3px;white-space:nowrap;font-variant-numeric:tabular-nums}.host-metrics[hidden]{display:none}.host-metric{display:flex;align-items:baseline;gap:4px;font-size:12px;color:var(--ink)}.host-metric small{font-size:9px;font-weight:600;color:var(--muted)}.host-metric b{font-weight:650}.host-metric.unknown{color:var(--muted)}.host-metric.warm{color:#a87316}.host-metric.high{color:#b43c3c}
.notification-totals{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-variant-numeric:tabular-nums;font-size:12px}.notification-total{white-space:nowrap}.notification-total.has-critical{color:#b43c3c}.notification-divider{color:var(--muted)}.notification-row.priority-critical{background:#fff1f1;border-left:3px solid #d74747;border-radius:10px;padding:12px}.notification-list .notification-row.priority-critical{margin:5px 8px;padding:9px}.notification-row.priority-critical .notification-dot{background:#d74747}.notification-row.priority-critical .notification-copy strong,.notification-history .notification-row.priority-critical .notification-copy strong{color:#a72c32}.dark .notification-row.priority-critical{background:#41282f;border-left-color:#ef7777}.dark .notification-total.has-critical,.dark .notification-row.priority-critical .notification-copy strong{color:#ffabab}
.mcp-section{display:grid;gap:12px}.mcp-section>.panel{margin:0}.mcp-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.mcp-card-head h2{margin:0;font-size:17px}.mcp-state{padding:5px 8px;border-radius:8px;white-space:nowrap;font-size:11px;font-weight:600;background:var(--bg);color:var(--muted)}.mcp-state.available{color:var(--green);background:#eaf6ef}.mcp-state.partial{color:#95630e;background:#fff3d9}.mcp-state.unavailable{color:#b43c3c;background:#ffeded}.mcp-connections{display:flex;flex-wrap:wrap;gap:7px 16px;margin:12px 0}.mcp-connection{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.mcp-connection i{width:6px;height:6px;flex-shrink:0;border-radius:50%;background:var(--muted)}.mcp-connection.available i{background:var(--green)}.mcp-connection.unavailable i{background:#d74747}.mcp-tools{border-top:1px solid var(--line);margin-top:12px}.mcp-tools summary{padding:12px 0 0;font-size:12px;color:var(--blue);cursor:pointer;min-height:38px}.mcp-tool{padding:10px 0;border-top:1px solid var(--line);font-size:13px;display:flex;flex-direction:column;gap:4px}.mcp-tool:first-of-type{margin-top:8px}.mcp-tool code{font-size:10px;color:var(--muted);overflow-wrap:anywhere}.mcp-tool small{color:#a87316;font-size:11px}.dark .mcp-state.available{background:#1f3f38}.dark .mcp-state.partial{background:#44351d;color:#efbf68}.dark .mcp-state.unavailable{background:#41282f;color:#ffabab}
@media(max-width:600px){header{flex-wrap:wrap;column-gap:8px;row-gap:3px;margin-bottom:15px}.fresh{flex-basis:100%;max-width:none;font-size:10px}.wordmark{gap:6px;font-size:19px}.home-symbol{width:36px;height:36px;border-radius:11px}.host-metrics{gap:8px;margin-left:1px}.host-metric{font-size:11px;gap:3px}header .icon-button{width:30px;min-width:30px;padding:0}header #home{margin-left:auto;padding-left:7px;padding-right:7px;font-size:11px}.notification-summary{gap:5px}.notification-totals{font-size:11px}}@media(max-width:360px){.host-metrics{gap:5px}.host-metric{font-size:10px}.notification-totals{font-size:10px}.notification-inline-actions button{font-size:10px;padding-left:3px;padding-right:3px}}
/* v25: a single card rhythm across the home dashboard. */
.grid .tile{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:18px;padding:17px;grid-template-columns:38px minmax(0,1fr) 12px;gap:12px;align-items:start;box-shadow:var(--shadow)}
.grid .tile>.brand,.grid .tile>.symbol{width:36px;height:36px;border-radius:11px;background:var(--soft);padding:5px;color:var(--blue)}
.grid .tile>.symbol{font-size:23px;padding:0}.grid .tile>.chevron{padding-top:7px;color:var(--muted)}
.grid .tile strong{font-size:15px;line-height:1.5}.grid .tile .value{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.4px;line-height:1.4}
.grid .tile small{color:var(--muted)}.grid .tile .tile-note{font-size:10px;margin-top:8px;line-height:1.45}.grid .tile .tile-values{margin-top:9px}
.grid .tile .home-internet{margin-top:9px;gap:7px 14px}.grid .tile .internet-speeds{font-size:16px;gap:9px}.grid .tile .internet-label{font-size:11px}.grid .tile .home-temperatures{margin-top:9px;gap:8px 16px}
.grid .tile .temperature-reading{padding:0}.grid .tile .temperature-label{font-size:10px}.grid .tile .photo-deltas{font-size:11px;gap:6px}
.server-readings,.traffic-readings{display:grid;gap:8px;margin-top:7px;font-variant-numeric:tabular-nums}.server-reading{display:grid;grid-template-columns:1fr repeat(3,46px);gap:8px;align-items:baseline;font-size:14px}.server-reading>b{text-align:right;font-weight:600}.server-reading .server-light{font-size:12px}.reading-head{font-size:10px;color:var(--muted)}.reading-head small{text-align:right;font-size:10px!important;margin:0!important}
.traffic-reading{display:grid;grid-template-columns:minmax(50px,1fr) auto auto;gap:7px 14px;align-items:baseline;font-size:12px}.traffic-reading>b{text-align:right;white-space:nowrap;font-weight:600}.traffic-reading .delta{color:var(--blue)}
.analytics-heading{font-size:19px;margin-top:30px}.analytics-panel{margin-top:16px;min-width:0}.analytics-panel h2{font-size:17px;margin:0 0 14px}.analytics-panel h3{font-size:13px;margin:18px 0 8px}.analytics-panel .hint{font-size:11px;line-height:1.6}.stat-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}.stat-row>span{overflow-wrap:anywhere}.stat-row>b{font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.stat-row>small{grid-column:1/-1;color:var(--muted);font-size:11px}.period-statistics{display:grid;grid-template-columns:1fr 1fr;gap:22px}.period-statistics h3{margin-top:0}.analytics-grid{display:grid;gap:0 14px}.analytics-panel .panel{box-shadow:none;border:0;padding:15px 0 0;margin:12px 0 0}.user-stat+.user-stat{margin-top:24px}.sync-hint{font-size:12px;color:#a56a0b;line-height:1.6}.version-update{justify-self:start;background:var(--soft);color:var(--blue);border:1px solid var(--line);border-radius:10px;font-size:12px;padding:10px 14px;min-height:40px;grid-column:1/-1;margin-top:5px}
@media(min-width:740px){.analytics-grid{grid-template-columns:1fr 1fr}.grid .tile{height:100%}.grid .home-internet{grid-template-columns:1fr}}
@media(max-width:390px){.grid .tile{padding:14px;gap:9px;grid-template-columns:32px minmax(0,1fr) 10px}.grid .tile>.brand,.grid .tile>.symbol{width:32px;height:32px}.server-reading{grid-template-columns:1fr repeat(3,40px)}.traffic-reading{gap:6px;font-size:11px}.period-statistics{gap:14px}.stat-row{font-size:12px}}
.cloud-forecast{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:9px;font-size:12px;font-variant-numeric:tabular-nums}.cloud-forecast small{margin:0}.cloud-forecast b{font-weight:600;white-space:nowrap}.traffic-readings{grid-template-columns:minmax(0,1fr) auto auto;column-gap:14px}.traffic-reading{display:contents}.traffic-label{display:flex;align-items:center;gap:6px;min-width:0;overflow-wrap:anywhere}.traffic-label>span{min-width:0}.traffic-label .tunnel-count{font-size:11px;color:var(--muted);white-space:nowrap;margin:0}.tunnel-dot{display:inline-block;flex:0 0 8px;height:8px;border-radius:50%;background:#94a3b8}.tunnel-dot.all{background:#1ba574}.tunnel-dot.some{background:#e7aa26}.tunnel-dot.unknown{background:transparent;border:1.5px solid #94a3b8}.vpn-grid{gap:10px 14px}.vpn-panel{padding:16px 18px;margin:0 0 10px;border-radius:18px}.vpn-panel h2{font-size:15px;margin-bottom:10px}.vpn-panel .traffic-readings{row-gap:10px;margin-top:0}.vpn-panel .traffic-reading{font-size:12px}.vpn-clients .traffic-label{font-size:12px;line-height:1.4}.vpn-info{font-size:12px;color:var(--muted);margin:14px 0}.vpn-info>summary{cursor:pointer;padding:6px 0}.vpn-info .hint{font-size:11px;margin:8px 0}.vpn-info>.panel{margin-top:10px}@media(min-width:740px){.vpn-grid{grid-template-columns:1fr 1fr}.vpn-grid .vpn-panel{margin-bottom:0}.vpn-grid{margin-bottom:14px}}@media(max-width:390px){.traffic-readings{column-gap:8px}.traffic-label{gap:4px}.vpn-panel{padding:15px}.vpn-panel .traffic-readings{font-size:12px}.tile[data-view="vpn"] .traffic-readings{font-size:11px}.cloud-forecast{font-size:11px}}

.dns-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px 16px;margin:0 0 14px}.dns-toolbar label{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted)}.dns-toolbar select{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:10px;font:inherit;min-height:42px}.dns-toolbar>.hint{font-size:10px;margin:0}.dns-overview{margin:0}.dns-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;font-variant-numeric:tabular-nums}.dns-metric{display:flex;flex-direction:column;gap:5px;min-width:0}.dns-metric small{font-size:11px;color:var(--muted)}.dns-metric b{font-weight:650;font-size:24px;letter-spacing:-.4px;white-space:nowrap}.dns-metrics.compact{gap:8px;margin-top:10px}.dns-metrics.compact small{font-size:10px;margin:0}.dns-metrics.compact b{font-size:17px}.dns-chart-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-3px 0 14px}.dns-chart-top>.hint{font-size:10px;margin:0}.dns-period{display:flex;background:var(--bg);padding:3px;border-radius:10px;gap:2px}.dns-period button{border:0;background:transparent;padding:9px 12px;min-height:38px;font-size:12px;color:var(--muted);border-radius:8px}.dns-period button.active{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #0001}.analytics-panel>svg{display:block;width:100%;height:auto}.dns-readout{font-size:11px;color:var(--muted);text-align:center;font-variant-numeric:tabular-nums;margin:0 0 8px;min-height:28px}.analytics-panel>input[type=range]{width:100%;accent-color:var(--blue);min-height:32px}.dns-table{display:grid;gap:0;}.dns-table-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(60px,auto) minmax(66px,auto);gap:12px;padding:11px 0;border-bottom:1px solid var(--line);align-items:center;font-size:13px}.dns-table-row:last-child{border-bottom:0}.dns-table-row>b{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}.dns-table-row.reading-head{padding-top:0}.dns-table-row small{text-align:right}.dns-device{display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}.dns-device small{font-size:10px;color:var(--muted);text-align:left}.dns-device .dns-spike{color:#aa700c}.dns-search{display:flex;gap:8px}.dns-search input{min-width:0;flex:1;border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--bg);color:var(--ink);font:inherit;font-size:14px}.dns-search button{border:0;border-radius:10px;background:var(--blue);color:white;padding:10px 15px;font:inherit;font-size:13px}.dns-log{display:flex;flex-direction:column;gap:5px;padding:13px 0;border-top:1px solid var(--line);font-size:12px;overflow-wrap:anywhere}.dns-log small{font-size:10px;color:var(--muted);line-height:1.5}.dns-log .dns-blocked{color:#a56a0b}.dark .dns-log .dns-blocked,.dark .dns-device .dns-spike{color:#efbf68}@media(max-width:390px){.dns-metric b{font-size:21px}.dns-metrics.compact b{font-size:16px}.dns-table-row{gap:7px;font-size:12px}.dns-chart-top{align-items:flex-start}.dns-chart-top>.hint{text-align:right;max-width:100px}}
.dns-legend{display:flex;gap:16px;margin-bottom:8px;font-size:10px;color:var(--muted)}.dns-legend span{display:flex;align-items:center;gap:6px}.dns-legend span:before{content:"";height:7px;width:7px;border-radius:2px;background:var(--blue);opacity:.8}.dns-legend .dns-stop:before{background:#d99a25;opacity:1}

/* v28: local controls and a consistent, compact section hierarchy. */
#main>h1,.routers-heading h1{font-size:24px;line-height:1.25;font-weight:650;letter-spacing:-.6px;margin:0 0 20px}.panel,.router-card{border-radius:18px}.analytics-panel{margin-top:0}.panel h2{font-size:16px}.segmented{display:flex;gap:3px;padding:4px;background:var(--line);border-radius:12px;width:max-content;max-width:100%;margin:16px 0;overflow:auto}.segmented button{min-height:40px;border-radius:9px;padding:9px 15px;background:transparent;font-size:12px;white-space:nowrap;color:var(--muted)}.segmented button.active{background:var(--card);color:var(--blue);box-shadow:0 1px 5px #10203910;font-weight:650}.section-fold{border-top:1px solid var(--line);margin:12px 0 0}.section-fold>summary{cursor:pointer;min-height:44px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px;font-weight:550;list-style:none;color:var(--muted);padding:12px 0}.section-fold>summary::-webkit-details-marker{display:none}.section-fold>summary:after{content:'';width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg);margin:0 5px 4px 0;flex-shrink:0}.section-fold[open]>summary:after{transform:rotate(225deg);margin-bottom:0}.section-fold>summary:focus-visible{outline:3px solid #819ffc;outline-offset:3px}.section-fold .panel{border:0;box-shadow:none;padding:12px 0;margin:0}.dns-home{margin-top:10px;display:grid;gap:7px}.dns-home-row{display:grid;grid-template-columns:minmax(0,1fr) auto 74px;align-items:center;gap:10px;font-size:12px;font-variant-numeric:tabular-nums}.dns-home-row>b,.dns-home-row>small{text-align:right}.tile .dns-home-row small{font-size:9px;margin:0}.dns-home-row.reading-head{font-size:9px}.firmware-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:4px}.firmware-row .router-firmware{margin-top:0}.firmware-row .version-update{min-height:36px;padding:6px 10px;margin:0;font-size:11px;flex-shrink:0}.router-metrics{border-top:1px solid var(--line);padding-top:12px}.router-tests{flex-wrap:wrap}.router-test{display:flex;width:auto;padding:8px 12px;gap:7px;min-height:40px;height:auto;font-size:11px}.router-test .test-icon{width:19px;height:13px}.router-test .test-icon.quality{width:19px;height:19px}.router-open{cursor:default}.router-speed,.router-quality{border:1px solid var(--line)}.router-quality-head{flex-wrap:wrap}.section-temperatures{margin:6px 0 15px}.section-temperatures .value{font-size:27px;line-height:1.4}.summary-values{display:flex;gap:20px;align-items:center;justify-content:space-between;margin:7px 0 18px;font-variant-numeric:tabular-nums}.summary-number{font-size:28px;letter-spacing:-.5px;font-weight:650}.summary-delta{font-size:12px;color:var(--blue);text-align:right}.summary-delta small{display:block;font-size:10px;color:var(--muted);margin-bottom:4px}.compact-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px 18px;align-items:center;border-bottom:1px solid var(--line);padding:12px 0;font-size:12px}.compact-row small.hint{display:block;font-size:10px;margin:5px 0 0}.compact-row>b{text-align:right;font-variant-numeric:tabular-nums}.compact-row.reading-head{color:var(--muted);padding:0 0 8px}.compact-row.reading-head small{text-align:right}.clean-version{grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:15px 0;gap:6px 12px}.clean-version>strong{grid-column:1;grid-row:1}.clean-version>.version-state{grid-column:1;grid-row:2;font-size:11px;font-weight:500;overflow-wrap:anywhere}.clean-version>.version-update{grid-column:2;grid-row:1/3;justify-self:end;margin:0;min-height:40px;padding:8px 12px}.update-node{padding:15px 0;border-top:1px solid var(--line)}.update-node-head{display:flex;align-items:center;flex-wrap:wrap;gap:7px 12px;font-size:13px}.update-node-head>.hint{margin:0}.security-pill{font-size:10px;background:#fff0ed;color:#b64a36;padding:5px 8px;border-radius:7px}.compact-actions{margin:12px 0 0}.compact-actions .version-update{margin:0;min-height:40px;padding:8px 12px;font-size:12px}.package-row{padding:9px 0;display:grid;gap:4px;font-size:12px;overflow-wrap:anywhere}.package-row.security-update{border-left:2px solid #d66d51;padding-left:10px}.grant-track,.stat-row .track{height:6px;background:var(--line);border-radius:6px;overflow:hidden;margin:12px 0}.grant-fill,.stat-row .fill{height:100%;border-radius:6px;background:var(--blue)}.grant-fill.warning{background:#da9b28}.stat-row .track{grid-column:1/-1;margin:4px 0}.chart-note:empty{display:none}.status-label{display:inline-block;margin-bottom:10px;font-size:12px;color:var(--muted)}.status-label.ok{color:var(--green)}.status-label.warning{color:#a56a0b}.status-label.critical{color:#c64343}.inline-operation{border-color:var(--blue);margin-bottom:22px}.operation-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.operation-head h2{margin:0}.operation-head button{border-radius:8px;padding:9px 12px;background:var(--soft);color:var(--blue);font-size:12px;min-height:40px}.inline-operation .report>b:first-child{font-size:17px}.server-charts .chart{padding:16px}.server-charts .chart h2{font-size:13px}.server-charts .chart-readout{font-size:10px}.dark .security-pill{background:#472b29;color:#ffb39c}
@media(min-width:900px){.server-charts{grid-template-columns:repeat(3,minmax(0,1fr))}.server-charts .chart-head{display:block}.server-charts .chart-readout{text-align:left;margin-top:5px}}
@media(max-width:430px){.panel{padding:17px}.summary-values{gap:10px;flex-wrap:wrap}.summary-number{font-size:25px}.summary-delta{font-size:11px}.dns-home-row{grid-template-columns:minmax(0,1fr) auto 62px;font-size:11px;gap:7px}.tile .dns-home-row small{font-size:8px}.firmware-row{align-items:flex-end}.firmware-row .router-firmware,.router-device.extender .firmware-row .router-firmware{margin-left:0}.clean-version{gap:6px 9px}.clean-version>.version-update{font-size:11px;padding:8px 10px}.segmented{width:100%;}.segmented button{flex:1;padding:8px 10px}.compact-row{gap:8px 10px;font-size:11px}.router-test{padding:8px 9px}.chart-readout{max-width:48%}}

/* v30: durable, component-local update controls. */
.dark .component-update[data-state="failed"] .component-update-status strong{color:#ff9d9d}
.location-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:#94a3b8}.location-dot.online{background:#1ba574}.location-dot.partial{background:#e7aa26}.location-dot.offline{background:#da4e4e}.location-dot.unknown{background:transparent;border:1.5px solid #94a3b8}.tile .internet-label{display:flex;align-items:center;gap:7px}
.component-update{grid-column:1/-1;min-width:0;margin-top:6px;overflow-anchor:none}.component-update-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.component-update-actions .version-update{min-height:40px;margin:0;font-size:12px;padding:9px 12px}.component-update-actions .quiet{padding:9px 12px;font-size:12px;min-height:40px}.component-update-status{display:flex;gap:10px;align-items:flex-start;padding:12px 0 5px;min-height:57px}.component-update-status strong{display:block;font-size:12px;line-height:1.5;font-weight:600}.component-update-status small{display:block;font-size:10px;color:var(--muted);line-height:1.6;margin-top:3px;font-variant-numeric:tabular-nums}.update-indicator{display:grid;place-items:center;flex:0 0 18px;width:18px;height:18px;border-radius:50%;margin-top:1px;font-size:12px;color:var(--muted);background:var(--soft)}.update-indicator.success{color:#178265;background:#e5f4ec}.update-indicator.failed{color:#b63d3d;background:#fbe8e8}.update-indicator.ready{color:var(--blue);background:var(--soft)}.update-indicator.busy{background:none;border:2px solid var(--line);border-top-color:var(--blue);animation:update-turn 1s linear infinite}.update-log{margin-top:5px;border-top:1px solid var(--line)}.update-log>summary{list-style:none;cursor:pointer;min-height:40px;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted);gap:12px}.update-log>summary::-webkit-details-marker{display:none}.update-log>summary:after{content:'';width:6px;height:6px;border-right:1.5px solid;border-bottom:1.5px solid;transform:rotate(45deg);margin-right:5px}.update-log[open]>summary:after{transform:rotate(225deg)}.update-log-entries{list-style:none;padding:0;margin:4px 0 12px;max-height:220px;overflow:auto;font-size:11px;line-height:1.6}.update-log-entries>li{display:grid;grid-template-columns:60px 1fr;gap:8px;padding:5px 0}.update-log-entries time{color:var(--muted);font-variant-numeric:tabular-nums}.update-log-detail{font-size:11px;line-height:1.65;color:var(--muted);padding:10px 0;overflow-wrap:anywhere}.update-log-detail>b:first-child{font-size:12px}.update-connection{font-size:11px;line-height:1.55;color:#a56a0b;margin:7px 0}.dark .update-indicator.success{background:#163d35;color:#8adfbb}.dark .update-indicator.failed{background:#4a282f;color:#ff9d9d}.dark .update-connection{color:#edc06a}.component-update [hidden]{display:none!important}.component-update[data-state="completed"] .component-update-status strong{color:var(--green)}.component-update[data-state="failed"] .component-update-status strong{color:#c64343}.component-update button:disabled{opacity:.6;cursor:default}.router-device .component-update{margin-left:89px}.router-device.extender .component-update{margin-left:69px}@keyframes update-turn{to{transform:rotate(360deg)}}@media(max-width:650px){.router-device .component-update,.router-device.extender .component-update{margin-left:0}}@media(prefers-reduced-motion:reduce){.update-indicator.busy{animation:none}}
