:root{--bg: #1A1218;--canvas-bg: #1A1218;--canvas-grid: rgba(138, 149, 168, .18);--canvas-grid-image: radial-gradient(circle at center, var(--canvas-grid) 1px, transparent 1px);--canvas-text: #E6EBF2;--canvas-text-dim: #8A95A8;--surface: #231B21;--surface-2: #2C252A;--surface-3: #383136;--border: #3C363B;--border-strong: #514B4F;--text: #E6EBF2;--text-dim: #8A95A8;--text-faint: #5A6478;--accent: #FFB454;--accent-ink: #1F1400;--compare: #5CE1E6;--success: #6EE7B7;--danger: #F87171;--visited: #A78BFA;--pad-x: 16px;--pad-y: 12px;--radius: 12px;--radius-sm: 8px;--mono: "IBM Plex Mono", ui-monospace, "JetBrains Mono", Menlo, monospace;--sans: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;--spring-curve: cubic-bezier(.34, 1.56, .64, 1);--transition-fast: .15s var(--spring-curve);--transition-normal: .25s cubic-bezier(.25, .8, .25, 1)}[data-theme=light]{--bg: #F4F6F9;--canvas-bg: #EAEFF5;--canvas-grid: rgba(26, 31, 43, .06);--canvas-text: #171E2D;--canvas-text-dim: #5E6B82;--surface: #FFFFFF;--surface-2: #F0F3F8;--surface-3: #E2E8F1;--border: #D3DCE9;--border-strong: #BDCADB;--text: #171E2D;--text-dim: #5E6B82;--text-faint: #8F9CAE;--accent-ink: #1F1400}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:13px;letter-spacing:.005em;overflow:hidden;-webkit-font-smoothing:antialiased}button{font-family:inherit}input,textarea{font-family:inherit;color:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px;border:1.5px solid var(--surface)}::-webkit-scrollbar-thumb:hover{background:var(--accent)}@keyframes pulse-glow-active{0%{box-shadow:0 0 color-mix(in oklch,var(--accent) 70%,transparent)}70%{box-shadow:0 0 0 8px color-mix(in oklch,var(--accent) 0%,transparent)}to{box-shadow:0 0 color-mix(in oklch,var(--accent) 0%,transparent)}}@keyframes pulse-glow-compare{0%{box-shadow:0 0 color-mix(in oklch,var(--compare) 70%,transparent)}70%{box-shadow:0 0 0 8px color-mix(in oklch,var(--compare) 0%,transparent)}to{box-shadow:0 0 color-mix(in oklch,var(--compare) 0%,transparent)}}@keyframes pulse-glow-visited{0%{box-shadow:0 0 color-mix(in oklch,var(--visited) 60%,transparent)}70%{box-shadow:0 0 0 8px color-mix(in oklch,var(--visited) 0%,transparent)}to{box-shadow:0 0 color-mix(in oklch,var(--visited) 0%,transparent)}}@keyframes pulse-glow-found{0%{box-shadow:0 0 color-mix(in oklch,var(--success) 70%,transparent)}70%{box-shadow:0 0 0 8px color-mix(in oklch,var(--success) 0%,transparent)}to{box-shadow:0 0 color-mix(in oklch,var(--success) 0%,transparent)}}.app{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"sb main";height:100%;background:var(--bg)}.sidebar{grid-area:sb;width:240px;border-right:1px solid var(--border);background:color-mix(in oklch,var(--surface) 80%,transparent);backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);display:flex;flex-direction:column;min-height:0;transition:width .3s var(--spring-curve),background-color var(--transition-normal);overflow:hidden;box-shadow:4px 0 24px #00000026;z-index:10}[data-theme=light] .sidebar{background:color-mix(in oklch,var(--surface) 85%,transparent);box-shadow:4px 0 16px #1a1f2b0a}.sidebar.collapsed{width:56px}.sidebar.collapsed .sb-style-slot,.sidebar.collapsed .sb-hd-compact,.sidebar.collapsed .add-section,.sidebar.collapsed .add-file-section{display:none}.sb-top-actions{padding:16px 14px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px}.sb-brand{display:inline-flex;align-items:center;gap:10px;min-width:0;color:var(--text);font-weight:700;letter-spacing:-.01em}.sb-brand-mark{width:20px;height:20px;flex:0 0 20px;position:relative;transition:transform var(--transition-fast);filter:drop-shadow(0 2px 6px rgba(255,180,84,.25))}.sb-brand:hover .sb-brand-mark{transform:rotate(15deg) scale(1.1)}.sb-brand-name{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:linear-gradient(to right,var(--text),color-mix(in oklch,var(--text) 80%,var(--accent)));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sb-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-faint);width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);cursor:pointer;flex-shrink:0;transition:var(--transition-fast)}.sb-toggle:hover{color:var(--text);background:var(--surface-2);transform:scale(1.05)}.sb-toggle:active{transform:scale(.95)}.sidebar.collapsed .sb-top-actions{flex-direction:column;justify-content:center;padding:16px 0 12px;gap:12px}.sidebar.collapsed .sb-brand{justify-content:center}.sidebar.collapsed .sb-brand-name{display:none}.sidebar.collapsed .sb-collapse-plugins{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;border-top:1px solid var(--border);flex:1;overflow-y:auto}.sidebar.collapsed .sb-collapse-plugins .add-chip-icon{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;transition:var(--transition-fast)}.sidebar.collapsed .sb-collapse-plugins .add-chip-icon .ico{width:20px;height:20px;stroke-width:1.85;transition:transform var(--transition-fast)}.sidebar.collapsed .sb-collapse-plugins .add-chip-icon:hover{background:var(--surface-3);color:var(--text);border-color:var(--accent);transform:translate(2px) scale(1.05)}.sidebar.collapsed .sb-collapse-plugins .add-chip-icon:hover .ico{color:var(--accent);transform:rotate(8deg)}.sidebar.collapsed .sb-collapse-plugins .add-chip-icon:active{transform:scale(.95)}.sidebar.collapsed .sb-collapse-plugins .sb-style-toggle{color:var(--accent)}.sidebar:not(.collapsed) .sb-collapse-plugins{display:none}.sb-style-slot{flex:1;min-height:0;overflow-y:auto;padding:10px 14px 16px}.sb-tabs{display:grid;grid-template-columns:1fr 1fr;padding:3px;background:var(--surface-2);border-radius:var(--radius-sm);margin:4px 14px 12px;border:1px solid var(--border);position:relative;box-shadow:inset 0 1px 3px #0003}.sb-tab-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:transparent;color:var(--text-dim);padding:7px 10px;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;border-radius:calc(var(--radius-sm) - 2px);display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:all var(--transition-fast)}.sb-tab-btn:hover{color:var(--text)}.sb-tab-btn.active{color:var(--text);background:var(--surface-3);border-color:var(--border-strong);box-shadow:0 1px #ffffff0d inset,0 2px 8px #0000002e}.sb-tab-btn .ico{width:12px;height:12px;color:var(--text-faint);transition:transform var(--transition-fast),color var(--transition-fast)}.sb-tab-btn.active .ico{color:var(--accent);transform:scale(1.1)}.sb-tab-btn:hover .ico{color:var(--text-dim)}@keyframes sb-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.sb-tab-content-anim{animation:sb-fade-in .22s cubic-bezier(.16,1,.3,1) forwards}.sidebar .sb-hd{padding:16px 14px 8px;display:flex;align-items:center;justify-content:space-between}.sidebar .sb-hd-compact{padding-top:12px;border-top:1px solid var(--border)}.sidebar .sb-hd .lbl{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);font-weight:700}.sidebar .sb-list{flex:1;overflow-y:auto;padding:4px 8px 12px;display:flex;flex-direction:column;gap:4px}.sb-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-dim);border:1px solid transparent;position:relative;transition:var(--transition-fast)}.sb-item:hover{background:var(--surface-2);color:var(--text);transform:translate(2px)}.sb-item.active{background:var(--surface-2);color:var(--text);border-color:var(--border-strong);box-shadow:0 1px #ffffff0d inset,0 2px 8px #00000026}.sb-item.active:before{content:"";position:absolute;left:-8px;top:10px;bottom:10px;width:3px;background:var(--accent);border-radius:4px;box-shadow:0 0 8px var(--accent)}.sb-item .ico{width:16px;height:16px;color:var(--text-faint);flex-shrink:0;transition:color var(--transition-fast)}.sb-item.active .ico{color:var(--accent)}.sb-item .name{flex:1;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-item .kind{font-family:var(--mono);font-size:9.5px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em}.sb-item .x{width:18px;height:18px;border:0;background:transparent;color:var(--text-faint);border-radius:3px;display:none;align-items:center;justify-content:center;cursor:pointer;transition:var(--transition-fast)}.sb-item:hover .x{display:inline-flex}.sb-item .x:hover{background:var(--surface-3);color:var(--danger);transform:scale(1.1)}.sb-item .x:active{transform:scale(.9)}.sidebar .add-section{padding:8px 14px 12px;display:grid;grid-template-columns:1fr 1fr;gap:6px}.add-file-section{padding:6px 14px 12px;border-top:1px solid var(--border)}.add-chip{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);font-size:11.5px;cursor:pointer;transition:var(--transition-fast)}.add-chip:hover{background:var(--surface-3);color:var(--text);border-color:var(--border-strong);transform:translateY(-1px)}.add-chip:active{transform:translateY(0) scale(.97)}.add-chip .ico{width:13px;height:13px;color:var(--text-faint);transition:color var(--transition-fast)}.add-chip:hover .ico{color:var(--accent)}.sb-algo-btn{border-color:color-mix(in oklch,var(--accent) 30%,var(--border));background:color-mix(in oklch,var(--accent) 4%,var(--surface-2))}.sb-algo-btn .ico{color:var(--accent)}.sb-algo-btn:hover{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 8%,var(--surface-3));box-shadow:0 0 12px color-mix(in oklch,var(--accent) 15%,transparent)}.sb-footer{margin-top:auto;padding:12px 14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.sidebar.collapsed .sb-footer{padding:12px 0;align-items:center;justify-content:center}.sb-footer-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:transparent;color:var(--text-dim);padding:8px 12px;border-radius:var(--radius-sm);display:flex;align-items:center;gap:10px;width:100%;cursor:pointer;transition:var(--transition-fast);font-size:12px;font-weight:600;position:relative}.sidebar.collapsed .sb-footer-btn{width:38px;height:38px;padding:0;justify-content:center;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2)}.sb-footer-btn:hover{background:var(--surface-2);color:var(--text);border-color:var(--border-strong);transform:translate(2px)}.sidebar.collapsed .sb-footer-btn:hover{background:var(--surface-3);border-color:var(--accent);transform:translate(0) scale(1.05)}.sb-footer-btn:active{transform:scale(.97)}.sb-footer-btn .ico{width:15px;height:15px;color:var(--text-faint);transition:transform .4s ease,color var(--transition-fast)}.sb-footer-btn:hover .ico{color:var(--accent);transform:rotate(30deg)}.sidebar.collapsed .sb-footer-btn:hover .ico{color:var(--accent);transform:rotate(45deg)}.sb-footer-btn.active{background:var(--surface-2);color:var(--text);border-color:var(--border-strong);box-shadow:0 1px #ffffff0d inset,0 2px 8px #00000026}.sb-footer-btn.active .ico{color:var(--accent)}.sb-footer-btn.active:before{content:"";position:absolute;left:-8px;top:10px;bottom:10px;width:3px;background:var(--accent);border-radius:4px;box-shadow:0 0 8px var(--accent)}.sidebar.collapsed .sb-footer-btn.active:before{left:-2px}.sidebar.collapsed,.sidebar.collapsed .sb-collapse-plugins{overflow:visible}.sb-popover{position:absolute;left:64px;width:320px;background:color-mix(in oklch,var(--surface) 88%,transparent);backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 12px 40px #0006;z-index:100;display:flex;flex-direction:column;min-height:0}[data-theme=light] .sb-popover{background:color-mix(in oklch,var(--surface) 90%,transparent);box-shadow:0 12px 32px #1a1f2b1f;border-color:var(--border)}.sb-plugins-popover{top:36px}.sb-popover:before{content:"";position:absolute;left:-6px;top:39px;width:12px;height:12px;background:var(--surface);border-left:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong);transform:rotate(45deg);z-index:-1}[data-theme=light] .sb-popover:before{background:var(--surface);border-left:1px solid var(--border);border-bottom:1px solid var(--border)}.sb-popover-header{padding:12px 16px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);border-bottom:1px solid var(--border);font-weight:700}.sb-popover-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:12px;max-height:380px;overflow-y:auto}.sb-popover-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);padding:10px 12px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:all var(--transition-fast);font-size:12px;font-weight:500;text-align:left;width:100%}.sb-popover-item:hover{background:var(--surface-3);color:var(--text);border-color:var(--accent);transform:translateY(-1px);box-shadow:0 4px 12px #0003}.sb-popover-item:active{transform:translateY(0) scale(.97)}.sb-popover-item .ico{color:var(--text-faint);flex-shrink:0;transition:color var(--transition-fast),transform var(--transition-fast)}.sb-popover-item:hover .ico{color:var(--accent);transform:scale(1.1)}.sidebar.collapsed .sb-collapse-plugins .add-chip-icon.active-popover{background:var(--surface-3);border-color:var(--accent);color:var(--text);box-shadow:0 0 14px color-mix(in oklch,var(--accent) 25%,transparent);transform:translate(2px) scale(1.05)}.sidebar.collapsed .sb-collapse-plugins .add-chip-icon.active-popover .ico{color:var(--accent);transform:scale(1.1) rotate(45deg)}.sidebar.collapsed .sb-collapse-plugins .sb-style-toggle.active-popover .ico{transform:scale(1.08)}.sidebar.collapsed .sb-collapse-plugins .sb-algo-btn-collapsed{border-color:color-mix(in oklch,var(--accent) 35%,var(--border));background:color-mix(in oklch,var(--accent) 6%,var(--surface-2));color:var(--accent)}.sidebar.collapsed .sb-collapse-plugins .sb-algo-btn-collapsed:hover{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 12%,var(--surface-3));box-shadow:0 0 14px color-mix(in oklch,var(--accent) 30%,transparent)}.sidebar.collapsed .sb-collapse-plugins .sb-algo-btn-collapsed .ico{color:var(--accent)}.sb-floating-style-panel{position:absolute;left:72px;top:12px;width:220px;background:color-mix(in oklch,var(--surface) 92%,transparent);backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 12px 40px #0006;z-index:100;padding:18px 16px 16px;display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow-y:auto}[data-theme=light] .sb-floating-style-panel{background:color-mix(in oklch,var(--surface) 94%,transparent);box-shadow:0 12px 32px #1a1f2b1f;border-color:var(--border)}.sb-floating-style-panel .sb-style-slot{display:block!important;padding:0;overflow:visible;max-height:none}.sb-floating-style-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text-faint);width:18px;height:18px;position:absolute;top:7px;right:7px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--transition-fast)}.sb-floating-style-close:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface-3)}.sb-floating-style-close:active{transform:scale(.92)}.sb-floating-style-close .ico{width:10px;height:10px;stroke-width:2.2}.toast-stack{position:fixed;right:18px;bottom:18px;z-index:500;display:flex;flex-direction:column;gap:8px;width:min(380px,calc(100vw - 36px));pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;padding:10px 10px 10px 12px;border-radius:var(--radius-sm);background:color-mix(in oklch,var(--surface) 90%,transparent);border:1px solid var(--border);color:var(--text);box-shadow:0 12px 30px #00000047;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:sb-fade-in .18s ease both}.toast span{flex:1;min-width:0;font-size:12px;line-height:1.35}.toast button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-faint);width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:5px;cursor:pointer;flex:0 0 22px}.toast button:hover{color:var(--text);background:var(--surface-2)}.toast-error{border-color:color-mix(in oklch,var(--danger) 44%,var(--border))}.toast-success{border-color:color-mix(in oklch,var(--success) 36%,var(--border))}.settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0003;z-index:15;opacity:0;pointer-events:none;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);transition:opacity .3s cubic-bezier(.25,.8,.25,1),backdrop-filter .3s cubic-bezier(.25,.8,.25,1)}.settings-backdrop.open{opacity:1;pointer-events:auto;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.settings-drawer{position:fixed;top:0;bottom:0;left:0;width:320px;background:color-mix(in oklch,var(--surface) 88%,transparent);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border-right:1px solid var(--border);box-shadow:15px 0 35px #00000040;z-index:20;display:flex;flex-direction:column;transform:translate(-100%);transition:transform .35s cubic-bezier(.34,1.56,.64,1);overflow:hidden}[data-theme=light] .settings-drawer{background:color-mix(in oklch,var(--surface) 92%,transparent);box-shadow:10px 0 25px #1a1f2b14}.settings-drawer.open{transform:translate(0)}.sidebar~.settings-drawer.open{transform:translate(240px)}.sidebar.collapsed~.settings-drawer.open{transform:translate(56px)}.sd-hd{padding:20px 24px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.sd-hd h3{margin:0;font-size:14px;font-weight:700;letter-spacing:-.01em;background:linear-gradient(to right,var(--text),color-mix(in oklch,var(--text) 70%,var(--accent)));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sd-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-faint);width:28px;height:28px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:default;transition:var(--transition-fast)}.sd-close:hover{background:var(--surface-2);color:var(--text);transform:scale(1.05)}.sd-close:active{transform:scale(.95)}.sd-body{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:24px}.sd-sect{display:flex;flex-direction:column;gap:12px}.sd-sect-title{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-bottom:4px;border-bottom:1px solid color-mix(in oklch,var(--border) 40%,transparent);padding-bottom:6px}.sd-row{display:flex;flex-direction:column;gap:8px}.sd-lbl{font-size:11.5px;font-weight:600;color:var(--text-dim)}.sd-seg{position:relative;display:flex;padding:3px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);-webkit-user-select:none;user-select:none}.sd-seg-thumb{position:absolute;top:3px;bottom:3px;border-radius:calc(var(--radius-sm) - 2px);background:var(--accent);box-shadow:0 4px 12px color-mix(in oklch,var(--accent) 40%,transparent);transition:left .22s cubic-bezier(.3,.7,.4,1),width .22s}.sd-seg button{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;z-index:1;flex:1;border:0;background:transparent;color:var(--text-dim);font-size:11px;font-weight:600;min-height:28px;border-radius:calc(var(--radius-sm) - 2px);cursor:default;padding:5px 8px;transition:color .15s ease}.sd-seg button[aria-checked=true]{color:var(--accent-ink)}.sd-seg button:not([aria-checked=true]):hover{color:var(--text)}.sd-chips{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.sd-chip-wrapper{display:flex;flex-direction:column;align-items:center;gap:6px}.sd-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:34px;height:34px;border-radius:50%;border:2px solid var(--surface);cursor:default;box-shadow:0 0 0 1px var(--border),0 3px 6px #00000026;display:flex;align-items:center;justify-content:center;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,border-color .2s}.sd-chip:hover{transform:scale(1.15) translateY(-2px);box-shadow:0 0 0 1px var(--border-strong),0 6px 12px #0003}.sd-chip.active{transform:scale(1.1) translateY(-1px);border-color:var(--surface);box-shadow:0 0 0 2px var(--accent),0 6px 16px color-mix(in oklch,var(--accent) 35%,transparent)}.sd-chip svg{width:14px;height:14px;filter:drop-shadow(0 1px 1px rgba(0,0,0,.3))}.sd-chip-label{font-size:9px;font-weight:500;color:var(--text-faint);text-align:center;white-space:nowrap}.sd-badge-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:11px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);border-radius:var(--radius-sm);text-decoration:none;font-size:11.5px;font-weight:600;transition:var(--transition-fast)}.sd-badge-btn:hover{background:var(--surface-3);border-color:var(--accent);color:var(--accent);box-shadow:0 4px 12px color-mix(in oklch,var(--accent) 15%,transparent);transform:translateY(-1px)}.sd-badge-btn:active{transform:translateY(0) scale(.98)}.main{grid-area:main;display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}.canvas{flex:1;min-height:0;background-color:var(--canvas-bg);background-image:var(--canvas-grid-image);background-size:24px 24px;background-repeat:repeat;background-position:0 0;position:relative;overflow:hidden;touch-action:none;transition:background-color var(--transition-normal)}.canvas-viewport{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:0 0;will-change:transform}.canvas-inner{min-height:100%;display:flex;align-items:center;justify-content:center;padding:40px;position:relative}.struct-card{position:absolute;background:color-mix(in oklch,var(--surface) 80%,transparent);border:1px solid rgba(255,255,255,.08);border-radius:14px;box-shadow:0 1px #ffffff0d inset,0 10px 30px #00000059;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);display:flex;flex-direction:column;min-width:180px;max-width:min(920px,calc(100vw - 320px));z-index:2;transition:transform var(--transition-fast),border-color var(--transition-normal),box-shadow var(--transition-normal);overflow:visible;contain:layout}[data-theme=light] .struct-card{background:color-mix(in oklch,var(--surface) 85%,transparent);border:1px solid rgba(26,31,43,.08);box-shadow:0 1px #fff9 inset,0 8px 24px #1a1f2b14}.struct-card.active{border-color:color-mix(in oklch,var(--accent) 70%,transparent);box-shadow:0 0 0 1px color-mix(in oklch,var(--accent) 55%,transparent),0 12px 36px #0000006b;z-index:3}.struct-card.selected:not(.active){border-color:color-mix(in oklch,var(--accent) 50%,transparent);box-shadow:0 0 0 1px color-mix(in oklch,var(--accent) 50%,transparent),0 10px 30px #00000061}.struct-card-header{display:flex;align-items:center;gap:8px;padding:10px 14px;font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--text-dim);border-bottom:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;background:#ffffff05;transition:background-color var(--transition-fast);border-top-left-radius:13px;border-top-right-radius:13px}.struct-card-header:active{cursor:grabbing;background:#ffffff0d}.struct-card-header .name{color:var(--text);font-weight:600}.struct-card-algo-btn{margin-left:auto;margin-right:6px;display:inline-flex;align-items:center;gap:5px;padding:3px 9px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;color:var(--text-dim);font-size:10px;font-weight:650;cursor:pointer;pointer-events:auto;transition:all var(--transition-fast) var(--spring-curve);box-shadow:0 1px 2px #00000026}.struct-card-algo-btn .ico{color:var(--text-faint);transition:color var(--transition-fast)}.struct-card-algo-btn:hover{background:var(--surface-3);border-color:var(--accent);color:var(--text);transform:translateY(-.5px);box-shadow:0 2px 6px color-mix(in oklch,var(--accent) 12%,transparent)}.struct-card-algo-btn:hover .ico{color:var(--accent)}.struct-card-algo-btn:active{transform:translateY(0) scale(.96)}.struct-card-algo-btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 2px 8px color-mix(in oklch,var(--accent) 30%,transparent)}.struct-card-algo-btn.active .ico{color:var(--accent-ink);animation:pulse-bolt 1.5s infinite ease-in-out}@keyframes pulse-bolt{0%,to{opacity:.75;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}[data-theme=light] .struct-card-algo-btn{background:color-mix(in oklch,var(--surface) 95%,white);border:1px solid rgba(26,31,43,.12);box-shadow:0 1px 2px #0000000d}[data-theme=light] .struct-card-algo-btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.struct-card-input-btn{margin-left:auto;margin-right:4px;display:inline-flex;align-items:center;gap:5px;padding:3px 9px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;color:var(--text-dim);font-size:10px;font-weight:650;cursor:pointer;pointer-events:auto;transition:all var(--transition-fast) var(--spring-curve);box-shadow:0 1px 2px #00000026}.struct-card-input-btn .ico{color:var(--text-faint);transition:color var(--transition-fast),transform var(--transition-fast)}.struct-card-input-btn:hover{background:color-mix(in oklch,var(--success) 8%,var(--surface-2));border-color:var(--success);color:var(--success);transform:translateY(-.5px);box-shadow:0 2px 8px color-mix(in oklch,var(--success) 18%,transparent)}.struct-card-input-btn:hover .ico{color:var(--success);transform:scale(1.1)}.struct-card-input-btn:active{transform:translateY(0) scale(.96)}[data-theme=light] .struct-card-input-btn{background:color-mix(in oklch,var(--surface) 95%,white);border:1px solid rgba(26,31,43,.12);box-shadow:0 1px 2px #0000000d}[data-theme=light] .struct-card-input-btn:hover{background:color-mix(in oklch,var(--success) 6%,white);border-color:var(--success);color:color-mix(in oklch,var(--success) 75%,black);box-shadow:0 2px 8px color-mix(in oklch,var(--success) 15%,transparent)}.struct-card-header .kind{color:var(--accent);font-size:9.5px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;background:color-mix(in oklch,var(--accent) 10%,transparent);padding:2px 6px;border-radius:4px;border:1px solid color-mix(in oklch,var(--accent) 20%,transparent)}.struct-card-close-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:transparent;border:none;color:var(--text-faint);cursor:pointer;pointer-events:auto;transition:all var(--transition-fast) var(--spring-curve);padding:0;margin-left:2px}.struct-card-close-btn:hover{background:color-mix(in oklch,var(--danger) 15%,var(--surface-2));color:var(--danger);transform:scale(1.08)}.struct-card-close-btn:active{transform:scale(.95)}.struct-card-body{padding:16px;overflow:auto;flex:1;min-height:0;display:flex;flex-direction:column;border-bottom-left-radius:13px;border-bottom-right-radius:13px}.struct-card-body>*{flex:1;min-height:0;width:100%;height:100%}.struct-context-hint{position:absolute;left:14px;right:14px;bottom:-34px;min-height:26px;padding:6px 9px;border-radius:var(--radius-sm);background:color-mix(in oklch,var(--surface) 88%,transparent);border:1px solid color-mix(in oklch,var(--accent) 18%,var(--border));color:var(--text-dim);font-size:11px;line-height:1.25;box-shadow:0 8px 22px #00000038;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);pointer-events:none}.struct-card .resize-handle{position:absolute;z-index:100;background:transparent;transition:background var(--transition-fast) ease}.struct-card .resize-handle:hover{background:#528bff38;border-radius:4px}.struct-card .resize-handle.n{top:-5px;left:5px;right:5px;height:10px;cursor:ns-resize}.struct-card .resize-handle.s{bottom:-5px;left:5px;right:5px;height:10px;cursor:ns-resize}.struct-card .resize-handle.e{right:-5px;top:5px;bottom:5px;width:10px;cursor:ew-resize}.struct-card .resize-handle.w{left:-5px;top:5px;bottom:5px;width:10px;cursor:ew-resize}.struct-card .resize-handle.ne{top:-8px;right:-8px;width:16px;height:16px;cursor:nesw-resize}.struct-card .resize-handle.nw{top:-8px;left:-8px;width:16px;height:16px;cursor:nwse-resize}.struct-card .resize-handle.se{bottom:-8px;right:-8px;width:16px;height:16px;cursor:nwse-resize}.struct-card .resize-handle.sw{bottom:-8px;left:-8px;width:16px;height:16px;cursor:nesw-resize}@keyframes card-size-readout-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.card-size-readout{position:absolute;z-index:4;padding:4px 8px;font-family:var(--mono);font-size:11px;font-weight:600;color:var(--accent-ink);background:var(--accent);border-radius:6px;box-shadow:0 4px 12px #00000047;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;animation:card-size-readout-in .1s ease-out}.card-size-readout.dir-se,.card-size-readout.dir-s,.card-size-readout.dir-e{bottom:-28px;right:-4px}.card-size-readout.dir-sw,.card-size-readout.dir-w{bottom:-28px;left:-4px}.card-size-readout.dir-ne,.card-size-readout.dir-n{top:-28px;right:-4px}.card-size-readout.dir-nw{top:-28px;left:-4px}.shape-toolbar-slot{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:40}.shape-toolbar-slot>.shape-toolbar{pointer-events:auto}.empty-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:84px 16px 24px;z-index:5;pointer-events:none}.empty{pointer-events:auto;text-align:center;color:var(--canvas-text-dim);max-width:580px;background:color-mix(in oklch,var(--surface) 65%,transparent);border:1px solid color-mix(in oklch,var(--border) 60%,transparent);border-radius:20px;padding:28px 40px;box-shadow:0 1px #ffffff0d inset,0 4px 12px #0000001a,0 20px 60px #00000059;backdrop-filter:blur(20px) saturate(120%);-webkit-backdrop-filter:blur(20px) saturate(120%);display:flex;flex-direction:column;align-items:center;gap:6px;animation:float-in .5s var(--spring-curve);position:relative}.empty:before{content:"";position:absolute;top:-10%;left:10%;right:10%;bottom:-10%;background:radial-gradient(circle,color-mix(in oklch,var(--accent) 15%,transparent) 0%,transparent 70%);z-index:-1;filter:blur(40px);pointer-events:none;opacity:.8}[data-theme=light] .empty{background:color-mix(in oklch,var(--surface) 80%,transparent);border-color:#1a1f2b14;box-shadow:0 1px #fff9 inset,0 4px 10px #1a1f2b08,0 16px 40px #1a1f2b14}@keyframes float-in{0%{opacity:0;transform:translateY(30px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.empty-graphic{width:52px;height:52px;background:var(--surface-2);border:1.5px solid var(--border-strong);border-radius:16px;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 30px #0006,0 0 20px color-mix(in oklch,var(--accent) 18%,transparent);margin-bottom:4px;padding:9px;transition:all var(--transition-normal) var(--spring-curve);position:relative;overflow:visible}.empty-graphic:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:18px;background:linear-gradient(135deg,#ffb454,#ff758f);z-index:-1;opacity:0;transition:opacity var(--transition-normal)}.empty-graphic:hover{transform:scale(1.1) rotate(6deg);border-color:transparent;box-shadow:0 12px 36px #00000073,0 0 30px color-mix(in oklch,var(--accent) 30%,transparent)}.empty-graphic:hover:after{opacity:.6}.empty-graphic svg{width:100%;height:100%;display:block;animation:empty-logo-float 5s ease-in-out infinite}@keyframes empty-logo-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.empty-close-btn{position:absolute;top:14px;right:14px;width:22px;height:22px;border-radius:50%;background:transparent;border:none;color:var(--text-faint);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast) var(--spring-curve);padding:0;z-index:12}.empty-close-btn:hover{background:var(--surface-3);color:var(--text);transform:scale(1.08)}.empty-close-btn:active{transform:scale(.95)}.empty h2{font-size:22px;font-weight:800;margin:0 0 2px;color:var(--text);letter-spacing:-.03em;background:linear-gradient(135deg,var(--text) 30%,color-mix(in oklch,var(--text) 60%,var(--accent)) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.empty p{font-size:13px;line-height:1.55;margin:0 0 6px;color:var(--text-dim);max-width:440px}.empty-hint{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-faint)}.empty-hint .ico{color:var(--accent);flex-shrink:0}.empty-hint kbd{font-family:var(--mono);font-size:10.5px;padding:1px 5px;border:1px solid var(--border);border-radius:4px;background:var(--surface-2);color:var(--text-dim)}.empty-section-title{font-size:10px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin:10px 0 6px;display:flex;align-items:center;width:100%}.empty-section-title:after{content:"";height:1px;flex-grow:1;background:linear-gradient(to right,var(--border),transparent);margin-left:10px}.empty .grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;text-align:left;width:100%}.empty .grid .add-chip{font-size:12px;padding:9px 16px;background:var(--surface-2);border-radius:10px;border:1px solid var(--border);font-weight:600;color:var(--text-dim);cursor:pointer;display:flex;align-items:center;gap:8px;transition:all var(--transition-fast) var(--spring-curve);box-shadow:0 1px 2px #00000026}.empty .grid .add-chip .ico{transition:transform var(--transition-fast) var(--spring-curve)}.empty .grid .add-chip:hover{background:var(--surface-3);border-color:var(--accent);color:var(--text);transform:translateY(-2px);box-shadow:0 6px 16px color-mix(in oklch,var(--accent) 12%,transparent),0 0 0 1px color-mix(in oklch,var(--accent) 25%,transparent)}.empty .grid .add-chip:hover .ico{transform:scale(1.15) rotate(-3deg)}.empty .grid .add-chip:active{transform:translateY(0) scale(.97)}.canvas.drag-active{box-shadow:inset 0 0 0 2px var(--accent);transition:box-shadow var(--transition-fast),background-color var(--transition-fast)}.canvas.drag-active:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at center,color-mix(in oklch,var(--accent) 4%,transparent) 0%,transparent 70%);pointer-events:none;z-index:1;animation:pulse-glow 2s infinite ease-in-out}@keyframes pulse-glow{0%,to{opacity:.4}50%{opacity:1}}.canvas.space-panning{cursor:grab!important}.canvas.space-panning:active{cursor:grabbing!important}.canvas-scrollbar{position:absolute;z-index:45;background:transparent;transition:opacity .3s ease,background-color .2s ease;opacity:0;-webkit-user-select:none;user-select:none}.canvas-scrollbar.visible{opacity:1}.canvas-scrollbar.horizontal{bottom:8px;left:8px;right:28px;height:12px;border-radius:6px}.canvas-scrollbar.vertical{right:8px;top:8px;bottom:28px;width:12px;border-radius:6px}.canvas-scrollbar:hover{background:color-mix(in oklch,var(--surface) 20%,transparent)}.canvas-scrollbar-thumb{position:absolute;background:color-mix(in oklch,var(--text-faint) 40%,transparent);border-radius:999px;transition:background-color .15s ease,width .15s ease,height .15s ease,top .15s ease,left .15s ease;cursor:pointer}.canvas-scrollbar.horizontal .canvas-scrollbar-thumb{top:3px;height:6px}.canvas-scrollbar.vertical .canvas-scrollbar-thumb{left:3px;width:6px}.canvas-scrollbar.horizontal:hover .canvas-scrollbar-thumb{top:1px;height:10px;background:color-mix(in oklch,var(--text-dim) 80%,transparent)}.canvas-scrollbar.vertical:hover .canvas-scrollbar-thumb{left:1px;width:10px;background:color-mix(in oklch,var(--text-dim) 80%,transparent)}.canvas-scrollbar-thumb.active{background:var(--accent)!important;box-shadow:0 0 8px color-mix(in oklch,var(--accent) 40%,transparent)}.zoom-controls{position:absolute;bottom:12px;right:12px;z-index:46;display:flex;align-items:center;gap:2px;padding:4px 6px;background:color-mix(in oklch,var(--surface) 78%,transparent);border:1px solid rgba(255,255,255,.08);border-radius:10px;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);box-shadow:0 1px #ffffff0a inset,0 4px 16px #0000004d;opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease;pointer-events:none;-webkit-user-select:none;user-select:none}.zoom-controls.visible{opacity:1;transform:translateY(0);pointer-events:auto}[data-theme=light] .zoom-controls{background:color-mix(in oklch,var(--surface) 85%,transparent);border:1px solid rgba(26,31,43,.08);box-shadow:0 1px #ffffff80 inset,0 4px 12px #1a1f2b14}.zoom-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:7px;background:transparent;border:none;color:var(--text-dim);cursor:pointer;transition:all var(--transition-fast);padding:0}.zoom-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text);transform:scale(1.05)}.zoom-btn:active:not(:disabled){transform:scale(.93);background:var(--surface-3)}.zoom-btn:disabled{opacity:.3;cursor:default}.zoom-pct{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:28px;border-radius:7px;background:transparent;border:none;color:var(--text-dim);font-family:var(--mono);font-size:11px;font-weight:650;cursor:pointer;transition:all var(--transition-fast);padding:0 6px;letter-spacing:-.02em}.zoom-pct:hover{background:var(--surface-2);color:var(--text)}.zoom-pct:active{transform:scale(.95)}.zoom-pct.active{color:var(--accent)}.zoom-divider{width:1px;height:16px;background:var(--border);margin:0 3px;border-radius:1px;opacity:.6}.shape-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:5;overflow:visible;pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.shape-canvas.active{pointer-events:auto;touch-action:none}.shape-canvas.disabled{pointer-events:none}.shape-canvas.select{cursor:default}.shape-canvas.select.move{cursor:move}.shape-canvas.eraser{cursor:cell}.shape-canvas.draw{cursor:crosshair}.shape-canvas.text{cursor:text}.shape-canvas.hand{cursor:grab}.shape-canvas.hand.panning{cursor:grabbing}.tool-mode-chip{position:absolute;top:62px;left:50%;transform:translate(-50%);z-index:28;display:inline-flex;align-items:center;gap:8px;padding:5px 10px;font-size:11.5px;font-family:var(--mono);color:var(--text);background:color-mix(in oklch,var(--surface) 80%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid color-mix(in oklch,var(--accent) 35%,transparent);border-radius:999px;box-shadow:0 8px 22px #00000052;pointer-events:none;-webkit-user-select:none;user-select:none}.tool-mode-chip.locked{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 8px 22px #00000052}.tool-mode-chip-label{font-weight:600;letter-spacing:.02em}.tool-mode-chip-lock{text-transform:uppercase;font-size:9.5px;letter-spacing:.08em;color:var(--accent-ink);background:var(--accent);padding:1px 6px;border-radius:999px}.tool-mode-chip-hint{color:var(--text-dim)}.dt-btn.locked:after{content:"";position:absolute;top:3px;right:3px;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 1.5px var(--accent-ink)}.dt-btn{position:relative}.shape-marquee{fill:color-mix(in oklch,var(--accent),transparent 92%);stroke:color-mix(in oklch,var(--accent) 55%,transparent);stroke-width:1;stroke-dasharray:4 3;pointer-events:none}.shape-toolbar{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:30;display:flex;flex-direction:column;gap:6px;max-width:calc(100% - 24px);padding:7px 8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;background:linear-gradient(180deg,color-mix(in oklch,var(--surface-2) 70%,transparent),color-mix(in oklch,var(--surface) 82%,transparent)),color-mix(in oklch,var(--surface) 74%,transparent);backdrop-filter:blur(18px) saturate(1.14);-webkit-backdrop-filter:blur(18px) saturate(1.14);border:1px solid color-mix(in oklch,var(--border-strong) 58%,transparent);border-radius:18px;box-shadow:0 1px #ffffff14 inset,0 -1px #0000002e inset,0 12px 32px #00000042,0 24px 64px #0000005c;transition:left .3s var(--spring-curve)}.shape-toolbar::-webkit-scrollbar{display:none}.app.inspector-open .shape-toolbar{left:calc(50% - var(--inspector-width, 290px) / 2)}.dt-row{display:flex;align-items:center;gap:4px;min-width:max-content}.dt-palette{gap:8px;padding-top:4px;border-top:1px dashed var(--border);margin-top:2px}.dt-btn{--tool-tint: var(--accent);-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:transparent;color:color-mix(in oklch,var(--text-dim) 88%,var(--text));width:36px;height:36px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;outline:none;transition:transform .15s var(--spring-curve),background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease}.dt-btn .ico{width:17px;height:17px;transition:transform .15s var(--spring-curve)}.dt-btn:hover:not(:disabled):not(.active){color:color-mix(in oklch,var(--tool-tint) 62%,var(--text));background:color-mix(in oklch,var(--surface-3) 58%,transparent);border-color:color-mix(in oklch,var(--tool-tint) 28%,transparent);box-shadow:0 1px #ffffff0d inset,0 7px 18px #00000029}.dt-btn:hover:not(:disabled) .ico{transform:translateY(-.5px) scale(1.04)}.dt-btn:active:not(:disabled){transform:translateY(1px) scale(.94)}.dt-btn.active{color:var(--accent-ink);background:linear-gradient(180deg,color-mix(in oklch,var(--accent) 88%,white),var(--accent));border-color:color-mix(in oklch,var(--accent) 82%,white);box-shadow:0 1px #ffffff57 inset,0 9px 22px color-mix(in oklch,var(--accent) 28%,transparent),0 0 0 1px color-mix(in oklch,var(--accent) 24%,transparent);transform:translateY(-1px)}.dt-btn.active:hover{background:color-mix(in oklch,var(--accent) 90%,white)}.dt-btn:focus-visible{border-color:color-mix(in oklch,var(--accent) 70%,white);box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 26%,transparent)}.dt-tool-hand{--tool-tint: #9CA3AF}.dt-tool-select{--tool-tint: var(--accent)}.dt-tool-rect,.dt-tool-ellipse,.dt-tool-diamond{--tool-tint: var(--compare)}.dt-tool-line,.dt-tool-arrow{--tool-tint: var(--success)}.dt-tool-pen,.dt-tool-eraser{--tool-tint: var(--visited)}.dt-tool-text{--tool-tint: #F0D66F}.dt-action-image{--tool-tint: var(--compare)}.dt-action-delete,.dt-action-clear{--tool-tint: var(--danger)}.dt-btn.dt-btn-delete-active:hover,.dt-btn.dt-btn-clear-active:hover{color:var(--danger);background:color-mix(in oklch,var(--danger) 12%,transparent);border-color:color-mix(in oklch,var(--danger) 30%,transparent)}.dt-btn:disabled{opacity:.32;cursor:not-allowed}.dt-sep{width:1px;height:22px;background:linear-gradient(180deg,transparent,var(--border-strong),transparent);margin:0 6px;opacity:.62}.dt-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-family:var(--mono)}.dt-swatches{display:flex;align-items:center;gap:4px}.dt-swatch{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:999px;background:var(--swatch);border:2px solid transparent;box-shadow:inset 0 0 0 1px #00000038;cursor:pointer;position:relative}.dt-swatch.none{background:linear-gradient(45deg,transparent 45%,var(--danger) 45%,var(--danger) 55%,transparent 55%),var(--surface-2)}.dt-swatch.active{border-color:var(--text)}.dt-width{width:80px;accent-color:var(--accent)}.shape-style-panel{display:flex;flex-direction:column;gap:22px}.style-section{display:flex;flex-direction:column;gap:10px}.style-label{font-size:12px;color:var(--text-dim);font-weight:600}.style-swatches{display:flex;flex-wrap:wrap;gap:8px}.style-swatch{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;border-radius:var(--radius-sm);background:var(--swatch);border:2px solid transparent;box-shadow:inset 0 0 0 1px #00000038;cursor:pointer;position:relative}.style-swatch.none{background:linear-gradient(45deg,transparent 45%,var(--danger) 45%,var(--danger) 55%,transparent 55%),var(--surface-2)}.style-swatch.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px #0000003d,0 0 0 1px var(--accent)}.style-slider-row{display:flex;align-items:center;gap:8px}.style-slider{flex:1;min-width:0;accent-color:var(--accent)}.style-value,.style-number{font-family:var(--mono);font-size:11px}.style-value{color:var(--text-dim);width:24px;text-align:right}.style-preset-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.style-button-row{display:flex;gap:8px}.style-preset,.style-step,.style-icon-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:var(--surface-2);color:var(--text-dim);border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.style-preset{height:34px;font-size:13px}.style-step{width:28px;height:28px;flex:0 0 28px;font-family:var(--mono);font-size:15px}.style-icon-btn{width:44px;height:34px}.style-preset:hover:not(:disabled),.style-step:hover:not(:disabled),.style-icon-btn:hover:not(:disabled){color:var(--text);background:var(--surface-3);border-color:var(--border-strong)}.style-preset.active,.style-icon-btn.active{color:var(--text);background:color-mix(in oklch,var(--accent),var(--surface-2) 72%);border-color:var(--accent)}.style-preset:disabled,.style-step:disabled,.style-icon-btn:disabled{opacity:.4;cursor:not-allowed}.style-line-preview{width:22px;height:0;border-top:var(--line-width, 2px) solid currentColor;display:block}.style-line-preview.dashed{border-top-style:dashed}.style-line-preview.dotted{border-top-style:dotted}.style-number{width:46px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);text-align:center;outline:none}.style-number:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.shape-handle{fill:var(--canvas-bg, var(--bg, #0c0e12));stroke:color-mix(in oklch,var(--accent) 60%,transparent);stroke-width:1;transition:stroke .15s ease,fill .15s ease}.shape-handle:hover{stroke:var(--accent);fill:color-mix(in oklch,var(--accent) 22%,var(--canvas-bg, var(--bg, #0c0e12)))}.shape-text-input{position:absolute;z-index:25;background:transparent;border:none;padding:0;margin:0;font-family:var(--mono);line-height:1.2;resize:none;outline:none;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;caret-color:currentColor}@keyframes snap-pulse-anim{0%{r:4px;opacity:1;stroke-width:1.5}to{r:10px;opacity:0;stroke-width:.5}}.snap-pulse{animation:snap-pulse-anim 1.2s infinite cubic-bezier(.25,.46,.45,.94)}@keyframes snap-target-fade-in{0%{opacity:0;stroke-width:.5}to{opacity:1;stroke-width:1.5}}.snap-target-outline{stroke:color-mix(in oklch,var(--accent) 80%,transparent);stroke-width:1.5;stroke-dasharray:5 4;opacity:.85;animation:snap-target-fade-in .16s ease-out}@keyframes snap-preview-dot-in{0%{opacity:0;transform:scale(.4)}to{opacity:.7;transform:scale(1)}}.snap-preview-dot{fill:color-mix(in oklch,var(--accent) 70%,transparent);opacity:.7;transform-origin:center;transform-box:fill-box;animation:snap-preview-dot-in .18s ease-out;pointer-events:none}@keyframes size-readout-in{0%{opacity:0;transform:translateY(4px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}.size-readout-chip{position:absolute;z-index:26;padding:4px 8px;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--accent-ink);background:var(--accent);border-radius:6px;box-shadow:0 4px 12px #00000047,0 0 0 1px color-mix(in oklch,var(--accent) 50%,transparent);pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;animation:size-readout-in .12s ease-out}@keyframes connection-toast-in{0%{opacity:0;transform:translate(-50%,-8px) scale(.92)}20%{opacity:1;transform:translate(-50%,-12px) scale(1)}80%{opacity:1;transform:translate(-50%,-12px) scale(1)}to{opacity:0;transform:translate(-50%,-20px) scale(.98)}}.connection-toast{position:absolute;z-index:27;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-family:var(--mono);font-size:11px;color:var(--text);background:color-mix(in oklch,var(--surface) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid color-mix(in oklch,var(--accent) 45%,transparent);border-radius:999px;box-shadow:0 6px 18px #00000057;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;transform:translate(-50%,-12px);animation:connection-toast-in 1.6s ease-out forwards}.connection-toast-from,.connection-toast-to{color:var(--text);font-weight:600}.connection-toast-arrow{color:color-mix(in oklch,var(--accent) 80%,var(--text-dim))}.inspector{position:fixed;top:10px;right:10px;bottom:10px;width:290px;background:color-mix(in oklch,var(--surface) 76%,transparent);backdrop-filter:blur(20px) saturate(155%);-webkit-backdrop-filter:blur(20px) saturate(155%);border:1px solid rgba(255,255,255,.08);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;z-index:200;box-shadow:0 1px #ffffff0f inset,0 16px 44px #00000073,0 0 20px color-mix(in oklch,var(--accent) 3%,transparent);animation:insp-in .3s var(--spring-curve);transition:background-color var(--transition-normal),border-color var(--transition-normal)}[data-theme=light] .inspector{background:color-mix(in oklch,var(--surface) 82%,transparent);border:1px solid rgba(26,31,43,.08);box-shadow:0 1px #fff9 inset,0 8px 32px #1a1f2b1a}@keyframes insp-in{0%{opacity:0;transform:translate(24px) scale(.97)}to{opacity:1;transform:translate(0) scale(1)}}.insp-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-faint);width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);cursor:pointer;flex-shrink:0;transition:var(--transition-fast)}.insp-close:hover{color:var(--text);background:var(--surface-2);transform:rotate(90deg) scale(1.1)}.insp-close:active{transform:rotate(90deg) scale(.9)}.insp-hd{padding:16px 14px 10px;border-bottom:1px solid var(--border)}.insp-hd .title{display:flex;align-items:center;justify-content:space-between;gap:8px}.insp-hd .title input{background:transparent;border:0;padding:0;font-size:14px;font-weight:600;color:var(--text);outline:none;flex:1;min-width:0;border-bottom:1px dashed transparent;transition:border-bottom-color var(--transition-fast)}.insp-hd .title input:focus{border-bottom-color:var(--accent)}.insp-hd .meta{display:flex;gap:10px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;color:var(--text-dim);margin-top:8px}.insp-hd .meta .kind{font-size:9.5px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em}.insp-hd .meta b{color:var(--text);font-weight:550}.insp-body{flex:1;overflow-y:auto;padding:4px 0 16px}.section{padding:16px 14px 8px}.section .lbl{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);font-weight:700;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}.op-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.op-btn{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);color:var(--text);font-size:12px;text-align:left;cursor:pointer;min-width:0;transition:var(--transition-fast)}.op-btn .ico{width:13px;height:13px;color:var(--text-faint);flex-shrink:0;transition:color var(--transition-fast)}.op-btn .lbl-t{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.op-btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--accent);transform:translateY(-1px)}.op-btn:hover:not(:disabled) .ico{color:var(--accent)}.op-btn:active:not(:disabled){transform:translateY(0) scale(.97)}.op-btn.wide{grid-column:1 / -1}.op-btn:disabled{opacity:.35;cursor:not-allowed}.op-chip{display:flex;align-items:stretch;min-width:0;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);overflow:hidden;transition:var(--transition-fast)}.op-chip.wide{grid-column:1 / -1}.op-chip:hover:not(.is-disabled){border-color:var(--accent);transform:translateY(-1px)}.op-chip .op-btn-main{flex:1;border:0;background:transparent;border-radius:0;padding-right:6px}.op-chip .op-btn-main:hover:not(:disabled){background:var(--surface-3);transform:none}.op-sim-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-left:1px solid var(--border);background:transparent;width:28px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-faint);cursor:pointer;transition:var(--transition-fast)}.op-sim-btn:hover:not(:disabled){background:color-mix(in oklch,var(--accent) 12%,transparent);color:var(--accent)}.op-sim-btn:disabled{opacity:.35;cursor:not-allowed}.op-chip.is-disabled{opacity:.5}.toast .toast-action{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;letter-spacing:.01em;cursor:pointer;margin-left:6px;transition:var(--transition-fast)}.toast .toast-action:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.field .field-lbl{font-size:11px;color:var(--text-dim);font-weight:550}.field input,.field textarea,.field select{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;font-size:12px;font-family:var(--mono);color:var(--text);outline:none;width:100%;transition:var(--transition-fast)}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 15%,transparent)}.field textarea{min-height:76px;resize:vertical}.field .row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:8px 14px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:var(--transition-fast)}.btn:hover{background:var(--surface-3);border-color:var(--border-strong);transform:translateY(-1px)}.btn:active{transform:translateY(0) scale(.97)}.btn .ico{width:13px;height:13px}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);box-shadow:0 2px 8px color-mix(in oklch,var(--accent) 20%,transparent)}.btn-primary:hover{background:color-mix(in oklch,var(--accent),white 8%);border-color:color-mix(in oklch,var(--accent),white 8%);box-shadow:0 4px 12px color-mix(in oklch,var(--accent) 30%,transparent)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-dim)}.btn-ghost:hover{color:var(--text);background:var(--surface-2)}.raw-editor-trigger{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid color-mix(in oklch,var(--accent) 12%,var(--border));background:linear-gradient(180deg,color-mix(in oklch,white 4%,transparent),transparent),color-mix(in oklch,var(--canvas-bg) 18%,var(--surface-2));color:var(--text);width:100%;min-height:54px;padding:10px;border-radius:var(--radius-sm);display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.raw-editor-trigger:hover{border-color:color-mix(in oklch,var(--accent) 52%,var(--border));background:color-mix(in oklch,var(--accent) 7%,var(--surface-2));box-shadow:0 8px 18px color-mix(in oklch,var(--accent) 8%,transparent);transform:translateY(-1px)}.raw-editor-trigger-icon{width:30px;height:30px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:var(--accent);background:color-mix(in oklch,var(--accent) 12%,transparent);border:1px solid color-mix(in oklch,var(--accent) 22%,transparent);flex-shrink:0}.raw-editor-trigger-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.raw-editor-trigger-copy span{font-size:12px;font-weight:700}.raw-editor-trigger-copy small{color:var(--text-faint);font-size:10.5px;font-weight:600}.raw-editor-panel{border:1px solid color-mix(in oklch,var(--accent) 14%,var(--border));border-radius:var(--radius-sm);background:color-mix(in oklch,var(--canvas-bg) 16%,var(--surface-2));overflow:hidden;box-shadow:0 1px color-mix(in oklch,white 5%,transparent) inset}.raw-editor-topline{min-height:34px;padding:0 8px 0 11px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--text-dim);border-bottom:1px solid var(--border);font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.raw-editor-panel textarea{display:block;width:100%;min-height:190px;max-height:360px;resize:vertical;border:0;border-radius:0;border-bottom:1px solid var(--border);background:radial-gradient(circle at 0 0,color-mix(in oklch,var(--accent) 8%,transparent),transparent 42%),color-mix(in oklch,var(--canvas-bg) 28%,var(--surface));color:var(--text);padding:12px;font-family:var(--mono);font-size:12px;line-height:1.6;-moz-tab-size:2;tab-size:2}.raw-editor-panel textarea:focus{box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 12%,transparent) inset}.raw-editor-error{padding:8px 10px;border-bottom:1px solid color-mix(in oklch,var(--danger) 38%,var(--border));color:var(--danger);background:color-mix(in oklch,var(--danger) 8%,transparent);font-size:11.5px;line-height:1.35}.raw-editor-actions{display:flex;justify-content:flex-end;gap:7px;padding:9px}.raw-editor-actions .btn{min-width:78px}.raw-editor-close{width:24px;height:24px;padding:0}.advanced-drawer{margin-top:16px;border-top:1px solid var(--border);transition:all var(--transition-normal)}.advanced-drawer.expanded{background:color-mix(in oklch,var(--surface-2) 35%,transparent)}.advanced-drawer-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;width:100%;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;color:var(--text-dim);font-size:11px;font-weight:650;letter-spacing:.03em;cursor:pointer;transition:all var(--transition-fast)}.advanced-drawer-toggle:hover{background:var(--surface-2);color:var(--text)}.advanced-drawer-toggle .ico{color:var(--text-faint);transition:transform var(--transition-normal) var(--spring-curve)}.advanced-drawer-toggle:hover .ico{color:var(--accent)}.advanced-drawer-toggle .chev{transition:transform .25s var(--spring-curve)}.advanced-drawer-toggle .chev.expanded{transform:rotate(90deg);color:var(--accent)}.advanced-drawer-content{animation:drawer-slide-down .25s var(--spring-curve)}@keyframes drawer-slide-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.inspector-resize-handle{position:absolute;top:0;left:0;bottom:0;width:6px;cursor:ew-resize;z-index:10;transition:background-color .2s}.inspector-resize-handle:hover,.inspector-resize-handle.active{background:color-mix(in oklch,var(--accent) 30%,transparent)}.app{--code-dock-width: 520px;--code-dock-bg: color-mix(in oklch, var(--canvas-bg) 78%, var(--surface) 22%);--code-dock-panel: color-mix(in oklch, var(--canvas-bg) 64%, var(--surface) 36%);--code-dock-panel-2: color-mix(in oklch, var(--canvas-bg) 52%, var(--surface-2) 48%);--code-dock-border: color-mix(in oklch, var(--accent) 13%, var(--border));--cm-bg: color-mix(in oklch, var(--canvas-bg) 84%, var(--surface) 16%);--cm-gutter-bg: color-mix(in oklch, var(--canvas-bg) 74%, var(--surface) 26%);--cm-foreground: color-mix(in oklch, var(--text) 92%, var(--accent) 8%);--cm-muted: color-mix(in oklch, var(--text-faint) 82%, var(--canvas-bg) 18%);--cm-border: color-mix(in oklch, var(--accent) 12%, var(--border));--cm-active-line-bg: color-mix(in oklch, var(--accent) 7%, transparent);--cm-active-gutter-bg: color-mix(in oklch, var(--accent) 10%, transparent);--cm-trace-line-bg: color-mix(in oklch, var(--accent) 13%, transparent);--cm-selection-bg: color-mix(in oklch, var(--accent) 27%, transparent);--cm-comment: color-mix(in oklch, var(--text-faint) 80%, var(--canvas-bg) 20%);--cm-keyword: color-mix(in oklch, var(--visited) 72%, var(--accent) 28%);--cm-string: color-mix(in oklch, var(--success) 86%, var(--text) 14%);--cm-number: color-mix(in oklch, var(--accent) 76%, var(--compare) 24%);--cm-function: color-mix(in oklch, var(--compare) 82%, var(--text) 18%);--cm-type: color-mix(in oklch, var(--visited) 78%, var(--text) 22%);--cm-variable: color-mix(in oklch, var(--text) 82%, var(--danger) 18%);--cm-tag: color-mix(in oklch, var(--danger) 76%, var(--accent) 24%);--cm-punctuation: color-mix(in oklch, var(--text-dim) 82%, var(--accent) 18%)}.app.code-dock-open .main{margin-right:var(--code-dock-width)}.app.code-dock-open .inspector{right:calc(var(--code-dock-width) + 20px)}.code-dock{position:fixed;top:0;right:0;bottom:0;width:var(--code-dock-width);z-index:160;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--code-dock-bg);border-left:1px solid var(--code-dock-border);box-shadow:-18px 0 42px #00000042}.code-dock-resize-handle{position:absolute;top:0;bottom:0;left:-5px;width:10px;z-index:3;cursor:ew-resize;touch-action:none}.code-dock-resize-handle:after{content:"";position:absolute;top:0;bottom:0;left:4px;width:2px;background:transparent;transition:background-color var(--transition-fast),box-shadow var(--transition-fast)}.code-dock-resize-handle:hover:after{background:var(--accent);box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 12%,transparent)}[data-theme=light] .code-dock{--code-dock-bg: color-mix(in oklch, var(--canvas-bg) 72%, var(--surface) 28%);--code-dock-panel: color-mix(in oklch, var(--canvas-bg) 58%, var(--surface) 42%);--code-dock-panel-2: color-mix(in oklch, var(--canvas-bg) 62%, var(--surface-2) 38%);--code-dock-border: color-mix(in oklch, var(--accent) 14%, var(--border));--cm-bg: color-mix(in oklch, var(--canvas-bg) 78%, white 22%);--cm-gutter-bg: color-mix(in oklch, var(--canvas-bg) 68%, var(--surface-2) 32%);--cm-foreground: color-mix(in oklch, var(--text) 94%, var(--accent) 6%);--cm-muted: color-mix(in oklch, var(--text-faint) 84%, var(--canvas-bg) 16%);--cm-border: color-mix(in oklch, var(--accent) 12%, var(--border));--cm-active-line-bg: color-mix(in oklch, var(--accent) 8%, transparent);--cm-active-gutter-bg: color-mix(in oklch, var(--accent) 11%, transparent);--cm-trace-line-bg: color-mix(in oklch, var(--accent) 14%, transparent);--cm-selection-bg: color-mix(in oklch, var(--accent) 22%, transparent);--cm-comment: color-mix(in oklch, var(--text-faint) 90%, var(--canvas-bg) 10%);--cm-keyword: color-mix(in oklch, var(--visited) 70%, var(--accent) 30%);--cm-string: color-mix(in oklch, var(--success) 78%, var(--text) 22%);--cm-number: color-mix(in oklch, var(--accent) 72%, var(--compare) 28%);--cm-function: color-mix(in oklch, var(--compare) 78%, var(--text) 22%);--cm-type: color-mix(in oklch, var(--visited) 76%, var(--text) 24%);--cm-variable: color-mix(in oklch, var(--text) 86%, var(--danger) 14%);--cm-tag: color-mix(in oklch, var(--danger) 72%, var(--accent) 28%);--cm-punctuation: color-mix(in oklch, var(--text-dim) 86%, var(--accent) 14%);box-shadow:-12px 0 30px #1a1f2b14}.code-dock-header{height:58px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px 0 16px;border-bottom:1px solid var(--code-dock-border);background:var(--code-dock-panel);flex-shrink:0}.code-dock-title{display:flex;align-items:center;gap:10px;min-width:0}.code-dock-icon{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--accent);background:color-mix(in oklch,var(--accent) 12%,transparent);border:1px solid color-mix(in oklch,var(--accent) 20%,transparent);flex-shrink:0}.code-dock-name{min-width:0;display:flex;flex-direction:column;gap:2px}.code-dock-name span{color:var(--text);font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-dock-name small{color:var(--text-faint);font-family:var(--mono);font-size:10.5px}.code-dock-actions{display:flex;align-items:center;gap:7px;flex-shrink:0}.code-dock-language{height:30px;max-width:132px;border:1px solid var(--code-dock-border);border-radius:var(--radius-sm);background:var(--code-dock-panel-2);color:var(--text);font-size:11.5px;font-weight:650;padding:0 8px;outline:none}.code-dock-language:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 15%,transparent)}.code-dock-icon-btn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--code-dock-border);border-radius:var(--radius-sm);background:var(--code-dock-panel-2);color:var(--text-dim);cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.code-dock-icon-btn:hover{border-color:var(--accent);color:var(--text);background:var(--surface-3);transform:translateY(-1px)}.code-dock-file-tabs{min-height:42px;display:flex;align-items:flex-end;gap:4px;overflow-x:auto;overflow-y:hidden;padding:6px 10px 0;border-bottom:1px solid var(--code-dock-border);background:color-mix(in oklch,var(--code-dock-panel) 80%,var(--canvas-bg) 20%);flex-shrink:0;scrollbar-width:thin}.code-dock-file-tab{min-width:118px;max-width:190px;height:34px;display:flex;align-items:center;border:1px solid transparent;border-bottom:0;border-radius:8px 8px 0 0;background:transparent;color:var(--text-faint);flex:0 0 auto}.code-dock-file-tab.active{background:var(--code-dock-panel-2);border-color:var(--code-dock-border);color:var(--text)}.code-dock-file-tab-main{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0;height:100%;flex:1;display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:inherit;padding:0 7px 0 9px;cursor:pointer;font-size:11.5px;font-weight:700}.code-dock-file-tab-main span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-dock-file-tab-main small{color:var(--text-faint);font-family:var(--mono);font-size:10px;font-weight:650}.code-dock-file-tab.active .code-dock-file-tab-main .ico{color:var(--accent)}.code-dock-file-tab-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-faint);width:26px;height:100%;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;cursor:pointer;flex-shrink:0}.code-dock-file-tab-close:hover{color:var(--danger);background:color-mix(in oklch,var(--danger) 10%,transparent)}.code-dock-sourcebar{height:40px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px;border-bottom:1px solid var(--code-dock-border);background:var(--code-dock-panel-2);flex-shrink:0}.code-dock-tab{height:100%;display:inline-flex;align-items:center;gap:7px;color:var(--text-dim);font-size:12px;font-weight:700;border-bottom:2px solid transparent}.code-dock-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.code-dock-run-state{min-width:0;color:var(--text-faint);font-family:var(--mono);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-dock-run-state.playing{color:var(--accent)}.code-dock-editor{flex:1;min-height:0;overflow:hidden;background:var(--cm-bg)}.code-dock-loading{align-items:center;justify-content:center}.code-loading-spinner{width:24px;height:24px;border-radius:50%;border:2px solid color-mix(in oklch,var(--accent) 18%,transparent);border-top-color:var(--accent);animation:code-loading-spin .8s linear infinite}@keyframes code-loading-spin{to{transform:rotate(360deg)}}.code-editor{height:100%;width:100%}.code-editor .cm-editor{height:100%}.code-editor .cm-scroller{overflow:auto}.code-editor .cm-foldGutter,.code-editor .cm-gutter.cm-lineNumbers{-webkit-user-select:none;user-select:none}@media (max-width: 960px){.app.code-dock-open .main{margin-right:0;margin-bottom:min(52vh,460px)}.app.code-dock-open .inspector{right:10px;bottom:calc(min(52vh,460px) + 12px)}.code-dock{top:auto;left:0;width:auto;height:min(52vh,460px);border-left:0;border-top:1px solid var(--border);box-shadow:0 -16px 36px #00000042}.code-dock-resize-handle{display:none}}@media (max-width: 620px){.code-dock-header{height:auto;min-height:58px;align-items:flex-start;flex-direction:column;padding:10px 12px}.code-dock-actions{width:100%}.code-dock-language{flex:1;max-width:none}}.playback{position:absolute;left:16px;right:16px;bottom:20px;background:color-mix(in oklch,var(--surface) 78%,transparent);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:8px 12px 8px 6px;display:grid;grid-template-columns:auto auto minmax(0,auto) auto minmax(0,1fr) auto auto auto auto;grid-template-rows:auto auto;grid-template-areas:"drag controls label step scrub speed replay apply cancel" "msg  msg      msg   msg  msg   msg   msg    msg   msg";align-items:center;gap:8px;box-shadow:0 1px #ffffff0f inset,0 12px 40px #00000080,0 0 30px color-mix(in oklch,var(--accent) 5%,transparent);max-width:960px;width:auto;z-index:100;transition:border-color var(--transition-normal),box-shadow var(--transition-normal),opacity var(--transition-normal)}.playback.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.app.inspector-open .playback:not(.is-free){right:calc(var(--inspector-width, 320px) + 16px)}[data-theme=light] .playback{background:color-mix(in oklch,var(--surface) 84%,transparent);border:1px solid rgba(26,31,43,.08);box-shadow:0 1px #fff9 inset,0 8px 30px #1a1f2b1f,0 0 20px color-mix(in oklch,var(--accent) 3%,transparent)}.playback.playback-pill{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:none;padding:6px 12px 6px 6px;cursor:pointer;grid-template-columns:none;grid-template-rows:none;grid-template-areas:none}.pb-pill-label{font-family:var(--mono);font-size:11.5px;color:var(--text);letter-spacing:-.01em;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pb-drag{grid-area:drag;width:14px;height:28px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;cursor:grab;opacity:.35;transition:opacity var(--transition-fast)}.pb-drag:hover{opacity:.85}.pb-drag:active{cursor:grabbing}.pb-drag span{width:4px;height:4px;border-radius:50%;background:var(--text-dim)}.pb-controls{grid-area:controls;display:inline-flex;align-items:center;gap:4px}.pb-label{grid-area:label;font-family:var(--mono);font-size:11.5px;color:var(--text);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.playback .pb-step{grid-area:step;font-family:var(--mono);font-size:11px;color:var(--text-dim);font-variant-numeric:tabular-nums;background:var(--surface-2);padding:3px 6px;border-radius:4px;border:1px solid var(--border);white-space:nowrap}.playback.playback-pill .pb-step{grid-area:auto}.pb-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:var(--text);cursor:pointer;transition:var(--transition-fast)}.pb-btn:hover{background:var(--surface-2);transform:translateY(-1px) scale(1.05)}.pb-btn:active{transform:translateY(0) scale(.95)}.pb-btn.primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 4px 12px color-mix(in oklch,var(--accent) 30%,transparent)}.pb-btn.primary:hover{background:color-mix(in oklch,var(--accent),white 8%);box-shadow:0 6px 16px color-mix(in oklch,var(--accent) 40%,transparent)}.pb-btn.apply{background:var(--success, #2bb86b);color:#fff;box-shadow:0 4px 12px color-mix(in oklch,#2bb86b 30%,transparent);animation:pb-apply-pulse 1.8s ease-in-out infinite}.pb-btn.apply:hover{background:color-mix(in oklch,#2bb86b,white 8%)}.pb-btn .ico{width:14px;height:14px}.pb-cancel{grid-area:cancel;opacity:.55}.pb-cancel:hover{opacity:1;color:var(--danger, #e85f5f)}.pb-apply-btn{grid-area:apply;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:8px;background:var(--success, #2bb86b);color:#fff;font-family:var(--font-sans, inherit);font-size:12px;font-weight:600;letter-spacing:-.005em;cursor:pointer;box-shadow:0 4px 12px color-mix(in oklch,#2bb86b 28%,transparent);transition:var(--transition-fast);animation:pb-apply-pulse 1.8s ease-in-out infinite}.pb-apply-btn:hover{background:color-mix(in oklch,#2bb86b,white 10%);transform:translateY(-1px)}@keyframes pb-apply-pulse{0%,to{box-shadow:0 4px 12px color-mix(in oklch,#2bb86b 28%,transparent)}50%{box-shadow:0 4px 18px color-mix(in oklch,#2bb86b 55%,transparent)}}.pb-scrub{grid-area:scrub;position:relative;height:28px;display:flex;align-items:center;cursor:pointer;padding:0 6px;min-width:140px;outline:none}.pb-scrub:focus-visible .pb-scrub-thumb{box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 35%,transparent)}.pb-scrub-track{position:relative;width:100%;height:6px;background:var(--surface-2);border:1px solid var(--border);border-radius:999px}.pb-scrub-fill{position:absolute;top:0;left:0;height:100%;background:linear-gradient(90deg,color-mix(in oklch,var(--accent) 70%,transparent),var(--accent));border-radius:999px;transition:width 80ms linear}.pb-scrub-tick{position:absolute;top:50%;width:2px;height:8px;background:color-mix(in oklch,var(--text-dim) 55%,transparent);border-radius:1px;transform:translate(-50%,-50%);pointer-events:none}.pb-scrub-thumb{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);transform:translate(-50%,-50%);box-shadow:0 2px 6px #00000059;transition:width .12s ease,height .12s ease,box-shadow .12s ease}.pb-scrub:hover .pb-scrub-thumb{width:14px;height:14px}.pb-scrub-tip{position:absolute;bottom:calc(100% + 8px);transform:translate(-50%);background:var(--surface-3, #1a1f2b);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:10.5px;font-family:var(--mono);white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:8px;pointer-events:none;box-shadow:0 6px 18px #00000059;z-index:2}.pb-scrub-tip-step{color:var(--text-dim);font-variant-numeric:tabular-nums}.pb-scrub-tip-msg{color:var(--text)}.pb-speed-wrap{grid-area:speed;position:relative}.pb-speed-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:4px 8px;border-radius:6px;font-size:11px;font-family:var(--mono);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:var(--transition-fast)}.pb-speed-chip:hover{background:var(--surface-3, var(--surface-2))}.pb-speed-caret{font-size:9px;opacity:.6}.pb-speed-menu{position:absolute;bottom:calc(100% + 6px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:4px;display:flex;flex-direction:column;min-width:64px;box-shadow:0 8px 24px #0006;z-index:3}.pb-speed-menu button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:5px 10px;font-size:11px;font-family:var(--mono);font-weight:600;color:var(--text);border-radius:4px;cursor:pointer;text-align:left;transition:var(--transition-fast)}.pb-speed-menu button:hover{background:var(--surface-2)}.pb-speed-menu button.on{background:var(--accent);color:var(--accent-ink)}.playback .pb-msg{grid-area:msg;font-family:var(--mono);font-size:11px;color:var(--text-dim);letter-spacing:-.01em;line-height:1.45;padding-left:56px;padding-right:8px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.struct-card.playing{outline:2px solid color-mix(in oklch,var(--accent) 65%,transparent);outline-offset:4px;border-radius:12px;animation:pb-live-glow 2.4s ease-in-out infinite}@keyframes pb-live-glow{0%,to{outline-color:color-mix(in oklch,var(--accent) 45%,transparent)}50%{outline-color:color-mix(in oklch,var(--accent) 80%,transparent)}}.cell{min-width:56px;width:auto;height:56px;padding:0 10px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:8px;font-family:var(--mono);font-size:14px;color:var(--text);position:relative;white-space:nowrap;font-variant-numeric:tabular-nums;transition:transform var(--transition-fast),background-color var(--transition-normal),border-color var(--transition-normal),box-shadow var(--transition-normal);box-shadow:0 2px 6px #00000026}.cell:hover{transform:translateY(-2px);border-color:var(--border-strong);box-shadow:0 4px 12px #00000038}.cell input{background:transparent;border:0;padding:0;width:auto;height:100%;field-sizing:content;min-width:1.5ch;max-width:22ch;text-align:center;font:inherit;color:inherit;outline:none}.cell .idx{position:absolute;top:-18px;left:0;right:0;text-align:center;font-size:9.5px;font-weight:600;color:var(--text-faint);font-family:var(--mono)}.cell.compare{border-color:var(--compare);background:color-mix(in oklch,var(--compare) 20%,var(--surface-2));color:var(--compare);animation:pulse-glow-compare 1.5s infinite}.cell.active{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 24%,var(--surface-2));color:var(--accent);animation:pulse-glow-active 1.5s infinite}.cell.found,.cell.sorted{border-color:var(--success);background:color-mix(in oklch,var(--success) 22%,var(--surface-2));color:var(--success);animation:pulse-glow-found 1.5s infinite}.cell.visited{border-color:var(--visited);background:color-mix(in oklch,var(--visited) 18%,var(--surface-2));color:var(--visited);animation:pulse-glow-visited 1.8s infinite}.cell.dim{opacity:.45}.arr{display:flex;gap:6px;padding:28px 0 12px}.arr .cell{cursor:text}.arr-controls{display:flex;gap:8px;justify-content:center;margin-top:8px;color:var(--text-faint);font-size:11px;font-family:var(--mono)}.arr-add{width:56px;height:56px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--border-strong);border-radius:6px;color:var(--text-faint);cursor:pointer}.arr-add:hover{color:var(--accent);border-color:var(--accent)}.matrix-wrap{display:flex;flex-direction:column;gap:4px;padding:24px}.matrix-row{display:flex;gap:4px}.matrix-wrap .cell{min-width:52px;width:auto;height:52px;font-size:13px}.matrix-corner-btn{width:52px;height:26px;border:1px dashed var(--border-strong);border-radius:5px;display:flex;align-items:center;justify-content:center;color:var(--text-faint);cursor:pointer}.matrix-corner-btn:hover{color:var(--accent);border-color:var(--accent)}.matrix-corner-btn.tall{width:26px;height:52px}.matrix-controls-col,.matrix-controls-row{display:flex;gap:4px}.matrix-controls-col{flex-direction:column}.graph-wrap{width:100%;height:100%;max-width:100%;min-height:250px;position:relative;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.graph-wrap:focus{outline:none}.graph-svg{display:block;width:100%;height:100%}.gv-node circle{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:1.5;transition:fill var(--transition-normal),stroke var(--transition-normal),stroke-width var(--transition-normal)}.gv-node text{fill:var(--text);font-size:12.5px;font-weight:600;font-family:var(--mono);font-variant-numeric:tabular-nums;pointer-events:none;transition:fill var(--transition-normal)}.gv-node:hover circle{stroke-width:2;stroke:var(--text-dim)}.gv-node.active circle{fill:color-mix(in oklch,var(--accent) 30%,var(--surface-2));stroke:var(--accent);stroke-width:2.5}.gv-node.active text{fill:var(--accent)}.gv-node.compare circle{fill:color-mix(in oklch,var(--compare) 25%,var(--surface-2));stroke:var(--compare);stroke-width:2.5}.gv-node.compare text{fill:var(--compare)}.gv-node.visited circle{fill:color-mix(in oklch,var(--visited) 22%,var(--surface-2));stroke:var(--visited);stroke-width:2}.gv-node.visited text{fill:var(--visited)}.gv-node.found circle{fill:color-mix(in oklch,var(--success) 28%,var(--surface-2));stroke:var(--success);stroke-width:2.5}.gv-node.found text{fill:var(--success)}.gv-edge path{transition:stroke .18s,stroke-width .18s}.graph-overlay{position:absolute;top:12px;left:12px;max-width:calc(50% - 18px);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-family:var(--mono);font-size:11px;line-height:1.5;color:var(--text-dim);display:flex;gap:14px;flex-wrap:wrap;z-index:1}.graph-overlay b{color:var(--text);font-weight:500}.graph-hint{position:absolute;top:12px;right:12px;max-width:calc(50% - 18px);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:11px;line-height:1.5;text-align:right;color:var(--text-dim);z-index:1;pointer-events:none}.graph-hint kbd{font-family:var(--mono);font-size:10px;padding:1px 5px;border-radius:3px;background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text)}.plane-wrap{position:relative}.plane-toolbar{position:absolute;bottom:12px;left:12px;display:flex;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:5px;box-shadow:0 2px 10px #00000026}.plane-tool-btn{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:11px;color:var(--text-dim);background:transparent;border:1px solid transparent;border-radius:5px;padding:4px 8px;cursor:pointer;transition:background var(--transition-normal),color var(--transition-normal),border-color var(--transition-normal)}.plane-tool-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text);border-color:var(--border)}.plane-tool-btn:disabled{opacity:.4;cursor:not-allowed}.plane-tool-btn.danger:hover:not(:disabled){color:var(--danger);border-color:var(--danger)}.tree-svg{display:block;font-family:var(--mono)}.tree-node circle{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:1.5;transition:fill var(--transition-normal),stroke var(--transition-normal),stroke-width var(--transition-normal)}.tree-node text{fill:var(--text);font-size:12.5px;font-weight:600;font-family:var(--mono);text-anchor:middle;dominant-baseline:central;font-variant-numeric:tabular-nums;pointer-events:none}.tree-node:hover circle{stroke-width:2;stroke:var(--text-dim)}.tree-node.active circle{fill:color-mix(in oklch,var(--accent) 30%,var(--surface-2));stroke:var(--accent);stroke-width:2.5}.tree-node.active text{fill:var(--accent)}.tree-node.compare circle{fill:color-mix(in oklch,var(--compare) 25%,var(--surface-2));stroke:var(--compare);stroke-width:2.5}.tree-node.compare text{fill:var(--compare)}.tree-node.visited circle{fill:color-mix(in oklch,var(--visited) 22%,var(--surface-2));stroke:var(--visited);stroke-width:2}.tree-node.visited text{fill:var(--visited)}.tree-node.found circle{fill:color-mix(in oklch,var(--success) 28%,var(--surface-2));stroke:var(--success);stroke-width:2.5}.tree-node.found text{fill:var(--success)}.tree-edge{stroke:var(--border-strong);stroke-width:1.5;fill:none}.ll{display:flex;align-items:center;gap:0;padding:24px;flex-wrap:wrap}.ll .node{display:flex;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:6px;font-family:var(--mono);font-size:13px;overflow:hidden}.ll .node .val{padding:10px 14px;min-width:36px;text-align:center;cursor:text}.ll .node .val input{background:transparent;border:0;padding:0;width:auto;field-sizing:content;min-width:1.5ch;max-width:22ch;text-align:center;font:inherit;color:inherit;outline:none}.ll .node .ptr{padding:10px 8px;background:var(--surface-3);border-left:1px solid var(--border);color:var(--text-faint);font-size:10px}.ll .arr{padding:0 6px;color:var(--text-faint)}.ll .node.active{border-color:var(--accent);color:var(--accent)}.ll .node.active .val{color:var(--accent)}.ll .null{padding:10px 14px;border:1px dashed var(--border-strong);border-radius:6px;color:var(--text-faint);font-family:var(--mono);font-size:12px}.sq-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px}.sq-stack{display:flex;flex-direction:column-reverse;gap:4px;min-height:240px;min-width:140px;width:auto;border-left:2px solid var(--border-strong);border-right:2px solid var(--border-strong);border-bottom:2px solid var(--border-strong);padding:4px;border-radius:0 0 6px 6px;position:relative}.sq-stack:after{content:"";position:absolute;left:-2px;right:-2px;top:-1px;height:2px;background:linear-gradient(90deg,var(--border-strong) 0,var(--border-strong) 30%,transparent 30%,transparent 70%,var(--border-strong) 70%,var(--border-strong) 100%)}.sq-stack .cell{min-width:100%;width:auto;height:38px}.sq-queue{display:flex;gap:4px;min-width:280px;border-top:2px solid var(--border-strong);border-bottom:2px solid var(--border-strong);padding:6px}.sq-queue .cell{min-width:50px;width:auto;height:38px}.sq-label{font-family:var(--mono);font-size:10px;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;margin-top:4px}.heap-wrap{display:flex;flex-direction:column;gap:14px;padding:24px;align-items:center}.heap-array{display:flex;gap:4px}.heap-array .cell{min-width:44px;width:auto;height:44px;font-size:12px}.hm-wrap{display:grid;grid-template-columns:60px 1fr;gap:6px;padding:24px;min-width:360px}.hm-idx{display:flex;align-items:center;justify-content:flex-end;font-family:var(--mono);font-size:11px;color:var(--text-faint);padding-right:8px;border-right:1px solid var(--border);height:36px}.hm-bucket{display:flex;gap:4px;min-height:36px;align-items:center}.hm-entry{display:flex;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:5px;font-family:var(--mono);font-size:11.5px;overflow:hidden}.hm-entry .k{padding:6px 8px;color:var(--text);border-right:1px solid var(--border);background:var(--surface-3)}.hm-entry .v{padding:6px 8px;color:var(--text-dim)}.hm-entry.active{border-color:var(--accent)}.hm-entry.active .k{color:var(--accent)}.hm-entry.found{border-color:var(--success)}.hm-entry.found .v{color:var(--success)}.hm-empty{font-family:var(--mono);font-size:11px;color:var(--text-faint)}.set-wrap{padding:20px 24px;min-width:320px;position:relative}.set-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.set-variant{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--surface-2)}.set-variant button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--text-dim);font-family:var(--mono);font-size:11.5px;padding:5px 12px;cursor:pointer;transition:background .12s,color .12s}.set-variant button+button{border-left:1px solid var(--border)}.set-variant button:hover{color:var(--text)}.set-variant button.on{background:var(--accent);color:var(--bg, #fff)}.set-meta{font-family:var(--mono);font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em}.set-chip{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:34px;padding:0 10px;border:1px solid var(--border-strong);border-radius:7px;background:var(--surface-2);color:var(--text);font-family:var(--mono);font-size:13px;transition:border-color .12s,color .12s,background .12s,transform .12s}.set-chip.num{color:var(--accent)}.set-chip.inrange{background:var(--surface-3)}.set-chip.active{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.set-chip.found{border-color:var(--success);color:var(--success);background:color-mix(in srgb,var(--success) 12%,transparent)}.set-chip.dup{border-color:var(--warning, #d8a657);color:var(--warning, #d8a657)}.set-seq{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.set-sep{font-family:var(--mono);font-size:11px;color:var(--text-faint);padding:0 1px}.set-empty{font-family:var(--mono);font-size:12px;color:var(--text-faint);padding:8px 0}.ht{min-width:320px}.ht-loadline{display:flex;align-items:center;gap:10px;margin-bottom:16px}.ht-load-label,.ht-load-meta{font-family:var(--mono);font-size:10.5px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.ht-load-bar{flex:1;max-width:200px;height:6px;background:var(--surface-2);border:1px solid var(--border);border-radius:99px;overflow:hidden}.ht-load-fill{height:100%;background:var(--accent);border-radius:99px;transition:width .25s ease}.ht-load-bar.warm .ht-load-fill{background:var(--warning, #d8a657)}.ht-load-bar.hot .ht-load-fill{background:var(--danger, #e06c75)}.ht-scroll{overflow-x:auto;padding-bottom:6px}.ht-row{display:flex;gap:6px;align-items:flex-start}.ht-bucket{display:flex;flex-direction:column;align-items:center;min-width:38px}.ht-idx{width:100%;min-width:34px;height:26px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);border-radius:5px;background:var(--surface-2);font-family:var(--mono);font-size:10.5px;color:var(--text-faint);transition:border-color .12s,color .12s,background .12s}.ht-bucket.active .ht-idx{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}.ht-bucket.collision .ht-idx{border-color:var(--warning, #d8a657);color:var(--warning, #d8a657)}.ht-chain{display:flex;flex-direction:column;align-items:center}.ht-link{width:2px;height:8px;background:var(--border-strong)}.ht-bucket.collision .ht-link{background:var(--warning, #d8a657)}.ht-empty{width:6px;height:6px;margin-top:10px;border-radius:99px;background:var(--border);opacity:.5}.ht-cell{margin-top:8px;display:inline-flex;align-items:stretch;min-width:30px;min-height:28px;border:1px solid var(--border-strong);border-radius:6px;background:var(--surface-2);overflow:hidden;font-family:var(--mono);font-size:12px;color:var(--text);transition:border-color .12s,color .12s,transform .12s}.ht-cell:first-child{margin-top:8px}.ht-cell .v-only{padding:4px 9px;display:flex;align-items:center;justify-content:center}.ht-cell .k{padding:4px 8px;background:var(--surface-3);border-right:1px solid var(--border);display:flex;align-items:center}.ht-cell .v{padding:4px 8px;color:var(--text-dim);display:flex;align-items:center}.ht-cell.active{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.ht-cell.active .k{color:var(--accent)}.ht-cell.found{border-color:var(--success);color:var(--success)}.ht-cell.found .v{color:var(--success)}.ht-cell.dup{border-color:var(--warning, #d8a657);color:var(--warning, #d8a657)}.set-status{margin-top:12px;font-family:var(--mono);font-size:11.5px}.set-status.miss{color:var(--text-faint)}.set-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:16px;padding-top:12px;border-top:1px solid var(--border)}.set-add{display:inline-flex;gap:4px}.set-add input{width:120px;background:var(--surface-2);border:1px solid var(--border);border-radius:5px;color:var(--text);font-family:var(--mono);font-size:12px;padding:5px 8px;outline:none}.set-add input:focus{border-color:var(--accent)}.set-add button{display:inline-flex;align-items:center;justify-content:center;width:28px;border:1px solid var(--border);background:var(--surface-2);color:var(--accent);border-radius:5px;cursor:pointer}.set-add button:hover{background:var(--surface-3)}.set-cap{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--text-faint)}.set-cap button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-family:var(--mono);font-size:11px;padding:2px 8px;border-radius:4px;cursor:pointer}.set-cap button.on{background:var(--surface-3);color:var(--accent);border-color:var(--accent)}.doc-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;width:100%;height:100%;min-width:320px}.doc-page{max-width:100%;max-height:calc(100% - 40px);border:1px solid var(--border);border-radius:4px;box-shadow:0 2px 8px #00000026;background:#fff;object-fit:contain;display:block}.doc-page-placeholder{width:400px;height:300px;display:flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px dashed var(--border-strong);border-radius:6px;color:var(--text-faint);font-family:var(--mono);font-size:12px}.doc-nav{display:flex;align-items:center;gap:8px}.doc-nav button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer}.doc-nav button:hover:not(:disabled){background:var(--surface-3);border-color:var(--border-strong)}.doc-nav button:disabled{opacity:.35;cursor:not-allowed}.doc-nav .page-ind{font-family:var(--mono);font-size:12px;color:var(--text-dim);font-variant-numeric:tabular-nums;min-width:60px;text-align:center}.doc-filename{font-family:var(--mono);font-size:10px;color:var(--text-faint);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-input-overlay,.edge-input-overlay{position:absolute;z-index:100;border:2px solid var(--accent);background:var(--surface-2);color:var(--text);font-family:var(--mono),monospace;text-align:center;box-shadow:0 4px 16px #00000059,0 0 0 1px var(--accent);outline:none;font-weight:600;box-sizing:border-box;padding:0;margin:0}.node-input-overlay{border-radius:50%;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center}.edge-input-overlay{border-radius:4px;font-size:11px}.ct-table-container{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 16px #00000026;overflow:hidden;max-width:100%;width:100%;height:100%;flex:1;min-height:0;padding:16px}.ct-table-scroll-wrapper{overflow:auto;max-width:100%;border-radius:6px;border:1px solid var(--border-strong);flex:1;min-height:0}.ct-table{border-collapse:collapse;table-layout:fixed;width:max-content;min-width:100%;font-family:var(--mono);font-size:13px;color:var(--text);text-align:left}.ct-table th,.ct-table td{padding:8px 12px;border:1px solid var(--border-strong);position:relative;white-space:nowrap;overflow:hidden}.ct-table-index-header{width:40px;min-width:40px!important;text-align:center;background:var(--surface-3);color:var(--text-faint);font-size:11px;font-weight:600}.ct-table-index-cell{width:40px;text-align:center;background:var(--surface-3);color:var(--text-faint);font-size:11px;position:relative}.ct-table-header-cell{background:var(--surface-3);color:var(--text-dim);font-weight:600;vertical-align:middle}.ct-table-header-content{display:flex;align-items:center;justify-content:space-between;gap:8px}.ct-table-header-input{background:transparent;border:0;color:var(--text);font-family:inherit;font-weight:inherit;font-size:inherit;outline:none;width:100%;padding:0}.ct-table-header-del-btn,.ct-table-row-del-btn{background:transparent;border:0;color:var(--text-faint);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:2px;border-radius:4px;opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast),background-color var(--transition-fast)}.ct-table-header-cell:hover .ct-table-header-del-btn,.ct-table-index-cell:hover .ct-table-row-del-btn{opacity:1}.ct-table-header-del-btn:hover,.ct-table-row-del-btn:hover{color:var(--danger);background:color-mix(in oklch,var(--danger) 15%,transparent)}.ct-table-row-del-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ct-table-index-cell:hover .ct-table-index-num{opacity:0}.ct-table-cell{background:var(--surface-2);padding:0!important;transition:background-color var(--transition-normal),border-color var(--transition-normal)}.ct-table-cell-input{background:transparent;border:0;color:inherit;font-family:inherit;font-size:inherit;outline:none;width:100%;padding:8px 12px;box-sizing:border-box}.ct-table-cell-text{padding:8px 12px;min-height:31px}.ct-table-corner-th{width:32px;min-width:32px!important;padding:0!important;background:var(--surface-3);text-align:center}.ct-table-add-col-btn{background:transparent;border:none;color:var(--text-faint);width:100%;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:8px 0;transition:color var(--transition-fast)}.ct-table-add-col-btn:hover{color:var(--accent)}.ct-table-row-spacer{background:var(--surface-3);width:32px;border-top:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong);border-right:none}.ct-table-footer-controls{display:flex;align-items:center;justify-content:space-between;margin-top:12px}.ct-table-add-row-btn{background:var(--surface-2);border:1px dashed var(--border-strong);border-radius:6px;color:var(--text-dim);padding:6px 12px;font-family:inherit;font-size:12px;cursor:pointer;display:flex;align-items:center;gap:6px;transition:border-color var(--transition-fast),color var(--transition-fast),background-color var(--transition-fast)}.ct-table-add-row-btn:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in oklch,var(--accent) 5%,var(--surface-2))}.ct-table-dim-indicator{font-size:11px;color:var(--text-faint)}.ct-table-cell.active{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 24%,var(--surface-2));color:var(--accent);animation:pulse-glow-active 1.5s infinite}.ct-table-cell.compare{border-color:var(--compare);background:color-mix(in oklch,var(--compare) 20%,var(--surface-2));color:var(--compare);animation:pulse-glow-compare 1.5s infinite}.ct-table-cell.found{border-color:var(--success);background:color-mix(in oklch,var(--success) 22%,var(--surface-2));color:var(--success);animation:pulse-glow-found 1.5s infinite}.ct-table-cell.visited{border-color:var(--visited);background:color-mix(in oklch,var(--visited) 18%,var(--surface-2));color:var(--visited);animation:pulse-glow-visited 1.8s infinite}.ct-df-index-header,.ct-df-index-cell{width:52px;min-width:52px!important;font-weight:600}.ct-df-index-cell{color:var(--text-dim)}.ct-df-header-cell{vertical-align:top}.ct-df-header-cell .ct-table-header-content{margin-bottom:3px}.ct-df-dtype{display:inline-block;font-size:9px;line-height:1.4;font-weight:600;letter-spacing:.02em;padding:0 5px;border-radius:999px;text-transform:lowercase;color:var(--text-faint);background:color-mix(in oklch,var(--text-faint) 16%,transparent)}.ct-df-dtype-int64,.ct-df-dtype-float64{color:var(--compare);background:color-mix(in oklch,var(--compare) 16%,transparent)}.ct-df-dtype-bool{color:var(--visited);background:color-mix(in oklch,var(--visited) 16%,transparent)}.ct-df-dtype-object{color:var(--accent);background:color-mix(in oklch,var(--accent) 14%,transparent)}.ct-df-num .ct-table-cell-input,.ct-df-num .ct-table-cell-text{text-align:right;font-variant-numeric:tabular-nums}.ct-df-na .ct-table-cell-text{color:var(--text-faint);font-style:italic;opacity:.7}.ct-df-cell-input::placeholder{color:var(--text-faint);font-style:italic;opacity:.5}.seg-tree-view{isolation:isolate}.seg-tree-toolbar{display:flex;width:100%;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:0 8px}.seg-tree-title{display:inline-flex;align-items:center;gap:8px;min-width:0;font-family:var(--mono);font-size:11px;font-weight:650;color:var(--text-faint);text-transform:uppercase;letter-spacing:0;white-space:nowrap}.seg-tree-title-dot{width:4px;height:4px;border-radius:50%;background:color-mix(in oklch,var(--accent) 78%,var(--text-faint));box-shadow:0 0 10px color-mix(in oklch,var(--accent) 42%,transparent)}.seg-op-picker{position:relative;display:inline-flex;align-items:center;gap:7px;min-width:0}.seg-op-label{font-size:11px;color:var(--text-dim);white-space:nowrap}.seg-op-trigger{display:inline-grid;grid-template-columns:18px minmax(0,1fr) auto 14px;align-items:center;gap:7px;width:min(330px,42vw);min-height:34px;padding:5px 8px;border:1px solid color-mix(in oklch,var(--border) 76%,var(--accent));border-radius:7px;background:linear-gradient(180deg,color-mix(in oklch,var(--surface-3) 88%,var(--accent)),var(--surface-2));color:var(--text);cursor:pointer;box-shadow:0 1px color-mix(in oklch,white 7%,transparent) inset,0 6px 16px #0000002e;transition:transform var(--transition-fast),border-color var(--transition-normal),box-shadow var(--transition-normal),background-color var(--transition-normal)}.seg-op-trigger:hover:not(:disabled),.seg-op-trigger.is-open{border-color:color-mix(in oklch,var(--accent) 72%,var(--border));box-shadow:0 1px color-mix(in oklch,white 8%,transparent) inset,0 7px 18px #0003,0 0 0 3px color-mix(in oklch,var(--accent) 13%,transparent)}.seg-op-trigger:hover:not(:disabled){transform:translateY(-1px)}.seg-op-trigger:active:not(:disabled){transform:translateY(0) scale(.99)}.seg-op-trigger:focus-visible{outline:2px solid color-mix(in oklch,var(--accent) 72%,transparent);outline-offset:2px}.seg-op-trigger:disabled{cursor:default;opacity:.72}.seg-op-trigger-icon{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:5px;color:var(--accent);background:color-mix(in oklch,var(--accent) 14%,transparent)}.seg-op-trigger-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;font-size:12px;font-weight:650}.seg-op-chip{display:inline-flex;align-items:center;justify-content:center;min-width:38px;min-height:20px;padding:2px 7px;border-radius:5px;border:1px solid color-mix(in oklch,var(--accent) 40%,transparent);background:color-mix(in oklch,var(--accent) 12%,transparent);color:var(--accent);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:0}.seg-op-chevron{display:inline-flex;color:var(--text-dim);transform:rotate(90deg);transition:transform var(--transition-fast),color var(--transition-fast)}.seg-op-trigger.is-open .seg-op-chevron{color:var(--accent);transform:rotate(-90deg)}.seg-op-menu{position:fixed;z-index:3000;display:grid;gap:4px;padding:7px;border:1px solid color-mix(in oklch,var(--border-strong) 78%,var(--accent));border-radius:8px;background:linear-gradient(180deg,color-mix(in oklch,var(--surface) 94%,var(--accent)),var(--surface));color:var(--text);box-shadow:0 18px 42px #00000070,0 0 0 1px color-mix(in oklch,white 4%,transparent) inset;transform-origin:top right;animation:seg-menu-in .15s cubic-bezier(.2,.9,.25,1)}.seg-op-menu:focus{outline:none}.seg-op-option{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;min-height:38px;padding:6px 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-dim);cursor:pointer;text-align:left;transition:transform var(--transition-fast),color var(--transition-normal),background-color var(--transition-normal),border-color var(--transition-normal)}.seg-op-option:hover,.seg-op-option.is-active{color:var(--text);background:color-mix(in oklch,var(--accent) 9%,var(--surface-2));border-color:color-mix(in oklch,var(--accent) 20%,transparent)}.seg-op-option:hover{transform:translate(2px)}.seg-op-option:focus-visible{outline:2px solid color-mix(in oklch,var(--accent) 60%,transparent);outline-offset:1px}.seg-op-option.is-selected{color:var(--accent);background:linear-gradient(90deg,color-mix(in oklch,var(--accent) 18%,transparent),transparent),color-mix(in oklch,var(--accent) 7%,var(--surface-2));border-color:color-mix(in oklch,var(--accent) 38%,transparent)}.seg-op-option-check{width:18px;display:inline-flex;justify-content:center;color:var(--accent)}.seg-op-option-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0}.seg-op-option-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:650}.seg-op-option-meta{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:0;color:var(--text-faint)}.seg-op-option.is-selected .seg-op-option-meta{color:var(--accent)}.seg-tree-view .tree-svg{animation:seg-tree-refresh .24s ease-out}.seg-tree-view .tree-edge{animation:seg-edge-draw .32s ease-out both}.seg-tree-view .tree-node circle{transform-box:fill-box;transform-origin:center;animation:seg-node-pop .26s var(--spring-curve) both}.tree-node text.node-label{font-size:9px;font-weight:500;fill:var(--text-faint);dominant-baseline:auto;letter-spacing:0}.tree-node.dim{opacity:.3;transition:opacity var(--transition-normal)}.tree-edge{transition:stroke var(--transition-normal),stroke-width var(--transition-normal),opacity var(--transition-normal)}@keyframes seg-menu-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes seg-node-pop{0%{transform:scale(.92)}to{transform:scale(1)}}@keyframes seg-edge-draw{0%{stroke-dasharray:12 10;stroke-dashoffset:18}to{stroke-dasharray:0 0;stroke-dashoffset:0}}@keyframes seg-tree-refresh{0%{filter:saturate(.85)}to{filter:saturate(1)}}@media (max-width: 720px){.seg-tree-toolbar{align-items:flex-start;flex-direction:column}.seg-op-picker,.seg-op-trigger{width:100%}}@media (prefers-reduced-motion: reduce){.seg-op-menu,.seg-tree-view .tree-svg,.seg-tree-view .tree-edge,.seg-tree-view .tree-node{animation:none}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:200;display:flex;align-items:center;justify-content:center}.modal{position:relative;background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;padding:20px;width:520px;max-width:90vw;box-shadow:0 20px 60px #00000080}.modal h3{margin:0 0 4px;font-size:14px;font-weight:600}.modal .sub{font-size:12px;color:var(--text-dim);margin-bottom:14px}.modal .footer{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.file-import-loading{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.file-import-spinner{width:24px;height:24px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.cancel-import-btn{position:absolute;top:12px;right:12px;background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:6px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1)}.cancel-import-btn:hover{background:var(--surface-2);color:var(--text);transform:rotate(90deg)}.cancel-import-btn:active{transform:rotate(90deg) scale(.9)}.ctxmenu{position:fixed;background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;padding:4px;min-width:160px;z-index:100;box-shadow:0 10px 30px #0006}.ctxmenu button{display:flex;align-items:center;gap:8px;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:7px 10px;border-radius:4px;color:var(--text);text-align:left;font-size:12px;cursor:pointer}.ctxmenu button:hover{background:var(--surface-2)}.ctxmenu button.danger:hover{color:var(--danger)}.ctxmenu .sep{height:1px;background:var(--border);margin:4px 0}.canvas::-webkit-scrollbar,.insp-body::-webkit-scrollbar,.sb-list::-webkit-scrollbar{width:10px;height:10px}.canvas::-webkit-scrollbar-thumb,.insp-body::-webkit-scrollbar-thumb,.sb-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:5px;border:2px solid var(--surface);background-clip:content-box}.im-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);z-index:300;display:flex;align-items:center;justify-content:center;animation:im-fade-in .18s ease}@keyframes im-fade-in{0%{opacity:0}to{opacity:1}}.im-modal{position:relative;width:540px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid rgba(255,255,255,.09);border-radius:16px;overflow:hidden;box-shadow:0 1px #ffffff0f inset,0 24px 64px #0000008c,0 0 0 1px #0000004d;animation:im-slide-up .24s var(--spring-curve);display:flex;flex-direction:column}[data-theme=light] .im-modal{background:var(--surface);border:1px solid rgba(26,31,43,.1);box-shadow:0 1px #ffffffb3 inset,0 16px 48px #1a1f2b24}@keyframes im-slide-up{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.im-header{display:flex;align-items:center;gap:12px;padding:20px 20px 14px;border-bottom:1px solid var(--border)}.im-header-icon{width:36px;height:36px;border-radius:10px;background:color-mix(in oklch,var(--success) 12%,var(--surface-2));border:1px solid color-mix(in oklch,var(--success) 22%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--success);box-shadow:0 2px 8px color-mix(in oklch,var(--success) 12%,transparent)}.im-header-text{flex:1;min-width:0}.im-title{margin:0;font-size:14px;font-weight:700;color:var(--text);letter-spacing:-.01em}.im-kind{color:var(--success);font-weight:600}.im-struct-name{margin:2px 0 0;font-size:11px;color:var(--text-dim);font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.im-close{width:28px;height:28px;border-radius:8px;border:0;background:transparent;color:var(--text-faint);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all var(--transition-fast)}.im-close:hover{background:var(--surface-2);color:var(--text);transform:rotate(90deg) scale(1.1)}.im-hint-bar{display:flex;align-items:center;gap:7px;padding:8px 20px;background:color-mix(in oklch,var(--surface-2) 60%,transparent);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);font-family:var(--mono)}.im-hint-bar .ico{color:var(--text-faint);flex-shrink:0}.im-editor-wrap{display:flex;flex-direction:column;padding:16px 20px 12px}.im-editor{width:100%;min-height:160px;max-height:320px;resize:vertical;background:var(--surface-2);border:1.5px solid var(--border);border-radius:10px;padding:12px 14px;font-size:12.5px;line-height:1.65;font-family:var(--mono);color:var(--text);outline:none;box-sizing:border-box;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.im-editor::placeholder{color:var(--text-faint);opacity:.7}.im-editor:focus{border-color:var(--success);box-shadow:0 0 0 3px color-mix(in oklch,var(--success) 14%,transparent)}.im-editor.has-error{border-color:var(--danger, #e55);box-shadow:0 0 0 3px color-mix(in oklch,var(--danger, #e55) 14%,transparent)}.im-editor-footer{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.im-counter{font-size:10px;font-family:var(--mono);color:var(--text-faint)}.im-sample-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;font-size:10.5px;font-weight:600;color:var(--text-dim);cursor:pointer;transition:all var(--transition-fast)}.im-sample-btn .ico{color:var(--text-faint);transition:color var(--transition-fast)}.im-sample-btn:hover{background:var(--surface-3);border-color:var(--border-strong);color:var(--text)}.im-sample-btn:hover .ico{color:var(--accent)}.im-error{display:flex;align-items:flex-start;gap:7px;margin:0 20px 12px;padding:9px 12px;background:color-mix(in oklch,var(--danger, #e55) 10%,var(--surface-2));border:1px solid color-mix(in oklch,var(--danger, #e55) 25%,transparent);border-radius:8px;font-size:11.5px;color:var(--danger, #e55);font-family:var(--mono);animation:im-shake .3s var(--spring-curve)}.im-error .ico{flex-shrink:0;margin-top:1px}@keyframes im-shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.im-actions{display:flex;align-items:center;justify-content:space-between;padding:14px 20px 18px;border-top:1px solid var(--border);background:color-mix(in oklch,var(--surface-2) 40%,transparent)}.im-shortcut{font-size:10px;color:var(--text-faint);font-family:var(--mono)}.im-actions-right{display:flex;gap:8px}.im-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:8px 16px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all var(--transition-fast)}.im-btn:hover{background:var(--surface-3);border-color:var(--border-strong);transform:translateY(-1px)}.im-btn:active{transform:translateY(0) scale(.97)}.im-btn-primary{background:var(--success);border-color:var(--success);color:#fff;box-shadow:0 2px 10px color-mix(in oklch,var(--success) 30%,transparent)}.im-btn-primary:hover{background:color-mix(in oklch,var(--success),white 10%);border-color:color-mix(in oklch,var(--success),white 10%);box-shadow:0 4px 16px color-mix(in oklch,var(--success) 40%,transparent);transform:translateY(-1px)}.app:has(.algo-page){grid-template-columns:1fr;grid-template-areas:"main"}.algo-page{grid-area:main;display:flex;flex-direction:column;height:100%;overflow:hidden;background:linear-gradient(180deg,color-mix(in oklch,var(--surface) 76%,var(--bg)) 0%,var(--bg) 46%),var(--bg)}.algo-header{padding:16px 24px 12px;border-bottom:1px solid var(--border);background:color-mix(in oklch,var(--surface) 94%,var(--bg));display:flex;flex-direction:column;gap:10px;flex-shrink:0;box-shadow:0 8px 28px #0000001f}.algo-brand{display:flex;flex-direction:column;gap:4px}.algo-back{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-dim);display:inline-flex;align-items:center;gap:4px;padding:2px 0;cursor:pointer;font-size:12px;width:fit-content;transition:color .16s ease,transform .16s ease}.algo-back:hover{color:var(--accent);transform:translate(-2px)}.algo-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.algo-title{font-size:20px;font-weight:700;margin:0;letter-spacing:0}.algo-title-pill{color:var(--compare);background:color-mix(in oklch,var(--compare) 9%,var(--surface-2));border:1px solid color-mix(in oklch,var(--compare) 24%,var(--border));border-radius:999px;font-size:11px;font-family:var(--mono);padding:3px 8px}.algo-filter{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;padding-bottom:2px}.algo-filter-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);font-size:11.5px;padding:5px 10px;border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;align-items:center;gap:5px;position:relative;transition:transform .16s ease,background .16s ease,border-color .16s ease,color .16s ease}.algo-filter-chip:hover{background:var(--surface-3);color:var(--text);border-color:var(--border-strong);transform:translateY(-1px)}.algo-filter-chip.on{background:color-mix(in oklch,var(--accent),var(--surface-2) 80%);border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 1px color-mix(in oklch,var(--accent) 12%,transparent)}.algo-filter-chip .ico{width:12px;height:12px}.algo-body{flex:1;display:flex;min-height:0;overflow:hidden}.algo-catalog{width:340px;min-width:280px;border-right:1px solid var(--border);overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:20px;background:var(--surface)}.algo-cat-hd{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);padding-bottom:8px;border-bottom:1px solid var(--border)}.algo-cat-hd .ico{color:var(--text-faint)}.algo-cat-count{margin-left:auto;color:var(--compare);background:color-mix(in oklch,var(--compare) 8%,transparent);border:1px solid color-mix(in oklch,var(--compare) 16%,transparent);border-radius:999px;font-family:var(--mono);font-size:10px;letter-spacing:0;padding:2px 6px}.algo-cat-grid{display:flex;flex-direction:column;gap:4px;padding-top:8px}.algo-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:linear-gradient(90deg,color-mix(in oklch,var(--accent) 0%,transparent),transparent 42%),var(--surface-2);border-radius:var(--radius-sm);padding:10px 12px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:4px;position:relative;overflow:hidden;animation:catalogCardIn .28s ease both;animation-delay:calc(var(--card-index, 0) * 18ms);transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,transform .18s ease}.algo-card:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(180deg,var(--accent),var(--compare));opacity:0;transform:scaleY(.35);transform-origin:center;transition:opacity .18s ease,transform .18s ease}.algo-card:hover{background:linear-gradient(90deg,color-mix(in oklch,var(--accent) 8%,transparent),transparent 54%),var(--surface-3);border-color:var(--border-strong);box-shadow:0 10px 24px #00000029;transform:translate(4px)}.algo-card:hover:before,.algo-card.active:before{opacity:1;transform:scaleY(1)}.algo-card.active{background:color-mix(in oklch,var(--accent),var(--surface-2) 88%);border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in oklch,var(--accent) 16%,transparent)}.algo-card-name{font-size:13px;font-weight:600;color:var(--text)}.algo-card.active .algo-card-name{color:var(--accent)}.algo-card-meta{display:flex;align-items:center;gap:8px;font-size:11px;font-family:var(--mono)}.algo-complexity{color:var(--compare)}.algo-kind{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.algo-detail{flex:1;display:flex;flex-direction:row;overflow:hidden;padding:0;gap:0;min-width:0;background:var(--bg)}.algo-detail-main{flex:1.25;display:flex;flex-direction:column;overflow-y:auto;padding:24px;gap:16px;min-width:320px}.algo-detail-code-panel{flex:.75;display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--surface);min-width:300px;height:100%;overflow:hidden}.code-panel-header{height:40px;border-bottom:1px solid var(--border);background:var(--surface-2);display:flex;align-items:center;padding:0 16px;flex-shrink:0}.code-panel-tab{display:inline-flex;align-items:center;gap:6px;height:100%;border-bottom:2px solid transparent;color:var(--text-dim);font-size:12px;font-weight:600;padding:0 4px;cursor:default}.code-panel-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.code-panel-tab .ico{color:inherit}.code-panel-body{flex:1;overflow-y:auto;padding:16px 0;background:var(--surface);font-family:var(--mono);font-size:12px;line-height:1.6}.code-lines{display:flex;flex-direction:column}.code-line{display:flex;align-items:flex-start;padding:2px 16px;border-left:3px solid transparent;position:relative;transition:background .2s,border-left-color .2s;white-space:pre-wrap;word-break:normal;overflow-wrap:anywhere}.code-line-number{color:var(--text-faint);font-size:11px;text-align:right;width:24px;margin-right:16px;-webkit-user-select:none;user-select:none;flex-shrink:0}.code-line-content{color:var(--text-dim);flex:1}.code-line.active{background:color-mix(in oklch,var(--accent) 8%,transparent);border-left-color:var(--accent)}.code-line.active:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-left:2px solid var(--accent);box-shadow:0 0 8px var(--accent);opacity:.5;pointer-events:none;animation:lineGlowPulse 2s infinite ease-in-out}@keyframes lineGlowPulse{0%{opacity:.3}50%{opacity:.6}to{opacity:.3}}.syn-comment{color:var(--text-faint);font-style:italic}.syn-string{color:#10b981}.syn-number{color:#f59e0b}.syn-keyword{color:#ef4444;font-weight:600}.syn-function{color:#0ea5e9}.syn-variable{color:var(--text)}.syn-punctuation{color:var(--text-dim)}:root:not([data-theme=light]) .syn-string{color:#a7f3d0}:root:not([data-theme=light]) .syn-number{color:#fde047}:root:not([data-theme=light]) .syn-keyword{color:#fb7185}:root:not([data-theme=light]) .syn-function{color:#7dd3fc}.variables-panel{border-top:1px solid var(--border);background:var(--surface-2);display:flex;flex-direction:column;flex-shrink:0;max-height:180px}.variables-panel-header{height:36px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;padding:0 16px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);flex-shrink:0}.variables-panel-header .ico{color:var(--text-faint)}.variables-panel-body{padding:12px 16px;overflow-y:auto;flex:1}.variables-empty{font-size:12px;color:var(--text-faint);font-style:italic}.variables-grid{display:flex;flex-wrap:wrap;gap:8px}.variable-badge{display:inline-flex;align-items:center;background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);font-size:11.5px;overflow:hidden;box-shadow:0 1px 2px #0000000d;transition:all .2s ease}.variable-badge:hover{border-color:var(--accent);box-shadow:0 2px 4px color-mix(in oklch,var(--accent) 10%,transparent)}.variable-name{padding:3px 6px;background:color-mix(in oklch,var(--accent) 6%,var(--surface-3));color:var(--accent);font-weight:600;border-right:1px solid var(--border)}.variable-value{padding:3px 8px;color:var(--text);font-weight:500}@media (max-width: 900px){.algo-detail{flex-direction:column;overflow-y:auto}.algo-detail-main{flex:none;overflow-y:visible}.algo-detail-code-panel{flex:none;border-left:0;border-top:1px solid var(--border);height:auto;overflow:visible}.code-panel-body{max-height:350px}}.algo-detail-header h2{margin:0;font-size:18px;font-weight:700;letter-spacing:0}.algo-detail-complexity{display:flex;gap:16px;font-size:12px;font-family:var(--mono);color:var(--text-dim);margin-top:4px}.algo-detail-complexity b{color:var(--compare);font-weight:600}.algo-detail-desc{margin:0;font-size:13px;color:var(--text-dim);line-height:1.5;max-width:600px}.algo-detail-viz{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;min-height:300px;display:flex;align-items:center;justify-content:center;overflow:auto}.algo-detail-viz .arr{justify-content:center}.algo-preview{width:100%;min-width:max-content;display:flex;align-items:center;justify-content:center}.algo-preview-graph,.algo-preview-digraph,.algo-preview-tree,.algo-preview-trie,.algo-preview-coordinateplane{min-width:520px;min-height:280px}.algo-preview-graph>*,.algo-preview-digraph>*,.algo-preview-tree>*,.algo-preview-trie>*,.algo-preview-coordinateplane>*{width:100%;min-height:280px}.algo-detail-msg{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12.5px;font-family:var(--mono);min-height:38px}.algo-msg-text{color:var(--text)}.algo-msg-step{color:var(--text-faint);white-space:nowrap;margin-left:12px}.algo-detail-controls{display:flex;flex-direction:column;gap:10px}.algo-data-panel{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.algo-data-title{font-size:12px;font-weight:650;color:var(--text)}.algo-field{display:flex;align-items:center;gap:8px}.algo-field.wide{align-items:flex-start;flex-direction:column;gap:5px}.algo-field.compact{max-width:160px}.algo-field span,.algo-check span{font-size:12px;color:var(--text-dim)}.algo-field input,.algo-field textarea{width:100%;padding:7px 9px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-family:var(--mono);font-size:12px;outline:none}.algo-field input:focus,.algo-field textarea:focus{border-color:var(--accent)}.algo-field textarea{resize:vertical;min-height:72px}.algo-graph-options{display:flex;gap:14px;flex-wrap:wrap}.algo-check{display:inline-flex;align-items:center;gap:6px}.algo-check input{accent-color:var(--accent)}.algo-input-error{color:var(--danger);font-size:12px}.algo-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.algo-run-btn{min-width:100px}.algo-param{display:flex;align-items:center;gap:8px}.algo-param label{font-size:12px;color:var(--text-dim);white-space:nowrap}.algo-param input{flex:1;padding:6px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);font-family:var(--mono);font-size:12px;outline:none;max-width:200px}.algo-param input:focus{border-color:var(--accent)}.algo-playback-bar{display:flex;align-items:center;gap:4px;padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.algo-playback-bar .pb-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--surface-2);color:var(--text-dim);width:32px;height:32px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .16s ease,background .16s ease,color .16s ease}.algo-playback-bar .pb-btn:hover{background:var(--surface-3);color:var(--text);transform:translateY(-1px)}.algo-playback-bar .pb-btn.primary{background:var(--accent);color:var(--accent-ink)}.algo-playback-bar .pb-btn.primary:hover{filter:brightness(1.1)}.algo-speed{display:flex;gap:2px;margin-left:auto;margin-right:8px}.algo-speed button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-faint);font-family:var(--mono);font-size:10.5px;padding:4px 6px;border-radius:3px;cursor:pointer}.algo-speed button:hover{background:var(--surface-2);color:var(--text)}.algo-speed button.on{color:var(--accent);background:color-mix(in oklch,var(--accent),transparent 88%)}.algo-edit-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.algo-edit-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;min-width:360px;max-width:500px;display:flex;flex-direction:column;gap:12px}.algo-edit-label{font-size:13px;font-weight:600;color:var(--text)}.algo-edit-box textarea{width:100%;min-height:120px;padding:10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);font-size:12px;resize:vertical;outline:none}.algo-edit-box textarea:focus{border-color:var(--accent)}.algo-edit-actions{display:flex;gap:8px}.algo-dashboard{flex:1;overflow-y:auto;padding:48px;background:linear-gradient(135deg,color-mix(in oklch,var(--surface) 86%,var(--bg)) 0%,var(--bg) 70%),var(--bg)}.algo-dashboard-shell{width:min(920px,100%);margin:0 auto;display:flex;flex-direction:column;align-items:center}.algo-dashboard-hero{width:100%;display:grid;grid-template-columns:minmax(280px,1fr) minmax(280px,.92fr);align-items:center;gap:36px;margin-bottom:28px}.algo-dashboard-copy{min-width:0}.algo-eyebrow{display:inline-flex;align-items:center;color:var(--compare);font-family:var(--mono);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px}.algo-dashboard-hero h2{font-size:28px;font-weight:700;margin:0 0 12px;color:var(--text);letter-spacing:0}.algo-dashboard-hero p{font-size:14.5px;color:var(--text-dim);line-height:1.5;margin:0;max-width:430px}.algo-demo{width:100%;min-height:260px;border:1px solid color-mix(in oklch,var(--border) 82%,var(--accent));border-radius:var(--radius);background:linear-gradient(180deg,color-mix(in oklch,var(--surface-2) 92%,var(--bg)),var(--surface));box-shadow:0 24px 60px #00000038;overflow:hidden;position:relative;animation:demoRise .52s ease both}.algo-demo:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,color-mix(in oklch,var(--accent) 6%,transparent),transparent);transform:translate(-100%);animation:demoSweep 4.8s ease-in-out infinite;pointer-events:none}.algo-demo-header{height:34px;display:flex;align-items:center;gap:7px;padding:0 14px;border-bottom:1px solid var(--border);background:color-mix(in oklch,var(--surface-3) 46%,transparent)}.algo-demo-dot{width:7px;height:7px;border-radius:50%;background:var(--text-faint);opacity:.58}.algo-demo-dot.active{background:var(--accent);opacity:1;box-shadow:0 0 14px color-mix(in oklch,var(--accent) 52%,transparent)}.algo-demo-body{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:22px;min-height:178px}.algo-demo-bars,.algo-demo-graph{min-height:142px;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--surface) 74%,var(--bg));position:relative}.algo-demo-bars{display:flex;align-items:flex-end;justify-content:center;gap:8px;padding:16px 14px}.algo-demo-bar{width:13px;height:var(--bar-height);min-height:22px;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,var(--accent),color-mix(in oklch,var(--compare) 76%,var(--accent)));box-shadow:0 0 18px color-mix(in oklch,var(--compare) 14%,transparent);transform-origin:bottom;animation:barDance 2.8s ease-in-out infinite;animation-delay:calc(var(--bar-index, 0) * -.18s)}.algo-demo-graph{overflow:hidden}.algo-demo-edge{position:absolute;height:2px;border-radius:99px;background:color-mix(in oklch,var(--compare) 52%,var(--border));transform-origin:left center;opacity:.72}.edge-ab{width:62px;left:25%;top:48%;transform:rotate(-58deg)}.edge-bc{width:68px;left:42%;top:34%;transform:rotate(58deg)}.edge-cd{width:58px;left:63%;top:58%;transform:rotate(-50deg)}.edge-ac{width:76px;left:21%;top:68%;transform:rotate(2deg)}.algo-demo-node{position:absolute;left:var(--node-x);top:var(--node-y);width:28px;height:28px;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--surface-3);border:1px solid color-mix(in oklch,var(--accent) 34%,var(--border));color:var(--text);font-family:var(--mono);font-size:11px;font-weight:700;animation:nodePing 2.6s ease-in-out infinite;animation-delay:calc(var(--node-index, 0) * .26s)}.algo-demo-timeline{display:grid;grid-template-columns:1.1fr .7fr 1.5fr .9fr;gap:8px;padding:0 22px 22px}.algo-demo-timeline span{height:6px;border-radius:999px;background:var(--surface-3);position:relative;overflow:hidden}.algo-demo-timeline span:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,var(--accent),var(--compare));transform:scaleX(0);transform-origin:left;animation:timelineFill 3.2s ease-in-out infinite}.algo-demo-timeline span:nth-child(2):after{animation-delay:.2s}.algo-demo-timeline span:nth-child(3):after{animation-delay:.4s}.algo-demo-timeline span:nth-child(4):after{animation-delay:.6s}.algo-dashboard-search-wrap{position:relative;display:flex;align-items:center;width:100%;max-width:620px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:0 16px;height:54px;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease;margin-bottom:34px;box-shadow:0 12px 30px #00000024}.algo-dashboard-search-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 15%,transparent);background:var(--surface);transform:translateY(-1px)}.dash-search-icon{color:var(--text-faint);flex-shrink:0;margin-right:12px;pointer-events:none}.dash-search-input{flex:1;border:0;background:transparent;color:var(--text);font-size:15px;height:100%;outline:none}.dash-search-input::placeholder{color:var(--text-faint)}.dash-search-clear{border:0;background:transparent;color:var(--text-faint);display:flex;align-items:center;justify-content:center;padding:6px;cursor:pointer;border-radius:var(--radius-sm);transition:var(--transition-fast)}.dash-search-clear:hover{background:var(--surface-3);color:var(--text)}.algo-dashboard-quick{width:100%;max-width:760px}.algo-dashboard-quick h3{font-size:14px;font-weight:650;color:var(--text-faint);text-transform:uppercase;letter-spacing:.08em;margin:0 0 16px;text-align:center}.algo-dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.algo-dash-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid color-mix(in oklch,var(--border) 88%,var(--compare));background:linear-gradient(180deg,color-mix(in oklch,var(--surface-2) 94%,var(--compare)),var(--surface-2));border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;align-items:flex-start;gap:9px;cursor:pointer;transition:transform .2s ease,background .2s ease,border-color .2s ease,box-shadow .2s ease;text-align:left;min-height:136px;animation:dashboardCardIn .38s ease both;animation-delay:calc(var(--dash-index, 0) * 50ms)}.algo-dash-card:hover{background:linear-gradient(180deg,color-mix(in oklch,var(--surface-3) 88%,var(--accent)),var(--surface-3));border-color:color-mix(in oklch,var(--accent) 52%,var(--border-strong));box-shadow:0 18px 32px #0000002e;transform:translateY(-4px)}.dash-card-top{width:100%;display:flex;align-items:center;justify-content:space-between}.dash-card-icon{color:var(--text-dim);transition:color .2s ease,transform .2s ease}.algo-dash-card:hover .dash-card-icon{color:var(--accent);transform:translateY(-1px) scale(1.05)}.dash-card-title{font-size:14px;font-weight:600;color:var(--text)}.dash-card-count{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 8px;border-radius:999px;color:var(--compare);background:color-mix(in oklch,var(--compare) 8%,transparent);border:1px solid color-mix(in oklch,var(--compare) 18%,transparent);font-family:var(--mono);font-size:11px;font-weight:700}.dash-card-desc{color:var(--text-dim);font-size:12px;line-height:1.35}.algo-page .btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);padding:7px 14px;border-radius:var(--radius-sm);font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:transform .16s ease,background .16s ease,border-color .16s ease,color .16s ease}.algo-page .btn:hover{background:var(--surface-3);color:var(--text);transform:translateY(-1px)}.algo-page .btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.algo-page .btn-primary:hover{filter:brightness(1.1)}.algo-page .btn-accent{border-color:color-mix(in oklch,var(--compare) 42%,var(--border));color:var(--compare);background:color-mix(in oklch,var(--compare) 8%,var(--surface-2))}.algo-page .btn-accent:hover{border-color:var(--compare);color:var(--text)}.algo-header-top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.algo-search-container{position:relative;display:flex;align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 10px;width:260px;transition:var(--transition-fast)}.algo-search-container:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in oklch,var(--accent) 15%,transparent)}.algo-search-icon{color:var(--text-faint);flex-shrink:0;margin-right:8px;pointer-events:none}.algo-search-input{border:0;background:transparent;color:var(--text);font-size:12px;padding:6px 0;width:100%;outline:none}.algo-search-clear{border:0;background:transparent;color:var(--text-faint);display:flex;align-items:center;justify-content:center;padding:4px;margin-right:-4px;cursor:pointer;border-radius:4px;transition:var(--transition-fast)}.algo-search-clear:hover{background:var(--surface-3);color:var(--text);transform:scale(1.05)}.algo-search-clear:active{transform:scale(.95)}.algo-search-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px 16px;background:var(--surface-2);border:1px dashed var(--border);border-radius:var(--radius);margin:16px 0;width:100%}.algo-search-empty .empty-icon{color:var(--text-faint);margin-bottom:12px}.algo-search-empty h3{font-size:14px;font-weight:600;margin:0 0 6px;color:var(--text)}.algo-search-empty p{font-size:12px;color:var(--text-dim);margin:0 0 16px}.algo-search-empty .btn{background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent)}.algo-search-empty .btn:hover{filter:brightness(1.1)}@keyframes catalogCardIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes dashboardCardIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes demoRise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes demoSweep{0%,45%{transform:translate(-100%)}72%,to{transform:translate(100%)}}@keyframes barDance{0%,to{transform:scaleY(.72);filter:saturate(.9)}42%{transform:scaleY(1);filter:saturate(1.2)}66%{transform:scaleY(.84)}}@keyframes nodePing{0%,to{border-color:color-mix(in oklch,var(--accent) 34%,var(--border));box-shadow:0 0 color-mix(in oklch,var(--accent) 0%,transparent)}46%{border-color:var(--compare);box-shadow:0 0 0 5px color-mix(in oklch,var(--compare) 14%,transparent)}}@keyframes timelineFill{0%,12%{transform:scaleX(0);opacity:.8}48%,72%{transform:scaleX(1);opacity:1}to{transform:scaleX(0);opacity:.65;transform-origin:right}}@media (max-width: 1100px){.algo-dashboard{padding:32px}.algo-dashboard-hero{grid-template-columns:1fr;gap:22px}.algo-dashboard-copy{text-align:center}.algo-dashboard-hero p{margin:0 auto}}@media (max-width: 760px){.algo-header{padding:14px 16px 10px}.algo-search-container{width:100%}.algo-body{flex-direction:column}.algo-catalog{width:100%;min-width:0;max-height:36vh;border-right:0;border-bottom:1px solid var(--border)}.algo-dashboard{padding:24px 16px}.algo-demo-body,.algo-dashboard-grid{grid-template-columns:1fr}.algo-dashboard-hero h2{font-size:24px}}@media (prefers-reduced-motion: reduce){.algo-page *,.algo-page *:before,.algo-page *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}.cmd-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;background:#00000073;backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;animation:cmd-fade-in .14s ease}[data-theme=light] .cmd-backdrop{background:#1a1f2b52}@keyframes cmd-fade-in{0%{opacity:0}to{opacity:1}}.cmd-card{width:420px;max-width:calc(100vw - 24px);max-height:min(560px,70vh);display:flex;flex-direction:column;background:color-mix(in oklch,var(--surface) 92%,transparent);border:1px solid var(--border-strong);border-radius:14px;overflow:hidden;box-shadow:0 1px #ffffff0d inset,0 24px 64px #0000008c,0 0 0 1px #0003;backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);animation:cmd-pop .18s var(--spring-curve);font-family:var(--sans)}[data-theme=light] .cmd-card{background:color-mix(in oklch,var(--surface) 94%,transparent);border:1px solid var(--border-strong);box-shadow:0 1px #fffc inset,0 16px 48px #1a1f2b2e}@keyframes cmd-pop{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.cmd-card.cmd-anchored{position:fixed;z-index:410}.cmd-card.cmd-centered{position:relative}.cmd-search{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border);background:color-mix(in oklch,var(--surface-2) 30%,transparent)}.cmd-search .ico{color:var(--text-faint);flex-shrink:0}.cmd-input{flex:1;min-width:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;outline:none;color:var(--text);font-size:14px;font-weight:500;letter-spacing:-.005em}.cmd-input::placeholder{color:var(--text-faint);font-weight:400}.cmd-trigger-tag{flex-shrink:0;padding:3px 8px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--text-dim);background:var(--surface-2);border:1px solid var(--border);border-radius:6px}.cmd-list{overflow-y:auto;flex:1;padding:6px 6px 8px;scroll-padding-block:32px}.cmd-group+.cmd-group{margin-top:4px}.cmd-group-label{padding:10px 12px 4px;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.cmd-empty{padding:28px 16px;text-align:center;color:var(--text-dim);font-size:12.5px;font-family:var(--mono)}.cmd-row{display:flex;align-items:center;gap:12px;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:8px 10px;border-radius:8px;color:var(--text);text-align:left;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast)}.cmd-row:focus{outline:none}.cmd-row.is-active{background:color-mix(in oklch,var(--accent) 14%,transparent);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--accent) 30%,transparent)}.cmd-row.is-active .cmd-row-icon{background:color-mix(in oklch,var(--accent) 22%,var(--surface-2));border-color:color-mix(in oklch,var(--accent) 40%,transparent);color:var(--accent)}.cmd-row-icon{flex-shrink:0;width:32px;height:32px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-dim);transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.cmd-row-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.cmd-row-title{font-size:13px;font-weight:600;color:var(--text);letter-spacing:-.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmd-row-desc{font-size:11.5px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmd-row-group{flex-shrink:0;font-size:10px;font-weight:600;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border)}.cmd-footer{display:flex;align-items:center;gap:12px;padding:8px 12px;border-top:1px solid var(--border);background:color-mix(in oklch,var(--surface-2) 40%,transparent);font-size:10.5px;color:var(--text-faint)}.cmd-spacer{flex:1}.cmd-hint{display:inline-flex;align-items:center;gap:4px}.cmd-hint kbd{display:inline-flex;align-items:center;justify-content:center;min-width:16px;padding:1px 5px;font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text-dim);background:var(--surface-2);border:1px solid var(--border);border-bottom-width:2px;border-radius:4px}.cmd-hint-faint{color:var(--text-faint);font-family:var(--mono)}.cmd-list::-webkit-scrollbar{width:8px}.cmd-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px;border:2px solid transparent;background-clip:content-box}
