*,:after,:before{box-sizing:border-box}:root{--bg:#15171B;--ink:#E9E9E4;--ink-soft:#A2A6AD;--card:#1C1F24;--line:#2C2F36;--rec:#E85A50;--go:#6BB287;--warn:#D3A055}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.shell,body,html{min-height:100dvh}.shell{max-width:480px;margin:0 auto;padding:1.25rem 1rem 3rem;display:flex;flex-direction:column;gap:1rem}.brand{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.1rem;letter-spacing:.02em}.brand .dot{width:.6rem;height:.6rem;border-radius:50%;background:var(--rec)}.stepper{display:flex;gap:.35rem}.stepper i{flex:1 1;height:3px;border-radius:2px;background:var(--line)}.stepper i.on{background:var(--rec)}h1{font-size:1.5rem;margin:.5rem 0 0;line-height:1.2}p{line-height:1.55;color:var(--ink-soft);margin:.5rem 0}p.strong{color:var(--ink)}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1rem}button.ghost,button.primary{font:inherit;font-weight:600;border-radius:10px;padding:.85rem 1.25rem;cursor:pointer;width:100%}button.primary{background:var(--rec);color:#fff;border:none}button.primary:disabled{opacity:.45;cursor:default}button.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}.video-frame{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:3/4;background:#000}.video-frame video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.video-frame .guide{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.video-frame .guide .oval{width:62%;height:68%;border:2px dashed rgba(255,255,255,.55);border-radius:50%;transition:border-color .2s}.video-frame.locked .guide .oval{border-color:var(--go);border-style:solid}.video-frame .hint{position:absolute;bottom:.75rem;left:0;right:0;text-align:center;font-size:.85rem;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.7)}.video-frame .flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}.video-frame .flash.snap{animation:flash .35s ease-out}@keyframes flash{0%{opacity:.9}to{opacity:0}}.shots{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:.5rem;gap:.5rem}.shots img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;border:2px solid transparent;cursor:pointer}.shots img.sel{border-color:var(--rec)}.meter{height:8px;border-radius:4px;background:var(--line);overflow:hidden}.meter>div{height:100%;background:var(--go);transition:width .08s linear}.rec-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700;text-align:center}.rec-time.live{color:var(--rec)}textarea.script{width:100%;min-height:8rem;font:inherit;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:.75rem;resize:vertical}.charcount{font-size:.8rem;text-align:right;color:var(--ink-soft)}.stages{display:flex;flex-direction:column;gap:.6rem}.stage-row{display:flex;align-items:center;gap:.7rem;font-size:.95rem}.stage-row .bullet{width:1.4rem;height:1.4rem;border-radius:50%;display:grid;place-items:center;font-size:.7rem;background:var(--line);color:var(--ink-soft);flex-shrink:0}.stage-row.done .bullet{background:var(--go);color:#fff}.stage-row.active .bullet{background:var(--rec);color:#fff;animation:pulse 1.2s infinite}.stage-row.waiting{color:var(--warn)}@keyframes pulse{50%{transform:scale(1.15)}}.result-photo{width:100%;border-radius:12px}.notice{border-left:3px solid var(--warn);padding:.6rem .8rem;font-size:.9rem;color:var(--ink-soft);background:var(--card);border-radius:0 8px 8px 0}.error{border-left-color:var(--rec);color:var(--ink)}