: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}}html,body{margin:0;background:var(--bg)}body{font-family:var(--font-body);color:var(--text);overscroll-behavior-y:none;transition:background .4s}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}.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 14px;font-size:13.5px;background:var(--surface);color:var(--text-dim)}.tab--active{background:var(--text);color:var(--bg)}.install-hint{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin-bottom:14px}.install-hint-text{flex:1;display:flex;flex-direction:column;gap:2px;font-size:13px}.install-hint-text b{font-size:13.5px}.install-hint-text span{opacity:.65}.install-hint-close{background:transparent;color:var(--muted);font-size:14px;padding:4px 6px}.mode-row{display:flex;gap:8px;margin-bottom:8px}.mode-btn{flex:1;padding:10px 0;font-size:14px;background:var(--surface);color:var(--text-dim)}.mode-btn--active{background:var(--text);color:var(--bg)}.gear-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.gear-label{color:var(--muted);font-size:13px;white-space:nowrap}.gear-chip{flex:1;padding:8px 0;font-size:13px;background:var(--surface);color:var(--text-dim)}.gear-chip--on{background:var(--text);color:var(--bg)}.settings-row{display:flex;gap:8px;margin-bottom:8px}.settings-row--last{margin-bottom:16px}.stepper{flex:1;background:var(--surface);border-radius:12px;padding:10px 6px;text-align:center}.stepper-label{font-size:12px;opacity:.55;margin-bottom:6px}.stepper-controls{display:flex;align-items:center;justify-content:center;gap:6px}.stepper-btn{border:none;background:var(--surface-2);color:var(--text);border-radius:8px;width:26px;height:26px;cursor:pointer;font-size:15px}.stepper-value{font-family:var(--font-display);font-size:19px;min-width:34px}.stepper-unit{font-size:11px;opacity:.5;font-family:var(--font-body)}.voice-toggle{flex:1;background:var(--surface);color:var(--text-dim);font-size:13.5px;padding:10px 4px}.voice-toggle--on{background:var(--text);color:var(--bg)}.generate-btn{width:100%;padding:18px 0;font-size:24px;background:var(--text);color:var(--bg);margin-bottom:16px;letter-spacing:2px}.preset-row{display:flex;gap:8px;margin-bottom:8px}.preset-chip{flex:1;padding:10px 4px;font-size:13.5px;background:var(--surface);color:var(--text-dim);border:1px solid var(--border)}.preset-chip--active{background:var(--accent);border-color:var(--accent);color:#fff}.preset-desc{font-size:12.5px;opacity:.6;line-height:1.6;padding:2px 4px 0;margin-bottom:8px}.circuit-card{display:flex;align-items:center;gap:12px;background:var(--surface);border-radius:14px;padding:14px;margin-bottom:8px}.circuit-badge{width:44px;height:44px;border-radius:50% 50% 44% 44%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px;color:var(--bg)}.circuit-info{flex:1;min-width:0}.circuit-name{font-size:16.5px;font-weight:700}.circuit-memo{font-size:12.5px;opacity:.55;margin-top:2px}.reroll-btn{background:var(--surface-2);color:var(--text-dim);padding:8px 12px;font-size:13px}.yt-btn{text-decoration:none;display:flex;align-items:center;justify-content:center}.start-btn{width:100%;padding:20px 0;font-size:26px;background:var(--accent);color:#fff;margin-top:12px;letter-spacing:3px}.plan-summary{text-align:center;font-size:13px;opacity:.5;margin-top:10px}.empty-hint{text-align:center;margin-top:40px;opacity:.5;font-size:14px;line-height:1.8}.footnote{margin-top:auto;padding-top:32px;text-align:center;font-size:11.5px;opacity:.3}.add-card{background:var(--surface);border-radius:16px;padding:16px;margin-bottom:20px}.add-title{font-size:18px;margin-bottom:12px}.pattern-picker{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.pattern-chip{padding:6px 12px;font-size:13px;background:var(--surface-2);color:var(--text-dim)}.pattern-chip--active{background:var(--text);color:var(--bg)}.input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px;color:var(--text);font-size:15px;font-family:var(--font-body);outline:none}.input--memo{margin-top:8px}.add-submit{width:100%;margin-top:10px;padding:12px 0;font-size:15px;background:var(--text);color:var(--bg)}.add-submit:disabled{background:var(--border);color:#777;cursor:default}.contact-desc{font-size:13.5px;opacity:.65;line-height:1.6;margin-bottom:12px}.input--textarea{resize:vertical;min-height:120px;line-height:1.6}.contact-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.contact-result{margin-top:10px;font-size:13.5px;font-weight:700}.contact-result--ok{color:#57a867}.contact-result--err{color:var(--accent)}.pattern-group{margin-bottom:18px}.pattern-group-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.pattern-group-title{font-size:17px}.pattern-group-count{font-size:12px;opacity:.4}.exercise-row{display:flex;justify-content:space-between;align-items:center;background:var(--surface);border-left:3px solid var(--surface-2);border-radius:10px;padding:10px 12px;margin-bottom:6px}.exercise-thumb{width:40px;height:40px;border-radius:8px;flex-shrink:0;margin-right:10px}.exercise-info{flex:1;min-width:0}.exercise-name{font-size:15px;font-weight:700}.equip-tag{font-size:11px;font-weight:400;opacity:.5;margin-left:6px}.exercise-memo{font-size:12.5px;opacity:.6;margin-top:2px}.yt-link{color:var(--text-dim);font-size:12.5px;font-weight:700;text-decoration:none;padding:4px 6px;flex-shrink:0}.remove-btn{background:transparent;color:var(--muted);font-size:13px;padding:4px 8px;flex-shrink:0}.pattern-empty{font-size:13px;opacity:.4;padding-left:20px}.stats-row{display:flex;gap:8px;margin-bottom:18px}.stat-card{flex:1;background:var(--surface);border-radius:14px;padding:14px 8px;text-align:center}.stat-value{font-size:22px}.stat-label{font-size:12px;opacity:.55;margin-top:4px}.record-row{background:var(--surface);border-radius:12px;padding:12px 14px;margin-bottom:8px}.record-head{display:flex;justify-content:space-between;align-items:center}.record-date{font-size:14px;font-weight:700}.record-meta{font-size:13px;opacity:.65;margin-top:4px}.record-preset{display:inline-block;background:var(--accent);color:#fff;font-size:11px;font-weight:700;border-radius:6px;padding:1px 7px;margin-right:7px}.record-exs{font-size:12.5px;opacity:.45;margin-top:5px;line-height:1.6}.home-grid,.home-setup,.home-result{display:contents}.app--timer{justify-content:space-between;padding:calc(24px + env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom));transition:background .4s}.timer-top{display:flex;justify-content:space-between;align-items:center}.timer-round{font-size:18px;letter-spacing:1px}.timer-top-actions{display:flex;gap:8px}.timer-chip{background:#00000040;color:#fff;padding:8px 14px;font-size:14px}.timer-steps{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:18px}.timer-step{width:9px;height:9px;border-radius:50%;background:#fff;opacity:.3;transition:transform .3s,opacity .3s}.timer-step--done{opacity:.85}.timer-step--active{opacity:1;transform:scale(1.35);box-shadow:0 0 0 3px #ffffff40}.timer-step--next{opacity:.95;background:transparent;border:2px solid #fff;box-sizing:border-box;transform:scale(1.25)}.timer-steps-label{font-size:12.5px;opacity:.7;margin-left:6px;font-weight:700}.timer-center{text-align:center}.timer-label{font-size:15px;letter-spacing:3px;opacity:.7}.timer-label--phase{opacity:.85;margin-bottom:4px}.timer-count{font-size:116px;line-height:1;text-shadow:0 4px 20px rgba(0,0,0,.2)}.timer-count--medium{font-size:84px;line-height:1.1;text-shadow:none}.timer-hint{font-size:14px;opacity:.6;margin-top:18px}.timer-exname{font-size:34px;line-height:1.2}.timer-exrow{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:16px}.timer-art{display:block;width:min(120px,16vh);height:min(120px,16vh);flex-shrink:0;border-radius:16px;box-shadow:0 4px 16px #0000002e}.timer-extext{text-align:left;min-width:0;max-width:230px}.timer-exrow .timer-exname{font-size:29px}.timer-exrow .timer-memo{margin-top:6px;font-size:14px}.timer-memo{margin-top:8px;font-size:15px;opacity:.8}.timer-memo--work{opacity:.9}.timer-next-title{font-size:14px;opacity:.6;margin-top:16px;margin-bottom:8px}.timer-lineup-row{display:flex;align-items:center;gap:8px;justify-content:center;margin-bottom:5px}.timer-lineup-name{font-size:15.5px;font-weight:700}.timer-done-title{font-size:52px;line-height:1.1}.timer-done-sub{margin-top:14px;opacity:.7;font-size:15px;line-height:1.8}.timer-streak{margin-top:18px;font-size:19px;font-weight:700}.timer-done-note{margin-top:8px;font-size:13px;opacity:.45}.progress{height:5px;background:#00000040;border-radius:3px;margin-top:26px;overflow:hidden}.progress-fill{height:100%;background:#ffffffd9;transition:width 1s linear}.timer-lineup{display:flex;flex-direction:column;gap:5px;margin-top:22px}.timer-lineup-item{display:flex;align-items:center;justify-content:center;gap:8px;font-size:13.5px;opacity:.75}.timer-lineup-item--done{opacity:.35;text-decoration:line-through}.timer-lineup-item--cur{opacity:1;font-weight:700;font-size:15px}@media(max-height:640px)and (max-width:899px){.timer-lineup{display:none}}@media(min-width:900px){.app{max-width:980px}.app--timer{max-width:1100px}.timer-center--split{display:flex;align-items:center;justify-content:center;gap:56px}.timer-center--split .timer-main{flex:0 1 620px}.timer-center--split .timer-lineup{margin-top:0;gap:10px}.timer-center--split .timer-lineup-item{justify-content:flex-start;font-size:19px}.timer-center--split .timer-lineup-item--cur{font-size:24px}.timer-center--split .timer-count{font-size:min(220px,26vh)}.timer-center--split .timer-art{width:min(220px,26vh);height:min(220px,26vh)}.timer-center--split .timer-exname{font-size:40px}.timer-center--split .timer-memo{font-size:15px}}@media(orientation:landscape)and (max-height:500px)and (max-width:899px){.app--timer{max-width:min(760px,94vw);padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(12px + env(safe-area-inset-bottom))}.timer-steps{margin-top:10px}.timer-center--split{display:flex;align-items:center;justify-content:center;gap:32px}.timer-center--split .timer-main{display:grid;grid-template-columns:auto auto;grid-template-areas:"label hint" "count exrow" "progress progress";align-items:center;justify-content:center;column-gap:24px;row-gap:6px;flex:0 0 auto}.timer-center--split .timer-label--phase{grid-area:label;margin:0}.timer-center--split .timer-count{grid-area:count;font-size:80px;text-shadow:none}.timer-center--split .timer-hint{grid-area:hint;margin:0}.timer-center--split .timer-exrow{grid-area:exrow;margin:0;justify-content:flex-start}.timer-center--split .progress{grid-area:progress;margin-top:10px}.timer-center .timer-count--medium{font-size:60px}.timer-done-title{font-size:38px}.timer-done-sub{margin-top:8px}.timer-streak{margin-top:10px;font-size:17px}.timer-next-title{margin-top:10px}.timer-lineup-row{margin-bottom:3px}.timer-btn,.timer-btn--primary{padding:12px 0}}@media(orientation:landscape)and (max-height:500px)and (min-width:760px)and (max-width:899px){.app--timer{max-width:min(940px,96vw)}.timer-center--split .timer-lineup{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:center;align-content:center;margin-top:0;gap:4px 22px;max-height:60vh;flex:0 1 auto;text-align:left}.timer-center--split .timer-lineup-item{justify-content:flex-start;font-size:12.5px;gap:6px}.timer-center--split .timer-lineup-item--cur{font-size:14px}}.timer-controls{display:flex;gap:10px}.timer-btn{flex:1;background:#0000004d;color:#fff;padding:16px 0;font-size:17px}.timer-btn--wide{flex:2}.timer-btn--primary{background:var(--text);color:var(--bg);padding:18px 0;font-size:18px}.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)}@media(min-width:900px){.home-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:28px;align-items:start}.home-setup,.home-result{display:block}.pattern-groups{columns:2;column-gap:20px}.pattern-group{break-inside:avoid}.record-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}.stats-row{max-width:560px;margin-left:auto;margin-right:auto}.series{display:grid;grid-template-columns:1fr 1fr;column-gap:10px}.series-title,.series-repo,.series-edu,.qr-btn{grid-column:1 / -1}}.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}}
