/* Native hidden always takes priority over layout display declarations. */
[hidden] { display: none !important; }
:root{
  --paper:#eeeadc; --paper2:#f6f3e8; --ink:#14263a; --ink2:#3d5168; --mute:#7a8796;
  --line:#c9c2ab; --sea:#1f5e6e; --sea-soft:#d5e3df; --signal:#e2502a; --signal-soft:#f6d9cc;
  --ok:#3d7a4a; --warn:#b98419;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --sans:"Avenir Next","Segoe UI Variable","Segoe UI",system-ui,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 var(--sans);min-height:100dvh;
  background-image:repeating-radial-gradient(circle at 85% -10%,transparent 0 38px,rgba(31,94,110,.07) 39px 40px);background-attachment:fixed}
body::after{content:"";position:fixed;inset:0;pointer-events:none;opacity:.35;
  background-image:radial-gradient(rgba(20,38,58,.08) 1px,transparent 1px);background-size:3px 3px}
h1,h2,h3{font-family:var(--serif);font-weight:600;margin:0 0 .4em;letter-spacing:-.01em}
h1{font-size:1.9rem} h2{font-size:1.35rem} h3{font-size:.8rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--sea);margin-top:1rem}
.mono{font-family:var(--mono)} .small{font-size:.82rem;color:var(--ink2)} .grow{flex:1}
.lede{color:var(--ink2);margin:0 0 1rem;max-width:62ch}
.empty{color:var(--mute);font-style:italic;font-family:var(--serif)}
button,.btnlink{font:600 .85rem var(--sans);border-radius:3px;padding:.55rem 1rem;cursor:pointer;border:1.5px solid var(--ink);
  background:transparent;color:var(--ink);transition:transform .12s,background .15s,color .15s;text-decoration:none;display:inline-block}
button:hover,.btnlink:hover{background:var(--ink);color:var(--paper2)}
button:active{transform:translateY(1px)}
button:disabled{opacity:.4;cursor:not-allowed;background:transparent;color:var(--ink)}
.primary{background:var(--sea);border-color:var(--sea);color:var(--paper2)}
.primary:hover{background:var(--ink);border-color:var(--ink)}
.danger.primary{background:var(--signal);border-color:var(--signal)}
.ghost.danger{border-color:var(--signal);color:var(--signal)}
.ghost.danger:hover{background:var(--signal);color:var(--paper2)}
.btnlink.off{opacity:.35;pointer-events:none}
input,textarea,select{font:inherit;color:var(--ink);background:var(--paper2);border:1.5px solid var(--line);border-radius:3px;padding:.55rem .7rem;width:100%}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--sea);box-shadow:0 0 0 3px var(--sea-soft)}
textarea{resize:vertical}

.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:1.5rem;padding:.7rem 1.5rem;background:rgba(238,234,220,.92);
  backdrop-filter:blur(6px);border-bottom:1.5px solid var(--ink)}
.brand{display:flex;align-items:center;gap:.6rem;color:var(--sea)}
.brand b{display:block;font:700 1.3rem var(--serif);color:var(--ink);line-height:1}
.brand small{font:.68rem var(--mono);color:var(--mute);text-transform:uppercase;letter-spacing:.1em}
.tabs{display:flex;gap:.2rem;flex:1;overflow-x:auto}
.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:.5rem .8rem;color:var(--ink2);background:none}
.tabs button:hover{color:var(--ink);background:none}
.tabs button.on{color:var(--ink);border-bottom-color:var(--signal)}
.hud{display:flex;align-items:center;gap:.6rem}
.tokens{font:.75rem var(--mono);color:var(--ink2);white-space:nowrap}
.tokens b{color:var(--ink);font-size:.9rem;display:inline-block}
.tokens b.bump{animation:bump .4s}
@keyframes bump{50%{transform:scale(1.25);color:var(--signal)}}
.lang{padding:.4rem .6rem;font-family:var(--mono)}
.stopall{background:var(--signal);border-color:var(--signal);color:#fff8f2;letter-spacing:.08em;font-weight:800}
.stopall:hover{background:#b8381a;border-color:#b8381a}

.notice{margin:1rem 1.5rem 0;padding:.6rem 1rem;border-left:4px solid var(--warn);background:#f3e6c4;font-size:.9rem}
.runbar{display:flex;align-items:center;gap:.8rem;margin:1rem 1.5rem 0;padding:.6rem 1rem;background:var(--ink);color:var(--paper2);border-radius:3px;font:.85rem var(--mono)}
.runbar button{color:var(--paper2);border-color:var(--paper2);padding:.35rem .8rem}
.runbar .ghost.danger{border-color:var(--signal);color:#ffb59f}
.pulse{width:10px;height:10px;border-radius:50%;background:var(--signal);animation:pulse 1.4s infinite}
.runbar.paused .pulse{animation:none;background:var(--warn)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(226,80,42,.6)}100%{box-shadow:0 0 0 12px rgba(226,80,42,0)}}

main{padding:1.5rem;max-width:1400px;margin:0 auto}
.view{animation:rise .35s ease-out}
@keyframes rise{from{opacity:0;transform:translateY(8px)}}
.split{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:1.5rem;align-items:start}
.col-side{position:sticky;top:5rem;display:grid;gap:1.5rem}
.col-main{display:grid;gap:1.5rem}
.card{background:var(--paper2);border:1.5px solid var(--ink);border-radius:3px;padding:1.4rem 1.5rem;box-shadow:5px 5px 0 rgba(20,38,58,.12);margin-bottom:0}
#view-local>.card{margin-bottom:1.5rem}
.cardhead{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem}
.cardhead h1,.cardhead h2,.cardhead h3{margin:0}
.field{display:block;margin-bottom:1rem}
.field>span{display:block;font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink2);margin-bottom:.3rem}
.field.narrow{max-width:140px;margin:0}
.row{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1rem}
.actions{display:flex;gap:.6rem;align-items:center;margin-top:1rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
.seg{border:0;padding:0;margin:0}
.seg legend{font:.72rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink2);margin-bottom:.3rem;padding:0}
.seg label{display:inline-block}
.seg input{position:absolute;opacity:0;width:0}
.seg span{display:inline-block;padding:.4rem .8rem;border:1.5px solid var(--line);margin-right:-1.5px;cursor:pointer;font-size:.85rem;transition:background .15s}
.seg input:checked+span{background:var(--ink);color:var(--paper2);border-color:var(--ink)}
.seg input:focus-visible+span{outline:2px solid var(--signal)}
.check{display:flex;gap:.5rem;align-items:center;cursor:pointer;font-size:.9rem}
.check input{width:auto;accent-color:var(--signal)}

.tabpicker{margin-top:.7rem;border:1.5px dashed var(--line);padding:.6rem;max-height:220px;overflow:auto}
.tabpicker label{display:flex;gap:.5rem;padding:.25rem 0;font-size:.85rem;align-items:baseline}
.tabpicker input{width:auto}
.tabpicker small{color:var(--mute);font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.planlist{padding:0;margin:0;list-style:none;counter-reset:q}
.planlist li{display:flex;gap:.6rem;align-items:center;margin-bottom:.5rem;counter-increment:q;animation:rise .25s}
.planlist li::before{content:"Q" counter(q);font:700 .8rem var(--mono);color:var(--signal);width:2.2rem}
.planlist li button{padding:.3rem .6rem;border-color:var(--line);color:var(--mute)}
.planlist li button:hover{background:var(--signal);border-color:var(--signal);color:#fff}
.skeleton-list div{height:2.4rem;margin-bottom:.5rem;background:linear-gradient(90deg,var(--sea-soft),var(--paper),var(--sea-soft));background-size:200% 100%;animation:shimmer 1.3s infinite linear}
@keyframes shimmer{to{background-position:-200% 0}}

.runmeta{font:.8rem var(--mono);color:var(--ink2);display:grid;gap:.15rem}
.runmeta .st{display:inline-block;padding:.05rem .45rem;border:1px solid currentColor;font-weight:700;text-transform:uppercase;font-size:.7rem}
.st.running,.st.planning{color:var(--sea)} .st.completed{color:var(--ok)} .st.error,.st.stopped{color:var(--signal)} .st.paused,.st.awaiting_confirmation{color:var(--warn)} .st.planned{color:var(--ink)}
.log{list-style:none;padding:0;margin:.4rem 0 0;max-height:340px;overflow:auto;font:.78rem/1.45 var(--mono);border-left:2px solid var(--line)}
.log li{padding:.2rem .6rem;animation:rise .2s}
.log li time{color:var(--mute);margin-right:.4rem}
.log li.error{color:var(--signal)} .log li.source{color:var(--sea)} .log li.done{color:var(--ok);font-weight:700}
.log li a{color:inherit}
.facts{list-style:none;padding:0;margin:0;max-height:300px;overflow:auto}
.facts li{font:.88rem var(--serif);padding:.45rem 0;border-bottom:1px dotted var(--line)}
.facts li sup{font:700 .7rem var(--mono);color:var(--signal);margin-left:.2rem}

.report{font:1rem/1.7 var(--serif);max-width:70ch}
.report h1,.report h2,.report h3{font-family:var(--serif);color:var(--ink);text-transform:none;letter-spacing:0}
.report h3{font-size:1.05rem}
.report code{font-family:var(--mono);background:var(--sea-soft);padding:0 .2rem}
.report.small{font-size:.85rem;max-height:420px;overflow:auto;margin-top:.8rem}
.sources{font-size:.85rem;padding-left:1.4rem}
.sources a{color:var(--sea);word-break:break-all}
.readout{white-space:pre-wrap;word-break:break-word;font:.8rem/1.5 var(--mono);background:var(--paper);border:1px solid var(--line);padding:.8rem;max-height:320px;overflow:auto}

.shot{aspect-ratio:16/10;background:var(--ink);display:grid;place-items:center;border-radius:2px;overflow:hidden}
.shot img{width:100%;height:100%;object-fit:contain;animation:rise .3s}
.shot .empty{color:var(--line)}
.strip{display:flex;gap:.4rem;overflow-x:auto;margin-top:.6rem}
.strip img{height:54px;border:2px solid transparent;cursor:pointer;opacity:.7}
.strip img.on,.strip img:hover{border-color:var(--signal);opacity:1}

.stats{display:flex;gap:2rem;margin:.6rem 0 1rem;font-family:var(--mono)}
.stats b{display:block;font:600 1.8rem var(--serif)}
.stats span{font-size:.7rem;text-transform:uppercase;color:var(--mute);letter-spacing:.1em}
.hlist,.tlist{list-style:none;padding:0;margin:0}
.hlist li{display:grid;grid-template-columns:80px 1fr auto;gap:1rem;padding:.75rem .5rem;border-top:1px solid var(--line);cursor:pointer;transition:background .15s,transform .15s}
.hlist li:hover,.hlist li.on{background:var(--sea-soft);transform:translateX(3px)}
.hlist .mode{font:700 .7rem var(--mono);text-transform:uppercase;color:var(--sea)}
.hlist .when{font:.75rem var(--mono);color:var(--mute)}
.tlist li{display:flex;gap:.6rem;align-items:center;padding:.6rem 0;border-top:1px solid var(--line)}
.tlist .t{flex:1;min-width:0}
.tlist .t b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tlist .t small{font:.72rem var(--mono);color:var(--mute);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tlist button{padding:.3rem .6rem;font-size:.75rem}
.avail{display:flex;gap:1.5rem;flex-wrap:wrap;font-family:var(--mono);font-size:.85rem}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:.4rem;background:var(--signal)}
.dot.yes{background:var(--ok)}
.meter{height:6px;background:var(--line);margin:.3rem 0 .8rem}
.meter i{display:block;height:100%;background:var(--sea);transition:transform .4s;transform-origin:left}
.mlist{max-height:240px;overflow:auto;font:.78rem var(--mono);padding:0;list-style:none;margin:.6rem 0 0}
.mlist li{padding:.25rem .3rem;cursor:pointer}
.mlist li:hover{background:var(--sea-soft)}
.mlist li.req{color:var(--ok);font-weight:700}

dialog{border:2px solid var(--ink);background:var(--paper2);color:var(--ink);padding:1.6rem;max-width:560px;width:92vw;box-shadow:8px 8px 0 rgba(20,38,58,.25)}
dialog::backdrop{background:rgba(20,38,58,.55)}
dialog[open]{animation:rise .2s}
.kicker{font:700 .72rem var(--mono);color:var(--signal);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .3rem}
.toasts{position:fixed;bottom:1rem;right:1rem;display:grid;gap:.5rem;z-index:50}
.toast{background:var(--ink);color:var(--paper2);padding:.7rem 1rem;border-left:4px solid var(--sea);font-size:.88rem;max-width:380px;animation:rise .25s}
.toast.err{border-color:var(--signal)}

@media (max-width:900px){
  .split{grid-template-columns:1fr}.col-side{position:static}
  .top{flex-wrap:wrap;gap:.6rem}.tabs{order:3;flex-basis:100%}
  .grid2{grid-template-columns:1fr} main{padding:1rem}
}
