@font-face{font-family:"Space Grotesk";src:url(/assets/f/space-grotesk-5.2.10.woff2) format("woff2");font-weight:300 700;font-display:swap}
/* Industrial Calm Engine: slate surfaces, rust controls, colour only for telemetry */
:root{color-scheme:light dark;
--canvas:#f3f1ee;--panel:#fbfaf8;--raised:#ffffff;--active:#ece7e2;--ink:#1a1d21;--muted:#5d6168;--rule:#ddd6cf;--rule-soft:#ebe6e0;
--rust:#b8461f;--rust-hover:#a03c19;--on-rust:#fff;--rust-soft:#f7e3da;--rust-ink:#8a2f10;
--ok:#18884a;--bad:#c8302a;--busy:#0b7fb3;--warn:#9a6a00;--lock:#8a3fd1;
--focus:#b8461f;--code:#0b0e12;--code-ink:#d6dae0;--code-muted:#6c7480;--shadow:0 1px 2px rgb(26 29 33/.06),0 8px 24px rgb(26 29 33/.06);
--r-sm:.5rem;--r:1rem;--r-md:1.5rem;--pill:9999px;
--head:"Space Grotesk",system-ui,sans-serif;--mono:ui-monospace,"JetBrains Mono",SFMono-Regular,Menlo,Consolas,monospace;
font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:15px;line-height:1.5;background:var(--canvas);color:var(--ink);font-variant-numeric:tabular-nums;-webkit-text-size-adjust:100%}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){
--canvas:#0b0e12;--panel:#111418;--raised:#191c20;--active:#272a2e;--ink:#e1e2e8;--muted:#9aa3ae;--rule:#2a313c;--rule-soft:#1f252d;
--rust:#ea6944;--rust-hover:#f07a57;--on-rust:#1a0700;--rust-soft:#3a1d14;--rust-ink:#ffb5a0;
--ok:#2ecc71;--bad:#f85149;--busy:#38bdf8;--warn:#e3b341;--lock:#b77cf7;--focus:#ffb5a0;--code:#0b0e12;--code-ink:#d6dae0;--code-muted:#5d6672;--shadow:none}}
:root[data-theme=dark]{color-scheme:dark;
--canvas:#0b0e12;--panel:#111418;--raised:#191c20;--active:#272a2e;--ink:#e1e2e8;--muted:#9aa3ae;--rule:#2a313c;--rule-soft:#1f252d;
--rust:#ea6944;--rust-hover:#f07a57;--on-rust:#1a0700;--rust-soft:#3a1d14;--rust-ink:#ffb5a0;
--ok:#2ecc71;--bad:#f85149;--busy:#38bdf8;--warn:#e3b341;--lock:#b77cf7;--focus:#ffb5a0;--code:#0b0e12;--code-ink:#d6dae0;--code-muted:#5d6672;--shadow:none}
:root[data-theme=light]{color-scheme:light}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;min-height:100dvh;background:var(--canvas)}
a{color:inherit;text-decoration:underline;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent);text-underline-offset:.22em;overflow-wrap:anywhere}
a:hover{text-decoration-color:currentColor}
::selection{background:var(--rust);color:var(--on-rust)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
html{scrollbar-color:var(--rule) transparent}
h1,h2,h3{font-family:var(--head);line-height:1.2;margin:0 0 .75rem;overflow-wrap:anywhere;text-wrap:balance;font-weight:600}
h1{font-size:2rem;letter-spacing:-.025em}
h2{font-size:1.25rem;letter-spacing:-.015em;margin-top:.5rem}
h3{font-size:1.05rem;letter-spacing:-.01em}
p{margin:.5rem 0 1rem;max-width:72ch}
.muted,small{color:var(--muted)}
small{font-size:.85rem}
strong{font-weight:700}
code,pre,textarea.code,.mono-text{font-family:var(--mono)}
code{overflow-wrap:anywhere;font-size:.88em;background:var(--active);padding:.05em .4em;border-radius:.35rem}
pre code{background:none;padding:0}
pre{font-size:.8rem;line-height:1.65;max-width:100%;overflow:auto;background:var(--code);color:var(--code-ink);border:1px solid var(--rule);border-radius:var(--r);padding:1rem 1.15rem;white-space:pre-wrap;overflow-wrap:anywhere;scrollbar-color:#323539 transparent}
/* Controls: pills */
button,input,textarea,select{font:inherit;max-width:100%;accent-color:var(--rust)}
button,.button{min-height:44px;padding:.5rem 1.15rem;border:1px solid var(--rule);border-radius:var(--pill);background:var(--raised);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;text-decoration:none;font-weight:600;transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out}
button:hover,.button:hover{background:var(--active);border-color:color-mix(in srgb,var(--ink) 25%,var(--rule));text-decoration:none}
button:active,.button:active{background:var(--rule)}
button.primary,.button.primary{background:var(--rust);color:var(--on-rust);border-color:var(--rust)}
button.primary:hover,.button.primary:hover{background:var(--rust-hover);border-color:var(--rust-hover)}
button.danger{color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,var(--raised));border-color:color-mix(in srgb,var(--bad) 35%,var(--rule))}
button.danger:hover{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 18%,var(--raised))}
button:disabled,button:disabled:hover{opacity:.45;cursor:not-allowed}
button[aria-busy=true]{cursor:progress}
input,textarea,select{display:block;width:100%;padding:.6rem .95rem;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--raised);color:var(--ink);caret-color:var(--rust);min-height:44px}
input:hover,textarea:hover,select:hover{border-color:color-mix(in srgb,var(--ink) 30%,var(--rule))}
input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--focus);outline-offset:0;border-color:transparent}
textarea{min-height:9rem;resize:vertical;line-height:1.55}
textarea.code{font-size:.85rem;background:var(--code);color:var(--code-ink)}
input[type=checkbox],input[type=radio]{width:20px;height:20px;min-height:20px;padding:0;display:inline-block}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
label{display:block;font-family:var(--mono);font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:1.1rem 0 .4rem}
input:user-invalid:not(:focus),textarea:user-invalid:not(:focus),select:user-invalid:not(:focus){border-color:var(--bad);box-shadow:inset 0 0 0 1px var(--bad)}
summary{cursor:pointer;min-height:44px;padding:.7rem 0;font-weight:600;font-family:var(--head)}
summary:hover{color:var(--rust-ink)}
/* Shell */
.i{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
.app{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"band" "work"}
.band{grid-area:band;background:color-mix(in srgb,var(--canvas) 85%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;min-height:4.25rem;position:sticky;top:0;z-index:4;border-bottom:1px solid var(--rule)}
.brand{font-family:var(--head);font-size:1.2rem;font-weight:700;letter-spacing:-.03em;text-decoration:none;color:var(--ink);display:inline-flex;align-items:center;gap:.7rem}
.brand:hover{text-decoration:none}
.brand-tile{width:40px;height:40px;border-radius:50%;background:var(--rust);display:grid;place-items:center;flex:none}
.brand-tile .i{color:var(--on-rust);width:20px;height:20px;stroke-width:2.4}
.brand-name{display:flex;flex-direction:column;line-height:1.1}
.brand-ver{font-family:var(--mono);font-size:.68rem;font-weight:500;letter-spacing:.02em;color:var(--muted)}
.search{flex:1;max-width:40rem;position:relative;margin:0}
.search .i{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.search input{margin:0;min-height:44px;border-radius:var(--pill);background:var(--panel);padding-left:2.75rem}
.issue{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;display:inline-flex;align-items:center;gap:.5rem;padding:.45rem .85rem;border:1px solid var(--rule);border-radius:var(--pill);background:var(--panel);margin-left:auto}
.issue::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok)}
.issue time{color:var(--ink);font-weight:600}
.band .actions{display:flex;gap:.5rem;align-items:center}
.icon-button{width:44px;padding:0;border-radius:50%}
.install{background:var(--panel)}
.user-chip{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;padding:.25rem .9rem .25rem .25rem;border-radius:var(--pill);border:1px solid var(--rule);background:var(--panel);min-height:44px;max-width:15rem}
.user-chip:hover{background:var(--active);text-decoration:none}
.user-name{font-size:.85rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--rust-soft);color:var(--rust-ink);font-family:var(--head);font-weight:700;flex:none}
.band-brand,.menu-button{display:none}
.strip{display:none}
.workspace{grid-area:work;min-width:0}
.main{padding:2rem 1.5rem 3rem;max-width:96rem;margin:0 auto;min-width:0;width:100%}
.main:focus{outline:none}
@media(min-width:64rem){
.app{grid-template-columns:17rem minmax(0,1fr);grid-template-areas:"strip band" "strip work"}
.strip{grid-area:strip;display:flex;flex-direction:column;position:sticky;top:0;height:100dvh;background:var(--panel);border-right:1px solid var(--rule);padding:1.25rem .85rem 1rem;overflow-y:auto;scrollbar-width:thin}
.rail-brand{padding:0 .5rem 1.25rem}
.rail{display:flex;flex-direction:column;gap:.15rem;flex:1}
.rail-heading{font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:.8rem .9rem .3rem}
.rail-heading:first-child{margin-top:0}
.rail a{display:flex;align-items:center;gap:.8rem;min-height:38px;padding:0 1rem;border-radius:var(--pill);text-decoration:none;color:color-mix(in srgb,var(--ink) 82%,var(--muted));font-size:.92rem;font-weight:500}
.rail a .i{color:var(--muted)}
.rail a:hover{background:var(--active);color:var(--ink)}
.rail a[aria-current=page]{background:var(--rust);color:var(--on-rust);font-weight:600}
.rail a[aria-current=page] .i{color:var(--on-rust)}
.rail-foot{display:grid;gap:.6rem;margin-top:1rem}
.rail-foot form{display:grid;gap:.4rem;padding:.8rem;border:1px solid var(--rule);border-radius:var(--r);background:var(--raised)}
.rail-foot form label{margin:0}
.rail-foot form select,.rail-foot form button{min-height:36px;font-size:.85rem}
.user-card{display:flex;align-items:center;gap:.65rem;padding:.6rem;border:1px solid var(--rule);border-radius:var(--r);background:var(--raised)}
.user-card-name{flex:1;min-width:0;text-decoration:none;font-weight:600;font-size:.88rem;display:flex;flex-direction:column;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.user-card-name small{font-size:.72rem;font-weight:400}
.user-card .icon-button{width:38px;min-height:38px;background:transparent;border-color:transparent}
.band{padding:.75rem 2rem}
.main{padding:2rem 2rem 4rem}
}
/* Page structure */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem 1.5rem;margin-bottom:1.75rem;flex-wrap:wrap}
.page-head h1{margin:0}
.page-head p{margin:.35rem 0 0;color:var(--muted)}
.actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.section{padding:1.25rem 0;border-top:1px solid var(--rule)}
details.section>summary{font-size:1.05rem}
.panel{padding:1.35rem 1.5rem;border:1px solid var(--rule);background:var(--panel);border-radius:var(--r-md);box-shadow:var(--shadow)}
.service-heading{margin-bottom:1rem}

.service-heading+.tabs{margin-top:0}
.service-heading h1{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;font-size:1.6rem}
.form{max-width:44rem}
.form footer{margin-top:1.5rem;display:flex;gap:.5rem;flex-wrap:wrap}
dt{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
dd{margin:.15rem 0 .95rem;overflow-wrap:anywhere;font-weight:500}
.mono{font-variant-numeric:tabular-nums;font-family:var(--mono)}
/* Records: rounded rows with a status edge */
.list{list-style:none;padding:0;margin:0;display:grid;gap:.6rem}
.list>li{position:relative;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);padding:1rem 1.35rem;display:flex;gap:.75rem 1.25rem;align-items:center;justify-content:space-between;flex-wrap:wrap;min-height:4rem;overflow:hidden}
.list>li:hover{border-color:color-mix(in srgb,var(--ink) 22%,var(--rule))}
.list>li:has(.status)::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--rule)}
.list>li:has(.status.good)::before{background:var(--ok)}
.list>li:has(.status.bad)::before{background:var(--bad)}
.list>li:has(.status.busy)::before{background:var(--busy)}
.list>li:has(.status.warn)::before,.list>li:has(.status.watch)::before{background:var(--warn)}
.list h2,.list h3{margin:0 0 .2rem;font-size:1.1rem}
.list p{margin:0;color:var(--muted);font-size:.85rem}
.list .identity{flex:1;min-width:0;overflow-wrap:anywhere}
.list .identity a{text-decoration:none}
.list .identity a:hover{text-decoration:underline}
.table-scroll{max-width:100%;overflow-x:auto;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md)}
.table-scroll table{border-collapse:collapse;width:100%;font-size:.88rem}
.table-scroll th,.table-scroll td{white-space:nowrap;padding:.7rem 1.1rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--rule-soft)}
.table-scroll th{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600;border-bottom:1px solid var(--rule);background:var(--panel);position:sticky;top:0}
.table-scroll tr:last-child td{border-bottom:0}
.table-scroll tbody tr:hover td{background:var(--raised)}
.table-scroll a{overflow-wrap:normal}
table{font-variant-numeric:tabular-nums}
/* Status: dot + mono word, colour = telemetry only */
.status{--c:var(--muted);font-family:var(--mono);font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;display:inline-flex;align-items:center;gap:.45rem;color:var(--c);padding:.25rem .7rem;border-radius:var(--pill);background:color-mix(in srgb,var(--c) 12%,transparent)}
.status::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c);flex:none}
.status.good{--c:var(--ok)}
.status.watch,.status.warn{--c:var(--warn)}
.status.bad{--c:var(--bad)}
.status.busy{--c:var(--busy)}
.status.busy::before{box-shadow:0 0 0 3px color-mix(in srgb,var(--busy) 30%,transparent)}
.status.idle{--c:var(--muted)}
.status.lock{--c:var(--lock)}
/* Messages */
.empty{padding:2.75rem 1.25rem;text-align:center;color:var(--muted);background:var(--panel);border:1px dashed var(--rule);border-radius:var(--r-md)}
.empty p{margin:.25rem auto}
.error{color:var(--bad);padding:.85rem 1.1rem;border:1px solid color-mix(in srgb,var(--bad) 45%,transparent);background:color-mix(in srgb,var(--bad) 9%,var(--panel));border-radius:var(--r);margin:1rem 0;font-weight:500}
.notice{padding:.85rem 1.1rem;background:var(--panel);border:1px solid var(--rule);margin:1rem 0;border-radius:var(--r);box-shadow:inset 4px 0 0 var(--rust)}
.toast{position:fixed;bottom:1.25rem;right:1.25rem;max-width:min(26rem,calc(100vw - 2rem));padding:.85rem 1.25rem;background:var(--raised);color:var(--ink);border:1px solid var(--rule);border-radius:var(--r);z-index:6;font-weight:500;box-shadow:0 12px 32px rgb(0 0 0/.35)}
.toast:empty{display:none}
/* Tabs: pill track */
.tabs{display:flex;flex-wrap:wrap;gap:.25rem;padding:.3rem;margin-bottom:1.5rem;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md)}
.tabs a{padding:0 .95rem;min-height:40px;display:inline-flex;align-items:center;text-decoration:none;color:var(--muted);font-weight:500;font-size:.88rem;border-radius:var(--pill)}
.tabs a:hover{color:var(--ink);background:var(--active)}
.tabs a[aria-current=page]{color:var(--on-rust);background:var(--rust);font-weight:600}
/* Dialogs */
dialog{padding:1.6rem;max-width:min(32rem,calc(100vw - 2rem));width:100%;border:1px solid var(--rule);border-radius:var(--r-md);background:var(--panel);color:var(--ink);box-shadow:0 24px 60px rgb(0 0 0/.45)}
dialog::backdrop{background:rgb(5 7 10/.6);backdrop-filter:blur(3px)}
dialog h2{margin-top:0}
dialog .actions{justify-content:flex-end;margin-top:1.5rem}
#confirm{border-color:color-mix(in srgb,var(--bad) 50%,var(--rule))}
/* Auth */
.auth{max-width:27rem;margin:clamp(2rem,10vh,7rem) auto;padding:2.25rem 2rem 2rem;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);box-shadow:var(--shadow)}
.auth .brand{color:var(--ink);margin:0 0 1.5rem;font-size:1.5rem}
.auth form{margin:1.25rem 0}
.auth button[type=submit]{width:100%;margin-top:1.4rem}
.auth-links{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:1.25rem;font-size:.9rem}
/* Logs */
.log-view{height:60dvh;min-height:16rem;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;margin:0}
.log-view.nowrap{white-space:pre;overflow-wrap:normal}
/* Metrics */
.metric-chart{margin:1.5rem 0 2rem;max-width:48rem}
.metric-chart figcaption{margin-bottom:.75rem;font-variant-numeric:tabular-nums;font-family:var(--head);font-weight:600}
.metric-chart svg{display:block;width:100%;height:auto;min-height:6rem;overflow:visible}
.metric-chart line{stroke:var(--rule);stroke-width:1;stroke-dasharray:3 4}
.metric-chart polyline{fill:none;stroke:var(--rust);stroke-width:2;vector-effect:non-scaling-stroke}
.metric-chart circle{fill:var(--rust)}
.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:1rem;max-width:80rem;margin:1.5rem 0 2rem}
.metric-grid .metric-chart{margin:0;min-width:0;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);padding:1.1rem 1.25rem}
.metric-scale,.metric-time{display:flex;justify-content:space-between;gap:1rem;color:var(--muted);font-family:var(--mono);font-size:.72rem;font-variant-numeric:tabular-nums}
.metric-time span{max-width:50%;overflow-wrap:anywhere}
.metric-time span:last-child{text-align:end}
/* Page head, chips, tiles */
.eyebrow{display:flex;align-items:center;gap:.6rem;margin:0 0 .6rem;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.02em;padding:.2rem .6rem;border-radius:var(--r-sm);background:var(--active);color:color-mix(in srgb,var(--ink) 80%,var(--muted));white-space:nowrap}
.chip .i{width:13px;height:13px}
.chip.accent{background:var(--rust-soft);color:var(--rust-ink);letter-spacing:.14em;text-transform:uppercase;border-radius:var(--pill);padding:.3rem .8rem}
.eyebrow-meta{font-family:var(--mono);font-size:.75rem;color:var(--muted)}
.page-head h1{font-size:2.1rem}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:1rem;margin:0 0 1.75rem}
.tile{position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);padding:1.15rem 1.35rem 1.2rem;display:flex;flex-direction:column;gap:.35rem;min-height:9rem}
.tile::after{content:"";position:absolute;right:-2.5rem;bottom:-2.5rem;width:7rem;height:7rem;border-radius:50%;background:var(--active);opacity:.55}
.tile-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem}
.tile-label{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.tile-head .i{color:var(--muted)}
.tile-value{margin:.2rem 0 0;font-family:var(--head);font-size:2.4rem;font-weight:600;letter-spacing:-.03em;line-height:1;position:relative;z-index:1}
.tile-unit{font-family:var(--mono);font-size:.78rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin-left:.45rem;color:var(--muted)}
.tile-sub{margin:auto 0 0;font-family:var(--mono);font-size:.74rem;color:var(--muted);position:relative;z-index:1}
.tile.good .tile-head .i,.tile.good .tile-unit{color:var(--ok)}
.tile.bad .tile-head .i,.tile.bad .tile-value{color:var(--bad)}
.tile.busy .tile-head .i,.tile.busy .tile-unit{color:var(--busy)}
.tile.warn .tile-head .i{color:var(--warn)}
.meter{display:block;height:6px;border-radius:var(--pill);background:var(--active);overflow:hidden;position:relative;z-index:1;margin-top:.35rem}
.meter span{display:block;height:100%;border-radius:inherit;background:var(--rust)}
.tile.good .meter span{background:var(--ok)}
.tile.warn .meter span{background:var(--warn)}
/* Filters + section titles */
.filters{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;padding:.45rem;margin:0 0 1.75rem;background:var(--panel);border:1px solid var(--rule);border-radius:var(--pill)}
.filter-label{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:0 .9rem}
.filters a{display:inline-flex;align-items:center;gap:.45rem;min-height:40px;padding:0 1rem;border-radius:var(--pill);text-decoration:none;font-size:.88rem;font-weight:500;color:var(--ink)}
.filters a:hover{background:var(--active)}
.filters a[aria-current=page]{background:var(--rust);color:var(--on-rust);font-weight:600}
.count{font-family:var(--mono);font-size:.72rem;opacity:.75}
.section-title{display:flex;align-items:center;gap:.75rem;margin:0 0 1rem;flex-wrap:wrap}
.section-title h2{margin:0;font-size:1.45rem}
/* Execution feed */
.feed{list-style:none;padding:0;margin:0 0 2rem;display:grid;gap:.75rem}
.run{--c:var(--muted);position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.5rem 1.1rem;align-items:center;padding:1.05rem 1.35rem 1.05rem 1.5rem;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);overflow:hidden}
.run::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c)}
.run.good{--c:var(--ok)}.run.bad{--c:var(--bad)}.run.busy{--c:var(--busy)}
.run-icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent)}
.run-icon .i{width:20px;height:20px}
.run.busy .run-icon .i{animation:spin 1.4s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.run-main{min-width:0}
.run-line{display:flex;align-items:baseline;gap:.4rem .7rem;flex-wrap:wrap}
.run-service{font-family:var(--head);font-size:1.15rem;font-weight:600;letter-spacing:-.015em;text-decoration:none}
.run-service:hover{text-decoration:underline}
.run-line .chip{color:var(--rust-ink);background:var(--rust-soft)}
.run-title{margin:0;font-family:inherit;font-size:.95rem;font-weight:500;flex-basis:100%;min-width:0}
.run-line .run-service+.chip+.run-title,.run-line .run-service+.run-title{flex-basis:auto;flex:1}
.run-title a{text-decoration:none}
.run-title a:hover{text-decoration:underline}
.run-meta{margin:.45rem 0 0;display:flex;align-items:center;gap:.4rem 1.1rem;flex-wrap:wrap;font-family:var(--mono);font-size:.74rem;color:var(--muted)}
.run-meta>span:not(.status){display:inline-flex;align-items:center;gap:.35rem}
.run-meta .i{width:14px;height:14px}
.run-meta .status{padding:0;background:none}
.run-error{margin:.6rem 0 0;padding:.5rem .8rem;border-radius:var(--r-sm);background:color-mix(in srgb,var(--bad) 10%,transparent);color:var(--bad);font-family:var(--mono);font-size:.76rem}
.run>.actions{flex-wrap:nowrap}
.run .actions .button,.run .actions button{min-height:40px;padding:.35rem 1rem;font-size:.85rem}
.run .actions form button{color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,var(--raised))}
/* Project cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr));gap:1rem;margin:0 0 2rem}
.card{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);padding:1.2rem 1.25rem 1rem;display:flex;flex-direction:column;gap:.8rem;min-width:0}
.card.bad{border-color:color-mix(in srgb,var(--bad) 45%,var(--rule))}
.card-head{display:flex;align-items:flex-start;gap:.8rem}
.card-head>div{flex:1;min-width:0}
.card-head h2{margin:0;font-size:1.2rem}
.card-head h2 a{text-decoration:none}
.card-head h2 a:hover{text-decoration:underline}
.card-head p{margin:.15rem 0 0;font-size:.82rem}
.card-glyph{width:40px;height:40px;border-radius:var(--r);display:grid;place-items:center;background:var(--active);color:var(--rust-ink);flex:none}
.stacks{list-style:none;margin:0;padding:0;display:grid;gap:.15rem;border-top:1px solid var(--rule-soft);padding-top:.6rem}
.stacks li{display:flex;align-items:center;gap:.6rem;min-height:40px;padding:0 .3rem}
.stacks li a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;font-weight:500}
.stacks li a:hover{text-decoration:underline}
.kind{font-size:.7rem;color:var(--muted)}
.more{font-family:var(--mono);font-size:.75rem;color:var(--rust-ink);text-decoration:none;padding:0 .3rem}
.card-empty{margin:0;font-size:.85rem}
/* Service header card */
.service-card{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);padding:1.3rem 1.4rem;display:grid;gap:1rem}
.service-top{display:flex;gap:1rem;align-items:flex-start}
.service-glyph{width:56px;height:56px;border-radius:var(--r);display:grid;place-items:center;background:var(--active);color:var(--rust-ink);flex:none}
.service-glyph .i{width:26px;height:26px}
.service-id{min-width:0;flex:1}
.crumb{margin:0 0 .25rem;font-family:var(--mono);font-size:.74rem;color:var(--muted)}
.crumb a{text-decoration:none}
.crumb a:hover{text-decoration:underline}
.service-id h1{margin:0;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;font-size:1.9rem}
.service-id h1 .chip{letter-spacing:.12em;text-transform:uppercase;font-size:.7rem}
.service-meta{margin:.45rem 0 0;display:flex;gap:.4rem 1.2rem;flex-wrap:wrap;font-family:var(--mono);font-size:.78rem;color:var(--muted)}
.service-meta a{color:var(--busy);text-decoration:none}
.service-meta span{display:inline-flex;align-items:center;gap:.35rem}
.service-meta .i{width:14px;height:14px}
.service-card .actions form{display:contents}
.service-card .actions{gap:.5rem}
form[action$=".deploy"] button{background:var(--rust);color:var(--on-rust);border-color:var(--rust)}
form[action$=".deploy"] button:hover{background:var(--rust-hover)}
form[action$=".stop"] button{color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,var(--raised));border-color:color-mix(in srgb,var(--bad) 35%,var(--rule))}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:.75rem;margin:0 0 1.5rem}
.facts>div{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r);padding:.85rem 1rem}
.facts dd{margin:.25rem 0 0}
.split{display:grid;gap:1.25rem;align-items:start}
@media(min-width:80rem){.split{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.split .run{grid-template-columns:auto minmax(0,1fr)}.split .run>.actions{grid-column:2}}
.log-panel{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-md);padding:1.1rem;display:grid;gap:.7rem;min-width:0}
.log-head{display:flex;align-items:center;gap:.75rem;justify-content:space-between}
.log-head h2{margin:0;font-size:1.15rem;display:flex;align-items:center;gap:.5rem}
.log-sub{margin:0;font-size:.78rem;color:var(--muted)}
.log-sub .chip{color:var(--rust-ink);background:var(--rust-soft)}
.log-tools{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.log-tools button,.log-tools .button{min-height:36px;padding:.25rem .9rem;font-size:.82rem}
.log-tools label.inline{min-height:36px;font-size:.85rem}
.log-panel .log-view{height:min(60dvh,34rem)}
.empty>.i{width:32px;height:32px;color:var(--rust-ink);margin-bottom:.5rem}
/* Utilities */
.skip{position:absolute;left:1rem;top:-10rem;background:var(--panel);padding:.75rem 1rem;z-index:20;border-radius:var(--r-sm);font-weight:600}
.skip:focus{top:1rem}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.htmx-request button[type=submit]{opacity:.6;pointer-events:none}
.inline{display:inline}
.inline label{display:inline}
.inline input{display:inline;width:auto}
label.inline{display:flex;align-items:center;gap:.6rem;min-height:44px;margin:.25rem 0;font-family:inherit;font-size:.95rem;letter-spacing:0;text-transform:none;color:var(--ink);font-weight:500}
label.inline input{margin:0;flex:none}
.brand-footer{text-align:center;color:var(--muted);font-size:.8rem;padding:1.5rem 1rem 2rem}
.bottom-nav{display:none}
.install{display:none}
.install:not([hidden]){display:inline-flex}
#navigation-drawer nav{display:grid;gap:.2rem;margin:1rem 0}
#navigation-drawer nav a{padding:.55rem 1rem;min-height:44px;display:flex;align-items:center;text-decoration:none;font-weight:500;border-radius:var(--pill)}
#navigation-drawer nav a:hover{background:var(--active)}
#navigation-drawer .drawer-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}
#navigation-drawer nav a[aria-current=page]{background:var(--rust);color:var(--on-rust);font-weight:600}
/* Terminal: explicit connection only */
#terminal{min-width:0}
#terminal-screen{width:100%;height:clamp(240px,52dvh,640px);overflow:hidden;background:var(--code);border:1px solid var(--rule);border-radius:var(--r);padding:8px}
#terminal-screen:empty{display:none}
#terminal-command input{font-family:var(--mono);font-size:16px}
#terminal .actions select{width:auto}
#terminal-screen .xterm-helper-textarea{min-height:0;resize:none}
/* Phone */
@media(max-width:63.99rem){
.band-brand{display:inline-flex}
.menu-button{display:inline-flex}
.brand-ver{display:none}
}
@media(max-width:47.99rem){
.band{padding:.6rem 1rem;gap:.6rem;flex-wrap:wrap}
.issue,.user-chip,.install span{display:none}
.search{order:3;flex-basis:100%;max-width:none}
.band .actions{margin-left:auto}
.main{padding:1.25rem 1rem calc(6.5rem + env(safe-area-inset-bottom))}
.tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.tabs a{white-space:nowrap}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;gap:.2rem;background:color-mix(in srgb,var(--panel) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--rule);padding:.4rem .4rem calc(.4rem + env(safe-area-inset-bottom));z-index:4}
.bottom-nav a,.bottom-nav button{flex:1;min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;padding:.3rem .2rem;font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600;text-decoration:none;color:var(--muted);border-radius:var(--r);border:0;background:none}
.bottom-nav .i{width:20px;height:20px}
.bottom-nav a[aria-current=page]{color:var(--rust-ink);background:var(--rust-soft)}
.auth{margin:1rem;padding:1.75rem 1.25rem}
.panel{padding:1.1rem}
.page-head h1{font-size:1.75rem}
.page-head>.actions:not(:empty){width:100%}
.toast{bottom:6rem;right:1rem;left:1rem;max-width:none}
.tiles{grid-template-columns:1fr 1fr;gap:.75rem}
.tile{min-height:7.5rem;padding:1rem}
.tile-value{font-size:1.85rem}
.tile-sub{font-size:.68rem}
.run{grid-template-columns:auto minmax(0,1fr);padding:1rem 1rem 1rem 1.2rem}
.run-icon{width:36px;height:36px}
.run>.actions{grid-column:1/-1}
.run>.actions>*{flex:1}
.filters{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.filter-label{display:none}
.filters a{white-space:nowrap;flex:none}
.run-line .run-title{flex-basis:100%!important}
.service-glyph{width:44px;height:44px}
.service-id h1{font-size:1.5rem}
.service-card .actions>*{flex:1 1 40%}
.list>li{align-items:flex-start;padding:1rem 1.1rem 1rem 1.25rem}
.list .actions{width:100%}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media print{.band,.strip,.bottom-nav,.toast{display:none}body{background:#fff}}
.feed-more{display:flex;justify-content:center;padding:.5rem 0}
