/* ===== Evie Studio — marketplace ===== */
[hidden]{display:none !important;}
.studio-body{background:var(--ink);color:var(--cream);min-height:100vh;}

.studio{
  display:grid;grid-template-columns:248px minmax(0,1fr) 300px;gap:0;
  max-width:1560px;margin:0 auto;padding-top:72px;min-height:100vh;align-items:stretch;
}

/* ---------- rail ---------- */
.rail{border-right:1px solid var(--hair);padding:26px 16px 40px;position:sticky;top:72px;align-self:start;height:calc(100vh - 72px);overflow-y:auto;}
.rail-head{padding:0 8px 14px;}
.eyebrow{display:flex;align-items:center;gap:8px;font:700 11px/1 Inter;letter-spacing:.22em;color:var(--muted);text-transform:uppercase;}
.eyebrow .tick{width:6px;height:6px;background:var(--red);display:inline-block;}
.rail-sub{margin:10px 0 0;font:500 12.5px/1.5 Inter;color:var(--muted);}
.cats{display:flex;flex-direction:column;gap:2px;margin-top:14px;}
.cat,.rail-evie{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:none;border:0;cursor:pointer;color:var(--cream);padding:10px 10px;border-radius:9px;transition:background .15s;text-decoration:none;}
.cat:hover,.rail-evie:hover{background:var(--hair2);}
.cat.active{background:rgba(244,63,63,.13);box-shadow:inset 2px 0 0 var(--red);}
.cat-ic{width:26px;height:26px;display:grid;place-items:center;font-size:16px;color:var(--coral);flex:none;}
.cat-tx{display:flex;flex-direction:column;line-height:1.2;min-width:0;flex:1;}
.cat-tx b{font:700 13.5px Inter;}
.cat-tx i{font:500 11px Inter;color:var(--muted);font-style:normal;}
.cat-n{font:600 11px Inter;color:var(--muted2);background:var(--hair2);padding:2px 7px;border-radius:20px;}
.rail-evie{margin-top:18px;border:1px solid var(--hair);background:linear-gradient(135deg,rgba(244,63,63,.10),transparent);}
.rail-evie.active{box-shadow:inset 2px 0 0 var(--red);background:rgba(244,63,63,.13);}
.re-orb{width:26px;height:26px;border-radius:50%;flex:none;background:radial-gradient(circle at 35% 30%,var(--coral),var(--red) 70%);box-shadow:0 0 14px rgba(244,63,63,.5);}
.tool-tx{display:flex;flex-direction:column;line-height:1.2;}
.tool-tx b{font:700 13.5px Inter;}
.tool-tx i{font:500 11px Inter;color:var(--muted);font-style:normal;}

/* ---------- stage ---------- */
.stage{padding:26px 30px 60px;min-width:0;overflow-x:hidden;}
.market-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px;flex-wrap:wrap;}
.market-title{font:800 30px/1 Inter;letter-spacing:-.02em;margin:0;}
.market-sub{margin:8px 0 0;font:500 13px Inter;color:var(--muted);}
.market-search input{background:var(--ink2);border:1px solid var(--hair);color:var(--cream);font:500 13.5px Inter;padding:11px 15px;border-radius:10px;width:200px;outline:none;}
.market-search input:focus{border-color:var(--red);}
.market-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;}
.market-filters{display:flex;gap:4px;background:var(--ink2);border:1px solid var(--hair);border-radius:10px;padding:3px;}
.filter-chip{background:none;border:0;color:var(--muted);font:700 12px Inter;padding:7px 13px;border-radius:8px;cursor:pointer;transition:.15s;}
.filter-chip:hover{color:var(--cream);}
.filter-chip.active{background:var(--red);color:#fff;}
.market-sort{background:var(--ink2);border:1px solid var(--hair);color:var(--cream);font:600 12.5px Inter;padding:10px 12px;border-radius:10px;outline:none;cursor:pointer;}
.market-sort:focus{border-color:var(--red);}
.mc-new{position:absolute;top:8px;left:8px;background:var(--red);color:#fff;font:800 8.5px Inter;letter-spacing:.1em;padding:3px 7px;border-radius:5px;z-index:2;box-shadow:0 2px 8px rgba(244,63,63,.5);}
/* Recommended badge — distinct from NEW: dark chip w/ gold star, bottom-left of media */
.mc-rec{position:absolute;bottom:8px;left:8px;display:inline-flex;align-items:center;gap:4px;background:rgba(10,10,10,.82);color:#ffd166;font:800 8.5px Inter;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:5px;z-index:2;border:1px solid rgba(255,209,102,.4);backdrop-filter:blur(2px);}

/* section header — full-width row breaking the grid into Generate / Edit / Character etc. */
.mc-section{grid-column:1/-1;display:flex;align-items:center;gap:10px;font:800 12px Inter;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:18px 0 2px;padding-bottom:9px;border-bottom:1px solid var(--hair);}
.mc-section:first-child{margin-top:0;}
.mc-section::before{content:'';width:5px;height:5px;background:var(--red);flex:none;}
.mc-section-n{font:700 10.5px Inter;letter-spacing:.04em;color:var(--muted2);background:var(--hair2);padding:2px 8px;border-radius:20px;}

/* model grid */
.model-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;}
.mcard{display:flex;flex-direction:column;gap:7px;text-align:left;background:var(--ink2);border:1px solid var(--hair);border-radius:13px;padding:0 0 14px;cursor:pointer;transition:border-color .15s,transform .15s,background .15s;color:var(--cream);overflow:hidden;}
.mcard:hover{border-color:var(--red);transform:translateY(-2px);background:#161616;}
.mc-media{position:relative;display:block;width:100%;aspect-ratio:16/10;overflow:hidden;background:linear-gradient(135deg,#1a1a1a,#0d0d0d);}
.mc-media.no-media::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 30% 25%,rgba(244,63,63,.18),transparent 60%),radial-gradient(circle at 75% 80%,rgba(255,180,122,.14),transparent 55%);}
.mc-img,.mc-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.mc-vid{opacity:0;transition:opacity .25s;}
.mcard:hover .mc-vid{opacity:1;}
.mc-play{position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:10px;display:grid;place-items:center;z-index:2;}
.mcard:hover .mc-play{opacity:0;}
.mc-top{display:flex;justify-content:space-between;align-items:center;padding:11px 14px 0;}
.mc-name,.mc-notes,.mc-price{padding-left:14px;padding-right:14px;}
.prov{font:800 9.5px Inter;letter-spacing:.12em;text-transform:uppercase;padding:3px 7px;border-radius:5px;}
.prov-fal{background:rgba(120,170,255,.15);color:#9cc0ff;}
.prov-kie{background:rgba(255,180,122,.15);color:var(--coral);}
.mc-sub{font:700 9px Inter;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--hair);padding:2px 6px;border-radius:5px;margin-left:auto;margin-right:6px;}
.mc-vf{color:var(--red);font-size:12px;}
.mc-name{font:700 15px/1.25 Inter;margin-top:2px;}
.mc-notes{font:500 11.5px/1.45 Inter;color:var(--muted);flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.mc-price{font:500 13px Inter;color:var(--cream);}
.mc-price b{font-weight:800;color:var(--coral);}
.grid-empty{color:var(--muted);font:500 14px Inter;padding:40px 0;}

/* ---------- model page ---------- */
.back{background:none;border:0;color:var(--muted);font:600 13px Inter;cursor:pointer;padding:0 0 16px;}
.back:hover{color:var(--cream);}
.mv-head{border-bottom:1px solid var(--hair);padding-bottom:18px;margin-bottom:22px;}
.mv-titlebar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.mv-name{font:800 26px/1 Inter;letter-spacing:-.02em;margin:0;}
.mv-verified{font:700 11px Inter;color:var(--red);}
.mv-notes{margin:11px 0 6px;font:500 13.5px/1.55 Inter;color:var(--muted);max-width:680px;}
.mv-source{font:600 12px Inter;color:var(--coral);text-decoration:none;}
.mv-source:hover{text-decoration:underline;}
.mv-body{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:30px;align-items:start;}
.mv-form{display:flex;flex-direction:column;gap:16px;}
.field{display:flex;flex-direction:column;gap:7px;}
.f-lbl{font:700 12px Inter;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);}
.f-lbl i{font-style:normal;font-weight:500;text-transform:none;letter-spacing:0;color:var(--muted2);}
.f-in,textarea.f-in{background:var(--ink2);border:1px solid var(--hair);color:var(--cream);font:500 14px/1.5 Inter;padding:12px 14px;border-radius:10px;outline:none;resize:vertical;width:100%;}
.f-in:focus{border-color:var(--red);}
.seg{display:flex;gap:6px;flex-wrap:wrap;}
.seg button{background:var(--ink2);border:1px solid var(--hair);color:var(--muted);font:600 13px Inter;padding:9px 14px;border-radius:9px;cursor:pointer;transition:.15s;}
.seg button:hover{color:var(--cream);}
.seg button.active{background:var(--red);border-color:var(--red);color:#fff;}
.rangewrap{display:flex;align-items:center;gap:14px;}
.f-range{flex:1;accent-color:var(--red);}
.rangeval{font:700 14px Inter;color:var(--coral);min-width:34px;}

/* dropzone */
.drop{position:relative;border:1.5px dashed var(--hair);border-radius:12px;min-height:130px;display:grid;place-items:center;cursor:pointer;background:var(--ink2);transition:.15s;overflow:hidden;}
.drop:hover,.drop.over{border-color:var(--red);}
.drop-empty{display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--muted);text-align:center;padding:16px;}
.drop-plus{font-size:26px;color:var(--coral);}
.drop-empty b{font:700 13px Inter;color:var(--cream);}
.drop-empty i{font:500 11.5px Inter;font-style:normal;}
.drop-img{max-width:100%;max-height:260px;display:block;}
.drop-clear{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.65);border:0;color:#fff;width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:13px;}

/* runbar / result */
.runbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:24px;border-top:1px solid var(--hair);padding-top:18px;}
.quote{display:flex;flex-direction:column;}
.q-credits{font:800 24px Inter;color:var(--coral);line-height:1;}
.q-note{font:500 11.5px Inter;color:var(--muted);margin-top:4px;}
.btn.run{background:var(--red);color:#fff;border:0;font:800 14px Inter;padding:14px 24px;border-radius:11px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:.15s;}
.btn.run:hover{filter:brightness(1.08);}
.btn.run:disabled{opacity:.5;cursor:wait;}
.btn.run .arrow{transition:transform .15s;}
.btn.run:hover .arrow{transform:translateX(3px);}
.mv-hint{color:var(--muted);font:500 13.5px/1.6 Inter;border:1px dashed var(--hair);border-radius:12px;padding:22px;}
.result{border:1px solid var(--hair);border-radius:14px;overflow:hidden;background:var(--ink2);}
.result-stage{display:grid;place-items:center;background:#000;min-height:240px;}
.result-stage img,.result-stage video{max-width:100%;max-height:520px;display:block;}
.result-stage audio{width:90%;margin:30px;}
.result-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 16px;flex-wrap:wrap;}
.result-meta{font:500 12.5px Inter;color:var(--muted);}
.result-meta b{color:var(--coral);}
.result-acts{display:flex;gap:8px;}
.rb{background:var(--hair2);border:1px solid var(--hair);color:var(--cream);font:600 12.5px Inter;padding:8px 13px;border-radius:8px;cursor:pointer;text-decoration:none;}
.rb:hover{border-color:var(--red);}
.working{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted);padding:50px 20px;text-align:center;}
.working b{font:700 15px Inter;color:var(--cream);}
.working i{font:500 12.5px Inter;font-style:normal;}
.spin{width:30px;height:30px;border:3px solid var(--hair);border-top-color:var(--red);border-radius:50%;animation:spin 1s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---------- chat / projects ---------- */
.chat-view{display:grid;grid-template-columns:230px minmax(0,1fr);gap:0;height:calc(100vh - 72px - 86px);border:1px solid var(--hair);border-radius:14px;overflow:hidden;background:var(--ink2);}
.projects{border-right:1px solid var(--hair);padding:16px 12px;overflow-y:auto;}
.proj-new{width:100%;background:var(--red);color:#fff;border:0;font:700 13px Inter;padding:11px;border-radius:9px;cursor:pointer;margin-bottom:12px;}
.proj-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;}
.proj{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border-radius:8px;cursor:pointer;color:var(--muted);}
.proj:hover{background:var(--hair2);color:var(--cream);}
.proj.active{background:rgba(244,63,63,.13);color:var(--cream);}
.proj-nm{font:600 13px Inter;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.proj-del{background:none;border:0;color:var(--muted2);cursor:pointer;font-size:12px;opacity:0;}
.proj:hover .proj-del{opacity:1;}
.thread{display:flex;flex-direction:column;min-width:0;}
.thread-head{padding:14px 20px;border-bottom:1px solid var(--hair);}
.proj-title{background:none;border:0;color:var(--cream);font:700 16px Inter;outline:none;width:100%;}
.msgs{flex:1;overflow-y:auto;padding:22px;display:flex;flex-direction:column;gap:14px;}
.msg-empty{color:var(--muted);font:500 14px Inter;margin:auto;text-align:center;}
.msg{display:flex;flex-direction:column;gap:8px;max-width:80%;}
.msg-user{align-self:flex-end;align-items:flex-end;}
.msg-evie{align-self:flex-start;}
.bubble{padding:11px 15px;border-radius:14px;font:500 14px/1.55 Inter;}
.msg-user .bubble{background:var(--red);color:#fff;border-bottom-right-radius:4px;}
.msg-evie .bubble{background:var(--ink);border:1px solid var(--hair);border-bottom-left-radius:4px;}
.msg-media{max-width:320px;border-radius:12px;display:block;}
/* markdown in Evie's replies */
.bubble .md-p{margin:0 0 8px;}.bubble .md-p:last-child{margin-bottom:0;}
.bubble .md-h{margin:4px 0 6px;font:800 14px Inter;}
.bubble .md-ul,.bubble .md-ol{margin:4px 0 8px;padding-left:20px;}
.bubble .md-ul li,.bubble .md-ol li{margin-bottom:3px;}
.bubble .md-code{background:rgba(0,0,0,.3);border:1px solid var(--hair);border-radius:5px;padding:1px 5px;font:500 12px/1.4 ui-monospace,Menlo,monospace;}
.bubble .md-pre{background:#0a0a0a;border:1px solid var(--hair);border-radius:9px;padding:11px 13px;overflow:auto;margin:6px 0;}
.bubble .md-pre code{font:500 12px/1.5 ui-monospace,Menlo,monospace;color:var(--cream);}
.bubble strong{font-weight:800;}.bubble em{font-style:italic;}
.bubble a{color:var(--coral);text-decoration:underline;}
.msg-evie .bubble a{color:var(--coral);}
/* typing indicator */
.bubble-typing{display:inline-flex;gap:5px;align-items:center;padding:14px 16px;}
.bubble-typing .td{width:7px;height:7px;border-radius:50%;background:var(--coral);opacity:.4;animation:typedot 1.2s infinite;}
.bubble-typing .td:nth-child(2){animation-delay:.18s;}.bubble-typing .td:nth-child(3){animation-delay:.36s;}
@keyframes typedot{0%,60%,100%{opacity:.3;transform:translateY(0);}30%{opacity:1;transform:translateY(-3px);}}
/* feedback loop */
.fb-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px 16px;border-top:1px solid var(--hair);background:rgba(244,63,63,.04);}
.fb-row-chat{margin-top:8px;border:1px solid var(--hair);border-top:1px solid var(--hair);border-radius:10px;background:rgba(244,63,63,.05);max-width:340px;}
.fb-note{font:500 12px/1.4 Inter;color:var(--muted);}
.fb-note b{color:var(--coral);font-weight:700;}
.fb-acts{display:flex;gap:6px;flex:none;}
.fb-btn{background:var(--hair2);border:1px solid var(--hair);color:var(--cream);font:700 12px Inter;padding:7px 12px;border-radius:8px;cursor:pointer;transition:.15s;}
.fb-btn:hover{border-color:var(--red);}
.fb-send{background:var(--red);border-color:var(--red);color:#fff;}
.fb-in{flex:1;min-width:160px;background:var(--ink);border:1px solid var(--hair);color:var(--cream);font:500 12.5px Inter;padding:8px 11px;border-radius:8px;outline:none;}
.fb-in:focus{border-color:var(--red);}
.fb-thanks{font:600 12.5px Inter;color:var(--coral);}
.composer{display:flex;gap:10px;padding:14px 18px;border-top:1px solid var(--hair);align-items:flex-end;}
.composer textarea{flex:1;background:var(--ink);border:1px solid var(--hair);color:var(--cream);font:500 14px/1.5 Inter;padding:11px 14px;border-radius:11px;outline:none;resize:none;}
.composer textarea:focus{border-color:var(--red);}
.composer .btn{background:var(--red);color:#fff;border:0;font:700 13px Inter;padding:12px 20px;border-radius:11px;cursor:pointer;}

/* ---------- gallery ---------- */
.gallery{border-left:1px solid var(--hair);padding:26px 16px;position:sticky;top:72px;align-self:start;height:calc(100vh - 72px);overflow-y:auto;}
.gal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.gal-refresh{background:none;border:1px solid var(--hair);color:var(--muted);width:30px;height:30px;border-radius:8px;cursor:pointer;}
.gal-refresh:hover{color:var(--cream);border-color:var(--red);}
.gal-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.gcard{position:relative;border-radius:10px;overflow:hidden;cursor:pointer;background:var(--ink2);aspect-ratio:1;border:1px solid var(--hair);}
.gcard img,.gcard video{width:100%;height:100%;object-fit:cover;display:block;}
.gaudio{display:grid;place-items:center;height:100%;font-size:26px;color:var(--coral);}
.gtag{position:absolute;top:6px;left:6px;background:rgba(0,0,0,.6);color:#fff;font:700 9px Inter;letter-spacing:.05em;text-transform:uppercase;padding:3px 6px;border-radius:5px;z-index:2;}
.gal-empty{color:var(--muted);font:500 12.5px/1.6 Inter;}

/* ---------- toast ---------- */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--ink2);border:1px solid var(--red);color:var(--cream);font:500 13.5px Inter;padding:13px 20px;border-radius:11px;z-index:200;max-width:440px;box-shadow:0 14px 40px rgba(0,0,0,.5);}
.toast a{color:var(--coral);}

/* ---------- creative engines (rail) ---------- */
.rail-group{display:flex;align-items:center;justify-content:space-between;gap:8px;font:800 10px Inter;letter-spacing:.18em;color:var(--muted2);text-transform:uppercase;padding:18px 10px 6px;}
.rail-group i{font:600 9px Inter;font-style:normal;letter-spacing:.04em;text-transform:none;color:var(--coral);}
.tools{display:flex;flex-direction:column;gap:2px;}
.tool-card{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:none;border:0;cursor:pointer;color:var(--cream);padding:9px 10px;border-radius:9px;transition:background .15s;}
.tool-card:hover{background:var(--hair2);}
.tool-card.active{background:rgba(244,63,63,.13);box-shadow:inset 2px 0 0 var(--red);}
.tc-ic{width:26px;height:26px;display:grid;place-items:center;font-size:15px;color:var(--coral);flex:none;border:1px solid var(--hair);border-radius:7px;background:linear-gradient(135deg,rgba(244,63,63,.10),transparent);}
.tc-tx{display:flex;flex-direction:column;line-height:1.2;min-width:0;}
.tc-tx b{font:700 13.5px Inter;}
.tc-tx i{font:500 11px Inter;color:var(--muted);font-style:normal;}

/* ---------- tool view (stage) ---------- */
.tv-head{border-bottom:1px solid var(--hair);padding-bottom:18px;margin-bottom:22px;}
.tv-titlebar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.tv-ic{width:34px;height:34px;display:grid;place-items:center;font-size:18px;color:var(--coral);border:1px solid var(--hair);border-radius:9px;background:linear-gradient(135deg,rgba(244,63,63,.12),transparent);}
.tv-name{font:800 26px/1 Inter;letter-spacing:-.02em;margin:0;}
.tv-tag{font:800 10px Inter;letter-spacing:.12em;text-transform:uppercase;color:var(--coral);border:1px solid var(--hair);padding:4px 8px;border-radius:6px;}
.tv-blurb{margin:11px 0 0;font:500 13.5px/1.55 Inter;color:var(--muted);max-width:680px;}
.tv-body{display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:30px;align-items:start;}
.tv-form{display:flex;flex-direction:column;gap:16px;margin-bottom:20px;}
.t-in{background:var(--ink2);border:1px solid var(--hair);color:var(--cream);font:500 14px/1.5 Inter;padding:12px 14px;border-radius:10px;outline:none;resize:vertical;width:100%;}
.t-in:focus{border-color:var(--red);}
.field-row{flex-direction:row;align-items:center;gap:12px;}
.field-row .f-lbl{margin:0;}
.switch{position:relative;display:inline-block;width:42px;height:24px;flex:none;}
.switch input{opacity:0;width:0;height:0;}
.switch .sw{position:absolute;inset:0;background:var(--hair2);border:1px solid var(--hair);border-radius:20px;cursor:pointer;transition:.15s;}
.switch .sw::before{content:'';position:absolute;width:16px;height:16px;left:4px;top:3px;background:var(--muted);border-radius:50%;transition:.15s;}
.switch input:checked+.sw{background:rgba(244,63,63,.3);border-color:var(--red);}
.switch input:checked+.sw::before{transform:translateX(18px);background:var(--coral);}
.tv-free{font:500 11.5px/1.5 Inter;color:var(--muted2);margin:10px 0 0;}
.tv-hint{color:var(--muted);font:500 13.5px/1.6 Inter;border:1px dashed var(--hair);border-radius:12px;padding:22px;}
.tv-working{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted);padding:50px 20px;text-align:center;}
.tv-working b{font:700 15px Inter;color:var(--cream);}
.tv-working i{font:500 12.5px Inter;font-style:normal;}
.tv-out{display:flex;flex-direction:column;gap:16px;}

/* tool output cards */
.out-card{background:var(--ink2);border:1px solid var(--hair);border-radius:14px;padding:18px;}
.out-asset{border-left:2px solid var(--red);}
.oc-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.oc-top h2{font:800 19px Inter;margin:0;letter-spacing:-.01em;}
.oc-top h3{font:800 15px Inter;margin:0;}
.out-tag{font:800 9.5px Inter;letter-spacing:.1em;text-transform:uppercase;color:var(--coral);border:1px solid var(--hair);padding:3px 7px;border-radius:5px;}
.out-score{font:800 11px Inter;color:#7ed957;background:rgba(126,217,87,.12);padding:3px 8px;border-radius:6px;margin-left:auto;}
.oc-concept{font:500 14px/1.6 Inter;color:var(--cream);margin:0 0 14px;}
.oc-aud,.oc-purpose{font:500 12.5px/1.5 Inter;color:var(--muted);margin:0 0 12px;}
.oc-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin-bottom:14px;}
.kv{display:flex;flex-direction:column;gap:2px;}
.kv b{font:700 10px Inter;letter-spacing:.06em;text-transform:uppercase;color:var(--muted2);}
.kv span{font:500 12.5px/1.4 Inter;color:var(--cream);}
.oc-why{font:500 12.5px/1.5 Inter;color:var(--coral);background:rgba(244,63,63,.07);border-radius:8px;padding:9px 12px;margin:12px 0 0;}
.oc-ref{max-width:100%;max-height:220px;border-radius:10px;display:block;margin-bottom:14px;border:1px solid var(--hair);}
.oc-frames{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.oc-frames figure{margin:0;flex:1;}
.oc-frames img{width:100%;border-radius:10px;border:1px solid var(--hair);display:block;}
.oc-frames figcaption{font:700 10px Inter;letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);margin-top:6px;text-align:center;}
.fr-arrow{color:var(--coral);font-size:20px;flex:none;}
.out-prompt{background:var(--ink);border:1px solid var(--hair);border-radius:10px;padding:12px 14px;margin:4px 0 12px;}
.op-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.op-head span{font:700 10px Inter;letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);}
.op-copy{background:none;border:0;color:var(--coral);font:600 11px Inter;cursor:pointer;}
.out-prompt p{font:500 13px/1.6 Inter;color:var(--cream);margin:0;}
.gen-btn{background:var(--red);color:#fff;border:0;font:800 13px Inter;padding:12px 18px;border-radius:10px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:.15s;}
.gen-btn:hover{filter:brightness(1.08);}
.gen-btn i{font:600 11px Inter;font-style:normal;opacity:.8;}
.oc-q{margin-top:14px;border-top:1px solid var(--hair);padding-top:12px;}
.oc-q b{font:700 12px Inter;color:var(--cream);}
.oc-q ul,.oc-rej ul{margin:8px 0 0;padding-left:18px;}
.oc-q li,.oc-rej li{font:500 12.5px/1.5 Inter;color:var(--muted);margin-bottom:4px;}
.oc-rej{margin-top:12px;}
.oc-rej summary{font:600 12px Inter;color:var(--muted2);cursor:pointer;}

/* ---------- node canvas ---------- */
.canvas-open{border:1px solid var(--hair);background:linear-gradient(135deg,rgba(244,63,63,.12),transparent);}
.canvas-open .tc-ic{color:var(--red);}
.cv-overlay{position:fixed;inset:0;z-index:300;background:#0a0a0a;display:flex;flex-direction:column;}
.cv-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--hair);background:var(--ink);flex-wrap:wrap;}
.cv-bar-l,.cv-bar-r{display:flex;align-items:center;gap:10px;}
.cv-close{background:var(--hair2);border:1px solid var(--hair);color:var(--cream);width:30px;height:30px;border-radius:8px;cursor:pointer;font-size:13px;}
.cv-close:hover{border-color:var(--red);}
.cv-logo{font:800 16px Inter;letter-spacing:-.01em;}
.cv-logo i{font:600 12px Inter;font-style:normal;color:var(--coral);text-transform:uppercase;letter-spacing:.12em;margin-left:2px;}
.cv-boards{background:var(--ink2);border:1px solid var(--hair);color:var(--cream);font:600 12.5px Inter;padding:7px 10px;border-radius:8px;max-width:180px;outline:none;}
.cv-title{background:none;border:0;border-bottom:1px solid transparent;color:var(--cream);font:700 14px Inter;outline:none;width:180px;}
.cv-title:focus{border-bottom-color:var(--hair);}
.cv-btn{background:var(--hair2);border:1px solid var(--hair);color:var(--cream);font:700 12.5px Inter;padding:8px 14px;border-radius:9px;cursor:pointer;transition:.15s;}
.cv-btn:hover{border-color:var(--red);}
.cv-btn.cv-run{background:var(--red);border-color:var(--red);color:#fff;}
.cv-btn.cv-run:hover{filter:brightness(1.08);}
.cv-hint-x{font:500 12px Inter;color:var(--coral);min-width:10px;}
.cv-main{flex:1;display:flex;min-height:0;}
.cv-palette{width:264px;flex:none;border-right:1px solid var(--hair);background:var(--ink);display:flex;flex-direction:column;min-height:0;}
.cv-pal-search{padding:12px;border-bottom:1px solid var(--hair);}
.cv-pal-search input{width:100%;background:var(--ink2);border:1px solid var(--hair);color:var(--cream);font:500 13px Inter;padding:9px 12px;border-radius:9px;outline:none;}
.cv-pal-search input:focus{border-color:var(--red);}
.cv-pal-body{flex:1;overflow-y:auto;padding:6px 8px 30px;}
.cvp-sec{font:800 9.5px Inter;letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);padding:14px 8px 6px;display:flex;align-items:center;gap:6px;}
.cvp-sec span{background:var(--hair2);color:var(--muted2);font-size:9px;padding:1px 6px;border-radius:10px;}
.cvp-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:0;color:var(--cream);padding:8px 8px;border-radius:8px;cursor:pointer;transition:background .12s;}
.cvp-item:hover{background:var(--hair2);}
.cvp-ic{width:24px;height:24px;flex:none;display:grid;place-items:center;font-size:12px;color:var(--coral);border:1px solid var(--hair);border-radius:6px;background:var(--ink2);}
.cvp-tx{display:flex;flex-direction:column;min-width:0;line-height:1.25;}
.cvp-tx b{font:600 12.5px Inter;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cvp-tx i{font:500 10.5px Inter;font-style:normal;color:var(--muted2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cvp-new{background:var(--red);color:#fff;font:800 7.5px Inter;letter-spacing:.08em;padding:1px 4px;border-radius:4px;vertical-align:middle;}
.cvp-none{color:var(--muted);font:500 12.5px Inter;padding:20px 10px;}
.cv-controls{position:absolute;left:16px;bottom:16px;display:flex;gap:4px;background:var(--ink2);border:1px solid var(--hair);border-radius:11px;padding:4px;box-shadow:0 8px 24px rgba(0,0,0,.4);z-index:6;}
.cv-ctl{background:none;border:0;color:var(--cream);width:34px;height:32px;border-radius:8px;cursor:pointer;font:700 16px Inter;display:grid;place-items:center;}
.cv-ctl:hover{background:var(--hair2);}
.cv-ctl-z{width:auto;padding:0 10px;font:700 12px Inter;color:var(--muted);}
.cv-node.selected{box-shadow:0 0 0 2px var(--red),0 8px 28px rgba(0,0,0,.45);}
.cv-edge-btns{position:absolute;inset:0;transform-origin:0 0;pointer-events:none;}
.cv-ebtn{position:absolute;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;background:var(--ink2);border:1px solid var(--hair);color:var(--muted2);font-size:10px;cursor:pointer;pointer-events:auto;opacity:.35;transition:.15s;display:grid;place-items:center;}
.cv-ebtn:hover{opacity:1;background:var(--red);border-color:var(--red);color:#fff;}
.cv-note{position:absolute;width:200px;background:linear-gradient(160deg,#3a3320,#2a2517);border:1px solid #5a4d28;border-radius:11px;box-shadow:0 8px 24px rgba(0,0,0,.4);}
.cv-note.selected{box-shadow:0 0 0 2px var(--coral),0 8px 24px rgba(0,0,0,.4);}
.cv-note-head{display:flex;justify-content:space-between;align-items:center;padding:7px 10px 3px;cursor:grab;font:700 9.5px Inter;letter-spacing:.1em;text-transform:uppercase;color:#d8c98a;}
.cv-note-ta{background:transparent;border:0;color:#f3ecd0;font:500 12.5px/1.5 Inter;padding:4px 10px 10px;width:100%;outline:none;resize:vertical;}
.cvm-divider{height:1px;background:var(--hair);margin:5px 4px;}
.cvm-act{font-weight:600;}
.cv-ctl-div{width:1px;background:var(--hair);margin:4px 3px;}
.cv-stage{position:relative;flex:1;overflow:hidden;cursor:grab;background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.05) 1px,transparent 0);background-size:26px 26px;}
.cv-stage:active{cursor:grabbing;}
.cv-edges{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transform-origin:0 0;pointer-events:none;}
.cv-edge{fill:none;stroke:var(--muted2);stroke-width:2;opacity:.7;}
.cv-edge-live{stroke:var(--red);stroke-dasharray:5 4;}
.cv-world{position:absolute;inset:0;transform-origin:0 0;}
.cv-node{position:absolute;width:230px;background:var(--ink2);border:1px solid var(--hair);border-radius:13px;box-shadow:0 8px 28px rgba(0,0,0,.45);user-select:none;}
.cv-node.done{border-color:rgba(126,217,87,.4);}
.cv-node.dirty{border-color:var(--coral);}
.cv-node.running{border-color:transparent;}
@property --cvang{syntax:'<angle>';initial-value:0deg;inherits:false;}
@keyframes cvrotate{to{--cvang:360deg;}}
.cv-node.running::after{content:'';position:absolute;inset:-3px;border-radius:15px;z-index:-1;
  background:conic-gradient(from var(--cvang),var(--red),var(--red) 18%,rgba(244,63,63,.18) 36%,rgba(255,180,122,.5) 60%,var(--red) 88%,var(--red));
  animation:cvrotate 1.5s linear infinite;}
.cv-node-working{position:absolute;inset:0;display:grid;place-items:center;background:rgba(10,10,10,.72);border-radius:13px;z-index:5;gap:8px;}
.cv-node-working .spin{width:30px;height:30px;border:3px solid rgba(255,255,255,.15);border-top-color:var(--coral);border-radius:50%;animation:spin 1s linear infinite;}
.cv-node-working b{font:700 11px Inter;color:var(--cream);letter-spacing:.04em;}
.cv-shimmer{position:relative;overflow:hidden;background:var(--ink);}
.cv-shimmer::before{content:'';position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.07) 50%,transparent 80%);animation:cvshim 1.4s infinite;}
@keyframes cvshim{from{transform:translateX(-100%);}to{transform:translateX(100%);}}
.cv-node-head{display:flex;align-items:center;gap:8px;padding:10px 12px 6px;cursor:grab;}
.cv-node-head b{font:700 13px Inter;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cv-node-ic{width:22px;height:22px;display:grid;place-items:center;font-size:13px;color:var(--coral);border:1px solid var(--hair);border-radius:6px;flex:none;}
.cv-swap,.cv-del{background:none;border:0;color:var(--muted2);cursor:pointer;font-size:13px;padding:2px 4px;}
.cv-swap:hover,.cv-del:hover{color:var(--cream);}
.cv-node-sub{font:700 9px Inter;letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);padding:0 12px 4px;}
.cv-node-body{padding:0 12px 8px;}
.cv-in{width:100%;background:var(--ink);border:1px solid var(--hair);color:var(--cream);font:500 12px/1.45 Inter;padding:8px 10px;border-radius:8px;outline:none;resize:vertical;}
.cv-in:focus{border-color:var(--red);}
.cv-upload{width:100%;background:var(--ink);border:1px dashed var(--hair);color:var(--muted);font:600 12px Inter;padding:14px;border-radius:8px;cursor:pointer;}
.cv-upload:hover{border-color:var(--red);color:var(--cream);}
.cv-node-out{padding:0 12px 8px;}
.cv-out-media{width:100%;border-radius:8px;display:block;max-height:160px;object-fit:cover;border:1px solid var(--hair);}
.cv-out-text{font:500 11.5px/1.5 Inter;color:var(--cream);background:var(--ink);border:1px solid var(--hair);border-radius:8px;padding:8px 10px;max-height:120px;overflow:auto;}
.cv-out-audio{font:600 12px Inter;color:var(--coral);background:var(--ink);border:1px solid var(--hair);border-radius:8px;padding:12px;text-align:center;}
.cv-node-foot{display:flex;align-items:center;justify-content:space-between;padding:0 12px 11px;}
.cv-noderun{background:var(--red);border:0;color:#fff;font:700 11.5px Inter;padding:7px 14px;border-radius:8px;cursor:pointer;}
.cv-noderun:hover{filter:brightness(1.08);}
.cv-dot{width:8px;height:8px;border-radius:50%;background:var(--hair);}
.cv-node.done .cv-dot{background:#7ed957;}
.cv-node.dirty .cv-dot{background:var(--coral);}
.cv-node.running .cv-dot{background:var(--red);animation:cvpulse 1s infinite;}
@keyframes cvpulse{50%{opacity:.3;}}
.cv-port{position:absolute;width:14px;height:14px;border-radius:50%;background:var(--ink);border:2px solid var(--muted2);top:50%;transform:translateY(-50%);cursor:crosshair;z-index:2;}
.cv-port:hover{border-color:var(--red);background:var(--red);}
.cv-in-port{left:-8px;}
.cv-out-port{right:-8px;}
.cv-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;max-width:440px;color:var(--muted);}
.cv-empty h2{font:800 24px Inter;color:var(--cream);margin:0 0 10px;}
.cv-empty p{font:500 13.5px/1.6 Inter;margin:0 0 18px;}
.cv-empty .cv-btn{margin:0 5px;}
.cv-menu{position:fixed;z-index:320;background:var(--ink2);border:1px solid var(--hair);border-radius:12px;box-shadow:0 18px 50px rgba(0,0,0,.6);padding:8px;width:300px;max-height:70vh;overflow:auto;}
.cvm-sec{font:800 9.5px Inter;letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);padding:10px 8px 5px;display:flex;align-items:center;gap:8px;}
.cvm-search{flex:1;background:var(--ink);border:1px solid var(--hair);color:var(--cream);font:500 11px Inter;padding:5px 8px;border-radius:6px;outline:none;}
.cvm-item{display:flex;align-items:center;gap:6px;width:100%;text-align:left;background:none;border:0;color:var(--cream);font:600 12.5px Inter;padding:8px 9px;border-radius:7px;cursor:pointer;}
.cvm-item:hover{background:var(--hair2);}
.cvm-item i{font:500 10.5px Inter;font-style:normal;color:var(--muted2);margin-left:auto;}
.cvm-item .prov{font-size:8px;}
.cvm-models{display:flex;flex-direction:column;gap:1px;}

/* ---------- gallery card actions + full-size viewer ---------- */
.gcard-acts{position:absolute;top:6px;right:6px;z-index:3;display:flex;gap:4px;opacity:0;transition:opacity .14s;}
.gcard:hover .gcard-acts,.gcard:focus-within .gcard-acts{opacity:1;}
.gcard-act{display:grid;place-items:center;width:24px;height:24px;border-radius:6px;border:1px solid var(--hair);background:rgba(10,10,10,.74);color:var(--cream);font:700 12px Inter;line-height:1;cursor:pointer;text-decoration:none;}
.gcard-act:hover{border-color:var(--red);color:#fff;}
.gcard-del:hover{background:rgba(244,63,63,.85);border-color:var(--red);}
.gv-ov{position:fixed;inset:0;z-index:100000;background:rgba(4,4,8,.92);display:flex;align-items:center;justify-content:center;padding:30px;}
.gv-media{max-width:92vw;max-height:86vh;border-radius:12px;box-shadow:0 30px 80px rgba(0,0,0,.7);}
.gv-audio{width:min(560px,90vw);}
.gv-close{position:fixed;top:18px;right:20px;width:40px;height:40px;border-radius:50%;border:1px solid var(--hair);background:rgba(10,10,10,.8);color:var(--cream);font:700 16px Inter;cursor:pointer;}
.gv-dl{position:fixed;top:20px;left:20px;background:var(--hair2);border:1px solid var(--hair);color:var(--cream);font:700 12.5px Inter;padding:9px 15px;border-radius:9px;text-decoration:none;}
.gv-dl:hover{border-color:var(--red);}

/* ---------- cost-confirm dialog ---------- */
.cc-ov{position:fixed;inset:0;z-index:100001;background:rgba(4,4,8,.78);display:flex;align-items:center;justify-content:center;padding:24px;}
.cc-box{background:var(--ink2);border:1px solid var(--hair);border-radius:16px;padding:26px 24px;width:380px;max-width:92vw;box-shadow:0 30px 80px rgba(0,0,0,.6);}
.cc-title{font:800 17px Inter;color:var(--cream);margin-bottom:8px;}
.cc-body{font:500 13.5px/1.55 Inter;color:var(--muted);margin-bottom:20px;}
.cc-body b{color:var(--cream);}
.cc-acts{display:flex;gap:10px;justify-content:flex-end;}
.cc-cancel{background:var(--hair2);border:1px solid var(--hair);color:var(--cream);font:700 13px Inter;padding:11px 18px;border-radius:30px;cursor:pointer;}
.cc-go{background:var(--red);border:0;color:#fff;font:800 13px Inter;padding:11px 20px;border-radius:30px;cursor:pointer;}
.cc-go:hover{filter:brightness(1.08);}
.cc-cancel:hover{border-color:var(--cream);}

/* ---------- generate error / retry ---------- */
.gen-err{display:flex;flex-direction:column;align-items:flex-start;gap:6px;}
.gen-err b{font:800 15px Inter;color:var(--cream);}
.gen-err p{margin:0;font:500 13px/1.55 Inter;color:var(--muted);}
.gen-retry{margin-top:8px;background:var(--red);border:0;color:#fff;font:800 13px Inter;padding:10px 18px;border-radius:30px;cursor:pointer;}
.gen-retry:hover{filter:brightness(1.08);}

/* ---------- mobile gallery drawer toggle ---------- */
.gal-toggle{display:none;position:fixed;right:14px;bottom:14px;z-index:90;background:var(--red);color:#fff;border:0;border-radius:30px;font:800 12.5px Inter;padding:11px 16px;box-shadow:0 12px 30px rgba(0,0,0,.4);cursor:pointer;}

/* ---------- responsive ---------- */
@media(max-width:1180px){
  .studio{grid-template-columns:210px minmax(0,1fr);}
  /* gallery becomes an off-canvas drawer instead of vanishing */
  .gallery{position:fixed;top:0;right:0;height:100vh;width:300px;max-width:88vw;z-index:95;
    background:var(--ink);border-left:1px solid var(--hair);box-shadow:-18px 0 50px rgba(0,0,0,.5);
    transform:translateX(100%);transition:transform .22s ease;padding-top:74px;}
  .studio.gal-open .gallery{transform:translateX(0);}
  .gal-toggle{display:block;}
}
@media(max-width:760px){
  .studio{grid-template-columns:1fr;padding-top:64px;}
  .rail{position:static;height:auto;border-right:0;border-bottom:1px solid var(--hair);}
  .cats{flex-direction:row;flex-wrap:wrap;}
  .cat{width:auto;flex:1 1 44%;}
  .cat-n{display:none;}
  .stage{padding:20px 16px 50px;}
  .mv-body,.tv-body{grid-template-columns:1fr;}
  .tools{flex-direction:row;flex-wrap:wrap;}
  .tool-card{width:auto;flex:1 1 44%;}
  .oc-grid{grid-template-columns:1fr;}
  .chat-view{grid-template-columns:1fr;height:auto;}
  .projects{display:none;}
  .model-grid{grid-template-columns:1fr 1fr;}
  /* keep the runbar + quote usable at 390px */
  .runbar{flex-direction:column;align-items:stretch;gap:12px;}
  .runbar .btn.run{width:100%;justify-content:center;}
  .market-head{flex-direction:column;align-items:stretch;gap:12px;}
  .market-tools{flex-wrap:wrap;}
  .market-search input{width:100%;}
}
@media(max-width:440px){
  .model-grid{grid-template-columns:1fr;}
}
