:root{--bg-stage: oklch(9% .004 245);--chassis: oklch(16% .008 245);--chassis-hi: oklch(24% .01 245);--glass: oklch(11% .006 245 / .72);--glass-soft: oklch(11% .006 245 / .45);--line: oklch(100% 0 0 / .14);--line-hi: oklch(100% 0 0 / .28);--text: oklch(94% .006 245);--text-dim: oklch(74% .012 245);--text-faint: oklch(58% .012 245);--accent: oklch(80% .11 295);--accent-ink: oklch(18% .02 295);--red-accent: #e63946;--font-body: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-doto: "Doto", ui-monospace, monospace;--safe-t: env(safe-area-inset-top);--safe-b: env(safe-area-inset-bottom);--safe-l: env(safe-area-inset-left);--safe-r: env(safe-area-inset-right)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}html,body{margin:0;height:100%;overscroll-behavior:none;background:var(--bg-stage);color:var(--text);font-family:var(--font-body);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button{font:inherit;color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#mobile-app{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden}#start-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 50% 32%,var(--chassis-hi),var(--bg-stage) 68%)}.start-card{max-width:360px;width:100%;text-align:center}.start-lens{width:112px;height:112px;margin:0 auto 26px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 38% 34%,var(--chassis-hi),var(--bg-stage) 70%);box-shadow:inset 0 0 0 2px var(--line-hi),0 0 0 10px var(--chassis),0 0 0 11px var(--line)}.start-lens i{width:38px;height:38px;border-radius:50%;background:radial-gradient(circle at 35% 35%,var(--accent),var(--accent-ink) 72%);box-shadow:0 0 28px #c3b0fd73}.wordmark{font-family:var(--font-doto);font-weight:900;font-size:34px;letter-spacing:.04em;margin:0 0 10px}.start-card p{color:var(--text-dim);font-size:15px;line-height:1.5;margin:0 0 26px}#start-btn{width:100%;min-height:56px;font-size:17px;font-weight:600;border-radius:16px;border:none;background:var(--accent);color:var(--accent-ink);cursor:pointer}#start-btn:disabled{opacity:.6}.start-error{color:var(--red-accent);font-size:14px;margin-top:14px}.full-app-link{display:inline-block;margin-top:28px;color:var(--text-faint);font-size:13px;text-decoration:underline}#stage{position:fixed;top:0;right:0;bottom:0;left:0;background:#000}#cam-video{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.viewfinder{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none}#view{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.vf-badge{position:absolute;top:calc(70px + var(--safe-t));left:50%;transform:translate(-50%);padding:5px 10px;border-radius:6px;background:var(--glass);font-family:var(--font-doto);font-weight:800;font-size:13px;letter-spacing:.12em;color:var(--accent)}.vf-title{position:absolute;left:0;right:0;top:38%;text-align:center;pointer-events:none;opacity:0;transition:opacity .35s ease;text-shadow:0 2px 14px rgba(0,0,0,.65)}.vf-title.show{opacity:1;transition-duration:.08s}.vf-title small{display:block;font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim);margin-bottom:4px}.vf-title span{font-family:var(--font-doto);font-weight:900;font-size:40px;letter-spacing:.03em}.flash{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;opacity:0;pointer-events:none}.flash.go{animation:flash .32s ease-out}@keyframes flash{0%{opacity:.85}to{opacity:0}}.icon-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:none;background:var(--glass-soft);color:var(--text);font-size:22px;line-height:1;cursor:pointer;flex:none;padding:0}.icon-btn:active{background:var(--glass);transform:scale(.94)}.icon-btn[aria-expanded=true]{background:var(--accent);color:var(--accent-ink)}.icon-btn svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon-btn svg .dot{fill:currentColor;stroke:none}.icon-btn.round{width:48px;height:48px;background:var(--chassis-hi)}.top-bar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;padding:calc(8px + var(--safe-t)) calc(14px + var(--safe-r)) 10px calc(14px + var(--safe-l));background:linear-gradient(to bottom,rgba(0,0,0,.55),transparent);pointer-events:none}.top-bar>*{pointer-events:auto}.lcd{flex:1;min-width:0;display:flex;justify-content:center}#effect-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-radius:8px;background:var(--glass-soft);font-family:var(--font-doto);font-weight:800;font-size:14px;letter-spacing:.08em;text-transform:uppercase}.rec-pill{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:8px;background:var(--red-accent);font-family:var(--font-doto);font-weight:800;font-size:15px;letter-spacing:.06em;font-variant-numeric:tabular-nums}.rec-pill i{width:8px;height:8px;border-radius:50%;background:#fff;animation:rec-blink 1.2s steps(1,end) infinite}@keyframes rec-blink{50%{opacity:.2}}.controls{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;gap:12px;padding:14px calc(18px + var(--safe-r)) calc(16px + var(--safe-b)) calc(18px + var(--safe-l));background:linear-gradient(to top,rgba(0,0,0,.78),rgba(0,0,0,.5) 70%,transparent)}.layers{display:flex;align-items:center;gap:8px;width:100%;max-width:440px}.layer-btn{flex:1;min-width:0;min-height:48px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;padding:6px 12px;border-radius:12px;border:1px solid var(--line);background:var(--glass-soft);cursor:pointer;text-align:left}.layer-btn:active{background:var(--glass)}.layer-btn.focus{border-color:var(--accent)}.layer-k{font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint)}.layer-btn.focus .layer-k{color:var(--accent)}.layer-v{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600}.layer-arrow{color:var(--text-faint);font-size:20px;flex:none}.modes{display:flex;gap:4px}.mode{min-height:34px;padding:6px 14px;border:none;border-radius:999px;background:none;font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);cursor:pointer}.mode.active{color:var(--accent);background:var(--glass-soft)}.mode:disabled{opacity:.4}.shutter-row{width:100%;max-width:440px;display:flex;align-items:center;justify-content:space-between;padding:0 10px}.roll-btn{width:48px;height:48px;padding:0;border-radius:10px;border:2px solid var(--line-hi);background:var(--chassis) center / cover no-repeat;cursor:pointer}.roll-btn:disabled{opacity:.35}.roll-btn.pop{animation:pop .35s ease-out}@keyframes pop{0%{transform:scale(.6)}70%{transform:scale(1.08)}to{transform:scale(1)}}.shutter{width:78px;height:78px;padding:0;border-radius:50%;border:4px solid #fff;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer}.shutter span{width:62px;height:62px;border-radius:50%;background:#fff;transition:width .2s ease,height .2s ease,border-radius .2s ease,transform .1s ease}.shutter:active span{transform:scale(.9)}.shutter.video span{background:var(--red-accent)}.shutter.recording span{width:30px;height:30px;border-radius:7px}.tray{position:absolute;left:0;right:0;bottom:var(--controls-h, 200px);padding:12px 0 10px;background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line)}.tray-opts,.dials{display:flex;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none;padding:0 calc(14px + var(--safe-r)) 0 calc(14px + var(--safe-l))}.tray-opts::-webkit-scrollbar,.dials::-webkit-scrollbar{display:none}.tray-opts{gap:14px;margin-bottom:12px}.tray-opts:empty{display:none}.opt-group{flex:none;display:flex;align-items:center;gap:6px}.opt-label,.dial-group{font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint)}.opt-chip{min-height:34px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--chassis);color:var(--text-dim);font-size:13px;white-space:nowrap;cursor:pointer}.opt-chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.dials{gap:4px;align-items:flex-end}.dial-group{flex:none;align-self:stretch;writing-mode:vertical-rl;transform:rotate(180deg);text-align:center;padding:0 4px;margin-left:6px;border-right:1px solid var(--line)}.dial-group:first-child{margin-left:0}.dial{flex:none;width:62px;display:flex;flex-direction:column;align-items:center;gap:5px;padding:4px 0;border:none;background:none;cursor:pointer}.dial-ring{--v: 0;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:conic-gradient(from 225deg,var(--text-dim) calc(var(--v) * 270deg),var(--line) 0 270deg,transparent 0);-webkit-mask:radial-gradient(circle,transparent 17px,#000 18px);mask:radial-gradient(circle,transparent 17px,#000 18px)}.dial-face{position:relative;width:44px;height:44px}.dial-face .dial-ring{position:absolute;top:0;right:0;bottom:0;left:0}.dial-num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-doto);font-weight:800;font-size:13px;font-variant-numeric:tabular-nums;color:var(--text-dim)}.dial-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:var(--text-dim)}.dial.active .dial-ring{background:conic-gradient(from 225deg,var(--accent) calc(var(--v) * 270deg),var(--line-hi) 0 270deg,transparent 0)}.dial.active .dial-num,.dial.active .dial-label{color:var(--accent)}.ruler{position:relative;height:46px;margin-top:8px;overflow:hidden;touch-action:none;cursor:ew-resize;-webkit-mask:linear-gradient(to right,transparent,#000 22%,#000 78%,transparent);mask:linear-gradient(to right,transparent,#000 22%,#000 78%,transparent)}.ruler-track{position:absolute;top:12px;bottom:12px;left:50%;width:260px;background:linear-gradient(var(--text-dim),var(--text-dim)) left center / 2px 100% no-repeat,linear-gradient(var(--text-dim),var(--text-dim)) right center / 2px 100% no-repeat,repeating-linear-gradient(90deg,var(--text-faint) 0 1px,transparent 1px 13px) center / 100% 55% no-repeat;will-change:transform}.ruler-needle{position:absolute;top:6px;bottom:6px;left:50%;width:3px;margin-left:-1px;border-radius:2px;background:var(--accent);box-shadow:0 0 10px #c3b0fd99}.grid-sheet,.review{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:var(--bg-stage);z-index:10}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(10px + var(--safe-t)) calc(14px + var(--safe-r)) 10px calc(14px + var(--safe-l))}.text-btn{min-height:44px;padding:0 6px;border:none;background:none;font-size:16px;font-weight:600;color:var(--accent);cursor:pointer}.text-btn.danger{color:var(--red-accent)}.seg{display:flex;padding:3px;border-radius:12px;background:var(--chassis)}.seg button{min-height:38px;padding:0 16px;border:none;border-radius:9px;background:none;font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);cursor:pointer}.seg button.active{background:var(--chassis-hi);color:var(--text)}.grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:0 calc(8px + var(--safe-r)) calc(12px + var(--safe-b)) calc(8px + var(--safe-l));align-content:start}.cell{position:relative;display:block;height:0;padding:0 0 133.333%;border:none;border-radius:10px;overflow:hidden;background:var(--chassis);cursor:pointer}.cell canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.cell span{position:absolute;left:0;right:0;bottom:0;padding:16px 6px 6px;background:linear-gradient(to top,rgba(0,0,0,.75),transparent);font-family:var(--font-doto);font-weight:800;font-size:12px;letter-spacing:.06em;text-transform:uppercase;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell.active{box-shadow:inset 0 0 0 3px var(--accent)}.cell.active span{color:var(--accent)}.review-head{position:absolute;top:0;left:0;right:0;background:linear-gradient(to bottom,rgba(0,0,0,.6),transparent)}.review-count{font-family:var(--font-doto);font-weight:800;font-size:14px;letter-spacing:.08em;color:var(--text-dim)}.review-media{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.review-media img,.review-media video{max-width:100%;max-height:100%;object-fit:contain}.review-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px calc(18px + var(--safe-r)) calc(18px + var(--safe-b)) calc(18px + var(--safe-l))}.review-bar .icon-btn{font-size:30px}.review-bar .icon-btn:disabled{opacity:.3}.share-btn{flex:1;max-width:280px;min-height:52px;border:none;border-radius:14px;background:var(--accent);color:var(--accent-ink);font-size:16px;font-weight:600;cursor:pointer}.toast{position:fixed;left:50%;top:calc(66px + var(--safe-t));transform:translate(-50%);max-width:min(90vw,420px);padding:11px 16px;border-radius:12px;background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);font-size:14px;line-height:1.4;text-align:center;z-index:20}@media(orientation:landscape)and (max-height:560px){.controls{top:0;left:auto;right:0;bottom:0;width:calc(236px + var(--safe-r));justify-content:center;padding:calc(10px + var(--safe-t)) calc(14px + var(--safe-r)) calc(10px + var(--safe-b)) 14px;background:linear-gradient(to left,rgba(0,0,0,.78),rgba(0,0,0,.45) 75%,transparent)}.layers{flex-direction:column;align-items:stretch}.layer-btn{flex:none;min-height:44px}.layer-arrow{display:none}.shutter-row{padding:0}.top-bar{right:calc(236px + var(--safe-r))}.tray{right:calc(236px + var(--safe-r));bottom:0;padding-bottom:calc(10px + var(--safe-b))}.vf-title{right:calc(236px + var(--safe-r))}.grid{grid-template-columns:repeat(5,1fr)}}@media(min-width:640px)and (orientation:portrait){.start-card{max-width:420px}.grid{grid-template-columns:repeat(4,1fr)}}@media(prefers-reduced-motion:reduce){.rec-pill i,.roll-btn.pop,.flash.go{animation:none}.vf-title,.shutter span{transition:none}}
