/* Template Studio (template-studio.html + category pages; assets/tpl-studio.js). Theme tokens from theme.css. */
.ts *{box-sizing:border-box}
/* CLS: bold/semibold fallback faces matched to Inter's widths (measured: Inter 800 ≈ Arial Bold × 1.03, Inter 600 ≈
   Arial Bold × 1.01), so the hero heading and check row keep their line count when Inter swaps in on slow first loads. */
@font-face{font-family:'Inter TS Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Helvetica Neue Bold'),local('Helvetica Bold');font-weight:700 900;size-adjust:103%;ascent-override:94%;descent-override:23.4%;line-gap-override:0%}
@font-face{font-family:'Inter TS Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Helvetica Neue Bold'),local('Helvetica Bold');font-weight:500 699;size-adjust:101%;ascent-override:96%;descent-override:23.9%;line-gap-override:0%}
.ts h1,.ts h1 *,.ts-checks,.ts-checks *,.ts-btn,.ts-crumb{font-family:'Inter','Inter TS Fallback','Inter Fallback',-apple-system,BlinkMacSystemFont,sans-serif}
.ts [hidden],.ts-ed [hidden],.ts-dlg [hidden]{display:none!important}   /* .ts-btn etc. set display: keep the hidden attribute winning (Cancel button after export) */
.ts-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ts-wrap{max-width:1180px;margin:0 auto;padding:0 16px}
.ts-hero{border-bottom:1px solid var(--border);background:radial-gradient(1100px 380px at 8% -10%,rgba(99,102,241,.16),transparent 60%),radial-gradient(900px 360px at 100% 0%,rgba(236,72,153,.12),transparent 60%)}
.ts-hero .ts-wrap{padding-top:22px;padding-bottom:26px}
.ts-crumb{font-size:13px;color:var(--muted)}.ts-crumb a{color:inherit}.ts-crumb a:hover{color:var(--gc-ink-accent)}
.ts h1{font-size:clamp(28px,4.6vw,44px);line-height:1.08;font-weight:800;letter-spacing:-.02em;margin:10px 0 10px}
@media(max-width:480px){.ts h1{min-height:calc(var(--h1l,3) * 1.08em)}}   /* phones: the heading's line boxes are reserved (--h1l set per page by gen_pages.py), so it can't grow when Inter swaps in (CLS) */
.ts-grad{background:linear-gradient(135deg,#4f46e5,#9333ea 60%,#db2777);-webkit-background-clip:text;background-clip:text;color:transparent}
html.dark .ts-grad{background:linear-gradient(135deg,#a5b4fc,#d8b4fe 60%,#f9a8d4);-webkit-background-clip:text;background-clip:text}
.ts-lead{font-size:16.5px;line-height:1.6;color:var(--muted);max-width:720px;margin:0}
.ts-checks{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:14px;font-size:14px;font-weight:600}
@media(max-width:600px){.ts-checks{display:grid;grid-template-columns:minmax(0,1fr);gap:4px}.ts-checks span{white-space:nowrap}}   /* one item per row: row count can't change on font swap */
.ts-checks span::before{content:"✓ ";color:#16a34a;font-weight:900}
.ts-ctas{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.ts-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:8px 14px;border-radius:12px;font-weight:700;font-size:14px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;text-decoration:none;white-space:nowrap;position:relative}
.ts-btn:hover{border-color:#818cf8}
.ts-btn.pri{border:0;color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed 55%,#9333ea);box-shadow:0 8px 20px rgba(79,70,229,.25)}
.ts-btn.danger{color:#b91c1c;border-color:#fca5a5}html.dark .ts-btn.danger{color:#fca5a5}
.ts-btn.ghost{background:transparent}
.ts-btn.sm{min-height:34px;padding:5px 10px;font-size:13px;border-radius:10px}
.ts-btn[disabled]{opacity:.55;cursor:not-allowed}
.ts-btn:focus-visible,.ts-chip:focus-visible,.ts-tab:focus-visible,.ts-thumb:focus-visible,.ts-etab:focus-visible,.ts-pal:focus-visible,.ts-ib:focus-visible,.ts-in:focus-visible{outline:2px solid #6366f1;outline-offset:2px}
.ts-resume{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;padding:10px 12px;border:1px dashed #818cf8;border-radius:12px;font-size:14px;background:var(--surface)}
/* gallery toolbar */
.ts-gal{padding:22px 0 8px}
.ts-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.ts-tabs{display:flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:14px;background:var(--surface);max-width:100%;overflow-x:auto;scrollbar-width:none}
@media(max-width:420px){.ts-tab{padding:7px 9px}}   /* 4 tabs (with Review) fit a 375 px phone without wrapping */
.ts-cnt:not(:empty){display:inline-block;min-width:18px;margin-left:4px;padding:0 5px;border-radius:99px;background:#4f46e5;color:#fff;font-size:11.5px;line-height:18px;text-align:center}
.ts-tab{border:0;background:transparent;color:var(--muted);font-weight:700;font-size:14px;padding:7px 12px;border-radius:10px;cursor:pointer;min-height:36px}
.ts-tab[aria-selected=true]{background:rgba(99,102,241,.14);color:var(--gc-ink-accent)}
.ts-in{font:inherit;font-size:14px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 10px;min-height:38px;max-width:100%;width:100%}
textarea.ts-in{resize:vertical;line-height:1.4}
.ts-search{flex:1 1 220px;min-width:0}
.ts-bar select.ts-in{width:auto}
.ts-chips{display:flex;gap:6px;overflow-x:auto;padding:12px 0 4px;scrollbar-width:thin}
.ts-chip{flex:0 0 auto;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:99px;padding:6px 12px;font-size:13.5px;font-weight:600;cursor:pointer;min-height:34px}
.ts-chip[aria-pressed=true]{background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;border-color:transparent}
.ts-count{font-size:13px;color:var(--muted);margin:6px 0 0}
/* cards */
.ts-grid{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,160px),1fr))}
@media(min-width:720px){.ts-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:18px}}
.ts-card{display:flex;flex-direction:column;border:1px solid var(--border);background:var(--surface);border-radius:16px;overflow:hidden;min-width:0}
.ts-card[hidden]{display:none}
.ts-thumb{position:relative;display:block;width:100%;aspect-ratio:4/5;border:0;padding:0;margin:0;background:var(--surface2);cursor:pointer;overflow:hidden}
.ts-thumb img,.ts-thumb canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.ts-thumb canvas.ts-live{opacity:0;transition:opacity .2s;background:var(--surface2)}.ts-thumb canvas.ts-live.on{opacity:1}
.ts-badge{position:absolute;top:8px;left:8px;font-size:11px;font-weight:800;color:#fff;background:linear-gradient(135deg,#4f46e5,#9333ea);padding:3px 8px;border-radius:99px}
.ts-kind{position:absolute;bottom:8px;right:8px;font-size:11px;font-weight:700;color:#fff;background:rgba(2,6,23,.72);padding:3px 7px;border-radius:8px}
.ts-noimg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:40px}
.ts-meta{padding:10px 12px 4px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ts-name{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-meta small{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-remix{color:var(--gc-ink-accent)!important}
.ts-acts{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px 12px;margin-top:auto}
.ts-acts .ts-btn[aria-pressed=true]{color:#db2777;border-color:#f9a8d4}
.ts-skel .ts-thumb{background:linear-gradient(90deg,var(--surface2),var(--surface),var(--surface2));background-size:200% 100%;animation:tssk 1.2s infinite}
.ts-skel .ts-meta i{display:block;height:10px;border-radius:6px;background:var(--surface2);margin:4px 0}
@keyframes tssk{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.ts-skel .ts-thumb{animation:none}.ts-thumb canvas.ts-live{transition:none}}
.ts-empty{color:var(--muted);font-size:14.5px;padding:18px 4px}
.ts-h3{font-size:18px;margin:18px 0 0;display:flex;gap:8px;align-items:baseline}.ts-h3 small{font-size:13px;color:var(--muted);font-weight:500}
.ts-h4{font-size:15px;margin:18px 0 8px}
.ts-list{list-style:none;padding:0;margin:10px 0}.ts-list li{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}
.ts-list small{color:var(--muted)}
.ts-st{font-size:12px;font-weight:700;border-radius:99px;padding:2px 8px}.ts-st-live{background:#dcfce7;color:#166534}.ts-st-hidden,.ts-st-appeal,.ts-st-changes{background:#fef3c7;color:#92400e}
.ts-st-pending,.ts-st-escalated{background:#e0e7ff;color:#3730a3}.ts-st-rejected{background:#fee2e2;color:#991b1b}
html.dark .ts-st-live{background:#14532d;color:#dcfce7}html.dark .ts-st-hidden,html.dark .ts-st-appeal,html.dark .ts-st-changes{background:#78350f;color:#fef3c7}
html.dark .ts-st-pending,html.dark .ts-st-escalated{background:#312e81;color:#e0e7ff}html.dark .ts-st-rejected{background:#7f1d1d;color:#fee2e2}
/* community: ratings, creator pages, levels, review queue (docs/TEMPLATE-STUDIO.md §10) */
.ts-by{color:inherit;text-decoration:underline;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent);text-underline-offset:2px}.ts-by:hover{color:var(--gc-ink-accent)}
.ts-stats:empty{display:none}
.ts-dim{color:var(--muted);font-weight:600}
.ts-stars{border:0;padding:0;margin:0 0 6px;display:flex;flex-wrap:wrap;gap:2px}.ts-stars legend{font-weight:700;font-size:13.5px;margin-bottom:6px;width:100%}
.ts-stars input{position:absolute;opacity:0;width:1px;height:1px}
.ts-form .ts-stars label{margin:0;cursor:pointer;font-size:34px;line-height:1;color:#78716c;padding:2px}html.dark .ts-form .ts-stars label{color:#a8a29e}
.ts-stars[data-v="1"] label:nth-of-type(-n+1),.ts-stars[data-v="2"] label:nth-of-type(-n+2),.ts-stars[data-v="3"] label:nth-of-type(-n+3),.ts-stars[data-v="4"] label:nth-of-type(-n+4),.ts-stars[data-v="5"] label{color:#b45309}
html.dark .ts-stars[data-v="1"] label:nth-of-type(-n+1),html.dark .ts-stars[data-v="2"] label:nth-of-type(-n+2),html.dark .ts-stars[data-v="3"] label:nth-of-type(-n+3),html.dark .ts-stars[data-v="4"] label:nth-of-type(-n+4),html.dark .ts-stars[data-v="5"] label{color:#fbbf24}
.ts-stars input:focus-visible+label{outline:2px solid #6366f1;outline-offset:1px;border-radius:6px}
.ts-level{margin:14px 0 0;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);font-size:13.5px;line-height:1.55;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.ts-level a{color:var(--gc-ink-accent);font-weight:600}
.ts-warn{color:#92400e;font-weight:600}html.dark .ts-warn{color:#fcd34d}
.ts-lvl{font-size:12px;font-weight:800;border-radius:99px;padding:2px 8px;background:#e0e7ff;color:#3730a3}.ts-lvl-trusted,.ts-lvl-staff{background:#dcfce7;color:#166534}.ts-lvl-restricted{background:#fee2e2;color:#991b1b}
html.dark .ts-lvl{background:#312e81;color:#e0e7ff}html.dark .ts-lvl-trusted,html.dark .ts-lvl-staff{background:#14532d;color:#dcfce7}html.dark .ts-lvl-restricted{background:#7f1d1d;color:#fee2e2}
.ts-creator{margin:10px 0 0}.ts-cr{display:flex;gap:12px;align-items:center;margin-top:10px}.ts-cr .ts-h3{margin:0;flex-wrap:wrap}
.ts-av{flex:0 0 48px;width:48px;height:48px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:20px;color:#fff;background:linear-gradient(135deg,#4f46e5,#9333ea)}
.ts-rq{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:14px}
.ts-rcard{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:12px}
@media(max-width:640px){.ts-rcard{grid-template-columns:minmax(0,1fr)}}
.ts-rprev{display:flex;flex-direction:column;gap:8px}.ts-rprev .ts-thumb{border-radius:12px;overflow:hidden}.ts-rprev canvas{width:100%;height:auto;display:block}
.ts-rthumb{margin:0;font-size:12px;color:var(--muted)}.ts-rthumb img{width:88px;height:auto;border-radius:8px;border:1px solid var(--border);display:block}
.ts-rbody{min-width:0}.ts-rbody .ts-h3{margin:2px 0 0}.ts-rkind{font-size:12.5px;font-weight:700;color:var(--muted);margin:0}
.ts-flags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0}.ts-flag{font-size:12px;font-weight:700;border-radius:99px;padding:2px 8px;background:#fef3c7;color:#92400e}.ts-flag.ok{background:#dcfce7;color:#166534}
html.dark .ts-flag{background:#78350f;color:#fef3c7}html.dark .ts-flag.ok{background:#14532d;color:#dcfce7}
.ts-rtext{font-size:13.5px;margin:6px 0}.ts-rtext summary{cursor:pointer;font-weight:600}.ts-rtext ul{margin:6px 0;padding-left:18px}.ts-rtext small{color:var(--muted)}
.ts-vote{margin-top:6px}.ts-voted{border-color:#86efac}
.ts-why{margin-top:8px;padding:10px;border:1px dashed var(--border);border-radius:12px}
.ts-chipset{border:0;padding:0;margin:0 0 8px;display:flex;flex-wrap:wrap;gap:6px}.ts-chipset legend{font-weight:700;font-size:13.5px;margin-bottom:6px;width:100%}
.ts-chipc{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:99px;padding:4px 10px;font-size:13px;cursor:pointer}
.ts-why label:not(.ts-chipc){display:flex;flex-direction:column;gap:4px;font-size:13.5px;font-weight:600;margin-bottom:8px}
.ts-more{display:flex;justify-content:center;margin:16px 0}
/* content sections */
.ts-sec{padding:34px 0 6px}
.ts-h2{font-size:clamp(22px,3vw,30px);font-weight:800;letter-spacing:-.01em;margin:0 0 8px}
.ts-sub{color:var(--muted);font-size:15.5px;line-height:1.55;margin:0 0 18px;max-width:760px}
.ts-feats{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr))}
.ts-f{border:1px solid var(--border);background:var(--surface);border-radius:14px;padding:14px}.ts-f b{display:block;margin:4px 0}.ts-f p{margin:0;color:var(--muted);font-size:14px;line-height:1.5}
.ts-steps{counter-reset:st;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));list-style:none;padding:0;margin:0}
.ts-steps li{border:1px solid var(--border);border-radius:14px;padding:14px;background:var(--surface);font-size:14px;color:var(--muted);line-height:1.55}
.ts-steps li::before{counter-increment:st;content:counter(st);display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;color:#fff;font-weight:800;background:linear-gradient(135deg,#4f46e5,#9333ea);margin-bottom:6px}
.ts-steps b{display:block;color:var(--text)}
.ts-cats{display:flex;flex-wrap:wrap;gap:8px}.ts-cats a{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:8px 12px;font-weight:600;font-size:14px;color:var(--text);text-decoration:none}.ts-cats a:hover{border-color:#818cf8}
.ts-faq details{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:12px 14px;margin-bottom:8px}.ts-faq summary{font-weight:700;cursor:pointer}.ts-faq p{color:var(--muted);font-size:14.5px;line-height:1.6;margin:8px 0 0}
.ts-note{font-size:13px;color:var(--muted);line-height:1.5;margin:6px 0}
.ts-warn{font-size:13px;color:#92400e;background:#fef3c7;border-radius:10px;padding:6px 10px}html.dark .ts-warn{color:#fef3c7;background:#78350f}
/* editor */
html.ts-lock,html.ts-lock body{overflow:hidden}
.ts-ed{position:fixed;inset:0;z-index:60;background:var(--bg);color:var(--text);display:flex;flex-direction:column}
.ts-ed-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface)}
.ts-ed-top .ts-in{width:auto}.ts-name-in{flex:1 1 160px;min-width:0;font-weight:700}
.ts-grow{flex:1 1 0}
.ts-ed-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
@media(min-width:900px){.ts-ed-body{grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);grid-template-rows:minmax(0,1fr)}}
.ts-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px;background:var(--surface2);min-height:0}
.ts-canvas-wrap{display:flex;align-items:center;justify-content:center;width:100%;max-height:44vh;flex:1;min-height:0}
@media(min-width:900px){.ts-canvas-wrap{max-height:calc(100vh - 170px)}}
.ts-canvas-wrap canvas{max-width:100%;max-height:44vh;height:auto;width:auto;border-radius:10px;box-shadow:0 12px 40px rgba(15,23,42,.25);background:#000}
@media(min-width:900px){.ts-canvas-wrap canvas{max-height:calc(100vh - 170px)}}
.ts-player{display:flex;align-items:center;gap:8px;width:100%;max-width:560px}.ts-player input[type=range]{flex:1;min-width:0}
.ts-mono{font-variant-numeric:tabular-nums;font-size:13px;color:var(--muted);white-space:nowrap}
.ts-attr{text-align:center}
.ts-side{display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--border);background:var(--surface)}
.ts-etabs{display:flex;gap:2px;overflow-x:auto;padding:6px 8px;border-bottom:1px solid var(--border);scrollbar-width:thin}
.ts-etab{flex:0 0 auto;border:0;background:transparent;color:var(--muted);font-weight:700;font-size:13.5px;padding:8px 10px;border-radius:10px;cursor:pointer;min-height:36px}
.ts-etab[aria-selected=true]{background:rgba(99,102,241,.14);color:var(--gc-ink-accent)}
.ts-pane{flex:1;min-height:0;overflow:auto;padding:12px 14px 40px}
.ts-field{display:flex;flex-direction:column;gap:4px;margin:0 0 10px;font-size:13px;font-weight:600;min-width:0}
.ts-field>span{display:flex;align-items:center;gap:6px}
.ts-grid2{display:grid;gap:0 10px;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr))}
.ts-scene{border:1px solid var(--border);border-radius:12px;padding:10px 12px 4px;margin:0 0 12px;position:relative;min-width:0}
.ts-scene legend{font-weight:800;font-size:13.5px;padding:0 6px}
.ts-sc-tools{position:absolute;top:-12px;right:8px;display:flex;gap:4px;background:var(--surface);padding:0 4px}
.ts-ib{width:30px;height:30px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer;font-size:13px}
.ts-ib[disabled]{opacity:.4;cursor:default}
.ts-ai{border:1px dashed #a78bfa;border-radius:12px;padding:10px 12px;margin-bottom:12px;background:rgba(139,92,246,.06)}
.ts-ai .ts-field{margin-bottom:6px}
.ts-ai1{border:0;background:transparent;cursor:pointer;font-size:13px;padding:0 2px}
.ts-sw,.ts-chk{display:flex;align-items:flex-start;gap:8px;font-size:13.5px;margin:4px 0 10px}
.ts-chk{line-height:1.45}
.ts-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
.ts-row .ts-field{margin:0}
.ts-slot{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:12px;padding:8px;margin-bottom:8px}
.ts-slot-th{width:52px;height:52px;border-radius:8px;background:var(--surface2);display:flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 auto;font-size:20px}
.ts-slot-th img{width:100%;height:100%;object-fit:cover}
.ts-slot-tx{flex:1;min-width:0;display:flex;flex-direction:column}.ts-slot-tx small{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-pals{display:flex;flex-wrap:wrap;gap:8px}
.ts-pal{width:38px;height:38px;border-radius:50%;border:1px solid var(--border);cursor:pointer}
.ts-colors{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,140px),1fr));gap:8px;margin:0 0 10px}
.ts-color{display:flex;align-items:center;gap:8px;font-size:13px;border:1px solid var(--border);border-radius:10px;padding:4px 8px}
.ts-color input{width:32px;height:28px;border:0;padding:0;background:none;cursor:pointer}
.ts-logo-th{width:36px;height:36px;object-fit:contain;border-radius:6px;background:var(--surface2)}
.ts-wrow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) 52px;align-items:center;gap:8px;font-weight:500;font-size:13px}
.ts-wrow span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ts-wrow output{font-variant-numeric:tabular-nums;color:var(--muted);text-align:right}
.ts-prog{height:6px;border-radius:99px;background:var(--surface2);overflow:hidden;margin:4px 0}.ts-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,#4f46e5,#9333ea);transition:width .2s}
.ts-result{border:1px solid var(--border);border-radius:12px;padding:10px;margin:10px 0}
.ts-result video,.ts-result img{display:block;max-width:100%;max-height:360px;margin:0 auto 8px;border-radius:8px;background:#000}
/* dialogs */
.ts-dlg{border:1px solid var(--border);border-radius:16px;padding:0;max-width:min(560px,calc(100vw - 24px));width:100%;background:var(--surface);color:var(--text);box-shadow:0 24px 60px rgba(15,23,42,.35)}
.ts-dlg::backdrop{background:rgba(2,6,23,.55)}
.ts-dlg-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--border)}.ts-dlg-h h2{font-size:17px;margin:0}
.ts-x{border:0;background:transparent;color:var(--text);font-size:18px;cursor:pointer;width:36px;height:36px;border-radius:10px}
.ts-dlg-b{padding:12px 14px 14px;max-height:75vh;overflow:auto}
.ts-form label{display:flex;flex-direction:column;gap:4px;font-size:13.5px;font-weight:600;margin-bottom:10px}
.ts-form label.ts-chk{flex-direction:row;font-weight:500}
.ts-radios{border:0;padding:0;margin:0 0 10px}.ts-radios legend{font-weight:700;font-size:13.5px;margin-bottom:4px}.ts-radios label{flex-direction:row;align-items:center;font-weight:500;margin:4px 0}
.ts-hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0}
.ts-form textarea{font:inherit;font-size:14px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 10px}
/* phase 2 — timeline-lite scene strip (tpl-studio.js strip()) */
.ts-tl{width:100%;max-width:640px;min-width:0}
.ts-tl-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 6px}
.ts-tl-bar2{margin:6px 0 0}
.ts-tl-h{font-weight:800;font-size:13px;margin-right:auto;display:flex;gap:6px;align-items:baseline}
.ts-in.ts-tl-sel{width:auto;min-height:34px;padding:4px 8px;font-size:13px;max-width:100%}
.ts-tl-f{font-size:12.5px;font-weight:600;color:var(--muted)}
.ts-tl-track{position:relative;display:flex;height:54px;padding:0 6px 0 0;border:1px solid var(--border);border-radius:10px;background-color:var(--surface);background-image:repeating-linear-gradient(90deg,rgba(99,102,241,.22) 0 1px,transparent 1px var(--beat));overflow:hidden}
.ts-tl-sc{position:relative;flex:0 0 auto;min-width:0;height:100%;padding:4px 0 7px 3px}
.ts-tl-b{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;width:100%;height:100%;min-width:0;border:1px solid rgba(99,102,241,.5);border-radius:8px;background:#eef2ff;color:#1e1b4b;font:inherit;font-size:12px;font-weight:700;line-height:1.2;padding:2px 10px 2px 6px;cursor:grab;overflow:hidden;text-align:left;touch-action:none}
html.dark .ts-tl-b{background:#1e1b4b;color:#e0e7ff}
.ts-tl-b span,.ts-tl-b small{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-tl-b small{font-weight:600;color:#4338ca;font-variant-numeric:tabular-nums}html.dark .ts-tl-b small{color:#c7d2fe}
.ts-tl-sc.on .ts-tl-b{background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;border-color:transparent}.ts-tl-sc.on .ts-tl-b small{color:#e0e7ff}
.ts-tl-sc.grab .ts-tl-b{outline:2px dashed #d97706;outline-offset:-3px}
.ts-tl-sc.drag{z-index:3;cursor:grabbing}.ts-tl-sc.drag .ts-tl-b{box-shadow:0 6px 18px rgba(15,23,42,.35)}
.ts-tl-hd{position:absolute;top:12px;bottom:15px;right:-4px;width:9px;border-radius:5px;background:#4f46e5;border:2px solid var(--surface);cursor:ew-resize;z-index:2;touch-action:none}
.ts-tl-hd:hover{background:#7c3aed}
.ts-tl-b:focus-visible,.ts-tl-hd:focus-visible{outline:2px solid #d97706;outline-offset:1px}
.ts-tl-ph{position:absolute;top:0;bottom:0;left:0;width:2px;margin-left:-1px;background:#dc2626;pointer-events:none;z-index:4}
.ts-tl-vo{position:absolute;left:0;right:6px;bottom:1px;height:4px;pointer-events:none;z-index:1}.ts-tl-vo i{position:absolute;top:0;bottom:0;background:#059669;border-radius:2px}
.ts-tl-tip{position:absolute;top:2px;z-index:5;background:#111827;color:#fff;font-size:11.5px;font-weight:700;padding:2px 6px;border-radius:6px;pointer-events:none;font-variant-numeric:tabular-nums}
@media(max-width:899px){.ts-tl-track{height:48px}.ts-tl-bar2{display:none}}
/* font pairings + brand kits */
.ts-pairs{border:0;padding:0;margin:0 0 10px;display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}
.ts-pairs legend{font-size:13px;font-weight:600;margin-bottom:6px;padding:0}.ts-pairs legend small{color:var(--muted);font-weight:500}
.ts-pair{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:10px;padding:6px 8px;cursor:pointer;min-width:0}
.ts-pair input{margin:0}.ts-pair:has(input:checked){border-color:#6366f1;box-shadow:0 0 0 2px rgba(99,102,241,.3)}
.ts-pair-s{font-size:24px;line-height:1;min-width:34px;text-align:center}
.ts-pair-t{display:flex;flex-direction:column;min-width:0;font-size:13px}.ts-pair-t small{color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-in.ts-kit-sel{width:auto;flex:1 1 140px;min-width:0}.ts-in.ts-kit-name{flex:1 1 160px;width:auto;min-width:0}
/* voice & captions (assets/tpl-av.js) */
.ts-voice{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:12px;padding:8px 10px;margin-bottom:10px}
.ts-voice-n{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}.ts-voice-n b{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-aitag{font-size:11.5px;font-weight:800;color:#6d28d9;background:#ede9fe;border-radius:99px;padding:2px 8px}html.dark .ts-aitag{color:#ede9fe;background:#4c1d95}
.ts-det{border:1px solid var(--border);border-radius:12px;padding:8px 12px;margin:0 0 12px}.ts-det summary{font-weight:700;font-size:13.5px;cursor:pointer}.ts-det[open] summary{margin-bottom:8px}
.ts-capst{border:0;padding:0;margin:0 0 10px;display:flex;flex-wrap:wrap;gap:6px}.ts-capst legend{font-size:13px;font-weight:600;margin-bottom:6px;padding:0}
.ts-capo{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:99px;padding:5px 10px;font-size:13px;cursor:pointer}.ts-capo:has(input:checked){border-color:#6366f1;background:rgba(99,102,241,.12)}
.ts-aih{display:block;font-size:13.5px;margin-bottom:8px}
.ts-cues{list-style:none;padding:0;margin:8px 0;display:flex;flex-direction:column;gap:6px;counter-reset:cue}
.ts-cues li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px;align-items:center}
.ts-cue-t{display:flex;gap:4px}.ts-cue-t .ts-in{width:66px;padding:6px;font-variant-numeric:tabular-nums}
.ts-slot-snd{margin:-2px 0 10px 8px;font-size:13px}
