:root{--bg:#0f1411;--panel:#161d18;--accent:#3fae6b;--accent2:#2b8f54;--text:#eef3ef;--muted:#9bb0a4}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overscroll-behavior:none}.app{position:fixed;inset:0;flex-direction:column}.app,.hdr{display:flex}.hdr{padding:10px 14px;font-size:14px;font-weight:600;color:var(--muted);gap:8px}.hdr b{color:var(--accent)}.hdr span{margin-left:auto;font-weight:400;font-size:12px}.stage{position:relative;flex:1 1;overflow:hidden;background:#000}.stage .ghost,.stage .result,.stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.stage .ghost{pointer-events:none}.stage .result{z-index:3;background:#000}.banner{top:10px;left:50%;transform:translateX(-50%);z-index:5;background:rgba(0,0,0,.6);color:#fff;font-size:12.5px;padding:7px 14px;border-radius:999px;max-width:92%}.banner,.center{position:absolute;text-align:center}.center{inset:0;z-index:6;display:flex;align-items:center;justify-content:center;padding:24px;font-size:15px;line-height:1.5}.center.err{color:#ff9c8a}.controls{background:var(--panel);padding:12px 16px calc(12px + env(safe-area-inset-bottom));flex-direction:column}.controls,.row{display:flex;gap:12px}.row{align-items:center}.row label{font-size:12.5px;color:var(--muted);min-width:64px}input[type=range]{flex:1 1;accent-color:var(--accent)}.btns{display:flex;gap:10px;align-items:center;justify-content:space-between}button{border:none;border-radius:12px;font-size:13.5px;font-weight:600;padding:13px 12px;background:#232d27;color:var(--text);flex:1 1}button:disabled{opacity:.5}.shoot{flex:0 0 auto;width:74px;height:74px;border-radius:50%;background:var(--accent);color:#06210f;font-size:13px;font-weight:800;box-shadow:0 0 0 4px rgba(63,174,107,.25)}.shoot:active{background:var(--accent2)}.primary{background:var(--accent);color:#06210f}.small{font-size:12px;color:var(--muted);text-align:center;margin:0}.hidden{display:none!important}input[type=file]{display:none}