:root{
  --ink:#0B0B0B; --panel:#141417; --line:rgba(255,255,255,.10);
  --paper:#fff; --muted:rgba(255,255,255,.62); --faint:rgba(255,255,255,.34);
  --c1:#22D3EE; --c2:#8B5CF6; --c3:#F472B6;
  --grad:linear-gradient(90deg,var(--c1),var(--c2),var(--c3));
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{
  background:var(--ink); color:var(--paper);
  font-family:Baskerville,"Times New Roman",Georgia,serif;
  min-height:100dvh; display:flex; flex-direction:column;
  -webkit-font-smoothing:antialiased;
  position:relative;
}
body::before{
  content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(60vmax 40vmax at 50% 0%,rgba(139,92,246,.16),transparent 70%),
    radial-gradient(40vmax 30vmax at 12% 100%,rgba(34,211,238,.10),transparent 70%),
    radial-gradient(40vmax 30vmax at 88% 100%,rgba(244,114,182,.10),transparent 70%);
}

/* ---- nav ---- */
.nav{
  display:flex; align-items:center; gap:1.5rem;
  padding:.9rem clamp(1rem,4vw,2.5rem);
  border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:10;
  background:rgba(11,11,11,.72); backdrop-filter:blur(10px);
}
.brand{display:flex; align-items:center; flex:0 0 auto}
.brand-mark{height:30px; width:auto; display:block}
.nav-links{display:flex; gap:1.4rem; align-items:center; margin-left:.5rem; flex:1 1 auto}
.nav-links a{
  color:var(--muted); text-decoration:none; font-size:1.05rem;
  padding:.25rem 0; border-bottom:2px solid transparent; transition:color .15s,border-color .15s;
}
.nav-links a:hover{color:var(--paper)}
.nav-links a.is-active{color:var(--paper); border-color:var(--c2)}
.nav-auth{display:flex; align-items:center; gap:.75rem; flex:0 0 auto}
.nav-user{color:var(--paper); font-size:1.02rem; opacity:.9}
.nav-form{display:inline}

/* ---- buttons ---- */
.btn{
  font-family:inherit; font-size:1rem; cursor:pointer; text-decoration:none;
  display:inline-block; padding:.5rem 1.1rem; border-radius:999px; border:1px solid transparent;
  transition:transform .12s,opacity .15s,background .15s,border-color .15s; line-height:1.2;
}
.btn:active{transform:translateY(1px)}
.btn-solid{background:var(--grad); color:#0B0B14; font-weight:600; border:0}
.btn-solid:hover{opacity:.92}
.btn-ghost{background:transparent; color:var(--paper); border-color:var(--line)}
.btn-ghost:hover{border-color:rgba(255,255,255,.4)}
.btn-wide{width:100%; text-align:center; padding:.7rem 1.1rem; font-size:1.05rem}

/* ---- layout ---- */
main{flex:1 0 auto; display:flex; flex-direction:column; align-items:center; justify-content:center;
  width:100%; padding:clamp(2rem,6vw,4rem) 5vw; text-align:center}

/* hero */
.hero{max-width:640px; animation:rise .8s cubic-bezier(.2,.7,.2,1) both}
.hero-mark{width:min(70vw,460px); height:auto; display:block; margin:0 auto}
.rule{width:min(44vw,280px); height:2px; border:0; border-radius:2px; background:var(--grad); margin:2rem auto 1.4rem}
.tagline{font-style:italic; font-size:clamp(1rem,1rem+.6vw,1.3rem); color:var(--muted)}
.badge{margin-top:1.6rem; color:var(--muted); font-style:italic}
.badge strong{color:var(--paper); font-style:normal}
.badge-lg{display:inline-block; font-size:1.05rem; font-style:normal; color:var(--paper);
  background:rgba(139,92,246,.14); border:1px solid rgba(139,92,246,.4);
  padding:.5rem 1rem; border-radius:999px; margin-bottom:1.5rem}

/* prose pages */
.prose{max-width:640px; text-align:left; animation:rise .7s cubic-bezier(.2,.7,.2,1) both}
.prose.center{text-align:center}
.prose h1{font-size:clamp(2rem,1.6rem+2vw,3rem); font-weight:600; margin-bottom:1rem; letter-spacing:-.01em}
.prose p{color:var(--muted); font-size:1.15rem; line-height:1.6; margin-bottom:1rem}
.prose form{margin-top:1.5rem}
.big404{font-size:clamp(4rem,10vw,7rem); background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent}

/* auth form */
.auth{width:100%; max-width:360px; text-align:left; animation:rise .7s cubic-bezier(.2,.7,.2,1) both}
.auth h1{font-size:2rem; font-weight:600; margin-bottom:1.2rem; text-align:center}
.auth-form{display:flex; flex-direction:column; gap:1rem; background:var(--panel);
  border:1px solid var(--line); border-radius:16px; padding:1.5rem}
.auth-form label{display:flex; flex-direction:column; gap:.4rem; font-size:.95rem; color:var(--muted)}
.auth-form input{
  font-family:ui-sans-serif,system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  font-size:1rem; padding:.7rem .8rem; border-radius:10px;
  border:1px solid var(--line); background:#0e0e11; color:var(--paper); width:100%;
}
.auth-form input:focus{outline:none; border-color:var(--c2); box-shadow:0 0 0 3px rgba(139,92,246,.25)}
.form-error{background:rgba(244,114,182,.12); border:1px solid rgba(244,114,182,.45);
  color:#fff; padding:.6rem .8rem; border-radius:10px; margin-bottom:1rem; font-size:.95rem; text-align:center}

/* footer */
.foot{flex:0 0 auto; display:flex; gap:.6rem; align-items:center; justify-content:center; flex-wrap:wrap;
  padding:1.4rem 5vw; border-top:1px solid var(--line);
  font-family:ui-sans-serif,system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  font-size:.8rem; letter-spacing:.04em; color:var(--faint)}
.foot a{color:var(--faint); text-decoration:none}
.foot a:hover{color:var(--muted)}
.foot-dot{opacity:.5}

@keyframes rise{from{opacity:0; transform:translateY(12px)}to{opacity:1; transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important}}

/* small screens */
@media (max-width:560px){
  .nav{gap:1rem; padding:.75rem 1rem}
  .nav-links{gap:1rem; font-size:.95rem; margin-left:0}
  .nav-links a{font-size:.98rem}
  .brand-mark{height:26px}
}

/* ============ Stand-up workshop ============ */
main.main-center{justify-content:center}
main:not(.main-center){align-items:stretch; justify-content:flex-start; text-align:left; padding:clamp(1.2rem,3vw,2rem) clamp(1rem,4vw,2.5rem)}
.proj{width:100%; max-width:960px; margin:0 auto}
.proj-head{display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-bottom:1.4rem; border-bottom:1px solid var(--line); padding-bottom:1rem}
.proj-kicker{display:block; font-family:ui-sans-serif,system-ui,sans-serif; font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color:var(--c2)}
.proj-title h1{font-size:clamp(1.8rem,1.4rem+2vw,2.6rem); font-weight:600; letter-spacing:-.01em}
.proj-nav{display:flex; gap:1.2rem}
.proj-nav a{color:var(--muted); text-decoration:none; padding-bottom:.3rem; border-bottom:2px solid transparent}
.proj-nav a:hover{color:var(--paper)}
.proj-nav a.is-active{color:var(--paper); border-color:var(--c2)}

.tiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:.8rem; margin-bottom:1.4rem}
.tile{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:1rem 1.1rem; display:flex; flex-direction:column; gap:.2rem}
.tile-n{font-size:2rem; font-weight:600; line-height:1}
.tile-l{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted)}
.tile-good{border-color:rgba(34,211,238,.4)}
.tile-good .tile-n{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

.panel{background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:1.3rem; margin-bottom:1.2rem}
.panel.narrow{max-width:560px}
.panel h2{font-size:1.15rem; font-weight:600; margin-bottom:.9rem}
.panel-head{display:flex; align-items:baseline; justify-content:space-between; margin-bottom:.7rem}
.panel-head h2{margin:0}
.panel-head a,.crumb a{color:var(--c1); text-decoration:none; font-size:.9rem}
.hint{color:var(--faint); font-size:.85rem; margin-top:.5rem}
.crumb{margin-bottom:1rem}

.capture{display:flex; gap:.6rem; flex-wrap:wrap}
.capture input,.capture select,.filterbar input,.filterbar select,.stack input,.stack textarea,.stack select,.setmeta input,.setmeta select,.add-item select{
  font-family:ui-sans-serif,system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif; font-size:.95rem;
  padding:.6rem .7rem; border-radius:10px; border:1px solid var(--line); background:#0e0e11; color:var(--paper)}
.capture input[name="title"],.capture input[name="name"]{flex:1 1 240px}
.capture .short,.filterbar .short{max-width:120px}
.capture input:focus,.capture select:focus,.filterbar input:focus,.stack input:focus,.stack textarea:focus,.setmeta input:focus{outline:none;border-color:var(--c2);box-shadow:0 0 0 3px rgba(139,92,246,.22)}

.filterbar{display:flex; gap:.6rem; flex-wrap:wrap; align-items:center; margin-bottom:.8rem}
.filterbar input[name="q"]{flex:1 1 220px}
.count{color:var(--muted); font-size:.85rem; margin-bottom:.8rem}

.pgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:.9rem}
.pcard{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:1rem; display:flex; flex-direction:column; gap:.5rem}
.pcard-top{display:flex; justify-content:space-between; gap:.6rem; align-items:flex-start}
.pcard-title{color:var(--paper); text-decoration:none; font-size:1.08rem; font-weight:600; line-height:1.25}
.pcard-title:hover{text-decoration:underline}
.pcard-angle{color:var(--muted); font-size:.92rem; line-height:1.45; flex:1}
.pcard-foot{display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-top:.3rem}
.pcard-edit{color:var(--c1); text-decoration:none; font-size:.85rem; font-family:ui-sans-serif,system-ui,sans-serif}

.chip{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.68rem; letter-spacing:.03em; color:var(--muted); background:rgba(255,255,255,.06); border:1px solid var(--line); padding:.15rem .5rem; border-radius:999px; white-space:nowrap}
.muted{color:var(--faint)}

.status-select{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.78rem; padding:.3rem .5rem; border-radius:999px; border:1px solid var(--line); background:#0e0e11; color:var(--paper); text-transform:capitalize}
.status-sel-seed{color:#cbd5e1}
.status-sel-developing{color:#22D3EE}
.status-sel-set-ready{color:#F472B6}
.status-sel-retired{color:var(--faint)}
.status{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.68rem; padding:.12rem .5rem; border-radius:999px; border:1px solid var(--line)}
.status-seed{color:#cbd5e1}.status-developing{color:#22D3EE;border-color:rgba(34,211,238,.4)}.status-set-ready{color:#F472B6;border-color:rgba(244,114,182,.4)}.status-retired{color:var(--faint)}

.mini-list{list-style:none; display:flex; flex-direction:column; gap:.5rem}
.mini-list li{font-size:.98rem}
.mini-list a{color:var(--paper); text-decoration:none}
.mini-list a:hover{text-decoration:underline}

.stack{display:flex; flex-direction:column; gap:.9rem}
.stack label,.setmeta label{display:flex; flex-direction:column; gap:.35rem; font-size:.85rem; color:var(--muted); font-family:ui-sans-serif,system-ui,sans-serif}
.row-actions{display:flex; gap:.6rem; flex-wrap:wrap; margin-top:.4rem}
.btn-danger{background:transparent; color:#F472B6; border:1px solid rgba(244,114,182,.45)}
.btn-danger:hover{background:rgba(244,114,182,.1)}

.setgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:.9rem}
.setcard{display:flex; flex-direction:column; gap:.4rem; background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:1.1rem; text-decoration:none; color:var(--paper)}
.setcard:hover{border-color:rgba(139,92,246,.5)}
.setcard-top{display:flex; justify-content:space-between; align-items:center; gap:.5rem}
.setcard-name{font-size:1.1rem; font-weight:600}
.setcard-truth{font-style:italic; color:var(--muted); font-size:.9rem}

.setmeta{display:flex; flex-direction:column; gap:.9rem}
.setmeta-row{display:flex; gap:.8rem; flex-wrap:wrap}
.setmeta .grow{flex:1 1 200px}.setmeta .short{flex:0 0 110px}
.setlist{list-style:none; display:flex; flex-direction:column; gap:.5rem; margin-bottom:1rem}
.setitem{display:flex; align-items:center; gap:.7rem; background:#0e0e11; border:1px solid var(--line); border-radius:10px; padding:.5rem .7rem}
.setitem-n{font-weight:600; color:var(--muted); min-width:1.4rem; text-align:center}
.setitem-body{flex:1; display:flex; gap:.5rem; align-items:center; flex-wrap:wrap}
.setitem-body a{color:var(--paper); text-decoration:none}
.setitem-body a:hover{text-decoration:underline}
.setitem-ctrls{display:flex; gap:.3rem}
.setitem-ctrls form{display:inline}
.iconbtn{font-family:ui-sans-serif,system-ui,sans-serif; cursor:pointer; background:transparent; border:1px solid var(--line); color:var(--paper); border-radius:8px; width:1.9rem; height:1.9rem; line-height:1}
.iconbtn:hover:not(:disabled){border-color:rgba(255,255,255,.4)}
.iconbtn:disabled{opacity:.3; cursor:default}
.iconbtn.danger{color:#F472B6}
.add-item select{flex:1 1 240px}

/* ============ v2 workshop: notes, devices, funny, bits, writing, log, search ============ */
h3.sub{font-size:1rem; font-weight:600; color:var(--muted); margin-bottom:.6rem}
.small{font-size:.78rem}
.inline{display:inline}
.iconbtn.tiny{width:1.5rem;height:1.5rem;font-size:.8rem}

/* device pills + checks */
.devpill{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.66rem; color:#0B0B14; background:var(--grad); padding:.12rem .5rem; border-radius:999px; margin-right:.25rem; white-space:nowrap}
.devrow{display:flex; flex-wrap:wrap; gap:.2rem}
.devgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:.35rem; margin-top:.4rem}
.devcheck,.devfield label{display:flex; align-items:center; gap:.4rem; font-size:.85rem; color:var(--muted); font-family:ui-sans-serif,system-ui,sans-serif; cursor:pointer}
.devfield{border:1px solid var(--line); border-radius:12px; padding:.8rem; margin:.2rem 0}
.devfield legend{font-size:.8rem; color:var(--muted); padding:0 .4rem}
.devpick summary{cursor:pointer; color:var(--c1); font-family:ui-sans-serif,system-ui,sans-serif; font-size:.85rem}

/* notes */
.notes-form textarea{font-family:ui-sans-serif,system-ui,-apple-system,Arial,sans-serif; font-size:.95rem; padding:.6rem .7rem; border-radius:10px; border:1px solid var(--line); background:#0e0e11; color:var(--paper); width:100%}
.notelist{list-style:none; display:flex; flex-direction:column; gap:.6rem; margin-top:1rem}
.noteitem{background:#0e0e11; border:1px solid var(--line); border-radius:10px; padding:.7rem .8rem}
.noteitem-body{font-size:.98rem; line-height:1.5}
.noteitem-foot{display:flex; align-items:center; gap:.5rem; margin-top:.5rem; flex-wrap:wrap}

/* find-the-funny */
.funhero h2{font-size:1.4rem; font-weight:600}
.fungrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:.9rem}
.funcard{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:1rem; display:flex; flex-direction:column; gap:.5rem}
.funcard-head{display:flex; flex-direction:column; gap:.15rem}
.funcard-head h3{font-size:1.05rem; font-weight:600}
.funprompt{color:var(--muted); font-size:.9rem; font-style:italic}
.attempts{list-style:none; display:flex; flex-direction:column; gap:.4rem}
.attempt{display:flex; justify-content:space-between; gap:.5rem; align-items:flex-start; background:#0e0e11; border:1px solid var(--line); border-radius:8px; padding:.4rem .6rem; font-size:.95rem}
.attempt.is-promoted{border-color:rgba(139,92,246,.5)}
.attempt-ctrls{display:flex; gap:.3rem; flex-shrink:0}
.attempt-form{display:flex; gap:.4rem}
.attempt-form input{flex:1; font-family:ui-sans-serif,system-ui,Arial,sans-serif; font-size:.9rem; padding:.45rem .6rem; border-radius:8px; border:1px solid var(--line); background:#0e0e11; color:var(--paper)}

/* writing pad */
.writepad{gap:.7rem}
.write-title{font-family:Baskerville,Georgia,serif; font-size:1.4rem; font-weight:600; background:transparent; border:0; border-bottom:1px solid var(--line); color:var(--paper); padding:.4rem 0}
.write-title:focus{outline:none; border-color:var(--c2)}
.write-body{font-family:ui-sans-serif,system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif; font-size:1.05rem; line-height:1.7; padding:1rem; border-radius:12px; border:1px solid var(--line); background:#0e0e11; color:var(--paper); resize:vertical; min-height:50vh}
.write-body:focus{outline:none; border-color:var(--c2)}
.save-state{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.8rem; color:var(--faint); margin-left:.5rem}

/* performance log */
.scoretable{width:100%; border-collapse:collapse; font-family:ui-sans-serif,system-ui,sans-serif; font-size:.9rem}
.scoretable th,.scoretable td{text-align:left; padding:.45rem .6rem; border-bottom:1px solid var(--line)}
.scoretable th{color:var(--muted); font-weight:600; font-size:.78rem; text-transform:uppercase; letter-spacing:.05em}
.scoretable td.good{color:#22D3EE}.scoretable td.bad{color:#F472B6}
.reactlist{list-style:none; display:flex; flex-direction:column; gap:.5rem; margin:.8rem 0}
.reactitem{display:flex; align-items:center; gap:.7rem; background:#0e0e11; border:1px solid var(--line); border-radius:10px; padding:.5rem .7rem}
.react-opts{margin-left:auto; display:flex; gap:.4rem}
.react-opt{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.8rem; color:var(--muted); cursor:pointer; display:flex; align-items:center; gap:.25rem; border:1px solid var(--line); border-radius:999px; padding:.2rem .55rem}
.react-opt input{accent-color:var(--c2)}
.react-killed{}.react-died{}

/* mic + misc */
.micbtn{cursor:pointer; background:transparent; border:1px solid var(--line); border-radius:8px; padding:.3rem .5rem; margin-left:.35rem; font-size:.9rem}
.micbtn.rec{border-color:#F472B6; box-shadow:0 0 0 3px rgba(244,114,182,.25)}

/* trash + drag (v3) */
.trashrow{display:flex; justify-content:space-between; align-items:center; gap:.6rem}
.trash-ctrls{display:flex; gap:.3rem; flex-shrink:0}
.trash-ctrls form{display:inline}
.setitem.dragging{opacity:.5; border-color:var(--c2)}
.setlist[data-reorder] .setitem{cursor:grab}
.export-link{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.82rem}

/* device pills (clickable toggles) — replaces the checkbox grid */
.devgrid{display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.5rem}
.devchip{cursor:pointer}
.devchip input{position:absolute; opacity:0; width:0; height:0}
.devchip span{display:inline-block; font-family:ui-sans-serif,system-ui,sans-serif; font-size:.8rem; color:var(--muted); border:1px solid var(--line); border-radius:999px; padding:.32rem .72rem; transition:background .12s,color .12s,border-color .12s; user-select:none}
.devchip input:checked + span{background:var(--grad); color:#0B0B14; border-color:transparent; font-weight:600}
.devchip:hover span{border-color:rgba(255,255,255,.45)}
.devfield .devgrid{margin-top:.2rem}

/* set flow view */
.runtime{font-family:ui-sans-serif,system-ui,sans-serif; font-weight:600}
.runtime.over{color:#F472B6}
.mini-select{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.72rem; padding:.15rem .3rem; border-radius:6px; border:1px solid var(--line); background:#0e0e11; color:var(--muted)}
.cbtag{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.66rem; color:var(--c1)}

/* catalog bulk actions */
.catalog-bar{display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-bottom:.8rem}
.bulkbar{display:flex; align-items:center; gap:.5rem; flex-wrap:wrap}
.bulkbar .btn{padding:.35rem .8rem; font-size:.85rem}
.selall{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.82rem; cursor:pointer; display:inline-flex; align-items:center; gap:.3rem}
.pcard-headleft{display:flex; align-items:center; gap:.5rem}
.bulkcheck{accent-color:var(--c2); cursor:pointer}

/* insights: theme coverage */
.coverage{display:flex; flex-direction:column; gap:.4rem}
.cov-row{display:grid; grid-template-columns:160px 1fr 32px; align-items:center; gap:.7rem; text-decoration:none}
.cov-label{font-size:.85rem; color:var(--muted); text-align:right; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.cov-track{height:8px; background:rgba(255,255,255,.06); border-radius:999px; overflow:hidden}
.cov-fill{display:block; height:100%; background:var(--grad); border-radius:999px}
.cov-n{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.78rem; color:var(--muted)}
.cov-row:hover .cov-label{color:var(--paper)}
a.tile{text-decoration:none}
a.tile:hover{border-color:rgba(139,92,246,.5)}

/* smart views */
.smartviews{display:flex; gap:.4rem; flex-wrap:wrap; margin-bottom:.8rem}
.sv{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.82rem; text-decoration:none; color:var(--muted); border:1px solid var(--line); border-radius:999px; padding:.3rem .75rem}
.sv:hover{color:var(--paper); border-color:rgba(255,255,255,.4)}
.sv.on{background:var(--grad); color:#0B0B14; border-color:transparent; font-weight:600}
.bat{color:#22D3EE; font-family:ui-sans-serif,system-ui,sans-serif}

/* stage mode */
.stage{width:100%; max-width:900px; margin:0 auto; min-height:70vh; display:flex; flex-direction:column}
.stage-top{display:flex; justify-content:space-between; align-items:center; font-family:ui-sans-serif,system-ui,sans-serif; font-size:.85rem}
.stage-top a{color:var(--c1); text-decoration:none}
.stage-meta{color:var(--muted)}
.stage-deck{flex:1; display:flex; align-items:center; justify-content:center; padding:2rem 0; min-height:50vh}
.stage-card{display:none; text-align:center; max-width:800px}
.stage-card.active{display:block}
.stage-kicker{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.8rem; letter-spacing:.12em; text-transform:uppercase; color:var(--c2); margin-bottom:1.2rem}
.stage-main{font-size:clamp(1.8rem,1.4rem+3vw,3.2rem); font-weight:600; line-height:1.2; letter-spacing:-.01em}
.stage-sub{margin-top:1.2rem; font-size:clamp(1rem,.9rem+.8vw,1.4rem); color:var(--muted); font-style:italic}
.stage-controls{display:flex; justify-content:center; gap:1rem}
.stage-hint{text-align:center; margin-top:1rem}
.stage-link{padding:.35rem .8rem; font-size:.85rem}

/* raw sources panel */
.srcpanel h2{display:flex; align-items:baseline; gap:.4rem}
.srclist{list-style:none; display:flex; flex-direction:column; gap:.6rem; margin-top:1rem}
.srcitem{background:#0e0e11; border:1px solid var(--line); border-left:3px solid var(--c2); border-radius:10px; padding:.7rem .85rem}
.srcitem-body{font-size:.98rem; line-height:1.55; color:var(--paper); font-style:italic}
.srcitem-foot{display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-top:.5rem}
.srcpanel textarea{font-family:ui-sans-serif,system-ui,-apple-system,Arial,sans-serif; font-size:.95rem; padding:.6rem .7rem; border-radius:10px; border:1px solid var(--line); background:#0e0e11; color:var(--paper); width:100%}

/* ============ Set Loom: threads, cast/prop, doctor, rail ============ */
.thlabel{display:flex; flex-direction:column; gap:.35rem; font-size:.85rem; color:var(--muted); font-family:ui-sans-serif,system-ui,sans-serif; margin-top:.5rem}
.thlabel input{font-family:ui-sans-serif,system-ui,Arial,sans-serif; font-size:.95rem; padding:.55rem .7rem; border-radius:10px; border:1px solid var(--line); background:#0e0e11; color:var(--paper)}

/* cast & prop */
.threadlist{list-style:none; display:flex; flex-direction:column; gap:.5rem}
.threadrow{display:flex; flex-direction:column; gap:.2rem; padding:.5rem .1rem; border-bottom:1px solid var(--line)}
.threadname{font-size:1.02rem; font-weight:600}
.threadbits{font-family:ui-sans-serif,system-ui,sans-serif; font-size:.85rem; color:var(--muted)}
.threadbits a{color:var(--c1); text-decoration:none}
.threadbits a:hover{text-decoration:underline}

/* set doctor */
.doctor{list-style:none; display:flex; flex-direction:column; gap:.5rem; font-family:ui-sans-serif,system-ui,sans-serif; font-size:.92rem}
.doctor li{padding:.5rem .7rem; border-radius:10px; border:1px solid var(--line); border-left-width:3px}
.doc-good{border-left-color:#22D3EE; color:var(--paper)}
.doc-warn{border-left-color:#F472B6; background:rgba(244,114,182,.08); color:#fff}
.doc-info{border-left-color:#8B5CF6; color:var(--muted)}

/* thread rail (subway grid) */
.railwrap{overflow-x:auto}
.rail{border-collapse:collapse; font-family:ui-sans-serif,system-ui,sans-serif; font-size:.8rem}
.rail th{color:var(--faint); font-weight:600; padding:.25rem .45rem; text-align:center}
.rail td{padding:.25rem; text-align:center; min-width:1.6rem; color:transparent; border-radius:4px}
.rail td.rail-name{text-align:right; color:var(--muted); white-space:nowrap; padding-right:.6rem; min-width:auto}
.rail td.rail-name.ch{color:#22D3EE}.rail td.rail-name.ob{color:#F472B6}
.rail td.on{color:#0B0B14; font-weight:700}
.rail td.on.ch{background:#22D3EE}
.rail td.on.ob{background:#F472B6}

/* comfortable, growable text boxes */
.stack textarea, .notes-form textarea, .srcpanel textarea, textarea[name="angle"]{
  resize:vertical; min-height:56px; line-height:1.5; overflow:hidden;
}

/* inherited raw source (shown on a bit, lives on its premise) */
.srcitem.inherited{border-left-style:dashed}
.srcitem.inherited .pcard-edit{color:var(--c2)}
