:root{font-family:Apple SD Gothic Neo,Noto Sans KR,system-ui,sans-serif;color:#fff;background:#0a0e27;font-synthesis:none;--navy:#0a0e27;--panel:#131a44;--mint:#4fe8c4;--mint-deep:#28c4a0;--lavender:#b9a4e8}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;min-height:100%;background:var(--navy)}button{font:inherit}.page-shell{max-width:520px;min-height:100vh;margin:auto;padding-bottom:116px;overflow:hidden;background:var(--navy);box-shadow:0 0 80px #0008}.inapp-banner{display:none;align-items:center;gap:10px;padding:10px 14px;background:#ffde59;color:#191919;font-size:12px;font-weight:700;line-height:1.45}.inapp-banner.show{display:flex}.inapp-banner button{flex:none;padding:7px 10px;border:0;border-radius:20px;background:#191919;color:#ffde59;font-size:10px;font-weight:800}.hero{position:relative;overflow:hidden;padding:28px 22px 27px;background:radial-gradient(circle at 82% 18%,#b9a4e859,transparent 55%),radial-gradient(circle at 10% 100%,#4fe8c42e,transparent 50%),linear-gradient(160deg,#0a0e27,#131a44 55%,#1e2a63)}.hero .planet{position:absolute;width:120px;height:120px;right:-24px;top:70px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#e6d6f5,#b9a4e8 55%,#7c6bb8);box-shadow:0 0 50px #b9a4e859;opacity:.9}.star{position:absolute;color:#ffffff8c;font-style:normal;font-size:11px}.star-one{top:14px;left:60%}.star-two{top:54px;left:22%}.star-three{top:96px;left:78%}.eyebrow{position:relative;margin:0;color:var(--mint);font-size:11px;font-weight:800;letter-spacing:.2em}.hero h1{position:relative;max-width:78%;margin:8px 0 4px;font-size:26px;line-height:1.28;letter-spacing:-.03em}.festa-en{position:relative;margin:0 0 15px;color:#ffffffa6;font-size:11px;letter-spacing:.04em}.meta-row{position:relative;display:flex;gap:9px;flex-wrap:wrap}.meta-row span{padding:6px 11px;border:1px solid #ffffff24;border-radius:20px;background:#ffffff12;color:#ffffffdc;font-size:10px;font-weight:700}.connection{position:relative;display:flex;align-items:center;gap:7px;margin-top:15px;color:#d4a85d;font-size:10px;font-weight:700}.connection i{width:7px;height:7px;border-radius:50%;background:#d4a85d;box-shadow:0 0 8px #d4a85d}.connection.online{color:var(--mint)}.connection.online i{background:var(--mint);box-shadow:0 0 8px var(--mint)}.connection.offline{color:#ff7d7d}.connection.offline i{background:#ff6b6b}main{display:block}.scanner-section,.checklist-section{padding:20px 20px 8px}.scanner-section h2,.checklist-section h2{margin:0 0 12px;font-size:15px}.scanner-frame{position:relative;display:grid;place-items:center;aspect-ratio:1;border:1px solid #ffffff14;border-radius:22px;overflow:hidden;background:linear-gradient(#151b3e,#0d1130)}video{width:100%;height:100%;object-fit:cover}video[hidden]{display:none}.scanner-placeholder{text-align:center;color:#ffffff8c}.scanner-placeholder[hidden]{display:none}.scanner-placeholder strong{display:block;margin-bottom:8px;color:#93a0c5;font-size:48px;font-weight:400}.scanner-placeholder p{margin:0;font-size:12px;line-height:1.65}.scan-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:none;pointer-events:none}.scan-overlay.on{display:block}.scan-box{position:absolute;top:14%;right:14%;bottom:14%;left:14%}.scan-box i{position:absolute;width:27px;height:27px;border:3px solid var(--mint)}.scan-box .tl{top:0;left:0;border-right:0;border-bottom:0;border-radius:11px 0 0}.scan-box .tr{top:0;right:0;border-left:0;border-bottom:0;border-radius:0 11px 0 0}.scan-box .bl{bottom:0;left:0;border-right:0;border-top:0;border-radius:0 0 0 11px}.scan-box .br{right:0;bottom:0;border-left:0;border-top:0;border-radius:0 0 11px}.scan-line{position:absolute;left:18%;right:18%;top:15%;height:2px;background:linear-gradient(90deg,transparent,var(--mint),transparent);animation:scan 2.1s ease-in-out infinite}@keyframes scan{50%{top:84%}}.camera-button{width:100%;margin-top:14px;padding:15px;border:0;border-radius:16px;background:linear-gradient(#3ee0bc,var(--mint-deep));box-shadow:0 4px #1d9e82;color:#08281f;font-size:14px;font-weight:800}.camera-button.is-on{background:linear-gradient(#2a3160,#1a2148);box-shadow:0 4px #0d1230;color:#fff}.camera-button:disabled{opacity:.45}.consent-card{margin-top:12px;padding:15px;border:1px solid #ffffff1f;border-radius:16px;background:#ffffff0f}.consent-card p{margin:0 0 12px;color:#ffffffc7;font-size:11px;line-height:1.7}.consent-card div{display:flex;gap:9px}.consent-card button{flex:1;padding:11px;border:0;border-radius:11px;background:#ffffff16;color:#fff;font-size:12px;font-weight:700}.consent-card button:last-child{background:var(--mint);color:#08281f}.checklist-section{padding-top:23px}.section-heading{display:flex;align-items:center;justify-content:space-between}.section-heading h2{margin:0}.section-heading p{margin:0;color:#ffffffa3;font-size:12px;font-weight:700}.section-heading b{color:var(--mint);font-size:15px}.progress-track{height:6px;margin:14px 0 16px;overflow:hidden;border-radius:6px;background:#ffffff19}.progress-track div{height:100%;width:0;border-radius:6px;background:linear-gradient(90deg,var(--mint),var(--lavender));transition:width .4s}ul{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}.zone-card{display:flex;align-items:center;gap:13px;padding:14px 15px;border-radius:16px;background:#fff;color:#0a0e27;box-shadow:0 6px 16px #0000002e}.zone-card.done{background:linear-gradient(120deg,#eafbf6,#fff)}.zone-card.updated{animation:pop .5s}@keyframes pop{35%{transform:scale(1.035)}}.zone-icon{display:grid;place-items:center;width:42px;height:42px;flex:none;border-radius:12px;background:#f2f2f7;font-size:20px}.zone-card.done .zone-icon{background:linear-gradient(160deg,var(--mint),var(--mint-deep))}.zone-card>div{display:flex;flex:1;flex-direction:column}.zone-card small{color:#999;font-size:9px;font-weight:800;letter-spacing:.1em}.zone-card.done small{color:var(--mint-deep)}.zone-card strong{font-size:13px}.check-circle{display:grid;place-items:center;width:26px;height:26px;flex:none;border:2px solid #d8d8de;border-radius:50%}.check-circle svg{width:15px;fill:none;stroke:#fff;stroke-width:3;opacity:0}.zone-card.done .check-circle{border-color:var(--mint-deep);background:var(--mint-deep)}.zone-card.done .check-circle svg{opacity:1}.bottom-bar{position:fixed;z-index:40;right:0;bottom:0;left:0;display:flex;justify-content:center;padding:14px 20px calc(14px + env(safe-area-inset-bottom));border-top:1px solid #ffffff14;background:#0a0e27db;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.reward-button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:480px;padding:15px;border:0;border-radius:16px;background:linear-gradient(135deg,var(--mint),var(--lavender));box-shadow:0 6px 18px #4fe8c447;color:#0a0e27;font-size:15px;font-weight:800}.reward-button b{padding:3px 9px;border-radius:20px;background:#0a0e272e;font-size:11px}.reward-button.redeemed{background:#ffffff19;box-shadow:none;color:#ffffff8c}.modal-overlay{position:fixed;z-index:80;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:center;background:#060818b3}.modal-overlay.hidden{display:none}.modal-card{position:relative;width:100%;max-width:480px;padding:26px 24px calc(28px + env(safe-area-inset-bottom));border-radius:26px 26px 0 0;background:#fff;color:#0a0e27;text-align:center;animation:sheet-up .25s}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}}.modal-close{position:absolute;top:16px;right:18px;width:30px;height:30px;border:0;border-radius:50%;background:#f2f2f5;color:#666}.modal-card h2{margin:5px 0 14px;font-size:18px}.modal-card p{color:#767676;font-size:12px;line-height:1.6}.modal-card canvas{padding:8px;border:1px solid #eee;border-radius:12px}.celebrate .trophy{display:block;font-size:55px}.celebrate h2{margin-bottom:8px;font-size:22px}.celebrate .complete-count{display:block;margin:7px 0 18px;color:var(--mint-deep);font-size:25px}.celebrate button{width:100%;margin-top:8px;padding:14px;border:0;border-radius:14px;background:linear-gradient(135deg,var(--mint),var(--lavender));color:#0a0e27;font-size:13px;font-weight:800}.celebrate .ghost-button{background:#f2f2f5;color:#444}.toast{position:fixed;z-index:90;bottom:112px;left:50%;max-width:80%;padding:10px 17px;border-radius:30px;background:#0a0e27;color:#fff;box-shadow:0 8px 20px #0005;font-size:12px;font-weight:700;text-align:center;opacity:0;transform:translate(-50%,12px);transition:.25s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%)}@media(prefers-reduced-motion:reduce){.scan-line,.zone-card.updated{animation:none}}@media(min-width:521px){body{background:radial-gradient(circle at 50% 10%,#1e2a63,#070a1c 60%)}}.scanner-heading{margin-bottom:14px}.scanner-heading h2{margin-bottom:5px}.scanner-heading p{margin:0;color:#ffffff8c;font-size:11px;line-height:1.55}.camera-button{display:flex;align-items:center;gap:13px;margin-top:0;padding:15px 16px;text-align:left}.camera-button[hidden],.camera-panel[hidden]{display:none}.camera-button-icon{display:grid;width:42px;height:42px;flex:none;place-items:center;border-radius:12px;background:#08281f14;font-size:29px;font-weight:400}.camera-button>span:nth-child(2){display:flex;flex:1;flex-direction:column}.camera-button strong{font-size:14px}.camera-button small{margin-top:3px;color:#155b4b;font-size:9px}.camera-button b{padding:6px 10px;border-radius:20px;background:#08281f18;font-size:10px}.camera-panel{overflow:hidden;border:1px solid #ffffff1f;border-radius:22px;background:#111736;animation:camera-open .24s ease-out}.camera-panel-head{display:flex;align-items:center;justify-content:space-between;padding:11px 13px 9px}.camera-panel-head>div{display:flex;align-items:center;gap:7px;color:#ffffff9e;font-size:9px;font-weight:800;letter-spacing:.13em}.camera-panel-head i{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 8px var(--mint)}.camera-panel-head button{display:grid;width:30px;height:30px;padding:0;place-items:center;border:1px solid #ffffff20;border-radius:50%;background:#ffffff0c;color:#fff;font-size:19px}.camera-panel .scanner-frame{border:0;border-radius:0}.camera-help{margin:0;padding:11px 15px;color:#ffffff9c;font-size:10px;line-height:1.55;text-align:center}@keyframes camera-open{0%{opacity:0;transform:translateY(-6px) scale(.985)}}
