@import "https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Noto+Sans+KR:wght@400;500;700;800&display=swap";*{box-sizing:border-box;margin:0;padding:0}html,body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#f0eeff;background:#0d0b2b;width:100%;height:100%;font-family:Noto Sans KR,-apple-system,BlinkMacSystemFont,sans-serif;overflow-x:hidden}#root{border:none;flex-direction:column;width:100%;max-width:100%;min-height:100dvh;display:flex}button{cursor:pointer;background:0 0;border:none;font-family:inherit}:root{--bg-deep:#0d0b2b;--bg-mid:#161040;--bg-surface:#ffffff0f;--bg-card:#ffffff14;--border:#ffffff1f;--border-glow:#ff3b3b80;--red:#ff3b3b;--red-dark:#c22;--gold:gold;--gold-dim:#ffd70026;--white:#fff;--text-primary:#f0eeff;--text-secondary:#f0eeff8c;--text-dim:#f0eeff4d;--tab-height:64px;--font-display:"Fredoka", "Noto Sans KR", sans-serif}.stars{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.stars:before,.stars:after{content:"";background-image:radial-gradient(1px 1px at 10% 15%,#fffc 0%,#0000 100%),radial-gradient(1px 1px at 25% 40%,#fff9 0%,#0000 100%),radial-gradient(1.5px 1.5px at 40% 10%,#ffffffe6 0%,#0000 100%),radial-gradient(1px 1px at 55% 60%,#ffffffb3 0%,#0000 100%),radial-gradient(1px 1px at 70% 25%,#fff9 0%,#0000 100%),radial-gradient(1.5px 1.5px at 80% 75%,#fffc 0%,#0000 100%),radial-gradient(1px 1px at 90% 45%,#ffffff80 0%,#0000 100%),radial-gradient(1px 1px at 15% 80%,#ffffffb3 0%,#0000 100%),radial-gradient(1px 1px at 35% 90%,#fff6 0%,#0000 100%),radial-gradient(1.5px 1.5px at 60% 85%,#fff9 0%,#0000 100%),radial-gradient(1px 1px at 75% 5%,#fffc 0%,#0000 100%),radial-gradient(1px 1px at 5% 55%,#ffffff80 0%,#0000 100%),radial-gradient(1px 1px at 48% 35%,#ffd70099 0%,#0000 100%),radial-gradient(1px 1px at 88% 18%,#ffd70080 0%,#0000 100%),radial-gradient(1.5px 1.5px at 22% 62%,#ffd70066 0%,#0000 100%);animation:4s ease-in-out infinite alternate twinkle;position:absolute;inset:0}.stars:after{background-image:radial-gradient(1px 1px at 18% 30%,#ffffff80 0%,#0000 100%),radial-gradient(1px 1px at 42% 70%,#ffffffb3 0%,#0000 100%),radial-gradient(1.5px 1.5px at 62% 20%,#ffffffe6 0%,#0000 100%),radial-gradient(1px 1px at 83% 55%,#fff9 0%,#0000 100%),radial-gradient(1px 1px at 95% 88%,#fff6 0%,#0000 100%),radial-gradient(1px 1px at 7% 95%,#fffc 0%,#0000 100%),radial-gradient(1px 1px at 30% 5%,#fff9 0%,#0000 100%),radial-gradient(1px 1px at 67% 48%,#ffd70080 0%,#0000 100%);animation-duration:5s;animation-delay:2s}@keyframes twinkle{0%{opacity:.4}50%{opacity:1}to{opacity:.6}}.app{background:linear-gradient(165deg,#1a1550 0%,#0d0b2b 50%,#110d3a 100%);flex-direction:column;width:100%;max-width:480px;height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden}.app__content{padding-bottom:var(--tab-height);z-index:1;flex:1;position:relative;overflow:hidden auto}.floating-login{bottom:calc(var(--tab-height) + 12px);z-index:99;animation:.25s ease-out float-in;position:fixed;left:50%;transform:translate(-50%)}@keyframes float-in{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.tab-bar{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--border);z-index:100;width:100%;max-width:480px;height:var(--tab-height);background:#0d0b2beb;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab-bar__btn{color:var(--text-dim);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:8px;transition:color .2s;display:flex}.tab-bar__btn--active{color:var(--gold)}.tab-bar__icon{font-size:22px;line-height:1}.tab-bar__label{font-size:11px;font-weight:700;font-family:var(--font-display);letter-spacing:.3px}.main-screen{flex-direction:column;align-items:center;gap:28px;min-height:100%;padding:24px 20px 32px;display:flex}.main-screen__header{text-align:center;width:100%}.main-screen__title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:.2px;font-size:24px;font-weight:700}.main-screen__subtitle{color:var(--gold);letter-spacing:1px;text-transform:uppercase;opacity:.85;margin-top:6px;font-size:12px;font-weight:700}.main-screen__pokeball-area{flex-direction:column;align-items:center;gap:16px;width:100%;display:flex}.main-screen__hint{color:var(--text-secondary);text-align:center;font-size:14px}.main-screen__no-chances{color:var(--text-secondary);text-align:center;font-size:14px;line-height:1.7}.streak-panel{background:var(--bg-card);border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:24px;flex-direction:column;gap:20px;width:100%;padding:24px;display:flex}.streak-panel__header{justify-content:space-between;align-items:center;display:flex}.streak-panel__streak-info{align-items:center;gap:8px;display:flex}.streak-panel__fire{font-size:26px}.streak-panel__streak-count{font-family:var(--font-display);color:var(--gold);font-size:22px;font-weight:700}.streak-panel__chances-badge{background:#ff3b3b26;border:1px solid #ff3b3b4d;border-radius:20px;align-items:baseline;gap:4px;padding:6px 16px;display:flex}.streak-panel__chances-num{font-family:var(--font-display);color:var(--red);font-size:26px;font-weight:700}.streak-panel__chances-label{color:var(--text-secondary);font-size:13px;font-weight:500}.streak-panel__dots{gap:6px;display:flex}.streak-panel__dot{background:#ffffff14;border:1px solid #ffffff1a;border-radius:5px;flex:1;height:10px;transition:background .3s,box-shadow .3s}.streak-panel__dot--filled{background:linear-gradient(90deg, var(--red), var(--gold));border-color:#ffd7004d;box-shadow:0 0 6px #ffd70040}.streak-panel__dot--today{animation:2s ease-in-out infinite dotPulse}@keyframes dotPulse{0%,to{box-shadow:0 0 6px #ffd70040}50%{box-shadow:0 0 14px #ffd700a6}}.streak-panel__hint{color:var(--text-secondary);text-align:center;font-size:14px;line-height:1.5}.streak-panel__hint strong{color:var(--gold);font-weight:700}.pokeball-btn{cursor:pointer;background:0 0;border:none;border-radius:50%;padding:12px;transition:transform .15s;position:relative}.pokeball-btn:hover:not(.pokeball-btn--disabled){transform:scale(1.05)}.pokeball-btn:hover:not(.pokeball-btn--disabled) .pokeball{box-shadow:0 0 0 2px #ff3b3b4d,0 0 40px #ff3b3b80,0 0 80px #ff3b3b33}.pokeball-btn:active:not(.pokeball-btn--disabled){transform:scale(.95)}.pokeball-btn--disabled{cursor:not-allowed;opacity:.35}.pokeball{background:0 0;border:5px solid #1a1a2e;border-radius:50%;width:200px;height:200px;transition:box-shadow .3s;position:relative;overflow:hidden;box-shadow:0 8px 32px #00000080,inset 0 2px 4px #ffffff1a}.pokeball__top{background:linear-gradient(135deg,#f55 0%,#c22 100%);height:50%;position:absolute;top:0;left:0;right:0}.pokeball__bottom{background:linear-gradient(135deg,#e8e8e8 0%,silver 100%);height:50%;position:absolute;bottom:0;left:0;right:0}.pokeball__middle{z-index:2;justify-content:center;align-items:center;height:24px;display:flex;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.pokeball__line{background:#1a1a2e;height:5px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.pokeball__center{z-index:3;background:radial-gradient(circle at 35% 35%,#fff,#d0d0d0);border:5px solid #1a1a2e;border-radius:50%;width:40px;height:40px;position:relative;box-shadow:inset 0 2px 4px #fffc,0 0 12px #ffffff4d}.pokeball__shine{pointer-events:none;z-index:4;background:radial-gradient(#ffffff73 0%,#0000 70%);border-radius:50%;width:50px;height:30px;position:absolute;top:12px;left:20px;transform:rotate(-30deg)}@keyframes shake{0%{transform:rotate(0)translateY(0)}10%{transform:rotate(-14deg)translateY(-3px)}20%{transform:rotate(14deg)translateY(-3px)}30%{transform:rotate(-14deg)translateY(-2px)}40%{transform:rotate(14deg)translateY(-2px)}50%{transform:rotate(-16deg)translateY(-4px)}60%{transform:rotate(16deg)translateY(-4px)}70%{transform:rotate(-12deg)translateY(-2px)}80%{transform:rotate(12deg)translateY(-2px)}90%{transform:rotate(-4deg)translateY(-1px)}to{transform:rotate(0)translateY(0)}}.pokeball--shaking{animation:.42s ease-in-out 3 shake}.type-badge{font-family:var(--font-display);color:#fff;letter-spacing:.5px;text-shadow:0 1px 3px #0006;border:1px solid #ffffff40;border-radius:12px;padding:3px 10px;font-size:11px;font-weight:600}.collection-screen{flex-direction:column;gap:14px;min-height:100%;padding:16px;display:flex}.collection-screen__loading{text-align:center;color:var(--text-secondary);padding:40px;font-size:14px}.progress-header{text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(135deg,#ff3b3b40 0%,#ff3b3b14 100%);border:1px solid #ff3b3b4d;border-radius:18px;padding:18px 20px}.progress-header__title{font-family:var(--font-display);color:var(--text-secondary);letter-spacing:.5px;text-transform:uppercase;margin-bottom:8px;font-size:14px;font-weight:600}.progress-header__count{margin-bottom:10px}.progress-header__collected{font-family:var(--font-display);color:var(--text-primary);font-size:40px;font-weight:700;line-height:1}.progress-header__total{font-family:var(--font-display);color:var(--text-secondary);font-size:20px}.progress-header__bar-wrap{background:#ffffff1a;border-radius:8px;height:6px;margin-bottom:6px;overflow:hidden}.progress-header__bar{background:linear-gradient(90deg, var(--red), var(--gold));border-radius:8px;min-width:4px;height:100%;transition:width .6s cubic-bezier(.16,1,.3,1)}.progress-header__percentage{color:var(--text-dim);font-size:12px}.sort-toggle{justify-content:flex-end;gap:8px;display:flex}.sort-toggle__btn{font-family:var(--font-display);border:1px solid var(--border);color:var(--text-secondary);background:var(--bg-surface);border-radius:20px;padding:6px 14px;font-size:13px;font-weight:500;transition:all .2s}.sort-toggle__btn--active{color:var(--red);background:#ff3b3b33;border-color:#ff3b3b66;font-weight:700}.pokemon-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.pokemon-grid__empty{text-align:center;color:var(--text-secondary);grid-column:1/-1;padding:60px 20px;font-size:14px;line-height:2}.pokemon-grid-item{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:14px;flex-direction:column;align-items:center;gap:4px;width:100%;padding:10px 8px;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;position:relative;box-shadow:0 2px 8px #0000004d}.pokemon-grid-item:hover{border-color:#fff3;transform:translateY(-3px);box-shadow:0 8px 20px #0006}.pokemon-grid-item:active{transform:scale(.96)}.pokemon-grid-item__image-wrap{filter:drop-shadow(0 2px 8px #ffffff1f);justify-content:center;align-items:center;width:64px;height:64px;display:flex}.pokemon-grid-item__image{object-fit:contain;width:100%;height:100%}.pokemon-grid-item__number{color:var(--text-dim);letter-spacing:.5px;font-size:10px;font-weight:500}.pokemon-grid-item__name{font-family:var(--font-display);color:var(--text-primary);font-size:12px;font-weight:600}.pokemon-grid-item__types{flex-wrap:wrap;justify-content:center;gap:3px;margin-top:2px;display:flex}.pokemon-grid-item__count{background:linear-gradient(135deg, var(--gold), #fa0);color:#1a1000;font-size:9px;font-weight:800;font-family:var(--font-display);border-radius:8px;padding:1px 5px;position:absolute;top:6px;right:6px}@keyframes popIn{0%{opacity:0;transform:scale(.92)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.center-modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:200;background:#000000b3;justify-content:center;align-items:center;padding:24px 16px;display:flex;position:fixed;inset:0}.center-modal{border:1px solid var(--border);background:linear-gradient(160deg,#1e1850 0%,#141030 100%);border-radius:24px;width:100%;max-width:360px;max-height:80dvh;padding:20px 16px 24px;animation:.3s cubic-bezier(.16,1,.3,1) popIn;position:relative;overflow-y:auto;box-shadow:0 24px 60px #0009,inset 0 1px #ffffff14}.center-modal__header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.center-modal__title-area{flex:1;align-items:baseline;gap:6px;min-width:0;display:flex}.center-modal__title{font-family:var(--font-display);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:20px;font-weight:700;overflow:hidden}.center-modal__subtitle{color:var(--text-dim);white-space:nowrap;font-size:13px;font-weight:500}.center-modal__actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.center-modal__share{color:var(--text-secondary);border:1px solid var(--border);border-radius:20px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:600;transition:color .15s,background .15s,border-color .15s;display:flex}.center-modal__share:hover{color:var(--gold);background:#ffd70014;border-color:#ffd70066}.center-modal__close{color:var(--text-dim);border-radius:50%;padding:4px 8px;font-size:16px;line-height:1;transition:color .15s,background .15s}.center-modal__close:hover{color:var(--text-primary);background:#ffffff14}.catch-result-modal__body{flex-direction:column;align-items:center;gap:12px;padding:8px 4px 0;display:flex}.catch-result-modal__image-wrap{justify-content:center;align-items:center;width:160px;height:160px;display:flex;position:relative}.catch-result-modal__image{object-fit:contain;filter:drop-shadow(0 4px 24px #ffffff2e);width:100%;height:100%}.catch-result-modal__info{flex-direction:column;align-items:center;gap:8px;display:flex}.catch-result-modal__name-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.catch-result-modal__new-badge{background:linear-gradient(135deg, var(--gold), #fa0);color:#1a1000;letter-spacing:1px;font-size:11px;font-weight:800;font-family:var(--font-display);border-radius:20px;flex-shrink:0;padding:3px 10px;box-shadow:0 2px 10px #ffd70073}.catch-result-modal__name{font-family:var(--font-display);color:var(--text-primary);letter-spacing:.3px;font-size:24px;font-weight:700}.catch-result-modal__number{color:var(--text-dim);letter-spacing:1px;font-size:13px;font-weight:500}.catch-result-modal__types{gap:6px;display:flex}.catch-result-modal__actions{width:100%;margin-top:4px;display:flex}.catch-result-modal__collection-btn{background:linear-gradient(135deg, var(--red), var(--red-dark));color:#fff;font-family:var(--font-display);letter-spacing:.3px;border-radius:20px;flex:1;padding:10px 20px;font-size:15px;font-weight:600;transition:all .2s;box-shadow:0 4px 16px #ff3b3b59}.catch-result-modal__collection-btn:hover{background:linear-gradient(135deg,#f55,#e22);transform:translateY(-1px);box-shadow:0 4px 24px #ff3b3b8c}.pokemon-detail{flex-direction:column;align-items:center;gap:10px;padding:8px;display:flex}.pokemon-detail__image-wrap{filter:drop-shadow(0 4px 24px #fff3);justify-content:center;align-items:center;width:180px;height:180px;display:flex}.pokemon-detail__image{object-fit:contain;width:100%;height:100%}.pokemon-detail__number{color:var(--text-dim);letter-spacing:1.5px;font-size:13px;font-weight:500}.pokemon-detail__name{font-family:var(--font-display);color:var(--text-primary);font-size:30px;font-weight:700}.pokemon-detail__name-en{color:var(--text-dim);text-transform:capitalize;font-size:13px}.pokemon-detail__types{gap:8px;display:flex}.pokemon-detail__legendary-badge{color:var(--gold);letter-spacing:.3px;background:#ffd7001f;border:1px solid #ffd7004d;border-radius:20px;padding:4px 12px;font-size:12px;font-weight:700}.pokemon-detail__flavor{color:var(--text-secondary);text-align:center;padding:0 4px;font-size:13px;line-height:1.7}.pokemon-detail__body-info{border:1px solid var(--border);background:#ffffff0d;border-radius:12px;align-items:center;gap:0;width:100%;display:flex;overflow:hidden}.pokemon-detail__body-item{flex-direction:column;flex:1;align-items:center;gap:2px;padding:10px 0;display:flex}.pokemon-detail__body-label{color:var(--text-dim);font-size:11px}.pokemon-detail__body-value{font-family:var(--font-display);color:var(--text-primary);font-size:16px;font-weight:600}.pokemon-detail__body-divider{background:var(--border);width:1px;height:36px}.pokemon-detail__stats{border:1px solid var(--border);background:#ffffff0d;border-radius:14px;flex-direction:column;gap:8px;width:100%;padding:14px 16px;display:flex}.pokemon-detail__stats-title{color:var(--text-dim);letter-spacing:.8px;text-transform:uppercase;margin-bottom:2px;font-size:11px;font-weight:700}.pokemon-detail__stat-row{align-items:center;gap:8px;display:flex}.pokemon-detail__stat-label{color:var(--text-secondary);flex-shrink:0;width:36px;font-size:11px}.pokemon-detail__stat-num{font-family:var(--font-display);color:var(--text-primary);text-align:right;flex-shrink:0;width:28px;font-size:13px;font-weight:600}.pokemon-detail__stat-bar-wrap{background:#ffffff14;border-radius:4px;flex:1;height:6px;overflow:hidden}.pokemon-detail__stat-bar{border-radius:4px;height:100%;transition:width .6s cubic-bezier(.16,1,.3,1)}.pokemon-detail__catch-info{border:1px solid var(--border);background:#ffffff0d;border-radius:14px;flex-direction:column;gap:8px;width:100%;padding:14px 16px;display:flex}.pokemon-detail__stat{justify-content:space-between;align-items:center;display:flex}.pokemon-detail__catch-info .pokemon-detail__stat-label{white-space:nowrap;width:auto}.pokemon-detail__stat-value{font-family:var(--font-display);color:var(--text-primary);font-size:14px;font-weight:600}@keyframes toastFadeIn{0%{opacity:0;transform:translate(-50%)translateY(10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.toast{border:1px solid var(--border);color:var(--text-primary);z-index:999;white-space:normal;cursor:pointer;text-align:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#141032f2;border-radius:24px;max-width:90vw;padding:10px 20px;font-size:13px;font-weight:500;animation:.25s ease-out toastFadeIn;position:fixed;bottom:80px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #0006}
