:root{--scan-bg: linear-gradient(180deg, #fcf9f3 0%, #f3efe8 100%);--scan-header-bg: rgba(252, 249, 243, .9);--scan-card-bg: rgba(255, 255, 255, .94);--scan-card-border: #cac4d1;--scan-card-border-sub: #e3ddd3;--scan-brand: #56478e;--scan-accent: #6f5fa8;--scan-text: #1c1c18;--scan-text-muted: #615e5a;--scan-text-secondary: #484550;--scan-text-dim: #7a7482;--scan-radius-lg: 20px;--scan-radius-md: 16px;--scan-radius-sm: 12px;--scan-radius-xs: 8px;--scan-success: #27ae60;--scan-error: #e74c3c;--scan-overlay-shadow: 0 8px 32px rgba(31, 42, 68, .12)}.scan-validator-panel{display:flex;flex-direction:column;gap:10px}.scan-validator-section{background:#fff;border:1px solid var(--scan-card-border-sub);border-radius:10px;padding:12px 14px}.scan-validator-success{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#e8f5e9;border:1px solid #c8e6c9;border-radius:10px;font-size:14px;font-weight:700;color:var(--scan-success)}.scan-page{display:flex;flex-direction:column;height:100%;font-family:system-ui,-apple-system,sans-serif;background:var(--scan-bg)}.scan-page-header{display:flex;align-items:center;gap:12px;padding:14px 24px;border-bottom:1px solid var(--scan-card-border);position:sticky;top:0;z-index:10}.scan-page-title{font-size:20px;font-weight:700;margin:0;color:var(--scan-text);background:none}.scan-page-step{font-size:13px;color:var(--scan-accent);font-weight:600;margin-left:auto;background:#ede8ff;padding:4px 14px;border-radius:999px}.scan-page-progress{font-size:13px;font-weight:600;color:var(--scan-brand);background:#ede8ff;padding:2px 10px;border-radius:999px}.scan-back-btn{border:1px solid var(--scan-card-border);border-radius:var(--scan-radius-xs);background:transparent;color:var(--scan-text-secondary);padding:6px 14px;font-size:13px;cursor:pointer}.scan-guide-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:10px;font-size:13px;position:absolute;top:10px;left:0;right:0;z-index:10;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.6)}.scan-guide-bar-icon{font-size:18px}.scan-guide-bar-text{font-size:14px;font-weight:600;color:#fff}.scan-guide-bar-warning{font-size:12px;color:#fff3cd;background:#856404b3;padding:2px 10px;border-radius:999px;margin-left:auto}.scan-preview-3d{min-height:290px;max-height:400px}.scan-page-body{flex:1;display:flex;gap:18px;padding:18px 24px;overflow:hidden;align-items:stretch}.scan-mode-bar{display:flex;align-items:center;gap:10px;padding:12px 24px;background:#fcf9f399;border-top:1px solid var(--scan-card-border)}.scan-mode-bar-label{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--scan-text-muted)}.scan-mode-pill{border:1px solid var(--scan-card-border);border-radius:6px;background:transparent;color:var(--scan-text-secondary);padding:6px 14px;font-size:13px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.scan-mode-pill-active{background:var(--scan-accent);color:#fff;border-color:var(--scan-accent)}.scan-card{background:var(--scan-card-bg);border:1px solid var(--scan-card-border);border-radius:var(--scan-radius-lg);min-width:0;box-sizing:border-box}.scan-card-sub{background:#fff;border:1px solid var(--scan-card-border-sub);border-radius:var(--scan-radius-md);padding:18px}.scan-card-title{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--scan-text-muted);margin-bottom:14px}.scan-camera-col{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0;min-height:0}.scan-camera-side{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0}.scan-camera-panel{display:flex;flex-direction:column;gap:12px;flex:1}.scan-camera-panel-video-container{position:relative;flex:1;background:#000;border-radius:12px;overflow:hidden;min-height:0;display:flex;align-items:center;justify-content:center}.scan-camera-panel-video{width:100%;height:100%;object-fit:contain}.scan-camera-panel-overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:2}.scan-camera-panel-hint{position:absolute;bottom:16px;left:50%;transform:translate(-50%);background:#000000b3;color:#fff;padding:8px 20px;border-radius:20px;font-size:14px;font-weight:600;white-space:nowrap;z-index:3}.scan-camera-panel-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#ccc;z-index:4}.scan-camera-spinner{width:28px;height:28px;border:3px solid #333;border-top-color:#fff;border-radius:50%;animation:scan-spin .8s linear infinite}@keyframes scan-spin{to{transform:rotate(360deg)}}.scan-camera-preview{background:#fff;border:1px solid #e8e8e8;border-radius:12px;padding:10px 14px;display:flex;align-items:center;gap:12px}.scan-camera-preview-label{font-size:12px;color:#666;white-space:nowrap}.scan-camera-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px}.scan-camera-preview-cell{width:28px;height:28px;border-radius:3px;border:1px solid rgba(0,0,0,.15);display:flex;align-items:center;justify-content:center;font-size:10px;color:#0009}.scan-map-panel{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden}.scan-map-panel>.scan-card{width:100%;min-width:0;overflow-x:hidden;box-sizing:border-box}.scan-unfold{background:#fff;border:1px solid var(--scan-card-border-sub);border-radius:var(--scan-radius-md);padding:16px;display:flex;flex-direction:column;align-items:center;width:100%;max-width:100%;box-sizing:border-box}.scan-unfold-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,auto);gap:6px;width:100%;max-width:min(420px,100%);box-sizing:border-box;align-items:start}.scan-unfold-face{display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;min-width:0;padding:5px;border-radius:8px;border:2px solid #e0ddd5;transition:border-color .2s,background-color .2s,box-shadow .2s;cursor:default;box-sizing:border-box}.scan-unfold-face-current{border-color:var(--scan-accent);background:#ede8ff;animation:scan-pulse 1.5s ease-in-out infinite}@keyframes scan-pulse{0%,to{border-color:var(--scan-accent)}50%{border-color:#b8aeff}}.scan-unfold-face-selected{border-color:var(--scan-brand);background:#f3eefc;box-shadow:0 0 0 2px #56478e1f}.scan-unfold-face-swap-target{border-color:#f0a43b;background:#fff6e8}.scan-unfold-face-header{display:flex;align-items:center;justify-content:center;width:100%}.scan-unfold-face-label{font-size:10px;font-weight:600;color:#999;text-align:center;flex:1}.scan-unfold-face-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;width:100%;min-width:0}.scan-unfold-sticker{aspect-ratio:1;border-radius:3px;border:1px solid rgba(0,0,0,.15);padding:0}.scan-unfold-sticker-editable{cursor:pointer;box-shadow:inset 0 0 0 2px #56478e2e}.scan-unfold-sticker-editable:hover{transform:scale(1.04)}.scan-unfold-sticker-center{cursor:default}.scan-unfold-hint{text-align:center;font-size:12px;font-weight:600;color:#b45309;background:#fef3c7;padding:4px 12px;border-radius:8px;margin-top:6px}.scan-unfold-bottom-bar{display:flex;flex-direction:column;gap:10px;margin-top:14px;padding:12px;border:1px solid var(--scan-card-border-sub);border-radius:16px;background:linear-gradient(180deg,#fffdf9,#fcf9f3);box-sizing:border-box}.scan-unfold-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--scan-text-muted)}.scan-unfold-palette-section{display:flex;align-items:center;gap:8px}.scan-unfold-palette-bar{display:flex;align-items:center;gap:6px}.scan-unfold-bottom-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.scan-unfold-bottom-meta{font-size:12px;font-weight:700;color:var(--scan-brand);margin-right:4px}.scan-unfold-action-btn{min-height:32px;padding:0 12px;border:1px solid var(--scan-card-border-sub);border-radius:999px;background:#fff;color:var(--scan-text);font-size:12px;font-weight:600}.scan-unfold-action-btn:hover{background:var(--scan-accent-light)}.scan-unfold-palette-none{width:26px;height:26px;border:2px solid #ccc;border-radius:999px;background:#e0e0e0;cursor:pointer;font-size:14px;color:#999;display:flex;align-items:center;justify-content:center}.scan-unfold-palette-none-active{outline:2px solid var(--scan-brand);outline-offset:2px}.scan-unfold-palette-chip{width:26px;height:26px;border:2px solid rgba(255,255,255,.95);border-radius:999px;box-shadow:0 2px 8px #0000001f}.scan-unfold-palette-chip-active{outline:2px solid var(--scan-brand);outline-offset:2px}.scan-unfold-legend{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;justify-content:center}.scan-unfold-legend-item{font-size:11px;color:#999}.scan-unfold-legend-current{color:var(--scan-accent);font-weight:700}.scan-unfold-legend-done{color:var(--scan-success)}.scan-confirm-panel{background:#fff;border:2px solid var(--scan-accent);border-radius:var(--scan-radius-md);padding:16px}.scan-confirm-title{font-size:14px;font-weight:700;margin-bottom:12px;color:var(--scan-text)}.scan-confirm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:12px;max-width:180px}.scan-confirm-cell{aspect-ratio:1;border-radius:3px;border:1px solid rgba(0,0,0,.15);cursor:pointer;transition:border-color .15s,transform .1s;display:flex;align-items:center;justify-content:center}.scan-confirm-cell:hover{border-color:#0006}.scan-confirm-cell-selected{border-color:var(--scan-accent);box-shadow:0 0 0 2px #6f5fa84d;transform:scale(1.05)}.scan-confirm-cell-label{font-size:10px;color:#00000080}.scan-confirm-palette{margin-bottom:12px}.scan-confirm-palette-label{font-size:11px;color:#999;display:block;margin-bottom:6px}.scan-confirm-colors{display:flex;gap:6px}.scan-confirm-swatch{width:28px;height:28px;border-radius:6px;border:2px solid rgba(0,0,0,.15);cursor:pointer;padding:0;transition:transform .1s}.scan-confirm-swatch:hover{transform:scale(1.15)}.scan-confirm-swatch-active{outline:3px solid var(--scan-brand);outline-offset:2px}.scan-confirm-actions{display:flex;gap:8px}.scan-rescan-list{display:flex;gap:6px;flex-wrap:wrap}.scan-rescan-btn{font-size:11px;padding:4px 10px;border:1px solid var(--scan-card-border);color:var(--scan-text-secondary)}.scan-actions{display:flex;gap:8px;justify-content:center}.hub-btn{border-radius:var(--scan-radius-xs)}.hub-btn-primary{background:var(--scan-accent)}.scan-verify-editor{background:#fff;border:2px solid var(--scan-accent);border-radius:var(--scan-radius-md);padding:14px;box-shadow:var(--scan-overlay-shadow);z-index:5}.scan-verify-editor-title{font-size:13px;font-weight:700;margin-bottom:10px;color:#333}.scan-verify-editor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:10px;max-width:160px}.scan-verify-cell{aspect-ratio:1;border-radius:3px;border:1px solid rgba(0,0,0,.15);cursor:pointer;transition:border-color .15s,transform .1s}.scan-verify-cell:hover{border-color:#0006}.scan-verify-cell-selected{border-color:var(--scan-accent);box-shadow:0 0 0 2px #6f5fa84d;transform:scale(1.05)}.scan-verify-status{background:#fff;border:1px solid var(--scan-card-border-sub);border-radius:var(--scan-radius-md);padding:14px}.scan-verify-status-info{display:flex;gap:12px;font-size:12px;color:#666;margin-bottom:10px;flex-wrap:wrap}.scan-verify-actions{display:flex;align-items:center;gap:8px}.scan-verify-success{display:flex;align-items:center;font-size:14px;font-weight:700;color:var(--scan-success)}.scan-verify-error{font-size:12px;color:#f44336;margin-top:8px;padding:8px;background:#ffebee;border-radius:6px}.scan-verify-section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--scan-text-dim);margin-top:8px;margin-bottom:4px}.scan-toast{position:fixed;top:20px;left:50%;transform:translate(-50%);background:#1c1c18e0;color:#fff;padding:12px 24px;border-radius:var(--scan-radius-md);font-size:15px;font-weight:600;z-index:100;animation:scan-toast-in .3s ease-out;white-space:nowrap}@keyframes scan-toast-in{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.scan-orientation-guide{margin-bottom:8px;border:1px solid #e0e0e0;border-radius:8px;background:#f8f9fa;overflow:hidden}.scan-orientation-brief{display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:14px;font-weight:500}.scan-orientation-icon{font-size:18px}.scan-orientation-toggle{margin-left:auto;background:none;border:none;color:#4a90d9;font-size:12px;cursor:pointer;padding:2px 8px}.scan-orientation-toggle:hover{text-decoration:underline}.scan-orientation-detail{padding:6px 12px 10px 38px;font-size:13px;color:#555;line-height:1.5;border-top:1px solid #e8e8e8}.scan-orientation-warning{padding:6px 12px;background:#fff3cd;color:#856404;font-size:13px;font-weight:500}@media(max-width:1100px){.scan-page-body{flex-direction:column}}@media(max-width:720px){.scan-page-header{flex-wrap:wrap;gap:8px}.scan-page-step{margin-left:0}.scan-mode-bar{flex-wrap:wrap}}.scan-method-select{display:flex;align-items:center;gap:6px;margin:8px 0;font-size:13px}.scan-method-select select{padding:4px 8px;border-radius:4px;border:1px solid var(--border-color, #444);background:var(--bg-input, #1a1a1a);color:var(--text-color, #eee)}.not-found-page{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:48px 24px;text-align:center}.not-found-page__code{font-size:48px;font-weight:700;line-height:56px;letter-spacing:-.02em;color:#56478e}.not-found-page__title{margin:0;padding:0;font-size:24px;font-weight:600;line-height:32px;color:#1c1c18}.not-found-page__message{max-width:360px;margin:0;font-size:16px;font-weight:400;line-height:24px;color:#484550}.not-found-page__link{display:inline-block;margin-top:16px;padding:10px 20px;border:none;border-radius:8px;background:#56478e;color:#fff;font-size:14px;font-weight:600;text-decoration:none;transition:opacity .15s}.not-found-page__link:hover{opacity:.85}.polar-projection{min-width:0;min-height:0;background:transparent;border:none;border-radius:8px;height:100%;overflow:hidden;display:grid}.polar-svg{width:100%;height:100%;min-width:0;min-height:0;display:block}.polar-guides circle{fill:none;stroke:#0f172a7a;stroke-width:1.35px}.polar-face-labels{pointer-events:none}.polar-face-label{fill:#47556929;font-size:60px;font-weight:700;font-family:Inter,SF Pro Display,Segoe UI,sans-serif;letter-spacing:.04em;-webkit-user-select:none;user-select:none;pointer-events:none}.polar-sticker{stroke:#0f172a8c;stroke-width:1.2px;cursor:pointer}.polar-sticker:hover{stroke-width:2px;filter:brightness(1.1)}.polar-sticker.is-selected{stroke-width:2px;stroke:#0f766e;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.polar-sticker.is-moving{filter:drop-shadow(0 2px 3px rgba(15,23,42,.28));stroke-width:1.5px}.polar-tooltip{fill:#172033;font-size:15px;font-weight:700;pointer-events:none;paint-order:stroke;stroke:#f5f7fb;stroke-width:4px;stroke-linejoin:round}.hub-homepage{display:flex;flex-direction:column;flex:1;width:100%;min-height:0;box-sizing:border-box;gap:48px;max-width:1280px;margin:0 auto}.hub-wb-titlebar{display:flex;align-items:center;gap:12px;padding:16px 24px;border-bottom:1px solid #cac4d1;background:#fff}.hub-wb-titlebar h2{margin:0;color:#1c1c18;font-size:22px;white-space:nowrap}.hub-wb-titlebar-desc{margin:0;color:#484550;font-size:14px}.hub-homepage-workbench{display:flex;flex-direction:column;flex:0 0 auto;width:100%;height:calc(100vh - 238px);height:calc(100dvh - 238px);min-height:0;box-sizing:border-box;border:1px solid #cac4d1;border-radius:24px;overflow:hidden;background:#fff}.hub-wb-body{display:grid;grid-template-columns:440px minmax(0,1fr);flex:1;min-height:0;overflow:hidden}.hub-wb-panel{display:flex;flex-direction:column;gap:16px;padding:24px;border-right:1px solid #cac4d1}.hub-homepage-viewport{display:flex;flex-direction:column;min-height:0;padding:24px;overflow:hidden}.hub-wb-field-label{display:inline-flex;margin:0 0 4px;color:#615e5a;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.hub-wb-textarea{width:100%;min-height:140px;padding:10px 52px 10px 14px;border:1px solid #cac4d1;border-radius:8px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:14px;resize:vertical;outline:none;box-sizing:border-box;line-height:1.5;background:#fff;transition:border-color .15s,box-shadow .15s}.hub-wb-textarea:focus{border-color:#56478e;box-shadow:0 0 0 2px #56478e26}.hub-wb-textarea-error{border-color:#e53935}.hub-wb-input-wrapper{position:relative}.hub-wb-input-actions{position:absolute;top:8px;right:8px;display:flex;flex-direction:column;gap:4px}.hub-wb-input-action-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid #cac4d1;border-radius:6px;background:#fcf9f3;font-size:14px;cursor:pointer;line-height:1;padding:0}.hub-wb-input-action-btn:hover{background:#f0eee8}.hub-wb-input-action-btn:active{background:#e8e4dc}.hub-wb-quick-actions{display:flex;flex-direction:column;gap:4px}.hub-wb-quick-actions-row{display:flex;gap:8px}.hub-wb-method-row{display:flex;flex-direction:column;gap:4px}.hub-wb-primary-btn{width:100%;height:48px;padding:0 24px;background:#56478e;color:#fff;font-size:14px;font-weight:600;border:none;border-radius:8px;cursor:pointer}.hub-wb-ghost-btn{height:34px;display:inline-flex;align-items:center;flex:1;border:1px solid #cac4d1;border-radius:8px;background:#f8f5ef;color:#1c1c18;padding:0 12px;font-size:13px;cursor:pointer;text-decoration:none;transition:background .15s}.hub-wb-ghost-btn:hover{background:#f0eee8}.hub-wb-refresh-btn{flex:none;padding:6px 12px;font-size:12px}.hub-wb-method-cards{display:flex;gap:8px}.hub-wb-method-card{flex:1;position:relative;display:flex;flex-direction:column;justify-content:center;gap:6px;min-height:72px;padding:12px 14px;border:1px solid #cac4d1;border-radius:12px;background:#fff;cursor:pointer;text-align:left;font-family:inherit;transition:border-color .15s,background .15s,color .15s}.hub-wb-method-card:hover{border-color:#b9aed1}.hub-wb-method-card-label{font-size:18px;font-weight:700;letter-spacing:.01em;color:#1c1c18}.hub-wb-method-card-desc{font-size:12px;line-height:1.45;color:#615e5a}.hub-wb-method-card-active,.hub-wb-method-card-active:hover{border-color:#56478e;background:#56478e0f}.hub-wb-method-card-active .hub-wb-method-card-label{color:#56478e}.hub-wb-method-card-active .hub-wb-method-card-desc{color:#56478e;opacity:.85}.hub-wb-method-card-check{position:absolute;top:10px;right:12px;font-size:13px;font-weight:700;color:#56478e}.hub-homepage-viewport-head,.hub-homepage-course-meta{display:flex;align-items:center;gap:12px;justify-content:space-between}.hub-homepage-viewport-actions{display:flex;align-items:center;gap:8px}.hub-homepage-preview-tag{display:inline-flex;margin-top:0;padding:4px 8px;border-radius:999px;background:#56478e1f;color:#56478e;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.hub-homepage-viewport-tabs{display:flex;gap:4px;background:#e8e4dc;border-radius:8px;padding:3px}.hub-homepage-viewport-tab{border:none;background:transparent;color:#484550;padding:6px 14px;font-size:13px;font-weight:500;border-radius:6px;cursor:pointer;transition:background .15s,color .15s}.hub-homepage-viewport-tab:hover{background:#ffffff80}.hub-homepage-viewport-tab-active{background:#fcf9f3;color:#1c1c18;font-weight:600;box-shadow:0 1px 2px #00000014}.hub-homepage-preview-grid{display:flex;flex-direction:column;flex:1;min-height:0;gap:16px;margin-top:24px}.hub-homepage-preview-card{border:1px solid #cac4d1;border-radius:16px;background:#fcf9f3;display:flex;flex-direction:column;flex:1;min-height:0;overflow:auto}.hub-homepage-preview-surface{position:relative;flex:1;min-height:0;height:100%;padding:16px;box-sizing:border-box;overflow:hidden;container-type:size}.hub-homepage-preview-surface .net-grid{--net-cell-size: calc(min((100cqw - 44px) / 12, (100cqh - 30px) / 9)*.8) ;position:absolute;inset:0;margin:auto;width:max-content;height:max-content}.hub-homepage-preview-surface-3d{background:radial-gradient(circle at center,#6f5fa829,#12110f00 70%)}.hub-homepage-preview-surface-all{height:auto;display:flex;flex-direction:column;gap:20px;overflow:auto}.hub-homepage-preview-surface-all>div{height:380px;min-height:380px;max-height:380px;overflow:hidden}@media(max-width:1100px){.hub-wb-body{grid-template-columns:1fr}.hub-wb-panel{border-right:0;border-bottom:1px solid #cac4d1}.hub-wb-titlebar{flex-direction:column;align-items:flex-start}.hub-wb-quick-actions{flex-wrap:wrap}.hub-homepage-preview-grid{grid-template-columns:1fr}}@media(max-width:720px){.hub-wb-titlebar,.hub-wb-method-row,.hub-wb-quick-actions-row,.hub-homepage-course-meta{flex-direction:column;align-items:flex-start}.hub-wb-ghost-btn,.hub-wb-primary-btn{width:100%}}.hub-wb-input-action-btn{position:relative}.hub-wb-input-action-btn:after{content:attr(data-tooltip);position:absolute;right:calc(100% + 8px);top:50%;transform:translateY(-50%);white-space:nowrap;background:#1c1c18;color:#fff;font-size:11px;font-weight:500;font-family:system-ui,-apple-system,sans-serif;padding:4px 8px;border-radius:5px;pointer-events:none;opacity:0;line-height:1.4}.hub-wb-input-action-btn:hover:after{opacity:1}.hub-courses-page{display:grid;gap:48px;padding-bottom:32px}.hub-notation-card{display:flex;align-items:center;gap:20px;padding:20px 24px;border:1px solid #cac4d1;border-radius:12px;background:#fff}.hub-notation-card-icon{width:56px;height:56px;border-radius:14px;flex-shrink:0;background:linear-gradient(135deg,#e0d1bb,#8b7ab7)}.hub-notation-card-body{flex:1;min-width:0}.hub-notation-card-title{margin:0 0 4px;font-size:18px;font-weight:700;color:#1c1c18}.hub-notation-card-desc{margin:0;font-size:13px;line-height:1.5;color:#484550}.hub-notation-card-cta{flex-shrink:0;padding:9px 18px;border:0;border-radius:8px;background:#56478e;color:#fff;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:opacity .15s}.hub-notation-card-cta:hover{opacity:.9}.hub-notation-card.hub-fundamentals-hero{border-color:#56478e;background:linear-gradient(180deg,#f4f1fb,#fff);padding:22px 24px}.hub-fundamentals-hero .hub-notation-card-icon{background:linear-gradient(135deg,#7c5cff,#56478e)}.hub-fundamentals-hero .hub-notation-card-title{font-size:20px}.hub-fundamentals-hero-eyebrow{display:inline-block;margin-bottom:6px;padding:2px 9px;border-radius:999px;background:#56478e;color:#fff;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.hub-concept-badge{display:inline-block;margin-bottom:6px;padding:2px 9px;border-radius:999px;background:#e7deff;color:#56478e;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.hub-paths-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}.hub-path-card{display:flex;flex-direction:column;border:1px solid #cac4d1;border-radius:12px;overflow:hidden;background:#fff;transition:box-shadow .2s}.hub-path-card:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.hub-path-card-header{padding:24px;background:#f6f3ed;border-bottom:1px solid #cac4d1;display:flex;justify-content:space-between;align-items:flex-start}.hub-path-card-track-label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#56478e;margin-bottom:4px}.hub-path-card-title{margin:0;font-family:Inter,sans-serif;font-size:22px;font-weight:700;line-height:28px;color:#1c1c18}.hub-path-card-cta{flex-shrink:0;align-self:center;padding:9px 18px;border:0;border-radius:8px;background:#56478e;color:#fff;font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer;transition:opacity .15s}.hub-path-card-cta:hover{opacity:.9}.hub-path-card-body{padding:24px;flex:1;background:#fff}.hub-path-card-summary{margin:0 0 20px;color:#2e2b33;font-size:15px;line-height:24px}.hub-stepper{display:flex;flex-direction:column}.hub-stepper-item{position:relative;padding:16px 0 16px 48px;display:flex;align-items:flex-start;gap:16px;transition:background .15s ease,border-radius .15s ease}.hub-stepper-primary{flex:1 1 auto;min-width:0;display:flex;align-items:flex-start;gap:16px;text-decoration:none;color:inherit;cursor:pointer}.hub-stepper-item:has(.hub-stepper-primary:hover),.hub-stepper-item:has(.hub-stepper-primary:focus-visible){background:#56478e0f;border-radius:8px;outline:none}.hub-stepper-item:has(.hub-stepper-primary:hover) .hub-stepper-circle,.hub-stepper-item:has(.hub-stepper-primary:focus-visible) .hub-stepper-circle{background:#56478e;color:#fff;box-shadow:0 0 0 4px #e7deff}.hub-stepper-item:has(.hub-stepper-primary:hover) .hub-stepper-title,.hub-stepper-item:has(.hub-stepper-primary:focus-visible) .hub-stepper-title{color:#56478e}.hub-stepper-drill{flex:0 0 auto;align-self:center;margin:0;font-size:12px;font-weight:600;color:#56478e;text-decoration:none}.hub-stepper-drill:hover,.hub-stepper-drill:focus-visible{text-decoration:underline;outline:none}.hub-stepper-line:before{content:"";position:absolute;left:15px;top:48px;bottom:0;width:2px;background:#cac4d1}.hub-stepper-line-last:before{display:none}.hub-stepper-item:not(:first-child):after{content:"";position:absolute;left:15px;top:0;height:16px;width:2px;background:#cac4d1}.hub-stepper-circle{position:absolute;left:0;top:16px;width:32px;height:32px;border-radius:9999px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;z-index:1;transition:background .15s ease,color .15s ease,box-shadow .15s ease}.hub-stepper-circle-normal{background:#e5e2dc;color:#797581}.hub-stepper-content{flex:1;min-width:0}.hub-stepper-title{margin:0;font-size:16px;font-weight:700;color:#1c1c18;transition:color .15s ease}.hub-stepper-subtitle{margin:4px 0 0;font-size:14px;font-weight:500;color:#797581}div.hub-stepper-item:has(.hub-stepper-branch-toggle):hover,div.hub-stepper-item:has(.hub-stepper-branch-toggle:focus-visible){background:#56478e0f;border-radius:8px;outline:none}div.hub-stepper-item:has(.hub-stepper-branch-toggle):hover .hub-stepper-circle,div.hub-stepper-item:has(.hub-stepper-branch-toggle:focus-visible) .hub-stepper-circle{background:#56478e;color:#fff;box-shadow:0 0 0 4px #e7deff}div.hub-stepper-item:has(.hub-stepper-branch-toggle):hover .hub-stepper-title,div.hub-stepper-item:has(.hub-stepper-branch-toggle:focus-visible) .hub-stepper-title{color:#56478e}@media(max-width:960px){.hub-paths-grid{grid-template-columns:1fr}}@media(max-width:720px){.hub-notation-card{flex-wrap:wrap}.hub-notation-card-cta{width:100%;text-align:center}}.hub-stepper-branch-toggle{display:flex;width:100%;align-items:center;justify-content:space-between;gap:8px;margin:0;padding:0;border:0;background:transparent;text-align:left;font:inherit;cursor:pointer;border-radius:4px}.hub-stepper-branch-toggle .hub-stepper-title{flex:1;min-width:0}.hub-stepper-branch-chevron{flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#797581}.hub-stepper-routes{margin-top:10px;padding-left:12px;border-left:2px solid #e0dce6;display:flex;flex-direction:column;gap:6px}.hub-stepper-route{display:block;padding:10px 12px;border-radius:8px;background:#efeaf5;text-decoration:none;color:inherit;transition:background .15s ease}.hub-stepper-route:hover,.hub-stepper-route:focus-visible{background:#56478e1a;outline:none}.hub-stepper-route:hover .hub-stepper-route-title,.hub-stepper-route:focus-visible .hub-stepper-route-title{color:#56478e}.hub-stepper-route-title{display:block;font-size:15px;font-weight:700;color:#1c1c18;transition:color .15s ease}.hub-formula-page{display:flex;flex-direction:column}.hub-formula-visualize-section{padding-bottom:24px}.hub-formula-library-section{border-top:1px solid #f0ede6;padding-top:24px}.hub-formula-section-title{margin:0 0 14px;font-family:Inter,sans-serif;font-size:18px;font-weight:600;color:#1c1c18;line-height:1.3}.hub-formula-visualize{display:flex;align-items:stretch;gap:8px}.hub-formula-input-wrap{position:relative;flex:1;display:flex;align-items:center;min-width:0}.hub-formula-input-icon{position:absolute;left:12px;width:14px;height:14px;color:#8a8590;pointer-events:none;transition:color .15s}.hub-formula-input-wrap:focus-within .hub-formula-input-icon{color:#56478e}.hub-formula-input{width:100%;background:#fff;border:1px solid #d8d4cc;border-radius:8px;padding:10px 12px 10px 30px;font-family:JetBrains Mono,monospace;font-size:13px;font-weight:500;outline:none;color:#1c1c18;transition:border-color .15s,box-shadow .15s}.hub-formula-input::placeholder{color:#b0aaa2;font-weight:400}.hub-formula-input:focus{border-color:#56478e;box-shadow:0 0 0 3px #56478e26}.hub-formula-input-error{border-color:#ba1a1a}.hub-formula-input-error:focus{border-color:#ba1a1a;box-shadow:0 0 0 3px #ba1a1a26}.hub-formula-visualize-btn{background:#56478e;color:#fff;border:0;padding:0 20px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;transition:opacity .2s;white-space:nowrap}.hub-formula-visualize-btn:disabled{opacity:.4;cursor:default}.hub-formula-input-error-text{margin-top:8px;font-size:12px;color:#ba1a1a}.hub-formula-library-sticky{position:sticky;top:0;z-index:5;background:#f6f3ed;padding:4px 0 8px;margin-bottom:16px}.hub-formula-library-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.hub-formula-library-head .hub-formula-section-title{margin-bottom:0}.hub-formula-count{font-size:12px;font-weight:500;color:#797581;white-space:nowrap}.hub-formula-filter-pills{display:flex;overflow-x:auto;gap:6px;margin-top:12px}.hub-formula-pill{padding:5px 14px;border-radius:9999px;background:#f0ede6;color:#484550;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border:0;cursor:pointer;white-space:nowrap;transition:background .2s,color .2s}.hub-formula-pill:hover{background:#e0d8e8}.hub-formula-pill-active{background:#56478e;color:#fff}.hub-formula-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.hub-formula-grid-empty{padding:32px 16px;text-align:center;color:#797581;font-size:13px}.hub-formula-card{position:relative;z-index:0;border:1px solid #ebe8e2;border-radius:10px;background:#fff;padding:14px 16px;display:flex;flex-direction:column;gap:10px;color:inherit;transition:border-color .18s,box-shadow .18s,transform .18s}.hub-formula-card:hover{border-color:#56478e;box-shadow:0 4px 14px #1c1c1812;transform:translateY(-1px)}.hub-formula-card-top{display:flex;align-items:center;gap:6px}.hub-formula-card-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.hub-formula-card-phase{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#56478e}.hub-formula-card-title{margin:0;font-family:Inter,sans-serif;font-size:16px;font-weight:600;color:#1c1c18;line-height:1.3}.hub-formula-card-notation{position:relative;font-family:JetBrains Mono,monospace;font-size:13px;font-weight:500;color:#56478e;background:#f6f3ed;padding:8px 30px 8px 10px;border-radius:6px;line-height:1.6;word-break:break-word}.hub-formula-card-notation-text{display:block}.hub-formula-card-copy{position:absolute;top:50%;right:6px;transform:translateY(-50%);z-index:2;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:4px;background:transparent;color:#56478e;opacity:.5;cursor:pointer;transition:opacity .15s,background .15s}.hub-formula-card-copy svg{width:14px;height:14px}.hub-formula-card-copy:hover{opacity:1;background:#56478e1a}.hub-formula-card-copy:focus-visible{outline:2px solid #56478e;outline-offset:1px;opacity:1}.hub-formula-card-desc{margin:0;font-size:12px;color:#5a5760;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hub-formula-card-footer{margin-top:auto;display:flex;justify-content:space-between;align-items:center;padding-top:4px}.hub-formula-card-meta{font-size:11px;color:#797581}.hub-formula-card-cta{background:transparent;color:#56478e;border:1px solid #56478e;padding:5px 13px;border-radius:6px;font-size:12px;font-weight:600;transition:background .2s,color .2s}.hub-formula-card:hover .hub-formula-card-cta{background:#56478e;color:#fff}.hub-formula-card-link{position:absolute;inset:0;z-index:1;border-radius:10px;color:inherit;text-decoration:none}.hub-formula-card-link:focus-visible{outline:2px solid #56478e;outline-offset:2px}@media(max-width:1200px){.hub-formula-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.hub-formula-grid{grid-template-columns:repeat(1,minmax(0,1fr))}}@media(max-width:480px){.hub-formula-visualize{flex-wrap:wrap}.hub-formula-input-wrap{flex:1 1 100%}.hub-formula-visualize-btn{flex:1 1 100%;padding:10px}.hub-formula-grid{grid-template-columns:1fr}}.sym-page{display:flex;flex-direction:column;gap:16px;height:100%;background:linear-gradient(180deg,#fcf9f3,#f3efe8);padding:0}.sym-main{flex:1;min-height:0}.sym-progress-bar-wrapper{position:relative}.sym-progress-bar{display:flex;align-items:center;gap:16px;padding:12px 20px;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #d8d0c5;border-radius:18px;cursor:pointer;transition:box-shadow .15s}.sym-progress-bar:hover{box-shadow:0 2px 12px #56478e14}.sym-progress-label{font-size:11px;font-weight:700;color:#6f5fa8;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.sym-progress-track{flex:1;display:flex;align-items:center;gap:0;min-width:0;overflow-x:auto;scrollbar-width:none}.sym-progress-track::-webkit-scrollbar{display:none}.sym-progress-node-group{display:flex;align-items:center;flex-shrink:0;padding:8px 0;cursor:pointer}.sym-progress-node{width:26px;height:26px;border-radius:50%;background:#ece7df;color:#aaa;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,box-shadow .15s,color .15s;flex-shrink:0}.sym-progress-node:hover{background:#d8d0c5;color:#7a7482}.sym-progress-node-current{background:#56478e;color:#fff;box-shadow:0 0 8px #56478e66}.sym-progress-node-current:hover{background:#56478e;color:#fff}.sym-progress-tip{position:fixed;transform:translate(-50%,-100%);z-index:30;pointer-events:none;display:flex;flex-direction:column;gap:1px;padding:6px 10px;border-radius:8px;background:#1c1c18;color:#fff;box-shadow:0 4px 12px #00000038;white-space:nowrap}.sym-progress-tip-meta{font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.6}.sym-progress-tip-title{font-size:11px;font-weight:600}.sym-progress-line{width:12px;height:2px;background:#d8d0c5;flex-shrink:0}.sym-progress-counter{font-size:11px;color:#7a7482;white-space:nowrap;flex-shrink:0}.sym-progress-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:20;background:#fffffff5;border:1px solid #d8d0c5;border-radius:16px;padding:12px;box-shadow:0 8px 24px #00000014;max-height:320px;overflow-y:auto}.sym-progress-dropdown-title{font-size:10px;font-weight:700;color:#7a7482;text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.sym-progress-dropdown-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;border:none;border-radius:10px;background:transparent;font-size:12px;color:#7a7482;cursor:pointer;text-align:left;transition:background .12s}.sym-progress-dropdown-item:hover{background:#f5f3ee}.sym-progress-dropdown-item-current{background:linear-gradient(135deg,#e8e4f5,#f0ecf8);border:1px solid rgba(86,71,142,.3);color:#1c1c18;font-weight:600}.sym-progress-dropdown-item-label{flex:1}.sym-progress-dropdown-item-level{font-size:10px;color:#aaa;flex-shrink:0}.sym-progress-dropdown-item-current .sym-progress-dropdown-item-level{color:#56478e}.sym-lesson{display:flex;gap:16px;height:100%}.sym-lesson-3d{flex:1.3;position:relative;border-radius:20px;border:1px solid rgba(139,122,183,.2);min-height:400px}.sym-lesson-canvas{border-radius:20px}.sym-lesson-layer-label,.sym-lesson-dir-label{position:absolute;bottom:16px;left:50%;transform:translate(-50%);font-size:14px;font-weight:600;line-height:1.4;color:#fffffff2;background:#0a08149e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.18);padding:7px 18px;border-radius:999px;box-shadow:0 4px 14px #00000059;max-width:320px;text-align:center;z-index:5}.sym-lesson-symbol-badge{position:absolute;top:14px;right:14px;font-size:20px;font-weight:700;font-family:JetBrains Mono,SF Mono,monospace;color:#fff;background:#56478ed9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:6px 16px;border-radius:10px;box-shadow:0 2px 8px #56478e4d}.sym-lesson-replay{position:absolute;bottom:14px;right:14px;width:34px;height:34px;border:1px solid rgba(255,255,255,.15);border-radius:50%;background:#00000059;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#ffffffbf;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s,border-color .15s;z-index:10}.sym-lesson-replay:hover:not(:disabled){background:#00000080;border-color:#ffffff4d;color:#fff}.sym-lesson-replay:disabled{opacity:.25;cursor:not-allowed}.sym-turn-toolbar{position:absolute;left:0;right:0;bottom:0;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px;padding:12px;background:transparent;z-index:10}.sym-turn-toolbar-groups{display:flex;flex-wrap:wrap;gap:10px}.sym-turn-group{display:flex;flex-direction:column;align-items:center;gap:4px}.sym-turn-group-label{padding:2px 8px;border-radius:999px;background:#0000008c;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#fff}.sym-turn-group-btns{display:flex;gap:4px}.sym-turn-toolbar-actions{display:flex;gap:6px;align-items:flex-end}.sym-turn-btn{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:50px;padding:6px 9px;border:1px solid rgba(255,255,255,.2);border-radius:10px;background:#00000057;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.sym-turn-btn:hover:not(:disabled){background:#00000085;border-color:#ffffff57;color:#fff}.sym-turn-btn:disabled{opacity:.35;cursor:not-allowed}.sym-turn-btn-icon{font-size:17px;line-height:1;display:flex;align-items:center;justify-content:center}.sym-turn-btn-short{font-size:10px;font-weight:700;letter-spacing:.02em;color:#ffffffeb}.sym-turn-cw{position:relative}.sym-turn-cw:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);z-index:100;width:max-content;max-width:min(300px,calc(100vw - 32px));padding:6px 10px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#000000d9;color:#fff;font-size:11px;line-height:1.45;text-align:center;white-space:normal;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .12s,visibility .12s;transition-delay:.15s}.sym-turn-cw:hover:after,.sym-turn-cw:focus-visible:after{opacity:1;visibility:visible}.sym-turn-cw.is-ccw{background:#7c4dff80;border-color:#7c4dffcc}.sym-turn-cw.is-ccw .sym-turn-btn-short{color:#fff}.sym-corner-axes{position:absolute;bottom:12px;right:12px;pointer-events:none;z-index:10}.sym-lesson-panel{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0;overflow-y:hidden}.sym-lesson-unit-card,.sym-lesson-concept-card{background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #d8d0c5;border-radius:18px;padding:18px;flex-shrink:0}.sym-lesson-panel:not(:has(.sym-lesson-symbols-card)) .sym-lesson-concept-card{flex-shrink:1;min-height:0;overflow-y:auto}.sym-lesson-symbols-card{background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #d8d0c5;border-radius:18px;padding:18px;overflow-y:auto;min-height:0;flex-shrink:1}.sym-lesson-unit-card{display:flex;align-items:center;gap:10px}.sym-lesson-unit-dot{width:8px;height:8px;border-radius:50%;background:#56478e;box-shadow:0 0 6px #56478e80;flex-shrink:0}.sym-lesson-unit-meta{font-size:10px;color:#6f5fa8;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.sym-lesson-unit-title{font-size:18px;font-weight:700;color:#1c1c18;margin-top:2px}.sym-lesson-card-label{font-size:10px;color:#7a7482;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.sym-lesson-concept-text{font-size:13px;color:#5b5764;line-height:1.7}.sym-lesson-concept-text strong{color:#1c1c18}.sym-symbol-list{display:flex;flex-wrap:wrap;gap:8px}.sym-symbol-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 16px;border:1px solid #d8d0c5;border-radius:12px;background:#f5f3ee;cursor:pointer;text-align:center;min-width:80px;transition:background .15s,border-color .15s,box-shadow .15s}.sym-symbol-item:hover{background:linear-gradient(135deg,#ece7df,#e0d8cc);border-color:#bbb3a5}.sym-symbol-item-active{background:linear-gradient(135deg,#e8e4f5,#f0ecf8);border-color:#56478e4d;box-shadow:0 0 0 2px #56478e1f}.sym-symbol-item-notation{font-size:16px;font-weight:700;color:#56478e;font-family:JetBrains Mono,SF Mono,monospace}.sym-symbol-item-active .sym-symbol-item-notation{color:#56478e}.sym-symbol-item-desc{font-size:10px;color:#7a7482;line-height:1.3}.sym-operation-tip-card{padding:14px 16px;border:1px solid rgba(86,71,142,.16);border-radius:14px;background:linear-gradient(180deg,#f4f1fb,#fff);flex-shrink:0}.sym-operation-tip-label{margin-bottom:6px;color:#56478e;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.sym-operation-tip-text{color:#5b5764;font-size:12px;line-height:1.6}.sym-lesson-tour-card{padding:14px 16px;border:1px solid rgba(86,71,142,.16);border-radius:14px;background:linear-gradient(180deg,#f4f1fb,#fff);flex-shrink:0}.sym-lesson-tour-hint{margin:4px 0 12px;color:#5b5764;font-size:12px;line-height:1.6}.sym-lesson-tour-btn{width:100%;padding:10px 16px;border:none;border-radius:10px;background:#56478e;color:#fff;font-size:12px;font-weight:700;letter-spacing:.02em;cursor:pointer;transition:background .15s,opacity .15s}.sym-lesson-tour-btn:hover:not(:disabled){background:#473a77}.sym-lesson-tour-btn:disabled{opacity:.5;cursor:not-allowed}.sym-lesson-nav{display:flex;gap:8px;margin-top:auto}.sym-nav-btn{padding:10px 18px;border:none;border-radius:10px;font-size:12px;font-weight:600;cursor:pointer;transition:opacity .15s,box-shadow .15s}.sym-nav-btn:disabled{opacity:.4;cursor:not-allowed}.sym-nav-btn-prev{background:#ffffffb3;border:1px solid #d8d0c5;color:#7a7482}.sym-nav-btn-prev:hover:not(:disabled){background:#fff}.sym-nav-btn-next{flex:1;background:linear-gradient(135deg,#56478e,#6f5fa8);color:#fff;box-shadow:0 2px 8px #56478e4d}.sym-nav-btn-next:hover:not(:disabled){opacity:.9}@media(max-width:960px){.sym-page{padding:16px}.sym-lesson{flex-direction:column}.sym-lesson-3d{flex:none;height:300px;min-height:300px}.sym-lesson-panel{flex:none}}@media(max-width:960px){.sym-turn-cw:after{left:0;transform:none;max-width:calc(100vw - 80px)}}@media(min-width:961px){.teaching-hub-shell:has(.sym-page){height:100dvh;min-height:600px}}.sym-sheet-trigger{padding:5px 14px;border:none;border-radius:10px;background:linear-gradient(135deg,#56478e,#6f5fa8);color:#fff;font-size:10px;font-weight:600;cursor:pointer;white-space:nowrap;box-shadow:0 2px 6px #56478e4d;transition:opacity .15s;flex-shrink:0}.sym-sheet-trigger:hover{opacity:.9}.sym-sheet-overlay{position:fixed;inset:0;z-index:100;background:#1c1c184d;display:flex;align-items:flex-start;justify-content:center;padding:60px 20px}.sym-sheet-modal{background:#fcf9f3;border:1px solid #d8d0c5;border-radius:24px;padding:24px;max-width:560px;width:100%;box-shadow:0 16px 48px #00000026;max-height:calc(100vh - 120px);display:flex;flex-direction:column}.sym-sheet-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}.sym-sheet-title{font-size:16px;font-weight:700;color:#1c1c18}.sym-sheet-subtitle{font-size:10px;color:#7a7482;margin-top:2px}.sym-sheet-close{width:30px;height:30px;border:none;border-radius:8px;background:#0000000a;color:#7a7482;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s;flex-shrink:0}.sym-sheet-close:hover{background:#00000014}.sym-sheet-body{overflow-y:auto;flex:1;min-height:0}.sym-sheet-body::-webkit-scrollbar{width:4px}.sym-sheet-body::-webkit-scrollbar-thumb{background:#d8d0c5;border-radius:2px}.sym-sheet-group{margin-bottom:14px}.sym-sheet-group:last-child{margin-bottom:0}.sym-sheet-group-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#56478e;letter-spacing:.04em;text-transform:uppercase;margin-bottom:8px}.sym-sheet-group-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.sym-sheet-cards{display:flex;flex-wrap:wrap;gap:5px}.sym-sheet-card{display:flex;align-items:center;justify-content:center;padding:8px 14px;border:1px solid #d8d0c5;border-radius:10px;background:#f5f3ee;cursor:pointer;text-align:center;transition:background .12s,border-color .12s}.sym-sheet-card:hover{background:linear-gradient(135deg,#ece7df,#e0d8cc);border-color:#bbb3a5}.sym-sheet-card-wide{background:#e8e4f5;border-color:#56478e40}.sym-sheet-card-wide:hover{background:linear-gradient(135deg,#ddd8f0,#e0daf5);border-color:#56478e80}.sym-sheet-card-notation{font-size:16px;font-weight:700;color:#56478e;font-family:JetBrains Mono,SF Mono,monospace}.teaching-hub{display:flex;min-height:100vh;min-height:100dvh;font-family:system-ui,-apple-system,sans-serif;background:#f8f9fa}.teaching-hub-shell{display:flex;flex:1;flex-direction:column;width:100%;min-width:0;min-height:100%;background:linear-gradient(180deg,#fcf9f3,#f3efe8)}.hub-shell-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:16px 24px;background:#fcf9f3e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid #cac4d1}.hub-shell-brand-block{display:flex;align-items:center;gap:32px}.hub-shell-brand{font-size:24px;font-weight:800;color:#56478e;letter-spacing:-.02em}.hub-shell-nav{display:flex;align-items:center;gap:20px}.hub-shell-nav-link{border:0;background:transparent;border-bottom:2px solid transparent;padding:18px 0;color:#484550;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;cursor:pointer}.hub-shell-nav-link-active{color:#56478e;border-bottom-color:#56478e}.hub-shell-actions{display:flex;align-items:center;gap:12px}.hub-shell-search{display:flex;align-items:center;gap:8px;min-width:240px;padding:10px 14px;border:1px solid #cac4d1;border-radius:12px;background:#fff}.hub-shell-action-icon{color:#484550}.hub-shell-search input{width:100%;border:0;background:transparent;color:#484550;outline:none}.hub-shell-icon-btn{width:40px;height:40px;border:1px solid #cac4d1;border-radius:999px;background:#fff;color:#484550;cursor:pointer}.hub-content{display:flex;flex-direction:column;flex:1;min-height:0;padding:24px 28px 32px}.hub-btn{padding:10px 20px;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:opacity .15s}.hub-btn:hover:not(:disabled){opacity:.85}.hub-btn:disabled{opacity:.5;cursor:not-allowed}.hub-btn-primary{background:#5c6bc0;color:#fff}.hub-btn-secondary{background:#26a69a;color:#fff}.hub-btn-sm{padding:4px 14px;font-size:11px}.hub-input{flex:1;padding:10px 14px;border:1px solid #e0e0e0;border-radius:8px;font-size:14px;outline:none;font-family:inherit}.hub-input:focus{border-color:#5c6bc0;box-shadow:0 0 0 2px #5c6bc026}.hub-input-error{border-color:#e53935}.hub-error-text{font-size:12px;color:#e53935;margin-top:6px}.hub-footer{display:flex;justify-content:space-between;align-items:center;padding:20px 28px;border-top:1px solid #cac4d1}.hub-footer-brand{max-width:340px}.hub-footer-brand-name{font-weight:800;color:#56478e;font-size:16px}.hub-footer-brand-tagline{margin:4px 0 0;color:#484550;font-size:12px;line-height:1.4}.hub-footer-nav{display:flex;gap:24px;flex-shrink:0}.hub-footer-nav a{color:#484550;text-decoration:none;font-size:13px;font-weight:500;transition:color .15s}.hub-footer-nav a:hover{color:#56478e}@media(max-width:720px){.hub-shell-header,.hub-shell-brand-block,.hub-shell-actions{flex-direction:column;align-items:flex-start}.hub-shell-search{min-width:0;width:100%}}@media(max-width:600px){.hub-footer{flex-direction:column;align-items:flex-start;gap:12px;padding:16px 20px}.hub-footer-brand{max-width:none}}.pll-top-view-panel{position:absolute;top:46px;left:8px;z-index:3;width:108px;display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:10px;background:#14141ce0;border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 12px #0000004d}.pll-top-view-panel__label{font-size:.7rem;font-weight:600;color:#ffffffb3;text-align:center;line-height:1}.pll-top-view-panel__grid{position:relative;width:96px;height:96px;margin:0 auto}.pll-top-view-panel__arrows{position:absolute;inset:0;width:100%;height:100%;color:#00bcd4;z-index:1}.pll-top-view-panel__arrow{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.pll-top-view-panel__cell-list{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;gap:2px}.pll-top-view-panel__cell{border-radius:3px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06)}.pll-top-view-panel__cell.is-center{background:#ffffff08;border:none}.pll-top-view-panel__cell.is-active{background:#ffffff1a;border-color:#ffffff26}.pll-top-view-panel__cell.is-fixed{background:#81c7841f;border-color:#81c78440}.oll-top-view-panel{position:absolute;top:46px;left:8px;z-index:3;width:116px;display:flex;flex-direction:column;gap:8px;padding:8px 6px 10px;border-radius:10px;background:#14141ce0;border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 12px #0000004d;overflow:visible}.oll-top-view-panel__label{font-size:.7rem;font-weight:600;color:#ffffffb3;text-align:center;line-height:1}.oll-top-view-panel__grid{position:relative;width:92px;height:92px;margin:0 auto;overflow:visible}.oll-top-view-panel__edges{position:absolute;inset:0;width:100%;height:100%;color:#00bcd4;z-index:1;overflow:visible}.oll-top-view-panel__cell-list{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;gap:2px}.oll-top-view-panel__cell{border-radius:3px}.oll-top-view-panel__cell--oriented{background:gold;border:1px solid rgba(0,0,0,.12)}.oll-top-view-panel__cell--misoriented{background:#888;border:1px solid rgba(0,0,0,.12)}.oll-top-view-panel__cell--center{background:gold;border:1px solid rgba(0,0,0,.12)}.oll-top-view-panel__effect-arrow{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.f2l-top-view-panel{position:absolute;top:46px;left:8px;z-index:3;width:108px;display:flex;flex-direction:column;gap:4px;padding:8px 6px 10px;border-radius:10px;background:#14141ce0;border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 12px #0000004d;pointer-events:none;overflow:visible}.f2l-top-view-panel__label{font-size:.7rem;font-weight:600;color:#ffffffb3;text-align:center;line-height:1;text-transform:capitalize}.f2l-top-view-panel__scene{width:92px;height:92px;margin:0 auto;perspective:220px;display:flex;align-items:center;justify-content:center}.f2l-top-view-panel__cube{width:60px;height:60px;position:relative;transform-style:preserve-3d;transform:rotateX(-30deg) rotateY(-42deg)}.f2l-top-view-panel__face{position:absolute;width:60px;height:60px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:1px;padding:1px;background:#111}.f2l-top-view-panel__face--U{transform:rotateX(90deg) translateZ(30px)}.f2l-top-view-panel__face--F{transform:translateZ(30px)}.f2l-top-view-panel__face--R{transform:rotateY(90deg) translateZ(30px)}.f2l-top-view-panel__sticker{border-radius:2px}.f2l-top-view-panel__sticker--dim{background:#888}.cube-playback{flex:1;display:flex;flex-direction:column;gap:0;min-width:0}.cube-playback-3d-area{flex:1;display:flex;gap:2px;min-height:200px;position:relative}.cube-playback-3d-execution,.cube-playback-3d-target{flex:1 1 0;position:relative;min-height:0;min-width:0}.cube-playback-3d-execution canvas,.cube-playback-3d-target canvas{transform:translateY(-44px)}.cube-playback-3d-panel-header{position:absolute;top:8px;left:8px;right:8px;z-index:2;display:flex;justify-content:center;align-items:center;pointer-events:none}.cube-playback-3d-label{background:#00000080;color:#ffffffe6;padding:2px 12px;border-radius:999px;font-size:.8rem;letter-spacing:.5px;text-transform:uppercase;pointer-events:none}.copy-scramble-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:4px;background:#0006;color:#ffffffb3;cursor:pointer;transition:background .15s,color .15s;pointer-events:auto}.copy-scramble-btn:hover{background:#0009;color:#fff}.copy-scramble-btn:disabled{cursor:default;opacity:.7}.unified-copy-btn-wrapper{position:absolute;top:8px;right:16px;z-index:7}.copy-scramble-popup{position:absolute;top:calc(100% + 4px);right:0;z-index:100;min-width:140px;background:#000000d9;border-radius:6px;overflow:hidden;display:flex;flex-direction:column}.copy-scramble-popup button{display:flex;align-items:center;gap:6px;padding:8px 14px;border:none;background:transparent;color:#ffffffd9;font-size:.78rem;cursor:pointer;white-space:nowrap;transition:background .12s}.copy-scramble-popup button:hover{background:#ffffff1f}.copy-scramble-popup button:first-child{border-bottom:1px solid rgba(255,255,255,.1)}.has-tip{position:relative}.has-tip:after,.has-tip-down:after{content:attr(data-tip);position:absolute;left:50%;transform:translate(-50%);z-index:100;padding:3px 8px;border-radius:4px;background:#000c;color:#fff;font-size:.72rem;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .12s;transition-delay:.15s}.has-tip:after{bottom:calc(100% + 6px)}.has-tip-down{position:relative}.has-tip-down:after{top:calc(100% + 6px)}.has-tip:hover:after,.has-tip-down:hover:after{opacity:1}@media(max-width:1200px){.cube-playback-3d-area{flex-wrap:wrap}}.view-controls{position:absolute;top:8px;left:50%;right:auto;transform:translate(-50%);z-index:6;display:flex;flex-direction:row;gap:5px}.view-controls-btn{position:relative;display:inline-flex;align-items:center;gap:4px;background:#00000080;color:#ffffffbf;border:none;border-radius:999px;padding:4px 9px;font-size:.65rem;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.view-controls-btn:before{content:"";width:3px;height:3px;border-radius:50%;border:1.5px solid rgba(255,255,255,.6);background:transparent;flex-shrink:0}.view-controls-btn:hover{color:#fff;background:#000000a6}.view-controls-btn-active{background:#56478ef2;color:#fff}.view-controls-btn-active:before{background:#fff;border-color:#fff}.view-controls-btn-active:hover{background:#56478e;color:#fff}.task-info-bar{position:absolute;bottom:0;left:0;right:0;z-index:4;padding:10px 16px;background:#fff;border-top:1px solid #eee}.task-info-bar-title{font-size:14px;font-weight:600;color:#56478e}.task-info-bar-goal{font-weight:400;color:#888;margin-left:8px;font-size:12px}.task-info-bar-analysis{margin-top:4px}.task-info-bar-analysis summary{font-size:12px;color:#aaa;cursor:pointer;padding:2px 0}.task-info-bar-analysis summary:hover{color:#56478e}.task-info-bar-analysis p{margin:4px 0 0;color:#666;font-size:12px;line-height:1.4}.task-info-bar-done{opacity:.6}.task-info-bar-done .task-info-bar-title{color:#81c784}.analysis-structured{display:flex;flex-direction:column;gap:8px}.analysis-section{display:flex;flex-direction:column;gap:2px}.analysis-label{font-weight:600;font-size:.85em;color:var(--color-text-secondary)}.analysis-section p{margin:0;font-size:.9em;line-height:1.4}.polar-overlay{position:absolute;bottom:70px;right:12px;width:200px;height:200px;z-index:3;border-radius:8px;overflow:hidden;background:transparent;border:1px solid rgba(86,71,142,.15)}.polar-overlay--left{right:auto;left:12px}.tutorial-reader{--tr-primary: #56478e;--tr-on-primary: #ffffff;--tr-surface: #fcf9f3;--tr-surface-container: #f0eee8;--tr-on-surface: #1c1c18;--tr-on-surface-variant: #484550;--tr-muted: #64748b;--tr-outline: #cac4d1;--tr-radius: .75rem;--tr-radius-sm: .5rem;--tr-font-ui: "Inter", "Noto Sans SC", system-ui, sans-serif;--tr-font-mono: "JetBrains Mono", ui-monospace, monospace;--tr-measure: 60ch;--tr-content-width: 820px;--tr-space: 16px;--tr-figure-min-height: 200px;--tr-figure-max-height: 320px;--tr-figure-max-width: 320px;--tr-topview-size: 220px;--tr-topview-gap: 3px;--tr-stage-foundation: #8a6d4b;--tr-stage-middle: #4f7a6e;--tr-stage-last-layer: #5d5b8a}.tutorial-reader{background:#fff;border:1px solid var(--tr-outline);border-radius:var(--tr-radius);padding:24px;font-family:var(--tr-font-ui);color:var(--tr-on-surface)}.tr-header{margin-bottom:20px}.tr-back-btn{position:absolute;right:100%;margin-right:46px;top:0;padding-top:0;font-size:.9rem;font-weight:500;color:var(--tr-primary);text-decoration:none;white-space:nowrap}.tr-back-btn:hover{text-decoration:underline;text-underline-offset:2px}.tr-eyebrow{display:block;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tr-primary);margin-bottom:6px}.tr-page-title{margin:0;padding:8px 0;font-size:1.75rem;font-weight:700;line-height:1.2;color:var(--tr-on-surface)}.tr-section{margin-top:28px}.tr-section-title{font-size:1.375rem;font-weight:700;line-height:1.3;margin:0 0 12px;color:var(--tr-on-surface)}.tr-section-rail{position:fixed;right:24px;top:50%;transform:translateY(-50%);z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:1.25rem}.tr-section-rail:before{content:"";position:absolute;top:.75rem;bottom:.75rem;right:.75rem;width:2px;background:var(--tr-outline);z-index:0}.tr-section-rail__item{position:relative;z-index:1;display:flex;align-items:center;gap:.625rem;text-decoration:none}.tr-section-rail__label{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:112px;text-align:right;font-size:.78rem;font-weight:500;line-height:1.25;color:var(--tr-on-surface-variant)}.tr-section-rail__item.is-active .tr-section-rail__label{font-weight:700;color:var(--tr-on-surface)}.tr-section-rail__dot{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;flex:0 0 auto;border-radius:9999px;border:1px solid var(--tr-outline);background:var(--tr-surface);color:var(--tr-on-surface-variant);font-size:.72rem;font-weight:600;line-height:1;transition:background .12s ease,color .12s ease,border-color .12s ease,transform .12s ease}.tr-section-rail__item:hover .tr-section-rail__dot{background:var(--tr-surface-container)}.tr-section-rail__item.is-active .tr-section-rail__dot{background:var(--tr-primary);border-color:var(--tr-primary);color:var(--tr-on-primary);transform:scale(1.18)}.tr-section-rail__sub{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;margin-right:2.25rem;animation:tr-rail-sub-in .16s ease both}@keyframes tr-rail-sub-in{0%{opacity:0;transform:translate(6px)}to{opacity:1;transform:translate(0)}}.tr-section-rail__phase{position:relative;z-index:1;display:flex;align-items:center;gap:.5rem;text-decoration:none}.tr-section-rail__phase-label{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:110px;text-align:right;font-size:.72rem;font-weight:500;line-height:1.2;color:var(--tr-on-surface-variant)}.tr-section-rail__phase.is-active .tr-section-rail__phase-label{font-weight:700;color:var(--tr-on-surface)}.tr-section-rail__phase-dot{width:.5rem;height:.5rem;flex:0 0 auto;border-radius:9999px;background:var(--tr-outline);transition:background .12s ease,transform .12s ease}.tr-section-rail__phase:hover .tr-section-rail__phase-dot{background:var(--tr-on-surface-variant)}.tr-section-rail__phase.is-active .tr-section-rail__phase-dot{background:var(--tr-primary);transform:scale(1.25)}@media(max-width:1179px){.tr-section-rail{display:none}}.tr-anchor{margin-top:24px}.tr-group{margin-top:20px;padding:16px 20px;background:var(--tr-surface);border:1px solid var(--tr-outline);border-radius:var(--tr-radius);display:grid;grid-template-columns:1fr minmax(0,var(--tr-figure-max-width));grid-template-rows:repeat(4,auto);column-gap:32px;align-items:start}.tr-group__title{grid-column:1}.tr-group>.tr-anchor{grid-column:1}.tr-group>.tr-details{grid-column:1}.tr-group>.tr-bridge-link{grid-column:1}.tr-group>.tr-figure{grid-column:2;grid-row:1 / -1;margin:0}.tr-group>.tr-anchor{margin-top:0}.tr-group__title{margin:0 0 8px;padding-bottom:8px;font-size:1rem;font-weight:600;color:var(--tr-on-surface);border-bottom:1px solid var(--tr-outline)}.tr-group[data-tone=cross],.tr-group[data-tone=L],.tr-group[data-tone=line],.tr-group[data-tone=dot],.tr-group[data-tone=stage-narrative]{display:block;padding:0;background:none;border:none;border-radius:0;margin-top:22px}.tr-group[data-tone=stage-narrative]{margin-top:26px}.tr-group[data-tone=cross] .tr-group__title,.tr-group[data-tone=L] .tr-group__title,.tr-group[data-tone=line] .tr-group__title,.tr-group[data-tone=dot] .tr-group__title,.tr-group[data-tone=stage-narrative] .tr-group__title{margin:0 0 8px;padding-bottom:0;border-bottom:none;font-weight:400;font-size:.9rem;color:var(--tr-on-surface-variant, #64748b)}.tr-group[data-tone=cross] .tr-group__title strong,.tr-group[data-tone=L] .tr-group__title strong,.tr-group[data-tone=line] .tr-group__title strong,.tr-group[data-tone=dot] .tr-group__title strong,.tr-group[data-tone=stage-narrative] .tr-group__title strong{font-weight:700;font-size:1rem;color:var(--tr-on-surface, #1f2937)}.tr-group[data-tone=stage-narrative] .tr-group__title .tr-inline-link--anchor{font-weight:700;font-size:1rem;color:var(--tr-primary, #2563eb)}.tr-group[data-tone=cross]>.tr-case-list,.tr-group[data-tone=L]>.tr-case-list,.tr-group[data-tone=line]>.tr-case-list,.tr-group[data-tone=dot]>.tr-case-list{margin-top:4px}.tr-group[data-tone=cross]>:not(.tr-group__title),.tr-group[data-tone=L]>:not(.tr-group__title),.tr-group[data-tone=line]>:not(.tr-group__title),.tr-group[data-tone=dot]>:not(.tr-group__title){margin-left:16px}@media(max-width:760px){.tr-group{grid-template-columns:1fr;grid-template-rows:none}.tr-group>.tr-figure{grid-column:1;grid-row:auto;margin:16px 0}}@media(max-width:480px){.tr-group{padding:12px 14px}}.tr-paragraph{line-height:1.6;margin:8px 0}.tr-paragraph--subtitle{font-size:1.05rem;font-weight:700;margin:16px 0 4px}.tr-paragraph--muted{color:var(--tr-on-surface-variant, #64748b);font-size:.9rem}.tr-list{margin:8px 0 8px 20px;line-height:1.6}.tr-list li{margin:4px 0}.tr-callout{border-left:3px solid var(--tr-primary);background:var(--tr-surface-container);padding:12px 16px;border-radius:var(--tr-radius-sm);margin:12px 0;line-height:1.6}.tr-callout--warning{border-left-color:#ba1a1a}.tr-callout--tip{border-left-color:#26a69a}.tr-details{border-left:3px solid var(--tr-primary);background:var(--tr-surface-container);border-radius:var(--tr-radius-sm);margin:12px 0;overflow:hidden}.tr-details>.tr-details__summary{cursor:pointer;font-weight:500;color:var(--tr-on-surface);padding:10px 16px}.tr-details>.tr-details__summary:hover{background:var(--tr-surface)}.tr-details[open]{background:var(--tr-surface)}.tr-details__content{padding:4px 16px 12px}.tr-details--reference{border-left:none;background:none;border-radius:0;margin:10px 0}.tr-details--reference[open]{background:none}.tr-details--reference>.tr-details__summary{padding:4px 0;font-weight:600;font-size:.92rem;color:var(--tr-on-surface)}.tr-details--reference>.tr-details__summary:hover{background:none}.tr-details--reference>.tr-details__content{padding:2px 0 8px}.tr-details--reference:has(.tr-group)>.tr-details__summary{font-size:1.1rem;font-weight:700}.tr-figure{margin:16px 0;display:flex;flex-direction:column;align-items:center;text-align:center}.tr-figure figcaption{font-size:13px;color:var(--tr-on-surface-variant);margin-top:8px;max-width:var(--tr-measure)}.tr-figure__canvas{width:100%;max-width:var(--tr-figure-max-width);aspect-ratio:1 / 1;max-height:var(--tr-figure-max-height);position:relative}.tr-figure__placeholder{position:absolute;inset:0;border-radius:var(--tr-radius-sm);background:var(--tr-surface-container);border:1px solid var(--tr-outline)}.tr-goal-figure{display:flex;flex-direction:column;align-items:center;width:100%;gap:8px}.tr-figure__scope-toggle{display:inline-flex;border:1px solid var(--tr-outline);border-radius:var(--tr-radius-sm);overflow:hidden;background:var(--tr-surface)}.tr-figure__canvas .tr-figure__scope-toggle{position:absolute;top:8px;right:8px;z-index:2}.tr-figure__scope-btn{appearance:none;border:none;background:transparent;color:var(--tr-on-surface-variant);font:inherit;font-size:12px;line-height:1;padding:6px 12px;cursor:pointer;transition:background .12s ease,color .12s ease}.tr-figure__scope-btn:hover{background:var(--tr-surface-container)}.tr-figure__scope-btn.is-active{background:var(--tr-primary);color:var(--tr-on-primary)}.tr-playback-figure{display:flex;flex-direction:column;width:100%;gap:0px}.tr-playback-figure__row{display:flex;flex-direction:row;align-items:stretch;width:100%;gap:0px}.tr-playback-figure__cube{flex:0 0 var(--tr-figure-max-width);max-width:var(--tr-figure-max-width);min-width:0}.tr-playback-figure__panel{flex:1 1 280px;min-width:0;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:12px}.tr-playback-figure__steps{display:flex;flex-direction:column;gap:6px}.tr-playback-step{display:flex;align-items:flex-start;gap:6px;font-size:13px;line-height:1.4;padding:6px 9px;border-radius:var(--tr-radius-sm);color:var(--tr-on-surface-variant);opacity:.5;transition:opacity .15s ease,background .15s ease,border-color .15s ease}.tr-playback-step.is-current{opacity:1;color:var(--tr-on-surface);font-weight:600;background:var(--tr-surface-container)}.tr-playback-step.is-done{opacity:.65}.tr-playback-step__check{color:var(--tr-primary, #56478e);font-weight:700;flex:0 0 auto}@media(max-width:600px){.tr-playback-figure__row{flex-direction:column;gap:0px}.tr-playback-figure__cube,.tr-playback-figure__panel{flex-basis:auto;width:100%}}.tr-playback-figure__tokens{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.tr-playback-group{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.tr-playback-group__label{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--tr-primary, #56478e);text-transform:uppercase;margin-right:2px;opacity:.85}.tr-playback-sep{font-size:15px;font-weight:600;color:var(--tr-outline, #aaa);align-self:center;margin:0 2px}.tr-playback-token{font-family:var(--tr-font-mono, ui-monospace, SFMono-Regular, monospace);font-size:13px;line-height:1;padding:5px 9px;border-radius:var(--tr-radius-sm);border:1px solid var(--tr-outline);background:var(--tr-surface);color:var(--tr-on-surface-variant);transition:background .12s ease,color .12s ease,border-color .12s ease}.tr-playback-token.is-done{background:var(--tr-surface-container);color:var(--tr-on-surface);font-weight:600}.tr-playback-token.is-current{background:var(--tr-primary);border-color:var(--tr-primary);color:var(--tr-on-primary);font-weight:700;transform:scale(1.08);box-shadow:0 0 0 3px color-mix(in srgb,var(--tr-primary, #56478e) 30%,transparent)}.tr-playback-figure__tip{font-size:12px;line-height:1.5;color:var(--tr-on-surface-variant);font-style:italic;padding:4px 0}.tr-playback-figure__controls{display:flex;justify-content:center;align-items:center;gap:8px;padding-bottom:4px}.tr-playback-btn{appearance:none;font:inherit;font-size:13px;line-height:1;padding:7px 12px;min-width:40px;border:1px solid var(--tr-outline);border-radius:var(--tr-radius-sm);background:var(--tr-surface);color:var(--tr-on-surface-variant);cursor:pointer;transition:background .12s ease,color .12s ease,opacity .12s ease}.tr-playback-btn:hover:not(:disabled){background:var(--tr-surface-container)}.tr-playback-btn:disabled{opacity:.4;cursor:default}.tr-playback-btn--primary{background:var(--tr-primary);border-color:var(--tr-primary);color:var(--tr-on-primary);font-weight:600}.tr-playback-btn--primary:hover:not(:disabled){filter:brightness(.95)}.tr-playback-figure__count{margin-left:4px;font-size:12px;color:var(--tr-on-surface-variant);font-variant-numeric:tabular-nums}.tr-kociemba-demo{flex-direction:row;align-items:center;gap:18px}.tr-kociemba-demo__cube{flex:0 0 280px;max-width:42%}.tr-kociemba-demo__side{flex:1 1 auto;display:flex;flex-direction:column;gap:10px;min-width:0}.tr-kociemba-demo__phase-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.tr-kociemba-demo__phase{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;padding:4px 8px;border-radius:var(--tr-radius-sm);border:1px solid var(--tr-outline)}.tr-kociemba-demo__phase--p1{color:#2563eb;border-color:#2563eb}.tr-kociemba-demo__phase--p2{color:#0d9488;border-color:#0d9488}.tr-kociemba-demo__tokens{display:flex;flex-wrap:wrap;gap:6px}.tr-playback-token.is-phase1{border-left:3px solid #2563eb}.tr-playback-token.is-phase2{border-left:3px solid #0d9488}.tr-kociemba-demo .tr-playback-token{font-size:11px;padding:3px 6px}.tr-kociemba-demo .tr-playback-figure__controls{align-self:center;padding:10px 0}.tr-kociemba-demo .tr-playback-token.is-phase1.is-done{background:#dbeafe;border-color:#2563eb;color:#1e3a8a}.tr-kociemba-demo .tr-playback-token.is-phase2.is-done{background:#ccfbf1;border-color:#0d9488;color:#134e4a}.tr-kociemba-demo__caption--boundary{background:var(--tr-surface-container);border-left:3px solid var(--tr-primary);padding:8px 12px;border-radius:var(--tr-radius-sm)}@media(max-width:720px){.tr-kociemba-demo{flex-direction:column;align-items:center}.tr-kociemba-demo__cube{flex-basis:auto;max-width:100%}.tr-kociemba-demo__side{align-items:stretch}}.tr-inline-code{font-family:var(--tr-font-mono, ui-monospace, SFMono-Regular, monospace);font-size:.92em;background:var(--tr-surface-container);padding:1px 5px;border-radius:var(--tr-radius-sm)}.tr-topview{display:flex;justify-content:center;width:100%}.tr-topview__grid{gap:var(--tr-topview-gap);max-width:var(--tr-topview-size);border-radius:var(--tr-radius-sm);overflow:hidden}.tr-topview__cell{border-radius:var(--tr-radius-sm);border:1px solid var(--tr-outline)}.tr-isocube{--tr-isocube-size: 96px;--tr-isocube-body: #1c1c18;--tr-isocube-dim: #9a96a0;width:calc(var(--tr-isocube-size) * 1.6);height:calc(var(--tr-isocube-size) * 1.6);perspective:calc(var(--tr-isocube-size) * 3.6);display:flex;align-items:center;justify-content:center}.tr-isocube__cube{width:var(--tr-isocube-size);height:var(--tr-isocube-size);position:relative;transform-style:preserve-3d}.tr-isocube__face{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:1px;padding:1px;background:var(--tr-isocube-body);box-sizing:border-box}.tr-isocube__face--U{transform:rotateX(90deg) translateZ(calc(var(--tr-isocube-size) / 2))}.tr-isocube__face--D{transform:rotateX(-90deg) translateZ(calc(var(--tr-isocube-size) / 2))}.tr-isocube__face--F{transform:translateZ(calc(var(--tr-isocube-size) / 2))}.tr-isocube__face--R{transform:rotateY(90deg) translateZ(calc(var(--tr-isocube-size) / 2))}.tr-isocube__sticker{border-radius:2px}.tr-isocube__swap-arrows{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:10}.tr-isocube__swap-arrow-line{stroke:var(--tr-primary, #56478e);stroke-width:2.5;opacity:.8}.tr-isocube__swap-arrow-head{fill:var(--tr-primary, #56478e);opacity:.8}.tr-isocube__sticker--dim{background:var(--tr-isocube-dim)}.tr-isocube__sticker--outline{box-shadow:inset 0 0 0 2px var(--tr-primary, #56478e)}.tr-isocube__sticker--hatch-stripe{background-image:repeating-linear-gradient(45deg,transparent 0 3px,color-mix(in srgb,var(--tr-primary, #56478e) 62%,transparent) 3px 4px)}.tr-isocube__sticker--hatch-grid{background-image:repeating-linear-gradient(45deg,transparent 0 3px,color-mix(in srgb,var(--tr-primary, #56478e) 62%,transparent) 3px 4px),repeating-linear-gradient(-45deg,transparent 0 3px,color-mix(in srgb,var(--tr-primary, #56478e) 62%,transparent) 3px 4px)}.tr-isocube__sticker--slot-boundary{outline:2px dashed var(--tr-primary, #56478e);outline-offset:-2px;border-radius:2px}.tr-progression-gallery{--tr-gallery-cube: 72px;display:grid;grid-template-columns:repeat(4,1fr);justify-items:center;gap:var(--tr-space);margin:16px 0}.tr-progression-gallery__item{margin:0;display:flex;flex-direction:column;align-items:center;gap:6px}.tr-progression-gallery__item .tr-isocube{--tr-isocube-size: var(--tr-gallery-cube)}.tr-progression-gallery__placeholder{width:calc(var(--tr-gallery-cube) * 1.6);height:calc(var(--tr-gallery-cube) * 1.6);border-radius:var(--tr-radius-sm);background:var(--tr-surface-container);border:1px dashed var(--tr-outline);opacity:.5}.tr-progression-gallery__caption{font-size:.72rem;line-height:1.2;text-align:center;color:var(--tr-on-surface-variant);max-width:9em}@media(max-width:480px){.tr-progression-gallery{--tr-gallery-cube: 56px}}.tr-stepper{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.tr-stepper-node{list-style:none}.tr-stepper-link{display:flex;align-items:center;gap:.5rem;width:100%;text-decoration:none;color:inherit;border-radius:var(--tr-radius-sm);padding:4px 6px}.tr-stepper-link:hover{background:var(--tr-surface-container);cursor:pointer}.tr-stepper-idx{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.5rem;padding:0 .25rem;border-radius:9999px;font-size:.8rem;font-weight:600;background:var(--tr-surface-container);color:var(--tr-primary);flex:0 0 auto}.tr-stepper-link:hover>.tr-stepper-idx{background:var(--tr-surface)}.tr-stepper-label{font-weight:500;color:var(--tr-on-surface)}.tr-stepper-difficulty{font-size:.75rem;color:var(--tr-on-surface-variant)}.tr-stepper-node--branch{background:var(--tr-surface-container);border-radius:var(--tr-radius-sm);padding:6px 8px}.tr-stepper-branch-head{display:flex;align-items:center;gap:.5rem;padding:4px 6px}.tr-stepper-routes{margin-left:auto;font-size:.7rem;color:var(--tr-on-surface-variant);background:var(--tr-surface);border:1px solid var(--tr-outline);border-radius:9999px;padding:1px 8px;flex:0 0 auto}.tr-stepper-routes-list{list-style:none;margin:2px 0 0;padding:0 0 0 1.5rem;display:flex;flex-direction:column;gap:.125rem}.tr-stepper-route{list-style:none}.tr-stepper-route-mark{color:var(--tr-primary);font-weight:600;flex:0 0 auto}.tr-stepper-route-label{color:var(--tr-on-surface)}.tr-stepper-route-link:hover{background:var(--tr-surface)}.tr-roadmap{margin:12px 0}.tr-roadmap-flow .tr-flow-graph__grid{grid-template-columns:repeat(var(--flow-cols),150px);gap:16px 56px;justify-content:center}.tr-flow-graph{position:relative;padding:4px 0}.tr-flow-graph__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:0}.tr-flow-graph__edge{fill:none;stroke:var(--tr-outline);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.tr-flow-graph__arrow{fill:var(--tr-outline)}.tr-flow-graph__grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(var(--flow-cols),minmax(0,1fr));gap:30px clamp(72px,16vw,180px);align-items:stretch}.tr-flow-graph__cell{min-width:0}.tr-flow-graph__cell--solo{display:flex;justify-content:center}.tr-flow-graph__cell--solo .tr-flow-graph__node-anchor{width:min(100%,260px)}.tr-flow-graph__node-anchor,.tr-roadmap-node{height:100%}.tr-roadmap-card{position:relative;z-index:1;display:flex;align-items:center;gap:.5rem;height:100%;min-height:40px;padding:6px 10px;background:var(--tr-surface);border:1px solid var(--tr-outline);border-radius:var(--tr-radius-sm);text-decoration:none;color:inherit}.tr-roadmap-card:hover{background:#fff}.tr-roadmap-node.is-active .tr-roadmap-card{box-shadow:0 0 0 2px var(--tr-primary);background:#fff}.tr-roadmap-node.is-active .tr-roadmap-idx{outline:2px solid var(--tr-primary);outline-offset:1px}.tr-roadmap-idx{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border-radius:9999px;font-size:.72rem;font-weight:700;color:var(--tr-on-primary);background:var(--tr-primary);flex:0 0 auto}.tr-roadmap-title{font-weight:600;font-size:.84rem;line-height:1.25;color:var(--tr-on-surface)}@media(max-width:560px){.tr-roadmap-flow .tr-flow-graph__grid{gap:12px 36px}.tr-roadmap-title{font-size:.8rem}}.tr-stage-roadmap{margin:12px 0}.tr-stage-roadmap-flow .tr-flow-graph__grid{grid-template-columns:repeat(var(--flow-cols),minmax(120px,1fr));gap:16px 48px;justify-content:center}.tr-stage-node{height:100%}.tr-stage-card{position:relative;z-index:1;display:flex;flex-direction:column;gap:6px;width:100%;height:100%;padding:10px 12px;border:1px solid var(--tr-border, #d0d0d0);border-radius:8px;background:#fafafa;text-align:center;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;font:inherit;color:inherit}.tr-stage-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000014;border-color:var(--tr-primary, #2563eb)}.tr-stage-label{font-weight:600;font-size:.84rem;line-height:1.25}.tr-stage-coverage-bar{width:100%;height:4px;border-radius:2px;background:var(--tr-outline, #e2e8f0);background-image:linear-gradient(to right,var(--tr-primary, #2563eb) var(--coverage, 0%),transparent var(--coverage, 0%))}.tr-stage-meta{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:8px}.tr-stage-coverage-text{font-size:.78rem;color:var(--tr-primary, #2563eb);font-weight:600}.tr-stage-difficulty{font-size:.72rem;padding:1px 8px;border-radius:999px;background:#eef2ff;color:#475569}.tr-stage-card[data-difficulty=重] .tr-stage-difficulty,.tr-stage-card[data-difficulty=hard] .tr-stage-difficulty{background:#fee2e2;color:#b91c1c}.tr-stage-card[data-difficulty=中] .tr-stage-difficulty,.tr-stage-card[data-difficulty=med] .tr-stage-difficulty{background:#fef3c7;color:#b45309}.tr-stage-card[data-difficulty=易] .tr-stage-difficulty,.tr-stage-card[data-difficulty=easy] .tr-stage-difficulty{background:#d1fae5;color:#047857}@media(max-width:720px){.tr-stage-roadmap-flow .tr-flow-graph__grid{gap:12px 32px}.tr-stage-label{font-size:.8rem}}.tr-decision-tree{margin:14px 0}.tr-decision-tree-flow .tr-flow-graph__grid{gap:40px 14px;align-items:center}.tr-decision-node{display:flex;flex-direction:column;align-items:center;padding:8px 12px;border-radius:8px;background:var(--tr-surface, #f8fafc);border:1px solid var(--tr-border, #e2e8f0);text-align:center;min-width:0}.tr-decision-node--root{background:var(--tr-primary, #2563eb);color:#fff;border-color:transparent;font-weight:600;font-size:.9rem}.tr-decision-node--branch{flex-direction:row;gap:6px;align-items:center}.tr-decision-node--branch,.tr-decision-node--summary{width:fit-content;margin-inline:auto}.tr-decision-node--branch[data-edge=L]{border-color:var(--tr-primary, #2563eb)}.tr-decision-node__label{font-weight:600;font-size:.82rem;line-height:1.2}.tr-decision-node__freq{font-size:.74rem;font-weight:700;color:var(--tr-primary, #2563eb)}.tr-decision-node--root .tr-decision-node__freq{color:#fff}.tr-decision-node--summary{font-size:.74rem;line-height:1.3;color:var(--tr-muted, #64748b);background:transparent;border-style:dashed}.tr-decision-node__text{max-width:15em;line-height:1.35}.tr-decision-glyph{display:grid;grid-template-columns:repeat(3,10px);grid-template-rows:repeat(3,10px);gap:1px;margin-bottom:2px}.tr-decision-glyph__cell{background:var(--tr-border, #e2e8f0);border-radius:2px}.tr-decision-glyph__cell[data-on=true]{background:var(--tr-accent, #fbbf24)}.tr-decision-glyph__cell--n{grid-area:1 / 2}.tr-decision-glyph__cell--e{grid-area:2 / 3}.tr-decision-glyph__cell--s{grid-area:3 / 2}.tr-decision-glyph__cell--w{grid-area:2 / 1}.tr-decision-glyph__cell--c{grid-area:2 / 2}@media(max-width:640px){.tr-decision-node--summary{display:none}.tr-decision-node--branch{flex-direction:column}.tr-decision-node__label{font-size:.76rem}}.tr-bridge-link{display:inline-block;margin-top:12px;padding:0;background:none;color:var(--tr-primary);text-decoration:none;font-weight:600}.tr-bridge-link:hover{text-decoration:underline;text-underline-offset:3px}.tr-inline-link{color:var(--tr-primary);text-decoration:underline;text-underline-offset:2px}.tr-table{border-collapse:collapse;margin:12px 0}.tr-table th,.tr-table td{border:1px solid var(--tr-outline);padding:6px 12px;text-align:left}.tr-table th{background:var(--tr-surface-container);font-family:var(--tr-font-mono)}.tr-gallery-item{border-top:1px solid var(--tr-outline);padding:12px 0}.tr-gallery-label{display:block;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tr-primary);margin-bottom:8px}.tutorial-page{background:var(--tr-surface, #fcf9f3);color:var(--tr-on-surface, #1c1c18);font-family:var(--tr-font-ui, "Inter", system-ui, sans-serif);min-height:100%;padding:32px 24px 64px}.tutorial-page .tutorial-reader{position:relative;max-width:var(--tr-content-width);margin:0 auto;background:transparent;border:none;border-radius:0;padding:0}@media(max-width:600px){.tr-back-btn{position:static;margin-right:0;margin-bottom:8px;padding-top:0}}.tutorial-page--placeholder{display:flex;align-items:center;justify-content:center}.tutorial-placeholder-card{background:#fff;border:1px solid var(--tr-outline, #cac4d1);border-radius:var(--tr-radius, .75rem);padding:48px 32px;text-align:center;max-width:480px}.tutorial-placeholder-card h1{font-size:20px;font-weight:600;margin-bottom:12px;color:var(--tr-on-surface, #1c1c18)}.tutorial-placeholder-card p{color:var(--tr-on-surface-variant, #484550);line-height:1.6}.tr-figure-pair{display:flex;align-items:center;justify-content:center;gap:12px;margin:16px 0}.tr-figure-pair__cell{flex:1 1 0;min-width:0;margin:0}.tr-figure-pair__arrow{flex:0 0 auto;font-size:22px;line-height:1;color:var(--tr-on-surface-variant);-webkit-user-select:none;user-select:none}@media(max-width:600px){.tr-figure-pair{flex-direction:column;gap:6px}.tr-figure-pair__arrow{transform:rotate(90deg)}}.tr-figure-row{display:flex;flex-wrap:wrap;align-items:stretch;justify-content:center;gap:12px;margin:16px 0}.tr-figure-row>.tr-figure{flex:1 1 200px;min-width:0;margin:0}.tr-figure-row>.tr-figure figcaption{max-width:150px}@media(max-width:600px){.tr-figure-row{flex-direction:column;gap:6px}}.tr-case-list{display:flex;flex-direction:column;margin:16px 0}.tr-case{display:flex;align-items:flex-start;gap:16px;padding:14px 0;border-top:1px solid var(--tr-outline)}.tr-case:first-child{border-top:none;padding-top:4px}.tr-case__thumb{flex:0 0 auto;display:flex;align-items:center;justify-content:center}.tr-case__thumb .tr-isocube{--tr-isocube-size: 72px}.tr-case__thumb .oll-top-view-panel{position:static;inset:auto;width:auto;padding:0;background:none;border:none;box-shadow:none}.tr-case__thumb .oll-top-view-panel__grid{width:72px;height:72px}.tr-case__body{flex:1 1 auto;min-width:0}.tr-case__state{font-weight:600;color:var(--tr-on-surface)}.tr-case__strategy{margin:4px 0 0;font-size:14px;line-height:1.6;color:var(--tr-on-surface-variant)}.tr-case-list--compact{flex-direction:row;flex-wrap:nowrap;gap:0px;margin:8px 0 12px}.tr-case-list--compact .tr-case{flex:1 1 0;min-width:0;flex-direction:column;align-items:center;gap:4px;padding:6px 2px;border-top:none}.tr-case-list--compact .tr-case__thumb .oll-top-view-panel__grid{width:60px;height:60px}.tr-case-list--compact .tr-case__state{font-size:13px;line-height:1.3;text-align:center}.tr-case-list--compact:not(.tr-case-list--float-start):not(.tr-case-list--float-end){flex-wrap:wrap;gap:14px 18px;justify-content:flex-start}.tr-case-list--compact:not(.tr-case-list--float-start):not(.tr-case-list--float-end) .tr-case{flex:0 0 auto}.tr-case-list--compact:not(.tr-case-list--float-start):not(.tr-case-list--float-end) .tr-case__thumb .oll-top-view-panel__grid{width:72px;height:72px}.tr-case-list--compact:not(.tr-case-list--float-start):not(.tr-case-list--float-end) .tr-case__body{max-width:72px}.tr-case-list--compact:not(.tr-case-list--float-start):not(.tr-case-list--float-end) .tr-case__state{overflow-wrap:anywhere;line-height:1.25}.tr-case-list--float-start{float:left;width:176px;margin:10px 4px 0 0}.tr-case-list--float-end{float:right;width:176px;margin:2px 0 10px 20px}@media(max-width:520px){.tr-case-list--float-start,.tr-case-list--float-end{float:none;width:100%;max-width:320px;justify-content:center;margin:8px auto}}@media(max-width:480px){.tr-case{gap:12px}.tr-case__thumb .tr-isocube{--tr-isocube-size: 60px}.tr-case__thumb .oll-top-view-panel__grid{width:60px;height:60px}}.tr-case-list--f2l-configuration{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:16px 0}.tr-section[data-section=model] .tr-case-list--f2l-configuration{grid-template-columns:repeat(3,1fr)}.tr-case-list--f2l-configuration .tr-case{flex-direction:column;align-items:center;gap:6px;min-width:0;padding:10px 6px;border:1px solid var(--tr-outline);border-radius:var(--tr-radius-sm)}.tr-case-list--f2l-configuration .tr-case:first-child{border-top:1px solid var(--tr-outline);padding-top:10px}.tr-case-list--f2l-configuration .tr-case__thumb .tr-isocube{--tr-isocube-size: 72px}.tr-case-list--f2l-configuration .tr-case__body{flex:1 1 auto;min-width:0;text-align:center}.tr-case-list--f2l-configuration .tr-case__state{font-size:13px;font-weight:600;line-height:1.3}.tr-case-list--f2l-configuration .tr-case__cue{margin:3px 0 0;font-size:12px;line-height:1.4;color:var(--tr-on-surface-variant);overflow-wrap:anywhere}.tr-case__badge{display:inline-block;font-size:10px;font-weight:600;line-height:1;padding:3px 6px;margin-right:4px;border-radius:999px;vertical-align:middle;background:var(--tr-primary-container, #e6e0f8);color:var(--tr-on-primary-container, #2a2150)}@media(max-width:360px){.tr-case-list--f2l-configuration .tr-case__thumb .tr-isocube{--tr-isocube-size: 60px}}@media(min-width:420px){.tr-case-list--f2l-configuration{grid-template-columns:repeat(3,1fr)}}@media(min-width:640px){.tr-case-list--f2l-configuration{grid-template-columns:repeat(4,1fr)}}@media(min-width:900px){.tr-case-list--f2l-configuration{grid-template-columns:repeat(5,1fr)}}@media(min-width:1100px){.tr-case-list--f2l-configuration{grid-template-columns:repeat(6,1fr)}}.tr-decision-tree--flow .tr-flow-graph__grid{gap:36px 12px;align-items:center}.tr-flow-node{display:flex;align-items:center;justify-content:center;padding:7px 11px;border-radius:8px;min-width:0;background:var(--tr-surface, #f8fafc);border:1px solid var(--tr-border, #e2e8f0);text-align:center;width:fit-content;margin-inline:auto}.tr-flow-node__label{font-size:.8rem;line-height:1.25;font-weight:500}.tr-flow-node--question{background:var(--tr-primary, #2563eb);color:#fff;border-color:transparent;font-weight:600}.tr-flow-node--result{border-color:var(--tr-primary, #2563eb);font-weight:600}.tr-flow-node--linked{cursor:pointer;text-decoration:none;transition:background .12s,color .12s}.tr-flow-node--linked:hover{background:var(--tr-primary, #2563eb);color:#fff}.tr-flow-node--exit{background:transparent;border-style:dashed;color:var(--tr-muted, #64748b);font-weight:500}.pll-perimeter{--pll-cell: 22px;--pll-gap: 4px;display:flex;flex-direction:column;align-items:center;gap:4px;width:fit-content}.pll-perimeter__grid{position:relative;display:grid;grid-template-columns:repeat(5,var(--pll-cell));grid-template-rows:repeat(5,var(--pll-cell));gap:var(--pll-gap)}.pll-cell{border-radius:3px;position:relative}.pll-cell--empty{background:transparent}.pll-cell--seg{box-shadow:inset 0 0 0 1px #0000001a}.pll-seg--unmatched:after{content:"";position:absolute;inset:0;border-radius:3px;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.62) 0 1px,transparent 1px 4px);pointer-events:none}.pll-seg--highlight{outline:2px solid var(--tr-primary, #2563eb);outline-offset:1px;z-index:1}.pll-seg--dimmed{opacity:.12}.pll-seg--dimmed.pll-seg--unmatched:after{content:none}.pll-perimeter__hidden-note{font-size:.68rem;color:var(--tr-muted, #64748b);line-height:1}.pll-perimeter__arrows{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;color:#1a1a1a}.pll-perimeter__arrows line{stroke:currentColor;stroke-width:.14;stroke-linecap:round}.tr-pll-group{display:flex;flex-direction:column;align-items:center;gap:6px}.pll-legend{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:.72rem;color:var(--tr-on-surface-variant, #475569)}.pll-legend__chip{display:inline-flex;align-items:center;gap:5px}.pll-legend__sticker{width:14px;height:14px;border-radius:3px;display:inline-block;background:#0046ad}.pll-legend__sticker--permuted{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.62) 0 1px,transparent 1px 4px)}.pll-legend__sticker--u{background:#ffd500}.pll-legend__sticker--dimmed{opacity:.12}.tr-case-list .pll-legend{font-size:.66rem}@media(max-width:480px){.pll-perimeter{--pll-cell: 20px}}@media(max-width:600px){.tr-case-list:has(.pll-perimeter){display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.tr-case-list:has(.pll-perimeter) .tr-case{width:100%}}.tr-details--reference[open]>.tr-details__content{padding-left:14px;border-left:2px solid var(--tr-border, #e2e8f0);margin-left:2px}.tr-deflist{margin:12px 0}.tr-deflist__item{margin:14px 0}.tr-deflist__item:first-child{margin-top:4px}.tr-deflist__term{font-size:1rem;font-weight:700;line-height:1.4;color:var(--tr-on-surface, #1c1c18);margin-bottom:2px}.tr-deflist__fields{margin:0 0 0 16px}.tr-deflist__field{font-size:.95rem;line-height:1.6;color:var(--tr-on-surface-variant, #484550)}.tr-deflist__field strong{font-weight:600;color:var(--tr-on-surface, #1c1c18)}.tr-deflist__field--muted{font-size:.85rem;color:var(--tr-muted, #64748b)}.tr-deflist__field--muted strong{font-weight:600;color:var(--tr-muted, #64748b)}.tr-cycle-graph{float:right;width:280px;margin:4px 0 10px 22px}.tr-cycle-graph__svg{width:100%;height:auto;overflow:visible}.tr-cycle-graph__edge{fill:none;stroke:var(--tr-outline, #cac4d1);stroke-width:2px;stroke-linecap:round}.tr-cycle-graph__arrow{fill:var(--tr-outline, #cac4d1)}.tr-cycle-graph__node{fill:var(--tr-surface, #fcf9f3);stroke:var(--tr-outline, #cac4d1);stroke-width:1}.tr-cycle-graph__label{font-family:var(--tr-font-ui, system-ui, sans-serif);font-size:12.5px;fill:var(--tr-on-surface, #1c1c18)}.tr-cycle-graph__center{font-family:var(--tr-font-ui, system-ui, sans-serif);font-size:22px;font-weight:600;fill:var(--tr-primary, #56478e)}@media(max-width:600px){.tr-cycle-graph{float:none;width:160px;margin:8px auto}}.tr-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;align-items:start;margin:16px 0}.tr-columns__col{min-width:0}*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,sans-serif;font-size:14px;color:#333;background:#f0f0f0}h1{font-size:16px;padding:8px 12px}.console-layout{display:flex;height:100%}.left-column{flex:0 0 40%;min-width:200px;overflow-y:auto;padding:6px;display:flex;flex-direction:column;gap:4px;background:#f5f5f5}.right-column{flex:1;min-width:300px;display:flex;flex-direction:column}.resizer-v{flex:0 0 6px;background:#e0e0e0;cursor:col-resize;position:relative}.resizer-v:hover,.resizer-v.active{background:#4a90d9}.resizer-h{flex:0 0 6px;background:#e0e0e0;cursor:row-resize;position:relative}.resizer-h:hover,.resizer-h.active{background:#4a90d9}.panel{background:#fff;border:1px solid #ddd;border-radius:4px;padding:8px}.panel-open{border-color:#4a90d9;border-width:2px}.panel summary{cursor:pointer;font-weight:600;-webkit-user-select:none;user-select:none}.panel .summary-text{font-weight:400;color:#999;font-size:12px;margin-left:8px}.panel .panel-content{margin-top:8px}.object-json{margin:0;padding:6px;background:#fafafa;border-radius:3px;font-size:12px;color:#666;overflow-x:auto}.render-area{flex:1;background:#1a1a2e;min-height:120px;display:flex;flex-direction:column;color:#999;font-size:13px}.render-area>div{flex:1;min-height:0}.flow-area{flex:1;background:#fff;padding:10px;min-height:120px}.flow-grid{margin-top:8px;display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:13px}.control-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.control-row button{padding:4px 10px;border:1px solid #ccc;border-radius:3px;background:#fff;cursor:pointer;font-size:13px}.control-row button:hover{background:#e8e8e8}.control-input{width:100%;margin-top:6px;padding:4px 8px;border:1px solid #ccc;border-radius:3px;font-size:13px}.app-main{height:100vh}.debug-locale-switcher{position:fixed;top:12px;right:12px;z-index:1000}.debug-locale-toggle{min-width:2.25rem;height:2.25rem;padding:0 .5rem;border:1px solid #cac4d1;border-radius:.5rem;background:#fcf9f3e6;color:#1c1c18;font-size:.85rem;font-weight:600;cursor:pointer;box-shadow:0 1px 4px #0000001f;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.debug-locale-toggle:hover{background:#fcf9f3}.debug-locale-popover{position:absolute;top:calc(100% + .4rem);right:0;min-width:8rem;padding:.35rem;border:1px solid #cac4d1;border-radius:.65rem;background:#fcf9f3;box-shadow:0 6px 18px #00000029}.debug-locale-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.45rem .55rem;border:0;border-radius:.45rem;background:transparent;color:#1c1c18;font-size:.85rem;cursor:pointer;text-align:left}.debug-locale-option:hover,.debug-locale-option[aria-checked=true]{background:#eee7dc}.net-grid{--net-cell-size: clamp(16px, min(4vw, 4vh), 28px);--net-cell-gap: 1px;--net-face-gap: 2px;--net-row-gap: 12px;--net-column-gap: 12px;--net-face-size: calc(var(--net-cell-size) * 3 + var(--net-cell-gap) * 2);display:flex;flex-direction:column;gap:var(--net-row-gap);align-items:center;max-width:100%;max-height:100%}.net-row{display:flex;gap:var(--net-column-gap)}.net-face-empty{width:var(--net-face-size);height:var(--net-face-size)}.net-face{display:flex;flex-direction:column;gap:var(--net-face-gap);position:relative}.net-face-label{position:absolute;left:calc(var(--net-cell-size) * 1.175 + var(--net-cell-gap));top:calc(var(--net-cell-size) * 1.175 + var(--net-cell-gap));width:calc(var(--net-cell-size) * .65);height:calc(var(--net-cell-size) * .65);display:flex;align-items:center;justify-content:center;font-size:calc(var(--net-cell-size) * .4);font-weight:700;line-height:1;color:#0000008c;background:#ffffffb8;border-radius:50%;box-sizing:border-box;pointer-events:none;z-index:1}.net-face-grid{display:grid;grid-template-columns:repeat(3,var(--net-cell-size));grid-template-rows:repeat(3,var(--net-cell-size));gap:var(--net-cell-gap)}.net-cell{width:var(--net-cell-size);height:var(--net-cell-size);border:1px solid #666;border-radius:2px;cursor:pointer;padding:0;transition:border-color .1s}.net-cell:hover{border-color:#aaa}.net-cell-selected{border-color:#fff;border-width:2px;box-shadow:0 0 4px #ffffff80}.net-cell-problem{border-color:#ff4444 \!important;border-width:2px;animation:pulse-red 1s infinite}@keyframes pulse-red{0%,to{box-shadow:0 0 2px #f44}50%{box-shadow:0 0 8px #f44}}.net-cell-empty{opacity:.3}.scan-color-picker{display:flex;gap:4px;flex-wrap:wrap}.color-swatch{width:24px;height:24px;border-radius:3px;border:2px solid transparent;cursor:pointer;transition:border-color .1s}.color-swatch:hover{border-color:#aaa}.color-swatch-selected{border-color:#fff;box-shadow:0 0 4px #ffffff80}.scan-control-panel{display:flex;flex-direction:column;gap:8px;background:#f5f5f5;padding:8px;border-radius:4px}.scan-section{display:flex;flex-direction:column;gap:4px}.scan-section-title{font-size:11px;color:#888;font-weight:400;text-transform:uppercase;letter-spacing:.5px}.scan-preset-buttons{display:flex;flex-wrap:wrap;gap:4px}.scan-preset-btn{padding:4px 8px;font-size:11px;background:#e0e0e0;border:1px solid #ccc;border-radius:3px;cursor:pointer}.scan-preset-btn:hover:not(:disabled){background:#d0d0d0}.scan-preset-btn:disabled{opacity:.5;cursor:not-allowed}.scan-validation-info{font-size:12px;color:#666;display:flex;flex-direction:column;gap:2px}.scan-actions{flex-direction:row \!important;gap:6px \!important;margin-top:8px}.scan-submit-btn{flex:1;padding:6px 12px;background:#2a6a2a;color:#8f8;border:1px solid #3a8a3a;border-radius:3px;font-size:12px;cursor:pointer}.scan-submit-btn:hover:not(:disabled){background:#3a8a3a}.scan-submit-btn:disabled{opacity:.5;cursor:not-allowed}.scan-success-msg{padding:6px;background:#2a4a2a;color:#8f8;border-radius:3px;text-align:center;font-size:12px}.scan-error-panel{background:#4a2a2a;border:1px solid #8a3a3a;border-radius:4px;padding:8px}.scan-error-header{display:flex;align-items:center;gap:6px;font-size:12px;color:#f88}.scan-error-icon{font-size:14px}.scan-error-dismiss{margin-left:auto;background:none;border:none;color:#f88;cursor:pointer;font-size:14px}.scan-error-summary{font-size:11px;color:#daa;margin:4px 0}.scan-error-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:4px}.scan-error-item{font-size:11px;color:#daa;display:flex;flex-direction:column;gap:2px}.scan-error-targets{display:flex;gap:4px;flex-wrap:wrap}.scan-error-target{background:#6a2a2a;padding:1px 4px;border-radius:2px;font-size:10px;color:#f88}.cube-net-editor{display:flex;flex-direction:column;gap:6px;align-items:center}.cube-net-editor-colorbar{display:flex;justify-content:center;padding:4px 0}.teaching-cube-view{display:flex;gap:0;height:100%;background:linear-gradient(135deg,#fcf9f3,#f3efe8)}.teaching-sidebar{width:360px;min-width:360px;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;background:#ffffff4d}.lesson-header-top{display:flex;align-items:center;gap:10px}.lesson-header-return{background:#56478e14;color:#56478e;padding:6px 12px;border-radius:8px;font-size:12px;border:none;cursor:pointer;white-space:nowrap;transition:background .15s}.lesson-header-return:hover{background:#56478e26}.lesson-header-label{font-size:11px;color:#888;text-transform:uppercase;letter-spacing:.5px}.lesson-header-title{font-size:16px;font-weight:700;color:#56478e;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phase-list-card{background:#fff;border-radius:12px;padding:14px;box-shadow:0 2px 8px #0000000d}.phase-list{display:flex;flex-direction:column;gap:6px}.phase-item{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;transition:background .15s}.phase-item:hover{background:#00000005}.phase-item-content{min-width:0;flex:1}.phase-title{font-weight:600;font-size:13px;display:block}.phase-goal{font-size:11px;color:#888;display:block;margin-top:1px}.phase-item-icon{width:24px;height:24px;border-radius:50%;background:#e0e0e0;color:#aaa;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0}.phase-item-icon-active{background:#56478e;color:#fff}.phase-item.phase-active{background:#56478e0f;border-left:3px solid #56478e;padding-left:7px}.phase-item.phase-active .phase-title{color:#56478e}.phase-item-noop{cursor:default;opacity:.7}.phase-item-noop:hover{background:transparent}.phase-item-icon-noop{background:#2e7d3229;color:#2e7d32}.phase-item-noop .phase-title{color:#6b6b6b;font-weight:500}.phase-noop-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:8px;font-size:10px;font-weight:600;color:#2e7d32;background:#2e7d3224}.phase-group-header{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none;border-left:3px solid transparent;transition:background .15s}.phase-group-header:hover{background:#00000005}.phase-group-header-active{background:#56478e0f;border-left:3px solid #56478e;padding-left:7px}.phase-group-chevron{font-size:11px;color:#888;display:inline-block;transition:transform .15s,color .15s;flex-shrink:0}.phase-group-chevron-open{transform:rotate(90deg);color:#56478e}.phase-group-label{flex:1;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#56478e}.phase-group-titlewrap{flex:1;display:flex;flex-direction:column;min-width:0}.phase-group-desc{display:block;font-size:.72rem;color:var(--muted, #888);font-weight:400;line-height:1.25;margin-top:2px}.phase-group-count{font-size:11px;color:#aaa;font-variant-numeric:tabular-nums;flex-shrink:0}.phase-group-items{display:flex;flex-direction:column;gap:6px;padding:4px 0 2px 12px}.task-list{margin-top:8px;display:flex;flex-direction:column;gap:4px}.task-list-item{display:flex;align-items:center;gap:6px;font-size:12px;padding:4px 8px;border-radius:6px;cursor:pointer;opacity:.35;transition:opacity .15s,background .15s}.task-list-item-active{opacity:1;background:#56478e14}.task-list-item-active .task-list-item-title{font-weight:600;color:#56478e}.task-list-item-icon{font-size:11px}.task-list-item-active .task-list-item-icon{color:#56478e}.formula-bar{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#fff;border-top:1px solid #eee}.formula-bar-label{font-size:11px;color:#888;white-space:nowrap}.formula-bar-moves{display:flex;gap:5px;flex-wrap:wrap}.formula-bar-move{display:inline-block;padding:4px 10px;background:#56478e1a;border-radius:6px;font-family:monospace;font-size:13px;color:#56478e;transition:all .15s}.formula-bar-move-clickable{cursor:pointer}.formula-bar-move-clickable:hover{background:#56478e2e}.formula-bar-move-active{background:#56478e;color:#fff;font-weight:700;box-shadow:0 0 8px #56478e4d}.formula-bar-move-done{opacity:.4}.formula-bar-end{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;background:#81c78426;border-radius:6px;font-size:12px;font-weight:600;color:#81c784}.formula-bar-end-next{font-weight:400;color:#555}.formula-bar-end-hint{font-weight:400;color:#aaa;font-size:11px}.formula-bar-move-clickable.formula-bar-move-done:hover{opacity:.7}.formula-bar-move-prep{opacity:.55}.formula-bar-move-setup{background:#2196f31f;color:#1976d2}.formula-bar-move-setup.formula-bar-move-active{background:#1976d2;color:#fff}.formula-bar-move-post{opacity:.55}.formula-bar-group-divider{display:inline-block;width:1px;height:18px;background:#ddd;margin:0 3px}.formula-bar-step-label{font-size:11px;color:#666;margin-left:8px;white-space:nowrap}.playback-controls{display:flex;gap:8px;align-items:center;justify-content:center;min-height:54px;padding:10px 16px;box-sizing:border-box;background:#fff;border-top:1px solid #eee}.playback-pill-btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:32px;padding:0 12px;border:none;border-radius:20px;background:#56478e14;color:#56478e;cursor:pointer;font-size:13px;line-height:1;transition:background .15s}.playback-pill-btn:hover:not(:disabled){background:#56478e26}.playback-pill-btn:disabled{opacity:.5;cursor:default}.playback-pill-btn-primary{background:#56478e;color:#fff;padding:0 22px;font-weight:600;font-size:14px}.playback-pill-btn-primary:hover:not(:disabled){background:#4a3d7a}.playback-pill-btn-ghost{font-size:12px}.playback-pill-btn-active{background:#56478e2e;color:#56478e}.playback-controls-separator{width:1px;height:20px;background:#eee}.teaching-page-error{padding:24px;color:#e74c3c}.teaching-page-error ul{margin-top:8px}.teaching-page-error code{background:#56478e0f;padding:2px 6px;border-radius:3px;font-size:.9rem;color:#56478e}.teaching-page-error h3{color:#e74c3c;margin:0 0 8px}.teaching-page-error p{color:#666;margin:0 0 12px}.teaching-error-actions{display:flex;gap:10px;margin-top:16px}.teaching-error-actions button{padding:8px 16px;border:1px solid #ddd;border-radius:8px;background:#fff;cursor:pointer;font-size:13px;color:#56478e;transition:background .15s}.teaching-error-actions button:hover{background:#56478e0f}.mode-goal-panel{background:linear-gradient(135deg,#56478e,#7c6db0);border-radius:12px;padding:14px;color:#fff;display:flex;align-items:flex-start;gap:10px}.mode-goal-icon{font-size:20px;flex-shrink:0}.mode-goal-text{min-width:0;flex:1}.mode-goal-title{font-weight:600;font-size:14px}.mode-goal-desc{font-size:12px;opacity:.8;margin-top:2px}.scramble-info-card{background:#fff;border-radius:12px;padding:14px;box-shadow:0 2px 8px #0000000d}.scramble-info-label{font-size:11px;color:#888;font-weight:600;margin-bottom:4px}.scramble-info-moves{font-size:13px;color:#333;word-break:break-all;display:block}.scramble-info-toggle{background:none;border:none;color:#56478e;cursor:pointer;font-size:12px;padding:0;margin-top:4px}.scramble-info-toggle:hover{text-decoration:underline}.lesson-complete-overlay{position:absolute;inset:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:20}.lesson-complete-card{background:#fff;border-radius:16px;padding:32px 40px;text-align:center;box-shadow:0 8px 32px #00000026;max-width:400px}.lesson-complete-title{font-size:20px;font-weight:700;margin:0 0 8px;color:#56478e}.lesson-complete-desc{font-size:14px;color:#666;margin:0 0 20px}.lesson-complete-actions{display:flex;gap:10px;justify-content:center}
