:root{
  --accent:#1A62C7; --sky:#CFE6FF; --ink:#0A0A0B; --line:#2A2C30; --sub:#D4D7DC; --muted:#A9ADB4;
  --f-d:'Anton','Impact',sans-serif; --f-b:'Noto Sans KR',system-ui,sans-serif; --f-m:'Space Mono',ui-monospace,monospace;
  --st:env(safe-area-inset-top,0px); --sb:env(safe-area-inset-bottom,0px);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;background:var(--ink);color:#fff;font-family:var(--f-b);overflow:hidden;overscroll-behavior:none}
button{font-family:inherit;cursor:pointer;border:0;color:inherit;background:none}
img{display:block}
.screen{position:fixed;inset:0;display:none;flex-direction:column;overflow:hidden}
.screen.on{display:flex}
.mono{font-family:var(--f-m);letter-spacing:.1em}
.pill{font-family:var(--f-m);font-size:11px;letter-spacing:.12em;padding:6px 10px;border-radius:999px}
.btn{height:56px;border-radius:999px;font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;text-decoration:none}
.btn-accent{background:var(--accent);color:#fff}
.btn-white{background:#fff;color:var(--ink)}
.btn-ink{background:var(--ink);color:#fff}
.btn-line{border:2px solid var(--ink);color:var(--ink);height:52px}
.wrap{width:100%;max-width:480px;margin:0 auto;height:100%;display:flex;flex-direction:column;position:relative}
.logo-w{filter:invert(1)}

/* INTRO */
#intro .hero{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}
#intro .hero img.ph{width:100%;height:100%;object-fit:cover;object-position:50% 28%}
#intro .hero .fade{position:absolute;left:0;right:0;bottom:0;height:45%;background:linear-gradient(180deg,rgba(10,10,11,0),var(--ink))}
#intro .top{position:absolute;left:0;right:0;top:calc(var(--st) + 18px);padding:0 20px;display:flex;justify-content:space-between}
#intro .title{position:absolute;left:20px;right:20px;bottom:6px}
.collab{display:flex;align-items:center;gap:10px}
.collab img{height:30px}
.collab span{font-family:var(--f-d);font-size:26px;letter-spacing:.04em}
h1.big{font-family:var(--f-d);font-weight:400;font-size:clamp(52px,17vw,72px);line-height:.95}
#intro .bottom{padding:18px 20px calc(var(--sb) + 22px);display:flex;flex-direction:column;gap:16px}
#intro p{font-size:15px;line-height:1.6;color:var(--sub)}
#intro p b{color:#fff}
.thumbs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.thumbs img{width:100%;height:64px;object-fit:cover;border-radius:8px}
.best{text-align:center;font-size:10px;color:var(--muted)}

/* TIPS */
#tips .head{position:relative;height:200px;flex-shrink:0;overflow:hidden}
#tips .head img{width:100%;height:100%;object-fit:cover;object-position:50% 20%}
#tips .head .fade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,11,.1),var(--ink))}
#tips .head .t{position:absolute;left:20px;bottom:10px}
#tips .head .t b{font-family:var(--f-d);font-weight:400;font-size:52px;line-height:1;display:block}
#tips .head .t span{font-size:14px;color:var(--sub)}
#tips .list{flex:1;padding:14px 20px calc(var(--sb) + 22px);display:flex;flex-direction:column;gap:10px;overflow:auto}
.tip{display:flex;gap:14px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:14px;background:#141416}
.tip i{width:44px;height:44px;flex-shrink:0;border-radius:50%;background:#2A2C30;display:flex;align-items:center;justify-content:center}
.tip i.a{background:var(--accent)}
.tip div{font-size:14px;line-height:1.55;color:var(--sub)}
.tip b{color:#fff}

/* PLAY */
#play{background:#000;touch-action:none}
#stage{position:absolute;inset:0;overflow:hidden;touch-action:none}
#photo{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;user-select:none;-webkit-user-drag:none;pointer-events:none;max-width:none}
#vign{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 47%,rgba(10,10,11,0) 34%,rgba(10,10,11,.55) 100%)}
#noise{position:absolute;inset:0;pointer-events:none;opacity:0;mix-blend-mode:screen}
#flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;transition:opacity .18s}
.hud{position:absolute;left:0;right:0;pointer-events:none;z-index:5}
.hud *{pointer-events:auto}
#hudTop{top:0;padding:calc(var(--st) + 14px) 14px 0;display:flex;flex-direction:column;gap:8px}
.glass{background:rgba(10,10,11,.82);border-radius:999px;padding:8px 12px;white-space:nowrap}
.row{display:flex;justify-content:space-between;align-items:center;gap:8px}
#hudBrand{display:flex;align-items:center;gap:8px}
#hudBrand img{height:16px}
#hudBrand span{font-family:var(--f-d);font-size:14px}
#mission{border-radius:14px;padding:10px 12px}
#mission .k{font-size:10px;color:var(--muted)}
#mission .v{font-size:14px;font-weight:700;margin-top:2px}
#pips{display:flex;gap:5px}
#pips span{width:10px;height:10px;border-radius:50%;border:1px solid #fff}
#pips span.on{background:#fff}
#reticle{position:absolute;left:50%;top:50%;width:120px;height:120px;margin:-60px 0 0 -60px;pointer-events:none;z-index:4;transition:transform .15s}
#reticle .r{position:absolute;inset:0;border:2px solid var(--accent);border-radius:50%;transition:border-color .15s,box-shadow .15s}
#reticle .c{position:absolute;left:56px;top:56px;width:8px;height:8px;border-radius:50%;background:var(--accent)}
#reticle .t{position:absolute;background:#fff;border-radius:2px}
#reticle.lock{transform:scale(.82)}
#reticle.lock .r{border-color:#fff;box-shadow:0 0 0 4px rgba(26,98,199,.55)}
#reticle.lock .c{background:#fff}
#lockTag{position:absolute;left:50%;top:50%;transform:translate(-50%,74px);z-index:4;pointer-events:none;opacity:0;transition:opacity .15s}
#lockTag.on{opacity:1}
#compass{position:absolute;left:50%;top:50%;width:0;height:0;z-index:4;pointer-events:none;opacity:0;transition:opacity .3s}
#compass .arr{position:absolute;left:-18px;top:-110px;width:36px;height:36px;transform-origin:18px 110px;display:flex;align-items:center;justify-content:center;background:var(--accent);border-radius:50%}
#signal{position:absolute;left:14px;bottom:calc(var(--sb) + 132px);z-index:5;border-radius:12px;padding:10px 12px}
#signal .k{font-size:10px;color:var(--muted)}
#bars{display:flex;gap:3px;align-items:flex-end;height:22px;margin-top:6px}
#bars span{width:5px;background:#4A4D52}
#bars span.on{background:#fff}
#hudBot{bottom:0;padding:18px 20px calc(var(--sb) + 22px);background:linear-gradient(180deg,rgba(10,10,11,0),rgba(10,10,11,.92) 40%);display:flex;align-items:center;justify-content:space-between}
#filmBtn{width:52px;height:52px;border-radius:10px;overflow:hidden;border:2px solid #fff;position:relative;background:#1a1a1c}
#filmBtn img{width:100%;height:100%;object-fit:cover}
#filmBtn em{position:absolute;right:2px;bottom:2px;background:var(--ink);font-style:normal;font-family:var(--f-m);font-size:10px;padding:1px 4px;border-radius:4px}
#shutWrap{display:flex;flex-direction:column;align-items:center;gap:8px}
#shutter{width:84px;height:84px;border-radius:50%;--p:0%;background:conic-gradient(var(--accent) 0 var(--p),#3A3C40 var(--p) 100%);display:flex;align-items:center;justify-content:center;touch-action:none;user-select:none;-webkit-user-select:none}
#shutter span{width:68px;height:68px;border-radius:50%;background:#fff;border:4px solid var(--ink);transition:transform .1s}
#shutter.hold span{transform:scale(.9)}
#shutter.perfect{background:conic-gradient(#fff 0 100%,#fff 100%)}
#chargeTxt{font-size:10px;color:var(--sub)}
#zoomBtn{width:52px;height:52px;border-radius:50%;background:rgba(10,10,11,.82);border:1px solid #4A4D52;font-family:var(--f-m);font-size:12px}
#muteBtn{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0}
#burst{position:absolute;left:0;right:0;top:34%;z-index:6;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;opacity:0;transform:scale(.8);transition:opacity .2s,transform .25s}
#burst.on{opacity:1;transform:scale(1)}
#burst b{font-family:var(--f-d);font-weight:400;font-size:72px;line-height:1;text-shadow:0 4px 30px rgba(0,0,0,.5)}
#burst span{background:#fff;color:var(--ink);padding:6px 12px;border-radius:999px;font-family:var(--f-m);font-size:12px;font-weight:700}
#toast{position:absolute;left:50%;top:calc(var(--st) + 140px);transform:translateX(-50%);z-index:7;background:rgba(10,10,11,.9);border:1px solid #3A3C40;padding:10px 14px;border-radius:999px;font-size:13px;white-space:nowrap;opacity:0;transition:opacity .2s;pointer-events:none}
#toast.on{opacity:1}
.ping{position:absolute;left:50%;top:50%;width:120px;height:120px;margin:-60px 0 0 -60px;border:3px solid #fff;border-radius:50%;pointer-events:none;z-index:4;animation:ping .6s ease-out forwards}
@keyframes ping{to{transform:scale(2.4);opacity:0}}

/* CLEAR */
#clear{background:var(--accent);z-index:20}
#clear .wrap{padding:calc(var(--st) + 22px) 20px calc(var(--sb) + 24px);gap:14px}
#clearPhoto{position:relative;flex:1 1 auto;min-height:220px;border-radius:18px;overflow:hidden;background:var(--ink)}
#clearPhoto>img{width:100%;height:100%;object-fit:cover;object-position:50% 38%}
#clearZoom{position:absolute;right:12px;top:12px;width:108px;height:108px;border-radius:50%;border:3px solid #fff;background-repeat:no-repeat;background-color:#111}
#clearInfo{position:absolute;left:12px;right:12px;bottom:12px;background:rgba(10,10,11,.86);border-radius:12px;padding:12px;display:flex;justify-content:space-between;align-items:center;gap:10px}
#clearInfo .k{font-size:10px;color:var(--muted);font-family:var(--f-m)}
#clearInfo .v{font-size:14px;font-weight:700;margin-top:2px}
#prodBtn{flex-shrink:0;height:44px;padding:0 14px;border-radius:999px;background:#fff;color:var(--ink);text-decoration:none;display:flex;align-items:center;font-size:13px;font-weight:700}
#nextCard{display:flex;gap:12px;align-items:center;background:rgba(10,10,11,.22);border-radius:14px;padding:10px}
#nextCard img{width:56px;height:56px;border-radius:10px;object-fit:cover;object-position:50% 30%}
#nextCard .k{font-size:10px}
#nextCard .v{font-size:14px;font-weight:700;margin-top:2px}

/* FILM */
#film{background:var(--sky);color:var(--ink)}
#film .wrap{padding:calc(var(--st) + 22px) 20px calc(var(--sb) + 24px);gap:14px;align-items:center}
#filmImg{flex:1 1 auto;min-height:0;max-width:100%;object-fit:contain;transform:rotate(-2deg);box-shadow:0 18px 40px rgba(10,10,11,.25)}
#film p{font-size:14px;line-height:1.6;text-align:center}
.grid2{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}

/* REWARD */
#reward .bg{position:absolute;left:0;right:0;top:0;height:70%;overflow:hidden}
#reward .bg img{width:100%;height:100%;object-fit:cover;object-position:50% 30%}
#reward .bg .fade{position:absolute;left:0;right:0;bottom:0;height:50%;background:linear-gradient(180deg,rgba(10,10,11,0),var(--ink))}
#reward .wrap{padding:calc(var(--st) + 18px) 20px calc(var(--sb) + 22px);justify-content:space-between}
#reward .low{display:flex;flex-direction:column;gap:12px}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.stats>div{background:rgba(20,20,22,.9);border:1px solid var(--line);border-radius:12px;padding:10px}
.stats .k{font-size:10px;color:var(--muted);font-family:var(--f-m)}
.stats .v{font-family:var(--f-d);font-size:24px;margin-top:2px}
.coupon{background:#fff;color:var(--ink);border-radius:16px;display:flex;overflow:hidden}
.coupon .l{flex:1;padding:14px 16px;border-right:2px dashed #C4C7CC;min-width:0}
.coupon .k{font-family:var(--f-m);font-size:10px;letter-spacing:.1em;color:#5A5E66}
.coupon .ben{font-family:var(--f-d);font-size:28px;line-height:1.05;margin:4px 0}
.coupon .code{font-family:var(--f-m);font-size:14px;font-weight:700;word-break:break-all}
.coupon button{width:92px;flex-shrink:0;background:var(--accent);color:#fff;font-size:14px;font-weight:700}
.link{height:44px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--sub);text-decoration:underline}

/* GYRO SHEET */
#sheet{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.6);display:none;align-items:flex-end}
#sheet.on{display:flex}
#sheet .s{width:100%;max-width:480px;margin:0 auto;background:#141416;border-radius:22px 22px 0 0;padding:22px 20px calc(var(--sb) + 22px);display:flex;flex-direction:column;gap:12px}
#sheet h3{font-size:18px}
#sheet p{font-size:14px;color:var(--sub);line-height:1.6}

/* SETUP */
#setup{position:absolute;left:10px;right:10px;top:calc(var(--st) + 130px);z-index:9;background:rgba(10,10,11,.92);border:1px solid #3A3C40;border-radius:14px;padding:10px;display:none;font-size:12px;max-height:40vh;overflow:auto}
#setup.on{display:block}
#setup button{background:#fff;color:#000;border-radius:8px;padding:8px 10px;font-weight:700;font-size:12px;margin:4px 4px 0 0}
#setup pre{white-space:pre-wrap;font-family:var(--f-m);font-size:11px;color:var(--sub);margin-top:6px}
.dot{position:absolute;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;border:2px solid #ff3b30;z-index:3;pointer-events:none}

/* SAVE SHEET (길게 눌러 저장) */
#saveSheet{position:fixed;inset:0;z-index:45;background:#0A0A0B;display:none;align-items:center;justify-content:center;padding:calc(var(--st) + 20px) 20px calc(var(--sb) + 20px)}
#saveSheet.on{display:flex}
#saveSheet .ss{width:100%;max-width:420px;height:100%;display:flex;flex-direction:column;align-items:center;gap:14px}
#saveImg{flex:1 1 auto;min-height:0;max-width:100%;object-fit:contain;-webkit-touch-callout:default;user-select:auto;pointer-events:auto}
#saveSheet p{font-size:14px;line-height:1.6;color:#D4D7DC;text-align:center}

/* ═══════════════ FOLDABLE / RESPONSIVE LAYOUTS ═══════════════
   body.lay-phone (기본) · lay-book (폴드·아이폰 폴드 펼침, 태블릿/PC)
   lay-flex (플립 반접힘: 위=사진, 아래=조작) · lay-mini (플립 커버 화면)
   --split: 접히는 선 위치(px) — JS가 Viewport Segments API 또는 화면 절반으로 설정 */
:root{--split:50vw;--hingeW:0px}
#view{position:absolute;inset:0;overflow:hidden}
#hinge{display:none;position:absolute;z-index:3;pointer-events:none}
#miniChip{display:none;position:absolute;background:rgba(10,10,11,.82);font-family:var(--f-b);font-size:12px;letter-spacing:0}
#sideFilm{display:none;position:absolute;z-index:5}
#sideFilm .k{font-size:11px;color:var(--muted);margin-bottom:8px}
#sideFilm .cells{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;background:#000;padding:8px;border-radius:6px}
#sideFilm .cells span{display:block;aspect-ratio:4/3;background:#1A1B1E center/cover no-repeat}

/* ── BOOK: 좌=룩(조준), 우=조작 ── */
body.lay-book #view{right:auto;width:var(--split)}
body.lay-book #hinge{display:block;left:var(--split);top:0;bottom:0;width:var(--hingeW);background:#000}
body.lay-book #play{background:#0A0A0B}
body.lay-book #hudTop,body.lay-book #hudBot{left:calc(var(--split) + var(--hingeW));right:0;background:none}
body.lay-book #hudTop{padding:calc(var(--st) + 28px) 32px 0 36px;gap:12px}
body.lay-book #hudTop .glass{background:#141416;border:1px solid var(--line)}
body.lay-book #mission{padding:14px 16px}
body.lay-book #mission .v{font-size:17px}
body.lay-book #signal{left:calc(var(--split) + var(--hingeW) + 36px);right:32px;top:calc(var(--st) + 168px);bottom:auto;background:#141416;border:1px solid var(--line);display:flex;align-items:center;gap:14px}
body.lay-book #signal #bars{margin-top:0}
body.lay-book #sideFilm{display:block;left:calc(var(--split) + var(--hingeW) + 36px);right:32px;top:calc(var(--st) + 240px)}
body.lay-book #hudBot{padding:0 32px calc(var(--sb) + 32px) 36px}
body.lay-book #filmBtn{visibility:hidden}
body.lay-book #shutter{width:112px;height:112px}
body.lay-book #shutter span{width:92px;height:92px;border-width:5px}
body.lay-book #setup{left:10px;right:auto;width:calc(var(--split) - 20px)}
/* 다른 화면 — 좌우 2단 */
body.lay-book .wrap{max-width:none}
body.lay-book #intro .wrap,body.lay-book #tips .wrap{display:grid;grid-template-columns:var(--split) 1fr;column-gap:var(--hingeW)}
body.lay-book #intro .hero,body.lay-book #tips .head{height:100%}
body.lay-book #intro .bottom{padding:48px 44px calc(var(--sb) + 40px) 52px;justify-content:center;gap:22px}
body.lay-book #intro p{font-size:17px}
body.lay-book .thumbs{grid-template-columns:repeat(2,minmax(0,1fr))}
body.lay-book .thumbs img{height:clamp(90px,14vh,170px);border-radius:12px}
body.lay-book #tips .head .t b{font-size:72px}
body.lay-book #tips .list{padding:48px 44px calc(var(--sb) + 40px) 52px;justify-content:center}
body.lay-book #clear .wrap,body.lay-book #film .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-auto-rows:min-content;column-gap:calc(56px + var(--hingeW));padding:calc(var(--st) + 32px) 28px calc(var(--sb) + 32px);align-content:center}
body.lay-book #clear .wrap>*{grid-column:2}
body.lay-book #clearPhoto{grid-column:1 !important;grid-row:1 / span 6;height:calc(100vh - 64px - var(--st) - var(--sb))}
body.lay-book #clear .wrap>.row{margin-top:auto}
body.lay-book #film .wrap>*{grid-column:2}
body.lay-book #filmImg{grid-column:1 !important;grid-row:1 / span 6;height:calc(100vh - 64px - var(--st) - var(--sb));justify-self:center}
body.lay-book #film .wrap{row-gap:18px}
body.lay-book #reward .bg{height:100%;right:auto;width:var(--split)}
body.lay-book #reward .bg .fade{display:none}
body.lay-book #reward .wrap{padding-left:calc(var(--split) + var(--hingeW) + 44px);padding-right:40px;justify-content:center;gap:24px}
body.lay-book #reward .wrap>.row{position:absolute;left:20px;top:calc(var(--st) + 20px);width:calc(var(--split) - 40px)}

/* ── FLEX: 위=사진, 아래=조작 (플립 반접힘) ── */
body.lay-flex #view{bottom:auto;height:var(--split)}
body.lay-flex #hinge{display:block;left:0;right:0;top:var(--split);height:var(--hingeW);background:#000}
body.lay-flex #play{background:#111113}
body.lay-flex #hudBot{top:auto;bottom:0;background:none;align-items:flex-end}
body.lay-flex #signal{top:calc(var(--split) + var(--hingeW) + 112px);bottom:auto;background:none;padding:0 20px;display:flex;align-items:center;gap:10px}
body.lay-flex #signal #bars{margin-top:0}
body.lay-flex #sideFilm{display:block;left:20px;right:20px;top:calc(var(--split) + var(--hingeW) + 20px)}
body.lay-flex #sideFilm .k{display:none}
body.lay-flex #hudTop #mission{display:none}
body.lay-flex #flexMission{display:block}
body.lay-flex #filmBtn{display:none}
body.lay-flex #hudBot{justify-content:center;gap:48px}
body.lay-flex #muteBtn{display:none}
body.lay-flex #shutter{width:112px;height:112px}
body.lay-flex #shutter span{width:92px;height:92px;border-width:5px}
body.lay-flex #toast{top:20px}
#flexMission{display:none;position:absolute;left:20px;right:20px;top:calc(var(--split) + var(--hingeW) + 150px);z-index:5}
#flexMission .k{font-size:10px;color:var(--muted)}
#flexMission .v{font-size:15px;font-weight:700;margin-top:2px}

/* ── MINI: 플립 커버 화면 ── */
body.lay-mini #hudTop{padding:10px 10px 0}
body.lay-mini #hudTop>.row{display:none}
body.lay-mini #mission{padding:6px 10px;border-radius:999px;justify-content:center}
body.lay-mini #mission .k,body.lay-mini #pips{display:none}
body.lay-mini #mission .v{font-size:12px;margin:0}
body.lay-mini #signal,body.lay-mini #filmBtn,body.lay-mini #zoomBtn,body.lay-mini #chargeTxt{display:none}
body.lay-mini #hudBot{left:auto;right:0;padding:0 16px 16px;background:none;gap:10px}
body.lay-mini #shutter{width:68px;height:68px}
body.lay-mini #shutter span{width:54px;height:54px}
body.lay-mini #reticle{transform:scale(.6)}
body.lay-mini #reticle.lock{transform:scale(.52)}
body.lay-mini #lockTag{display:none}
body.lay-mini #burst b{font-size:40px}
body.lay-mini #miniChip{display:block;right:96px;bottom:36px}
body.lay-mini #toast{top:46px;font-size:12px}
body.lay-mini .screen:not(#play){overflow:auto}
body.lay-mini #intro .hero{flex:0 0 200px}
body.lay-mini h1.big{font-size:44px}
body.lay-mini .thumbs{display:none}
body.lay-mini #tips .head{height:110px}
body.lay-mini #clearPhoto{min-height:180px}
