:root{--accent:#c0713a;--ink:#2a1c14;--cream:#fff6ea;--r:22px}
@supports(color:color-mix(in srgb,red,blue)){:root{--accent-d:color-mix(in srgb,var(--accent) 78%,#000);--accent-l:color-mix(in srgb,var(--accent) 16%,#fff)}}
:root{--accent-d:var(--accent);--accent-l:#fbe9d8}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:var(--cream);color:var(--ink);font-family:'Hanken Grotesk',system-ui,sans-serif;-webkit-user-select:none;user-select:none;touch-action:manipulation}
input,textarea{-webkit-user-select:text;user-select:text}
h1,h2,h3{font-family:'Fredoka','Hanken Grotesk',sans-serif;font-weight:600;margin:0}
#app{position:fixed;inset:0}
.screen{position:absolute;inset:0;display:none;flex-direction:column;background:var(--cream);overflow:hidden}
.screen.on{display:flex;animation:in .28s ease}
@keyframes in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.screen.dark{background:#16110d;color:#fff}
.screen.center{align-items:center;justify-content:center;text-align:center;gap:14px;padding:24px}
button{font-family:inherit;cursor:pointer;border:0}
.big{background:var(--accent);color:#fff;font:600 clamp(24px,4.2vw,40px) 'Fredoka',sans-serif;padding:.7em 1.6em;border-radius:99px;box-shadow:0 10px 0 var(--accent-d),0 22px 36px rgba(0,0,0,.2);transition:transform .12s,box-shadow .12s}
.big:active{transform:translateY(8px);box-shadow:0 2px 0 var(--accent-d)}
.primary{background:var(--accent);color:#fff;font-weight:700;font-size:17px;padding:13px 24px;border-radius:99px;box-shadow:0 4px 0 var(--accent-d)}
.primary:active{transform:translateY(3px);box-shadow:none}
.primary:disabled{opacity:.55}
.ghost{background:rgba(0,0,0,.06);color:var(--ink);font-weight:700;font-size:16px;padding:11px 18px;border-radius:99px}
.ghost.light{background:rgba(255,255,255,.16);color:#fff}
.bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;padding-top:max(14px,env(safe-area-inset-top))}
.bar h2{font-size:clamp(20px,3vw,28px);text-align:center;flex:1}
.mono{font-family:'Space Mono',monospace}
.sub{color:#7a6656;font-size:18px;margin:0}
/* idle */
#s-idle{align-items:center;justify-content:center;text-align:center;background:radial-gradient(circle at 20% 15%,var(--accent-l),transparent 55%),radial-gradient(circle at 85% 85%,#ffe7b8,transparent 50%),var(--cream)}
.idle-in{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:18px;padding:24px;max-width:760px}
.idle-in h1{font-size:clamp(38px,8vw,84px);line-height:1;color:var(--ink);text-wrap:balance}
.idle-in .logo{max-height:clamp(60px,12vh,120px);max-width:60vw}
.idle-in .meta{font:15px 'Space Mono',monospace;color:#7a6656;margin:6px 0 0}
.idle-in .sub{font-size:clamp(18px,2.6vw,28px)}
.decor canvas{position:absolute;animation:fl 6s ease-in-out infinite alternate;opacity:.95}
@keyframes fl{from{transform:translateY(0) rotate(var(--r0,0deg))}to{transform:translateY(-18px) rotate(var(--r1,8deg))}}
.gear{position:absolute;right:10px;bottom:10px;z-index:3;width:44px;height:44px;border-radius:50%;background:transparent;color:rgba(0,0,0,.28);font-size:22px}
/* pick */
.chips{display:flex;gap:8px;padding:0 18px 10px;overflow-x:auto;flex-shrink:0}.chips.wrap{flex-wrap:wrap;padding:0;overflow:visible}
.chip{flex:none;background:#fff;border:2px solid #ecdcc3;color:var(--ink);font-weight:700;font-size:16px;padding:9px 18px;border-radius:99px}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.tgrid{flex:1;overflow-y:auto;padding:6px 18px 28px;display:grid;grid-template-columns:repeat(auto-fill,minmax(clamp(150px,22vw,240px),1fr));gap:16px;align-content:start;-webkit-overflow-scrolling:touch}
.tcard{background:#fff;border:3px solid transparent;border-radius:var(--r);padding:10px;box-shadow:0 6px 20px rgba(80,40,10,.12);text-align:center;transition:transform .12s;display:flex;flex-direction:column;gap:6px}
.tcard:active{transform:scale(.97)}.tcard canvas{width:100%;height:auto;border-radius:12px;background:#eee;display:block}
.tcard b{font:600 17px 'Fredoka',sans-serif}.tcard span{font-size:13px;color:#7a6656}
.tcard.mag{background:linear-gradient(160deg,var(--accent-l),#fff)}
/* shoot */
.stage{position:relative;flex:1;min-height:0;overflow:hidden;background:#000}
.stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.stage video.mir{transform:scaleX(-1)}
.mask{position:absolute;border-radius:22px;border:3px dashed rgba(255,255,255,.85);box-shadow:0 0 0 9999px rgba(0,0,0,.42);pointer-events:none;left:50%;top:50%;transform:translate(-50%,-50%)}
.count{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:600 min(40vw,40vh) 'Fredoka',sans-serif;color:#fff;text-shadow:0 8px 40px rgba(0,0,0,.55);pointer-events:none}
.count.pop span{animation:pop .9s ease-out}@keyframes pop{0%{transform:scale(.4);opacity:0}25%{transform:scale(1.1);opacity:1}100%{transform:scale(.9);opacity:.2}}
.freeze{position:absolute;inset:0;display:none;background:#000;align-items:center;justify-content:center}.freeze.on{display:flex}.freeze canvas{position:absolute;border-radius:22px;box-shadow:0 0 0 9999px rgba(0,0,0,.6)}
.flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}.flash.go{animation:fl2 .45s ease-out}@keyframes fl2{0%{opacity:.95}100%{opacity:0}}
.hud{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:center;padding:14px 16px;padding-top:max(14px,env(safe-area-inset-top))}
.prog{display:flex;gap:7px}.prog i{width:14px;height:14px;border-radius:50%;background:rgba(255,255,255,.35)}.prog i.on{background:var(--accent);box-shadow:0 0 0 3px rgba(255,255,255,.7)}.prog i.done{background:#fff}
.cam-err{position:absolute;inset:0;display:none;align-items:center;justify-content:center;text-align:center;padding:30px;font-size:19px;background:#16110d;color:#ffd9c2;line-height:1.5}.cam-err.on{display:flex;flex-direction:column;gap:14px}
.shoot-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;padding-bottom:max(12px,env(safe-area-inset-bottom));background:#16110d}
.mini{display:flex;gap:8px;flex:1;min-width:0;overflow:hidden}.mini canvas{height:clamp(48px,9vh,76px);width:auto;border-radius:10px;border:2px solid rgba(255,255,255,.5);flex:none}
.side-btns{flex:1;display:flex;justify-content:flex-end}
.shutter{width:clamp(74px,12vh,104px);height:clamp(74px,12vh,104px);border-radius:50%;background:#fff;padding:7px;flex:none;box-shadow:0 0 0 5px rgba(255,255,255,.28)}
.shutter i{display:block;width:100%;height:100%;border-radius:50%;background:var(--accent);transition:transform .1s}.shutter:active i{transform:scale(.88)}
.tip{margin:0;text-align:center;padding:0 0 12px;background:#16110d;color:#b9a68b;font-size:14px}
/* review */
.rv{flex:1;min-height:0;display:flex;gap:18px;padding:0 18px 18px}
.rv-main{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:10px;overflow:auto}
.rv-main canvas{max-width:100%;max-height:100%;height:auto;object-fit:contain;border-radius:12px;box-shadow:0 12px 36px rgba(80,40,10,.28);flex:none}
#pv{max-height:calc(100vh - 100px);width:auto}
.pages{display:flex;gap:8px;overflow-x:auto;max-width:100%;padding:6px 2px}.pages canvas{height:90px;width:auto;box-shadow:0 3px 10px rgba(0,0,0,.2);border-radius:6px}
.rv-side{width:min(300px,34vw);flex:none;display:flex;flex-direction:column;gap:10px;overflow:auto}
.rv-side h3{font-size:17px;margin-top:6px}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.thumbs button{position:relative;padding:0;background:none;border-radius:12px;overflow:hidden;border:3px solid #fff;box-shadow:0 3px 10px rgba(0,0,0,.18)}
.thumbs canvas{width:100%;display:block;aspect-ratio:1;object-fit:cover}
.thumbs button::after{content:'↺';position:absolute;right:4px;bottom:4px;background:rgba(0,0,0,.6);color:#fff;border-radius:50%;width:24px;height:24px;line-height:24px;font-size:15px}
/* upload */
.spin{width:64px;height:64px;border-radius:50%;border:7px solid var(--accent-l);border-top-color:var(--accent);animation:sp 1s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}
.pbar{width:min(420px,80vw);height:12px;background:#ecdcc3;border-radius:99px;overflow:hidden}.pbar i{display:block;height:100%;width:0;background:var(--accent);transition:width .25s}
/* done */
.done{flex:1;min-height:0;display:flex;gap:20px;padding:0 20px 20px}
.done-img{flex:1;min-width:0;display:flex;align-items:center;justify-content:center}
.done-img canvas{max-width:100%;max-height:100%;border-radius:14px;box-shadow:0 14px 40px rgba(80,40,10,.3)}
.done-side{width:min(420px,46vw);flex:none;display:flex;flex-direction:column;gap:12px;overflow:auto}
.box{background:#fff;border-radius:var(--r);padding:16px;box-shadow:0 6px 20px rgba(80,40,10,.1);display:flex;flex-direction:column;gap:10px}
.box.qr{flex-direction:row;align-items:center;gap:14px}.box.qr #qr{width:min(150px,30vw);flex:none;background:#fff;padding:6px;border-radius:10px;border:2px solid #f0e2cc}.box.qr svg{width:100%;height:auto;display:block}
.qr .mono{font-size:12px;color:#7a6656;word-break:break-all}
.box input[type=text],.box input[type=tel]{font:18px 'Hanken Grotesk',sans-serif;padding:13px 14px;border-radius:14px;border:2px solid #ecdcc3;width:100%}
.box input:focus{outline:none;border-color:var(--accent)}
.chk{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:#6b5848;line-height:1.35}.chk input{width:22px;height:22px;flex:none;accent-color:var(--accent)}
.row{display:flex;gap:8px;flex-wrap:wrap}.row button{flex:1;min-width:84px}
.wa-msg{margin:0;font-weight:700;min-height:1.2em}.wa-msg.ok{color:#2f7d4a}.wa-msg.err{color:#b83a2a}
.idle-note{margin:0;text-align:center;color:#9a8672;font-size:13px}
/* modal */
.modal{position:absolute;inset:0;background:rgba(20,10,5,.6);display:none;align-items:center;justify-content:center;z-index:20;padding:16px}.modal.on{display:flex}
.modal .sheet{background:#fff;border-radius:24px;padding:22px;width:min(520px,100%);max-height:100%;overflow:auto;display:flex;flex-direction:column;gap:12px}
.modal label{font-weight:700;font-size:14px;display:flex;flex-direction:column;gap:5px}.modal label.chk{flex-direction:row;font-size:15px;color:inherit;align-items:center}
.modal select{font:16px 'Hanken Grotesk',sans-serif;padding:10px;border-radius:10px;border:2px solid #ecdcc3;background:#fff}
.hint{font-size:12.5px;color:#7a6656;margin:0}
#toast{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);background:#2a1c14;color:#fff;padding:12px 20px;border-radius:99px;font-weight:700;z-index:30;opacity:0;pointer-events:none;transition:opacity .25s;max-width:90vw;text-align:center}#toast.on{opacity:1}
@media(max-width:760px){
 .rv,.done{flex-direction:column;overflow-y:auto}.rv-side,.done-side{width:100%}.rv-main{flex:none}
 #pv{max-height:52vh}.done-img{flex:none;max-height:46vh}.done-img canvas{max-height:46vh}.box.qr #qr{width:110px}
}

.fxcv{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:22px;pointer-events:none;display:none}.fxcv.on{display:block}
#btn-fx.on{background:#1b8fd6;color:#fff;border-color:#8fe3ff}
.side-btns{gap:10px;align-items:center}
