:root{--bg:#0e0e10;--bg-raised:#17171a;--bg-sunken:#0a0a0c;--line:#26262b;--line-strong:#35353c;--ink:#fafaf7;--ink-dim:#a3a3aa;--ink-faint:#6e6e77;--accent:#d8c9a8;--good:#4f9d69;--fair:#c4922f;--poor:#b4483f;--card:#55555f;--radius:6px;--gap:16px;--dur-1:120ms;--dur-2:200ms;--dur-3:320ms;--ease:cubic-bezier(0.2,0.7,0.3,1);--ease-out:cubic-bezier(0.16,1,0.3,1);color-scheme:dark}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:24px;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--bg-sunken);position:-webkit-sticky;position:sticky;top:0;z-index:10}.topbar .brand{font-weight:600;letter-spacing:.01em;color:var(--ink)}.topbar nav{display:flex;gap:18px;font-size:14px}.topbar nav a{position:relative;color:var(--ink-dim);padding-bottom:3px;transition:color var(--dur-1) var(--ease)}.topbar nav a:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--accent);transform:scaleX(0);transition:transform var(--dur-2) var(--ease-out)}.topbar nav a:hover{color:var(--ink);text-decoration:none}.topbar nav a:hover:after{transform:scaleX(1)}.topbar nav a[data-active=true]{color:var(--ink)}.topbar nav a[data-active=true]:after{transform:scaleX(1)}.topbar .spacer{flex:1 1}.page{width:100%;max-width:1180px;margin:0 auto;padding:28px 24px 72px}.page.wide{max-width:1520px}h1{font-size:22px;margin:0 0 4px;letter-spacing:-.01em}h1,h2{font-weight:600}h2{font-size:15px;margin:0 0 12px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-dim)}.subtitle{color:var(--ink-faint);margin:0 0 24px;font-size:14px}.panel{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:20px;animation:rise-in var(--dur-3) var(--ease-out) both}@keyframes rise-in{0%{opacity:0;transform:translateY(6px)}}label{display:block;font-size:13px;color:var(--ink-dim);margin-bottom:6px}input[type=number],input[type=password],input[type=text],select{width:100%;padding:9px 11px;background:var(--bg-sunken);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--ink);font:inherit;transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease)}input[type=number]:hover,input[type=password]:hover,input[type=text]:hover,select:hover{border-color:var(--ink-faint)}.field{margin-bottom:18px}.field-affix{position:relative;display:flex;align-items:center}.field-affix>input{padding-right:46px}.field-affix>button.affix{position:absolute;right:5px;display:flex;align-items:center;padding:6px;background:transparent;border:1px solid transparent;color:var(--ink-faint)}.field-affix>button.affix:hover:not(:disabled){background:transparent;color:var(--ink)}.field-affix>button.affix:focus-visible{border-color:var(--line-strong);color:var(--ink)}.hint{font-size:12px;color:var(--ink-faint);margin-top:5px}button{font:inherit;padding:9px 16px;border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--bg-raised);color:var(--ink);cursor:pointer;transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}button:hover:not(:disabled){border-color:var(--ink-faint);background:var(--line)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#17170f;font-weight:600}button.primary:hover:not(:disabled){background:#e6d9bd;border-color:#e6d9bd;box-shadow:0 2px 14px rgba(216,201,168,.22)}button.ghost{background:transparent}button.ghost:hover:not(:disabled){background:rgba(255,255,255,.05)}button.cta{padding:12px 26px;font-size:15px;letter-spacing:.01em}.row{display:flex;gap:12px;align-items:center}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;font-weight:500;color:var(--ink-faint);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:0 12px 10px}td,th{border-bottom:1px solid var(--line)}td{padding:12px;vertical-align:middle}tbody tr{transition:background-color var(--dur-1) var(--ease)}tbody tr:hover{background:rgba(255,255,255,.04)}.numeric{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:999px;font-size:12px;border:1px solid var(--line-strong);color:var(--ink-dim);white-space:nowrap;transition:border-color var(--dur-2) var(--ease),color var(--dur-2) var(--ease),background-color var(--dur-2) var(--ease)}.badge[data-state=running]{border-color:#3d6ea8;color:#9dc0eb}.badge[data-state=succeeded]{border-color:var(--good);color:#8fd0a4}.badge[data-state=failed]{border-color:var(--poor);color:#e79a92}.badge[data-state=paused]{border-color:var(--fair);color:#e8c274}.chip{display:inline-block;padding:1px 7px;border-radius:3px;font-size:11px;letter-spacing:.03em;text-transform:uppercase;background:rgba(255,255,255,.06);color:var(--ink-dim)}.alert{border:1px solid var(--line-strong);border-left-width:3px;border-radius:var(--radius);padding:14px 16px;margin-bottom:20px;background:var(--bg-raised)}.alert h3{margin:0 0 6px;font-size:14px;font-weight:600}.alert p{margin:0 0 10px;font-size:13px;color:var(--ink-dim)}.alert[data-kind=cost_ceiling]{border-left-color:var(--fair)}.alert[data-kind=disk_full],.alert[data-kind=failed],.alert[data-kind=stalled]{border-left-color:var(--poor)}.alert[data-kind=source_degraded]{border-left-color:#3d6ea8}@keyframes stage-pulse{50%{opacity:.42}}.cooking{padding:22px 22px 20px}.cooking-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}.cooking-title{margin:0 0 3px;font-size:19px;font-weight:600;letter-spacing:-.015em;color:var(--ink)}.cooking-sub{margin:0;font-size:13px;color:var(--ink-faint);max-width:62ch}.cooking-percent{flex:none;margin:0;font-size:30px;font-weight:600;line-height:1;letter-spacing:-.03em;color:var(--accent)}.cooking[data-settled=true] .cooking-percent{color:var(--ink-dim)}.cooking-bar{height:8px;border-radius:4px;background:var(--bg-sunken);border:1px solid var(--line);overflow:hidden}.cooking-bar>span{display:block;height:100%;width:0;background:var(--accent);transition:width 2s linear}.cooking-bar[data-unknown=true]>span{width:32%;transition:none;animation:cooking-sweep 1.9s var(--ease) infinite;background:linear-gradient(90deg,transparent,var(--accent),transparent)}@keyframes cooking-sweep{0%{transform:translateX(-110%)}to{transform:translateX(420%)}}.cooking-rail{display:flex;gap:4px;margin:16px 0 0}.cooking-step{min-width:0;display:flex;flex-direction:column;gap:6px}.cooking-step-bar{height:3px;border-radius:2px;background:var(--line);transition:background-color var(--dur-3) var(--ease)}.cooking-step-name{font-size:10.5px;letter-spacing:.04em;color:var(--ink-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color var(--dur-3) var(--ease)}.cooking-step[data-state=done] .cooking-step-bar{background:var(--good)}.cooking-step[data-state=done] .cooking-step-name{color:var(--ink-dim)}.cooking-step[data-state=active] .cooking-step-bar{background:var(--accent);animation:stage-pulse 1.8s var(--ease) infinite}.cooking-step[data-state=active] .cooking-step-name{color:var(--ink);font-weight:600}.cooking-step[data-state=failed] .cooking-step-bar{background:var(--poor)}.cooking-step[data-state=failed] .cooking-step-name{color:#e79a92}.cooking-facts{display:flex;flex-wrap:wrap;gap:8px 26px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-dim)}.cooking-facts>span{display:flex;align-items:baseline;gap:8px}.cooking-fact-key{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}@media (max-width:720px){.cooking-head{flex-direction:column-reverse;align-items:flex-start;gap:8px}.cooking-step-name{display:none}}.play-tile{display:inline-flex;align-items:center;justify-content:center;width:46px;height:28px;padding:0;border-radius:4px;border:1px solid var(--line-strong);background:var(--bg-sunken);color:var(--ink-dim);cursor:pointer}.play-tile svg{fill:currentColor;margin-left:2px}.play-tile:hover:not(:disabled){border-color:var(--accent);background:var(--bg-raised);color:var(--accent)}.play-tile:disabled{opacity:.3;cursor:not-allowed}.preview-backdrop{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:28px;background:rgba(6,6,8,.82);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in var(--dur-2) var(--ease-out)}.preview-frame{width:min(1200px,94vw);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-raised);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:0 24px 80px rgba(0,0,0,.6);animation:preview-in var(--dur-3) var(--ease-out)}.preview-frame:-webkit-full-screen{width:100vw;max-height:none;height:100vh;border:0;border-radius:0;box-shadow:none;background:#000}.preview-frame:fullscreen{width:100vw;max-height:none;height:100vh;border:0;border-radius:0;box-shadow:none;background:#000}.preview-frame:-webkit-full-screen .preview-stage{flex:1 1;aspect-ratio:auto}.preview-frame:fullscreen .preview-stage{flex:1 1;aspect-ratio:auto}@keyframes preview-in{0%{opacity:0;transform:scale(.97) translateY(10px)}}.preview-head{display:flex;align-items:center;gap:14px;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--bg-raised)}.preview-title{flex:1 1;min-width:0;margin:0;font-size:13.5px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-actions{flex:none;display:flex;gap:6px;align-items:center}.preview-link{display:inline-flex;align-items:center;padding:3px 9px;font-size:12px;border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--ink);text-decoration:none;transition:border-color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease)}.preview-link:hover{border-color:var(--ink-faint);background:rgba(255,255,255,.05);text-decoration:none}.preview-stage{background:#000;aspect-ratio:16/9;display:flex;min-height:0}.preview-video{width:100%;height:100%;display:block;object-fit:contain;background:#000}@media (max-width:720px){.preview-backdrop{padding:10px}.preview-frame{width:100%}}.filmstrip{overflow-x:auto;overflow-y:hidden;padding-bottom:12px;scrollbar-color:var(--line-strong) transparent}.filmstrip-rail{display:flex;gap:8px;min-width:min-content}.strip-cell{width:160px;flex:0 0 160px;background:transparent;border:0;padding:0;text-align:left;cursor:pointer}.strip-thumb{position:relative;width:160px;height:90px;border-radius:3px;overflow:hidden;background:var(--bg-sunken);border:1px solid var(--line);transition:border-color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),transform var(--dur-2) var(--ease-out)}.strip-cell:hover .strip-thumb{border-color:var(--line-strong);transform:translateY(-2px)}.strip-thumb img{transition:transform var(--dur-3) var(--ease-out)}.strip-cell:hover .strip-thumb img{transform:scale(1.04)}.strip-cell[data-selected=true] .strip-thumb{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.strip-thumb img{width:100%;height:100%;object-fit:cover;display:block}.strip-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase}.strip-score{position:absolute;top:4px;left:4px;font-size:11px;font-weight:600;padding:1px 6px;border-radius:3px;color:#0b0b0d;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.strip-score[data-band=good]{background:var(--good)}.strip-score[data-band=fair]{background:var(--fair)}.strip-score[data-band=poor]{background:var(--poor);color:#fff}.strip-score[data-band=card],.strip-score[data-band=none]{background:var(--card);color:var(--ink)}.strip-source{position:absolute;bottom:4px;right:4px;font-size:10px;padding:1px 5px;border-radius:3px;background:rgba(0,0,0,.6);color:var(--ink-dim);letter-spacing:.04em;text-transform:uppercase}.strip-duration{height:4px;margin-top:5px;background:var(--bg-sunken);border-radius:2px;overflow:hidden}.strip-duration span{display:block;height:100%;background:var(--line-strong)}.strip-cell[data-selected=true] .strip-duration span{background:var(--accent)}.strip-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-faint);margin-top:4px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.candidates{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:12px;gap:12px;margin-top:14px}.candidate{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-sunken)}.candidate[data-selected=true]{border-color:var(--accent)}.candidate img{width:100%;height:124px;object-fit:cover;display:block;background:var(--bg)}.candidate .body{padding:9px 10px;font-size:12px}.candidate .reason{color:var(--ink-dim);margin-top:5px;line-height:1.4}.events{max-height:260px;overflow-y:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.6;background:var(--bg-sunken);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.events div{display:flex;gap:10px}.events .at{color:var(--ink-faint);flex:0 0 66px}.events [data-level=warn]{color:#e8c274}.events [data-level=error]{color:#e79a92}.state{padding:44px 20px;text-align:center;color:var(--ink-faint);border:1px dashed var(--line-strong);border-radius:var(--radius)}.state strong{display:block;color:var(--ink-dim);font-weight:500;margin-bottom:6px}.skeleton{background:linear-gradient(90deg,var(--bg-raised),var(--line),var(--bg-raised));background-size:200% 100%;animation:shimmer 1.4s linear infinite;border-radius:3px}@keyframes shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}}.progressbar{height:6px;background:var(--bg-sunken);border-radius:3px;overflow:hidden;margin-top:10px}.progressbar span{display:block;height:100%;background:var(--accent);transition:width var(--dur-1) linear}.progressbar[data-indeterminate=true] span{background-image:linear-gradient(90deg,var(--accent) 0,#fffaf0 50%,var(--accent) 100%);background-size:200% 100%;animation:sheen 1.1s linear infinite}@keyframes sheen{to{background-position:-200% 0}}.row>.spacer{flex:1 1}.alert-line{margin:0 auto 16px;padding:9px 14px;max-width:60ch;text-align:center;font-size:13px;color:#e79a92;background:rgba(180,72,63,.1);border:1px solid rgba(180,72,63,.4);border-radius:var(--radius)}.dropzone[data-dragging=true]{border-color:var(--accent);background:var(--bg-raised)}.dropnote{margin:2px 0 20px;padding:9px 12px;font-size:12.5px;color:var(--ink-dim);background:rgba(216,201,168,.05);border-left:2px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0}.drop-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;pointer-events:none;background:rgba(10,10,12,.74);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade-in var(--dur-2) var(--ease-out)}.drop-card{max-width:420px;padding:26px 34px;text-align:center;border:2px dashed var(--accent);border-radius:var(--radius);background:var(--bg-raised);animation:drop-card-in var(--dur-3) var(--ease-out)}@keyframes fade-in{0%{opacity:0}}@keyframes drop-card-in{0%{opacity:0;transform:scale(.96) translateY(8px)}}.drop-card strong{display:block;font-size:16px;font-weight:600;margin-bottom:6px}.drop-card p{margin:0;font-size:13px;color:var(--ink-dim)}.slots{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin:0 0 28px}@media (max-width:860px){.slots{grid-template-columns:1fr}.slot{min-height:0}}.slot{position:relative;display:flex;flex-direction:column;min-height:232px;margin:0;overflow:hidden;text-align:center;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--bg-sunken);transition:border-color var(--dur-2) var(--ease),background-color var(--dur-2) var(--ease),transform var(--dur-2) var(--ease-out)}.slot[data-filled=false]:hover{border-color:var(--accent);background:var(--bg-raised);transform:translateY(-2px)}.slot[data-filled=true]{border-style:solid;background:var(--bg-raised);animation:slot-fill var(--dur-2) var(--ease-out)}.slot[data-filled=true]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--good)}.slot input[type=file]{position:absolute;top:0;left:0;width:1px;height:1px;margin:0;padding:0;border:0;opacity:0;pointer-events:none}.slot[data-filled=false]{cursor:pointer}.slot:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px rgba(216,201,168,.28)}.slot-body{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:22px 16px}.slot-art{height:62px;display:grid;place-items:center}.slot-art svg{display:block}.slot label{margin:0;font-size:14px;font-weight:600;color:var(--ink);letter-spacing:-.005em;cursor:pointer}.slot-types{font-size:11.5px;line-height:1.45;color:var(--ink-faint);margin:0}.slot-name{max-width:100%;padding:0 2px;font-size:12.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-meta{display:flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.04em;color:var(--ink-dim);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.slot-size[data-over=true]{color:var(--poor)}.slot-foot{border-top:1px solid var(--line);padding:10px;font-size:12.5px;font-weight:500;color:var(--accent);background:rgba(216,201,168,.04);transition:background-color var(--dur-2) var(--ease),color var(--dur-2) var(--ease)}.slot[data-filled=false]:hover .slot-foot{background:rgba(216,201,168,.1)}.slot[data-filled=true] .slot-foot{background:transparent;padding:7px 8px}.slot-actions{position:relative;z-index:3;display:flex;gap:6px;justify-content:center;flex-wrap:wrap}.optional-tag{position:absolute;top:9px;right:9px;z-index:3;padding:2px 6px;border-radius:3px;background:rgba(255,255,255,.06);color:var(--ink-faint);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;pointer-events:none}@keyframes slot-fill{0%{opacity:0;transform:translateY(-4px)}}.page.centered .subtitle,.page.centered h1{text-align:center}.page.centered .subtitle{max-width:52ch;margin-left:auto;margin-right:auto}.titlefield{max-width:420px;margin:0 auto 26px}.titlefield label{display:block;text-align:center;margin-bottom:7px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim)}.titlefield input{text-align:center}.generate-row{display:flex;flex-direction:column;align-items:center;gap:12px}.generate-row .progressbar{width:min(420px,100%);margin-top:0}button.tiny{padding:3px 9px;font-size:12px}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}