.shell{min-height:100%}.topbar{z-index:40;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(180%)blur(18px);backdrop-filter:saturate(180%)blur(18px);border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:10px 16px;display:none;position:sticky;top:0}.topbar-title{letter-spacing:-.015em;font-weight:600}.topbar-xp{color:var(--text-tertiary);margin-left:auto;font-size:.8rem;font-weight:600}.burger{background:0 0;border:none;flex-direction:column;justify-content:center;gap:4px;width:30px;height:30px;padding:0;display:flex}.burger span{background:var(--text);height:1.6px;transition:transform .25s var(--ease), opacity .25s var(--ease);border-radius:2px;display:block}.nav-open .burger span:first-child{transform:translateY(5.6px)rotate(45deg)}.nav-open .burger span:nth-child(2){opacity:0}.nav-open .burger span:nth-child(3){transform:translateY(-5.6px)rotate(-45deg)}.sidebar{width:var(--sidebar-w);border-right:1px solid var(--border);background:var(--bg-elevated);z-index:50;flex-direction:column;padding:26px 16px 18px;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.brand{color:inherit;align-items:center;gap:12px;margin-bottom:22px;padding:0 8px;display:flex}.brand:hover{text-decoration:none}.brand-mark{background:var(--text);width:36px;height:36px;color:var(--bg-elevated);letter-spacing:-.03em;border-radius:10px;flex-shrink:0;place-items:center;font-size:.95rem;font-weight:700;display:grid}.brand-text{flex-direction:column;line-height:1.25;display:flex}.brand-text strong{letter-spacing:-.02em;font-size:.97rem}.side-stats{border-radius:var(--radius);background:var(--bg-sunken);grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:18px;padding:12px 8px;display:grid}.side-stats>div{text-align:center;flex-direction:column;align-items:center;gap:1px;display:flex}.side-stat-value{letter-spacing:-.02em;font-size:1.15rem;font-weight:600}.side-stats .tiny{font-size:.66rem;line-height:1.2}.sidebar nav{flex-direction:column;flex:1;gap:1px;display:flex}.nav-section{text-transform:uppercase;letter-spacing:.09em;color:var(--text-tertiary);margin:18px 0 6px;padding:0 10px;font-size:.68rem;font-weight:600}.nav-item{border-radius:var(--radius-sm);color:var(--text-secondary);transition:background .15s var(--ease), color .15s var(--ease);align-items:center;gap:11px;padding:9px 10px;font-size:.9rem;display:flex}.nav-item:hover{background:var(--bg-hover);color:var(--text);text-decoration:none}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:500}.nav-icon{text-align:center;flex-shrink:0;width:20px;font-size:.9rem}.nav-item.module .step{background:var(--bg-sunken);width:20px;height:20px;color:var(--text-tertiary);border-radius:6px;flex-shrink:0;place-items:center;font-size:.7rem;font-weight:600;display:grid}.nav-item.module.active .step{background:var(--accent);color:var(--accent-text)}.nav-module-text{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.nav-module-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.nav-module-text .tiny{font-size:.68rem}.ring{flex-shrink:0;width:20px;height:20px;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:var(--border);stroke-width:2.5px}.ring-fg{fill:none;stroke:var(--accent);stroke-width:2.5px;stroke-linecap:round;transition:stroke-dasharray .5s var(--ease)}.side-foot{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.theme-switch{background:var(--bg-sunken);border-radius:999px;gap:2px;padding:2px;display:flex}.theme-switch button{color:var(--text-secondary);transition:background .2s var(--ease), color .2s var(--ease);background:0 0;border:none;border-radius:999px;flex:1;padding:5px 0;font-size:.75rem}.theme-switch button.active{background:var(--bg-elevated);color:var(--text);box-shadow:var(--shadow-sm)}.side-note{margin:10px 4px 0;line-height:1.4}.scrim{z-index:45;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000052;border:none;display:none;position:fixed;inset:0}.content{margin-left:var(--sidebar-w);max-width:1100px;padding:44px 48px 90px}.page-head{margin-bottom:34px}.page-head h1{margin-bottom:8px}.page-head .lead{color:var(--text-secondary);max-width:62ch;font-size:1.06rem}@media (width<=1000px){.content{padding:32px 26px 80px}}@media (width<=820px){.topbar{display:flex}.sidebar{transition:transform .3s var(--ease);box-shadow:var(--shadow-lg);transform:translate(-100%)}.nav-open .sidebar{transform:none}.nav-open .scrim{display:block}.content{margin-left:0;padding:24px 18px 70px}}.hero{margin-bottom:44px}.hero-kicker{text-transform:uppercase;letter-spacing:.12em;color:var(--text-tertiary);margin-bottom:10px;font-size:.78rem;font-weight:600}.hero h1{margin-bottom:12px;font-size:2.6rem}.lead{color:var(--text-secondary);max-width:64ch;font-size:1.08rem}.level-block{max-width:480px;margin:26px 0 22px}.level-line{justify-content:space-between;align-items:baseline;margin-bottom:7px;display:flex}.bar{background:var(--bg-sunken);border:1px solid var(--border);border-radius:999px;height:7px;overflow:hidden}.bar.small{min-width:90px;height:5px}.bar-fill{background:var(--accent);height:100%;transition:width .6s var(--ease);border-radius:999px}.btn.resume{margin-top:4px}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:48px;display:grid}.stat{flex-direction:column;gap:2px;padding:20px 22px;display:flex}.stat-value{letter-spacing:-.03em;font-size:1.9rem;font-weight:600;line-height:1.1}.stat-sub{color:var(--text-tertiary);font-size:1rem;font-weight:500}.stat-label{color:var(--text-secondary);font-size:.88rem}.section{margin-bottom:48px}.section-head{margin-bottom:18px}.section-head h2{margin-bottom:4px}.section-head p{margin:0;font-size:.94rem}.module-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.module-card{color:inherit;transition:transform .22s var(--ease), box-shadow .22s var(--ease), border-color .22s var(--ease);flex-direction:column;gap:7px;padding:20px 22px 22px;display:flex}.module-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);text-decoration:none;transform:translateY(-2px)}.module-card-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.module-step{text-transform:uppercase;letter-spacing:.09em;color:var(--text-tertiary);font-size:.7rem;font-weight:600}.module-icon{color:var(--accent);font-size:1.5rem;line-height:1;font-family:var(--font-mono);margin:4px 0 2px}.module-card h3{font-size:1.05rem}.module-tagline{flex:1;margin:0 0 8px;font-size:.87rem;line-height:1.45}.module-count{margin-top:7px}.history{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);margin:0 0 16px;padding:0;list-style:none;overflow:hidden}.history li+li{border-top:1px solid var(--border)}.history a{color:var(--text);align-items:center;gap:12px;padding:11px 16px;font-size:.92rem;display:flex}.history a:hover{background:var(--bg-hover);text-decoration:none}.history-kind{flex-shrink:0;justify-content:center;min-width:62px}.history-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.history-module,.history-time{flex-shrink:0}.history-module{text-align:right;min-width:120px}.history-time{text-align:right;min-width:96px}.history-xp{color:var(--success);text-align:right;min-width:38px;font-size:.82rem;font-weight:600}.note-card{padding:22px 26px}.note-card h3{margin-bottom:10px}.plain-list{color:var(--text-secondary);flex-direction:column;gap:9px;margin:0;padding:0;font-size:.94rem;line-height:1.55;list-style:none;display:flex}.plain-list li{padding-left:18px;position:relative}.plain-list li:before{content:"";background:var(--border-strong);border-radius:50%;width:5px;height:5px;position:absolute;top:.62em;left:2px}.command-list{color:var(--text-secondary);word-spacing:2px;font-size:.82rem;line-height:2}.module-head .chip{margin-bottom:12px}.module-intro{max-width:68ch;color:var(--text-secondary);margin-top:10px}.module-progress{flex-direction:column;gap:7px;max-width:420px;margin:22px 0 18px;display:flex}.module-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.chapters{flex-direction:column;gap:12px;display:flex}.chapter{transition:border-color .2s var(--ease);overflow:hidden}.chapter.open{border-color:var(--border-strong)}.chapter-head{width:100%;color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:14px;padding:17px 22px;display:flex}.chapter-head:hover{background:var(--bg-hover)}.chapter-title{letter-spacing:-.015em;flex:1;font-size:1.02rem;font-weight:500}.chapter-count{flex-shrink:0}.chevron{transition:transform .25s var(--ease);color:var(--text-tertiary);font-size:1.1rem;line-height:1}.chevron.up{transform:rotate(180deg)}.chapter-body{animation:fade-in .25s var(--ease) both;padding:0 26px 24px}.lesson{border-top:1px solid var(--border);margin-bottom:26px;padding-top:4px}.ex-list-title{text-transform:uppercase;letter-spacing:.09em;color:var(--text-tertiary);margin:0 0 10px;font-size:.75rem}.ex-list{border:1px solid var(--border);border-radius:var(--radius);margin:0;padding:0;list-style:none;overflow:hidden}.ex-list li+li{border-top:1px solid var(--border)}.ex-list a{color:var(--text);background:var(--bg);align-items:center;gap:12px;padding:11px 16px;font-size:.93rem;display:flex}.ex-list a:hover{background:var(--bg-hover);text-decoration:none}.ex-list a.done .ex-state{color:var(--success)}.ex-state{text-align:center;width:16px;color:var(--text-tertiary);flex-shrink:0;font-weight:700}.ex-list-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ex-list-kind{flex-shrink:0;justify-content:center;min-width:62px}.ex-list-xp{text-align:right;flex-shrink:0;min-width:46px}.module-next{border-top:1px solid var(--border);align-items:center;gap:14px;margin-top:36px;padding-top:22px;display:flex}.exercise-page{animation:fade-in .3s var(--ease) both}.breadcrumb{color:var(--text-tertiary);align-items:center;gap:9px;margin-bottom:18px;font-size:.88rem;display:flex}.breadcrumb-pos{margin-left:auto}.ex-nav{justify-content:space-between;gap:12px;margin-top:26px;display:flex}.ex-nav .btn{text-overflow:ellipsis;max-width:46%;overflow:hidden}.ex-nav a:hover{text-decoration:none}.calendar{padding:20px 22px}.calendar-grid{gap:4px;padding-bottom:4px;display:flex;overflow-x:auto}.calendar-week{flex-direction:column;gap:4px;display:flex}.calendar-day{background:var(--bg-sunken);border:1px solid var(--border);border-radius:3px;width:13px;height:13px;display:block}.calendar-day.active{background:var(--accent);border-color:var(--accent)}.calendar-legend{margin:12px 0 0}.table-card{overflow-x:auto}.progress-table{border-collapse:collapse;width:100%;font-size:.92rem}.progress-table th,.progress-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:12px 18px}.progress-table th{text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-size:.74rem;font-weight:600}.progress-table tbody tr:last-child td{border-bottom:none}.progress-table td:last-child{width:34%}.table-step{color:var(--text-tertiary)}.ranks{flex-wrap:wrap;gap:4px;padding:18px 22px;display:flex}.rank{color:var(--text-tertiary);border-radius:999px;align-items:center;gap:8px;padding:7px 14px 7px 10px;font-size:.85rem;display:flex}.rank.reached{color:var(--text)}.rank.current{background:var(--accent-soft);color:var(--accent)}.rank-dot{background:var(--border-strong);border-radius:50%;width:8px;height:8px}.rank.reached .rank-dot{background:var(--accent)}.rank-name{font-weight:500}.danger-zone{padding:22px 26px}.btn.danger{background:var(--danger);color:#fff}.btn.danger:hover:not(:disabled){filter:brightness(1.08)}@media (width<=760px){.hero h1{font-size:2rem}.history-module,.history-time,.ex-list-kind{display:none}.chapter-body{padding:0 16px 20px}.chapter-head{padding:15px 16px}.ex-nav{flex-direction:column}.ex-nav .btn{max-width:none}}.adaptive-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.adaptive-card{color:inherit;flex-direction:column;gap:4px;padding:18px 22px 20px;display:flex}a.adaptive-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);text-decoration:none}.adaptive-card.primary{border-color:var(--accent)}.adaptive-card strong{letter-spacing:-.015em;font-size:1.05rem}.adaptive-kicker{text-transform:uppercase;letter-spacing:.09em;color:var(--accent);margin-bottom:4px;font-size:.68rem;font-weight:600}.adaptive-why{margin:8px 0 0;font-size:.86rem;line-height:1.45}.review-list{flex-direction:column;gap:2px;margin:6px 0 0;padding:0;list-style:none;display:flex}.review-list a{border-radius:var(--radius-sm);color:var(--text);align-items:center;gap:10px;margin:0 -8px;padding:6px 8px;font-size:.9rem;display:flex}.review-list a:hover{background:var(--bg-hover);text-decoration:none}.review-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.depth-control{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);max-width:560px;margin:20px 0;padding:14px 18px 12px}.depth-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.depth-switch{background:var(--bg-sunken);border-radius:999px;gap:2px;padding:2px;display:flex}.depth-switch button{color:var(--text-secondary);transition:background .2s var(--ease), color .2s var(--ease);background:0 0;border:none;border-radius:999px;flex:1;padding:6px 4px;font-size:.8rem}.depth-switch button.active{background:var(--bg-elevated);color:var(--text);box-shadow:var(--shadow-sm);font-weight:500}.depth-note{margin:9px 2px 0;line-height:1.45}.provider-note{margin-top:10px}.chapters-title{margin:0 0 16px;font-size:1.25rem}.chapter-cards{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.chapter-card{padding:20px 24px 18px}.chapter-card-head{align-items:flex-start;gap:14px;margin-bottom:14px;display:flex}.chapter-num{background:var(--bg-sunken);width:28px;height:28px;color:var(--text-secondary);border-radius:9px;flex-shrink:0;place-items:center;font-size:.82rem;font-weight:600;display:grid}.chapter-card-title{flex:1;min-width:0}.chapter-card-title h3{margin-bottom:2px;font-size:1.06rem}.chapter-card-actions{margin-bottom:14px}.ex-list.compact a{padding:9px 14px;font-size:.9rem}.chapter-page .page-head{margin-bottom:20px}.chapter-page .page-head .chip{margin-bottom:12px}.lesson-sheet{margin-bottom:40px;padding:30px 38px 34px}.lesson-sheet .markdown>h2:first-child,.lesson-sheet .markdown>h3:first-child{margin-top:0}.lesson-sheet.inline{background:var(--bg-sunken);margin-bottom:22px;padding:22px 26px 24px}.depth-control.compact{margin:0 0 22px;padding:12px 16px 10px}.chapter-exercises{margin-bottom:34px}.lesson-recall{border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:9px 14px;display:flex}.lesson-recall-toggle{color:var(--text);text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:8px;padding:2px 0;font-size:.9rem;display:inline-flex}.lesson-recall-toggle:hover{color:var(--accent)}.hero-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}@media (width<=760px){.lesson-sheet{padding:22px 18px 24px}.chapter-card{padding:16px 16px 14px}}.game{--game-accent:#4ec97a;--game-glow:#4ec97a24}[data-theme=dark] .game{--game-accent:#4ec97a}.game-hero{margin-bottom:40px}.game-kicker{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;color:var(--game-accent);margin-bottom:10px;font-size:.72rem}.game-title{letter-spacing:-.04em;margin-bottom:10px;font-size:3rem}.game-tagline{color:var(--text-secondary);max-width:62ch;margin-bottom:26px;font-size:1.05rem}.game-meters{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px;max-width:720px;margin-bottom:24px;display:grid}.game-meter-head{color:var(--text-secondary);justify-content:space-between;align-items:baseline;margin-bottom:7px;font-size:.85rem;display:flex}.game-meter .tiny{margin-top:7px}.bar-fill.integrity{background:var(--game-accent)}.bar-fill.integrity.low{background:var(--warning)}.game-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.game-scroll{border-left:3px solid var(--game-accent);background:var(--bg-elevated);margin-bottom:22px;padding:26px 30px 24px}.game-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.16em;color:var(--text-tertiary);margin-bottom:12px;font-size:.68rem;display:inline-block}.game-label.success-label{color:var(--game-accent)}.game-scroll .markdown blockquote{border-left-color:var(--game-accent);background:var(--game-glow);font-family:var(--font-mono);font-size:.88rem}.solved-scroll{border-left-color:var(--game-accent);animation:fade-up .5s var(--ease) both}.game-inventory{margin-bottom:26px;padding:18px 24px 20px}.game-inventory ul{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.game-inventory li{border:1px solid var(--border-strong);font-family:var(--font-mono);border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:.8rem;display:inline-flex}.item-mark{color:var(--game-accent)}.item-gain{font-family:var(--font-mono);color:var(--game-accent);align-items:center;gap:8px;margin:16px 0 0;font-size:.85rem;display:flex}.game-map{flex-direction:column;gap:16px;margin-bottom:44px;display:flex}.act{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);transition:border-color .25s var(--ease), opacity .25s var(--ease);padding:20px 24px 18px}.act-locked{opacity:.55}.act-done{border-color:color-mix(in srgb, var(--game-accent) 45%, transparent)}.act-head{align-items:center;gap:16px;margin-bottom:14px;display:flex}.act-numeral{background:var(--bg-sunken);width:40px;height:40px;color:var(--game-accent);font-family:var(--font-mono);letter-spacing:.05em;border-radius:12px;flex-shrink:0;place-items:center;font-size:1rem;font-weight:700;display:grid}.act-done .act-numeral{background:var(--game-glow)}.act-head h2{margin-bottom:1px;font-size:1.15rem}.act-count{font-family:var(--font-mono);margin-left:auto}.room-list{border:1px solid var(--border);border-radius:var(--radius);margin:0;padding:0;list-style:none;overflow:hidden}.room-list li+li{border-top:1px solid var(--border)}.room-list a,.room-list li.locked{color:var(--text);background:var(--bg);align-items:center;gap:14px;padding:11px 16px;font-size:.93rem;display:flex}.room-list a:hover{background:var(--bg-hover);text-decoration:none}.room-list li.locked{color:var(--text-tertiary);font-family:var(--font-mono);font-size:.85rem}.room-state{text-align:center;width:16px;color:var(--text-tertiary);flex-shrink:0}.room-list li.solved .room-state{color:var(--game-accent)}.room-list li.current a{background:var(--game-glow)}.room-list li.current .room-state{color:var(--game-accent)}.room-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.room-skill{font-family:var(--font-mono);flex-shrink:0;font-size:.72rem}.room-head{margin-bottom:22px}.room-skill-tag{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--game-accent);margin-bottom:8px;font-size:.7rem;display:inline-block}.room-head h1{font-size:2.1rem}.whisper-zone{margin-bottom:22px}.whisper-btn{border:1px dashed var(--border-strong);border-radius:var(--radius);font-family:var(--font-mono);padding:10px 16px;font-size:.8rem}.whisper{border-left:3px solid var(--warning);background:var(--warning-soft);margin-bottom:22px;padding:18px 24px 12px}.whisper .markdown{color:var(--text);font-size:.95rem}.room-challenge{margin-bottom:22px;padding:26px 30px 24px}.room-challenge h2{margin-bottom:12px;font-size:1.3rem}.verdict-card{border-left:3px solid var(--game-accent);padding:30px 34px}.rank-name{letter-spacing:-.03em;color:var(--game-accent);margin-bottom:8px;font-size:2.2rem}.game-teaser{color:inherit;border-left:3px solid #4ec97a;align-items:center;gap:20px;padding:22px 26px;display:flex}.game-teaser:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);border-left-color:#4ec97a;text-decoration:none}.game-teaser-mark{font-family:var(--font-mono);color:#4ec97a;flex-shrink:0;font-size:1.8rem}.game-teaser-text{flex:1;min-width:0}.game-teaser-text strong{letter-spacing:-.02em;margin-bottom:3px;font-size:1.1rem;display:block}.game-note{margin-bottom:40px}@media (width<=760px){.game-title{font-size:2.2rem}.game-scroll,.room-challenge,.verdict-card{padding:20px 18px}.room-skill{display:none}}.player-grid{grid-template-columns:minmax(320px,400px) minmax(0,1fr);align-items:start;gap:24px;display:grid}.player-panel{position:sticky;top:20px}.player-panel-inner{border:1px solid var(--border);border-left:3px solid var(--game-accent);border-radius:var(--radius-lg);background:var(--bg-elevated);max-height:calc(100vh - 40px);padding:22px 24px 20px;overflow-y:auto}.player-title{letter-spacing:-.025em;margin-bottom:14px;font-size:1.6rem}.context-toggle{color:var(--text-secondary);background:0 0;border:none;align-items:center;gap:8px;padding:0 0 10px;font-size:.82rem;display:inline-flex}.context-toggle:hover{color:var(--accent)}.player-context{border-left:2px solid var(--border);margin-bottom:20px;padding-left:14px}.player-context .markdown{font-size:.92rem;line-height:1.6}.player-context .markdown blockquote{padding:8px 12px;font-size:.82rem}.player-brief{border-top:1px solid var(--border);margin-bottom:20px;padding-top:16px}.player-brief .markdown{font-size:.94rem}.player-brief .markdown p:last-child{margin-bottom:0}.player-steps{border-top:1px solid var(--border);padding-top:16px}.player-steps-head{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}.player-steps ol{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.player-steps li{color:var(--text-secondary);transition:opacity .25s var(--ease);align-items:flex-start;gap:11px;font-size:.92rem;display:flex}.player-steps li.hidden-step{opacity:.4}.step-num{border:1px solid var(--border-strong);width:22px;height:22px;font-size:.72rem;font-family:var(--font-mono);color:var(--text-tertiary);border-radius:50%;flex-shrink:0;place-items:center;margin-top:1px;display:grid}.player-steps li.current .step-num{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.player-steps li.current .step-text{color:var(--text);font-weight:500}.player-steps li.done .step-num{background:var(--game-accent);border-color:var(--game-accent);color:#06210f;font-weight:700}.player-steps li.done .step-text{color:var(--text-tertiary);text-decoration:line-through;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong)}.step-text{flex:1;min-width:0}.step-detail{color:var(--warning);font-size:.85em;font-style:normal}.player-feedback{border-radius:var(--radius);animation:pop .28s var(--ease) both;margin-top:18px;padding:11px 14px;font-size:.88rem;line-height:1.5}.player-feedback.ko{background:var(--warning-soft);color:var(--text);border-left:3px solid var(--warning)}.player-feedback.ok{background:var(--game-glow);color:var(--text);border-left:3px solid var(--game-accent)}.player-hint{margin-top:18px}.player-hint .whisper{border-radius:var(--radius);margin:0;padding:14px 16px 6px}.player-workspace{flex-direction:column;gap:18px;min-width:0;display:flex}.player-workspace .exercise,.player-workspace .quiz,.player-workspace .input-ex{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px 24px}.player-workspace .shell-ex,.player-workspace .c-ex,.player-workspace .vim-ex,.player-workspace .norm-ex{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px}.player-workspace .solved-scroll{margin-bottom:0}@media (width<=1080px){.player-grid{grid-template-columns:1fr}.player-panel{position:static}.player-panel-inner{max-height:none}}.player-lecon{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);margin-bottom:20px;overflow:hidden}.player-lecon.open{border-color:var(--border-strong)}.lecon-toggle{width:100%;color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:10px 14px;display:flex}.lecon-toggle:hover{background:var(--bg-hover)}.lecon-label{color:var(--accent);margin-bottom:0}.lecon-hint{margin-left:auto}.lecon-body{border-top:1px solid var(--border);padding:4px 16px 12px}.lecon-body .markdown{font-size:.9rem;line-height:1.6}.lecon-body .markdown h2,.lecon-body .markdown h3{margin:1.1rem 0 .4rem;font-size:.98rem}.lecon-body .codeblock{margin:.8rem 0}.lecon-body .codeblock pre{padding:10px 12px;font-size:.78rem}.lecon-body .md-table-wrap{margin:.8rem 0}.lecon-body .markdown table{font-size:.84rem}.lecon-body .markdown th,.lecon-body .markdown td{padding:6px 10px}.lecon-body .markdown blockquote{padding:8px 12px;font-size:.88rem}.checkpoint{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--bg-elevated);margin:1.6rem 0;padding:16px 20px 18px}.checkpoint.ok{border-left-color:var(--success)}.checkpoint.ko{border-left-color:var(--warning)}.cp-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.cp-badge{text-transform:uppercase;letter-spacing:.09em;color:var(--accent);font-size:.68rem;font-weight:600}.checkpoint.ok .cp-badge{color:var(--success)}.cp-question{color:var(--text);margin:0 0 12px;font-size:.98rem;font-weight:500}.cp-options{flex-wrap:wrap;gap:8px;display:flex}.cp-option{border:1px solid var(--border-strong);background:var(--bg);color:var(--text);transition:background .16s var(--ease), border-color .16s var(--ease);border-radius:999px;padding:8px 15px;font-size:.9rem}.cp-option:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent)}.cp-option:disabled{cursor:default;opacity:.75}.cp-option.good{border-color:var(--success);background:var(--success-soft);color:var(--success);opacity:1}.cp-option.bad{border-color:var(--danger);background:var(--danger-soft);color:var(--danger);opacity:1}.cp-feedback{color:var(--text-secondary);margin-top:12px;font-size:.92rem}.cp-feedback p{margin:0 0 8px}.level-block-md{border-radius:var(--radius);background:var(--bg-sunken);border:1px dashed var(--border-strong);margin:1.6rem 0;padding:14px 20px 4px;position:relative}.level-tag{text-transform:uppercase;letter-spacing:.09em;color:var(--text-tertiary);margin-bottom:6px;font-size:.66rem;font-weight:600;display:inline-block}.level-block-md.level-avance{border-style:solid;border-color:var(--accent-soft);background:var(--accent-soft)}.level-block-md.level-avance .level-tag{color:var(--accent)}.markdown{color:var(--text-secondary);font-size:1rem;line-height:1.68}.markdown>:first-child{margin-top:0}.markdown h2{color:var(--text);letter-spacing:-.02em;margin:2.2rem 0 .7rem;font-size:1.35rem}.markdown h3{color:var(--text);margin:1.8rem 0 .55rem;font-size:1.08rem}.markdown h4{color:var(--text);text-transform:uppercase;letter-spacing:.06em;margin:1.4rem 0 .4rem;font-size:.95rem;font-weight:600}.markdown p{margin:0 0 1rem}.markdown ul,.markdown ol{margin:0 0 1rem;padding-left:1.3rem}.markdown li{margin-bottom:.35rem}.markdown li::marker{color:var(--text-tertiary)}.markdown hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.markdown blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text);margin:1.2rem 0;padding:.9rem 1.1rem}.markdown blockquote p:last-child{margin-bottom:0}.md-code{background:var(--bg-sunken);border:1px solid var(--border);color:var(--text);white-space:nowrap;border-radius:5px;padding:1px 5px;font-size:.86em}.md-table-wrap{border:1px solid var(--border);border-radius:var(--radius);margin:1.2rem 0;overflow-x:auto}.markdown table{border-collapse:collapse;width:100%;font-size:.92rem}.markdown th,.markdown td{text-align:left;border-bottom:1px solid var(--border);padding:9px 14px}.markdown th{background:var(--bg-sunken);color:var(--text);white-space:nowrap;font-weight:600}.markdown tbody tr:last-child td{border-bottom:none}.codeblock{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);margin:1.2rem 0;overflow:hidden}.codeblock-head{border-bottom:1px solid var(--border);background:var(--bg-elevated);justify-content:space-between;align-items:center;padding:4px 6px 4px 14px;display:flex}.codeblock-lang{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-size:.72rem}.codeblock pre{color:var(--text);tab-size:4;margin:0;padding:14px 16px;font-size:.855rem;line-height:1.65;overflow-x:auto}.codeblock pre.numbered{padding-left:0}.code-line{display:block}.code-line .ln{text-align:right;width:3ch;color:var(--text-tertiary);border-right:1px solid var(--border);-webkit-user-select:none;user-select:none;margin-right:14px;padding-right:8px;display:inline-block}.tok-comment{color:var(--text-tertiary);font-style:italic}.tok-keyword{color:#a33ea3;font-weight:600}.tok-string{color:#b5651d}.tok-number{color:#1d7a8c}.tok-fn{color:#0b62c4}.tok-macro{color:#1d9a5b}.tok-cmd{color:#0b62c4;font-weight:600}.tok-flag{color:#a33ea3}.tok-var{color:#b5651d}[data-theme=dark] .tok-keyword{color:#d98bd9}[data-theme=dark] .tok-string{color:#e8a76a}[data-theme=dark] .tok-number{color:#6fd4e6}[data-theme=dark] .tok-fn{color:#6cb6ff}[data-theme=dark] .tok-macro{color:#5fd39a}[data-theme=dark] .tok-cmd{color:#6cb6ff}[data-theme=dark] .tok-flag{color:#d98bd9}[data-theme=dark] .tok-var{color:#e8a76a}.terminal{background:var(--terminal-bg);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-md);cursor:text;flex-direction:column;display:flex;overflow:hidden}.term-bar{background:#ffffff0f;border-bottom:1px solid #ffffff14;flex-shrink:0;align-items:center;gap:7px;padding:9px 12px;display:flex}.term-bar .dot{border-radius:50%;width:11px;height:11px;display:block}.dot.red{background:#ff5f57}.dot.yellow{background:#febc2e}.dot.green{background:#28c840}.term-title{color:#e8e8ed80;letter-spacing:.02em;margin-left:8px;font-size:.75rem}.term-reset{color:#e8e8edb8;transition:background .2s var(--ease);background:0 0;border:1px solid #ffffff29;border-radius:999px;margin-left:auto;padding:3px 10px;font-size:.72rem}.term-reset:hover{color:#fff;background:#ffffff1a}.term-body{font-family:var(--font-mono);color:var(--terminal-text);flex:1;padding:12px 14px 16px;font-size:.83rem;line-height:1.55;overflow-y:auto}.term-echo{white-space:pre-wrap;word-break:break-word;color:#9fe0a5}.term-out{white-space:pre-wrap;word-break:break-word;color:var(--terminal-text)}.term-input-row{align-items:baseline;display:flex}.term-prompt{color:#9fe0a5;white-space:pre;flex-shrink:0}.term-input-row input{min-width:0;color:var(--terminal-text);font-family:inherit;font-size:inherit;line-height:inherit;caret-color:#9fe0a5;background:0 0;border:none;outline:none;flex:1;padding:0}.term-body::-webkit-scrollbar-thumb{background:#ffffff2e}.vim-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:var(--shadow-sm);overflow:hidden}.vim-host .cm-editor,.vim-host .cm-editor.cm-focused{outline:none}.vim-host .cm-vim-panel{padding:5px 10px}.vim-host .cm-vim-panel input{color:inherit;font-family:var(--font-mono);background:0 0;border:none;outline:none;width:100%}.exercise{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:26px 28px 22px}.ex-head-top{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;display:flex}.ex-xp{color:var(--text-tertiary);letter-spacing:.02em;font-size:.78rem;font-weight:600}.ex-attempts{margin-left:auto}.ex-head h2{margin-bottom:4px;font-size:1.45rem}.difficulty{align-items:center;gap:3px;display:inline-flex}.difficulty span{background:var(--border-strong);border-radius:50%;width:6px;height:6px}.difficulty span.on{background:var(--accent)}.ex-brief{margin-top:14px}.ex-body{margin-top:20px}.ex-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:18px;display:flex}.ex-foot{border-top:1px solid var(--border);flex-wrap:wrap;gap:8px;margin-top:20px;padding-top:14px;display:flex}.verdict{border-radius:var(--radius);animation:pop .32s var(--ease) both;margin-top:18px;padding:12px 16px;font-size:.93rem}.verdict.ok{background:var(--success-soft);color:var(--success)}.verdict.ko{background:var(--danger-soft);color:var(--danger)}.hint,.solution{border-radius:var(--radius);background:var(--bg-sunken);border:1px solid var(--border);margin-top:16px;padding:14px 18px}.hint{border-left:3px solid var(--warning)}.solution h4,.explanation h4{text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin:0 0 8px;font-size:.78rem}.explanation{border-radius:var(--radius);background:var(--bg-sunken);border:1px solid var(--border);margin-top:18px;padding:14px 18px}.expected-answer{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:10px;padding:6px 10px;display:inline-block}.quiz-multi{margin-bottom:10px}.quiz-options{flex-direction:column;gap:9px;margin:0;padding:0;list-style:none;display:flex}.quiz-option{text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--text);transition:border-color .18s var(--ease), background .18s var(--ease);align-items:flex-start;gap:12px;padding:12px 15px;display:flex}.quiz-option:hover{border-color:var(--border-strong);background:var(--bg-hover)}.quiz-option.picked{border-color:var(--accent);background:var(--accent-soft)}.quiz-option.correct{border-color:var(--success);background:var(--success-soft)}.quiz-option.wrong{border-color:var(--danger);background:var(--danger-soft)}.quiz-option .radio,.quiz-option .box{border:1.5px solid var(--border-strong);background:var(--bg-elevated);flex-shrink:0;width:17px;height:17px;margin-top:3px}.quiz-option .radio{border-radius:50%}.quiz-option .box{border-radius:5px}.quiz-option.picked .radio,.quiz-option.picked .box{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px var(--bg-elevated)}.quiz-label{flex:1;min-width:0}.quiz-label .markdown{color:inherit;font-size:.95rem}.quiz-label .markdown p{margin:0}.quiz-label .codeblock{margin:8px 0 0}.mark{margin-left:8px;font-weight:700}.mark.ok{color:var(--success)}.mark.ko{color:var(--danger)}.input-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.input-row input{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);min-width:220px;color:var(--text);font-family:var(--font-mono);transition:border-color .18s var(--ease);outline:none;flex:1;padding:11px 15px;font-size:.9rem}.input-row input:focus{border-color:var(--accent)}.input-row input.good{border-color:var(--success)}.input-row input.bad{border-color:var(--danger)}.checklist{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);margin-top:18px;padding:14px 18px}.checklist-head{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.checklist-head h4{text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin:0;font-size:.78rem}.checklist ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.checklist li{color:var(--text-secondary);align-items:flex-start;gap:10px;font-size:.92rem;display:flex}.checklist li.ok{color:var(--success)}.checklist .tick{text-align:center;flex-shrink:0;width:16px;font-weight:700}.check-detail{color:var(--text-tertiary);font-size:.85em;font-style:normal}.vim-columns{grid-template-columns:1fr 1fr;gap:16px;display:grid}.col-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin:0 0 8px;font-size:.75rem}.target-buffer{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);font-family:var(--font-mono);white-space:pre;height:250px;color:var(--text);margin:0;padding:14px 16px;font-size:.82rem;line-height:1.6;overflow:auto}.vim-tip{margin-top:10px}.vim-tip kbd{border:1px solid var(--border-strong);background:var(--bg-sunken);border-bottom-width:2px;border-radius:5px;padding:0 5px;font-size:.85em}.vim-status{border-radius:var(--radius-sm);background:var(--bg-sunken);color:var(--text-secondary);margin-top:12px;padding:9px 14px;font-size:.88rem}.vim-status.ok{background:var(--success-soft);color:var(--success)}.editor-shell{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);overflow:hidden}.editor-bar{border-bottom:1px solid var(--border);background:var(--bg-sunken);justify-content:space-between;align-items:center;padding:4px 6px 4px 14px;display:flex}.editor-loading{text-align:center;color:var(--text-tertiary);padding:40px;font-size:.9rem}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:13px;height:13px;animation:.7s linear infinite spin;display:inline-block}.run-report{margin-top:18px}.report-banner{border-radius:var(--radius);padding:11px 16px;font-size:.93rem;font-weight:500}.report-banner.success{background:var(--success-soft);color:var(--success)}.report-banner.error{background:var(--danger-soft);color:var(--danger)}.report-banner.warn{background:var(--warning-soft);color:var(--warning)}.runtime-msg{color:var(--text-secondary);margin:10px 0 0;font-size:.9rem}.compiler-output{background:var(--terminal-bg);color:#ff9a94;border-radius:var(--radius);font-family:var(--font-mono);white-space:pre-wrap;margin:10px 0 0;padding:12px 14px;font-size:.78rem;line-height:1.55;overflow-x:auto}.stderr-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin:16px 0 0;font-size:.78rem}.case-list{flex-direction:column;gap:8px;margin:14px 0 0;padding:0;list-style:none;display:flex}.case-list li{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);padding:10px 14px}.case-list li.ok{border-color:color-mix(in srgb, var(--success) 35%, transparent)}.case-list li.ko{border-color:color-mix(in srgb, var(--danger) 35%, transparent)}.case-head{align-items:center;gap:10px;font-size:.9rem;display:flex}.case-list li.ok .tick{color:var(--success);font-weight:700}.case-list li.ko .tick{color:var(--danger);font-weight:700}.case-name{font-family:var(--font-mono);color:var(--text);font-size:.85rem}.case-diff{grid-template-columns:1fr 1fr;gap:12px;margin-top:10px;display:grid}.case-diff pre{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;max-height:170px;color:var(--text);margin:4px 0 0;padding:9px 12px;font-size:.78rem;overflow:auto}.diff-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-size:.68rem}.norm-help{margin-bottom:10px}.norm-code{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);font-family:var(--font-mono);font-size:.83rem;line-height:1.7;overflow:hidden}.norm-line{text-align:left;width:100%;color:var(--text);font-family:inherit;font-size:inherit;transition:background .12s var(--ease);background:0 0;border:none;border-left:3px solid #0000;align-items:baseline;gap:12px;padding:1px 12px;display:flex}.norm-line:hover{background:var(--bg-hover)}.norm-line.picked{background:var(--accent-soft);border-left-color:var(--accent)}.norm-line.bad{background:var(--danger-soft);border-left-color:var(--danger)}.norm-line.falsepos{background:var(--warning-soft);border-left-color:var(--warning)}.norm-line .ln{text-align:right;width:2.5ch;color:var(--text-tertiary);-webkit-user-select:none;user-select:none;flex-shrink:0}.norm-line .lc{white-space:pre-wrap;flex:1}.norm-line .why{font-family:var(--font);color:var(--danger);text-align:right;flex-shrink:0;max-width:45%;margin-left:12px;font-size:.76rem}@media (width<=900px){.vim-columns,.case-diff{grid-template-columns:1fr}.exercise{padding:20px 16px 18px}.norm-line .why{display:none}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fbfbfd;--bg-elevated:#fff;--bg-sunken:#f2f2f5;--bg-hover:#0000000a;--bg-active:#00000012;--text:#1d1d1f;--text-secondary:#56565b;--text-tertiary:#86868b;--border:#00000017;--border-strong:#00000029;--accent:#0071e3;--accent-hover:#0077ed;--accent-soft:#0071e31a;--accent-text:#fff;--success:#1d9a5b;--success-soft:#1d9a5b1f;--danger:#d13438;--danger-soft:#d134381f;--warning:#b06f00;--warning-soft:#b06f001f;--terminal-bg:#1c1c1e;--terminal-text:#e8e8ed;--shadow-sm:0 1px 2px #0000000a, 0 1px 3px #0000000d;--shadow-md:0 4px 16px #0000000f, 0 1px 3px #0000000a;--shadow-lg:0 12px 40px #0000001a;--radius-sm:8px;--radius:12px;--radius-lg:18px;--radius-xl:26px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;--sidebar-w:268px;--ease:cubic-bezier(.22, .61, .36, 1)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--bg-elevated:#131315;--bg-sunken:#1c1c1e;--bg-hover:#ffffff0f;--bg-active:#ffffff1a;--text:#f5f5f7;--text-secondary:#b0b0b8;--text-tertiary:#7c7c85;--border:#ffffff1a;--border-strong:#fff3;--accent:#2997ff;--accent-hover:#47a6ff;--accent-soft:#2997ff29;--accent-text:#00121f;--success:#34c77b;--success-soft:#34c77b29;--danger:#ff5f57;--danger-soft:#ff5f5729;--warning:#f0a836;--warning-soft:#f0a83629;--terminal-bg:#0c0c0e;--terminal-text:#e8e8ed;--shadow-sm:0 1px 2px #00000080;--shadow-md:0 4px 16px #00000080;--shadow-lg:0 12px 40px #0009}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;transition:background-color .35s var(--ease), color .35s var(--ease);margin:0;font-size:15px;line-height:1.55}h1,h2,h3,h4{letter-spacing:-.022em;margin:0;font-weight:600;line-height:1.2}h1{letter-spacing:-.03em;font-size:2.1rem}h2{font-size:1.4rem}h3{font-size:1.1rem}p{margin:0 0 .9em}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer}code,kbd,pre{font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}::selection{background:var(--accent-soft)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:content-box;border:3px solid #0000;border-radius:8px}::-webkit-scrollbar-track{background:0 0}.btn{background:var(--accent);color:var(--accent-text);letter-spacing:-.01em;transition:background-color .2s var(--ease), transform .12s var(--ease), opacity .2s var(--ease);white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:9px 18px;font-size:.93rem;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){background:var(--accent-hover)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.secondary{border-color:var(--border-strong);color:var(--text);background:0 0}.btn.secondary:hover:not(:disabled){background:var(--bg-hover)}.btn.ghost{color:var(--text-secondary);background:0 0;padding:7px 12px}.btn.ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.btn.small{padding:6px 13px;font-size:.85rem}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.chip{letter-spacing:.01em;background:var(--bg-sunken);color:var(--text-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.74rem;font-weight:600;display:inline-flex}.chip.accent{background:var(--accent-soft);color:var(--accent)}.chip.success{background:var(--success-soft);color:var(--success)}.chip.danger{background:var(--danger-soft);color:var(--danger)}.chip.warning{background:var(--warning-soft);color:var(--warning)}.mono{font-family:var(--font-mono);font-size:.88em}.muted{color:var(--text-secondary)}.tiny{color:var(--text-tertiary);font-size:.8rem}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.9)}60%{transform:scale(1.03)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-3px)}40%,60%{transform:translate(3px)}}.fade-up{animation:fade-up .45s var(--ease) both}.fade-in{animation:fade-in .3s var(--ease) both}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
