:root[data-theme=light]{--bg-color: #f8f9fa;--grid-bg: #ffffff;--cell-border: #d1d5db;--block-border: #9ca3af;--text-main: #2d3436;--text-light: #636e72;--accent-soft: rgba(9, 132, 227, .08);--accent-strong: #0984e3;--note-color: #a29bfe;--error-color: #d63031;--btn-bg: #ffffff;--accent-light: rgba(9, 132, 227, .25);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 999px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .15);--shadow-xl: 0 12px 48px rgba(0, 0, 0, .22);--shadow-accent: 0 4px 12px rgba(9, 132, 227, .2);--modal-overlay: rgba(0, 0, 0, .42);--modal-blur: blur(5px);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--star-color: #e2b93b;--success-color: #3d9970;--partial-color: #b07d2e;--toast-bg: rgba(45, 52, 54, .92);--toast-success: rgba(61, 153, 112, .92);--toast-error: rgba(214, 48, 49, .92);--duo-conn-warn: #e0a020;--duo-accent: var(--accent-strong);--duo-ready: var(--accent-strong);--duo-surface: color-mix(in srgb, var(--accent-strong) 4%, var(--surface-1));--duo-border: color-mix(in srgb, var(--accent-strong) 20%, var(--card-border));--duo-glow: rgba(9, 132, 227, .15);--duo-win: #ffd700;--duo-lose: #8395a7;--duo-draw: #a29bfe;--speedrun-color: var(--accent-strong);--text-sub: #9aa0a6;--text-secondary: #636e72;--accent: #0984e3;--surface-1: #ffffff;--surface-2: #f1f3f5;--line-soft: #e0e3e7;--card-border: color-mix(in srgb, var(--cell-border) 60%, transparent);--card-shadow: 0 4px 12px rgba(0, 0, 0, .04);--card-radius: var(--radius-md);--card-padding: 16px;--btn-primary-bg: var(--accent-strong);--btn-primary-color: #fff;--btn-primary-radius: 20px;--btn-primary-padding: 10px 30px;--btn-primary-font: .9rem;--btn-secondary-radius: var(--radius-md);--btn-secondary-padding: 8px 16px;--btn-secondary-font: .8rem;--btn-tertiary-radius: var(--radius-sm);--btn-tertiary-padding: 6px 12px;--btn-tertiary-font: .75rem;--header-padding: 8px 0 12px;--header-gap: 12px;--header-title-size: 1.1rem;--header-title-weight: 600;--header-progress-size: .82rem;--teach-focus: var(--accent-strong);--teach-focus-ring: inset 0 0 0 2px var(--accent-strong);--teach-highlight: var(--accent-strong);--teach-chain: var(--accent-strong);--teach-chain-opacity: .55;--teach-elim-bg: rgba(214, 48, 49, .1);--teach-elim-color: var(--error-color);--teach-elim-opacity: .35;--teach-warn-ring: rgba(214, 48, 49, .6);--teach-mask-opacity: .06;--teach-anim-speed: 1;--ease-zen: cubic-bezier(.2, .8, .2, 1)}:root[data-theme=dark]{--bg-color: #181a1d;--grid-bg: #272b32;--cell-border: #3a424d;--block-border: #566070;--text-main: #d8dce2;--text-light: #9aa0a6;--accent-soft: rgba(90, 169, 255, .16);--accent-strong: #5aa9ff;--note-color: #afa8ff;--error-color: #ff8a80;--btn-bg: #2a2d33;--accent-light: rgba(90, 169, 255, .25);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 999px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .15);--shadow-md: 0 4px 12px rgba(0, 0, 0, .25);--shadow-lg: 0 12px 48px rgba(0, 0, 0, .35);--shadow-xl: 0 16px 56px rgba(0, 0, 0, .45);--shadow-accent: 0 4px 12px rgba(90, 169, 255, .15);--modal-overlay: rgba(0, 0, 0, .52);--modal-blur: blur(5px);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--star-color: #f0c75e;--success-color: #5ebd8a;--partial-color: #d4a03c;--toast-bg: rgba(30, 34, 40, .94);--toast-success: rgba(94, 189, 138, .92);--toast-error: rgba(255, 138, 128, .92);--duo-conn-warn: #f5c451;--duo-accent: var(--accent-strong);--duo-ready: var(--accent-strong);--duo-surface: color-mix(in srgb, var(--accent-strong) 6%, var(--surface-1));--duo-border: color-mix(in srgb, var(--accent-strong) 25%, var(--card-border));--duo-glow: rgba(90, 169, 255, .15);--duo-win: #ffd700;--duo-lose: #8395a7;--duo-draw: #a29bfe;--speedrun-color: var(--accent-strong);--text-sub: #6b7280;--text-secondary: #9aa0a6;--accent: #5aa9ff;--surface-1: #22252a;--surface-2: #2a2d33;--line-soft: #3a424d;--card-border: color-mix(in srgb, var(--cell-border) 60%, transparent);--card-shadow: 0 4px 12px rgba(0, 0, 0, .12);--card-radius: var(--radius-md);--card-padding: 16px;--btn-primary-bg: var(--accent-strong);--btn-primary-color: #fff;--btn-primary-radius: 20px;--btn-primary-padding: 10px 30px;--btn-primary-font: .9rem;--btn-secondary-radius: var(--radius-md);--btn-secondary-padding: 8px 16px;--btn-secondary-font: .8rem;--btn-tertiary-radius: var(--radius-sm);--btn-tertiary-padding: 6px 12px;--btn-tertiary-font: .75rem;--header-padding: 8px 0 12px;--header-gap: 12px;--header-title-size: 1.1rem;--header-title-weight: 600;--header-progress-size: .82rem;--teach-focus: var(--accent-strong);--teach-focus-ring: inset 0 0 0 2px var(--accent-strong);--teach-highlight: var(--accent-strong);--teach-chain: var(--accent-strong);--teach-chain-opacity: .6;--teach-elim-bg: rgba(255, 138, 128, .12);--teach-elim-color: var(--error-color);--teach-elim-opacity: .4;--teach-warn-ring: rgba(255, 138, 128, .7);--teach-mask-opacity: .08;--teach-anim-speed: 1;--ease-zen: cubic-bezier(.2, .8, .2, 1)}*{box-sizing:border-box;transition:background-color .3s,color .3s}.hidden{display:none!important}.btn-base{cursor:pointer;border:none;font-weight:600;letter-spacing:.02em;transition:transform var(--duration-fast) ease,opacity var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.btn-base:active{transform:scale(.95)}.btn-base:disabled{opacity:.5;pointer-events:none}.btn-primary{background:var(--btn-primary-bg);color:var(--btn-primary-color);padding:var(--btn-primary-padding);border-radius:var(--btn-primary-radius);font-size:var(--btn-primary-font)}.btn-secondary{background:var(--btn-bg);color:var(--text-main);padding:var(--btn-secondary-padding);border-radius:var(--btn-secondary-radius);font-size:var(--btn-secondary-font);border:1px solid var(--card-border)}.btn-tertiary{background:color-mix(in srgb,var(--btn-bg) 92%,transparent);color:var(--text-light);padding:var(--btn-tertiary-padding);border-radius:var(--btn-tertiary-radius);font-size:var(--btn-tertiary-font);border:1px solid var(--card-border)}.btn-ghost{background:none;color:var(--text-light);padding:var(--btn-secondary-padding);border-radius:var(--btn-secondary-radius);font-size:var(--btn-secondary-font)}.btn-full{width:100%}.page-header{display:flex;align-items:center;gap:var(--header-gap);padding:var(--header-padding)}.page-header-title{font-size:var(--header-title-size);font-weight:var(--header-title-weight);letter-spacing:.04em;flex:1;min-width:0}.page-header-progress{font-size:var(--header-progress-size);color:var(--accent-strong);font-weight:600;flex-shrink:0}.zen-card{background:var(--surface-1);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding);box-shadow:var(--card-shadow)}.zen-card-title{font-size:.76rem;font-weight:600;color:var(--text-light);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}@keyframes view-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.screen-enter{animation:view-fade-in .18s var(--ease-zen) forwards}@keyframes screen-fade-out{0%{opacity:1}to{opacity:0}}.screen-exit{animation:screen-fade-out .12s ease forwards;pointer-events:none}.stage-map,#level-list,#wild-lobby,#duo-lobby{scrollbar-gutter:stable}.level-screen-header{width:100%;display:flex;justify-content:space-between;align-items:center;max-width:400px;margin-bottom:25px}.level-brand{display:flex;align-items:center;gap:8px}.level-title{margin:0;font-weight:300;letter-spacing:5px;font-family:Outfit,sans-serif}.level-mode-chip{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent-strong) 45%,var(--cell-border));color:var(--accent-strong);background:color-mix(in srgb,var(--accent-soft) 70%,transparent);font-size:.62rem;font-weight:700;letter-spacing:.12em;padding:3px 8px}.level-header-actions{display:flex;align-items:center;gap:2px}.header-icon-btn{font-size:1.2rem;opacity:.45;background:none;border:none;cursor:pointer;padding:5px;transition:opacity var(--duration-normal) var(--ease-zen)}.header-icon-btn:hover{opacity:.7}.speedrun-btn{font-size:1.5rem;filter:grayscale(1);opacity:.4;color:var(--speedrun-color);transition:filter var(--duration-normal) var(--ease-zen),opacity var(--duration-normal) var(--ease-zen)}.speedrun-btn.active{filter:grayscale(0);opacity:1}.back-btn-light{border:none;font-size:var(--btn-secondary-font);color:var(--text-light);background:none;cursor:pointer;margin-top:15px;padding:var(--btn-secondary-padding);border-radius:var(--btn-secondary-radius);font-weight:600;transition:transform var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.back-btn-light:active{transform:scale(.95)}.btn-ghost{background:var(--accent-soft);border:1px solid var(--accent-strong);color:var(--accent-strong);margin-bottom:8px}.btn-replay{background:transparent;border:1px solid var(--accent-strong);color:var(--accent-strong);margin-bottom:8px}.ghost-progress-container{display:none;align-items:center;gap:6px;font-size:.75rem;color:var(--text-light);margin-left:auto;margin-right:15px}.ghost-progress-container:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--text-sub);opacity:.5}.teach-actions{display:flex;gap:10px;justify-content:center;margin-top:4px}.teach-skip-btn{background:var(--btn-bg);color:var(--text-main);font-weight:500;padding:10px 22px}body{margin:0;display:flex;flex-direction:column;align-items:center;height:100vh;height:100dvh;background-color:var(--bg-color);font-family:Outfit,Inter,sans-serif;color:var(--text-main);overflow:hidden;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}html{height:-webkit-fill-available}.game-container{width:100%;max-width:500px;height:100%;min-height:0;padding:clamp(6px,1.5vh,12px) 15px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:8px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}header{width:100%;display:flex;justify-content:space-between;align-items:center;flex:0 0 auto;margin-bottom:0}header h1{font-size:1.1rem;font-weight:500;letter-spacing:2.5px;margin:0}.game-title-wrap{display:flex;align-items:center;gap:8px;min-width:0}.game-mode-chip{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent-strong) 45%,var(--cell-border));color:var(--accent-strong);background:color-mix(in srgb,var(--accent-soft) 70%,transparent);font-size:.68rem;font-weight:600;letter-spacing:.04em;padding:3px 10px;max-width:min(28vw,160px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-controls{display:flex;align-items:center;gap:10px;flex:0 0 auto}.header-btn{background:none;border:none;cursor:pointer;padding:5px;color:var(--text-main);display:flex;align-items:center;justify-content:center;transition:transform .2s}.header-btn:active{transform:scale(.9)}.quit-btn{padding:6px 14px;font-size:.75rem;border:1px solid var(--cell-border);background:var(--btn-bg);color:var(--text-light);border-radius:20px;cursor:pointer;letter-spacing:1px;text-transform:uppercase;margin-top:0}.quit-btn:active{transform:scale(.95);background:var(--accent-soft)}.grid-info-bar{width:min(100%,420px);display:flex;justify-content:space-between;align-items:center;flex:0 0 auto;flex-wrap:wrap;gap:6px;margin-bottom:0}.grid-right{display:flex;align-items:center;justify-content:flex-end;flex:1 1 160px;min-width:0;flex-wrap:wrap;gap:6px}.grid-info-bar .mini-btn{width:34px;height:34px}.level-tech-hint{max-width:180px;min-width:0;flex:1 1 70px;font-size:.72rem;line-height:1.25;color:var(--text-light);text-align:right;opacity:.92;letter-spacing:.02em;padding-top:2px;overflow-wrap:anywhere}.grid-actions{display:flex;align-items:center;gap:6px}@media(max-width:480px){.level-tech-hint{max-width:132px;font-size:.66rem}}.mini-btn{width:40px;height:40px;border-radius:999px;border:1px solid var(--cell-border);background:var(--btn-bg);color:var(--text-light);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.mini-btn.alt{background:transparent;border-color:color-mix(in srgb,var(--cell-border) 70%,transparent)}.mini-btn svg{width:18px;height:18px}.mini-btn.hint-pulse{animation:hint-pulse .8s ease infinite;z-index:10}@keyframes hint-pulse{0%,to{box-shadow:0 0 #74b9ff99}50%{box-shadow:0 0 10px 4px #74b9ff66}}.mini-btn.active{background:var(--accent-strong);color:#fff;border-color:var(--accent-strong);box-shadow:var(--shadow-accent)}#continuous-fill-toggle.active svg{animation:pinPulse 2s var(--ease-zen) infinite}@keyframes pinPulse{0%,to{opacity:1}50%{opacity:.5}}.num-btn.continuous-active{background:var(--accent-strong);color:#fff;border-color:var(--accent-strong);box-shadow:var(--shadow-accent);transform:scale(1.08)}.grid-info-bar .stats{font-size:.75rem;font-weight:600;letter-spacing:.02em;color:var(--accent-strong);border:1px solid color-mix(in srgb,var(--accent-strong) 42%,var(--cell-border));border-radius:999px;padding:5px 10px;background:color-mix(in srgb,var(--accent-soft) 75%,transparent);margin:0;font-variant-numeric:tabular-nums;white-space:nowrap}.grid-info-bar .life-container{font-size:.9rem;letter-spacing:2px;line-height:1;color:var(--error-color);border:1px solid color-mix(in srgb,var(--error-color) 38%,var(--cell-border));border-radius:999px;padding:5px 10px;background:color-mix(in srgb,var(--grid-bg) 86%,var(--btn-bg))}.life-container span.lost{color:color-mix(in srgb,var(--cell-border) 80%,transparent);opacity:.6}.game-container.world-play-active .skill-panel{border-color:color-mix(in srgb,var(--accent-strong) 45%,var(--cell-border));background:radial-gradient(130% 120% at 50% 0%,color-mix(in srgb,var(--accent-soft) 70%,transparent),transparent 58%),color-mix(in srgb,var(--btn-bg) 95%,var(--grid-bg))}.sudoku-grid{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);background-color:var(--grid-bg);border:2px solid var(--block-border);border-radius:12px;overflow:hidden;width:var(--game-board-size, min(100%, 420px));aspect-ratio:1 / 1;margin:0 auto;flex-shrink:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cell{display:flex;justify-content:center;align-items:center;font-size:clamp(12px,calc(var(--game-board-size, 420px) / 20),22px);line-height:1;font-weight:300;font-variant-numeric:tabular-nums lining-nums;border:1px solid color-mix(in srgb,var(--cell-border) 55%,transparent);cursor:pointer;position:relative;background:var(--grid-bg);transition:color .28s var(--ease-zen);white-space:nowrap;overflow:hidden;touch-action:manipulation}.cell:nth-child(3n){border-right:2px solid var(--block-border)}.cell:nth-child(9n){border-right:none}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--block-border)}.cell.related{background-color:color-mix(in srgb,var(--accent-soft) 55%,transparent)}.cell.match{background-color:var(--accent-light);font-weight:600}.cell.note-match{background-color:var(--accent-soft)}.note-num.note-highlight{color:var(--accent-strong)!important;opacity:1!important;font-weight:700}.cell.selected{background-color:var(--accent-soft);outline:none;box-shadow:inset 0 0 0 2px var(--accent-strong),0 0 10px #0984e314;z-index:1;transform:scale(1.02)}.cell.user-val{color:var(--accent-strong)}.cell.fill-pop{animation:fillReveal .3s var(--ease-zen) forwards}@keyframes fillReveal{0%{transform:scale(.65);opacity:0}55%{transform:scale(1.06);opacity:1}to{transform:scale(1);opacity:1}}.cell.error{color:var(--error-color)!important;animation:shake .4s ease}.cell.is-fixed{color:var(--text-main);font-weight:600;z-index:2}.cell.error-strong{background:#d630312e!important;outline:2px solid var(--error-color);z-index:2;animation:wrongPulse .6s ease}.cell.error-peer{background:#d630311a!important}.cell.wrong-preview{color:var(--error-color)!important;font-weight:600;opacity:.9}.cell.unit-complete{animation:unitCompletePop .6s var(--ease-zen) both}@keyframes unitCompletePop{0%{transform:scale(1);background-color:#0984e30a;box-shadow:inset 0 0 #0984e300}30%{transform:scale(1.05);background-color:#0984e329;box-shadow:inset 0 0 0 1.5px #0984e340}60%{transform:scale(.98);background-color:#0984e30f}to{transform:scale(1);background-color:inherit;box-shadow:none}}@keyframes wrongPulse{0%{transform:scale(1)}35%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes lifeHit{0%{transform:translate(0) scale(1)}25%{transform:translate(-3px) scale(1.08)}50%{transform:translate(3px) scale(1.08)}to{transform:translate(0) scale(1)}}.life-container.hit{animation:lifeHit .45s ease}#feedback-toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%) translateY(10px);background:var(--toast-bg);color:#fff;padding:10px 14px;border-radius:14px;font-size:.85rem;line-height:1.45;letter-spacing:.5px;max-width:calc(100vw - 32px);text-align:center;opacity:0;pointer-events:none;z-index:300;transition:opacity .2s ease,transform .2s ease}#feedback-toast.success{background:var(--toast-success)}#feedback-toast.error{background:var(--toast-error)}#feedback-toast.show{opacity:1;transform:translate(-50%) translateY(0)}@keyframes shake{0%,to{transform:translate(0)}15%{transform:translate(-3px)}30%{transform:translate(2.5px)}45%{transform:translate(-1.5px)}60%{transform:translate(1px)}75%{transform:translate(-.5px)}}#pause-screen{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--bg-color);display:none;flex-direction:column;justify-content:center;align-items:center;z-index:10;border-radius:12px;text-align:center}#overlay,#win-celebration{position:fixed;inset:0;width:100%;height:100%;background:var(--bg-color);display:none;flex-direction:column;justify-content:center;align-items:center;z-index:110;text-align:center}#overlay h2,#pause-screen h2,#win-celebration h2{font-weight:300;letter-spacing:4px;margin-bottom:5px}#pause-screen p{font-size:1.2rem;color:var(--accent-strong);margin-bottom:30px}.pause-toggle{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--text-light);cursor:pointer;margin-bottom:16px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pause-toggle.hidden{display:none}.pause-section-group{display:flex;flex-direction:column;align-items:center;margin-bottom:16px}.pause-section-label{font-size:.7rem;color:var(--text-sub);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}.pause-toggle--sub{margin-bottom:10px}.pause-toggle--sub:last-child{margin-bottom:0}.pause-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-strong);cursor:pointer}.leaderboard-card{width:min(88%,320px);margin-top:6px;margin-bottom:10px;border:1px solid var(--cell-border);border-radius:12px;padding:10px 12px;background:var(--grid-bg);text-align:left}.leaderboard-title{font-size:.78rem;color:var(--text-light);margin-bottom:6px;letter-spacing:.6px}.leaderboard-list{font-size:.78rem;line-height:1.5}.challenge-rule-card{text-align:center;padding:4px 0}.challenge-rule-name{font-size:.95rem;font-weight:700;color:var(--accent-strong);margin-bottom:6px}.challenge-rule-desc{font-size:.82rem;color:var(--text-main);margin-bottom:8px}.challenge-rule-detail{font-size:.72rem;color:var(--text-light);line-height:1.6}#pre-level-modal{position:fixed;inset:0;background:var(--modal-overlay);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur);display:none;align-items:center;justify-content:center;z-index:200;padding:20px}.pre-level-panel{width:min(92vw,360px);background:var(--grid-bg);border:1px solid var(--cell-border);border-radius:16px;padding:24px 20px;display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:var(--shadow-lg)}.pre-level-panel h2{font-weight:300;letter-spacing:4px;margin:0 0 8px}.pre-level-record{font-size:.9rem;color:var(--text-light);margin:0 0 12px}.pre-level-record.has-record{color:var(--accent-strong);font-weight:500}.pre-level-tech{font-size:.82rem;color:var(--text-light);margin:0 0 16px;padding:8px 12px;background:#0984e314;border-radius:8px;border:1px dashed rgba(9,132,227,.2);line-height:1.4}[data-theme=dark] #pre-level-modal{background:#000000a6}[data-theme=dark] .pre-level-panel{background:#22252ae6;border-color:#5aa9ff40;box-shadow:0 12px 48px #0006,0 0 15px #5aa9ff0d}[data-theme=dark] .pre-level-record.has-record{color:#5aa9ff;text-shadow:0 0 10px rgba(90,169,255,.3)}#replay-modal{position:fixed;inset:0;background:var(--modal-overlay);backdrop-filter:var(--modal-blur);display:flex;align-items:center;justify-content:center;z-index:400;padding:20px;opacity:0;pointer-events:none;transition:opacity var(--duration-normal) var(--ease-zen)}#replay-modal.show{opacity:1;pointer-events:auto}.replay-panel{width:min(92vw,420px);max-height:min(80vh,680px);background:var(--grid-bg);border:1px solid var(--cell-border);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow-lg);transform:translateY(12px);transition:transform var(--duration-normal) var(--ease-zen);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}#replay-modal.show .replay-panel{transform:translateY(0)}.replay-title{margin:0;font-size:1rem;font-weight:600;letter-spacing:.8px}.replay-summary{color:var(--text-light);font-size:.8rem}.replay-diagnosis{border:1px solid var(--cell-border);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;background:linear-gradient(180deg,color-mix(in srgb,var(--accent-soft) 36%,transparent),transparent 62%),color-mix(in srgb,var(--btn-bg) 96%,transparent)}.replay-diagnosis--empty{opacity:.9}.replay-diagnosis-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.replay-diagnosis-title{font-size:.82rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.replay-diagnosis-summary{color:var(--text-light);font-size:.76rem;line-height:1.45}.replay-diagnosis-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.replay-diagnosis-metric{border:1px solid var(--cell-border);border-radius:10px;padding:8px 10px;background:var(--grid-bg)}.replay-diagnosis-metric--good{border-color:color-mix(in srgb,var(--success-color) 40%,var(--cell-border))}.replay-diagnosis-metric--warn{border-color:color-mix(in srgb,var(--partial-color) 45%,var(--cell-border))}.replay-diagnosis-metric--danger{border-color:color-mix(in srgb,var(--error-color) 45%,var(--cell-border))}.replay-diagnosis-metric-label{color:var(--text-light);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase}.replay-diagnosis-metric-value{margin-top:2px;font-size:.9rem;font-weight:700}.replay-diagnosis-advice{display:flex;flex-direction:column;gap:4px}.replay-diagnosis-advice-item{font-size:.75rem;line-height:1.45;color:var(--text-main);padding-left:10px;position:relative}.replay-diagnosis-advice-item:before{content:"•";position:absolute;left:0;color:var(--accent-strong)}.replay-diagnosis-recommendations{display:flex;flex-direction:column;gap:6px}.replay-diagnosis-recommendations-title{color:var(--text-light);font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.replay-diagnosis-recommendations-list{display:flex;flex-direction:column;gap:6px}.replay-diagnosis-recommendation{border:1px solid var(--cell-border);border-radius:10px;padding:8px 10px;background:color-mix(in srgb,var(--grid-bg) 72%,transparent)}.replay-diagnosis-recommendation-head{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.replay-diagnosis-recommendation-technique{color:var(--text-main);font-size:.78rem;font-weight:700}.replay-diagnosis-recommendation-module{border:1px solid color-mix(in srgb,var(--accent-strong) 28%,var(--cell-border));border-radius:999px;padding:.12rem .5rem;color:var(--text-light);font-size:.64rem;letter-spacing:.05em;text-transform:uppercase}.replay-diagnosis-recommendation-reason{margin-top:4px;color:var(--text-light);font-size:.72rem;line-height:1.45}.replay-diagnosis-recommendation-actions{display:flex;justify-content:flex-end;margin-top:6px}.replay-diagnosis-recommendation-cta{padding:.3rem .65rem;font-size:.67rem}.replay-diagnosis-recommendations-empty{color:var(--text-light);font-size:.72rem;line-height:1.45;font-style:italic}.replay-diagnosis-actions{display:flex;justify-content:flex-end;margin-top:4px}.replay-diagnosis-cta{border:1px solid color-mix(in srgb,var(--accent-strong) 50%,var(--cell-border));border-radius:999px;padding:.45rem .85rem;background:linear-gradient(135deg,color-mix(in srgb,var(--accent-soft) 60%,transparent),var(--btn-bg));color:var(--text-main);font-size:.74rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease}.replay-diagnosis-cta:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent-strong) 75%,var(--cell-border))}.replay-diagnosis-cta:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.replay-list{border:1px solid var(--cell-border);border-radius:10px;padding:8px 10px;overflow:auto;height:min(55vh,420px);font-size:.82rem;line-height:1.5;background:var(--btn-bg)}.replay-item{border-bottom:1px dashed var(--cell-border);padding:5px 4px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast)}.replay-item:hover{background:var(--accent-soft)}.replay-item:last-child{border-bottom:none}.replay-item-mistake{color:var(--error-color)}.replay-item-elim{color:var(--accent-strong);font-size:.78rem}.replay-item-active{background:var(--accent-soft);font-weight:600}.replay-time{color:var(--accent-strong);margin-right:6px;font-weight:600}.replay-filters{display:flex;gap:8px;flex-wrap:wrap}.replay-filter-btn{border:1px solid var(--cell-border);background:var(--btn-bg);color:var(--text-light);border-radius:999px;padding:5px 10px;font-size:.74rem;cursor:pointer}.replay-filter-btn.active{color:#fff;background:var(--accent-strong);border-color:var(--accent-strong)}.replay-visual-section{display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--cell-border)}.replay-board{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);width:min(60vw,240px);height:min(60vw,240px);border:2px solid var(--block-border);border-radius:var(--radius-md);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.replay-score{text-align:center;padding:10px 0 4px}.replay-score-grade{font-size:2.4rem;font-weight:700;letter-spacing:6px;font-family:Outfit,sans-serif;opacity:0;transform:scale(3)}.replay-score-grade:not(.score-grade-hidden){animation:gradeSlam .5s var(--ease-zen) forwards}@keyframes gradeSlam{0%{opacity:0;transform:scale(3);filter:blur(4px)}50%{opacity:1;transform:scale(.9);filter:blur(0)}70%{transform:scale(1.08)}to{opacity:1;transform:scale(1);filter:blur(0)}}.score-grade-hidden{animation:gradeSlam .5s var(--ease-zen) forwards;animation-play-state:paused}.replay-score .score-grade-hidden{animation-play-state:running}.replay-score-counter{font-size:1.15rem;font-weight:600;color:var(--text-main);margin:4px 0 8px;letter-spacing:1px;opacity:0;animation:fadeSlideUp .3s var(--ease-zen) forwards}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.replay-score-breakdown{display:flex;flex-direction:column;gap:3px;font-size:.75rem;color:var(--text-light);max-width:240px;margin:0 auto}.score-row{display:flex;justify-content:space-between;padding:3px 8px;border-radius:var(--radius-sm);opacity:0;transform:translate(-12px);animation:scoreRowIn .25s var(--ease-zen) forwards}@keyframes scoreRowIn{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}.score-bonus{color:var(--accent-strong);font-weight:600}.score-penalty{color:var(--error-color);font-weight:600}.replay-technique{display:block;font-size:.72rem;color:var(--accent-strong);margin-top:2px;font-weight:500}.replay-progress-bar{width:min(60vw,240px);height:3px;background:var(--cell-border);border-radius:var(--radius-full);overflow:hidden}.replay-progress-fill{height:100%;width:0;background:var(--accent-strong);border-radius:var(--radius-full);transition:width var(--duration-fast) linear}.rb-cell{display:flex;align-items:center;justify-content:center;font-size:clamp(.5rem,1.7vw,.7rem);font-weight:500;border-right:1px solid var(--cell-border);border-bottom:1px solid var(--cell-border);color:var(--text-main);background:var(--grid-bg);transition:background .15s}.rb-cell.rb-fixed{color:var(--text-light);font-weight:700}.rb-cell.rb-fill{color:var(--accent-strong)}.rb-cell.rb-mistake{color:var(--error-color);background:var(--teach-elim-bg);font-style:italic}.rb-cell.rb-active{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent-strong)}.rb-notes{font-size:clamp(.26rem,.9vw,.38rem);line-height:1;color:var(--note-color);display:flex;flex-wrap:wrap;padding:1px;gap:0}.rb-cell.rb-box-border-right{border-right-width:2px;border-right-color:var(--accent-strong)}.rb-cell.rb-box-border-bottom{border-bottom-width:2px;border-bottom-color:var(--accent-strong)}.replay-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center}.replay-ctrl-btn{border:1px solid var(--cell-border);background:var(--btn-bg);color:var(--text-color);border-radius:8px;padding:6px 10px;font-size:.8rem;cursor:pointer;transition:background .15s}.replay-ctrl-btn:disabled{opacity:.3;cursor:default}.replay-ctrl-btn.active{background:var(--accent-strong);color:#fff;border-color:var(--accent-strong)}.replay-step-info{font-size:.78rem;color:var(--text-light);min-width:70px;text-align:center}@media(max-width:480px),(max-height:760px){#replay-modal{align-items:flex-start;justify-content:center;padding:calc(env(safe-area-inset-top) + 10px) 10px calc(env(safe-area-inset-bottom) + 10px)}.replay-panel{width:min(96vw,420px);max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 20px);padding:12px 10px;border-radius:14px;gap:8px}.replay-visual-section{gap:8px;padding:8px 0}.replay-diagnosis{gap:6px;padding:9px 10px}.replay-diagnosis-metrics{grid-template-columns:1fr}.replay-diagnosis-recommendation-head{align-items:flex-start}.replay-board,.replay-progress-bar{width:min(62vw,230px)}.replay-board{height:min(62vw,230px)}.replay-controls{gap:4px}.replay-ctrl-btn{font-size:.74rem;padding:5px 8px}.replay-score{padding:8px 0 2px}.replay-score-grade{font-size:2rem;letter-spacing:4px}.replay-score-counter{font-size:1.02rem;margin:2px 0 6px}.replay-score-breakdown{font-size:.72rem;max-width:220px}}#win-celebration{background:radial-gradient(circle at top,rgba(9,132,227,.16),var(--bg-color) 60%);overflow:hidden}#stats-modal,#pre-level-modal{position:fixed;inset:0;width:100%;height:100%;z-index:110}#win-celebration p{margin:8px 0;color:var(--text-light)}#win-celebration .win-time{font-size:1.2rem;color:var(--accent-strong);font-weight:600}#win-celebration .win-stars{font-size:1.4rem;letter-spacing:4px;color:var(--star-color);margin-bottom:16px}.confetti-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.confetti{position:absolute;width:6px;height:6px;border-radius:50%;opacity:0;animation:confettiFall var(--ease-zen) forwards;filter:blur(.5px)}.win-mentor-note{font-style:italic;color:var(--text-secondary);font-size:.78rem;max-width:280px;margin:6px auto 0;text-align:center;line-height:1.55;white-space:pre-line}.win-first-kill-label{font-size:.8rem;letter-spacing:.06em;color:var(--star-color);margin-bottom:.5rem;text-transform:uppercase}.win-mentor-note-title{font-size:.72rem;margin-bottom:3px;opacity:.7}.win-mentor-note-text{letter-spacing:.02em}.win-actions{display:flex;flex-direction:column;align-items:center;width:100%;max-width:300px}@keyframes confettiFall{0%{transform:translateY(-10px) rotate(0) scale(.4);opacity:0}12%{opacity:.65;transform:translateY(8vh) rotate(40deg) scale(1)}to{transform:translateY(80vh) rotate(300deg) scale(.2);opacity:0}}.gameover-mentor-quote{font-style:italic;color:var(--text-secondary, #888);font-size:.82rem;max-width:260px;margin:8px auto 0;text-align:center;line-height:1.55;white-space:pre-line}.gameover-mentor-attr{font-size:.72rem;margin-bottom:4px;opacity:.7}.gameover-mentor-text{letter-spacing:.02em}.retry-btn,.back-btn,.resume-btn{margin-top:15px;padding:var(--btn-primary-padding);border:1px solid var(--text-main);background:none;color:var(--text-main);cursor:pointer;border-radius:var(--btn-primary-radius);width:180px;font-family:Outfit,sans-serif;font-size:var(--btn-primary-font);font-weight:600;transition:transform var(--duration-fast) ease,opacity var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.retry-btn:active,.back-btn:active,.resume-btn:active{transform:scale(.95)}.resume-btn{background:var(--btn-primary-bg);color:var(--btn-primary-color);border:none;box-shadow:var(--shadow-accent)}#level-screen{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg-color);z-index:100;display:flex;flex-direction:column;align-items:center;padding:calc(20px + env(safe-area-inset-top)) 20px calc(20px + env(safe-area-inset-bottom));transition:opacity .4s;scrollbar-gutter:stable}.tabs-container{display:none}#stage-view{width:100%;max-width:400px;flex:1;display:flex;flex-direction:column;overflow:hidden}.journey-guide{margin:4px 4px 6px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--accent-strong) 22%,var(--cell-border));border-radius:14px;background:color-mix(in srgb,var(--accent-soft) 28%,var(--grid-bg))}.journey-guide-kicker{color:var(--accent-strong);font-size:.62rem;font-weight:700;letter-spacing:.12em}.journey-guide-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:3px}.journey-guide-row strong{color:var(--text-main);font-size:.84rem}.journey-guide-row span{color:var(--text-light);font-size:.65rem;text-align:right}.stage-map{width:100%;display:flex;flex-direction:column;gap:0;flex:1;overflow-y:auto;padding:4px}.stage-map::-webkit-scrollbar{width:4px}.stage-map::-webkit-scrollbar-thumb{background:var(--block-border);border-radius:var(--radius-full)}#tier-view{width:100%;max-width:400px;flex:1;display:flex;flex-direction:column;overflow:hidden;animation:view-fade-in .25s var(--ease-zen)}.tier-header{display:flex;align-items:center;gap:var(--header-gap);padding:var(--header-padding)}.tier-back-btn{background:none;border:1px solid var(--card-border);color:var(--text-main);padding:var(--btn-tertiary-padding);border-radius:var(--btn-tertiary-radius);cursor:pointer;font-size:var(--btn-tertiary-font);flex-shrink:0;font-weight:600;letter-spacing:.02em;transition:transform var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.tier-back-btn:active{transform:scale(.95)}.tier-title{font-size:var(--header-title-size);font-weight:var(--header-title-weight);color:var(--text-main);flex:1}.tier-progress-text{font-size:var(--header-progress-size);color:var(--accent-strong);font-weight:600;flex-shrink:0}.stage-node{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;transition:all .2s;position:relative;border-radius:12px}.stage-node:active{transform:scale(.98)}.stage-node.locked{opacity:.62;cursor:not-allowed}.stage-node.locked .stage-progress{color:var(--text-light);font-size:.72rem}.stage-node.active{background:var(--accent-soft);border:1px solid var(--accent-strong)}.stage-node:not(.active){border:1px solid transparent}.stage-node:before{content:"";position:absolute;left:28px;top:-2px;width:2px;height:calc(100% + 4px);background:var(--cell-border);z-index:0}.stage-node:first-child:before{top:50%;height:50%}.stage-node:last-child:before{height:50%}.stage-dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--cell-border);background:var(--grid-bg);flex-shrink:0;z-index:1;display:flex;align-items:center;justify-content:center;font-size:.55rem}.stage-node.cleared .stage-dot{background:var(--accent-strong);border-color:var(--accent-strong)}.stage-node.partial .stage-dot{border-color:var(--accent-strong);background:var(--grid-bg)}.stage-node.active .stage-dot{border-color:var(--accent-strong);box-shadow:0 0 0 3px var(--accent-soft)}.stage-info{flex:1;min-width:0}.stage-name{font-size:.85rem;font-weight:600;color:var(--text-main);line-height:1.3}.stage-progress{font-size:.72rem;color:var(--text-light);margin-top:2px}.stage-bar-wrap{width:60px;height:6px;background:var(--cell-border);border-radius:3px;overflow:hidden;flex-shrink:0}.stage-bar-fill{height:100%;background:var(--accent-strong);border-radius:3px;transition:width .3s}.stage-node.cleared .stage-bar-fill{background:#27ae60}.stage-count{font-size:.72rem;color:var(--text-light);flex-shrink:0;min-width:36px;text-align:right}.stage-node.cleared .stage-count{color:var(--success-color);font-weight:600}.random-bar{display:flex;justify-content:center;gap:10px;margin:6px 0 14px;flex-wrap:wrap}.random-btn{border:1px solid color-mix(in srgb,var(--cell-border) 78%,transparent);background:color-mix(in srgb,var(--btn-bg) 96%,#ffffff 4%);color:var(--text-main);padding:10px 16px;font-size:.85rem;border-radius:999px;cursor:pointer;transition:transform .15s ease,border-color .2s ease,background .2s ease}.world-entry-btn{min-width:176px;border-radius:18px;display:flex;flex-direction:column;gap:2px;align-items:center;padding:10px 18px;background:radial-gradient(120% 140% at 50% 0%,color-mix(in srgb,var(--accent-soft) 82%,transparent),transparent 55%),color-mix(in srgb,var(--btn-bg) 96%,#ffffff 4%);position:relative;overflow:hidden}.world-entry-btn:after{content:"";position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);animation:btnShimmer 8s ease-in-out infinite;pointer-events:none;border-radius:18px}.world-entry-main{font-size:.9rem;font-weight:700;letter-spacing:.06em}.world-entry-sub{font-size:.64rem;color:var(--text-light);letter-spacing:.03em}.practice-entry-btn{min-width:176px;border-radius:18px;display:flex;flex-direction:column;gap:2px;align-items:center;padding:10px 18px;background:radial-gradient(120% 140% at 50% 0%,color-mix(in srgb,#a78bfa 30%,transparent),transparent 55%),color-mix(in srgb,var(--btn-bg) 96%,#ffffff 4%)}.duo-journey-entry-btn{min-width:176px;border-radius:18px;display:flex;flex-direction:column;gap:2px;align-items:center;padding:10px 18px;background:radial-gradient(120% 140% at 50% 0%,color-mix(in srgb,#f59e0b 24%,transparent),transparent 55%),color-mix(in srgb,var(--btn-bg) 96%,#ffffff 4%)}.duo-entry-main,.duo-entry-sub{letter-spacing:.03em}.duo-entry-main{font-size:.9rem;font-weight:700}.duo-entry-sub{color:var(--text-light);font-size:.64rem}.random-btn.journey-locked,.header-icon-btn.journey-locked{filter:grayscale(1);opacity:.55}.header-icon-btn.journey-locked{position:relative}.header-icon-btn.journey-locked:after{position:absolute;right:-1px;bottom:1px;content:"🔒";font-size:.55rem;filter:none}.random-btn.journey-locked{border-style:dashed}.practice-entry-main{font-size:.9rem;font-weight:700;letter-spacing:.06em}.practice-entry-sub{font-size:.64rem;color:var(--text-light);letter-spacing:.03em}.practice-phase{margin-bottom:16px}.practice-phase-title{font-size:.78rem;font-weight:700;color:var(--text-light);letter-spacing:.05em;padding:6px 0 4px;border-bottom:1px solid var(--cell-border);margin-bottom:6px}.practice-node-list{display:flex;flex-direction:column;gap:4px}.practice-branches{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.practice-branch-col{display:flex;flex-direction:column;gap:4px}.practice-branch-header{font-size:.7rem;font-weight:600;color:var(--accent-strong);text-align:center;padding:4px 0}.practice-node{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:10px;cursor:pointer;transition:all .15s;border:1px solid transparent}.practice-node:active{transform:scale(.98)}.practice-node.unlocked{background:var(--grid-bg);border-color:var(--cell-border)}.practice-node.partial{background:color-mix(in srgb,var(--accent-soft) 40%,var(--grid-bg));border-color:var(--accent-strong)}.practice-node.completed{background:color-mix(in srgb,var(--success-color) 10%,var(--grid-bg));border-color:var(--success-color)}.practice-node.locked{opacity:.5;cursor:not-allowed}.practice-node--compact{padding:5px 8px;gap:4px}.practice-node-name{font-size:.78rem;font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.practice-node--compact .practice-node-name{font-size:.68rem}.practice-mini-bar{width:40px;height:4px;background:var(--cell-border);border-radius:2px;flex-shrink:0}.practice-node--compact .practice-mini-bar{width:28px}.practice-mini-fill{height:100%;background:var(--accent-strong);border-radius:2px;transition:width .3s}.practice-node.completed .practice-mini-fill{background:var(--success-color)}.practice-node-count{font-size:.68rem;color:var(--text-light);flex-shrink:0;min-width:28px;text-align:right}.practice-node.completed .practice-node-count{color:var(--success-color);font-weight:600}.practice-node.unlocked{animation:practice-node-breathe 4s ease-in-out infinite}@keyframes practice-node-breathe{0%,to{border-color:var(--cell-border)}50%{border-color:var(--accent-light)}}.practice-node.partial .practice-mini-fill{background:linear-gradient(90deg,var(--accent-strong),var(--accent-light),var(--accent-strong));background-size:200% 100%;animation:practice-flow 2s linear infinite}@keyframes practice-flow{0%{background-position:200% 0}to{background-position:0 0}}.practice-node.completed{animation:practice-glint 8s ease-in-out infinite}@keyframes practice-glint{0%,90%,to{box-shadow:none}95%{box-shadow:0 0 8px #3d997026}}.win-practice-progress{width:180px;height:4px;background:var(--cell-border);border-radius:2px;margin:6px auto 0}.win-practice-progress-fill{height:100%;background:var(--accent-strong);border-radius:2px;transition:width .8s cubic-bezier(.2,.8,.2,1)}.win-practice-sub{font-size:.72rem;color:var(--text-light);margin-top:2px}.practice-tree-container{position:fixed;inset:0;z-index:105;background:var(--bg-color);display:flex;flex-direction:column;align-items:center;padding:calc(20px + env(safe-area-inset-top,0px)) 0 0;animation:view-fade-in .25s var(--ease-zen)}.practice-tree-container>*{width:100%;max-width:400px;padding-left:16px;padding-right:16px;box-sizing:border-box}.practice-tree-header{display:flex;align-items:center;gap:var(--header-gap);padding:var(--header-padding)}.practice-tree-title{font-size:var(--header-title-size);font-weight:var(--header-title-weight);letter-spacing:.04em;flex:1;min-width:0}.practice-tree-progress{font-size:var(--header-progress-size);color:var(--text-sub);font-weight:600;flex-shrink:0;margin-right:6px}.practice-tree-scroll{overflow-y:auto;max-height:calc(100dvh - 120px - env(safe-area-inset-bottom,0px));padding-bottom:32px;display:flex;justify-content:center;scrollbar-gutter:stable}.practice-tree-scroll::-webkit-scrollbar{width:4px}.practice-tree-scroll::-webkit-scrollbar-thumb{background:var(--block-border);border-radius:var(--radius-full)}.tree-phase-label{font-size:.72rem;font-weight:700;color:var(--text-light);letter-spacing:.06em;text-transform:uppercase;text-align:center;padding:12px 0 4px}.tree-phase-label--map{position:absolute;left:50%;transform:translate(-50%);width:240px;padding:0;z-index:3}.tree-converge-hint{font-size:.64rem;color:var(--accent-strong);text-align:center;letter-spacing:.08em;padding:4px 0;opacity:.7}.tree-converge-hint--map{position:absolute;left:50%;transform:translate(-50%);width:220px;padding:0;z-index:3}.tree-spine{display:flex;flex-direction:column;align-items:center;position:relative}.tree-spine-label{font-size:.68rem;font-weight:600;color:var(--accent-strong);text-align:center;padding:6px 0 2px;letter-spacing:.04em}.tree-spine-label--map{position:absolute;transform:translate(-50%);width:96px;padding:0;z-index:3}.tree-spine-nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:12px;width:100%;justify-items:center}.tree-node{display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;position:relative;z-index:1;transition:opacity .2s,transform .2s;width:92px}.tree-node--map{position:absolute;transform:translate(-50%);z-index:4}.tree-node:active{opacity:.95;transform:scale(.985) translateY(1px)}.tree-node:not(.tree-node--locked):hover .tree-node-icon{transform:translateY(-1px);box-shadow:inset 0 0 0 1px #fff6,0 10px 16px #21353938}.tree-node:focus-visible .tree-node-icon{outline:2px solid rgba(76,110,117,.42);outline-offset:2px}.tree-node--compact{width:88px}.tree-node--locked{cursor:not-allowed}.tree-node--new-unlock .tree-node-icon{animation:node-unlock-pulse .62s cubic-bezier(.17,.67,.26,1.26)}.tree-node-icon{width:78px;height:78px;border-radius:16px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:radial-gradient(circle at 24% 20%,#ffffff4d,#fff0 42%),repeating-linear-gradient(125deg,#887d620d,#887d620d 2px,#887d6200 2px 6px),linear-gradient(150deg,#f2eee3,#e9e3d6 52%,#e2dac9);border:1.2px solid rgba(92,84,67,.26);box-shadow:inset 0 0 0 1px #ffffff57,0 6px 12px #29272224;transition:border-color .24s,box-shadow .24s,opacity .2s,transform .2s}.tree-node--compact .tree-node-icon{width:74px;height:74px;border-radius:15px}.tree-node--locked .tree-node-icon{opacity:.84;border-color:#76797c38;filter:saturate(.72) grayscale(.08)}.tree-node--unlocked .tree-node-icon{border-color:#3e59606b;box-shadow:inset 0 0 0 1px #ffffff52,0 8px 14px #21353933}.tree-node--partial .tree-node-icon{border-color:#4f707485;box-shadow:inset 0 0 0 1px #ffffff52,0 8px 14px #23404633}.tree-node--completed .tree-node-icon{border-color:#7c5f3285;box-shadow:inset 0 0 0 1px #fffcef61,0 8px 14px #563f2333}.tree-node-chip{position:absolute;top:6px;left:6px;padding:1px 6px;font-size:8px;line-height:1.2;border-radius:999px;letter-spacing:.03em;font-weight:600;z-index:4;border:1px solid transparent;background:#46464624;color:#62625e}.tree-node-chip--unlocked,.tree-node-chip--partial{color:#37535b;border-color:#4d6e7352;background:#98b6bc33}.tree-node-chip--completed{color:#5d4322;border-color:#83663a6b;background:#c9ad7447}.tree-node-glyph{width:34px;height:34px;color:#51626a;opacity:.92;z-index:2;transform:translateY(-7px)}.tree-node-glyph svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.tree-node-glyph--locked{color:#8d9090;opacity:.8}.tree-node-glyph--completed{color:#7a5a2b}.tree-node-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);z-index:1}.tree-node-ring-track{fill:none;stroke:#4f4c4229;stroke-width:3.2}.tree-node-ring-fill{fill:none;stroke-width:3.2;stroke-linecap:round;transition:stroke-dashoffset .55s var(--ease-zen),stroke .3s;stroke:#466b74d6}.tree-node--locked .tree-node-ring-fill{stroke:#7b7e818a}.tree-node--completed .tree-node-ring-fill{stroke:#856436e0}.tree-node-primary{position:absolute;left:50%;bottom:20px;transform:translate(-50%);font-size:15px;line-height:1;letter-spacing:.02em;font-weight:700;color:#39464b;z-index:4;white-space:nowrap}.tree-node-primary--unlocked,.tree-node-primary--partial{color:#345058}.tree-node--locked .tree-node-primary{color:#6f7478;font-size:14px}.tree-node--completed .tree-node-primary{color:#5f4523;font-size:13px}.tree-node-label{font-size:11px;font-weight:600;color:#5d5b56;text-align:center;line-height:1.2;width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;word-break:break-word;margin-top:1px}.tree-node--compact .tree-node-label{font-size:10px}.tree-node--locked .tree-node-label{display:block;opacity:.85}.tree-node--completed .tree-node-label{color:#725429}.tree-node-secondary{position:absolute;left:50%;bottom:8px;transform:translate(-50%);font-size:9px;line-height:1;letter-spacing:.02em;color:#646864;opacity:.96;font-weight:600;z-index:4;white-space:nowrap}.tree-node-secondary--locked{opacity:.88}.tree-node-secondary--completed{color:#74542b}.tree-node-hint{font-size:9px;line-height:1.3;color:#6f746f;text-align:center;width:92px;min-height:24px;letter-spacing:.02em;margin-top:2px;font-weight:600}.tree-node-badge{position:absolute;font-size:12px;line-height:1;z-index:2;pointer-events:none}.tree-node-badge--done{top:-3px;right:-3px;width:20px;height:20px;background:radial-gradient(circle at 35% 30%,#fff0d8f2,#bd6c46f2 60%,#8b3d23f5);color:#fff4e8fa;font-size:9px;font-weight:800;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1px #9a51347a,0 3px 8px #532d183d}@keyframes node-unlock-pulse{0%{transform:scale(1);box-shadow:0 0 #6aafff00}45%{transform:scale(1.07);box-shadow:0 0 0 8px #6aafff29}to{transform:scale(1);box-shadow:0 0 #6aafff00}}.tree-fork{display:flex;flex-direction:column;align-items:center;width:100%}.tree-fork-svg{width:100%;height:40px;display:block}.tree-fork-line{stroke:var(--cell-border);stroke-width:2;stroke-linecap:round;transition:stroke .3s}.practice-tree-map{position:relative;margin:0 auto}.practice-tree-map-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.tree-map-line{stroke-width:2.2;stroke-linecap:round;transition:stroke .3s,opacity .3s,filter .3s}.tree-map-line--locked{stroke:color-mix(in srgb,var(--cell-border) 86%,#8b8f98 14%);opacity:.38}.tree-map-line--active{stroke:color-mix(in srgb,var(--accent-strong) 64%,#e2f2ff 36%);opacity:.92;filter:drop-shadow(0 0 2px rgba(120,190,255,.35))}.tree-map-line--completed{stroke:#e0bb5b;opacity:.96;filter:drop-shadow(0 0 2px rgba(228,184,78,.3))}.tree-fork-branches{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;width:100%}.tree-fork-branches .tree-spine{width:100%}.tree-fork-branches .tree-spine-nodes{grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:8px}.tree-fork--merge .tree-fork-svg{transform:scaleY(-1)}@media(max-width:420px){.tree-fork-branches{grid-template-columns:1fr;gap:12px}.tree-spine-nodes{grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:8px}}@media(max-width:420px){.practice-branches{grid-template-columns:1fr;gap:12px}.practice-branch-header{text-align:left;border-bottom:1px solid var(--cell-border);padding-bottom:4px}.practice-node--compact{padding:6px 10px;gap:6px}.practice-node--compact .practice-node-name{font-size:.72rem;white-space:normal}.practice-node--compact .practice-mini-bar{width:36px}.random-bar{flex-direction:column;align-items:center}.practice-entry-btn,.world-entry-btn,.duo-journey-entry-btn{min-width:200px;width:100%;max-width:280px}}@media(max-width:360px){.practice-phase{margin-bottom:10px}.practice-node{padding:6px 8px;gap:6px}.practice-node-name{font-size:.72rem}.practice-mini-bar{width:32px}}.random-btn.ghost{background:transparent}.random-btn:active{transform:translateY(1px) scale(.98)}.alias-config{width:100%;max-width:400px;display:flex;gap:8px;align-items:center;margin-top:-10px;margin-bottom:16px}html.native-app .alias-config{display:none!important}.alias-input{flex:1;border:1px solid var(--cell-border);border-radius:10px;background:var(--grid-bg);color:var(--text-main);padding:8px 10px;font-size:.82rem;outline:none}.alias-input:focus{border-color:var(--accent-strong);box-shadow:0 0 0 2px var(--accent-soft)}.alias-save-btn{border:1px solid var(--cell-border);border-radius:10px;background:var(--btn-bg);color:var(--text-main);padding:8px 12px;font-size:.78rem;cursor:pointer;white-space:nowrap}.version-badge{position:fixed;right:10px;bottom:10px;font-size:.68rem;letter-spacing:.6px;color:var(--text-light);background:color-mix(in srgb,var(--btn-bg) 70%,transparent);border:1px solid color-mix(in srgb,var(--cell-border) 70%,transparent);border-radius:999px;padding:4px 8px;z-index:50;pointer-events:none}#level-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;width:100%;max-width:400px;height:100%;overflow-y:auto;padding-bottom:40px;scroll-behavior:smooth}.level-item{background:var(--grid-bg);border-radius:var(--card-radius);display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;border:1px solid var(--card-border);cursor:pointer;box-shadow:var(--card-shadow);transition:transform var(--duration-fast) ease,border-color .2s;overflow:hidden;min-height:0}.level-item-skeleton{cursor:default;border-style:dashed;border-color:color-mix(in srgb,var(--cell-border) 70%,transparent);background:linear-gradient(90deg,color-mix(in srgb,var(--grid-bg) 88%,transparent) 20%,color-mix(in srgb,var(--btn-bg) 50%,transparent),color-mix(in srgb,var(--grid-bg) 88%,transparent) 80%);background-size:220% 100%;animation:levelSkeletonPulse 1.1s ease-in-out infinite}.level-skeleton-line{border-radius:999px;background:color-mix(in srgb,var(--cell-border) 60%,transparent);opacity:.55}.level-skeleton-title{width:62%;height:9px;margin-top:2px}.level-skeleton-sub{width:48%;height:7px;margin-top:6px}@keyframes levelSkeletonPulse{0%{background-position:100% 0}to{background-position:0 0}}.level-item:active{transform:scale(.95)}.level-item.locked{opacity:.72;cursor:not-allowed;border-style:dashed;border-color:color-mix(in srgb,var(--cell-border) 70%,var(--text-light));background:color-mix(in srgb,var(--grid-bg) 80%,var(--btn-bg))}.level-item.completed{border-color:var(--accent-strong);background:var(--accent-soft)}.level-num{font-size:.72rem;font-weight:500;text-align:center;line-height:1.15;min-height:2.2em;display:flex;align-items:flex-end;justify-content:center;padding:0 3px}.level-stats{font-size:.7rem;color:var(--text-light);min-height:1em}.level-stars{font-size:.75rem;color:var(--star-color);margin-top:2px;min-height:1em}.level-stars .empty-star{color:var(--cell-border)}.level-stars.is-empty,.level-stats.is-empty{visibility:hidden}.level-lock{margin-top:2px;font-size:.72rem;color:var(--text-main)}.level-lock-hint{margin-top:2px;font-size:.62rem;color:var(--text-light);text-align:center;line-height:1.2;padding:0 4px}#level-list::-webkit-scrollbar{width:4px}#level-list::-webkit-scrollbar-thumb{background:var(--block-border);border-radius:var(--radius-full)}.numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;width:100%;margin-bottom:0;padding-bottom:0}.num-btn{aspect-ratio:auto;min-height:44px;height:clamp(44px,7vh,68px);border:1px solid color-mix(in srgb,var(--cell-border) 82%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--btn-bg) 98%,#ffffff 2%),color-mix(in srgb,var(--btn-bg) 92%,var(--bg-color)));font-size:min(6.2vw,1.35rem);font-weight:500;font-variant-numeric:tabular-nums lining-nums;color:var(--text-main);cursor:pointer;border-radius:16px;box-shadow:none;display:flex;align-items:center;justify-content:center;padding:0;margin:0;position:relative;overflow:hidden;touch-action:manipulation;transition:transform .15s ease,opacity .2s ease,box-shadow .2s ease,border-color .2s ease}.num-btn:after{content:"";position:absolute;left:8px;right:8px;bottom:6px;height:4px;background:var(--accent-strong);transform:scaleX(0);transform-origin:left;opacity:.95;border-radius:999px}.num-btn.long-pressing:after{animation:holdFill .32s linear forwards}@keyframes ctmIntroPulse{0%,to{box-shadow:0 0 0 0 transparent;border-color:color-mix(in srgb,var(--cell-border) 82%,transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent-strong) 35%,transparent);border-color:var(--accent-strong)}}.num-btn.ctm-intro-pulse{animation:ctmIntroPulse 1.4s ease-in-out infinite}.num-btn:active{transform:translateY(1px) scale(.93);box-shadow:inset 0 1px 3px #00000014;transition:transform .06s ease-out}@media(hover:hover)and (pointer:fine){.num-btn:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent-strong) 45%,var(--cell-border));box-shadow:none}}.num-btn.completed{opacity:.42;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cell-border) 60%,transparent);border-color:color-mix(in srgb,var(--cell-border) 75%,transparent)}.num-btn:disabled{cursor:not-allowed;pointer-events:none}.num-btn.completed:after{display:none}@keyframes holdFill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.controls{display:flex;align-items:center;justify-content:center;gap:12px;flex:0 0 auto;margin-top:0;padding-bottom:0;flex-wrap:wrap}.ctrl-btn{background:none;border:none;color:var(--text-light);font-size:.75rem;cursor:pointer;display:flex;flex-direction:column;align-items:center}.ctrl-btn.active{color:var(--accent-strong)}.skill-mode-toggle{border:1px solid color-mix(in srgb,var(--cell-border) 76%,transparent);background:var(--btn-bg);border-radius:999px;padding:6px 12px;font-size:.72rem;font-weight:600;color:var(--text-main)}.skill-mode-toggle.active{border-color:color-mix(in srgb,var(--accent-strong) 45%,var(--cell-border));color:var(--accent-strong)}.numpad-skill-wrapper{position:relative;width:min(100%,300px);flex:0 0 auto;margin-top:0;align-self:center}.game-play-area{width:100%;min-height:0;flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:8px}.board-stage{width:100%;min-width:0;min-height:180px;flex:1 1 0;display:flex;align-items:center;justify-content:center;position:relative}@media(orientation:landscape){.game-container{max-width:900px}.game-play-area{align-items:stretch;flex-direction:row;gap:clamp(12px,3vw,32px)}.board-stage{width:auto}.game-play-area .numpad-skill-wrapper{width:clamp(144px,38%,300px)}}.skill-panel{position:absolute;inset:0;z-index:5;border:1px solid color-mix(in srgb,var(--accent-strong) 25%,var(--cell-border));border-radius:12px;padding:12px 14px;background:color-mix(in srgb,var(--btn-bg) 97%,var(--grid-bg));display:flex;flex-direction:column;justify-content:center;gap:6px;animation:skill-panel-in .25s var(--ease-zen, ease-out)}@keyframes skill-panel-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.unit-analysis-panel{position:absolute;inset:0;z-index:4;border:1px solid color-mix(in srgb,var(--accent-strong) 20%,var(--cell-border));border-radius:12px;padding:14px 18px;background:color-mix(in srgb,var(--btn-bg) 97%,var(--grid-bg));display:flex;flex-direction:column;justify-content:center;gap:10px;animation:ua-panel-in .25s ease-out}.unit-analysis-panel.hidden{display:none}@keyframes ua-panel-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.ua-row{display:flex;align-items:center;gap:10px}.ua-label{font-size:.78rem;font-weight:600;color:var(--text-light);min-width:3.2em;flex-shrink:0}.ua-digits{display:flex;gap:5px;flex-wrap:wrap}.ua-digit{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;font-size:.92rem;font-weight:600;background:color-mix(in srgb,var(--accent-strong) 12%,var(--btn-bg));color:var(--accent-strong);border:1px solid color-mix(in srgb,var(--accent-strong) 25%,transparent)}.ua-complete{font-size:.85rem;color:var(--success, #4caf50);font-weight:700}.skill-subtitle{font-family:Outfit,sans-serif;font-size:.82rem;font-weight:700;color:var(--accent-strong);letter-spacing:.3px}.skill-status{font-size:.72rem;color:var(--text-main);line-height:1.4;min-height:20px}.skill-actions{display:flex;gap:8px;margin-top:2px}.skill-cast-btn{flex:1;border:1px solid color-mix(in srgb,var(--accent-strong) 30%,var(--cell-border));background:color-mix(in srgb,var(--accent-strong) 84%,#ffffff 16%);color:#fff;border-radius:8px;padding:10px;font-size:.78rem;font-weight:700;cursor:pointer}.skill-cast-btn:disabled{opacity:.45;cursor:default}.skill-fill-btn{border:1px solid var(--cell-border);background:var(--btn-bg);color:var(--text-main);border-radius:8px;padding:10px 12px;font-size:.76rem;font-weight:700;cursor:pointer}.skill-fill-btn:disabled{opacity:.45;cursor:default}.skill-cancel-btn{border:1px solid var(--cell-border);background:var(--btn-bg);color:var(--text-main);border-radius:8px;padding:10px 14px;font-size:.76rem;font-weight:600;cursor:pointer}.tracking-panel{position:absolute;inset:0;z-index:5;border:1px solid color-mix(in srgb,var(--accent-strong) 25%,var(--cell-border));border-radius:12px;padding:12px 14px;background:color-mix(in srgb,var(--btn-bg) 97%,var(--grid-bg));display:flex;flex-direction:column;justify-content:center;gap:6px;animation:skill-panel-in .22s var(--ease-zen, ease-out)}.tracking-panel.hidden{display:none}.tracking-panel-header{display:flex;justify-content:space-between;font-size:.78rem;font-weight:600;color:var(--text-light)}.tracking-panel-header strong{color:var(--accent-strong)}.tracking-nodes-list{font-size:.72rem;color:var(--text-main);min-height:18px;line-height:1.6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tracking-node-item{margin-right:2px}.tracking-actions{display:flex;gap:8px;margin-top:2px}.tracking-cast-btn{flex:1;border:1px solid color-mix(in srgb,var(--accent-strong) 30%,var(--cell-border));background:color-mix(in srgb,var(--accent-strong) 84%,#ffffff 16%);color:#fff;border-radius:8px;padding:10px;font-size:.78rem;font-weight:700;cursor:pointer}.tracking-cast-btn:disabled{opacity:.45;cursor:default}.tracking-cancel-btn{border:1px solid var(--cell-border);background:var(--btn-bg);color:var(--text-main);border-radius:8px;padding:10px 14px;font-size:.76rem;font-weight:600;cursor:pointer}.cell.tracking-available{background-color:color-mix(in srgb,var(--accent-strong) 8%,var(--cell-bg, transparent))}.cell.tracking-selected{box-shadow:inset 0 0 0 2px #3b82f6;z-index:2}.cell.tracking-selected .tracking-note-lit{color:#3b82f6;font-weight:700}.cell.tracking-strong-partner{background-color:color-mix(in srgb,#22c55e 14%,var(--cell-bg, transparent));box-shadow:inset 0 0 0 1px color-mix(in srgb,#22c55e 45%,transparent);z-index:1}.cell.tracking-selected-strong{box-shadow:inset 0 0 0 2.5px #22c55e;z-index:2}.cell.tracking-selected-strong .tracking-note-lit{color:#22c55e;font-weight:700;text-shadow:0 0 6px color-mix(in srgb,#22c55e 55%,transparent)}.cell.tracking-selected-weak{box-shadow:inset 0 0 0 2px var(--accent-strong);z-index:2}.cell.tracking-selected-weak .tracking-note-lit{color:var(--accent-strong);font-weight:700}@keyframes trackingPulse{0%,to{box-shadow:inset 0 0 0 2px var(--accent-strong),0 0 color-mix(in srgb,var(--accent-strong) 0%,transparent)}50%{box-shadow:inset 0 0 0 2.5px var(--accent-strong),0 0 6px 2px color-mix(in srgb,var(--accent-strong) 30%,transparent)}}.cell.tracking-ready{animation:trackingPulse .8s ease infinite;z-index:2}@keyframes rejectFlash{0%{box-shadow:inset 0 0 0 2px #ef4444}to{box-shadow:inset 0 0 0 0 transparent}}.cell.tracking-reject{animation:rejectFlash .2s ease forwards;z-index:2}.cell.tracking-strong-anchor{box-shadow:inset 0 0 0 2px #64ddb48c}.constraint-map-on .cell[data-ccount="1"]{background:#64ddb447!important}.constraint-map-on .cell[data-ccount="2"]{background:#64ddb433!important}.constraint-map-on .cell[data-ccount="3"]{background:#64ddb421!important}.constraint-map-on .cell[data-ccount="4"]{background:#64ddb414!important}.cell.skill-selected{box-shadow:inset 0 0 0 2.5px var(--accent-strong);z-index:2}.ctrl-btn svg{width:22px;height:22px;margin-bottom:6px}.notes-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;padding:0;pointer-events:none}.sudoku-grid.skill-mode .notes-grid{pointer-events:auto}.note-num{display:flex;justify-content:center;align-items:center;font-size:clamp(.44rem,1.6vw,.58rem);line-height:1;color:var(--note-color);opacity:0}.note-num.active{opacity:1}.sudoku-grid.skill-mode .note-num.active{cursor:pointer}.note-num.note-lit{color:var(--accent-strong);font-weight:700;text-shadow:0 0 6px color-mix(in srgb,var(--accent-light) 55%,transparent);transform:scale(1.06)}.cell.skill-source{box-shadow:inset 0 0 0 2px var(--accent-strong);z-index:2}.cell.skill-target{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--error-color, #e74c3c) 70%,transparent);z-index:2}.skill-connection-svg{position:absolute;top:0;left:0;pointer-events:none;z-index:3;overflow:visible}.skill-line{stroke-width:2;stroke-linecap:round;opacity:0;animation:skill-line-in .3s var(--ease-zen, ease-out) forwards}.skill-line-source{stroke:var(--accent-strong);stroke-width:2.5}.skill-line-target{stroke:color-mix(in srgb,var(--error-color, #e74c3c) 65%,transparent);stroke-dasharray:6 4}@keyframes skill-line-in{0%{opacity:0}to{opacity:.7}}.cell.skill-source-pulse{animation:skill-source-pulse .2s ease-out}@keyframes skill-source-pulse{0%{box-shadow:inset 0 0 0 2.5px var(--accent-strong)}50%{box-shadow:inset 0 0 0 4px var(--accent-strong),0 0 8px color-mix(in srgb,var(--accent-light) 40%,transparent)}to{box-shadow:inset 0 0 0 2.5px var(--accent-strong)}}.skill-line.skill-line-flash{opacity:1;stroke-width:3;transition:opacity .15s,stroke-width .15s}.cell.skill-strike{animation:skill-strike-pulse .22s ease-out}@keyframes skill-strike-pulse{0%{background:var(--cell-bg)}40%{background:color-mix(in srgb,var(--error-color, #e74c3c) 25%,var(--cell-bg))}to{background:var(--cell-bg)}}.cell.skill-target-inward{box-shadow:inset 0 0 0 2px color-mix(in srgb,#f39c12 70%,transparent);z-index:2}.cell.skill-strike-inward{animation:skill-strike-inward-pulse .22s ease-out}@keyframes skill-strike-inward-pulse{0%{background:var(--cell-bg)}40%{background:color-mix(in srgb,#f39c12 20%,var(--cell-bg))}to{background:var(--cell-bg)}}.note-num.skill-elim-digit{color:var(--error-color, #e74c3c);animation:skill-elim-digit .65s ease-out both;pointer-events:none}@keyframes skill-elim-digit{0%{opacity:1;transform:scale(1);text-decoration:none}30%{opacity:.85;transform:scale(1.04);text-decoration:line-through;color:var(--error-color, #e74c3c)}55%{opacity:.5;transform:scale(.95);text-decoration:line-through}to{opacity:0;transform:scale(.7);text-decoration:line-through}}.cell.skill-pair-bond{animation:skill-pair-bond .4s ease-out;box-shadow:inset 0 0 0 2.5px var(--accent-strong),0 0 10px color-mix(in srgb,var(--accent-light) 35%,transparent)}@keyframes skill-pair-bond{0%{box-shadow:inset 0 0 0 1px var(--accent-strong)}50%{box-shadow:inset 0 0 0 4px var(--accent-strong),0 0 14px color-mix(in srgb,var(--accent-light) 50%,transparent)}to{box-shadow:inset 0 0 0 2.5px var(--accent-strong),0 0 10px color-mix(in srgb,var(--accent-light) 35%,transparent)}}.note-num.skill-lock-digit-ring{color:var(--accent-strong);animation:skill-lock-digit-ring .35s ease-out both;z-index:5;position:relative}@keyframes skill-lock-digit-ring{0%{transform:scale(1);opacity:.7}50%{transform:scale(1.25);opacity:1;text-shadow:0 0 6px var(--accent-light)}to{transform:scale(1.15);opacity:1;text-shadow:0 0 4px color-mix(in srgb,var(--accent-light) 50%,transparent)}}.skill-line-bond{stroke:var(--accent-strong);stroke-width:3;opacity:0;animation:skill-line-bond-in .35s ease-out forwards}@keyframes skill-line-bond-in{0%{opacity:0;stroke-width:1}60%{opacity:.85;stroke-width:3.5}to{opacity:.7;stroke-width:3}}.skill-line-sweep{stroke:color-mix(in srgb,var(--error-color, #e74c3c) 55%,transparent);stroke-width:1.5;stroke-dasharray:5 3;opacity:0;animation:skill-line-sweep-in .25s ease-out forwards}@keyframes skill-line-sweep-in{0%{opacity:0}to{opacity:.6}}.cell.skill-weave-anchor{animation:skill-weave-anchor .3s ease-out both;box-shadow:inset 0 0 0 2.5px var(--accent-strong),0 0 8px color-mix(in srgb,var(--accent-light) 30%,transparent)}.cell.skill-weave-anchor-1{animation-delay:.1s}.cell.skill-weave-anchor-2{animation-delay:.2s}@keyframes skill-weave-anchor{0%{box-shadow:inset 0 0 0 0 var(--accent-strong);opacity:.7}60%{box-shadow:inset 0 0 0 3.5px var(--accent-strong),0 0 12px color-mix(in srgb,var(--accent-light) 45%,transparent);opacity:1}to{box-shadow:inset 0 0 0 2.5px var(--accent-strong),0 0 8px color-mix(in srgb,var(--accent-light) 30%,transparent);opacity:1}}.skill-line-weave{stroke:var(--accent-strong);stroke-width:2;stroke-dasharray:200;stroke-dashoffset:200;opacity:.7;animation:skill-line-draw .3s ease-out forwards}@keyframes skill-line-draw{0%{stroke-dashoffset:200}to{stroke-dashoffset:0}}.note-num.skill-reveal-digit{animation:skill-reveal-digit .4s ease-out both;z-index:5;position:relative}@keyframes skill-reveal-digit{0%{opacity:.4;transform:scale(.85);color:var(--note-color, #666)}60%{opacity:1;transform:scale(1.2);color:var(--accent-strong);text-shadow:0 0 6px var(--accent-light)}to{opacity:1;transform:scale(1.1);color:var(--accent-strong);text-shadow:0 0 3px color-mix(in srgb,var(--accent-light) 40%,transparent)}}.note-num.skill-noise-digit{animation:skill-noise-mark .3s ease-out both}@keyframes skill-noise-mark{0%{color:var(--note-color, #666)}to{color:#f39c12;opacity:.7}}.cell.skill-purify-pulse{animation:skill-purify-pulse .4s ease-out}@keyframes skill-purify-pulse{0%{box-shadow:inset 0 0 0 2px var(--accent-strong)}50%{box-shadow:inset 0 0 0 3.5px #f1c40f,0 0 12px color-mix(in srgb,#f1c40f 40%,transparent)}to{box-shadow:none}}@keyframes skill-ripple-expand{0%{r:2;opacity:.6;stroke-width:1.2}60%{opacity:.3}to{r:85;opacity:0;stroke-width:.3}}.cell.candidate-reveal .notes-grid{animation:candidate-pop .3s var(--ease-zen, ease-out)}@keyframes candidate-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.game-container.wild-common{background:linear-gradient(180deg,color-mix(in srgb,#dfe6e9 6%,var(--bg)) 0%,var(--bg) 50%)}.game-container.wild-rare{background:linear-gradient(180deg,color-mix(in srgb,#e2b93b 16%,var(--bg)) 0%,var(--bg) 55%)}.game-container.wild-legendary{background:linear-gradient(180deg,color-mix(in srgb,#a29bfe 20%,var(--bg)) 0%,var(--bg) 55%)}.game-container.wild-mythic{background:linear-gradient(180deg,color-mix(in srgb,#d63031 18%,var(--bg)) 0%,var(--bg) 55%);animation:wild-mythic-pulse 2.5s ease-in-out infinite}@keyframes wild-mythic-pulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.06)}}.game-container.world-play-active[data-rarity=rare] .sudoku-grid{box-shadow:0 0 0 2px #e2b93b40,inset 0 0 40px #e2b93b14;animation:rarity-breathe-rare 4s ease-in-out infinite}.game-container.world-play-active[data-rarity=legendary] .sudoku-grid{box-shadow:0 0 0 2px #a29bfe4d,inset 0 0 40px #a29bfe1a;animation:rarity-breathe-legendary 4s ease-in-out infinite}.game-container.world-play-active[data-rarity=mythic] .sudoku-grid{box-shadow:0 0 0 2px #ff149359,inset 0 0 40px #ff14931a;animation:rarity-breathe-mythic 3s ease-in-out infinite}@keyframes rarity-breathe-rare{0%,to{box-shadow:0 0 0 2px #e2b93b33,inset 0 0 40px #e2b93b0f}50%{box-shadow:0 0 0 2px #e2b93b59,inset 0 0 60px #e2b93b24}}@keyframes rarity-breathe-legendary{0%,to{box-shadow:0 0 0 2px #a29bfe40,inset 0 0 40px #a29bfe14}50%{box-shadow:0 0 0 2px #a29bfe6b,inset 0 0 60px #a29bfe29}}@keyframes rarity-breathe-mythic{0%,to{box-shadow:0 0 0 2px #ff149347,inset 0 0 40px #ff149314}50%{box-shadow:0 0 0 2px #ff149380,inset 0 0 60px #ff14932e}}.demo-tech-label{position:fixed;top:max(env(safe-area-inset-top,0px),12px);left:50%;transform:translate(-50%);font-size:1.4rem;font-weight:700;letter-spacing:.15em;z-index:100;pointer-events:none;text-shadow:0 0 12px currentColor;transition:color .15s}.demo-step-counter{position:fixed;bottom:max(env(safe-area-inset-bottom,0px),20px);left:50%;transform:translate(-50%);font-size:.9rem;font-weight:600;color:#ffffff80;z-index:100;pointer-events:none;font-variant-numeric:tabular-nums}.cell.demo-fill-flash{animation:demo-fill .3s ease-out}@keyframes demo-fill{0%{box-shadow:inset 0 0 0 2px #74b9ffcc;background:#74b9ff26}to{box-shadow:inset 0 0 0 0 transparent;background:transparent}}.cell.demo-skill-pulse{animation:demo-skill .4s ease;z-index:5}@keyframes demo-skill{0%{box-shadow:0 0 #00cec999}50%{box-shadow:0 0 10px 3px #00cec966}to{box-shadow:0 0 0 0 transparent}}.cell.demo-exocet-pulse{animation:demo-exocet .8s ease infinite;z-index:5}@keyframes demo-exocet{0%,to{box-shadow:0 0 #ff32324d}50%{box-shadow:0 0 14px 4px #ff323299}}.sudoku-grid.demo-frozen{opacity:.6;filter:brightness(.8);transition:opacity 1s,filter 1s}.game-container.demo-backdrop{background:#0a0a0f!important}#mentor-overlay{position:fixed;inset:0;background:#000000b3;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:300;padding:24px;animation:mentor-fade-in .6s ease}#mentor-overlay.hidden{display:none}@keyframes mentor-fade-in{0%{opacity:0}to{opacity:1}}.mentor-panel{max-width:360px;width:100%;display:flex;flex-direction:column;gap:16px;align-items:center}.mentor-text{color:var(--text-main);font-size:.9rem;line-height:1.8;text-align:center;white-space:pre-line;letter-spacing:.03em}.mentor-sub{color:var(--text-sub);font-size:.72rem;text-align:center;white-space:pre-line;font-style:italic}.mentor-dismiss-btn{margin-top:8px;background:none;border:1px solid rgba(255,255,255,.15);color:#aaa;padding:8px 32px;border-radius:999px;font-size:.8rem;cursor:pointer;transition:border-color .3s,color .3s;letter-spacing:.15em}.mentor-dismiss-btn:hover{border-color:#ffffff4d;color:#ccc}#level-screen.world-view-active .level-title{letter-spacing:3px}#wild-lobby,#duo-lobby{padding:0 16px 24px;width:100%;max-width:400px;flex:1;overflow-y:auto;animation:view-fade-in .25s var(--ease-zen)}#wild-lobby::-webkit-scrollbar,#duo-lobby::-webkit-scrollbar{width:4px}#wild-lobby::-webkit-scrollbar-thumb,#duo-lobby::-webkit-scrollbar-thumb{background:var(--block-border);border-radius:var(--radius-full)}#wild-lobby.hidden,#duo-lobby.hidden,#duo-room-view.hidden{display:none}#duo-room-view{padding:0 16px 24px;width:100%;max-width:400px;flex:1;overflow-y:auto;animation:view-fade-in .25s var(--ease-zen);display:flex;flex-direction:column;align-items:center}.duo-room-body{width:100%;display:flex;flex-direction:column;align-items:center;gap:16px;padding-top:8px}.duo-room-id-card{width:100%;text-align:center;padding:18px 16px;border-radius:var(--radius-md);background:var(--duo-surface);border:1px solid var(--duo-border)}.duo-publication-state{margin-top:8px;font-size:.78rem;line-height:1.4;color:var(--text-light)}.duo-room-id-label{font-size:.72rem;color:var(--text-light);margin-bottom:8px;text-transform:uppercase;letter-spacing:1.5px}.duo-room-id-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:8px}.duo-room-id-value{font-size:1.2rem;font-weight:700;font-family:JetBrains Mono,Fira Code,monospace;letter-spacing:3px;color:var(--duo-accent);background:color-mix(in srgb,var(--duo-accent) 8%,transparent);padding:4px 12px;border-radius:var(--radius-sm)}.duo-room-id-copy{padding:5px 12px;border-radius:var(--radius-full);border:1px solid color-mix(in srgb,var(--duo-accent) 40%,transparent);background:color-mix(in srgb,var(--duo-accent) 8%,transparent);color:var(--duo-accent);font-size:.72rem;font-weight:600;cursor:pointer;transition:transform var(--duration-fast) ease,background .2s ease;-webkit-tap-highlight-color:transparent}.duo-room-id-copy:active{transform:scale(.92)}.duo-room-id-copy.copied{background:var(--success-color);border-color:var(--success-color);color:#fff}.duo-room-id-hint{font-size:.68rem;color:var(--text-sub);margin-top:4px}.duo-room-tier-mode{font-size:.82rem;color:var(--text-light);font-weight:500;margin-top:4px}.duo-room-slots-card{width:100%;padding:24px 16px 20px;border-radius:var(--radius-md);background:var(--duo-surface);border:1px solid var(--duo-border);text-align:center}.duo-room-stats-card{width:100%;padding:14px 16px;border-radius:var(--radius-md);background:var(--duo-surface);border:1px solid var(--duo-border);animation:view-fade-in .25s var(--ease-zen)}.duo-room-stats-card.hidden{display:none}.duo-stats-vs{margin-top:6px;padding-top:6px;border-top:1px solid var(--duo-border);font-weight:600}.duo-vs-badge{display:flex;align-items:center;justify-content:center;width:40px;height:40px;font-size:.78rem;font-weight:800;color:var(--duo-accent);letter-spacing:1px;border-radius:50%;background:color-mix(in srgb,var(--duo-accent) 8%,transparent);border:2px solid color-mix(in srgb,var(--duo-accent) 30%,transparent);flex-shrink:0;animation:vsBreathe 2s ease-in-out infinite}.duo-vs-badge.battle{background:var(--duo-accent);color:#fff;border-color:var(--duo-accent);animation:vsPulse .8s ease-in-out infinite}@keyframes vsBreathe{0%,to{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 12px 2px var(--duo-glow)}}@keyframes vsPulse{0%,to{transform:scale(1);box-shadow:0 0 8px 2px var(--duo-glow)}50%{transform:scale(1.1);box-shadow:0 0 16px 4px var(--duo-glow)}}.wild-lobby-header{display:flex;align-items:center;gap:var(--header-gap);padding:var(--header-padding)}.wild-lobby-title{font-size:var(--header-title-size);font-weight:var(--header-title-weight);letter-spacing:.04em;flex:1;min-width:0}.wild-lobby-body{max-width:400px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.wild-profile-card{background:radial-gradient(130% 110% at 15% 0%,color-mix(in srgb,var(--accent-soft) 70%,transparent),transparent 58%),color-mix(in srgb,var(--btn-bg) 84%,transparent);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding);display:flex;flex-direction:column;gap:10px;box-shadow:var(--card-shadow)}.wild-online-indicator{font-size:.78rem;color:var(--text-secondary, #888);text-align:right;margin-bottom:-4px;line-height:1}.wild-online-indicator:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#27ae60;margin-right:4px;vertical-align:middle;animation:online-breathe 2s ease-in-out infinite}@keyframes online-breathe{0%,to{opacity:.6}50%{opacity:1}}.wild-profile-level{display:flex;align-items:baseline;gap:10px}.wild-level-badge{font-size:1.3rem;font-weight:700;color:var(--accent-strong);font-variant-numeric:tabular-nums}.wild-level-title{font-size:.85rem;color:var(--text-sub)}.wild-exp-bar-wrap{height:6px;background:color-mix(in srgb,var(--cell-border) 40%,transparent);border-radius:3px;overflow:hidden}.wild-exp-fill{height:100%;background:var(--accent-strong);border-radius:3px;transition:width .4s ease;width:0%}.wild-exp-fill--full{animation:expNearFull 1.8s ease-in-out infinite}@keyframes expNearFull{0%,to{opacity:1}50%{opacity:.75;filter:brightness(1.2)}}.wild-exp-text{font-size:.75rem;color:var(--text-sub);text-align:right;font-variant-numeric:tabular-nums}.wild-profile-stats{display:flex;justify-content:space-around;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--cell-border) 30%,transparent)}.wild-stat{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1;border-right:1px solid color-mix(in srgb,var(--cell-border) 30%,transparent)}.wild-stat:last-child{border-right:none}.wild-stat-num{font-size:1.3rem;font-weight:600;font-variant-numeric:tabular-nums}.wild-stat-label{font-size:.72rem;color:var(--text-sub);letter-spacing:.02em}.wild-session-card{border:1px solid var(--card-border);border-radius:var(--card-radius);background:color-mix(in srgb,var(--btn-bg) 85%,transparent);padding:var(--card-padding);display:flex;flex-direction:column;gap:10px}.wild-session-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.wild-session-title{font-size:.76rem;color:var(--text-light);letter-spacing:.08em;text-transform:uppercase}.wild-session-round{font-size:.78rem;font-weight:700;color:var(--accent-strong)}.wild-session-bar-wrap{width:100%;height:8px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--cell-border) 60%,transparent)}.wild-session-bar-fill{height:100%;width:0%;background:linear-gradient(90deg,color-mix(in srgb,var(--accent-strong) 88%,#fff 12%),color-mix(in srgb,var(--accent-strong) 60%,#fff 40%));border-radius:999px;transition:width .6s cubic-bezier(.2,.8,.2,1)}.wild-session-dots{display:flex;gap:4px;justify-content:center;align-items:center;margin-top:4px}.wild-session-dot{width:10px;height:10px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--cell-border) 60%,transparent);background:transparent;transition:background .3s ease,border-color .3s ease;flex-shrink:0}.wild-session-dot.completed{background:var(--accent-strong);border-color:var(--accent-strong)}.wild-session-dot.current{border-color:var(--accent-strong);background:color-mix(in srgb,var(--accent-strong) 30%,transparent);animation:dotPulse 1.2s ease-in-out infinite}.wild-session-dot.boss{width:12px;height:12px;border-color:#d63031}.wild-session-dot.boss.completed{background:#d63031;border-color:#d63031}.wild-session-dot.boss.current{border-color:#d63031;background:color-mix(in srgb,#d63031 30%,transparent);animation:dotPulse .9s ease-in-out infinite}@keyframes dotPulse{0%,to{transform:scale(1)}50%{transform:scale(1.25)}}.wild-session-meta,.wild-session-tech{font-size:.72rem;color:var(--text-sub);line-height:1.35}.wild-intro-btn{align-self:flex-start;margin-top:4px;border:1px solid color-mix(in srgb,var(--accent-strong) 28%,transparent);background:color-mix(in srgb,var(--accent-strong) 9%,transparent);color:var(--accent-strong);font-size:var(--btn-tertiary-font);border-radius:var(--btn-tertiary-radius);padding:var(--btn-tertiary-padding);cursor:pointer;font-weight:600;transition:transform var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.wild-intro-btn:active{transform:scale(.95)}.wild-enter-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:14px 20px;margin:8px 0;border:1px solid var(--accent-strong);background:radial-gradient(120% 150% at 50% 0%,color-mix(in srgb,var(--accent-strong) 20%,transparent),transparent 62%),color-mix(in srgb,var(--accent-strong) 9%,transparent);border-radius:var(--radius-md);cursor:pointer;transition:transform var(--duration-fast) ease,background .2s ease,box-shadow .2s ease;box-shadow:var(--shadow-accent);-webkit-tap-highlight-color:transparent;position:relative;overflow:hidden}.wild-enter-btn:active{transform:scale(.95)}.wild-enter-btn:after{content:"";position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);animation:btnShimmer 6s ease-in-out infinite;pointer-events:none;border-radius:var(--radius-md)}@keyframes btnShimmer{0%{left:-100%}15%{left:150%}to{left:150%}}.wild-enter-btn.is-loading{opacity:.78;cursor:wait}.wild-enter-btn.is-loading .wild-enter-text:after{content:" …";animation:wild-loading-dots 1s steps(3,end) infinite}@keyframes wild-loading-dots{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}.wild-enter-chip{font-size:.64rem;color:var(--accent-strong);border:1px solid color-mix(in srgb,var(--accent-strong) 30%,transparent);background:color-mix(in srgb,var(--accent-strong) 12%,transparent);border-radius:999px;padding:2px 8px;letter-spacing:.04em}.wild-enter-text{font-size:var(--btn-primary-font);font-weight:600;color:var(--accent-strong)}.wild-enter-sub{font-size:.72rem;color:var(--text-sub);text-align:center}.wild-bestiary-section{display:flex;flex-direction:column;gap:10px}.wild-bestiary-title{font-size:.85rem;font-weight:600;display:flex;justify-content:space-between;align-items:baseline}.wild-bestiary-title span{font-weight:400;font-size:.75rem;color:var(--text-sub)}.wild-bestiary-controls,.wild-rarity-controls{display:flex;gap:6px;flex-wrap:wrap}.wild-filter-btn,.wild-rarity-btn{border:1px solid var(--card-border);background:color-mix(in srgb,var(--btn-bg) 92%,transparent);color:var(--text-light);border-radius:var(--radius-full);padding:var(--btn-tertiary-padding);min-height:32px;font-size:var(--btn-tertiary-font);font-weight:600;cursor:pointer;transition:transform var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.wild-filter-btn:active,.wild-rarity-btn:active{transform:scale(.95)}.wild-filter-btn.active{border-color:color-mix(in srgb,var(--accent-strong) 44%,var(--cell-border));color:var(--accent-strong);background:color-mix(in srgb,var(--accent-soft) 80%,transparent)}.wild-rarity-btn.active{background:color-mix(in srgb,var(--accent-soft) 80%,transparent)}.wild-rarity-btn[data-rarity=all].active{border-color:color-mix(in srgb,var(--accent-strong) 44%,var(--cell-border));color:var(--accent-strong)}.wild-rarity-btn[data-rarity=common].active{border-color:#dfe6e9;color:#b2bec3}.wild-rarity-btn[data-rarity=rare].active{border-color:#e2b93b;color:#e2b93b}.wild-rarity-btn[data-rarity=legendary].active{border-color:#a29bfe;color:#a29bfe}.wild-rarity-btn[data-rarity=mythic].active{border-color:#d63031;color:#d63031}.wild-bestiary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px}.wild-beast-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--cell-border) 40%,transparent);background:color-mix(in srgb,var(--btn-bg) 40%,transparent);transition:border-color .2s,transform .2s}.wild-beast-card-enter{opacity:0;animation:wild-beast-enter .34s var(--ease-zen) forwards}@keyframes wild-beast-enter{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.wild-beast-card:hover{transform:translateY(-1px)}.wild-beast-card.undiscovered{opacity:.35;animation:beast-float 3s ease-in-out infinite}.wild-beast-card.undiscovered:nth-child(2n){animation-delay:.5s}.wild-beast-card.undiscovered:nth-child(3n){animation-delay:1s}.wild-beast-card.undiscovered:nth-child(5n){animation-delay:1.5s}@keyframes beast-float{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.wild-beast-card.rarity-mythic:not(.undiscovered){animation:mythic-pulse 6s ease-in-out infinite}@keyframes mythic-pulse{0%,to{box-shadow:0 0 #d6303100}50%{box-shadow:0 0 16px #d6303166}}.wild-beast-card.rarity-common{border-top:3px solid #dfe6e9;padding-top:10px}.wild-beast-card.rarity-rare{border-top:3px solid #e2b93b;padding-top:10px}.wild-beast-card.rarity-legendary{border-top:3px solid #a29bfe;padding-top:10px}.wild-beast-card.rarity-mythic{border-top:3px solid #d63031;padding-top:10px}.wild-beast-card.undiscovered{position:relative}.wild-beast-card.undiscovered:before{content:"";position:absolute;top:calc(50% - 11px);left:50%;transform:translate(-50%);width:10px;height:7px;border:1.5px solid color-mix(in srgb,var(--text-light) 40%,transparent);border-bottom:none;border-radius:5px 5px 0 0;pointer-events:none}.wild-beast-card.undiscovered:after{content:"";position:absolute;top:calc(50% - 4px);left:50%;transform:translate(-50%);width:14px;height:11px;background:color-mix(in srgb,var(--text-light) 35%,transparent);border-radius:2px;pointer-events:none}.wild-beast-name{font-size:.8rem;font-weight:600;text-align:center}.wild-beast-sub{font-size:.65rem;color:var(--text-sub);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.wild-beast-kills{font-size:.65rem;color:var(--text-sub);font-variant-numeric:tabular-nums;text-align:center}.wild-beast-modes{display:flex;gap:3px;justify-content:center;margin-top:2px}.mode-badge{font-size:.55rem;width:16px;height:16px;border-radius:3px;display:flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--cell-border) 40%,transparent);color:color-mix(in srgb,var(--text-light) 40%,transparent);background:transparent}.mode-badge.cleared{border-color:var(--accent-strong);color:var(--accent-strong);background:color-mix(in srgb,var(--accent-strong) 10%,transparent);font-weight:600}.wild-beast-frag{font-size:.65rem;color:var(--text-sub);font-variant-numeric:tabular-nums}.wild-beast-study-btn{font-size:.65rem;padding:2px 10px;border:1px solid var(--accent-strong);background:color-mix(in srgb,var(--accent-strong) 15%,transparent);color:var(--accent-strong);border-radius:999px;cursor:pointer;font-weight:600}.wild-beast-study-btn:active{transform:scale(.95)}.wild-beast-studied{font-size:.65rem;color:#00b894;font-weight:600}.wild-bestiary-empty{grid-column:1 / -1;border:1px dashed color-mix(in srgb,var(--cell-border) 65%,transparent);border-radius:10px;padding:14px 10px;text-align:center;color:var(--text-light);font-size:.76rem}.wild-bestiary-phase{grid-column:1 / -1;font-size:.75rem;font-weight:600;color:var(--text-sub);text-align:center;padding:8px 0 4px;letter-spacing:.05em}.wild-bestiary-locked{grid-column:1 / -1;text-align:center;padding:12px 0;font-size:.78rem;color:var(--text-sub);border-top:1px solid color-mix(in srgb,var(--cell-border) 28%,transparent);margin-top:4px;letter-spacing:.02em}.wild-bestiary-hint{grid-column:1 / -1;text-align:center;padding:6px 0;font-size:.7rem;color:var(--text-sub);font-style:italic}.wild-bestiary-footer{grid-column:1 / -1;text-align:center;padding:10px 0 4px;font-size:.72rem;color:var(--text-sub);border-top:1px solid color-mix(in srgb,var(--cell-border) 30%,transparent);margin-top:6px;font-variant-numeric:tabular-nums}.beast-note-popup{position:fixed;inset:0;background:#000000bf;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:250;padding:32px;cursor:pointer;animation:mentor-fade-in .4s ease}@media(prefers-reduced-motion:reduce){.wild-beast-card-enter,.wild-beast-card.undiscovered,.wild-beast-card.rarity-mythic:not(.undiscovered){animation:none!important}}.beast-note-title{color:var(--text-sub);font-size:.85rem;font-weight:600;margin-bottom:12px;letter-spacing:.08em}.beast-note-body{color:var(--text-main);font-size:.85rem;line-height:1.8;text-align:center;max-width:320px;white-space:pre-line}.beast-note-attr{margin-top:16px;color:var(--text-sub);font-size:.7rem;font-style:italic}.wild-autocast-row{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:color-mix(in srgb,var(--btn-bg) 60%,transparent);border:1px solid color-mix(in srgb,var(--cell-border) 50%,transparent);border-radius:10px}.wild-autocast-label{display:flex;flex-direction:column;gap:2px;cursor:pointer}.wild-autocast-text{font-size:.85rem;font-weight:500}.wild-autocast-hint{font-size:.68rem;color:var(--text-sub);max-width:220px}.wild-toggle-btn{position:relative;width:44px;height:24px;border-radius:12px;border:none;background:color-mix(in srgb,var(--cell-border) 60%,transparent);cursor:pointer;transition:background .2s;flex-shrink:0;padding:0}.wild-toggle-btn.active{background:var(--accent-strong)}.wild-toggle-knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #00000026}.wild-toggle-btn.active .wild-toggle-knob{transform:translate(20px)}.wild-abandon-btn{width:100%;padding:10px 16px;border:1px solid var(--error-color);background:color-mix(in srgb,var(--error-color) 8%,transparent);color:var(--error-color);border-radius:var(--radius-md);font-size:.78rem;font-weight:600;cursor:pointer;transition:transform var(--duration-fast) ease,background .2s ease;-webkit-tap-highlight-color:transparent;margin-top:6px}.wild-abandon-btn:active{transform:scale(.97)}.wild-abandon-btn:hover{background:color-mix(in srgb,var(--error-color) 14%,transparent)}.cell.skill-quickcast-flash{animation:quickcast-flash .25s ease-out;z-index:5}@keyframes quickcast-flash{0%{box-shadow:0 0 #74b9ffcc;transform:scale(1)}50%{box-shadow:0 0 12px 4px #74b9ff99;transform:scale(1.06)}to{box-shadow:0 0 0 0 transparent;transform:scale(1)}}#stats-modal{position:fixed;inset:0;background:var(--modal-overlay);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur);display:none;align-items:center;justify-content:center;z-index:200;padding:20px}[data-theme=dark] #stats-modal{background:#000000a6}.stats-panel{width:min(92vw,400px);max-height:min(85vh,720px);background:var(--grid-bg);border:1px solid var(--cell-border);border-radius:16px;padding:20px 16px;display:flex;flex-direction:column;gap:14px;overflow-y:auto;box-shadow:var(--shadow-lg)}[data-theme=dark] .stats-panel{background:#22252af2;border-color:#5aa9ff40;box-shadow:0 12px 48px #0006,0 0 15px #5aa9ff0d}.stats-loading{display:flex;align-items:center;justify-content:center;min-height:160px}.stats-loading-spinner{width:32px;height:32px;border:3px solid var(--block-border, #e0e0e0);border-top-color:var(--color-primary, #4a9eff);border-radius:50%;animation:statsSpinnerRotate .7s linear infinite}@keyframes statsSpinnerRotate{to{transform:rotate(360deg)}}.stats-panel::-webkit-scrollbar{width:4px}.stats-panel::-webkit-scrollbar-thumb{background:var(--block-border);border-radius:10px}.stats-panel h2{font-weight:300;letter-spacing:3px;margin:0;text-align:center;font-size:1.1rem}.stats-tabs{display:flex;gap:0;background:var(--bg-color);border-radius:10px;padding:3px;border:1px solid var(--cell-border)}.stats-tab-btn{flex:1;padding:8px 0;border:none;background:none;color:var(--text-light);font-size:.8rem;cursor:pointer;border-radius:8px;transition:all .2s;font-family:Outfit,sans-serif}.stats-tab-btn.active{background:var(--accent-strong);color:#fff;box-shadow:var(--shadow-accent)}.stats-section{border:1px solid var(--cell-border);border-radius:12px;padding:12px;background:var(--btn-bg)}.stats-section-title{font-size:.78rem;color:var(--text-light);margin-bottom:8px;letter-spacing:.6px;font-weight:600}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.learning-grid{grid-template-columns:repeat(2,1fr)}.learning-list,.learning-ranking{display:grid;gap:8px}.learning-ranking-item{display:grid;gap:8px;padding:10px 12px;border:1px solid var(--cell-border);border-radius:10px;background:var(--bg-color)}.learning-ranking-head{display:flex;align-items:flex-start;gap:8px}.learning-ranking-rank{flex:none;min-width:2rem;padding:3px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-size:.72rem;font-weight:700;text-align:center}.learning-ranking-body{min-width:0;flex:1}.learning-ranking-bar{height:7px;background:color-mix(in srgb,var(--cell-border) 60%,transparent);border-radius:999px;overflow:hidden}.learning-ranking-bar-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent-strong),color-mix(in srgb,var(--accent-strong) 55%,var(--accent-soft)))}.learning-ranking-meta{font-size:.72rem;color:var(--text-light)}.learning-open-module-btn{justify-self:end;padding:6px 10px;border-radius:8px;border:1px solid color-mix(in srgb,var(--accent-strong) 40%,var(--cell-border));background:color-mix(in srgb,var(--accent-soft) 45%,transparent);color:var(--accent-strong);font-size:.75rem;font-weight:600;cursor:pointer}.learning-item{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--cell-border);border-radius:10px;background:var(--bg-color)}.learning-item-empty{color:var(--text-light);font-size:.85rem}.learning-item-title{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.9rem;font-weight:600;color:var(--text-color)}.learning-item-sub{color:var(--text-light);font-size:.76rem;line-height:1.35}.learning-item-tag{flex:none;padding:2px 8px;border-radius:999px;background:#ffffff0f;color:var(--text-light);font-size:.68rem;letter-spacing:.04em;text-transform:uppercase}.learning-risk-list{display:grid;gap:8px}.learning-risk-item{display:grid;gap:5px;padding:10px 12px;border-radius:10px;border:1px solid var(--cell-border);background:var(--bg-color);border-left-width:3px;border-left-style:solid}.learning-risk-item.severity-low{border-left-color:var(--accent-strong)}.learning-risk-item.severity-medium{border-left-color:var(--partial-color)}.learning-risk-item.severity-high{border-left-color:var(--error-color)}.learning-risk-title{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.9rem;font-weight:600}.learning-risk-detail,.learning-risk-action{font-size:.76rem;line-height:1.35;color:var(--text-light)}.stat-item{text-align:center;padding:8px 4px;border-radius:8px;background:var(--bg-color)}.stat-value{font-size:1.15rem;font-weight:600;color:var(--accent-strong)}.stat-label{font-size:.68rem;color:var(--text-light);margin-top:2px}.tier-progress{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:.78rem}.tier-name{min-width:42px;color:var(--text-light);font-size:.72rem}.tier-bar{flex:1;height:8px;background:var(--bg-color);border-radius:4px;overflow:hidden}.tier-bar-fill{height:100%;background:var(--accent-strong);border-radius:4px;transition:width .6s ease}.tier-count{min-width:42px;text-align:right;color:var(--text-light);font-size:.7rem}.achievement-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.achievement-card{display:flex;flex-direction:column;align-items:center;padding:10px 4px 8px;border-radius:10px;background:var(--bg-color);border:1px solid var(--cell-border);text-align:center;transition:all .3s}.achievement-card.locked{opacity:.3;filter:grayscale(1)}.achievement-card.unlocked{border-color:var(--accent-strong);background:var(--accent-soft)}.achievement-icon{font-size:1.5rem;margin-bottom:4px}.achievement-name{font-size:.68rem;font-weight:600;line-height:1.2}.achievement-desc{font-size:.58rem;color:var(--text-light);line-height:1.2;margin-top:2px}.achievement-date{font-size:.55rem;color:var(--accent-strong);margin-top:3px}.achievement-counter{text-align:center;font-size:.78rem;color:var(--text-light);margin-top:4px}.achievement-counter span{color:var(--accent-strong);font-weight:600}.achievement-toast{position:fixed;top:calc(20px + env(safe-area-inset-top));left:50%;transform:translate(-50%) translateY(-80px);background:var(--grid-bg);border:1px solid var(--accent-strong);border-radius:14px;padding:12px 18px;display:flex;align-items:center;gap:10px;z-index:500;box-shadow:var(--shadow-lg);opacity:0;transition:transform .4s ease,opacity .4s ease;pointer-events:none}.achievement-toast.show{opacity:1;transform:translate(-50%) translateY(0)}.achievement-toast-icon{font-size:1.8rem}.achievement-toast-text{display:flex;flex-direction:column}.achievement-toast-label{font-size:.65rem;color:var(--text-light);letter-spacing:1px}.achievement-toast-name{font-size:.9rem;font-weight:600;color:var(--accent-strong)}@keyframes duoPulse{0%,to{box-shadow:0 0 8px var(--accent-light);border-color:var(--accent-strong)}50%{box-shadow:0 0 20px var(--accent-light);border-color:var(--accent-strong)}}@keyframes duoBadgeBounce{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.level-item.duo-glow{animation:duoPulse 1.6s var(--ease-zen) infinite;position:relative;border:2px solid var(--accent-strong);z-index:2}.level-item.duo-glow:after{content:"⚔️ 對戰";position:absolute;top:-8px;right:-4px;font-size:.6rem;line-height:1;background:var(--accent-strong);color:#fff;padding:2px 6px;border-radius:var(--radius-full);font-weight:600;animation:duoBadgeBounce 1.6s var(--ease-zen) infinite;white-space:nowrap}.stage-node.duo-waiting{animation:duoPulse 1.6s var(--ease-zen) infinite;border:2px solid var(--accent-strong)}.stage-node.duo-waiting .stage-name:after{content:" ⚔️ 對戰邀請";font-size:.72rem;font-weight:600;color:var(--accent-strong)}.level-item.level-item--current{border:2px solid var(--accent-strong);animation:currentLevelPulse 2s ease-in-out infinite;position:relative;z-index:2}@keyframes currentLevelPulse{0%,to{border-color:var(--accent-strong);box-shadow:0 0 #e8439300}50%{border-color:var(--accent-strong);box-shadow:0 0 8px 2px #e8439340}}.level-current-badge{position:absolute;top:-7px;right:-4px;font-size:.55rem;line-height:1;background:var(--accent-strong);color:#fff;padding:2px 6px;border-radius:var(--radius-full, 999px);font-weight:600;white-space:nowrap;z-index:3}.resume-banner{width:100%;min-height:44px;display:flex;align-items:center;justify-content:center;background:var(--accent-strong);color:#fff;font-size:.92rem;font-weight:600;cursor:pointer;padding:10px 16px;text-align:center;animation:resumeBannerFadeIn .35s ease-out;transition:background .2s;position:sticky;top:0;z-index:10}.resume-banner:active{background:color-mix(in srgb,var(--accent-strong) 80%,#000)}.resume-banner.hidden{display:none}@keyframes resumeBannerFadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.duo-ready-zone{width:100%;padding:14px;border:1px solid var(--duo-border);border-radius:12px;background:var(--duo-surface);margin-bottom:10px;text-align:center}.duo-zone-title{font-size:.8rem;color:var(--text-light);margin-bottom:10px;letter-spacing:.5px}.duo-player-slots{display:flex;gap:12px;justify-content:center;align-items:center;margin-bottom:12px}.duo-player-slot{flex:1;max-width:160px;padding:16px 12px;border-radius:var(--radius-md);border:1px solid var(--card-border);background:var(--grid-bg);transition:border-color .3s ease,background .3s ease,box-shadow .3s ease;position:relative;overflow:hidden}.duo-player-slot.ready{border-color:var(--duo-ready);background:var(--accent-soft);animation:slotShimmer 2s ease-in-out infinite}@keyframes slotShimmer{0%,to{box-shadow:inset 0 0 0 0 transparent}50%{box-shadow:inset 0 0 20px 0 var(--duo-glow)}}.duo-player-slot.empty{opacity:.35;border-style:dashed}.duo-slot-totem{width:44px;height:44px;border-radius:50%;margin:0 auto 8px;background:conic-gradient(from 0deg,color-mix(in srgb,var(--duo-accent) 30%,transparent),color-mix(in srgb,var(--duo-accent) 10%,transparent),color-mix(in srgb,var(--duo-accent) 30%,transparent));border:2px solid color-mix(in srgb,var(--duo-accent) 25%,transparent);display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700;color:var(--duo-accent)}.duo-player-slot.empty .duo-slot-totem{background:color-mix(in srgb,var(--text-light) 10%,transparent);border-color:var(--card-border);color:var(--text-light)}.duo-slot-alias{font-size:.88rem;font-weight:600;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.duo-slot-status{font-size:.68rem;color:var(--text-light);margin-top:4px}.duo-slot-status.is-ready{color:var(--duo-ready);font-weight:600}.duo-countdown-overlay{position:fixed;inset:0;background:#0000;z-index:500;display:flex;align-items:center;justify-content:center;animation:countdownOverlayIn .4s ease forwards;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px)}@keyframes countdownOverlayIn{to{background:#00000059;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}}.duo-countdown-display{font-size:4rem;font-weight:800;color:var(--accent-strong);letter-spacing:4px;opacity:0;transform:scale(1.5);animation:countdownPop .8s ease forwards;text-shadow:0 0 30px var(--duo-glow)}.duo-countdown-display.go{color:var(--duo-win);text-shadow:0 0 40px rgba(255,215,0,.4)}@keyframes countdownPop{0%{opacity:0;transform:scale(2)}40%{opacity:1;transform:scale(.9)}70%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes countdownFlash{0%{opacity:1}to{opacity:0;transform:scaleX(3)}}.duo-countdown-flash{position:absolute;width:100%;height:2px;background:linear-gradient(90deg,transparent,var(--duo-win),transparent);animation:countdownFlash .5s ease-out forwards}.duo-ready-btn{margin-top:8px;padding:12px 36px;background:color-mix(in srgb,var(--duo-accent) 10%,transparent);border:1.5px solid color-mix(in srgb,var(--duo-accent) 50%,transparent);color:var(--duo-accent);cursor:pointer;border-radius:var(--btn-primary-radius);width:200px;font-family:Outfit,sans-serif;font-size:.95rem;font-weight:600;transition:all .25s var(--ease-zen);-webkit-tap-highlight-color:transparent;letter-spacing:.5px}.duo-ready-btn:hover{background:color-mix(in srgb,var(--duo-accent) 15%,transparent);box-shadow:0 0 16px var(--duo-glow)}.duo-ready-btn.is-ready{background:var(--duo-ready);border-color:var(--duo-ready);color:#fff;box-shadow:0 4px 16px var(--duo-glow);animation:readyPulse 1.5s ease-in-out infinite}@keyframes readyPulse{0%,to{box-shadow:0 4px 16px var(--duo-glow)}50%{box-shadow:0 4px 24px var(--duo-glow),0 0 0 4px color-mix(in srgb,var(--duo-accent) 15%,transparent)}}.duo-ready-btn:active{transform:scale(.95)}.duo-lobby-card{display:flex;flex-direction:column;gap:10px;padding:var(--card-padding);background:var(--duo-surface);border-color:var(--duo-border)}.duo-pill-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}.duo-tier-pill,.duo-mode-pill{padding:var(--btn-tertiary-padding);border-radius:var(--radius-full);border:1px solid var(--card-border);background:var(--surface-1);color:var(--text-main);font-size:var(--btn-tertiary-font);font-weight:600;cursor:pointer;transition:transform var(--duration-fast) ease,border-color .2s ease,color .2s ease;-webkit-tap-highlight-color:transparent}.duo-mode-beta{display:inline-block;margin-left:5px;padding:1px 5px;border-radius:4px;background:var(--duo-accent);color:#fff;font-size:9px;font-weight:700;letter-spacing:.04em;vertical-align:middle;line-height:1.6;opacity:.85}.duo-mode-pill.active .duo-mode-beta{background:#ffffff4d}.duo-tier-pill:active,.duo-mode-pill:active{transform:scale(.95)}.duo-tier-pill.active,.duo-mode-pill.active{background:var(--duo-accent);border-color:var(--duo-accent);color:#fff;font-weight:600}.duo-tier-pill:hover:not(.active),.duo-mode-pill:hover:not(.active){border-color:var(--duo-accent);color:var(--duo-accent)}.duo-mode-rules{font-size:.78rem;color:var(--text-light);padding:6px 0;line-height:1.4}.duo-mode-rules .duo-rule-desc{font-weight:500;color:var(--text-main);margin-bottom:2px}.duo-stats-card{display:flex;flex-direction:column;gap:4px}.duo-stats-header{display:flex;align-items:center;gap:14px;margin-bottom:8px}.duo-winrate-ring{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;color:var(--duo-accent);flex-shrink:0}.duo-stats-summary{display:flex;gap:12px;font-size:.82rem}.duo-stats-summary span{font-weight:600;color:var(--text-main)}.duo-stats-row{display:flex;justify-content:space-between;font-size:.82rem;color:var(--text-light);padding:2px 0}.duo-stats-row span:last-child{font-weight:600;color:var(--text-main)}.duo-result-tier-mode{text-align:center;font-size:.78rem;color:var(--text-light);margin:4px 0}.duo-unlock-toast{text-align:center;padding:8px 12px;margin-top:8px;background:var(--accent-strong);color:#fff;border-radius:10px;font-size:.82rem;font-weight:600;animation:duoBadgeBounce .6s ease}.duo-lobby-create{width:100%;background:linear-gradient(135deg,var(--duo-accent),color-mix(in srgb,var(--duo-accent) 80%,#6c5ce7))!important;border-color:transparent!important;color:#fff!important}.duo-lobby-create .wild-enter-text,.duo-lobby-create .wild-enter-sub{color:#fff!important}.duo-lobby-create:active{transform:scale(.97)}.duo-lobby-join{width:100%}.duo-room-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:12px 14px 12px 18px;border-left:3px solid var(--duo-accent);position:relative;border-radius:var(--radius-md);border:1px solid var(--card-border);background:var(--surface-1);cursor:pointer;text-align:left;transition:border-color .2s ease,background .15s ease,transform var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.duo-room-item:active{transform:scale(.97)}.duo-room-item:hover{border-color:var(--duo-accent);background:color-mix(in srgb,var(--duo-accent) 6%,var(--surface-1))}.duo-room-host{font-size:.92rem;font-weight:600;color:var(--text-main)}.duo-room-meta{font-size:.75rem;color:var(--text-light)}.duo-room-join-hint{font-size:.72rem;font-weight:600;color:var(--duo-accent);margin-top:2px}.duo-room-empty{font-size:.82rem;color:var(--text-light);text-align:center;padding:12px 0}#duo-room-list{display:flex;flex-direction:column;gap:8px;width:100%}.duo-game-connection{width:100%;min-height:24px;display:flex;align-items:center;justify-content:center;gap:7px;margin-bottom:3px;padding:5px 10px;border:1px solid color-mix(in srgb,var(--duo-conn-warn) 58%,transparent);border-radius:999px;background:color-mix(in srgb,var(--duo-conn-warn) 18%,var(--grid-bg));color:var(--text-main);font-size:.68rem;line-height:1.2;text-align:center;animation:duoConnectionEnter .18s ease-out}.duo-game-connection:before{content:"";width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--duo-conn-warn);animation:trailingPulse 1.2s ease-in-out infinite}.duo-game-connection.failed{border-color:color-mix(in srgb,var(--error-color) 42%,transparent);background:color-mix(in srgb,var(--error-color) 10%,var(--grid-bg))}.duo-game-connection.failed:before{background:var(--error-color);animation:none}.duo-game-connection[hidden],.duo-game-connection.connected{display:none}@keyframes duoConnectionEnter{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.duo-progress-container{display:none;flex:1 1 auto;flex-direction:column;gap:3px;width:auto;min-width:0;padding:0 4px;margin-bottom:6px}.duo-progress-row{display:flex;align-items:center;gap:8px;font-size:.7rem}.duo-progress-label{min-width:52px;text-align:right;color:var(--text-light);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.duo-progress-bar-wrap{flex:1;height:8px;background:color-mix(in srgb,var(--cell-border) 30%,transparent);border-radius:4px;overflow:hidden;position:relative}.duo-progress-fill{height:100%;border-radius:4px;transition:width .5s ease-out;width:0%}.duo-progress-fill.opp{background:var(--duo-accent);transition:width 1s linear}.duo-progress-fill.self{background:var(--success-color)}.duo-progress-fill.trailing{animation:trailingPulse 1.2s ease-in-out infinite}.duo-finish-moment{--finish-accent: var(--success-color);position:fixed;top:max(72px,calc(env(safe-area-inset-top) + 54px));left:50%;z-index:220;display:flex;align-items:center;gap:11px;width:min(calc(100vw - 32px),390px);padding:12px 16px;border:1px solid color-mix(in srgb,var(--finish-accent) 52%,transparent);border-radius:16px;color:var(--text-main);background:linear-gradient(120deg,color-mix(in srgb,var(--finish-accent) 13%,transparent),transparent 58%),color-mix(in srgb,var(--grid-bg) 94%,transparent);box-shadow:0 14px 38px #0000002e,0 0 26px color-mix(in srgb,var(--finish-accent) 18%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);pointer-events:none;opacity:0;transform:translate(-50%,-16px) scale(.96);transition:opacity .18s ease-out,transform .24s var(--ease-zen)}.duo-finish-moment.visible{opacity:1;transform:translate(-50%) scale(1);animation:duoFinishMomentPulse .72s ease-out}.duo-finish-moment.opponent{--finish-accent: var(--duo-lose)}.duo-finish-moment-icon{display:grid;flex:0 0 38px;width:38px;height:38px;place-items:center;border-radius:50%;color:#fff;background:var(--finish-accent);box-shadow:0 0 22px color-mix(in srgb,var(--finish-accent) 46%,transparent);font-size:1.15rem;font-weight:800}.duo-finish-moment-copy{display:flex;min-width:0;flex-direction:column;gap:2px;text-align:left}.duo-finish-moment-title{overflow:hidden;font-size:.94rem;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap}.duo-finish-moment-detail{color:var(--text-light);font-size:.74rem}@keyframes duoFinishMomentPulse{0%{box-shadow:0 10px 22px #0000001f}40%{box-shadow:0 14px 38px #0000002e,0 0 42px color-mix(in srgb,var(--finish-accent) 34%,transparent)}to{box-shadow:0 14px 38px #0000002e,0 0 26px color-mix(in srgb,var(--finish-accent) 18%,transparent)}}@keyframes trailingPulse{0%,to{opacity:1}50%{opacity:.65}}.duo-progress-row.threat-strong{animation:duoThreatFlashStrong .6s ease-out}.duo-progress-row.threat-soft{animation:duoThreatFlashSoft .5s ease-out}@keyframes duoThreatFlashStrong{0%{background:transparent}25%{background:color-mix(in srgb,var(--error-color) 32%,transparent)}to{background:transparent}}@keyframes duoThreatFlashSoft{0%{background:transparent}30%{background:color-mix(in srgb,var(--duo-conn-warn) 28%,transparent)}to{background:transparent}}.duo-progress-pct{min-width:30px;text-align:left;font-variant-numeric:tabular-nums;color:var(--text-sub);font-size:.68rem}.duo-conn-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--success-color);transition:background .3s ease}.duo-conn-dot.uncertain{background:var(--duo-conn-warn);animation:trailingPulse 1.2s ease-in-out infinite}.duo-conn-dot.offline{background:var(--error-color)}.duo-resume-overlay{position:fixed;inset:0;z-index:310;display:grid;place-items:center;padding:24px;background:color-mix(in srgb,var(--bg-color) 88%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.duo-resume-card{width:min(88vw,330px);display:grid;justify-items:center;gap:10px;padding:28px 24px;border:1px solid var(--card-border);border-radius:24px;background:var(--grid-bg);box-shadow:var(--card-shadow);color:var(--text-main);text-align:center}.duo-resume-card strong{font-size:1.05rem}.duo-resume-card>span:last-child{color:var(--text-secondary);font-size:.78rem}.duo-resume-spinner{width:26px;height:26px;border:3px solid color-mix(in srgb,var(--duo-accent) 22%,transparent);border-top-color:var(--duo-accent);border-radius:50%;animation:duoResumeSpin .8s linear infinite}.duo-resume-overlay.connected .duo-resume-spinner,.duo-resume-overlay.ended .duo-resume-spinner{border:0;animation:none}.duo-resume-overlay.connected .duo-resume-spinner:before{content:"✓";color:var(--success-color);font-size:1.45rem;line-height:26px}.duo-resume-overlay.ended .duo-resume-spinner:before{content:"•";color:var(--text-secondary);font-size:1.6rem;line-height:20px}@keyframes duoResumeSpin{to{transform:rotate(360deg)}}#duo-result-modal{position:fixed;inset:0;background:var(--modal-overlay);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur);display:none;align-items:center;justify-content:center;z-index:250;padding:20px}.duo-result-panel{position:relative;isolation:isolate;width:min(92vw,360px);background:var(--grid-bg);border:1px solid var(--duo-border);border-radius:16px;padding:28px 20px;text-align:center;box-shadow:var(--shadow-lg);animation:resultPanelIn .28s var(--ease-zen);overflow:visible}.duo-result-panel.rematch-pending{transform:scale(.99)}.duo-result-panel.rematch-pending .back-btn{opacity:.42;pointer-events:none}.duo-rematch-btn{width:min(100%,230px);display:inline-flex;align-items:center;justify-content:center;gap:8px}.duo-rematch-btn:disabled{cursor:wait;opacity:.78}.duo-rematch-spinner{width:15px;height:15px;flex:0 0 auto;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:duoResumeSpin .7s linear infinite}.duo-result-panel.victory{border-color:color-mix(in srgb,var(--duo-win) 40%,transparent);box-shadow:var(--shadow-lg),0 0 54px #ffd70033}.duo-result-panel.outcome-dominant-win{border-color:#ffd700b8;box-shadow:var(--shadow-lg),0 0 74px #ffb8004a}.duo-result-panel.outcome-close-win{border-color:color-mix(in srgb,var(--duo-draw) 62%,transparent)}.duo-result-panel.defeat{border-color:var(--duo-lose)}.duo-result-panel.outcome-close-loss{border-color:color-mix(in srgb,var(--duo-draw) 50%,transparent)}.duo-result-panel.outcome-close-loss .duo-result-aura{background:radial-gradient(circle,rgba(116,185,255,.2),transparent 68%)}.duo-result-panel.outcome-dominant-loss{border-color:color-mix(in srgb,var(--duo-lose) 68%,transparent)}.duo-result-panel.abandoned{border-color:color-mix(in srgb,var(--text-light) 42%,transparent)}@keyframes resultPanelIn{0%{opacity:0;transform:scale(.85) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}[data-theme=dark] .duo-result-panel{background:#22252af5}.duo-result-panel h2{font-weight:700;letter-spacing:4px;margin:0 0 20px;font-size:clamp(1.35rem,6vw,1.72rem);text-transform:uppercase;overflow-wrap:anywhere}.duo-result-eyebrow{margin-bottom:7px;color:var(--text-light);font-size:.68rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase}.duo-result-outcome-icon{position:relative;z-index:2;margin-bottom:3px;font-size:2.3rem;line-height:1;filter:drop-shadow(0 5px 12px rgba(0,0,0,.16));animation:duoOutcomeIconIn .62s cubic-bezier(.2,1.35,.35,1)}.duo-result-aura{position:absolute;z-index:0;top:-54px;left:50%;width:190px;height:190px;border-radius:50%;background:radial-gradient(circle,#ffd7003d,#ffd70000 68%);transform:translate(-50%);pointer-events:none;animation:duoResultAura 1.25s ease-out both}.duo-result-panel.defeat .duo-result-aura{background:radial-gradient(circle,color-mix(in srgb,var(--duo-lose) 22%,transparent),transparent 68%)}.duo-result-panel.outcome-dominant-win .duo-result-aura{width:230px;height:230px;top:-72px;background:radial-gradient(circle,rgba(255,215,0,.38),rgba(255,159,67,.08) 48%,transparent 70%)}.duo-result-panel.outcome-close-win .duo-result-aura{background:radial-gradient(circle,rgba(116,185,255,.28),rgba(255,215,0,.08) 48%,transparent 70%)}@keyframes duoOutcomeIconIn{0%{opacity:0;transform:translateY(8px) scale(.42) rotate(-8deg)}62%{opacity:1;transform:translateY(-3px) scale(1.13) rotate(3deg)}to{transform:translateY(0) scale(1) rotate(0)}}@keyframes duoResultAura{0%{opacity:0;transform:translate(-50%) scale(.45)}to{opacity:1;transform:translate(-50%) scale(1)}}.duo-result-panel h2.victory-title{color:var(--duo-win);text-shadow:0 0 20px rgba(255,215,0,.3)}.duo-result-panel h2.defeat-title{color:var(--duo-lose)}.duo-result-panel.outcome-close-loss h2.defeat-title{color:var(--duo-draw)}.duo-result-panel.outcome-dominant-loss h2.defeat-title{color:color-mix(in srgb,var(--duo-lose) 88%,#7f8c8d)}.duo-result-panel h2.draw-title{color:var(--duo-draw)}.duo-result-panel h2.abandoned-title{color:var(--text-light)}.duo-result-panel.outcome-dominant-win .duo-result-outcome-icon{font-size:2.65rem;filter:drop-shadow(0 6px 13px rgba(0,0,0,.16)) drop-shadow(0 0 17px rgba(255,215,0,.46))}.duo-result-cards{display:flex;gap:12px;justify-content:center;margin-bottom:18px}.duo-result-card{flex:1;max-width:150px;padding:14px 8px;border-radius:var(--card-radius);border:1px solid var(--card-border);background:var(--btn-bg)}.duo-result-card.winner{border-color:color-mix(in srgb,var(--duo-win) 50%,transparent);background:color-mix(in srgb,var(--duo-win) 11%,var(--btn-bg));box-shadow:0 0 28px #ffd7002e;transform:translateY(-3px)}.duo-result-crown{font-size:1.45rem;margin-bottom:4px}.duo-result-alias{font-size:.85rem;font-weight:600;margin-bottom:4px}.duo-result-time{font-size:1.1rem;font-weight:600;color:var(--accent-strong)}.duo-result-time.forfeit{font-size:.95rem;color:var(--text-muted);font-weight:500}.duo-result-stars{font-size:.85rem;color:var(--star-color);margin-top:2px}.duo-result-panel .confetti-layer{z-index:3;inset:-120px -34px -80px}.duo-result-panel .confetti{top:4px;border-radius:2px;opacity:0;filter:none;animation-name:duoConfettiBurst;animation-timing-function:cubic-bezier(.18,.72,.32,1);animation-fill-mode:forwards}.duo-result-panel>:not(.duo-result-aura):not(.confetti-layer){position:relative;z-index:1}@keyframes duoConfettiBurst{0%{opacity:0;transform:translate3d(0,18px,0) rotate(0) scale(.3)}12%{opacity:.95}to{opacity:0;transform:translate3d(var(--confetti-drift, 0),430px,0) rotate(var(--confetti-spin, 420deg)) scale(.82)}}.duo-result-diff{font-size:.82rem;color:var(--text-light);margin-top:14px;margin-bottom:4px;font-weight:500}.duo-result-diff.faster{color:var(--success-color)}.duo-result-diff.slower{color:var(--error-color)}.duo-result-record{font-size:.72rem;color:var(--text-light);margin-top:8px;padding-top:10px;border-top:1px solid var(--cell-border)}.duo-result-record span{font-weight:600;color:var(--accent-strong)}@media(prefers-reduced-motion:reduce){.duo-finish-moment,.duo-finish-moment.visible,.duo-result-panel,.duo-result-outcome-icon,.duo-result-aura{animation:none!important;transition-duration:.01ms!important}.duo-result-panel .confetti-layer{display:none}}.duo-streak-badge{display:inline-block;font-size:.75rem;padding:3px 10px;border-radius:999px;background:#e843931a;border:1px solid rgba(232,67,147,.3);color:var(--duo-accent);margin-bottom:8px}.duo-emoji-bar{display:none;justify-content:center;gap:6px;margin-top:4px;padding-bottom:2px}.duo-emoji-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--cell-border);background:var(--btn-bg);font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:transform .15s ease-out}.duo-emoji-btn:active{transform:scale(1.3);transition:transform .1s ease-out}.duo-emoji-btn.sent{animation:emojiSentRing .4s ease-out}@keyframes emojiSentRing{0%{box-shadow:0 0 0 0 var(--duo-accent)}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--duo-accent) 40%,transparent)}to{box-shadow:0 0 0 0 transparent}}@keyframes emojiFloat{0%{opacity:1;transform:translate(-50%) scale(1)}60%{opacity:1}to{opacity:0;transform:translate(-50%,-120px) scale(1.4)}}.duo-emoji-float{position:fixed;font-size:2.2rem;pointer-events:none;z-index:600;animation:emojiFloat 1.4s ease-out forwards}.duo-emoji-bubble{position:fixed;top:60px;left:50%;transform:translate(-50%);z-index:600;background:var(--grid-bg);border:1px solid var(--duo-border);border-radius:var(--radius-md);padding:6px 14px;font-size:.82rem;display:flex;align-items:center;gap:6px;box-shadow:var(--shadow-md);animation:bubbleIn .3s var(--ease-zen),bubbleOut .3s ease 1.7s forwards;pointer-events:none}.duo-emoji-bubble-emoji{font-size:1.4rem}.duo-emoji-bubble-name{font-weight:600;color:var(--duo-accent);font-size:.72rem}@keyframes bubbleIn{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes bubbleOut{0%{opacity:1}to{opacity:0;transform:translate(-50%) translateY(-8px)}}.duo-forfeit-btn{flex:0 0 auto;padding:5px 10px;background:transparent;border:1px solid rgba(255,100,100,.4);color:#ff6464b3;border-radius:999px;font-size:.78rem;cursor:pointer}.duo-result-label{font-size:.85rem;font-weight:700;letter-spacing:.1em;margin-bottom:4px}.duo-result-label.win{color:gold}.duo-result-label.lose{color:#b2bec3}#teach-modal{display:none;position:fixed;inset:0;z-index:950;background:var(--modal-overlay);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur);justify-content:center;align-items:center}#teach-modal.show{display:flex}.teach-panel{background:var(--grid-bg);border-radius:16px;padding:20px 18px 16px;max-width:370px;width:92vw;max-height:88vh;overflow-y:auto;box-shadow:0 8px 40px #0000004d;display:flex;flex-direction:column;gap:10px}.teach-title{font-size:1.3rem;font-weight:700;color:var(--text-main);text-align:center;margin:0}.teach-header{display:flex;flex-direction:column;align-items:center;gap:4px}.teach-subtitle{font-size:.85rem;color:var(--text-light);text-align:center;margin:0;font-style:italic}.teach-source-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 10px;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent-strong) 28%,transparent);background:color-mix(in srgb,var(--accent-strong) 12%,transparent);color:var(--accent-strong);font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.teach-explanation{font-size:.82rem;color:var(--text-main);line-height:1.55;max-height:130px;overflow-y:auto;padding:8px 0}.teach-explanation p{margin:0 0 6px}.teach-level-note{display:inline-block;margin-bottom:8px!important;padding:2px 10px;border-radius:999px;font-size:.72rem;color:var(--accent-strong);background:color-mix(in srgb,var(--accent-strong) 14%,transparent);border:1px solid color-mix(in srgb,var(--accent-strong) 28%,transparent)}.teach-board{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);gap:0;width:100%;max-width:306px;aspect-ratio:1;margin:4px auto;border:2px solid var(--block-border);background:var(--cell-border);position:relative}.teach-cell{background:var(--grid-bg);display:flex;align-items:center;justify-content:center;font-size:clamp(10px,3.2vw,16px);font-weight:600;color:var(--text-main);position:relative;border:1px solid color-mix(in srgb,var(--cell-border) 55%,transparent);transition:background .3s}.teach-cell.masked{opacity:var(--teach-mask-opacity);filter:grayscale(1)}.teach-cell:nth-child(9n+3),.teach-cell:nth-child(9n+6){border-right:2px solid var(--block-border)}.teach-cell:nth-child(n+19):nth-child(-n+27),.teach-cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--block-border)}.teach-cell.focus{box-shadow:var(--teach-focus-ring);z-index:1}.teach-cell.eliminate{animation:teach-elim-cell calc(.5s * var(--teach-anim-speed)) ease-out both}.teach-cell .tc-notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;position:absolute;inset:0}.teach-cell .tc-note{font-size:clamp(5px,1.5vw,8px);display:flex;align-items:center;justify-content:center;color:var(--note-color);line-height:1}.teach-cell .tc-note.highlight{color:var(--teach-highlight);font-weight:700;font-size:clamp(6px,1.8vw,9px)}.teach-cell .tc-note.strike{color:var(--teach-elim-color);opacity:var(--teach-elim-opacity);animation:teach-elim-digit calc(.65s * var(--teach-anim-speed)) ease-out both}.teach-cell .tc-note.warn-missing{box-shadow:inset 0 0 0 1px var(--teach-warn-ring);border-radius:2px;background:var(--teach-elim-bg)}.teach-step-text{font-size:.82rem;color:var(--text-main);line-height:1.5;min-height:48px;padding:6px 2px}.teach-nav{display:flex;align-items:center;justify-content:center;gap:14px}.teach-nav button{background:var(--btn-bg);border:1px solid var(--cell-border);color:var(--text-main);padding:6px 14px;border-radius:8px;cursor:pointer;font-size:.8rem}.teach-nav button:disabled{opacity:.35;cursor:default}.teach-nav button:active:not(:disabled){transform:scale(.95)}#teach-step-indicator{font-size:.78rem;color:var(--text-light);min-width:32px;text-align:center}.teach-done-btn{display:block;margin:4px auto 0;background:var(--accent-strong);color:#fff;border:none;padding:10px 32px;border-radius:10px;font-size:.9rem;font-weight:600;cursor:pointer;transition:transform .15s}.teach-done-btn:active{transform:scale(.95)}.teach-book-btn{background:none;border:none;cursor:pointer;font-size:1.1rem;padding:4px 6px;flex-shrink:0;opacity:.7;transition:opacity .2s}.teach-book-btn:hover{opacity:1}.library-entry-btn{font-size:1.15rem;opacity:.86;background:var(--btn-bg);border:1px solid var(--cell-border);border-radius:999px;cursor:pointer;width:38px;height:38px;padding:0;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:opacity .2s ease,transform .2s ease}.library-entry-btn:hover{opacity:1}.library-entry-btn:active{transform:scale(.92)}body.library-open{overflow:hidden}#library-overlay{display:none;position:fixed;inset:0;z-index:910;background:var(--modal-overlay);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur)}#library-overlay.show{display:block}.library-page{width:min(94vw,780px);height:min(92vh,880px);margin:3.6vh auto 0;background:var(--grid-bg);border:1px solid var(--cell-border);border-radius:16px;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-xl)}.library-header{padding:14px 16px 10px;border-bottom:1px solid var(--cell-border);display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px 12px}.library-back-btn{background:var(--btn-bg);border:1px solid var(--cell-border);color:var(--text-main);border-radius:8px;padding:6px 12px;font-size:.8rem;cursor:pointer}.library-back-btn:active{transform:scale(.97)}.library-title{margin:0;font-size:1.05rem;letter-spacing:.6px}.library-subtitle{grid-column:1 / -1;color:var(--text-light);font-size:.75rem}.library-list{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.library-group{border:1px solid color-mix(in srgb,var(--cell-border) 86%,transparent);border-radius:12px;padding:10px;background:color-mix(in srgb,var(--grid-bg) 93%,var(--btn-bg))}.library-group-head{margin-bottom:8px}.library-group-title{margin:0;font-size:.88rem;letter-spacing:.3px}.library-group-hint{margin:4px 0 0;color:var(--text-light);font-size:.72rem;line-height:1.35}.library-group-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.library-card{border:1px solid var(--cell-border);border-radius:12px;padding:10px;background:var(--btn-bg);display:flex;flex-direction:column;gap:6px;cursor:pointer;transition:transform .15s ease,border-color .2s ease,box-shadow .2s ease}.library-card:hover{border-color:color-mix(in srgb,var(--accent-strong) 35%,var(--cell-border));box-shadow:0 6px 14px #00000014}.library-card:active{transform:translateY(1px) scale(.995)}.library-card:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.library-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.library-star{font-size:.74rem;color:var(--text-light)}.library-badges{display:flex;gap:6px}.library-badge{font-size:.66rem;padding:2px 6px;border-radius:999px;border:1px solid transparent}.library-badge.read{color:var(--success-color);background:color-mix(in srgb,var(--success-color) 12%,transparent);border-color:color-mix(in srgb,var(--success-color) 35%,transparent)}.library-badge.practice{color:var(--partial-color);background:color-mix(in srgb,var(--partial-color) 14%,transparent);border-color:color-mix(in srgb,var(--partial-color) 35%,transparent)}.library-card-title{margin:0;font-size:.98rem}.library-card-subtitle{margin:0;font-size:.78rem;color:var(--text-light);line-height:1.35}.library-card-key{font-size:.7rem;color:var(--text-light);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;opacity:.9}.library-open-btn{margin-top:4px;background:var(--accent-strong);color:#fff;border:none;border-radius:9px;padding:8px 10px;font-size:.8rem;cursor:pointer}.library-open-btn:active{transform:scale(.98)}.library-empty{grid-column:1 / -1;text-align:center;color:var(--text-light);font-size:.9rem;padding:22px 10px}@media(max-width:720px){.library-page{width:100vw;height:100vh;margin:0;border-radius:0;border-left:none;border-right:none}.library-group-cards{grid-template-columns:1fr}}#practice-modal{display:none;position:fixed;inset:0;z-index:960;background:var(--modal-overlay);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur);justify-content:center;align-items:center}#practice-modal.show{display:flex}.practice-panel{background:var(--grid-bg);border-radius:16px;padding:20px 18px 16px;max-width:370px;width:92vw;max-height:90vh;overflow-y:auto;box-shadow:0 8px 40px #0000004d;display:flex;flex-direction:column;gap:10px}.practice-header{text-align:center}.practice-tech-name{display:block;font-size:1.15rem;font-weight:700;color:var(--text-main)}.practice-instruction{display:block;font-size:.8rem;color:var(--text-light);margin-top:2px}.practice-board{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);gap:0;width:100%;max-width:324px;aspect-ratio:1;margin:4px auto;border:2px solid var(--block-border);background:var(--cell-border);position:relative}.practice-cell{background:var(--grid-bg);display:flex;align-items:center;justify-content:center;font-size:clamp(10px,3.2vw,16px);font-weight:600;color:var(--text-main);position:relative;border:1px solid color-mix(in srgb,var(--cell-border) 55%,transparent);transition:background .3s}.practice-cell.given-cell{color:var(--text-light)}.practice-cell:nth-child(9n+3),.practice-cell:nth-child(9n+6){border-right:2px solid var(--block-border)}.practice-cell:nth-child(n+19):nth-child(-n+27),.practice-cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--block-border)}.practice-cell.focus{box-shadow:var(--teach-focus-ring);z-index:1}.practice-cell.fill-selected{background:#3498db1f}.practice-cell.fill-correct{background:#27ae6029}.practice-cell.fill-wrong{background:#e67e2229}.practice-cell .tc-notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;position:absolute;inset:0}.practice-cell .tc-note{font-size:clamp(6px,1.8vw,9px);display:flex;align-items:center;justify-content:center;color:var(--note-color);line-height:1;min-width:24px;min-height:24px;cursor:pointer;border-radius:3px;transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.practice-cell .tc-note:empty{cursor:default}.practice-cell .tc-note:not(:empty):hover{background:var(--accent-soft)}.practice-cell .tc-note.strike{color:var(--teach-elim-color);font-weight:700;background:var(--teach-elim-bg);animation:teach-elim-digit calc(.65s * var(--teach-anim-speed)) ease-out both}.practice-cell .tc-note.wrong{background:#ffa50040;color:#e67e00;text-decoration:line-through;font-weight:700}.practice-cell .tc-note.correct-reveal{color:var(--teach-elim-color);font-weight:700;background:var(--teach-elim-bg);animation:teach-elim-digit calc(.65s * var(--teach-anim-speed)) ease-out both}.practice-cell .tc-note.fill-pick{color:#2980b9;font-weight:700;background:#3498db2e}.practice-cell .tc-note.fill-correct-reveal{color:var(--success-color);font-weight:700;background:#27ae6033}.practice-status{display:flex;align-items:center;justify-content:center;gap:16px;font-size:.82rem;color:var(--text-light)}.practice-status button{background:none;border:1px solid var(--cell-border);color:var(--text-main);padding:4px 12px;border-radius:8px;cursor:pointer;font-size:.8rem}.practice-actions{display:flex;gap:10px;justify-content:center}.practice-confirm-btn{background:var(--btn-primary-bg);color:var(--btn-primary-color);border:none;padding:var(--btn-primary-padding);border-radius:var(--btn-primary-radius);font-size:var(--btn-primary-font);font-weight:600;cursor:pointer;transition:transform var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.practice-confirm-btn:active{transform:scale(.95)}.practice-reveal-btn{background:var(--btn-bg);border:1px solid var(--card-border);color:var(--text-main);padding:var(--btn-secondary-padding);border-radius:var(--btn-secondary-radius);font-size:var(--btn-secondary-font);font-weight:600;cursor:pointer;transition:transform var(--duration-fast) ease;-webkit-tap-highlight-color:transparent}.practice-reveal-btn:active{transform:scale(.95)}.practice-result{text-align:center;font-size:.9rem;font-weight:600;min-height:28px;line-height:1.5;white-space:pre-line}.practice-result.success{color:var(--success-color)}.practice-result.partial{color:var(--partial-color)}.practice-result.error{color:var(--error-color)}@keyframes practiceSuccess{0%{transform:scale(1)}50%{transform:scale(1.03);box-shadow:0 0 20px #27ae604d}to{transform:scale(1)}}.practice-panel.success-flash{animation:practiceSuccess .6s ease}.cell-cooldown-mask{position:absolute;inset:0;background:var(--accent-strong);opacity:.12;z-index:3;pointer-events:none;transform-origin:bottom center;animation:cooldownShrink linear forwards}@keyframes cooldownShrink{0%{transform:scaleY(1);opacity:.12}85%{opacity:.08}to{transform:scaleY(0);opacity:0}}.demo-board-wrapper{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;transition:filter .6s var(--ease-zen)}.demo-camera-frame{position:relative;width:100%;max-width:306px;overflow:hidden;border-radius:10px}.demo-camera-frame .teach-board{transition:transform .46s var(--ease-zen),filter .42s var(--ease-zen);will-change:transform}.demo-board-wrapper.camera-zoom-in .demo-camera-frame .teach-board{transform:scale(1.18);filter:saturate(1.06)}.demo-story-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:8}.demo-source-ring{fill:none;stroke:var(--accent-strong);stroke-width:1.1;opacity:.92;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--accent-strong) 36%,transparent));animation:demoSourceRing .68s ease-out both}@keyframes demoSourceRing{0%{opacity:0;transform:scale(.72);transform-origin:center}45%{opacity:1;transform:scale(1.06)}to{opacity:.92;transform:scale(1)}}.demo-story-arrow path{fill:none;stroke:color-mix(in srgb,var(--accent-strong) 72%,#ffffff 8%);stroke-width:.78;stroke-linecap:round;stroke-dasharray:22;stroke-dashoffset:22;animation:demoArrowDraw .44s ease-out forwards}.demo-story-arrow circle{fill:var(--teach-elim-color);opacity:0;animation:demoArrowTarget .28s .32s ease-out forwards}@keyframes demoArrowDraw{to{stroke-dashoffset:0}}@keyframes demoArrowTarget{0%{opacity:0;transform:scale(.7);transform-origin:center}75%{opacity:.9;transform:scale(1.12)}to{opacity:.85;transform:scale(1)}}.tc-note.demo-source-digit{color:var(--accent-strong);font-weight:700}.demo-board-wrapper.demo-afterglow .teach-board{animation:demoAfterPulse .6s var(--ease-zen) both}@keyframes demoAfterPulse{0%{box-shadow:0 0 0 0 transparent}40%{box-shadow:0 0 16px var(--accent-light)}to{box-shadow:0 0 0 0 transparent}}.teach-cell.demo-target-glow{animation:demoTargetGlow .8s var(--ease-zen) infinite alternate}@keyframes demoTargetGlow{0%{box-shadow:inset 0 0 0 0 transparent}to{box-shadow:inset 0 0 6px var(--accent-light)}}.demo-cross-overlay{position:absolute;inset:0;pointer-events:none;z-index:6;overflow:visible}.demo-cross-line{stroke:var(--accent-strong);stroke-width:1.2;stroke-linecap:round;opacity:0;stroke-dasharray:200;stroke-dashoffset:200;fill:none;animation:demoCrossDraw .6s ease-out forwards,demoCrossFade .4s 1.4s ease-in forwards}.demo-cross-line-2{animation-delay:.15s,1.4s}@keyframes demoCrossDraw{0%{opacity:.7;stroke-dashoffset:200}to{opacity:.7;stroke-dashoffset:0}}@keyframes demoCrossFade{0%{opacity:.7}to{opacity:0}}.tc-note.cross-mark{position:relative;color:#d63031;text-decoration:none;animation:demoCrossMarkFadeOut .3s .6s ease-in forwards}.tc-note.cross-mark:after{content:"✕";position:absolute;inset:-2px;display:flex;align-items:center;justify-content:center;color:#d63031;font-size:1.1em;font-weight:800;line-height:1;animation:demoCrossMarkPop .3s ease-out both,demoCrossMarkFadeOut .3s .6s ease-in forwards}@keyframes demoCrossMarkPop{0%{opacity:0;transform:scale(.3)}50%{transform:scale(1.15)}to{opacity:.9;transform:scale(1)}}@keyframes demoCrossMarkFadeOut{0%{opacity:.9}to{opacity:0}}.teach-cell.demo-warn{box-shadow:inset 0 0 0 1.5px #d63031;animation:demoWarnFade .3s .6s ease-in forwards}@keyframes demoWarnFade{0%{box-shadow:inset 0 0 0 1.5px #d63031}to{box-shadow:inset 0 0 0 0 transparent}}.teach-cell.demo-dimmed{opacity:.3;transition:opacity .4s var(--ease-zen)}.teach-cell.demo-unit-highlight{background:color-mix(in srgb,var(--accent-light) 18%,transparent);transition:background .4s var(--ease-zen)}.teach-cell.demo-ripple-hit{animation:demoRippleHitFlash .22s ease-out}@keyframes demoRippleHitFlash{0%{background:transparent}30%{background:color-mix(in srgb,#e74c3c 28%,transparent)}to{background:transparent}}.demo-ripple-overlay{position:absolute;inset:0;pointer-events:none;z-index:5;overflow:visible}.demo-ripple-ring{fill:none;stroke:var(--accent-strong);stroke-width:.8;opacity:0;animation:demoRippleExpand 1.8s ease-out forwards}.demo-ripple-ring-2{animation-delay:.25s;stroke:var(--accent-light)}@keyframes demoRippleExpand{0%{r:2;opacity:.55;stroke-width:1}40%{opacity:.3}to{r:90;opacity:0;stroke-width:.12}}.demo-technique-name{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:Outfit,sans-serif;font-size:1.8rem;font-weight:700;letter-spacing:8px;color:var(--accent-strong);pointer-events:none;z-index:10;text-shadow:0 2px 16px rgba(0,0,0,.1);animation:demoNameSlam .8s var(--ease-zen) both}@keyframes demoNameSlam{0%{opacity:0;transform:translate(-50%,-50%) scale(2);filter:blur(8px)}25%{opacity:1;transform:translate(-50%,-50%) scale(.92);filter:blur(0)}45%{opacity:1;transform:translate(-50%,-50%) scale(1.02)}65%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1);filter:blur(2px)}}.demo-elim-count{font-size:.95rem;font-weight:600;color:var(--accent-strong);letter-spacing:2px;animation:demoCountPop .5s var(--ease-zen) both}.demo-live-caption{width:min(100%,520px);min-height:26px;margin-top:2px;padding:6px 10px;border-radius:10px;font-size:.79rem;line-height:1.45;letter-spacing:.2px;color:color-mix(in srgb,var(--text-main) 90%,var(--accent-strong) 10%);background:color-mix(in srgb,var(--grid-bg) 86%,var(--btn-bg));border:1px solid color-mix(in srgb,var(--cell-border) 82%,transparent)}.demo-continue-btn{margin-top:2px;border:1px solid color-mix(in srgb,var(--accent-strong) 35%,var(--cell-border));background:color-mix(in srgb,var(--grid-bg) 84%,var(--accent-strong) 16%);color:var(--text-main);border-radius:999px;padding:7px 12px;font-size:.76rem;font-weight:600;letter-spacing:.2px;cursor:pointer}.demo-continue-btn:active{transform:scale(.98)}@keyframes demoCountPop{0%{opacity:0;transform:translateY(8px) scale(.8)}50%{opacity:1;transform:translateY(-3px) scale(1.05)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes teach-elim-digit{0%{opacity:1;transform:scale(1);text-decoration:none}30%{opacity:.85;transform:scale(1.04);text-decoration:line-through;color:var(--teach-elim-color)}55%{opacity:.5;transform:scale(.95);text-decoration:line-through}to{opacity:0;transform:scale(.7);text-decoration:line-through}}@keyframes teach-elim-cell{0%{background:transparent}to{background:var(--teach-elim-bg)}}.chain-overlay{pointer-events:none;overflow:visible}@keyframes chain-draw{to{stroke-dashoffset:0}}@keyframes chain-dot{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}.cell.blind-reveal-correct{animation:blind-correct .4s ease}.cell.blind-reveal-error{animation:blind-error .5s ease}@keyframes blind-correct{0%{box-shadow:0 0 #00c85399}50%{box-shadow:0 0 8px 2px #00c85366}to{box-shadow:none}}@keyframes blind-error{0%,to{transform:translate(0)}20%{transform:translate(-3px);box-shadow:0 0 8px 2px #ff323280}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.wild-title-display{font-size:.72rem;color:var(--accent-strong);font-style:italic;letter-spacing:.04em;margin-top:2px}.duo-slot-title{font-size:.68rem;color:var(--accent-strong);font-style:italic}.title-equip-btn{display:block;margin-top:6px;padding:3px 8px;font-size:.64rem;border:1px solid var(--accent-light);border-radius:4px;background:transparent;color:var(--accent-strong);cursor:pointer;transition:all .15s}.title-equip-btn:hover{background:var(--accent-soft)}.title-equip-btn.equipped{background:var(--accent-soft);border-color:var(--accent-strong);font-weight:600}.sl-panel{position:absolute;inset:0;z-index:5;border:1px solid color-mix(in srgb,var(--accent-strong) 30%,var(--cell-border));border-radius:12px;padding:12px 14px 10px;background:color-mix(in srgb,var(--btn-bg) 97%,var(--grid-bg));display:flex;flex-direction:column;gap:6px;animation:skill-panel-in .22s var(--ease-zen, ease-out)}.sl-panel-header{display:flex;justify-content:space-between;align-items:center}.sl-panel-title{font-size:.78rem;font-weight:700;letter-spacing:.07em;color:var(--accent-strong);text-transform:uppercase}.sl-close-btn{background:none;border:none;cursor:pointer;color:var(--text-secondary, #999);font-size:.9rem;padding:2px 6px;border-radius:6px;transition:background .15s}.sl-close-btn:hover{background:var(--accent-soft)}.sl-panel-body{flex:1;display:flex;flex-direction:column;gap:4px;min-height:0}.sl-instruction{font-size:.75rem;color:var(--text-secondary, #888);font-weight:500}.sl-feedback{font-size:.75rem;color:var(--text-primary, #333);min-height:1.3em;line-height:1.5;word-break:break-word}.sl-decoder{font-size:.68rem;color:var(--text-tertiary, var(--text-secondary, #aaa));border-top:1px solid color-mix(in srgb,var(--cell-border) 60%,transparent);padding-top:7px;line-height:1.45}.cell.sl-partner{background:color-mix(in srgb,#00e599 18%,transparent)!important;box-shadow:inset 0 0 0 2px #00e59973}.note-num.sl-digit-highlight{color:#00c97d!important;font-weight:700}[data-theme=dark] .cell.sl-partner{background:color-mix(in srgb,#00e599 14%,transparent)!important;box-shadow:inset 0 0 0 2px #00e5998c}[data-theme=dark] .note-num.sl-digit-highlight{color:#00e599!important}.chain-trace-panel{position:absolute;inset:0;z-index:5;border:1px solid color-mix(in srgb,#f59e0b 35%,var(--cell-border));border-radius:12px;padding:10px 14px 8px;background:color-mix(in srgb,var(--btn-bg) 97%,var(--grid-bg));display:flex;flex-direction:column;gap:5px;animation:skill-panel-in .22s var(--ease-zen, ease-out)}.chain-trace-body{flex:1;display:flex;flex-direction:column;gap:3px;min-height:0}.chain-trace-instruction{font-size:.72rem;color:var(--text-secondary, #888);font-weight:500;min-height:1.2em}.chain-trace-text{font-size:.7rem;overflow-x:auto;white-space:nowrap;min-height:1.4em;padding:2px 0;scrollbar-width:none}.chain-trace-text::-webkit-scrollbar{display:none}.ct-node{color:var(--text-primary, #333);font-weight:600;font-variant-numeric:tabular-nums}.ct-strong{color:var(--accent-strong);margin:0 2px;font-size:.65rem}.ct-weak{color:#a78bfa;margin:0 2px;font-size:.65rem}.chain-trace-stats{font-size:.68rem;color:var(--text-secondary, #999);min-height:1em}.chain-compare-text{font-size:.67rem;color:var(--accent-strong);min-height:.9em;font-style:italic;line-height:1.3}.chain-trace-actions{display:flex;gap:5px;margin-top:2px}.chain-action-btn{flex:1;font-size:.68rem;padding:5px 4px;border-radius:7px;border:1px solid var(--cell-border);background:var(--btn-bg);color:var(--text-secondary, #888);cursor:pointer;transition:background .15s,color .15s}.chain-action-btn:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-strong);border-color:var(--accent-strong)}.chain-action-btn:disabled{opacity:.4;cursor:default}.chain-verify-btn{background:color-mix(in srgb,#f59e0b 12%,var(--btn-bg));border-color:color-mix(in srgb,#f59e0b 40%,var(--cell-border));color:#b45309;font-weight:600}.chain-verify-btn:not(:disabled):hover{background:color-mix(in srgb,#f59e0b 22%,var(--btn-bg));color:#92400e;border-color:#f59e0b}[data-theme=dark] .chain-verify-btn{color:#fbbf24;border-color:color-mix(in srgb,#f59e0b 35%,var(--cell-border))}[data-theme=dark] .chain-verify-btn:not(:disabled):hover{color:#fde68a}.cell.chain-node{box-shadow:inset 0 0 0 2px #f59e0b99}.cell.chain-valid-strong{background:color-mix(in srgb,#00e599 12%,transparent)!important;box-shadow:inset 0 0 0 2px #00e59980}.cell.chain-valid-weak{background:color-mix(in srgb,#a78bfa 12%,transparent)!important;outline:2px dashed rgba(167,139,250,.55);outline-offset:-2px}.note-num.chain-node-digit{color:#f59e0b!important;font-weight:700}.note-num.chain-valid-digit{color:var(--accent-strong)!important;font-weight:600}[data-theme=dark] .note-num.chain-node-digit{color:#fbbf24!important}[data-theme=dark] .cell.chain-valid-weak{outline-color:#a78bfab3}.chain-reveal-row{margin-top:2px}.chain-reveal-btn{width:100%;font-size:.72rem;font-weight:600;padding:6px 8px;border-radius:7px;border:1px solid color-mix(in srgb,var(--error-color, #e53e3e) 40%,var(--cell-border));background:color-mix(in srgb,var(--error-color, #e53e3e) 8%,var(--btn-bg));color:var(--error-color, #c53030);cursor:pointer;transition:background .15s}.chain-reveal-btn:hover{background:color-mix(in srgb,var(--error-color, #e53e3e) 16%,var(--btn-bg))}[data-theme=dark] .chain-reveal-btn{color:#fc8181;border-color:color-mix(in srgb,#fc8181 35%,var(--cell-border))}.cell.chain-elim{box-shadow:inset 0 0 0 2px #e53e3ea6!important}.note-num.chain-elim-digit{color:var(--error-color, #e53e3e)!important;font-weight:700;text-decoration:line-through}.chain-map-panel{position:absolute;inset:0;z-index:5;background:var(--overlay-bg, rgba(255, 255, 255, .97));border-radius:var(--panel-radius, 14px);display:flex;flex-direction:column;padding:0 0 6px;gap:0;box-shadow:0 -4px 18px #00000014;animation:skill-panel-in .22s var(--ease-zen, ease-out)}[data-theme=dark] .chain-map-panel{background:#14141cf7}.chain-map-body{flex:1;display:flex;flex-direction:column;gap:8px;padding:8px 12px 4px;overflow:hidden}.chain-map-chips{display:grid;grid-template-columns:repeat(9,1fr);gap:4px}.chain-map-chip{font-size:.85rem;font-weight:600;padding:5px 0;border-radius:6px;border:1.5px solid var(--cell-border, #ddd);background:var(--cell-bg, #fff);color:var(--text-secondary, #888);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.chain-map-chip:hover{border-color:var(--accent-strong, #0984e3);color:var(--accent-strong, #0984e3)}.chain-map-chip.active{background:var(--accent-strong, #0984e3);color:#fff;border-color:var(--accent-strong, #0984e3)}.chain-map-type-row{display:flex;gap:8px}.chain-map-type-btn{flex:1;font-size:.8rem;font-weight:600;padding:5px 0;border-radius:8px;border:1.5px solid var(--cell-border, #ddd);background:var(--cell-bg, #fff);color:var(--text-secondary, #888);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.chain-map-type-btn.active{background:var(--accent-strong, #0984e3);color:#fff;border-color:var(--accent-strong, #0984e3)}.chain-map-stats{font-size:.72rem;color:var(--text-secondary, #888);text-align:center;min-height:1.1em}.zen-dialog-overlay{position:fixed;inset:0;background:var(--modal-overlay);backdrop-filter:var(--modal-blur);-webkit-backdrop-filter:var(--modal-blur);display:flex;align-items:center;justify-content:center;z-index:9000;padding:24px;animation:zen-dialog-in .2s var(--ease-zen) both}@keyframes zen-dialog-in{0%{opacity:0}to{opacity:1}}.zen-dialog-panel{background:var(--surface-1);border:1px solid var(--card-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);max-width:340px;width:100%;padding:28px 24px 24px;display:flex;flex-direction:column;gap:20px;animation:zen-dialog-panel-in .2s var(--ease-zen) both}@keyframes zen-dialog-panel-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.zen-dialog-message{color:var(--text-main);font-size:.9rem;line-height:1.8;text-align:center;letter-spacing:.03em;margin:0}.zen-dialog-actions{display:flex;gap:12px;justify-content:center}.zen-dialog-btn{flex:1;padding:9px 16px;border-radius:var(--radius-full);font-size:.82rem;letter-spacing:.12em;cursor:pointer;transition:border-color .2s var(--ease-zen),color .2s var(--ease-zen),background .2s var(--ease-zen)}.zen-dialog-btn--cancel{background:none;border:1px solid var(--card-border);color:var(--text-secondary)}.zen-dialog-btn--cancel:hover{border-color:var(--text-sub);color:var(--text-main)}.zen-dialog-btn--confirm{background:var(--accent-strong);border:1px solid transparent;color:var(--surface-1)}.zen-dialog-btn--confirm:hover{background:var(--accent)}#duo-spec-overlay{position:fixed;inset:0;z-index:500;background:var(--bg, #fff);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:env(safe-area-inset-top,12px) 16px env(safe-area-inset-bottom,12px)}.spec-header{display:flex;align-items:center;gap:12px;font-size:14px;opacity:.7}.spec-remaining{font-weight:700}#spec-remaining-count.pulse{color:var(--color-error, #e53);animation:specHeartbeat .6s ease-in-out infinite}@keyframes specHeartbeat{0%,to{transform:scale(1)}50%{transform:scale(1.25)}}.spec-grid{pointer-events:none;opacity:1}.spec-cell-new{animation:specCellFlash .4s ease-out}@keyframes specCellFlash{0%{background:rgba(var(--duo-accent-rgb, 74,158,255),.4)}to{background:transparent}}.spec-bombed{position:relative}.spec-bombed:after{content:"?";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--color-error, #e53);color:#fff;font-weight:900;font-size:1.2em;border-radius:4px;z-index:2}.spec-emoji-bar{display:flex;gap:12px;margin-top:8px}#duo-being-watched-badge{position:absolute;top:4px;right:4px;width:28px;height:28px;border-radius:50%;background:#0000001f;display:flex;align-items:center;justify-content:center;font-size:16px;z-index:10;pointer-events:none;animation:eyePulse 2s ease-in-out infinite}@keyframes eyePulse{0%,to{opacity:.6}50%{opacity:1}}.skill-line-aic-strong{stroke:#0984e3;stroke-width:2;opacity:0;animation:skillLineAppear .2s ease-out forwards}.skill-line-aic-weak{stroke:#a78bfa;stroke-width:1.5;stroke-dasharray:4 3;opacity:0;animation:skillLineAppear .2s ease-out forwards}.skill-line-preview{animation:none;opacity:.55}@keyframes skillLineAppear{0%{opacity:0}to{opacity:.8}}html.native-app{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}html.native-app input,html.native-app textarea{-webkit-user-select:text;-moz-user-select:text;user-select:text}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.z-10{z-index:10}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\!grid{display:grid!important}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.w-full{width:100%}.shrink{flex-shrink:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.justify-end{justify-content:flex-end}.gap-2{gap:.5rem}.overflow-hidden{overflow:hidden}.whitespace-pre-line{white-space:pre-line}.rounded{border-radius:.25rem}.rounded-card{border-radius:1.25rem}.border{border-width:1px}.bg-surface{background-color:var(--rz-surface)}.p-4{padding:1rem}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--rz-surface: rgba(255, 255, 255, .78);--rz-panel: rgba(255, 255, 255, .88);--rz-accent: #4a90e2;--rz-text: #1e293b;--rz-muted: #64748b;--rz-ring: rgba(74, 144, 226, .45)}html[data-theme=dark]{--rz-surface: rgba(20, 24, 32, .68);--rz-panel: rgba(22, 27, 36, .84);--rz-accent: #78b7ff;--rz-text: #edf2f7;--rz-muted: #9fb0c7;--rz-ring: rgba(120, 183, 255, .55)}.react-teach-overlay{position:fixed;inset:0;z-index:1500;pointer-events:none}.react-teach-overlay[data-open=true]{pointer-events:auto}.rz-focus-ring:focus-visible{outline:2px solid var(--rz-ring);outline-offset:2px}
