:root{--paper:#f3f5f6;--sheet:#fcfdfd;--sheet-2:#eef1f3;--sheet-sunk:#e7ebee;--ink:#1b2126;--ink-2:#48535d;--ink-3:#75808a;--ink-4:#a3acb4;--rule:#d6dde2;--rule-strong:#b3bdc5;--grid-minor:#3a6c9611;--grid-major:#3a6c9621;--accent:#2457c5;--accent-ink:#fff;--accent-soft:#2457c517;--accent-line:#2457c559;--redline:#d2442f;--redline-soft:#d2442f17;--ok:#2e7d4f;--ok-soft:#2e7d4f1a;--warn:#a8701a;--warn-soft:#c48c1e1f;--bad:#c23b2b;--bad-soft:#c23b2b17;--highlighter:#f6de5a8c;--layer-1:#d2442f;--layer-2:#c9a20b;--layer-3:#2e8b57;--layer-4:#1c9bb5;--layer-5:#2457c5;--layer-6:#a33ea1;--layer-7:#1b2126;--screen:#14151b;--screen-2:#1c1e27;--screen-rule:#2b2f3c;--screen-ink:#dfe6ee;--screen-ink-2:#8b95a5;--screen-cyan:#33c7ec;--screen-green:#4ade80;--font-ui:"Barlow", "Segoe UI", system-ui, sans-serif;--font-display:"Barlow Semi Condensed", "Barlow", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", Consolas, "Courier New", monospace;--fs-xs:12px;--fs-sm:13.5px;--fs-md:15px;--fs-lg:17px;--fs-xl:21px;--fs-2xl:27px;--fs-3xl:36px;--fs-4xl:48px;--r-1:3px;--r-2:5px;--r-3:8px;--shadow-paper:0 1px 0 #1b21260a, 0 2px 6px #1b21260d;--shadow-lift:0 2px 0 #1b21260a, 0 14px 34px -12px #1b212638;--shadow-float:0 24px 60px -18px #1b212659, 0 2px 0 #1b21260a;--ease:cubic-bezier(.2, .7, .2, 1);--side-w:248px;--rail-w:68px;--text-main:var(--ink);--text-secondary:var(--ink-2);--text-muted:var(--ink-3);--text-dim:var(--ink-4);--bg-main:var(--paper);--bg-surface:var(--sheet);--bg-card:var(--sheet);--bg-card-hover:var(--sheet-2);--bg-elevated:var(--sheet-2);--border-subtle:var(--rule);--border-bright:var(--rule-strong);--cad-cyan:var(--accent);--cad-green:var(--ok);--cad-yellow:var(--warn);--cad-orange:var(--warn);--cad-red:var(--bad);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html[data-theme=dark]{--paper:#161a1e;--sheet:#1d2227;--sheet-2:#242a30;--sheet-sunk:#12161a;--ink:#e5e9ec;--ink-2:#acb5bd;--ink-3:#7e8891;--ink-4:#59636c;--rule:#2d343b;--rule-strong:#3f4851;--grid-minor:#8cb4dc0a;--grid-major:#8cb4dc16;--accent:#7ea6ff;--accent-ink:#0f1520;--accent-soft:#7ea6ff1f;--accent-line:#7ea6ff66;--redline:#ff7a66;--redline-soft:#ff7a661f;--ok:#5cc48e;--ok-soft:#5cc48e1f;--warn:#e4b452;--warn-soft:#e4b45221;--bad:#ff7a66;--bad-soft:#ff7a661f;--highlighter:#e4c44638;--layer-1:#ff7a66;--layer-2:#e4c24a;--layer-3:#5cc48e;--layer-4:#4cc6dd;--layer-5:#7ea6ff;--layer-6:#d17ad0;--layer-7:#e5e9ec;--shadow-paper:0 1px 0 #00000040;--shadow-lift:0 16px 36px -14px #0009;--shadow-float:0 28px 70px -20px #000000bf;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--paper);width:100%;min-height:100%;color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"tnum" 0;line-height:1.5;overflow-x:hidden}html{transition:background-color .3s var(--ease)}#root{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--ink);letter-spacing:-.005em;font-weight:600;line-height:1.2}p{color:var(--ink-2)}b,strong{font-weight:600}a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}img{max-width:100%}ul,ol{padding-left:1.2em}::selection{background:var(--highlighter);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-1)}kbd{font-family:var(--font-mono);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-1);white-space:nowrap;border-bottom-width:2px;padding:1px 6px;font-size:.82em;font-weight:500;line-height:1.4;display:inline-block}*{scrollbar-width:thin;scrollbar-color:var(--rule-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--rule-strong);border:3px solid var(--paper);border-radius:10px}.text-cyan{color:var(--accent)}.text-green{color:var(--ok)}.text-warning{color:var(--warn)}.text-muted,.muted{color:var(--ink-3)}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.center{text-align:center;padding:30px}.grow{flex:1}button{font:inherit;font-size:var(--fs-sm);color:inherit;cursor:pointer;border-radius:var(--r-1);transition:background-color .18s var(--ease), border-color .18s var(--ease), color .18s var(--ease), transform .18s var(--ease), box-shadow .18s var(--ease);-webkit-user-select:none;user-select:none;background:0 0;border:none;justify-content:center;align-items:center;gap:8px;font-weight:500;display:inline-flex}button:disabled{cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);padding:9px 18px;font-weight:600;box-shadow:0 1px #0000001f}.btn-primary:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 6px 16px -8px var(--accent);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{opacity:.45}.btn-primary.success-btn{background:var(--ok);border-color:var(--ok);color:#fff}.btn-primary.glow-btn{box-shadow:0 0 0 3px var(--accent-soft)}.btn-secondary{background:var(--sheet);color:var(--ink);border:1px solid var(--rule-strong);padding:8px 16px}.btn-secondary:hover:not(:disabled){border-color:var(--ink-3);background:var(--sheet-2)}.btn-secondary:disabled{opacity:.45}.btn-secondary.danger:hover:not(:disabled){border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}.btn-accent{background:var(--warn-soft);color:var(--warn);border:1px solid color-mix(in srgb, var(--warn) 40%, transparent);padding:8px 16px}.btn-accent:hover{border-color:var(--warn)}.btn-large,.btn-primary.big,.btn-secondary.big{font-size:var(--fs-md);padding:12px 22px}.btn-sm{font-size:var(--fs-xs);padding:6px 12px}.btn-text-sm{color:var(--accent);font-size:var(--fs-xs);padding:4px 8px;font-weight:600}.btn-text-sm:hover{background:var(--accent-soft)}input,textarea,select{font:inherit;color:var(--ink)}.text-input{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-1);width:100%;font-size:var(--fs-sm);outline:none;padding:9px 12px;transition:border-color .15s,box-shadow .15s}.text-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.text-input::placeholder{color:var(--ink-4)}.form-group label{font-size:var(--fs-xs);color:var(--ink-2);margin-bottom:6px;font-weight:600;display:block}.input-with-button{gap:8px;display:flex}.spin,.animate-spin{transform-origin:50%;animation:.8s linear infinite ds-spin}@keyframes ds-spin{to{transform:rotate(360deg)}}.animate-pulse,.pulse{animation:1.8s ease-in-out infinite ds-pulse}@keyframes ds-pulse{50%{opacity:.45}}@keyframes ds-fade{0%{opacity:0}}@keyframes ds-rise{0%{opacity:0;transform:translateY(8px)}}@keyframes ds-pop{0%{opacity:0;transform:translateY(6px)scale(.98)}}.spinner-border{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite ds-spin}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.auth-root{min-height:100vh;color:var(--ink);font-family:var(--font-ui);background:linear-gradient(var(--grid-major) 1px, transparent 1px) 0 0 / 50px 50px, linear-gradient(90deg, var(--grid-major) 1px, transparent 1px) 0 0 / 50px 50px, linear-gradient(var(--grid-minor) 1px, transparent 1px) 0 0 / 10px 10px, linear-gradient(90deg, var(--grid-minor) 1px, transparent 1px) 0 0 / 10px 10px, var(--paper);position:relative;overflow-x:hidden}.auth-stage{grid-template-columns:1.25fr minmax(360px,440px);align-items:center;gap:56px;width:min(1180px,100% - 48px);min-height:100vh;margin:0 auto;padding:40px 0;display:grid}.auth-hero{min-width:0;animation:ds-rise .6s var(--ease) both}.auth-brand{align-items:center;gap:12px;display:flex}.auth-logo{width:44px;height:44px;color:var(--accent);border:1.5px solid var(--accent);border-radius:50%;place-items:center;display:grid}.auth-logo svg{animation:14s linear infinite au-turn}@keyframes au-turn{to{transform:rotate(360deg)}}.auth-title{font-family:var(--font-display);font-size:var(--fs-4xl);letter-spacing:-.01em;margin:0;font-weight:600;line-height:1}.auth-tagline{max-width:560px;font-size:var(--fs-lg);color:var(--ink-2);margin:14px 0 22px;line-height:1.5}.auth-sheet{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-1);box-shadow:var(--shadow-lift);margin:0;padding:14px;position:relative}.auth-sheet:before{content:"";border:1px solid var(--ink-3);pointer-events:none;position:absolute;inset:8px}.auth-blueprint{width:100%;height:auto;display:block}.auth-blueprint .bp-center line{stroke:var(--redline);stroke-width:.8px;stroke-dasharray:18 4 3 4;fill:none;opacity:.75}.auth-blueprint .bp-draw path,.auth-blueprint .bp-draw circle,.auth-blueprint .bp-draw line{fill:none;stroke:var(--ink);stroke-width:1.6px;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100px;animation:au-draw 1.4s var(--ease) forwards;animation-delay:calc(var(--dl,0s) + .3s)}.auth-blueprint .bp-draw .thin{stroke-width:.8px;stroke:var(--ink-2)}.auth-blueprint .bp-draw .hidden-line{stroke-width:.9px;stroke:var(--ink-2)}@keyframes au-draw{to{stroke-dashoffset:0}}.auth-blueprint .bp-draw .hidden-line{animation-name:au-draw-hidden}@keyframes au-draw-hidden{99%{stroke-dasharray:100}to{stroke-dashoffset:0;stroke-dasharray:3 2}}.auth-blueprint .bp-dim{opacity:0;animation:.6s 2.4s forwards ds-fade}.auth-blueprint .bp-dim line{stroke:var(--accent);stroke-width:.7px}.auth-blueprint .bp-dim line.ext{stroke-width:.5px;opacity:.7}.auth-blueprint .bp-dim text{fill:var(--accent);font:500 11px var(--font-mono);text-anchor:middle}.auth-blueprint .bp-title{opacity:0;animation:.6s 2.7s forwards ds-fade}.auth-blueprint .bp-title rect,.auth-blueprint .bp-title line{fill:none;stroke:var(--ink);stroke-width:.9px}.auth-blueprint .bp-title text{fill:var(--ink-2);font:500 9.5px var(--font-mono)}.auth-features{flex-wrap:wrap;gap:8px 22px;margin:22px 0 0;padding:0;list-style:none;display:flex}.auth-features li{font-size:var(--fs-sm);color:var(--ink-2);animation:ds-rise .5s var(--ease) both;animation-delay:calc(var(--d,0s) + .5s);align-items:center;gap:9px;display:inline-flex}.auth-features li:before{content:"";background:var(--c,var(--accent));border-radius:1px;width:9px;height:9px}.auth-card{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);box-shadow:var(--shadow-float);animation:ds-rise .6s var(--ease) .1s both;padding:30px 30px 22px;position:relative;overflow:hidden}.auth-card:before{content:"";background:var(--accent);height:3px;position:absolute;top:0;left:0;right:0}.auth-card.shake{animation:.45s au-shake}@keyframes au-shake{20%,60%{transform:translate(-7px)}40%,80%{transform:translate(7px)}}.auth-tabs{background:var(--sheet-2);border:1px solid var(--rule);border-radius:var(--r-2);grid-template-columns:1fr 1fr;margin-bottom:26px;padding:3px;display:grid;position:relative}.auth-tab-indicator{background:var(--sheet);border-radius:var(--r-1);width:calc(50% - 3px);box-shadow:var(--shadow-paper);transition:transform .4s var(--ease);position:absolute;top:3px;bottom:3px;left:3px}.auth-tabs[data-mode=register] .auth-tab-indicator{transform:translate(100%)}.auth-tabs button{z-index:1;cursor:pointer;font:600 var(--fs-sm) var(--font-ui);color:var(--ink-3);background:0 0;border:0;padding:9px;transition:color .25s;position:relative}.auth-tabs button.active{color:var(--ink)}.auth-slider{transition:transform .55s var(--ease);grid-template-columns:100% 100%;display:grid}.auth-slider.stage-code{transform:translate(-100%)}.auth-pane{padding:0 2px;transition:opacity .35s}.auth-slider.stage-email .auth-pane:nth-child(2),.auth-slider.stage-code .auth-pane:first-child{opacity:0;pointer-events:none}.pane-title{font-family:var(--font-display);font-size:var(--fs-2xl);animation:ds-rise .4s var(--ease) both;margin:0 0 4px;font-weight:600}.pane-sub{font-size:var(--fs-sm);color:var(--ink-2);margin:0 0 20px;line-height:1.55}.ms-btn{cursor:pointer;width:100%;font:600 var(--fs-md) var(--font-ui);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);justify-content:center;align-items:center;gap:10px;padding:12px 14px;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.ms-btn:hover:not(:disabled){border-color:var(--ink-3);box-shadow:var(--shadow-paper);transform:translateY(-1px)}.ms-btn:disabled{opacity:.55;cursor:not-allowed}.auth-divider{font-size:var(--fs-xs);color:var(--ink-3);align-items:center;gap:12px;margin:20px 0 16px;display:flex}.auth-divider:before,.auth-divider:after{content:"";border-top:1px dashed var(--rule-strong);flex:1}.auth-collapse{opacity:0;transition:grid-template-rows .4s var(--ease), opacity .3s;grid-template-rows:0fr;display:grid}.auth-collapse>*{overflow:hidden}.auth-collapse.open{opacity:1;grid-template-rows:1fr}.auth-field{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);align-items:center;margin-bottom:14px;transition:border-color .2s,box-shadow .2s;display:flex;position:relative}.auth-collapse .auth-field{margin-top:1px}.auth-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-icon{color:var(--ink-3);transition:color .2s;position:absolute;left:13px}.auth-field:focus-within .field-icon{color:var(--accent)}.auth-field input{min-width:0;font:500 var(--fs-md) var(--font-ui);color:var(--ink);background:0 0;border:0;outline:0;flex:1;padding:20px 12px 6px 40px}.field-label{color:var(--ink-3);pointer-events:none;transition:all .2s var(--ease);position:absolute;top:50%;left:40px;transform:translateY(-50%)}.auth-field input:focus+.field-label,.auth-field input:not(:placeholder-shown)+.field-label{color:var(--accent);font-size:11.5px;top:12px}.field-suffix{font:500 var(--fs-sm) var(--font-mono);color:var(--ink-3);white-space:nowrap;padding:12px 12px 0 0}.auth-submit{cursor:pointer;width:100%;font:600 var(--fs-md) var(--font-ui);color:var(--accent-ink);background:var(--accent);border-radius:var(--r-2);border:0;justify-content:center;align-items:center;gap:8px;margin-top:4px;padding:13px;transition:filter .15s,transform .15s;display:flex}.auth-submit:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}.auth-submit:active:not(:disabled){transform:translateY(0)scale(.99)}.auth-submit:disabled{opacity:.55;cursor:not-allowed}.auth-submit svg{transition:transform .25s var(--ease)}.auth-submit:hover:not(:disabled) svg{transform:translate(3px)}.auth-back{cursor:pointer;font:500 var(--fs-sm) var(--font-ui);color:var(--ink-3);background:0 0;border:0;align-items:center;gap:5px;margin-bottom:14px;padding:0;display:inline-flex}.auth-back:hover{color:var(--accent)}.code-icon{width:50px;height:50px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:50%;place-items:center;margin-bottom:14px;display:grid}.code-row{grid-template-columns:repeat(6,1fr);gap:8px;margin:6px 0 16px;display:grid}.code-box{aspect-ratio:1/1.15;text-align:center;width:100%;font:600 24px var(--font-mono);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);animation:ds-rise .4s var(--ease) both;animation-delay:calc(var(--i) * 50ms + .25s);border-bottom-width:2px;outline:0;transition:border-color .2s,box-shadow .2s,transform .2s}.code-box:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);transform:translateY(-2px)}.code-box.filled{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}.verifying{font-size:var(--fs-sm);color:var(--accent);align-items:center;gap:8px;margin-bottom:12px;display:flex}.auth-link{cursor:pointer;font:500 var(--fs-sm) var(--font-ui);color:var(--accent);background:0 0;border:0;padding:0}.auth-link:hover:not(:disabled){text-underline-offset:3px;text-decoration:underline}.auth-link:disabled{color:var(--ink-4);cursor:default}.auth-alert{font-size:var(--fs-sm);border-radius:var(--r-1);animation:ds-rise .3s var(--ease) both;align-items:flex-start;gap:9px;margin-top:16px;padding:11px 13px;line-height:1.45;display:flex}.auth-alert svg{flex-shrink:0;margin-top:2px}.auth-alert.error{color:var(--ink);background:var(--bad-soft);border-left:3px solid var(--bad)}.auth-alert.error svg{color:var(--bad)}.auth-alert.warn{color:var(--ink);background:var(--warn-soft);border-left:3px solid var(--warn);margin:0 0 18px}.auth-alert.warn svg{color:var(--warn)}.auth-alert code{font:12.5px var(--font-mono)}.auth-foot{border-top:1px solid var(--rule);font-size:var(--fs-xs);color:var(--ink-3);justify-content:center;align-items:center;gap:6px;margin-top:22px;padding-top:16px;display:flex}.auth-foot strong{font-family:var(--font-mono);color:var(--ink-2);font-weight:500}@media (width<=960px){.auth-stage{grid-template-columns:1fr;align-content:start;gap:28px;padding-top:28px}.auth-card{order:2;justify-self:center;width:min(460px,100%)}.auth-hero{text-align:center;order:1}.auth-brand{justify-content:center}.auth-tagline{margin-inline:auto}.auth-sheet,.auth-features{display:none}}@media (width<=480px){.auth-stage{width:calc(100% - 24px)}.auth-card{padding:24px 18px 18px}.auth-title{font-size:var(--fs-3xl)}.code-row{gap:5px}}@media (prefers-reduced-motion:reduce){.auth-blueprint .bp-draw path,.auth-blueprint .bp-draw circle,.auth-blueprint .bp-draw line{stroke-dashoffset:0}.auth-blueprint .bp-draw .hidden-line{stroke-dasharray:3 2}.auth-blueprint .bp-dim,.auth-blueprint .bp-title{opacity:1}.auth-logo svg{animation:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.mono{font-family:var(--font-mono);font-size:.92em}.app-layout{grid-template-columns:var(--side-w) minmax(0, 1fr);min-height:100vh;transition:grid-template-columns .28s var(--ease);display:grid}.app-layout.has-rail{grid-template-columns:var(--rail-w) minmax(0, 1fr)}.app-main{background-color:var(--paper);background-image:linear-gradient(var(--grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--grid-major) 1px, transparent 1px), linear-gradient(var(--grid-minor) 1px, transparent 1px), linear-gradient(90deg, var(--grid-minor) 1px, transparent 1px);background-position:-1px -1px;background-size:50px 50px,50px 50px,10px 10px,10px 10px;flex-direction:column;min-width:0;display:flex}.main-content-area{flex-direction:column;flex:1;min-width:0;display:flex}.main-content-area>:not(.tutorial-split-layout){animation:ds-rise .35s var(--ease) backwards}.view-tutorial .app-main{height:100vh;overflow:hidden}.view-tutorial .main-content-area{min-height:0}.side{z-index:60;background:var(--sheet);border-right:1px solid var(--rule);flex-direction:column;gap:6px;height:100vh;padding:14px 12px 12px;display:flex;position:sticky;top:0;overflow:hidden auto}.side-top{align-items:center;gap:4px;margin-bottom:6px;display:flex}.side-brand{text-align:left;flex:1;justify-content:flex-start;align-items:center;gap:10px;min-width:0;padding:4px;display:flex}.side-brand-mark-wrap{border:1px solid var(--ink);width:34px;height:34px;color:var(--ink);border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.side-brand-mark{color:var(--redline);transition:transform .6s var(--ease)}.side-brand:hover .side-brand-mark{transform:rotate(90deg)}.side-brand-text{flex-direction:column;min-width:0;line-height:1.15;display:flex}.side-brand-text b{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-size:19px;font-weight:700}.side-brand-text small{font-size:var(--fs-xs);color:var(--ink-3);white-space:nowrap}.side-icon-btn{width:32px;height:32px;color:var(--ink-3);border-radius:var(--r-1);flex:none}.side-icon-btn:hover{color:var(--ink);background:var(--sheet-2)}.side-close{display:none}.side-streak{border:1px dashed var(--rule-strong);border-radius:var(--r-2);color:var(--ink-3);font-size:var(--fs-xs);justify-content:flex-start;gap:8px;margin:2px 0 6px;padding:8px 10px}.side-streak-num{font-family:var(--font-display);color:var(--ink-2);font-size:18px;font-weight:700;line-height:1}.side-streak.on{border-style:solid;border-color:color-mix(in srgb, var(--redline) 45%, transparent);background:var(--redline-soft);color:var(--redline)}.side-streak.on .side-streak-num{color:var(--redline)}.side-streak:hover{border-color:var(--ink-3)}.side-nav{flex-direction:column;gap:1px;display:flex}.side-sep{border:0;border-top:1px solid var(--rule);margin:7px 6px}.nav-btn{height:38px;color:var(--ink-2);font-size:var(--fs-md);border-radius:var(--r-1);text-align:left;justify-content:flex-start;gap:10px;padding:0 10px;font-weight:500;position:relative}.nav-btn:hover{background:var(--sheet-2);color:var(--ink)}.layer-swatch{background:var(--layer);width:9px;height:9px;transition:transform .2s var(--ease);border-radius:1px;flex:none;box-shadow:inset 0 0 0 1px #0000001f}.nav-ico{color:var(--ink-3);flex:none;transition:color .18s}.nav-btn:hover .nav-ico{color:var(--ink)}.nav-btn.active{background:var(--paper);color:var(--ink);box-shadow:inset 0 0 0 1px var(--rule);font-weight:600}.nav-btn.active:before{content:"";background:var(--redline);border-radius:0 2px 2px 0;width:3px;position:absolute;top:8px;bottom:8px;left:-12px}.nav-btn.active .nav-ico{color:var(--ink)}.nav-btn.active .layer-swatch{transform:scale(1.25)}.side-tools{border-top:1px solid var(--rule);flex-direction:column;gap:1px;margin-top:auto;padding-top:10px;display:flex}.side-tool{height:34px;color:var(--ink-2);font-size:var(--fs-sm);text-align:left;justify-content:flex-start;gap:10px;padding:0 10px}.side-tool:hover{background:var(--sheet-2);color:var(--ink)}.side-tool svg{color:var(--ink-3);flex:none}.side-tool-val{font-family:var(--font-mono);border:1px solid var(--rule-strong);border-radius:var(--r-1);color:var(--ink);margin-left:auto;padding:1px 6px;font-size:11px}.status-dot{border-radius:50%;flex:none;width:8px;height:8px;margin-left:auto}.status-dot.active{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.status-dot.inactive{background:var(--warn);box-shadow:0 0 0 3px var(--warn-soft)}.side-tool-row{gap:2px;padding:4px 4px 0;display:flex}.user-chip{border:1px solid var(--rule);border-radius:var(--r-2);background:var(--paper);align-items:center;gap:10px;margin-top:8px;padding:8px;display:flex}.user-chip-avatar{width:32px;height:32px;font-family:var(--font-display);color:var(--sheet);background:var(--ink);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.user-chip-text{flex-direction:column;flex:1;min-width:0;line-height:1.2;display:flex}.user-chip-text b{font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.user-chip-text small{font-size:var(--fs-xs);color:var(--ink-3)}.user-chip .admin-badge{color:var(--redline);font-weight:600}.side.is-rail{align-items:center;padding-left:10px;padding-right:10px}.side.is-rail .side-label,.side.is-rail .side-brand-text,.side.is-rail .side-tool-val{display:none}.side.is-rail .side-top{flex-direction:column;gap:8px}.side.is-rail .side-brand{justify-content:center;padding:0}.side.is-rail .side-streak{flex-direction:column;justify-content:center;gap:2px;width:46px;padding:8px 0}.side.is-rail .side-streak-num{font-size:15px}.side.is-rail .side-nav,.side.is-rail .side-tools{align-items:center;width:100%}.side.is-rail .nav-btn,.side.is-rail .side-tool{justify-content:center;width:44px;padding:0}.side.is-rail .nav-btn .layer-swatch{width:6px;height:6px;position:absolute;top:6px;left:6px}.side.is-rail .nav-btn.active:before{left:-10px}.side.is-rail .side-tool .status-dot{margin:0;position:absolute;transform:translate(10px,-10px)}.side.is-rail .side-tool{position:relative}.side.is-rail .side-tool-row{flex-direction:column;padding:4px 0 0}.side.is-rail .user-chip{background:0 0;border:0;flex-direction:column;gap:6px;padding:6px}.mobile-bar,.side-scrim{display:none}@media (width<=900px){.app-layout,.app-layout.has-rail{grid-template-columns:minmax(0,1fr)}.mobile-bar{z-index:55;background:var(--sheet);border-bottom:1px solid var(--rule);align-items:center;gap:8px;padding:8px 12px;display:flex;position:sticky;top:0}.side-brand.compact{font-family:var(--font-display);color:var(--ink);flex:1;justify-content:flex-start;gap:8px;font-size:18px;font-weight:700}.mobile-bar .streak-chip{border:1px solid var(--rule-strong);color:var(--ink-3);border-radius:99px;gap:4px;padding:5px 10px;font-weight:600}.mobile-bar .streak-chip.on{color:var(--redline);border-color:color-mix(in srgb, var(--redline) 45%, transparent);background:var(--redline-soft)}.side,.side.is-rail{width:min(300px,86vw);transition:transform .28s var(--ease);box-shadow:var(--shadow-float);align-items:stretch;padding:14px 12px 12px;position:fixed;top:0;bottom:0;left:0;transform:translate(-102%)}.side.is-open{transform:translate(0)}.side.is-rail .side-label,.side.is-rail .side-brand-text,.side.is-rail .side-tool-val{display:initial}.side.is-rail .user-chip-text,.side.is-rail .side-brand-text{display:flex}.side.is-rail .side-top{flex-direction:row}.side.is-rail .side-streak{flex-direction:row;justify-content:flex-start;width:auto;padding:8px 10px}.side.is-rail .nav-btn,.side.is-rail .side-tool{justify-content:flex-start;width:auto;padding:0 10px}.side.is-rail .nav-btn .layer-swatch{width:9px;height:9px;position:static}.side.is-rail .side-tool-row{flex-direction:row}.side.is-rail .user-chip{border:1px solid var(--rule);background:var(--paper);flex-direction:row;padding:8px}.side.is-rail .side-tool .status-dot{margin-left:auto;position:static;transform:none}.side-collapse{display:none}.side-close{display:inline-flex}.side-scrim{z-index:58;background:#141a2061;animation:.2s both ds-fade;display:block;position:fixed;inset:0}.view-tutorial .app-main{height:auto;overflow:visible}}.announce-bar{font-size:var(--fs-sm);color:var(--ink);background:var(--highlighter);border-bottom:1px solid color-mix(in srgb, var(--warn) 35%, transparent);animation:ds-rise .3s var(--ease) both;align-items:center;gap:10px;padding:10px 48px 10px 20px;font-weight:500;display:flex;position:relative}.announce-bar svg{color:var(--warn);flex:none}.announce-bar button{width:28px;height:28px;color:var(--ink-2);position:absolute;right:12px}.announce-bar button:hover{color:var(--ink);background:#0000000f}.app-toast{z-index:1200;max-width:min(520px,100vw - 32px);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-left:4px solid var(--ok);border-radius:var(--r-2);box-shadow:var(--shadow-float);animation:shell-toast 4.2s var(--ease) both;padding:12px 18px;font-weight:600;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}@keyframes shell-toast{0%{opacity:0;transform:translate(-50%,16px)}8%,88%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,8px)}}.auth-splash,.blocked-screen{text-align:center;background-color:var(--paper);background-image:linear-gradient(var(--grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--grid-major) 1px, transparent 1px);color:var(--ink);background-size:50px 50px;place-items:center;display:grid;position:fixed;inset:0}.blocked-screen>div{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);box-shadow:var(--shadow-lift);justify-items:center;gap:12px;padding:32px 36px;display:grid}.blocked-screen h2{color:var(--bad);font-size:var(--fs-2xl)}.cad-loader{color:var(--ink);flex-direction:column;align-items:center;gap:16px;display:flex}.cad-loader-svg{overflow:visible}.cad-loader-svg .cl-axis{stroke:var(--redline);stroke-width:.7px;stroke-dasharray:6 3 1.5 3;animation:3.2s ease-in-out infinite backwards shell-loop-fade;animation-delay:var(--d,0s)}.cad-loader-svg .cl-draw{fill:none;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-dasharray:1 1;animation:3.2s cubic-bezier(.65,0,.35,1) infinite backwards shell-loop-draw;animation-delay:var(--d,0s)}.cad-loader-svg .cl-draw.thin{stroke-width:1.1px;stroke:var(--accent)}.cad-loader-svg .cl-draw.dim{stroke:var(--ink-3);stroke-width:.6px}.cad-loader-svg .cl-dim-text{fill:var(--ink-2);font-family:var(--font-mono);animation:3.2s ease-in-out infinite backwards shell-loop-fade;animation-delay:var(--d,0s);font-size:7px}@keyframes shell-loop-draw{0%{stroke-dashoffset:1px;opacity:1}35%,80%{stroke-dashoffset:0;opacity:1}95%,to{stroke-dashoffset:0;opacity:0}}@keyframes shell-loop-fade{0%{opacity:0}20%,80%{opacity:1}95%,to{opacity:0}}.cad-loader-cmd{font-family:var(--font-mono);color:var(--ink-3);align-items:center;gap:6px;font-size:12px;display:flex}.cad-loader-prompt{color:var(--ink);font-weight:500}.cad-loader-caret{background:var(--ink-2);width:7px;height:14px;animation:1s step-end infinite shell-caret}@keyframes shell-caret{50%{opacity:0}}.admin-msg{border-radius:var(--r-1);font-size:var(--fs-sm);border:1px solid;padding:9px 12px;animation:.25s both ds-rise}.admin-msg.ok{color:var(--ok);background:var(--ok-soft);border-color:color-mix(in srgb, var(--ok) 35%, transparent)}.admin-msg.err{color:var(--bad);background:var(--bad-soft);border-color:color-mix(in srgb, var(--bad) 35%, transparent)}.admin-empty{text-align:center;color:var(--ink-3);font-size:var(--fs-sm);padding:22px}.admin-list{flex-direction:column;gap:6px;display:flex}.admin-list-item{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-1);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.admin-list-item strong{color:var(--ink);font-weight:600;display:block}.admin-list-item span{font-size:var(--fs-xs);color:var(--ink-3)}.role-pill{font-size:var(--fs-xs);white-space:nowrap;border:1px solid;border-radius:99px;padding:2px 8px;font-weight:600;display:inline-block}.role-pill.admin{color:var(--redline);border-color:color-mix(in srgb, var(--redline) 40%, transparent);background:var(--redline-soft)}.role-pill.user{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.role-pill.banned{color:var(--bad);border-color:color-mix(in srgb, var(--bad) 40%, transparent);background:var(--bad-soft)}.admin-primary{color:var(--accent-ink);background:var(--accent);border-radius:var(--r-1);align-items:center;gap:8px;padding:9px 16px;font-weight:600;display:inline-flex}.admin-primary:hover:not(:disabled){filter:brightness(1.08)}.admin-primary:disabled{opacity:.45}.home-page{flex-direction:column;gap:28px;width:100%;max-width:1240px;margin:0 auto;padding:40px 40px 72px;display:flex}.home-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.home-greet{font-size:clamp(32px, 4.2vw, var(--fs-4xl));letter-spacing:-.015em;font-weight:600;line-height:1.04}.home-sub{font-size:var(--fs-lg);color:var(--ink-2);max-width:60ch;margin-top:12px}.home-date{font-family:var(--font-display);font-size:var(--fs-lg);color:var(--ink);text-align:right;flex-direction:column;align-items:flex-end;font-weight:600;display:flex}.home-date span{font-family:var(--font-ui);font-size:var(--fs-sm);color:var(--ink-3);text-transform:capitalize;font-weight:500}.home-grid{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:24px;display:grid}.home-sheet{background:var(--sheet);border:1.5px solid var(--ink);box-shadow:var(--shadow-lift);padding:14px;position:relative}.home-sheet .cm{background:var(--ink);position:absolute}.home-sheet .cm-t,.home-sheet .cm-b{width:1.5px;height:14px;left:50%;transform:translate(-50%)}.home-sheet .cm-t{top:0}.home-sheet .cm-b{bottom:0}.home-sheet .cm-l,.home-sheet .cm-r{width:14px;height:1.5px;top:50%;transform:translateY(-50%)}.home-sheet .cm-l{left:0}.home-sheet .cm-r{right:0}.home-sheet-inner{border:1px solid var(--ink);background:var(--sheet)}.home-sheet-drawing{aspect-ratio:640/340;cursor:crosshair}.home-sheet-drawing .preview-svg{width:100%;height:100%;display:block}.home-sheet-drawing .thumb-bg{fill:var(--sheet)}.home-sheet-foot{border-top:1px solid var(--ink);grid-template-columns:minmax(0,1fr) minmax(280px,380px);display:grid}.home-sheet-cta{flex-direction:column;gap:6px;min-width:0;padding:18px 20px;display:flex}.home-sheet-kicker{font-size:var(--fs-sm);color:var(--redline);font-weight:600}.home-sheet.is-done .home-sheet-kicker{color:var(--ok)}.home-sheet-title{font-size:var(--fs-2xl);font-weight:600;line-height:1.12}.home-sheet-actions{flex-wrap:wrap;align-items:center;gap:14px;margin-top:10px;display:flex}.home-sheet-timer{font-size:var(--fs-sm);color:var(--ink-3);align-items:center;gap:6px;display:inline-flex}.title-block{border-collapse:collapse;border-left:1px solid var(--ink);width:100%;font-size:var(--fs-sm);table-layout:fixed}.title-block th,.title-block td{border-bottom:1px solid var(--ink);border-right:1px solid var(--ink);text-align:left;vertical-align:top;text-overflow:ellipsis;white-space:nowrap;padding:6px 9px;overflow:hidden}.title-block tr:last-child th,.title-block tr:last-child td{border-bottom:0}.title-block th,.title-block td:last-child{border-right:0}.title-block td+th{border-left:1px solid var(--ink)}.title-block th{width:76px;color:var(--ink-3);font-weight:500;font-size:var(--fs-xs)}.title-block td{color:var(--ink);font-weight:500}.title-block td:not(:last-child){border-right:1px solid var(--ink)}.home-side{flex-direction:column;gap:16px;display:flex}.home-streak,.home-progress{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-2);flex-direction:column;gap:14px;padding:18px;display:flex}.home-streak-num{color:var(--ink-3);align-items:baseline;gap:8px;display:flex}.home-streak-num svg{align-self:center}.home-streak-num b{font-family:var(--font-display);font-size:var(--fs-4xl);color:var(--ink-2);font-weight:700;line-height:.9}.home-streak-num span{font-size:var(--fs-sm)}.home-streak.on .home-streak-num,.home-streak.on .home-streak-num b{color:var(--redline)}.home-streak.on .home-streak-num svg{transform-origin:50% 90%;animation:2.4s ease-in-out infinite home-flame}@keyframes home-flame{50%{transform:scale(1.1)rotate(-4deg)}}.streak-week{justify-content:space-between;gap:4px;display:flex}.streak-dot{color:var(--ink-3);text-transform:capitalize;flex-direction:column;align-items:center;gap:5px;font-size:11px;display:flex}.streak-dot i{border:1.5px dashed var(--rule-strong);border-radius:50%;width:24px;height:24px}.streak-dot.hit i{background:var(--redline);box-shadow:inset 0 0 0 4px color-mix(in srgb, var(--sheet) 25%, transparent);border:0}.streak-dot.today{color:var(--ink);font-weight:600}.streak-dot.today i{outline:1.5px solid var(--ink);outline-offset:2px}.streak-best{font-size:var(--fs-xs);color:var(--ink-3)}.home-progress h3{font-size:var(--fs-lg)}.dim-ruler{padding:24px 0 6px;position:relative}.dim-ruler:before,.dim-ruler:after{content:"";background:var(--ink-3);width:1px;height:22px;position:absolute;bottom:0}.dim-ruler:before{left:0}.dim-ruler:after{right:0}.dim-ruler-track{background:var(--ink-3);height:1px;display:block;position:relative}.dim-ruler-track:before,.dim-ruler-track:after{content:"";background:var(--ink);width:1px;height:11px;position:absolute;top:-5px;transform:rotate(45deg)}.dim-ruler-track:before{left:0}.dim-ruler-track:after{right:0}.dim-ruler-fill{height:5px;width:calc(var(--p,0) * 1%);background:var(--accent);animation:home-grow 1.1s var(--ease) .2s backwards;transform-origin:0;position:absolute;top:-2px;left:0}@keyframes home-grow{0%{transform:scaleX(0)}}.dim-ruler-label{color:var(--ink);background:var(--sheet);white-space:nowrap;padding:0 6px;font-size:13px;position:absolute;top:0;left:50%;transform:translate(-50%)}.home-stats{grid-template-columns:1fr 1fr;gap:10px;display:grid}.home-stats div{border:1px solid var(--rule);border-radius:var(--r-1);padding:10px 12px}.home-stats dt{font-size:var(--fs-xs);color:var(--ink-3)}.home-stats dd{font-family:var(--font-display);font-size:var(--fs-xl);color:var(--ink);font-weight:700}.home-stats dd small{font-size:var(--fs-sm);color:var(--ink-3);font-weight:500}.home-progress .btn-text-sm{align-self:flex-start;padding-left:0}.home-quick{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.home-quick-item{text-align:left;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-2);grid-template-rows:auto auto auto;grid-template-columns:auto 1fr;place-items:center start;gap:4px 10px;padding:16px;display:grid}.home-quick-item .layer-swatch{grid-area:1/1}.home-quick-ico{color:var(--ink-3);transition:transform .25s var(--ease), color .2s;grid-area:1/2;justify-self:end}.home-quick-item b{font-family:var(--font-display);font-size:var(--fs-lg);color:var(--ink);grid-column:1/-1;margin-top:8px;font-weight:600}.home-quick-item span{font-size:var(--fs-sm);color:var(--ink-3);grid-column:1/-1;line-height:1.4}.home-quick-item:hover{border-color:var(--ink-3);box-shadow:var(--shadow-paper);transform:translateY(-2px)}.home-quick-item:hover .home-quick-ico{color:var(--layer);transform:translate(2px)}.home-next{flex-direction:column;gap:12px;display:flex}.home-next-head{justify-content:space-between;align-items:center;display:flex}.home-next-head h3{font-size:var(--fs-xl)}.home-next-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.home-next-card{text-align:left;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-2);flex-direction:column;align-items:stretch;gap:0;display:flex;overflow:hidden}.home-next-card:hover{border-color:var(--ink-3);box-shadow:var(--shadow-paper)}.home-next-thumb{aspect-ratio:220/140;border-bottom:1px solid var(--rule);display:block}.home-next-thumb .preview-svg{width:100%;height:100%;display:block}.home-next-meta{flex-direction:column;gap:2px;padding:12px 14px 14px;display:flex}.home-next-meta small{font-size:var(--fs-xs);color:var(--ink-3)}.home-next-meta b{font-family:var(--font-display);font-size:var(--fs-lg);color:var(--ink);font-weight:600}.home-next-meta .mono{color:var(--ink-3);font-size:12px}@media (width<=1180px){.home-grid{grid-template-columns:minmax(0,1fr)}.home-side{grid-template-columns:1fr 1fr;display:grid}.home-quick{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.home-page{gap:22px;padding:24px 16px 56px}.home-head{align-items:flex-start}.home-date{text-align:left;align-items:flex-start}.home-sheet{padding:8px}.home-sheet .cm{display:none}.home-sheet-foot{grid-template-columns:minmax(0,1fr)}.title-block{border-left:0;border-top:1px solid var(--ink)}.home-side,.home-quick,.home-next-grid{grid-template-columns:minmax(0,1fr)}}.practice-library-wrapper{width:100%;max-width:1280px;margin:0 auto;padding:40px 40px 72px}.library-header-banner{border-bottom:1.5px solid var(--ink);grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:18px 32px;margin-bottom:28px;padding-bottom:20px;display:grid}.library-header-banner h2{font-size:var(--fs-4xl);letter-spacing:-.015em;font-weight:600;line-height:1}.library-header-banner p{font-size:var(--fs-lg);max-width:62ch;margin-top:10px}.library-tally{color:var(--ink-3);font-size:var(--fs-sm);white-space:nowrap;align-items:baseline;gap:6px;display:flex}.library-tally b{font-family:var(--font-display);font-size:var(--fs-3xl);color:var(--ink);font-weight:700;line-height:1}.library-tools{flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;align-items:center;gap:16px;display:flex}.category-filter-bar{flex-wrap:wrap;gap:6px;display:flex}.cat-filter-btn{font-size:var(--fs-sm);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:99px;gap:8px;padding:7px 14px}.cat-filter-btn small{font-family:var(--font-mono);color:var(--ink-3);font-size:11px}.cat-filter-btn:hover{border-color:var(--ink-3);color:var(--ink)}.cat-filter-btn.active{background:var(--ink);border-color:var(--ink);color:var(--sheet);font-weight:600}.cat-filter-btn.active small{color:color-mix(in srgb, var(--sheet) 70%, transparent)}.library-search input{width:min(320px,80vw);font-size:var(--fs-sm);background:var(--sheet) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2375808a' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 11px center;border:1px solid var(--rule-strong);border-radius:99px;outline:none;padding:8px 12px 8px 34px;transition:border-color .15s,box-shadow .15s}.library-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.library-empty{text-align:center;border:1px dashed var(--rule-strong);border-radius:var(--r-2);background:var(--sheet);padding:40px}.drawings-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;display:grid}.drawing-card{cursor:pointer;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-2);transition:border-color .2s var(--ease), box-shadow .25s var(--ease), transform .25s var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.drawing-card:hover{border-color:var(--ink-3);box-shadow:var(--shadow-lift);transform:translateY(-3px)}.drawing-card.is-done{border-color:color-mix(in srgb, var(--ok) 40%, var(--rule))}.card-preview-window{aspect-ratio:220/140;border-bottom:1px solid var(--rule);position:relative;overflow:hidden}.preview-svg{width:100%;height:100%;display:block}.card-badges-row{gap:6px;display:flex;position:absolute;bottom:10px;left:10px}.diff-badge,.step-count-pill{border-radius:var(--r-1);background:var(--sheet);border:1px solid var(--rule-strong);color:var(--ink-2);padding:2px 8px;font-size:11.5px;font-weight:600}.diff-badge:before{content:"";vertical-align:0;border-radius:1px;width:7px;height:7px;margin-right:6px;display:inline-block}.diff-badge.green:before{background:var(--layer-3)}.diff-badge.orange:before{background:var(--layer-2)}.diff-badge.purple:before{background:var(--layer-6)}.step-count-pill{font-family:var(--font-mono);font-weight:500}.done-ribbon{z-index:2;color:#fff;background:var(--ok);border-radius:99px;align-items:center;gap:4px;padding:3px 9px;font-size:11.5px;font-weight:600;display:inline-flex;position:absolute;top:10px;right:10px}.card-info{flex-direction:column;flex:1;padding:16px 18px;display:flex}.category-text{font-size:var(--fs-xs);color:var(--ink-3);margin-bottom:2px}.card-title{font-size:var(--fs-xl);margin-bottom:6px;font-weight:600}.card-desc{font-size:var(--fs-sm);color:var(--ink-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;flex:1;margin-bottom:14px;display:-webkit-box;overflow:hidden}.key-commands-list{flex-wrap:wrap;gap:5px;margin-bottom:14px;display:flex}.cmd-pill{font-family:var(--font-mono);color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-1);padding:1px 7px;font-size:11.5px;font-weight:500}.card-footer-meta{border-top:1px solid var(--rule);justify-content:space-between;align-items:center;padding-top:12px;display:flex}.meta-item{font-size:var(--fs-xs);color:var(--ink-3);align-items:center;gap:6px;display:flex}.btn-link-action{color:var(--accent);font-weight:600;font-size:var(--fs-sm);gap:6px;padding:0}.btn-link-action svg{transition:transform .2s var(--ease)}.drawing-card:hover .btn-link-action svg{transform:translate(3px)}.thumb-bg{fill:var(--sheet)}.thumb-grid{stroke:var(--grid-major)}.thumb-axis{stroke:var(--redline);stroke-width:.7px;stroke-dasharray:3 3;opacity:.45}html:not([data-theme=dark]) .preview-svg .geom{stroke:var(--ink)}.preview-svg .geom-cl{stroke:var(--redline)!important}html[data-theme=dark] .thumb-bg{fill:#14171c}.preview-svg .plot-stroke{animation:.9s cubic-bezier(.65,0,.35,1) backwards lib-plot;animation-delay:calc(.15s + var(--i,0) * 45ms);animation-play-state:paused}.preview-svg .plot-fade{animation:.6s ease-out backwards lib-fade;animation-delay:calc(.15s + var(--i,0) * 45ms);animation-play-state:paused}.preview-svg.in-view .plot-stroke,.preview-svg.in-view .plot-fade{animation-play-state:running}.preview-svg.replot .plot-stroke{animation-name:lib-plot-again;animation-duration:.7s;animation-delay:calc(var(--i,0) * 22ms)}.preview-svg.replot .plot-fade{animation-name:lib-fade-again;animation-delay:calc(var(--i,0) * 22ms)}@keyframes lib-plot{0%{stroke-dasharray:1 1;stroke-dashoffset:1px}to{stroke-dasharray:1 1;stroke-dashoffset:0}}@keyframes lib-plot-again{0%{stroke-dasharray:1 1;stroke-dashoffset:1px}to{stroke-dasharray:1 1;stroke-dashoffset:0}}@keyframes lib-fade{0%{opacity:0}}@keyframes lib-fade-again{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.preview-svg .plot-stroke,.preview-svg .plot-fade{animation:none!important}}@media (width<=760px){.practice-library-wrapper{padding:24px 16px 56px}.library-header-banner{grid-template-columns:minmax(0,1fr)}.library-header-banner h2{font-size:var(--fs-3xl)}.library-search,.library-search input{width:100%}.drawings-grid{grid-template-columns:minmax(0,1fr)}}.tutorial-split-layout{flex:1;height:100%;min-height:0;display:flex;overflow:hidden}.viewport-section{background:var(--screen);border-right:1px solid var(--rule-strong);flex-direction:column;flex:1.3;min-width:0;height:100%;display:flex;position:relative}.collab-host{position:relative}.cad-canvas-wrapper{flex-direction:column;width:100%;height:100%;display:flex;position:relative}.canvas-toolbar{z-index:10;background:var(--screen-2);border-bottom:1px solid var(--screen-rule);height:46px;color:var(--screen-ink);justify-content:space-between;align-items:center;gap:12px;padding:0 12px;display:flex}.canvas-info-badge{min-width:0;font-size:var(--fs-sm);color:var(--screen-ink);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:8px;font-weight:500;display:flex;overflow:hidden}.dot{background:var(--screen-green);border-radius:50%;flex:none;width:8px;height:8px}.element-count-tag{font-family:var(--font-mono);color:var(--screen-ink-2);border:1px solid var(--screen-rule);border-radius:var(--r-1);padding:1px 7px;font-size:11px}.canvas-controls{flex:none;align-items:center;gap:4px;display:flex}.tool-btn{height:30px;font-size:var(--fs-xs);color:var(--screen-ink-2);border-radius:var(--r-1);background:0 0;border:1px solid #0000;gap:6px;padding:0 9px}.tool-btn:hover,.tool-btn.active{color:var(--screen-ink);border-color:var(--screen-rule);background:#ffffff0f}.tool-btn.active-highlight{color:var(--screen-ink);border-color:var(--screen-rule)}.tool-btn.play-btn{color:#0f1520;background:var(--screen-cyan);border-color:var(--screen-cyan);font-weight:600}.tool-btn.play-btn:hover{filter:brightness(1.1)}.tool-btn.play-btn.playing{background:#ff7a66;border-color:#ff7a66}.btn-label{font-family:var(--font-mono);font-size:11px}.toolbar-divider{background:var(--screen-rule);width:1px;height:20px;margin:0 4px}.canvas-viewport-container{cursor:crosshair;flex:1;position:relative;overflow:hidden}.cad-html-canvas{width:100%;height:100%;display:block}.cad-status-bar{z-index:5;font-family:var(--font-mono);color:var(--screen-ink-2);border:1px solid var(--screen-rule);border-radius:var(--r-1);pointer-events:none;background:#14151be0;gap:16px;padding:4px 10px;font-size:11px;display:flex;position:absolute;bottom:12px;right:12px}.cad-status-bar strong{color:var(--screen-ink);font-weight:500}.status-item{align-items:center;gap:6px;display:flex}.cad-status-bar .text-cyan{color:var(--screen-cyan)}.canvas-step-overlay{z-index:5;border:1px solid var(--screen-rule);background:#1c1e27eb;border-radius:99px;align-items:center;gap:4px;padding:3px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.overlay-nav-btn{width:28px;height:28px;color:var(--screen-ink-2);border-radius:50%}.overlay-nav-btn:hover:not(:disabled){color:var(--screen-ink);background:#ffffff14}.overlay-nav-btn:disabled{opacity:.3}.overlay-step-counter{font-size:var(--fs-xs);color:var(--screen-ink-2);padding:0 6px}.overlay-step-counter strong{color:var(--screen-ink)}.canvas-active-cmd-chip{z-index:5;border:1px solid var(--screen-rule);border-left:3px solid var(--screen-green);border-radius:var(--r-1);pointer-events:none;max-width:calc(50% - 90px);animation:ds-pop .3s var(--ease) both;background:#1c1e27eb;align-items:center;gap:8px;padding:6px 10px;display:flex;position:absolute;top:12px;left:12px}.chip-indicator{background:var(--screen-green);border-radius:50%;flex:none;width:6px;height:6px;animation:1.6s ease-in-out infinite ds-pulse}.chip-cmd-name{font-family:var(--font-mono);color:var(--screen-cyan);font-size:12px;font-weight:600}.chip-step-title{font-size:var(--fs-xs);color:var(--screen-ink-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.guide-aside{background:var(--sheet);flex-direction:column;flex:1;min-width:360px;max-width:560px;height:100%;display:flex;overflow-y:auto}.step-guide-container{flex-direction:column;gap:18px;padding:22px 24px 28px;display:flex}.guide-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.guide-title-block{min-width:0}.back-link-btn{font-size:var(--fs-sm);color:var(--ink-3);gap:6px;margin-bottom:6px;padding:0}.back-link-btn:hover{color:var(--ink)}.title-row{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.title-row h2{font-size:var(--fs-2xl);font-weight:600;line-height:1.1}.category-tag{font-size:var(--fs-xs);color:var(--ink-2);border:1px solid var(--rule-strong);white-space:nowrap;border-radius:99px;padding:1px 8px;font-weight:500}.guide-header-actions{flex-wrap:wrap;gap:6px;display:flex}.step-nav-bar{flex-direction:column;gap:10px;display:flex}.progress-info{font-size:var(--fs-sm);color:var(--ink-2);justify-content:space-between;margin-bottom:6px;display:flex}.progress-info strong{color:var(--ink)}.percent-text{font-family:var(--font-mono);color:var(--ink-3);font-size:12px}.progress-track{background:var(--rule);border-radius:0;height:4px;position:relative;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .35s var(--ease)}.step-pills-row{flex-wrap:wrap;gap:4px;display:flex}.step-pill{width:30px;height:30px;font-family:var(--font-mono);color:var(--ink-3);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-1);font-size:12px;font-weight:500}.step-pill:hover{color:var(--ink);border-color:var(--ink-3)}.step-pill.completed{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, transparent);background:var(--ok-soft)}.step-pill.active{color:var(--sheet);background:var(--ink);border-color:var(--ink)}.uploaded-image-preview-panel{border:1px solid var(--rule);border-radius:var(--r-2);background:var(--paper);padding:10px 12px}.panel-toggle-bar{justify-content:space-between;align-items:center;gap:8px;display:flex}.panel-title{font-size:var(--fs-sm);color:var(--ink);align-items:center;gap:6px;font-weight:600;display:flex}.original-img-box{border:1px solid var(--rule);border-radius:var(--r-1);background:#fff;justify-content:center;align-items:center;max-height:220px;margin-top:10px;display:flex;overflow:hidden}.original-img-box img{object-fit:contain;max-width:100%;max-height:220px}.smart-drawing-correction-banner{background:var(--warn-soft);border:1px solid color-mix(in srgb, var(--warn) 35%, transparent);border-left:4px solid var(--warn);border-radius:var(--r-1);animation:ds-rise .3s var(--ease) both;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.correction-banner-header{align-items:center;gap:8px;display:flex}.correction-banner-header .banner-title{color:var(--ink);font-weight:600}.banner-desc{font-size:var(--fs-sm);color:var(--ink-2)}.banner-desc strong{color:var(--ink)}.correction-banner-btns{flex-wrap:wrap;gap:8px;display:flex}.btn-switch-correct-drawing{font-size:var(--fs-sm);border-radius:var(--r-1);text-align:left;gap:8px;padding:8px 12px;font-weight:600}.btn-switch-correct-drawing.primary{color:var(--accent-ink);background:var(--accent)}.btn-switch-correct-drawing.secondary{color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong)}.btn-switch-correct-drawing:hover{filter:brightness(1.05);transform:translateY(-1px)}.active-step-card{background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--r-2);flex-direction:column;gap:16px;padding:20px;display:flex}.step-card-header{flex-direction:column;gap:4px;display:flex}.step-num-badge{font-family:var(--font-mono);color:var(--redline);text-transform:none;font-size:12px;font-weight:500}.step-num-badge span{text-transform:lowercase}.step-num-badge span:first-letter{text-transform:uppercase}.step-title{font-size:var(--fs-xl);font-weight:600;line-height:1.25}.step-explanation p{font-size:var(--fs-md);color:var(--ink-2);max-width:66ch;line-height:1.6}.step-command-highlight{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-1);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex;position:relative}.cmd-chip-left{align-items:center;gap:10px;display:flex}.cmd-chip-btn{text-align:left;border-radius:var(--r-1);margin:-2px -6px;padding:2px 6px}.cmd-chip-btn:hover{background:var(--accent-soft)}.cmd-icon-wrap{width:34px;height:34px;color:var(--screen-cyan);background:var(--screen);border-radius:var(--r-1);flex:none;place-items:center;display:grid}.cmd-chip-names{flex-direction:column;display:flex}.cmd-primary-name{font-family:var(--font-mono);color:var(--ink);font-size:15px;font-weight:600}.cmd-sub-name{font-size:var(--fs-xs);color:var(--ink-3)}.cmd-info-ico{vertical-align:-2px;color:var(--ink-3);margin-left:6px;transition:color .2s,transform .2s}.cmd-chip-btn:hover .cmd-info-ico{color:var(--accent);transform:scale(1.15)}.cmd-shortcut-tag{align-items:center;gap:8px;display:flex}.shortcut-label{font-size:var(--fs-xs);color:var(--ink-3)}.shortcut-key{padding:3px 10px;font-size:13px}.cad-command-simulator{background:var(--screen);border:1px solid var(--screen-rule);border-radius:var(--r-1);overflow:hidden}.sim-header{background:var(--screen-2);border-bottom:1px solid var(--screen-rule);justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:flex}.sim-dots{gap:5px;display:flex}.sim-dot{background:var(--screen-rule);border-radius:50%;width:8px;height:8px}.sim-title{font-family:var(--font-mono);color:var(--screen-ink-2);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11px;overflow:hidden}.copy-seq-btn{color:var(--screen-cyan);gap:5px;padding:3px 8px;font-size:11.5px}.copy-seq-btn:hover{background:#ffffff0f}.copy-seq-btn .text-green{color:var(--screen-green)}.sim-terminal-screen{font-family:var(--font-mono);flex-direction:column;gap:4px;padding:12px 14px;font-size:12.5px;display:flex}.terminal-line{align-items:flex-start;gap:8px;line-height:1.45;display:flex}.line-prefix{color:var(--screen-cyan);font-weight:600}.line-text{color:var(--screen-ink)}.pro-tip-box{background:linear-gradient(transparent 0, var(--highlighter) 0);box-shadow:inset 3px 0 0 var(--warn);border-radius:2px;padding:12px 14px}.tip-header{font-size:var(--fs-sm);color:var(--ink);align-items:center;gap:6px;margin-bottom:4px;font-weight:600;display:flex}.tip-header .text-warning{color:var(--warn)}.tip-text{font-size:var(--fs-sm);color:var(--ink);line-height:1.55}.step-actions-footer{border-top:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-top:16px;display:flex}.completion-checkbox-label{font-size:var(--fs-sm);color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:flex}.completion-checkbox-label input{width:16px;height:16px;accent-color:var(--ok);cursor:pointer}.nav-buttons-group{gap:8px;display:flex}.cmd-card-pop{z-index:40;background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);width:min(380px,92vw);box-shadow:var(--shadow-float);animation:ds-pop .22s var(--ease) both;padding:16px;position:absolute;top:calc(100% + 8px);left:0}.cmd-card-close{z-index:2;width:28px;height:28px;color:var(--ink-3);border:1px solid var(--rule);border-radius:var(--r-1);position:absolute;top:10px;right:10px}.cmd-card-close:hover{color:var(--ink);border-color:var(--rule-strong)}.cmd-card-head{align-items:center;gap:10px;margin-bottom:10px;padding-right:34px;display:flex}.cmd-card-head h4{font-family:var(--font-mono);font-size:16px;font-weight:600}.cmd-card-head h4 small{font-family:var(--font-ui);font-size:var(--fs-sm);color:var(--ink-3);font-weight:500}.cmd-card-icon{width:34px;height:34px;color:var(--screen-cyan);background:var(--screen);border-radius:var(--r-1);flex:none;place-items:center;display:grid}.cmd-card-cat{font-size:var(--fs-xs);color:var(--ink-3)}.cmd-card-kbd{font-family:var(--font-mono);align-items:center;gap:4px;margin-left:auto;font-size:12px;display:inline-flex}.cmd-card-desc{font-size:var(--fs-sm);color:var(--ink-2);margin-bottom:10px}.cmd-card-block b{font-size:var(--fs-xs);color:var(--ink)}.cmd-card-block p{font-size:var(--fs-sm);color:var(--ink-2);margin:2px 0 10px}.cmd-card-tip{font-size:var(--fs-sm);color:var(--ink);background:var(--highlighter);border-radius:2px;gap:8px;padding:9px 10px;display:flex}.cmd-card-tip p{color:var(--ink)}.ai-chat-fab{z-index:70;width:54px;height:54px;color:var(--accent-ink);background:var(--accent);box-shadow:var(--shadow-float);animation:ds-pop .35s var(--ease) both;border-radius:50%;position:fixed;bottom:22px;right:22px}.ai-chat-fab:hover{transform:scale(1.06)}.ai-chat-fab.open{background:var(--ink);color:var(--sheet)}.ai-chat-panel{z-index:70;background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);width:min(380px,100vw - 24px);height:min(540px,100vh - 130px);box-shadow:var(--shadow-float);transform-origin:100% 100%;animation:ds-pop .25s var(--ease) both;flex-direction:column;display:flex;position:fixed;bottom:88px;right:22px;overflow:hidden}.ai-chat-head{border-bottom:1px solid var(--rule);align-items:center;gap:10px;padding:12px 14px;display:flex}.ai-chat-head b{font-family:var(--font-display);font-size:var(--fs-lg);display:block}.ai-chat-head small{font-size:var(--fs-xs);color:var(--ink-3)}.ai-chat-avatar{width:34px;height:34px;color:var(--accent-ink);background:var(--accent);border-radius:50%;flex:none;place-items:center;display:grid}.ai-chat-list{background:var(--paper);flex-direction:column;flex:1;gap:10px;padding:14px;display:flex;overflow-y:auto}.ai-chat-empty{text-align:center;color:var(--ink-3);justify-items:center;gap:8px;margin:auto;display:grid}.ai-chat-empty svg{color:var(--accent)}.ai-chat-empty p{color:var(--ink-2)}.ai-chat-suggest{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:6px;display:flex}.ai-chat-suggest button{font-size:var(--fs-xs);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:99px;padding:6px 10px}.ai-chat-suggest button:hover{border-color:var(--accent);color:var(--ink)}.ai-msg{max-width:86%;font-size:var(--fs-sm);white-space:pre-wrap;word-break:break-word;border-radius:var(--r-3);padding:9px 12px;line-height:1.5;animation:.2s ease-out both ds-rise}.ai-msg.user{color:var(--accent-ink);background:var(--accent);border-bottom-right-radius:2px;align-self:flex-end}.ai-msg.model{color:var(--ink);background:var(--sheet);border:1px solid var(--rule);border-bottom-left-radius:2px;align-self:flex-start}.ai-msg.error{color:var(--bad);border-color:color-mix(in srgb, var(--bad) 40%, transparent)}.ai-msg.typing{gap:4px;padding:12px 14px;display:flex}.ai-msg.typing span{background:var(--ink-3);border-radius:50%;width:6px;height:6px;animation:1s infinite tut-dot}.ai-msg.typing span:nth-child(2){animation-delay:.15s}.ai-msg.typing span:nth-child(3){animation-delay:.3s}@keyframes tut-dot{50%{opacity:.4;transform:translateY(-4px)}}.ai-chat-input{border-top:1px solid var(--rule);gap:8px;padding:10px;display:flex}.ai-chat-input input{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-1);outline:none;flex:1;min-width:0;padding:9px 12px}.ai-chat-input input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.ai-chat-input button{width:42px;color:var(--accent-ink);background:var(--accent);border-radius:var(--r-1)}.ai-chat-input button:disabled{opacity:.4}.ai-chat-input button.stop{background:var(--bad);color:#fff}.collab-layer{z-index:20;pointer-events:none;position:absolute;inset:0}.collab-layer.pen{pointer-events:auto;cursor:crosshair}.collab-layer canvas{width:100%;height:100%;display:block}.collab-cursor{pointer-events:none;transition:left 80ms linear,top 80ms linear;position:absolute;transform:translate(-3px,-3px)}.collab-cursor span{white-space:nowrap;color:#0b1020;background:var(--c);border-radius:var(--r-1);padding:2px 7px;font-size:11px;font-weight:600;position:absolute;top:16px;left:16px}.collab-panel{left:calc(var(--side-w) + 20px);z-index:65;transition:left .28s var(--ease);position:fixed;bottom:20px}.has-rail .collab-panel{left:calc(var(--rail-w) + 16px)}.collab-fab{color:var(--sheet);background:var(--ink);box-shadow:var(--shadow-float);border-radius:99px;gap:8px;padding:10px 16px;font-weight:600}.collab-fab:hover{transform:translateY(-2px)}.collab-card{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);width:310px;box-shadow:var(--shadow-float);animation:ds-pop .22s var(--ease) both;flex-direction:column;gap:10px;padding:14px;display:flex}.collab-card.live{max-height:calc(100vh - 120px);overflow-y:auto}.collab-head{align-items:center;gap:8px;display:flex}.collab-head b{font-family:var(--font-display);font-size:var(--fs-lg);flex:1}.collab-x{width:28px;height:28px;color:var(--ink-3);border:1px solid var(--rule);border-radius:var(--r-1)}.collab-x:hover{color:var(--ink);border-color:var(--rule-strong)}.collab-x.danger:hover{color:var(--bad);border-color:var(--bad)}.collab-desc{font-size:var(--fs-sm);color:var(--ink-2);line-height:1.45}.collab-or{text-align:center;font-size:var(--fs-xs);color:var(--ink-3)}.collab-join{gap:8px;display:flex}.collab-join input{min-width:0;font-family:var(--font-mono);letter-spacing:.18em;background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--r-1);outline:none;flex:1;padding:8px 12px}.collab-join input:focus{border-color:var(--accent)}.live-dot{background:var(--ink-4);border-radius:50%;flex:none;width:9px;height:9px}.live-dot.live{background:var(--ok);animation:1.6s infinite tut-ping}.live-dot.connecting{background:var(--warn)}.live-dot.error{background:var(--bad)}@keyframes tut-ping{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--ok) 60%, transparent)}70%,to{box-shadow:0 0 0 8px #0000}}.collab-members{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.collab-members small{font-size:var(--fs-xs);color:var(--ink-3);margin-left:6px}.collab-avatar{color:#0b1020;background:var(--c);border:2px solid var(--sheet);border-radius:50%;place-items:center;width:30px;height:30px;margin-left:-6px;font-size:13px;font-weight:700;display:grid;position:relative}.collab-avatar:first-child{margin-left:0}.collab-avatar i{color:var(--sheet);background:var(--ink);border-radius:var(--r-1);padding:0 4px;font-size:9px;font-style:normal;position:absolute;bottom:-9px}.collab-tools{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.collab-tool{font-size:var(--fs-xs);color:var(--ink-2);border:1px solid var(--rule-strong);border-radius:var(--r-1);gap:5px;padding:6px 10px}.collab-tool.icon{padding:6px 8px}.collab-tool:hover{color:var(--ink);border-color:var(--ink-3)}.collab-tool.on{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.collab-swatch{border:2px solid var(--sheet);width:18px;height:18px;box-shadow:0 0 0 1px var(--rule-strong);border-radius:50%;padding:0}.collab-swatch.on{box-shadow:0 0 0 2px var(--ink);transform:scale(1.1)}.room-chat{border-top:1px solid var(--rule);flex-direction:column;gap:8px;padding-top:8px;display:flex}.room-chat-head{font-size:var(--fs-sm);justify-content:flex-start;gap:6px;padding:2px 0}.room-chat-head .grow{flex:1}.room-chat-badge{color:#fff;background:var(--redline);border-radius:99px;padding:0 7px;font-size:11px;font-weight:700}.room-chat-list{background:var(--paper);border-radius:var(--r-1);flex-direction:column;gap:6px;height:200px;padding:6px;display:flex;overflow-y:auto}.room-chat-empty{font-size:var(--fs-xs);color:var(--ink-3);margin:auto}.room-msg{background:var(--sheet);border:1px solid var(--rule);border-left:3px solid var(--c);border-radius:var(--r-2);flex-direction:column;align-self:flex-start;max-width:85%;padding:6px 10px;animation:.2s both ds-rise;display:flex}.room-msg.mine{color:var(--accent-ink);background:var(--accent);border-color:var(--accent);align-self:flex-end}.room-msg-name{color:var(--ink);font-size:11px;font-weight:700}.room-msg-text{font-size:var(--fs-sm);word-break:break-word;white-space:pre-wrap;line-height:1.4}.room-msg-time{opacity:.6;align-self:flex-end;font-size:10px}.room-chat-quick{flex-wrap:wrap;gap:4px;display:flex}.room-chat-quick button{color:var(--ink-2);border:1px solid var(--rule-strong);border-radius:99px;padding:3px 8px;font-size:11px}.room-chat-quick button:hover{border-color:var(--ink-3);color:var(--ink)}.room-chat-form{gap:6px;display:flex}.room-chat-form input{background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--r-1);outline:none;flex:1;min-width:0;padding:8px 10px}.room-chat-form input:focus{border-color:var(--accent)}.room-chat-form button{width:36px;color:var(--accent-ink);background:var(--accent);border-radius:var(--r-1)}.room-chat-form button:disabled{opacity:.4}@media (width<=1100px){.tutorial-split-layout{flex-direction:column;height:auto;overflow:visible}.view-tutorial .app-main{height:auto;overflow:visible}.viewport-section{border-right:0;border-bottom:1px solid var(--rule-strong);flex:none;height:62vh;min-height:380px}.guide-aside{min-width:0;max-width:none;height:auto;overflow:visible}}@media (width<=900px){.collab-panel,.has-rail .collab-panel{bottom:12px;left:12px}.ai-chat-fab{bottom:14px;right:14px}.ai-chat-panel{bottom:80px;right:12px}.canvas-toolbar .btn-label{display:none}}@media (width<=640px){.step-guide-container{padding:18px 16px 24px}.guide-header,.step-actions-footer{flex-direction:column;align-items:stretch}.nav-buttons-group{justify-content:space-between}.canvas-info-badge{display:none}.canvas-toolbar{justify-content:center}}.modal-backdrop{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:ds-fade .2s var(--ease) both;background:#141a2073;place-items:center;padding:20px;display:grid;position:fixed;inset:0}html[data-theme=dark] .modal-backdrop{background:#05080b9e}.modal-dialog{background:var(--sheet);width:min(560px,100%);max-height:calc(100vh - 40px);color:var(--ink);border:1px solid var(--rule-strong);border-radius:var(--r-3);box-shadow:var(--shadow-float);animation:ds-pop .28s var(--ease) both;flex-direction:column;display:flex;position:relative;overflow:hidden}.modal-dialog.modal-large{width:min(980px,100%)}.modal-header{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px 14px;display:flex}.modal-title-wrap{align-items:center;gap:12px;min-width:0;display:flex}.modal-title-wrap h2,.modal-title-wrap h3{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600;line-height:1.15}.modal-subtitle{color:var(--ink-3);font-size:var(--fs-sm);margin-top:2px}.modal-body{flex:1;padding:18px 20px;overflow-y:auto}.modal-footer{border-top:1px solid var(--rule);background:var(--sheet-2);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;padding:14px 20px;display:flex}.icon-badge{border-radius:var(--r-2);border:1px solid var(--rule-strong);background:var(--sheet-2);width:38px;height:38px;color:var(--ink-2);flex:none;place-items:center;display:grid}.icon-badge.primary{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-line)}.icon-badge.warning{color:var(--warn);background:var(--warn-soft);border-color:#0000}.icon-badge.accent{color:var(--redline);background:var(--redline-soft);border-color:#0000}.icon-btn-close{border-radius:var(--r-2);width:32px;height:32px;color:var(--ink-3);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;place-items:center;transition:color .15s,border-color .15s,background .15s;display:grid}.icon-btn-close:hover{color:var(--ink);border-color:var(--rule-strong);background:var(--sheet-2)}.info-banner{font-size:var(--fs-sm);color:var(--ink-2);background:var(--accent-soft);border-left:3px solid var(--accent);border-radius:var(--r-1);align-items:flex-start;gap:10px;margin-bottom:14px;padding:11px 13px;display:flex}.info-icon{color:var(--accent);flex:none;margin-top:1px}.guide-box{font-size:var(--fs-sm);color:var(--ink-2);background:var(--sheet-2);border:1px dashed var(--rule-strong);border-radius:var(--r-2);margin:12px 0;padding:12px 14px}.guide-box ol,.guide-box ul{gap:4px;padding-left:18px;display:grid}.note-text{font-size:var(--fs-xs);color:var(--ink-3);margin-top:8px}.link-with-icon{color:var(--accent);align-items:center;gap:5px;font-weight:600;text-decoration:none;display:inline-flex}.link-with-icon:hover{text-underline-offset:3px;text-decoration:underline}.modal-tabs{border-bottom:1px solid var(--rule);gap:2px;padding:0 20px;display:flex}.tab-btn{cursor:pointer;font:600 var(--fs-sm) var(--font-ui);color:var(--ink-3);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:7px;margin-bottom:-1px;padding:11px 14px;transition:color .15s,border-color .15s;display:inline-flex}.tab-btn:hover{color:var(--ink)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.dictionary-filter-bar{gap:10px;margin-bottom:16px;display:grid}.search-box{align-items:center;display:flex;position:relative}.search-icon{color:var(--ink-3);pointer-events:none;position:absolute;left:11px}.search-box input{width:100%;font:inherit;color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);outline:none;padding:10px 36px;transition:border-color .15s,box-shadow .15s}.search-box input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-clear-btn{border-radius:var(--r-1);width:26px;height:26px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;place-items:center;display:grid;position:absolute;right:6px}.search-clear-btn:hover{color:var(--ink);background:var(--sheet-2)}.category-pills{flex-wrap:wrap;gap:6px;display:flex}.pill-btn{cursor:pointer;font:500 var(--fs-xs) var(--font-ui);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:99px;padding:5px 11px;transition:color .15s,border-color .15s,background .15s}.pill-btn:hover{border-color:var(--ink-3);color:var(--ink)}.pill-btn.active{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.commands-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;display:grid}.command-card{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-2);flex-direction:column;gap:6px;padding:13px 14px;transition:border-color .15s,box-shadow .15s;display:flex}.command-card:hover{border-color:var(--rule-strong);box-shadow:var(--shadow-paper)}.cmd-header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.cmd-names{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.cmd-primary{font:600 var(--fs-md) var(--font-mono);color:var(--accent)}.cmd-secondary{font:500 var(--fs-xs) var(--font-mono);color:var(--ink-3)}.cmd-category-tag{color:var(--ink-3);border:1px solid var(--rule);border-radius:99px;flex:none;padding:2px 7px;font-size:11px}.cmd-desc{font-size:var(--fs-sm);color:var(--ink-2)}.cmd-usage{font:12px/1.5 var(--font-mono);color:var(--screen-ink);background:var(--screen);border-radius:var(--r-1);padding:6px 9px}.cmd-tip{font-size:var(--fs-xs);color:var(--ink-2);background:var(--highlighter);border-radius:2px;gap:6px;padding:6px 8px;display:flex}.tip-icon{color:var(--warn);flex:none;margin-top:1px}.fkeys-container{gap:14px;display:grid}.fkeys-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.fkey-card{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-2);align-items:center;gap:12px;padding:11px 13px;display:flex}.fkey-badge,.shortcut-badge{text-align:center;min-width:42px;font:600 var(--fs-xs) var(--font-mono);color:var(--ink);background:var(--sheet-2);border:1px solid var(--rule-strong);border-radius:var(--r-1);border-bottom-width:2px;flex:none;padding:4px 8px}.fkey-desc{font-size:var(--fs-sm);color:var(--ink-2)}.empty-state{text-align:center;color:var(--ink-3);justify-items:center;gap:8px;padding:40px 10px;display:grid}.code-preview-container{border:1px solid var(--screen-rule);border-radius:var(--r-2);margin-top:12px;overflow:hidden}.code-preview-header{font-size:var(--fs-xs);color:var(--screen-ink-2);background:var(--screen-2);border-bottom:1px solid var(--screen-rule);justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;display:flex}.code-preview-content{max-height:280px;font:12.5px/1.55 var(--font-mono);color:var(--screen-green);background:var(--screen);white-space:pre;margin:0;padding:12px;overflow:auto}.help-steps-list{gap:0;margin:0;padding:0;list-style:none;display:grid}.help-step-item{border-bottom:1px dashed var(--rule);gap:14px;padding:12px 0;display:flex}.help-step-item:last-child{border-bottom:0}.help-step-number{width:28px;height:28px;font:600 var(--fs-sm) var(--font-mono);color:var(--accent);border:1.5px solid var(--accent);border-radius:50%;flex:none;place-items:center;display:grid}.help-step-content h4{font-size:var(--fs-md);margin-bottom:2px;font-weight:600}.help-step-content p{font-size:var(--fs-sm);color:var(--ink-2)}.quiz-dialog,.check-dialog{width:min(540px,100%);padding:24px;overflow-y:auto}.check-dialog{width:min(640px,100%);max-height:92vh}.check-dialog.wide{width:min(1100px,100%)}.quiz-head{align-items:center;gap:12px;margin-bottom:16px;padding-right:34px;display:flex}.quiz-head h3{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600;line-height:1.15}.quiz-head p{color:var(--ink-3);font-size:var(--fs-sm);margin-top:2px}.quiz-icon{width:42px;height:42px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r-2);flex:none;place-items:center;display:grid}.quiz-progress{background:var(--rule);border-radius:99px;height:4px;margin-bottom:18px;overflow:hidden}.quiz-progress div{background:var(--accent);height:100%;transition:width .4s var(--ease)}.quiz-q{font-size:var(--fs-lg);margin-bottom:14px;font-weight:600}.quiz-options{grid-template-columns:1fr 1fr;gap:10px;display:grid}.quiz-opt{cursor:pointer;text-align:left;font:600 var(--fs-md) var(--font-mono);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);justify-content:space-between;align-items:center;gap:8px;padding:13px 14px;transition:transform .15s,border-color .15s,background .15s;display:flex}.quiz-opt:hover:not(:disabled){border-color:var(--accent);transform:translateY(-1px)}.quiz-opt.right{color:var(--ok);background:var(--ok-soft);border-color:var(--ok);animation:.4s md-bounce}.quiz-opt.wrong{color:var(--bad);background:var(--bad-soft);border-color:var(--bad);animation:.4s md-shake}.quiz-opt.dim{opacity:.45}@keyframes md-bounce{50%{transform:scale(1.03)}}@keyframes md-shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.quiz-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.quiz-foot small{color:var(--ink-3)}.quiz-wrong-text{color:var(--bad)}.quiz-result{text-align:center;padding:10px 0}.quiz-result h3{font-family:var(--font-display);font-size:var(--fs-4xl);color:var(--ink);font-weight:600}.quiz-result p{color:var(--ink-2);margin:6px 0 18px}.quiz-trophy{color:var(--warn);animation:md-trophy .9s var(--ease) both}@keyframes md-trophy{0%{opacity:0;transform:scale(.4)rotate(-20deg)}to{opacity:1;transform:none}}.check-drop{cursor:pointer;text-align:center;min-height:210px;color:var(--ink-3);background:linear-gradient(var(--grid-minor) 1px, transparent 1px) 0 0 / 10px 10px, linear-gradient(90deg, var(--grid-minor) 1px, transparent 1px) 0 0 / 10px 10px, var(--sheet-2);border:1.5px dashed var(--rule-strong);border-radius:var(--r-2);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:18px;transition:border-color .15s,color .15s;display:flex}.check-drop:hover{border-color:var(--accent);color:var(--ink-2)}.check-drop small{color:var(--ink-4);font-size:11.5px}.check-drop.has-img{border-style:solid;padding:6px}.check-drop img{border-radius:var(--r-1);max-width:100%;max-height:320px}.check-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:16px;display:flex}.check-result{align-content:start;gap:12px;display:grid}.check-score{flex:none;width:104px;height:104px;margin:0 auto;position:relative}.check-score svg{width:100%;height:100%;transform:rotate(-90deg)}.check-score path{fill:none;stroke-width:2.6px;stroke-linecap:round;stroke:var(--accent);animation:md-ring 1s var(--ease) both}.check-score.good path{stroke:var(--ok)}.check-score.mid path{stroke:var(--warn)}.check-score.bad path{stroke:var(--bad)}@keyframes md-ring{0%{stroke-dasharray:0 100}}.check-score span{font:600 30px var(--font-display);place-items:center;display:grid;position:absolute;inset:0}.check-summary{color:var(--ink-2);font-size:var(--fs-sm)}.check-list{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-2);padding:12px 14px}.check-list b{font-size:var(--fs-sm);align-items:center;gap:6px;margin-bottom:6px;display:flex}.check-list ul{font-size:var(--fs-sm);color:var(--ink-2);gap:4px;padding-left:18px;display:grid}.check-list.good b{color:var(--ok)}.check-list.bad b{color:var(--bad)}.check-list.tip b{color:var(--warn)}.check-grid{grid-template-columns:1.25fr 1fr;gap:20px;margin-top:14px;display:grid}.check-visual{min-width:0}.check-tabs{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.check-tabs button{cursor:pointer;font:500 var(--fs-xs) var(--font-ui);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);align-items:center;gap:6px;padding:6px 11px;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.check-tabs button.on{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-line)}.check-tabs button:disabled{opacity:.4;cursor:not-allowed}.check-tabs em{color:#fff;background:var(--bad);border-radius:99px;padding:0 6px;font-size:11px;font-style:normal}.check-stage{background:var(--screen);border:1px solid var(--rule-strong);border-radius:var(--r-2);position:relative;overflow:hidden}.check-stage img{width:100%;height:auto;display:block}.check-stage .check-ref{object-fit:fill;width:100%;height:100%;transition:opacity .15s;position:absolute;inset:0}.check-stage.mode-diff{isolation:isolate}.check-stage.mode-diff .check-ref{mix-blend-mode:difference}.check-box{cursor:pointer;border:2px solid var(--sc);background:color-mix(in srgb, var(--sc) 14%, transparent);border-radius:var(--r-1);padding:0;transition:box-shadow .15s;animation:2.2s ease-in-out infinite md-boxPulse;position:absolute}.check-box span{width:22px;height:22px;font:700 12px var(--font-mono);color:#fff;background:var(--sc);border-radius:50%;place-items:center;display:grid;position:absolute;top:-11px;left:-11px}.check-box.active{z-index:2;box-shadow:0 0 0 4px color-mix(in srgb, var(--sc) 35%, transparent);animation:none}@keyframes md-boxPulse{50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--sc) 25%, transparent)}}.sev-high{--sc:#e0452f}.sev-medium{--sc:#d99a1e}.sev-low{--sc:#2f8fd8}.check-slider{font-size:var(--fs-xs);color:var(--ink-2);align-items:center;gap:10px;margin-top:10px;display:flex}.check-slider input{accent-color:var(--accent);flex:1}.check-hint{font-size:var(--fs-xs);color:var(--ink-3);margin:8px 0 0}.check-score-row{align-items:center;gap:18px;display:flex}.check-cats{flex-direction:column;flex:1;gap:7px;display:flex}.check-cat{font-size:var(--fs-xs);color:var(--ink-2);grid-template-columns:120px 1fr 28px;align-items:center;gap:8px;display:grid}.check-cat b{font-family:var(--font-mono);text-align:right;color:var(--ink)}.check-bar{background:var(--rule);border-radius:99px;height:6px;overflow:hidden}.check-bar i{border-radius:inherit;height:100%;transition:width .8s var(--ease);display:block}.check-bar i.good{background:var(--ok)}.check-bar i.mid{background:var(--warn)}.check-bar i.bad{background:var(--bad)}.check-mistakes{flex-direction:column;gap:8px;margin:8px 0 0;padding:0;list-style:none;display:flex}.check-mistakes li{background:var(--sheet-2);border-left:3px solid var(--sc);border-radius:var(--r-1);gap:10px;padding:9px 10px;transition:background .15s,transform .15s;display:flex}.check-mistakes li.active{background:color-mix(in srgb, var(--sc) 12%, transparent);transform:translate(3px)}.check-mistakes p{font-size:var(--fs-sm);color:var(--ink);margin:4px 0 0}.mk-num{height:22px;font:700 12px var(--font-mono);color:#fff;background:var(--sc);border-radius:50%;flex:0 0 22px;place-items:center;display:grid}.sev-pill{color:var(--sc);margin-right:8px;font-size:11.5px;font-weight:600}.mk-dim{font:12px var(--font-mono);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-1);padding:1px 7px}.mk-dim b{color:var(--ok)}@media (width<=860px){.check-grid{grid-template-columns:1fr}}@media (width<=640px){.modal-backdrop{align-items:end;padding:10px}.modal-dialog{max-height:calc(100vh - 20px)}.quiz-options{grid-template-columns:1fr}.check-cat{grid-template-columns:90px 1fr 28px}.modal-tabs{padding:0 10px;overflow-x:auto}}.feature-page{flex-direction:column;gap:18px;width:min(1240px,100% - 48px);margin:28px auto 64px;display:flex}.feature-hero{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);box-shadow:var(--shadow-paper);padding:22px 26px;position:relative}.feature-hero:before{content:"";background:var(--hero-c,var(--accent));border-radius:0 2px 2px 0;width:3px;position:absolute;top:18px;bottom:18px;left:-1px}.feature-hero.row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;display:flex}.feature-hero h2{font-family:var(--font-display);font-size:var(--fs-2xl);margin:4px 0 6px;font-weight:600;line-height:1.1}.feature-hero p{max-width:720px;color:var(--ink-2);margin:0;line-height:1.55}.feature-eyebrow{font-size:var(--fs-sm);color:var(--ink-3);align-items:center;gap:6px;font-weight:500;display:inline-flex}.feature-eyebrow svg{color:var(--hero-c,var(--accent))}.feature-loading{color:var(--ink-3);place-items:center;padding:60px;display:grid}.game-page .feature-hero{--hero-c:var(--layer-2)}.exam-page .feature-hero{--hero-c:var(--layer-1)}.community-page .feature-hero{--hero-c:var(--layer-6)}.panel-box,.exam-box,.exam-side,.game-board,.progress-card{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-3);padding:20px}.image-uploader-wrapper{width:min(920px,100% - 48px);margin:32px auto 64px}.uploader-card{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);box-shadow:var(--shadow-paper);padding:32px}.uploader-header{margin-bottom:24px}.step-badge{font:500 var(--fs-xs) var(--font-mono);color:var(--accent);border:1px solid var(--accent-line);border-radius:99px;margin-bottom:8px;padding:2px 9px;display:inline-block}.uploader-header h2{font-family:var(--font-display);font-size:var(--fs-2xl);margin-bottom:6px;font-weight:600;line-height:1.15}.uploader-header .subtitle,.subtitle{font-size:var(--fs-md);color:var(--ink-2);max-width:680px}.dropzone-container{text-align:center;cursor:pointer;background:linear-gradient(var(--grid-major) 1px, transparent 1px) 0 0 / 50px 50px, linear-gradient(90deg, var(--grid-major) 1px, transparent 1px) 0 0 / 50px 50px, linear-gradient(var(--grid-minor) 1px, transparent 1px) 0 0 / 10px 10px, linear-gradient(90deg, var(--grid-minor) 1px, transparent 1px) 0 0 / 10px 10px, var(--paper);border:1.5px dashed var(--rule-strong);border-radius:var(--r-3);padding:46px 24px 28px;transition:border-color .2s,background-color .2s;position:relative}.dropzone-container:hover,.dropzone-container.drag-active{border-color:var(--accent)}.dropzone-container.drag-active{background-color:var(--accent-soft)}.hidden-file-input{display:none}.upload-icon-circle{width:72px;height:72px;color:var(--accent);background:var(--sheet);border:1px solid var(--rule-strong);transition:transform .3s var(--ease);border-radius:50%;place-items:center;margin:0 auto 16px;display:grid}.dropzone-container:hover .upload-icon-circle,.dropzone-container.drag-active .upload-icon-circle{transform:translateY(-4px)}.dropzone-content h3{font-size:var(--fs-lg);margin-bottom:4px;font-weight:600}.dropzone-content p{font-size:var(--fs-sm);color:var(--ink-3);margin-bottom:14px}.dropzone-content p strong{color:var(--accent)}.paste-tip-badge{font-size:var(--fs-xs);color:var(--ink);background:var(--highlighter);border-radius:2px;margin-bottom:10px;padding:5px 12px;display:inline-block}.file-types-hint{color:var(--ink-4);font-size:11.5px;display:block}.quick-samples-bar{border-top:1px dashed var(--rule-strong);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-top:26px;padding-top:20px;display:flex}.samples-label{font-size:var(--fs-xs);color:var(--ink-3)}.sample-pill-btn,.smart-pill-btn{cursor:pointer;font:500 var(--fs-xs) var(--font-ui);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:99px;align-items:center;gap:6px;padding:6px 13px;transition:color .15s,border-color .15s,transform .15s;display:inline-flex}.sample-pill-btn:hover,.smart-pill-btn:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-1px)}.smart-pill-btn{text-align:left;padding:8px 14px}.smart-pill-btn.highlight{color:var(--ok);border-color:var(--ok);background:var(--ok-soft)}.preview-container{flex-direction:column;gap:18px;display:flex}.preview-toolbar{background:var(--sheet-2);border:1px solid var(--rule);border-radius:var(--r-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.file-info{min-width:0;font-size:var(--fs-sm);align-items:center;gap:8px;font-weight:500;display:flex}.filename-text{font-family:var(--font-mono);font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.preview-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tool-btn-sm{cursor:pointer;font:500 var(--fs-xs) var(--font-ui);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);align-items:center;gap:5px;padding:5px 9px;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.tool-btn-sm:hover,.tool-btn-sm.active{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.preview-canvas-box{background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--r-2);justify-content:center;align-items:center;height:380px;display:flex;position:relative;overflow:hidden}.image-viewport{justify-content:center;align-items:center;max-width:100%;max-height:100%;transition:transform .15s ease-out;display:flex}.image-viewport img{object-fit:contain;max-width:100%;max-height:360px}.image-viewport.inverted-filter img{filter:invert()hue-rotate(180deg)contrast(1.1)}.preview-canvas-box:has(.inverted-filter){background:var(--screen)}.smart-match-box{background:var(--accent-soft);border-left:3px solid var(--accent);border-radius:var(--r-1);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.smart-match-header{font-size:var(--fs-sm);color:var(--ink);align-items:center;gap:8px;font-weight:500;display:flex}.smart-match-buttons{flex-wrap:wrap;gap:8px;display:flex}.user-note-input-wrap label{font-size:var(--fs-sm);color:var(--ink-2);margin-bottom:6px;font-weight:500;display:block}.error-banner{color:var(--bad);background:var(--bad-soft);border-left:3px solid var(--bad);border-radius:var(--r-1);gap:12px;padding:13px 15px;display:flex}.error-content p{color:var(--ink);font-size:var(--fs-sm);margin-bottom:8px}.error-actions{flex-wrap:wrap;gap:8px;display:flex}.analysis-cta-bar{border-top:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding-top:16px;display:flex}.api-status-info{min-width:0}.action-buttons-group{flex-wrap:wrap;gap:10px;display:flex}.status-badge{cursor:pointer;font-size:var(--fs-xs);border-radius:99px;align-items:center;gap:6px;padding:5px 11px;font-weight:500;display:inline-flex}.status-badge.success{color:var(--ok);background:var(--ok-soft)}.status-badge.warning{color:var(--warn);background:var(--warn-soft)}.progress-page{gap:20px;width:min(1180px,100% - 48px);margin:28px auto 64px;display:grid}.progress-hero{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);box-shadow:var(--shadow-paper);align-items:center;gap:28px;padding:24px 26px;display:flex}.progress-ring{--p:0;background:conic-gradient(var(--accent) calc(var(--p) * 1%), var(--rule) 0);width:128px;height:128px;animation:ds-pop .5s var(--ease) both;border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.progress-ring:before{content:"";background:var(--sheet);border-radius:50%;position:absolute;inset:8px}.progress-ring:after{content:"";pointer-events:none;background:linear-gradient(var(--redline), var(--redline)) 50% 0 / 1px 10px no-repeat, linear-gradient(var(--redline), var(--redline)) 50% 100% / 1px 10px no-repeat, linear-gradient(var(--redline), var(--redline)) 0 50% / 10px 1px no-repeat, linear-gradient(var(--redline), var(--redline)) 100% 50% / 10px 1px no-repeat;position:absolute;inset:-8px}.progress-ring span{font:600 28px var(--font-display);position:relative}.progress-hero-text{flex:1;min-width:0}.progress-hero-text h2{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:600}.progress-hero-text p{color:var(--ink-2);margin:4px 0 14px}.progress-stats{border:1px solid var(--rule);border-radius:var(--r-2);flex-wrap:wrap;gap:0;width:fit-content;max-width:100%;display:flex}.progress-stats div{border-right:1px solid var(--rule);min-width:110px;padding:9px 18px}.progress-stats div:last-child{border-right:0}.progress-stats strong{font:600 var(--fs-xl) var(--font-mono);color:var(--ink);display:block}.progress-stats span{font-size:var(--fs-xs);color:var(--ink-3)}.progress-grid{grid-template-columns:1.3fr 1fr;align-items:start;gap:20px;display:grid}.progress-card h3{font-family:var(--font-display);font-size:var(--fs-lg);align-items:center;gap:8px;margin-bottom:14px;font-weight:600;display:flex}.progress-card h3 svg{color:var(--accent)}.badge-grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:10px;display:grid}.badge-tile{text-align:center;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-2);transition:transform .2s var(--ease), border-color .2s;justify-items:center;gap:3px;padding:14px 8px;display:grid}.badge-tile b{font-size:var(--fs-sm);font-weight:600}.badge-tile small{color:var(--ink-3);font-size:11.5px}.badge-emoji{place-items:center;height:38px;font-size:30px;line-height:1.2;display:grid}.badge-tile.earned{border-color:var(--warn);background:var(--warn-soft)}.badge-tile.earned:hover{transform:translateY(-2px)rotate(-1deg)}.badge-tile.locked{opacity:.5;filter:grayscale();border-style:dashed}.leader-list{gap:0;margin:0;padding:0;list-style:none;display:grid}.leader-list li{border-bottom:1px dashed var(--rule);align-items:center;gap:10px;padding:10px 4px;display:flex}.leader-list li:last-child{border-bottom:0}.leader-list li.me{background:var(--highlighter);border-radius:2px;padding-inline:8px}.leader-rank{width:26px;font:600 var(--fs-sm) var(--font-mono);color:var(--ink-3);place-items:center;display:grid}.rank-1 .leader-rank{color:var(--layer-2)}.rank-2 .leader-rank{color:var(--ink-2)}.rank-3 .leader-rank{color:var(--layer-1)}.leader-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:500;overflow:hidden}.leader-count{font:500 var(--fs-xs) var(--font-mono);color:var(--ok)}.leader-quiz{font-size:var(--fs-xs);color:var(--ink-3)}.done-item{cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;border:0;border-bottom:1px dashed var(--rule);background:0 0}.done-item:hover{color:var(--accent)}.game-grid{grid-template-columns:1fr 300px;align-items:start;gap:18px;display:grid}.game-arena{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);flex-direction:column;gap:16px;min-height:440px;padding:24px;display:flex;position:relative;overflow:hidden}.game-center{text-align:center;flex-direction:column;align-items:center;gap:14px;margin:auto;display:flex}.game-hero-icon{color:var(--layer-2)}.game-hero-icon.gold{animation:1.6s ease-in-out infinite pg-wiggle}@keyframes pg-wiggle{50%{transform:rotate(-6deg)scale(1.06)}}.game-rules{font-size:var(--fs-sm);color:var(--ink-2);text-align:left;gap:6px;margin:0;padding:0;list-style:none;display:grid}.game-hud{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.game-score{font:600 34px var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);flex:1}.game-combo,.game-time{font:600 var(--fs-sm) var(--font-mono);font-variant-numeric:tabular-nums;background:var(--sheet-2);border:1px solid var(--rule);border-radius:99px;align-items:center;gap:5px;padding:5px 11px;display:inline-flex}.game-combo.hot{color:var(--warn);border-color:var(--warn);background:var(--warn-soft)}.game-combo b{color:var(--warn)}.game-time.low{color:var(--bad);border-color:var(--bad);background:var(--bad-soft);animation:.8s ease-in-out infinite ds-pulse}.game-timebar{background:var(--rule);border-radius:99px;height:4px;overflow:hidden}.game-timebar i{background:var(--layer-2);height:100%;transition:width .1s linear;display:block}.game-card{text-align:center;background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-2);animation:ds-rise .25s var(--ease) both;margin:auto 0;padding:28px}.game-cat{font-size:var(--fs-sm);color:var(--accent);font-weight:500}.game-desc{font-size:var(--fs-xl);margin:10px 0 0;line-height:1.45}.game-form input{text-align:center;text-transform:uppercase;width:100%;font:600 24px var(--font-mono);letter-spacing:.12em;color:var(--screen-green);background:var(--screen);border:1px solid var(--screen-rule);border-radius:var(--r-2);caret-color:var(--screen-green);outline:none;padding:15px 18px}.game-form input:focus{border-color:var(--layer-2);box-shadow:0 0 0 3px color-mix(in srgb, var(--layer-2) 25%, transparent)}.game-flash{pointer-events:none;white-space:nowrap;font:600 26px var(--font-display);animation:.9s forwards pg-flash;position:absolute;top:42%;left:50%;transform:translate(-50%)}.game-flash.ok{color:var(--ok)}.game-flash.bad{color:var(--bad);font-size:18px}@keyframes pg-flash{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-46px)}}.game-final{font:600 64px var(--font-mono);color:var(--ink);line-height:1}.game-record{color:var(--ok);font-weight:600}.game-stats{font-size:var(--fs-sm);color:var(--ink-2);flex-wrap:wrap;justify-content:center;gap:18px;display:flex}.game-review{text-align:left;max-width:520px;font-size:var(--fs-sm)}.game-review ul{gap:4px;margin:6px 0 0;padding-left:18px;display:grid}.game-board h3{font-family:var(--font-display);font-size:var(--fs-lg);align-items:center;gap:6px;margin:0 0 12px;font-weight:600;display:flex}.game-board h3 svg{color:var(--layer-2)}.game-board ol{margin:0;padding:0;list-style:none;display:grid}.game-board li{border-bottom:1px dashed var(--rule);font-size:var(--fs-sm);align-items:center;gap:10px;padding:8px 4px;display:flex}.game-board li:last-child{border-bottom:0}.game-board li.me{background:var(--highlighter);border-radius:2px;padding-inline:8px}.game-board .rank{text-align:center;width:24px;font-family:var(--font-mono);color:var(--ink-3)}.game-board .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.exam-setup{grid-template-columns:1.3fr 1fr;align-items:start;gap:18px;display:grid}.exam-box,.exam-side{flex-direction:column;gap:12px;display:flex}.exam-box h3{font-size:var(--fs-md);align-items:center;gap:6px;margin:4px 0 0;font-weight:600;display:flex}.exam-box h3 small{color:var(--ink-3);margin-left:auto;font-weight:400}.exam-picks{flex-wrap:wrap;gap:8px;display:flex}.exam-pick{cursor:pointer;font:500 var(--fs-sm) var(--font-ui);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);align-items:center;gap:6px;padding:8px 13px;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.exam-pick:hover{border-color:var(--ink-3);color:var(--ink)}.exam-pick.on{color:var(--layer-1);border-color:var(--layer-1);background:var(--redline-soft)}.exam-picks select,.exam-select{min-width:200px;font:inherit;color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);flex:1;padding:8px 11px}.exam-rules{font-size:var(--fs-sm);color:var(--ink-2);gap:4px;margin:4px 0;padding-left:18px;display:grid}.exam-run{flex-direction:column;gap:12px;display:flex}.exam-topbar{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);flex-wrap:wrap;align-items:center;gap:14px;padding:10px 14px;display:flex}.exam-title{flex:1;align-items:center;gap:6px;min-width:0;font-weight:600;display:inline-flex}.exam-title svg{color:var(--layer-1)}.exam-clock{font:600 22px var(--font-mono);font-variant-numeric:tabular-nums;color:var(--screen-green);background:var(--screen);border-radius:var(--r-2);align-items:center;gap:6px;padding:3px 12px;display:inline-flex}.exam-clock.low{color:var(--layer-2)}.exam-clock.over{color:#ff7a66;animation:.9s ease-in-out infinite ds-pulse}.exam-body{grid-template-columns:1fr 340px;gap:12px;display:grid}.exam-stage.viewport-section{border:1px solid var(--screen-rule);border-radius:var(--r-3);flex:none;height:600px;min-height:0;overflow:hidden}.exam-stage .canvas-step-overlay,.exam-stage .canvas-active-cmd-chip,.exam-stage .play-btn{display:none!important}.exam-side h3{font-family:var(--font-display);font-size:var(--fs-lg);margin:0;font-weight:600}.exam-side p{font-size:var(--fs-sm);margin:0}.exam-result{flex-direction:column;gap:16px;display:flex}.exam-grade-card{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);box-shadow:var(--shadow-paper);align-items:center;gap:24px;padding:22px 24px;display:flex}.exam-letter{width:104px;height:104px;font:600 44px var(--font-display);color:var(--g,var(--ink));border:2px solid var(--g,var(--ink));background:color-mix(in srgb, var(--g,var(--ink)) 9%, transparent);animation:ds-pop .45s var(--ease) both;border-radius:50%;flex:0 0 104px;place-items:center;display:grid}.g-AA,.g-BA{--g:var(--layer-3)}.g-BB,.g-CB{--g:var(--layer-5)}.g-CC,.g-DC{--g:var(--layer-2)}.g-DD,.g-FF{--g:var(--layer-1)}.exam-final{font:600 48px var(--font-mono);line-height:1}.exam-final small{color:var(--ink-3);font-size:18px}.exam-breakdown{font-size:var(--fs-sm);color:var(--ink-2);flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.exam-breakdown .neg{color:var(--bad)}.exam-breakdown .pos{color:var(--ok)}.exam-feedback{grid-template-columns:1fr 1fr;gap:14px;display:grid}.exam-actions{flex-wrap:wrap;gap:10px;display:flex}.exam-history ul{margin:0;padding:0;list-style:none;display:grid}.exam-history li{border-bottom:1px dashed var(--rule);font-size:var(--fs-sm);align-items:center;gap:10px;padding:8px 2px;display:flex}.exam-history li:last-child{border-bottom:0}.exam-history li b{font-family:var(--font-mono)}.exam-history .t{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.exam-mini{width:32px;height:22px;font:600 11px var(--font-mono);color:var(--g,var(--ink));border:1px solid var(--g,var(--ink));border-radius:var(--r-1);flex:none;place-items:center;display:grid}.community-toolbar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.seg{background:var(--sheet-2);border:1px solid var(--rule);border-radius:var(--r-2);padding:3px;display:inline-flex}.seg button{cursor:pointer;font:500 var(--fs-sm) var(--font-ui);color:var(--ink-3);border-radius:var(--r-1);background:0 0;border:0;padding:6px 13px;transition:color .15s,background .15s}.seg button:hover{color:var(--ink)}.seg button.on{color:var(--ink);background:var(--sheet);box-shadow:var(--shadow-paper)}.community-search{color:var(--ink-3);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);align-items:center;gap:6px;margin-left:auto;padding:7px 11px;display:inline-flex}.community-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.community-search input{width:200px;color:var(--ink);font:inherit;background:0 0;border:0;outline:none}.community-list{flex-direction:column;gap:8px;display:flex}.community-item{cursor:pointer;text-align:left;font:inherit;color:inherit;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-3);transition:border-color .15s, transform .15s var(--ease), box-shadow .15s;align-items:flex-start;gap:14px;padding:14px 16px;display:flex}.community-item:hover{border-color:var(--rule-strong);box-shadow:var(--shadow-paper);transform:translateY(-1px)}.community-item.solved{border-left:3px solid var(--ok)}.ci-avatar{width:38px;height:38px;font:600 var(--fs-sm) var(--font-ui);color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:50%;flex:0 0 38px;place-items:center;display:grid}.ci-avatar.sm{flex-basis:28px;width:28px;height:28px;font-size:12px}.ci-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.ci-main b{font-weight:600}.ci-main small{color:var(--ink-3)}.ci-body{font-size:var(--fs-sm);color:var(--ink-2)}.ci-meta{font-size:var(--fs-xs);flex-direction:column;align-items:flex-end;gap:6px;display:flex}.ci-count{color:var(--ink-3);align-items:center;gap:4px;display:inline-flex}.ci-solved{font-size:var(--fs-xs);color:var(--ok);align-items:center;gap:4px;font-weight:600;display:inline-flex}.community-composer{flex-direction:column;gap:12px;width:min(640px,100%);max-height:92vh;padding:24px;display:flex;overflow:auto}.community-composer h3{font-family:var(--font-display);font-size:var(--fs-xl);margin:0 0 4px;font-weight:600}.community-composer .check-drop img{object-fit:contain;width:auto;max-height:260px}.cc-input,.reply-form textarea{width:100%;font:inherit;color:var(--ink);resize:vertical;background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);outline:none;padding:10px 13px;transition:border-color .15s,box-shadow .15s}.cc-input:focus,.reply-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.btn-secondary.back{align-self:flex-start;align-items:center;gap:6px;display:inline-flex}.post-card{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);box-shadow:var(--shadow-paper);flex-direction:column;gap:14px;padding:22px;display:flex}.post-card.solved{border-left:3px solid var(--ok)}.post-head{align-items:center;gap:12px;display:flex}.post-head>div{flex:1;min-width:0}.post-head h2{font-family:var(--font-display);font-size:var(--fs-xl);margin:0;font-weight:600}.post-head small{color:var(--ink-3)}.post-body{white-space:pre-wrap;margin:0;line-height:1.6}.post-img{cursor:zoom-in;border:1px solid var(--rule);border-radius:var(--r-2);background:#fff;align-self:flex-start;max-width:100%;max-height:460px}.post-img.zoom{cursor:zoom-out;max-height:none}.post-actions{flex-wrap:wrap;gap:8px;display:flex}.post-actions button{align-items:center;gap:6px;display:inline-flex}.replies-title{font-size:var(--fs-md);color:var(--ink-2);margin:6px 0 0;font-weight:600}.replies{flex-direction:column;gap:10px;display:flex}.reply{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-3);padding:13px 15px}.reply.accepted{border-color:var(--ok);background:var(--ok-soft)}.reply.teacher{border-left:3px solid var(--layer-6)}.reply-head{font-size:var(--fs-sm);align-items:center;gap:8px;display:flex}.reply-head small{color:var(--ink-3)}.reply-head .grow{flex:1}.teacher-pill{color:var(--layer-6);background:color-mix(in srgb, var(--layer-6) 12%, transparent);border-radius:99px;align-items:center;gap:3px;padding:1px 7px;font-size:11px;font-weight:600;display:inline-flex}.reply-btn{cursor:pointer;color:var(--ink-3);border-radius:var(--r-1);background:0 0;border:0;padding:4px}.reply-btn:hover{color:var(--ink);background:var(--sheet-2)}.reply-body{white-space:pre-wrap;line-height:1.55;font-size:var(--fs-md);margin:8px 0 0}.reply-form{align-items:flex-end;gap:10px;display:flex}.reply-form textarea{flex:1}@media (width<=960px){.exam-body{grid-template-columns:1fr}}@media (width<=900px){.game-grid,.exam-setup,.progress-grid{grid-template-columns:1fr}}@media (width<=800px){.exam-feedback{grid-template-columns:1fr}}@media (width<=640px){.feature-page,.progress-page,.image-uploader-wrapper{width:calc(100% - 24px);margin-top:16px}.uploader-card{padding:20px 16px}.preview-canvas-box{height:280px}.progress-hero,.exam-grade-card{text-align:center;flex-direction:column}.progress-stats{margin-inline:auto}.exam-stage.viewport-section{height:62vh}.community-search{width:100%;margin-left:0}.community-search input{width:100%}.game-final{font-size:48px}.game-desc{font-size:var(--fs-lg)}}.admin-overlay{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:ds-fade .2s var(--ease) both;background:#141a2073;place-items:center;padding:20px;display:grid;position:fixed;inset:0}html[data-theme=dark] .admin-overlay{background:#05080b9e}.admin-panel{width:min(1000px,100%);max-height:calc(100vh - 40px);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-3);box-shadow:var(--shadow-float);animation:ds-pop .3s var(--ease) both;flex-direction:column;display:flex;overflow:hidden}.admin-head{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.admin-head-title{color:var(--layer-1);align-items:center;gap:10px;display:flex}.admin-head h2{font-family:var(--font-display);font-size:var(--fs-xl);color:var(--ink);margin:0;font-weight:600}.admin-stats{border:1px solid var(--rule);border-radius:var(--r-2);grid-template-columns:repeat(3,1fr);margin:16px 20px 0;display:grid;overflow:hidden}.admin-stats div{border-right:1px solid var(--rule);padding:12px 16px}.admin-stats div:last-child{border-right:0}.admin-stats strong{font:600 var(--fs-2xl) var(--font-mono);color:var(--ink);line-height:1.1;display:block}.admin-stats span{font-size:var(--fs-xs);color:var(--ink-3)}.admin-tabs{border-bottom:1px solid var(--rule);gap:2px;padding:12px 20px 0;display:flex;overflow-x:auto}.admin-tabs button{cursor:pointer;white-space:nowrap;font:600 var(--fs-sm) var(--font-ui);color:var(--ink-3);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;padding:9px 13px;transition:color .15s,border-color .15s;display:flex}.admin-tabs button:hover{color:var(--ink)}.admin-tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.admin-body{padding:16px 20px 20px;overflow-y:auto}.admin-toolbar{gap:8px;margin-bottom:12px;display:flex}.admin-search{color:var(--ink-3);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);flex:1;align-items:center;gap:8px;padding:0 11px;display:flex}.admin-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.admin-search input{font:inherit;color:var(--ink);background:0 0;border:0;outline:0;flex:1;padding:9px 0}.admin-icon-btn{cursor:pointer;width:34px;height:34px;color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);place-items:center;transition:color .15s,border-color .15s,background .15s;display:grid}.admin-icon-btn:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.admin-icon-btn.danger:hover{color:var(--bad);border-color:var(--bad);background:var(--bad-soft)}.admin-icon-btn:disabled{opacity:.4;cursor:not-allowed}.admin-table-wrap{border:1px solid var(--rule);border-radius:var(--r-2);overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.admin-table th{text-align:left;font-weight:500;font-size:var(--fs-xs);color:var(--ink-3);background:var(--sheet-2);border-bottom:1px solid var(--rule);padding:8px 12px}.admin-table td{color:var(--ink-2);border-bottom:1px solid var(--rule);padding:10px 12px}.admin-table tbody tr:last-child td{border-bottom:0}.admin-table tbody tr{transition:background .15s}.admin-table tbody tr:hover{background:var(--accent-soft)}.admin-table tr.blocked{opacity:.55}.admin-user-cell{align-items:center;gap:10px;display:flex}.admin-avatar{width:32px;height:32px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.admin-user-name{color:var(--ink);font-weight:600}.admin-user-mail{font:12px var(--font-mono);color:var(--ink-3)}.admin-actions{justify-content:flex-end;gap:6px;display:flex}.admin-card{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-3);margin-bottom:14px;padding:16px 18px}.admin-card h3{font-size:var(--fs-md);margin:0 0 4px;font-weight:600}.admin-card p{color:var(--ink-3);font-size:var(--fs-sm);margin:0 0 12px}.admin-card textarea{resize:vertical;width:100%;font:12.5px/1.5 var(--font-mono);color:var(--screen-ink);background:var(--screen);border:1px solid var(--screen-rule);border-radius:var(--r-2);outline:0;margin-bottom:10px;padding:10px}.admin-card textarea:focus{border-color:var(--accent)}.stat-bars{background:repeating-linear-gradient(to top, var(--rule) 0 1px, transparent 1px 36px);border-bottom:1px solid var(--ink-3);align-items:flex-end;gap:6px;height:180px;padding:18px 0 0;display:flex}.stat-bar{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;min-width:0;height:100%;display:flex}.stat-bar-fill{background:var(--accent);transform-origin:bottom;width:100%;min-height:2px;animation:ad-grow .7s var(--ease) both;border-radius:2px 2px 0 0}.stat-bar:hover .stat-bar-fill{background:var(--layer-4)}@keyframes ad-grow{0%{transform:scaleY(0)}}.stat-bar-val{font:11px var(--font-mono);color:var(--ink-2)}.stat-bar-label{color:var(--ink-3);white-space:nowrap;font-size:10.5px}.stat-hbars{gap:8px;display:grid}.stat-hbar{font-size:var(--fs-sm);grid-template-columns:minmax(120px,34%) 1fr 34px;align-items:center;gap:10px;display:grid}.stat-hbar>b,.stat-hbar>span:last-child{font-family:var(--font-mono);text-align:right}.stat-hbar-name{text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);overflow:hidden}.stat-hbar-track{background:var(--sheet-2);border:1px solid var(--rule);border-radius:2px;height:8px;overflow:hidden}.stat-hbar-track div{background:var(--accent);transform-origin:0;height:100%;animation:ad-growX .8s var(--ease) both}@keyframes ad-growX{0%{transform:scaleX(0)}}@media (width<=640px){.admin-overlay{padding:8px}.admin-stats{grid-template-columns:1fr}.admin-stats div{border-right:0;border-bottom:1px solid var(--rule)}.admin-stats div:last-child{border-bottom:0}.stat-hbar{grid-template-columns:1fr 34px}.stat-hbar-track{grid-area:2/1/auto/-1}}@property --p{syntax:"<number>";inherits:true;initial-value:0}@keyframes mo-rise{0%{opacity:0;translate:0 18px}}@keyframes mo-rise-sm{0%{opacity:0;translate:0 10px}}@keyframes mo-slide-in{0%{opacity:0;translate:-14px}}@keyframes mo-pop{0%{opacity:0;scale:.6}70%{opacity:1;scale:1.12}to{scale:1}}@keyframes mo-fade{0%{opacity:0}}@keyframes mo-reveal{0%{opacity:0;translate:0 34px;scale:.96}}@keyframes mo-p{0%{--p:0}}@keyframes mo-spin{to{rotate:360deg}}@keyframes mo-float{50%{translate:0 -8px}}@keyframes mo-marker{to{background-size:100% 100%}}@keyframes mo-wiggle{25%{rotate:-12deg}50%{rotate:9deg}75%{rotate:-5deg}}.app-main{position:relative}.plot-sweep{top:0;bottom:0;left:var(--side-w);z-index:45;pointer-events:none;position:fixed;right:0;overflow:hidden}.has-rail .plot-sweep{left:var(--rail-w)}.plot-sweep:before{content:"";background-color:var(--paper);background-image:linear-gradient(var(--grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--grid-major) 1px, transparent 1px), linear-gradient(var(--grid-minor) 1px, transparent 1px), linear-gradient(90deg, var(--grid-minor) 1px, transparent 1px);background-size:50px 50px,50px 50px,10px 10px,10px 10px;animation:.75s cubic-bezier(.65,0,.35,1) forwards mo-curtain;position:absolute;inset:0}.view-tutorial .plot-sweep:before{background:var(--screen)}.plot-sweep:after{content:"";background:linear-gradient(var(--redline), var(--redline)) 50% 50% / 14px 2px no-repeat, var(--accent);width:2px;box-shadow:0 0 0 4px var(--accent-soft), 0 0 28px 6px var(--accent-soft);animation:.75s cubic-bezier(.65,0,.35,1) forwards mo-head;position:absolute;top:0;bottom:0;left:0}@keyframes mo-curtain{0%{clip-path:inset(0)}to{clip-path:inset(0 0 0 100%)}}@keyframes mo-head{0%{opacity:1;left:0}88%{opacity:1}to{opacity:0;left:100%}}.cad-cursor{z-index:44;pointer-events:none;opacity:0;transition:opacity .25s;position:fixed;inset:0}.cad-cursor.is-on{opacity:1}.cc-h,.cc-v,.cc-box,.cc-coord{will-change:transform;position:absolute;top:0;left:0}.cc-h{left:var(--left,0);background:var(--accent);opacity:.22;height:1px;transform:translateY(var(--cy,-10px));transition:opacity .2s;right:0}.cc-v{background:var(--accent);opacity:.22;width:1px;transform:translateX(var(--cx,-10px));transition:opacity .2s;bottom:0}.cc-box{border:1px solid var(--accent);width:12px;height:12px;transform:translate(calc(var(--cx,-20px) - 6px), calc(var(--cy,-20px) - 6px));transition:opacity .2s}.cc-coord{transform:translate(calc(var(--cx,-99px) + 14px), calc(var(--cy,-99px) + 14px));white-space:nowrap;font:500 10.5px var(--font-mono);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:2px;padding:1px 6px;transition:opacity .2s}.cad-cursor.is-busy .cc-h,.cad-cursor.is-busy .cc-v{opacity:.1}.cad-cursor.is-busy .cc-box,.cad-cursor.is-busy .cc-coord{opacity:0}.cad-cursor.is-click .cc-box{animation:mo-click .35s var(--ease)}@keyframes mo-click{0%{scale:1}40%{border-color:var(--redline);scale:2.2}to{scale:1}}.main-content-area>:not(.tutorial-split-layout)>:not(.modal-backdrop){animation:mo-rise .6s var(--ease) backwards;animation-delay:calc(var(--s,0) * 80ms + .12s)}.main-content-area>*>:nth-child(2){--s:1}.main-content-area>*>:nth-child(3){--s:2}.main-content-area>*>:nth-child(4){--s:3}.main-content-area>*>:nth-child(5){--s:4}.main-content-area>*>:nth-child(n+6){--s:5}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>*{animation:mo-rise-sm .5s var(--ease) backwards;animation-delay:calc(var(--k,0) * 60ms + .22s);--k:0}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>:nth-child(2){--k:1}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>:nth-child(3){--k:2}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>:nth-child(4){--k:3}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>:nth-child(5){--k:4}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>:nth-child(6){--k:5}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>:nth-child(7){--k:6}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>:nth-child(8){--k:7}:is(.drawings-grid,.home-quick,.home-next-grid,.home-side,.badge-grid,.community-list,.leader-list,.progress-stats,.exam-picks,.game-board ol,.commands-grid,.fkeys-grid,.admin-stats,.help-steps-list,.replies,.exam-history ul,.check-mistakes,.smart-match-buttons,.category-filter-bar)>:nth-child(n+9){--k:8}@supports (animation-timeline:view()){:is(.drawings-grid,.community-list,.badge-grid,.commands-grid)>:nth-child(n+7){animation:linear both mo-reveal;animation-timeline:view();animation-range:entry cover 22%}}.side-nav>*{animation:mo-slide-in .45s var(--ease) backwards}.side-nav>:first-child{animation-delay:.1s}.side-nav>:nth-child(2){animation-delay:.15s}.side-nav>:nth-child(3){animation-delay:.2s}.side-nav>:nth-child(4){animation-delay:.25s}.side-nav>:nth-child(5){animation-delay:.3s}.side-nav>:nth-child(6){animation-delay:.35s}.side-nav>:nth-child(7){animation-delay:.4s}.side-nav>:nth-child(8){animation-delay:.45s}.side-nav>:nth-child(n+9){animation-delay:.5s}.side-tools{animation:.6s .45s backwards mo-fade}.nav-btn .layer-swatch{transition:rotate .35s var(--ease), scale .35s var(--ease), transform .2s var(--ease)}.nav-btn:hover .layer-swatch{rotate:45deg;scale:1.3}.nav-btn .nav-ico{transition:color .18s, translate .25s var(--ease)}.nav-btn:hover .nav-ico{translate:2px}.nav-btn.active:before{animation:mo-mark .4s var(--ease)}@keyframes mo-mark{0%{scale:1 0}}.nav-btn.active .layer-swatch{animation:mo-pop .4s var(--ease)}.nav-btn:after{content:"";background:var(--layer);transform-origin:0;height:1px;transition:scale .3s var(--ease);position:absolute;bottom:5px;left:10px;right:10px;scale:0 1}.nav-btn:hover:not(.active):after{scale:1}.side.is-rail .nav-btn:after{display:none}.side-brand-mark{animation:24s linear infinite mo-spin}.side-streak.on svg,.streak-chip.on svg{transform-origin:50% 90%;animation:1.8s ease-in-out infinite mo-flame}@keyframes mo-flame{0%,to{rotate:0deg;scale:1}30%{rotate:-5deg;scale:1.12 1.18}60%{rotate:4deg;scale:.96 1.05}}.btn-primary{isolation:isolate;position:relative;overflow:hidden}.btn-primary:after{content:"";z-index:-1;pointer-events:none;transition:translate .7s var(--ease);background:linear-gradient(110deg,#0000 30%,#ffffff61 50%,#0000 70%);position:absolute;inset:0;translate:-130%}.btn-primary:hover:not(:disabled):after{translate:130%}.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled),.home-quick-item:active,.drawing-card:active,.exam-pick:active,.quiz-opt:active:not(:disabled){scale:.97}.btn-primary svg,.btn-secondary svg{transition:translate .25s var(--ease), rotate .3s var(--ease)}.btn-primary:hover:not(:disabled) svg:last-child:not(:first-child){translate:3px}.home-sheet:not(.is-done) #daily-start-btn{animation:2.6s ease-out 1.4s infinite mo-ring}@keyframes mo-ring{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 45%, transparent)}70%,to{box-shadow:0 0 0 14px color-mix(in srgb, var(--accent) 0%, transparent)}}.home-head{isolation:isolate;position:relative}.home-greet{animation:1.1s cubic-bezier(.65,0,.35,1) .2s backwards mo-write}@keyframes mo-write{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}.home-date{animation:.8s .6s backwards mo-fade}.home-deco{z-index:-1;pointer-events:none;opacity:.6;width:300px;height:auto;animation:1.2s .5s backwards mo-fade;position:absolute;top:-38px;right:170px}.home-deco path,.home-deco line,.home-deco circle{fill:none;stroke:var(--ink-3);stroke-width:1.1px;stroke-linejoin:round}.home-deco .thin{stroke-width:.6px}.home-deco .deco-protractor path:first-child{fill:color-mix(in srgb, var(--accent) 5%, transparent)}.home-deco .deco-square path:first-child{fill:color-mix(in srgb, var(--layer-4) 7%, transparent);stroke:color-mix(in srgb, var(--layer-4) 60%, var(--ink-3))}.home-deco .deco-pencil path:first-child{fill:color-mix(in srgb, var(--layer-2) 18%, transparent);stroke:color-mix(in srgb, var(--layer-2) 70%, var(--ink-3))}.deco-protractor{transform-box:view-box;transform-origin:150px 180px;animation:9s ease-in-out infinite mo-sway}.deco-square{transform-box:view-box;transform-origin:285px 120px;animation:7s ease-in-out infinite mo-drift}.deco-pencil{transform-box:view-box;transform-origin:180px 158px;animation:3.6s ease-in-out infinite mo-sketch}@keyframes mo-sway{50%{rotate:-4deg}}@keyframes mo-drift{50%{translate:-6px -7px;rotate:3deg}}@keyframes mo-sketch{0%,to{translate:0;rotate:0deg}25%{translate:-10px 4px;rotate:-3deg}50%{translate:4px -2px;rotate:2deg}75%{translate:-4px 6px;rotate:-1deg}}.home-sheet{animation:.85s cubic-bezier(.2,.8,.2,1) .15s backwards mo-place}@keyframes mo-place{0%{opacity:0;translate:0 34px;rotate:-1.6deg;scale:.98}}.home-sheet .cm-t,.home-sheet .cm-b{animation:mo-grow-y .5s var(--ease) .8s backwards}.home-sheet .cm-l,.home-sheet .cm-r{animation:mo-grow-x .5s var(--ease) .8s backwards}@keyframes mo-grow-y{0%{scale:1 0}}@keyframes mo-grow-x{0%{scale:0 1}}.home-sheet:hover{box-shadow:0 30px 60px -24px #1b212659}.home-sheet{transition:box-shadow .4s var(--ease)}.title-block tr{animation:.45s backwards mo-fade}.title-block tr:first-child{animation-delay:.9s}.title-block tr:nth-child(2){animation-delay:1s}.title-block tr:nth-child(3){animation-delay:1.1s}.title-block tr:nth-child(4){animation-delay:1.2s}.home-sheet-kicker{animation:1s steps(2,end) .7s backwards mo-blink-in}@keyframes mo-blink-in{0%,50%{opacity:0}}.streak-dot i{animation:mo-pop .45s var(--ease) backwards;animation-delay:calc(var(--i,0) * 80ms + .5s)}.streak-dot.today i{position:relative}.streak-dot.today i:after{content:"";border:1.5px solid var(--redline);opacity:0;border-radius:50%;animation:2.2s ease-out 1.4s infinite mo-ping;position:absolute;inset:-6px}@keyframes mo-ping{0%{opacity:.7;scale:.7}to{opacity:0;scale:1.4}}.home-streak-num b{animation:mo-pop .6s var(--ease) .3s backwards;display:inline-block}.home-quick-item{transition:border-color .2s, box-shadow .25s var(--ease), transform .25s var(--ease);position:relative;overflow:hidden}.home-quick-item:after{content:"";background:var(--layer);transform-origin:0;height:3px;transition:scale .4s var(--ease);position:absolute;bottom:0;left:0;right:0;scale:0 1}.home-quick-item:hover:after{scale:1}.home-quick-item:hover .home-quick-ico{animation:.55s mo-wiggle}.home-quick-item .layer-swatch{transition:rotate .4s var(--ease), scale .4s var(--ease)}.home-quick-item:hover .layer-swatch{rotate:225deg;scale:1.5}.home-next-card{transition:border-color .2s, box-shadow .25s var(--ease), translate .25s var(--ease)}.home-next-card:hover{translate:0 -4px}.home-next-thumb{position:relative}.card-preview-window:after,.home-next-thumb:after{--c:var(--accent);--l:14px;--w:1.5px;content:"";z-index:1;pointer-events:none;opacity:0;transition:opacity .25s, scale .4s var(--ease);background:linear-gradient(var(--c), var(--c)) left top / var(--l) var(--w) no-repeat, linear-gradient(var(--c), var(--c)) left top / var(--w) var(--l) no-repeat, linear-gradient(var(--c), var(--c)) right top / var(--l) var(--w) no-repeat, linear-gradient(var(--c), var(--c)) right top / var(--w) var(--l) no-repeat, linear-gradient(var(--c), var(--c)) left bottom / var(--l) var(--w) no-repeat, linear-gradient(var(--c), var(--c)) left bottom / var(--w) var(--l) no-repeat, linear-gradient(var(--c), var(--c)) right bottom / var(--l) var(--w) no-repeat, linear-gradient(var(--c), var(--c)) right bottom / var(--w) var(--l) no-repeat;position:absolute;inset:10px;scale:1.08}.drawing-card:hover .card-preview-window:after,.home-next-card:hover .home-next-thumb:after{opacity:1;scale:1}.drawing-card .cmd-pill{transition:translate .25s var(--ease), border-color .2s}.drawing-card:hover .cmd-pill{border-color:var(--accent-line)}.drawing-card:hover .cmd-pill:first-child{transition-delay:0s;translate:0 -2px}.drawing-card:hover .cmd-pill:nth-child(2){transition-delay:40ms;translate:0 -2px}.drawing-card:hover .cmd-pill:nth-child(3){transition-delay:80ms;translate:0 -2px}.drawing-card:hover .cmd-pill:nth-child(4){transition-delay:.12s;translate:0 -2px}.done-ribbon{animation:mo-pop .5s var(--ease) .6s backwards}.cat-filter-btn.active{animation:mo-pop .35s var(--ease)}.library-header-banner{border-bottom-color:#0000;position:relative}.library-header-banner:after{content:"";background:var(--ink);transform-origin:0;height:1.5px;animation:.9s cubic-bezier(.65,0,.35,1) .25s backwards mo-grow-x;position:absolute;bottom:-1.5px;left:0;right:0}.library-tally b{animation:mo-pop .6s var(--ease) .4s backwards;display:inline-block}.feature-hero:before{animation:mo-grow-y .6s var(--ease) .3s backwards}.feature-eyebrow svg{animation:mo-pop .6s var(--ease) .35s backwards}.leader-list li.me,.game-board li.me,.paste-tip-badge{background:linear-gradient(var(--highlighter), var(--highlighter)) no-repeat 0 0 / 0% 100%;animation:.8s cubic-bezier(.65,0,.35,1) .7s forwards mo-marker}.announce-bar{background:linear-gradient(var(--highlighter), var(--highlighter)) no-repeat 0 0 / 0% 100%, var(--sheet);animation:1s cubic-bezier(.65,0,.35,1) .2s forwards mo-marker}.announce-bar svg{animation:.7s 1.1s mo-wiggle}.progress-ring{animation:ds-pop .5s var(--ease) both, mo-p 1.6s var(--ease) .2s backwards}.progress-ring:after{animation:mo-spin-in 1.2s var(--ease) .2s backwards}@keyframes mo-spin-in{0%{opacity:0;rotate:-90deg}}.badge-tile{transition:transform .2s var(--ease), border-color .2s, translate .3s var(--ease)}.badge-tile:hover{translate:0 -3px}.badge-tile.earned{position:relative;overflow:hidden}.badge-tile.earned:after{content:"";pointer-events:none;animation:4.5s ease-in-out infinite mo-shine;animation-delay:calc(var(--k,0) * .3s + 1s);background:linear-gradient(115deg,#0000 35%,#ffffff8c 50%,#0000 65%);position:absolute;inset:0;translate:-120%}@keyframes mo-shine{0%,70%{translate:-120%}to{translate:120%}}html[data-theme=dark] .badge-tile.earned:after{background:linear-gradient(115deg,#0000 35%,#ffffff1f 50%,#0000 65%)}.badge-tile.earned .badge-emoji{animation:3.2s ease-in-out infinite mo-float}.exam-letter{animation:.7s cubic-bezier(.2,.8,.2,1.15) .25s backwards mo-stamp;rotate:-6deg}@keyframes mo-stamp{0%{opacity:0;rotate:-22deg;scale:2.4}60%{opacity:1;scale:.9}80%{scale:1.04}to{rotate:-6deg;scale:1}}.exam-final{animation:mo-rise .6s var(--ease) .5s backwards}.exam-clock.low{animation:1s step-end infinite mo-tick}@keyframes mo-tick{50%{translate:0 -1px}}.exam-pick.on svg,.seg button.on{animation:mo-pop .35s var(--ease)}.game-hero-icon{animation:2.8s ease-in-out infinite mo-float}.game-card{animation:.35s cubic-bezier(.2,.8,.2,1.2) both mo-card-in}@keyframes mo-card-in{0%{opacity:0;translate:0 16px;rotate:-1.5deg;scale:.96}}.game-final{animation:mo-pop .7s var(--ease) .1s backwards}.game-combo.hot{animation:mo-pop .3s var(--ease)}.upload-icon-circle{position:relative}.upload-icon-circle:after{content:"";border:1px dashed var(--accent-line);border-radius:50%;animation:14s linear infinite mo-spin;position:absolute;inset:-9px}.dropzone-container.drag-active .upload-icon-circle:after{border-color:var(--accent);animation-duration:2.5s}.dropzone-container.drag-active .upload-icon{animation:1s ease-in-out infinite mo-float}.check-drop:hover svg{animation:1.4s ease-in-out infinite mo-float}.community-item{transition:border-color .15s, translate .2s var(--ease), box-shadow .2s}.community-item:hover{translate:4px}.ci-avatar{transition:rotate .4s var(--ease), scale .3s var(--ease)}.community-item:hover .ci-avatar{rotate:-8deg;scale:1.08}.reply.accepted{animation:1.6s ease-out .4s 2 mo-glow}@keyframes mo-glow{50%{box-shadow:0 0 0 4px var(--ok-soft)}}.modal-backdrop,.admin-overlay{animation:.3s both mo-dim}@keyframes mo-dim{0%{-webkit-backdrop-filter:blur();backdrop-filter:blur();background-color:#0000}}.modal-dialog,.admin-panel{transform-origin:50% 0;animation:.5s cubic-bezier(.2,.8,.2,1) backwards mo-unfold}@keyframes mo-unfold{0%{opacity:0;transform:perspective(1100px)rotateX(-16deg)translateY(-14px)scale(.96)}}.quiz-opt{transition:transform .15s,border-color .15s,background .15s,scale .15s}.quiz-icon,.icon-badge{animation:mo-pop .5s var(--ease) .15s backwards}.check-score span{animation:mo-pop .6s var(--ease) .6s backwards}.app-toast{overflow:hidden}.app-toast:after{content:"";background:var(--ok);transform-origin:0;height:2px;animation:4s linear .2s forwards mo-shrink;position:absolute;bottom:0;left:0;right:0}@keyframes mo-shrink{to{scale:0 1}}.step-pill.active{animation:mo-pop .35s var(--ease)}.step-pill.completed svg{animation:mo-pop .4s var(--ease)}.progress-fill{transition:width .6s cubic-bezier(.65,0,.35,1)}.auth-root{animation:80s linear infinite mo-pan}@keyframes mo-pan{to{background-position:50px 50px,50px 50px,10px 10px,10px 10px,0 0}}.auth-features li:before{animation:6s ease-in-out infinite mo-spin-sq;animation-delay:var(--d,0s)}@keyframes mo-spin-sq{0%,80%{rotate:0deg}to{rotate:180deg}}@media (width<=1180px){.home-deco{display:none}}@media (width<=900px){.plot-sweep,.has-rail .plot-sweep{left:0}}@media (prefers-reduced-motion:reduce){.plot-sweep,.cad-cursor,.home-deco{display:none}.leader-list li.me,.game-board li.me,.paste-tip-badge{background-size:100% 100%}.announce-bar{background-size:100% 100%,auto}}
