:root{--bg: #1e2126;--surface: #282b31;--surface-2: #33373e;--border: #3a3e45;--text: #f2efe9;--text-dim: #b8b4ac;--muted: #6b6e75;--accent: #e4574b;--font-body: "Noto Sans KR", sans-serif;--font-display: "Black Han Sans", "Noto Sans KR", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}html,body{margin:0;background:var(--bg)}body{font-family:var(--font-body);color:var(--text);overscroll-behavior-y:none}button{touch-action:manipulation}.display{font-family:var(--font-display);font-weight:400}.accent{color:var(--accent)}.btn{border:none;border-radius:12px;cursor:pointer;font-family:var(--font-body);font-weight:700}.btn:disabled{opacity:.45;cursor:default}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex-shrink:0}.dot--lg{width:12px;height:12px}.app{min-height:100vh;min-height:100dvh;max-width:480px;margin:0 auto;display:flex;flex-direction:column;background:var(--bg);padding:calc(20px + env(safe-area-inset-top)) 16px calc(40px + env(safe-area-inset-bottom))}.app--center{align-items:center;justify-content:center}.loading{opacity:.6}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header-logo{font-size:26px;letter-spacing:1px}.header-logo-btn{background:none;border:none;padding:0;cursor:pointer;text-align:left;color:var(--text)}.header-tabs{display:flex;gap:6px}.tab{padding:8px 12px;font-size:13.5px;background:var(--surface);color:var(--text-dim)}.tab--active{background:var(--surface-2);color:var(--text)}.install-hint{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:16px}.install-hint-text{display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--text-dim)}.install-hint-text b{color:var(--text)}.install-hint-close{margin-left:auto;background:none;color:var(--muted);font-size:15px;padding:4px 8px}.cat-chips{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-bottom:20px}.cat-chips--form{justify-content:flex-start;margin:10px 0}.cat-chip{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;font-size:13.5px;background:var(--surface);border:1.5px solid transparent;color:var(--muted);border-radius:999px}.cat-chip--on{background:var(--bg);color:var(--text)}.roulette{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:44px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:20px;min-height:220px;justify-content:center}.roulette--picked{border-color:var(--accent);animation:pop .35s ease-out}@keyframes pop{0%{transform:scale(.96)}60%{transform:scale(1.02)}to{transform:scale(1)}}.roulette-cat{display:inline-flex;align-items:center;gap:7px;font-size:15px;font-weight:700}.roulette-cat--idle{color:var(--text-dim)}.roulette-name{font-size:52px;line-height:1.15;word-break:keep-all}.roulette-name--idle{color:var(--muted);font-size:64px}.roulette--rolling .roulette-name{opacity:.85}.roulette-notice{font-size:12.5px;color:var(--text-dim)}.roulette-done{font-size:15px;font-weight:700;color:var(--accent)}.roll-actions{display:flex;gap:10px}.roll-actions .roll-btn{flex:1}.roll-btn{width:100%;padding:18px;font-size:19px;font-family:var(--font-display);font-weight:400;letter-spacing:1px;background:var(--accent);color:#fff;border-radius:16px}.roll-btn--sub{background:var(--surface-2);color:var(--text)}.pool-count{text-align:center;font-size:12.5px;color:var(--muted);margin:12px 0 20px}.settings-card{background:var(--surface);border-radius:14px;padding:6px 16px}.stepper{display:flex;justify-content:space-between;align-items:center;padding:10px 0}.stepper-label{font-size:14px;color:var(--text-dim)}.stepper-controls{display:flex;align-items:center;gap:4px}.stepper-btn{width:34px;height:34px;border-radius:10px;background:var(--surface-2);color:var(--text);font-size:17px}.stepper-value{min-width:52px;text-align:center;font-size:16px;font-weight:700}.stepper-unit{font-size:12px;color:var(--text-dim);margin-left:2px}.add-card{background:var(--surface);border-radius:16px;padding:18px 16px;margin-bottom:22px;display:flex;flex-direction:column;gap:10px}.add-title{font-size:19px}.input{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:15px}.input:focus{outline:none;border-color:var(--accent)}.input--textarea{resize:vertical;min-height:120px}.input--multiline{resize:vertical;min-height:58px;line-height:1.5}.add-submit{padding:13px;font-size:15px;background:var(--accent);color:#fff}.lib-group{margin-bottom:18px}.lib-group-title{display:flex;align-items:center;gap:7px;font-size:14.5px;font-weight:700;margin-bottom:8px}.lib-group-count{color:var(--muted);font-weight:400;font-size:12.5px}.lib-list{display:flex;flex-direction:column;gap:6px}.lib-item{display:flex;align-items:center;background:var(--surface);border-radius:10px;padding:10px 14px}.lib-item-name{font-size:15px}.lib-item-del{margin-left:auto;background:none;color:var(--muted);font-size:13px;padding:4px 8px}.lib-reset{margin-top:8px;padding:12px;font-size:13.5px;background:var(--surface);color:var(--text-dim)}.history-stats{display:flex;gap:10px;margin-bottom:18px}.history-stat{flex:1;background:var(--surface);border-radius:14px;padding:14px;text-align:center}.history-stat-num{font-size:30px}.history-stat-label{font-size:12.5px;color:var(--text-dim);margin-top:2px}.history-empty{text-align:center;color:var(--text-dim);font-size:14.5px;line-height:1.7;padding:40px 0}.history-list{display:flex;flex-direction:column;gap:6px}.history-item{display:flex;align-items:center;gap:10px;background:var(--surface);border-radius:10px;padding:11px 14px}.history-item-name{font-size:15px;font-weight:700}.history-item-date{margin-left:auto;font-size:12.5px;color:var(--muted)}.history-item-del{background:none;color:var(--muted);font-size:13px;padding:4px 0 4px 8px}.contact-desc{font-size:13.5px;color:var(--text-dim);line-height:1.6}.contact-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.contact-result{font-size:13.5px;font-weight:700}.contact-result--ok{color:#57a867}.contact-result--err{color:var(--accent)}.series{margin-top:28px;display:flex;flex-direction:column;gap:8px}.series-title{font-size:12.5px;color:var(--muted);text-align:center;margin-bottom:2px}.series-item{display:flex;align-items:baseline;gap:8px;background:var(--surface);border-radius:12px;padding:12px 14px;text-decoration:none;color:var(--text)}.series-item-name{font-weight:700;font-size:14.5px;flex-shrink:0}.series-item-desc{font-size:12.5px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.series-item-arrow{margin-left:auto;color:var(--muted)}.series-repo{text-align:center;font-size:12.5px;color:var(--muted);text-decoration:none;padding:6px}.series-edu{margin-top:4px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--text-dim);line-height:1.6}.series-edu-title{font-size:14px;color:var(--text)}.series-edu a{color:var(--text-dim)}.series-edu a.series-edu-cta{font-weight:700;color:var(--text)}.qr-btn{align-self:center;justify-self:center;margin-top:2px;padding:10px 16px;border:none;border-radius:12px;background:var(--surface);color:var(--text-dim);font-family:var(--font-body);font-size:13px;cursor:pointer}.qr-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:20px;background:#0009;animation:qr-fade .18s ease-out}.qr-modal-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;max-width:100%;padding:28px 24px 24px;border-radius:20px;background:var(--surface);box-shadow:0 20px 60px #00000059}.qr-close{position:absolute;top:10px;right:10px;width:36px;height:36px;border:none;border-radius:10px;background:none;color:var(--muted);font-size:16px;cursor:pointer}.qr-modal-img{width:min(60vw,60vh,420px);height:min(60vw,60vh,420px);border-radius:10px;background:#fff;padding:10px}.qr-modal-title{margin-top:8px;font-size:17px;color:var(--text)}.qr-modal-desc{font-size:13px;color:var(--text-dim);text-align:center}.qr-modal-url{font-size:12.5px;color:var(--muted);word-break:break-all;text-align:center}.qr-copy{margin-top:10px;padding:10px 18px;border:none;border-radius:12px;background:var(--accent);color:#fff;font-family:var(--font-body);font-size:14px;cursor:pointer}@keyframes qr-fade{0%{opacity:0}to{opacity:1}}.home-grid{display:contents}@media(min-width:760px){.app{max-width:880px}.home-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);column-gap:24px;align-items:start}.home-grid>.cat-chips{grid-column:1;grid-row:1;align-content:start}.home-grid>.settings-card{grid-column:1;grid-row:2}.home-grid>.roulette,.home-grid>.roll-btn,.home-grid>.roll-actions,.home-grid>.pool-count{grid-column:2}.home-grid>.roulette{grid-row:1 / span 2}.home-grid>.roll-btn,.home-grid>.roll-actions{grid-row:3}.home-grid>.pool-count{grid-row:4}.lib-list,.history-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:start}.series{display:grid;grid-template-columns:1fr 1fr;column-gap:10px}.series-title,.series-repo,.series-edu,.qr-btn{grid-column:1 / -1}}@media(min-width:1100px){.app{max-width:1000px}}@media(min-width:760px){.app--form{max-width:640px}}
