:root{--bg: #f4f1ec;--card: #ffffff;--surface: #ffffff;--surface-hi: #f0ebe3;--text: #1c1b1a;--muted: #6b665f;--primary: #0e5a5a;--primary-2: #1b8a86;--on-primary: #fff;--primary-soft: #d7ecea;--secondary: #e0503f;--secondary-soft: #ffe3de;--gold: #e6a300;--good: #1c7c43;--good-bg: #d3f1e0;--bad-bg: #ffdcd6;--line: #e3ddd3;--grad: linear-gradient(135deg, #0b4d4d 0%, #0e5a5a 45%, #1f9a94 100%);--grad-warm: linear-gradient(135deg, #ff8a72 0%, #e0503f 100%);--shadow: 0 1px 2px rgba(20, 30, 30, .05), 0 8px 24px rgba(14, 90, 90, .08);--shadow-up: 0 2px 4px rgba(20, 30, 30, .08), 0 14px 32px rgba(14, 90, 90, .16);--radius: 20px;--ease: cubic-bezier(.22, 1, .36, 1)}@media (prefers-color-scheme: dark){:root{--bg: #12100e;--card: #1d1a17;--surface: #1d1a17;--surface-hi: #27231f;--text: #f1ece6;--muted: #aaa39a;--primary: #6fd0cd;--primary-2: #3aa8a3;--on-primary: #00201f;--primary-soft: #11403f;--secondary: #ff8c7e;--secondary-soft: #532822;--gold: #ffc23d;--good: #7ad9a0;--good-bg: #17432b;--bad-bg: #532822;--line: #3a342e;--grad: linear-gradient(135deg, #0a3b3b 0%, #0e5a5a 55%, #178079 100%);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .35);--shadow-up: 0 2px 4px rgba(0, 0, 0, .5), 0 14px 32px rgba(0, 0, 0, .5)}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:18px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Noto Sans KR,Noto Sans SC,sans-serif;-webkit-text-size-adjust:100%;overflow-x:hidden}h1,h2,h3{line-height:1.2;margin:0;letter-spacing:-.01em}h1{font-size:1.9rem}h2{font-size:1.4rem}h3{font-size:1.1rem}p{margin:0}button,input,textarea{font:inherit;color:inherit}a{color:var(--primary)}.app{max-width:720px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;position:relative}.page{flex:1;padding:16px 20px calc(110px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}.page>*{animation:rise .55s var(--ease) both}.page>*:nth-child(2){animation-delay:.05s}.page>*:nth-child(3){animation-delay:.1s}.page>*:nth-child(4){animation-delay:.15s}.page>*:nth-child(5){animation-delay:.2s}.page>*:nth-child(6){animation-delay:.24s}.page>*:nth-child(7){animation-delay:.28s}.page>*:nth-child(8){animation-delay:.32s}.page>*:nth-child(9){animation-delay:.35s}.page>*:nth-child(n+10){animation-delay:.38s}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.12)}to{transform:scale(1);opacity:1}}@keyframes shake{0%,to{transform:none}20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}@keyframes glow{0%{box-shadow:0 0 #1c7c4380}to{box-shadow:0 0 0 16px #1c7c4300}}@keyframes float{0%,to{transform:translateY(0) rotate(var(--r, 0deg))}50%{transform:translateY(-14px) rotate(calc(var(--r, 0deg) + 4deg))}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fall{0%{transform:translateY(-20px) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(var(--rot, 540deg));opacity:.9}}@keyframes scan{0%{top:6%}50%{top:88%}to{top:6%}}.center{align-items:stretch;justify-content:center;min-height:100dvh;padding-bottom:32px}.muted{color:var(--muted);font-size:.95rem}.row{display:flex;gap:12px;align-items:center}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.big{font-size:1.6rem;line-height:1.3}.roman{color:var(--secondary);font-weight:500}.pt{font-size:1.1rem}.label{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);font-weight:800}.err{color:#c0392b}.topbar{position:sticky;top:0;z-index:8;display:flex;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top)) 18px 10px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.topbar img{width:38px;height:38px;border-radius:11px;box-shadow:var(--shadow)}.brand{font-size:1.3rem;font-weight:800;color:var(--primary);letter-spacing:-.02em}.brand small{display:block;font-size:.68rem;font-weight:600;color:var(--muted);letter-spacing:.04em;margin-top:-3px}.pill{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:99px;background:var(--card);box-shadow:var(--shadow);font-weight:700;font-size:.95rem;animation:pop .5s var(--ease) both}.card{background:var(--card);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow)}.card.hi{background:var(--surface-hi);box-shadow:none}.card.primary{background:var(--primary-soft);box-shadow:none}.card.hero{background:var(--grad);color:#fff;box-shadow:var(--shadow-up);position:relative;overflow:hidden}.card.hero:after{content:"";position:absolute;right:-40px;top:-50px;width:190px;height:190px;border-radius:50%;background:#ffffff17}.card.hero .label,.card.hero .muted{color:#fffc}.card.hero .progress{background:#ffffff40}.card.hero .progress>i{background:#fff}.card.pick{cursor:pointer;border:0;text-align:left;width:100%;transition:transform .25s var(--ease),box-shadow .25s var(--ease)}.card.pick:hover:not(:disabled){transform:translateY(-3px);box-shadow:var(--shadow-up)}.card.pick:active:not(:disabled){transform:scale(.98)}.card.ok{background:var(--good-bg);color:#1c1b1a;animation:glow .8s ease-out}.card.no{background:var(--bad-bg);color:#1c1b1a;animation:shake .45s}.card.locked{opacity:.55}.card.stat{flex:1;text-align:center;padding:14px 8px}.stat b{display:block;font-size:1.5rem}.ico-badge{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;font-size:1.6rem;background:var(--primary-soft);flex:none}.trophy.got .ico-badge{background:linear-gradient(135deg,#ffe08a,#ffb300);animation:pop .6s var(--ease) both}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid var(--line);background:var(--card);color:var(--primary);min-height:56px;padding:0 20px;border-radius:16px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;text-decoration:none;transition:transform .2s var(--ease),box-shadow .2s var(--ease),background .2s;box-shadow:0 1px 2px #0000000a}.btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow)}.btn:active:not(:disabled){transform:scale(.97)}.btn.primary{background:var(--grad);color:#fff;border:0;box-shadow:0 6px 18px #0e5a5a4d}.btn.primary:hover:not(:disabled){box-shadow:0 10px 26px #0e5a5a66}.btn.small{min-height:44px;width:auto;padding:0 16px;font-size:.95rem}.btn.google{background:#fff;color:#1f1f1f;border-color:#dadce0}.btn:disabled{opacity:.5;cursor:default}.btn:focus-visible,.chip:focus-visible,.card.pick:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 55%,transparent);outline-offset:2px}.chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid var(--line);background:var(--card);border-radius:14px;min-height:46px;padding:0 18px;cursor:pointer;transition:transform .2s var(--ease),background .2s,border-color .2s}.chip:active{transform:scale(.94)}.chip.on{background:var(--secondary-soft);border-color:var(--secondary);font-weight:700;animation:pop .35s var(--ease)}.chips{display:flex;flex-wrap:wrap;gap:10px}.stack{display:flex;flex-direction:column;gap:10px}input.field,textarea.field{width:100%;min-height:58px;border-radius:16px;border:1.5px solid var(--line);background:var(--card);padding:0 18px;transition:border-color .2s,box-shadow .2s}textarea.field{padding:14px 18px;min-height:96px}input.field:focus,textarea.field:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 18%,transparent)}.progress{height:10px;background:color-mix(in srgb,var(--primary) 14%,transparent);border-radius:99px;overflow:hidden}.progress>i{display:block;height:100%;background:var(--grad);border-radius:99px;transition:width .8s var(--ease)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:9;display:flex;justify-content:center;padding:0 12px calc(10px + env(safe-area-inset-bottom));pointer-events:none}.tabbar nav{pointer-events:auto;display:flex;width:100%;max-width:560px;background:color-mix(in srgb,var(--card) 90%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:26px;padding:6px;box-shadow:var(--shadow-up);border:1px solid var(--line)}.tabbar a{flex:1;text-align:center;padding:8px 2px 6px;text-decoration:none;color:var(--muted);font-size:.72rem;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:3px;border-radius:20px;transition:color .25s,background .25s,transform .25s var(--ease)}.tabbar a svg{width:26px;height:26px;transition:transform .35s var(--ease)}.tabbar a:active{transform:scale(.92)}.tabbar a.active{color:var(--primary);background:var(--primary-soft);font-weight:800}.tabbar a.active svg{transform:translateY(-2px) scale(1.12)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a141480;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:40;animation:fade .25s ease both}.modal{background:var(--card);border-radius:28px;padding:26px;max-width:460px;width:100%;display:flex;flex-direction:column;gap:14px;white-space:pre-line;box-shadow:var(--shadow-up);animation:pop .45s var(--ease) both;position:relative;z-index:2}@keyframes fade{0%{opacity:0}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:41;overflow:hidden}.confetti i{position:absolute;top:-20px;width:10px;height:16px;border-radius:3px;animation:fall var(--t, 2.8s) var(--d, 0s) cubic-bezier(.3,.6,.5,1) both}.toast{position:fixed;left:16px;right:16px;bottom:calc(96px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto;background:#2d2c2a;color:#fff;padding:14px 18px;border-radius:16px;z-index:50;box-shadow:var(--shadow-up);animation:rise .4s var(--ease) both}.stars{color:var(--gold);letter-spacing:3px}.star-pop span{display:inline-block;animation:pop .5s var(--ease) both}.star-pop span:nth-child(2){animation-delay:.15s}.star-pop span:nth-child(3){animation-delay:.3s}.dropzone{border:2px dashed var(--line);border-radius:var(--radius);padding:30px;text-align:center;transition:border-color .2s,background .2s,transform .2s}.dropzone.over{border-color:var(--primary);background:var(--primary-soft);transform:scale(1.02)}.spin{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;display:inline-block}.hero-wrap{position:relative;padding:36px 24px 28px;border-radius:0 0 36px 36px;background:var(--grad);color:#fff;overflow:hidden;margin:0 -20px}.hero-wrap .glyph{position:absolute;font-size:3rem;font-weight:800;color:#ffffff21;animation:float 6s ease-in-out infinite;-webkit-user-select:none;user-select:none}.hero-wrap img{width:92px;height:92px;border-radius:26px;box-shadow:0 12px 30px #0000004d;animation:pop .7s var(--ease) both;position:relative}.hero-wrap h1{color:#fff;font-size:2.3rem;margin-top:14px;position:relative}.hero-wrap p{color:#ffffffe0;margin-top:6px;position:relative;max-width:30em}.scanner{position:relative;width:190px;height:190px;border-radius:26px;background:var(--card);box-shadow:var(--shadow-up);display:grid;place-items:center;font-size:4rem;overflow:hidden;margin:0 auto}.scanner:after{content:"";position:absolute;left:8%;right:8%;height:4px;border-radius:4px;background:var(--grad-warm);box-shadow:0 0 18px var(--secondary);animation:scan 1.8s ease-in-out infinite}.skeleton{border-radius:14px;height:18px;background:linear-gradient(90deg,var(--surface-hi) 25%,var(--card) 50%,var(--surface-hi) 75%);background-size:200% 100%;animation:shimmer 1.4s linear infinite}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0s!important;transition-duration:.01ms!important}}.seg{display:flex;gap:6px;margin:12px 20px 0;padding:5px;background:var(--card);border-radius:18px;box-shadow:var(--shadow)}.seg button{flex:1;min-height:46px;border:0;background:transparent;border-radius:14px;font-weight:700;color:var(--muted);cursor:pointer;transition:background .25s var(--ease),color .25s,transform .2s}.seg button:active{transform:scale(.96)}.seg button.on{background:var(--grad);color:#fff;box-shadow:0 4px 12px #0e5a5a4d}.btn.recording{background:var(--secondary-soft);border-color:var(--secondary);color:var(--secondary);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{box-shadow:0 0 0 10px #e0503f00}0%{box-shadow:0 0 #e0503f73}}label.chip{display:inline-flex;align-items:center;gap:8px;cursor:pointer}label.chip input{width:20px;height:20px}.orb-wrap{display:flex;flex-direction:column;align-items:center;gap:14px;padding:8px 0}.orb{--lvl: 0;position:relative;width:132px;height:132px;display:grid;place-items:center;font-size:2.6rem}.orb span{position:relative;z-index:2;width:92px;height:92px;border-radius:50%;display:grid;place-items:center;background:var(--card);box-shadow:var(--shadow-up);transform:scale(calc(1 + var(--lvl) * .16));transition:transform .08s linear}.orb i{position:absolute;top:14px;right:14px;bottom:14px;left:14px;border-radius:50%;background:var(--primary);opacity:0}.orb.on i{opacity:.16;animation:ring 2.4s ease-out infinite}.orb.on i:nth-of-type(2){animation-delay:1.2s}.orb.heard span{background:var(--grad)}.orb.talk span{background:var(--grad-warm)}.orb.talk i{background:var(--secondary)}@keyframes ring{0%{transform:scale(.7);opacity:.3}to{transform:scale(1.45);opacity:0}}.chat{display:flex;flex-direction:column;gap:12px}.bubble{max-width:88%;padding:14px 16px;border-radius:22px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow);animation:pop .45s var(--ease) both}.bubble.me{align-self:flex-end;background:var(--grad);color:#fff;border-bottom-right-radius:6px}.bubble.other{align-self:flex-start;background:var(--card);border-bottom-left-radius:6px}.bubble .who{font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;opacity:.75}.bubble .said{font-size:.95rem;opacity:.85}.bubble .out{font-size:1.35rem;font-weight:600;line-height:1.3}.bubble.me .roman{color:#ffd9d3}.bubble.me .btn{background:#ffffff29;color:#fff;border-color:#ffffff59}.bubble.me .btn.primary{background:#fff;color:var(--primary)}.bubble.think{align-self:center;background:var(--card)}.dots{display:inline-flex;gap:6px}.dots i{width:9px;height:9px;border-radius:50%;background:var(--primary);animation:bounce 1s infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,60%,to{transform:none;opacity:.5}30%{transform:translateY(-7px);opacity:1}}.txtrow{display:flex;align-items:flex-start;gap:8px}.txtrow>p{flex:1;min-width:0;overflow-wrap:anywhere}.copy{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--muted);width:34px;height:34px;border-radius:10px;display:grid;place-items:center;cursor:pointer;opacity:.55;flex:none;transition:opacity .2s,background .2s,color .2s,transform .2s var(--ease)}.copy svg{width:19px;height:19px}.copy:hover{opacity:1;background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary)}.copy:active{transform:scale(.88)}.copy.ok{opacity:1;color:var(--good);animation:pop .35s var(--ease)}.bubble.me .copy{color:#fff}.nudge{position:fixed;left:14px;right:14px;bottom:calc(100px + env(safe-area-inset-bottom));max-width:640px;margin:0 auto;z-index:30;display:flex;align-items:center;gap:10px;padding:12px 12px 14px 16px;border-radius:20px;color:#fff;background:var(--grad);box-shadow:var(--shadow-up);animation:nudgeIn .6s var(--ease) both;overflow:hidden}.nudge-text{flex:1;font-size:.95rem;line-height:1.35;font-weight:600}.nudge .btn.primary{background:#fff;color:var(--primary);box-shadow:none;white-space:nowrap}.nudge .x{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;opacity:.8;padding:0 4px}.nudge-timer{position:absolute;left:0;bottom:0;height:4px;width:100%;background:#ffffff8c;transform-origin:left;animation:timer 9s linear forwards}@keyframes nudgeIn{0%{opacity:0;transform:translateY(30px) scale(.96)}60%{transform:translateY(-4px) scale(1.01)}to{opacity:1;transform:none}}@keyframes timer{to{transform:scaleX(0)}}.plans{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);background:var(--card)}.plans>div{padding:12px 10px;border-bottom:1px solid var(--line);font-size:.92rem;display:flex;align-items:center}.plans>div:nth-last-child(-n+3){border-bottom:0}.plans .h{font-weight:800;justify-content:center;text-align:center;background:var(--surface-hi)}.plans .h.plus{background:var(--grad);color:#fff}.plans .c{justify-content:center;text-align:center;font-weight:700}.plans .c.plus{color:var(--primary);background:color-mix(in srgb,var(--primary) 7%,transparent)}.price{font-size:2.2rem;font-weight:800;color:var(--primary);line-height:1}.price small{font-size:1rem;color:var(--muted);font-weight:600}.pillbadge{display:inline-block;padding:2px 10px;border-radius:99px;font-size:.75rem;font-weight:800;background:var(--primary-soft);color:var(--primary)}.pillbadge.plus{background:var(--gold);color:#3a2a00}.userrow{display:flex;align-items:center;gap:10px;text-align:left}.show{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#fff;color:#111;display:flex;flex-direction:column;animation:fade .25s ease both;padding:env(safe-area-inset-top) 20px calc(16px + env(safe-area-inset-bottom));cursor:pointer}.show-x{position:absolute;top:calc(10px + env(safe-area-inset-top));right:14px;width:48px;height:48px;border:0;border-radius:50%;background:#eee;font-size:2rem;line-height:1;cursor:pointer;color:#333}.show-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:18px;overflow-y:auto;padding:56px 0 8px}.show-text{font-weight:800;line-height:1.2;margin:0;overflow-wrap:anywhere;animation:pop .5s var(--ease) both}.show-text.show-l{font-size:clamp(3rem,15vw,7rem)}.show-text.show-m{font-size:clamp(2.2rem,10vw,4.5rem)}.show-text.show-s{font-size:clamp(1.6rem,7vw,3rem)}.show-roman{font-size:clamp(1.1rem,4.5vw,2rem);color:#c0392b;margin:0}.show-foot{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;color:#333;cursor:default}.show-foot p{margin:0;font-size:1.05rem}.show-foot .muted{color:#666}.show-foot .btn{background:#f2f2f2;color:#0e5a5a;border-color:#ddd}.linkbtn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--primary);text-decoration:underline;cursor:pointer;padding:0;font:inherit}.seg button{font-size:.9rem;padding:0 6px}.admin-tabs button{white-space:nowrap;padding:0 12px;flex:none}.cfg{display:flex;flex-direction:column;gap:6px;padding:12px 0;border-top:1px solid var(--line)}.cfg code{background:var(--surface-hi);padding:6px 10px;border-radius:10px;font-size:.85rem;overflow-wrap:anywhere}.tbl{width:100%;border-collapse:collapse;font-size:.85rem}.tbl th,.tbl td{text-align:right;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.tbl th:first-child,.tbl td:first-child{text-align:left}input.field.num{min-height:44px;text-align:center;padding:0 6px}
