:root{--bg-base:#f8f9fc;--bg-card:#fff;--bg-card-hover:#f8fafc;--border:#e2e8f0;--border-focus:#6366f1;--accent:#6366f1;--accent-hover:#4f46e5;--accent-subtle:#eef2ff;--accent-2:#0891b2;--accent-2-hover:#0e7490;--text-primary:#0f172a;--text-secondary:#64748b;--text-disabled:#94a3b8;--text-on-accent:#fff;--error:#ef4444;--error-subtle:#fef2f2;--success:#10b981;--success-subtle:#f0fdf4;--warning:#f59e0b;--warning-subtle:#fffbeb;--shadow-sm:0 1px 2px #0000000d;--shadow:0 1px 3px #00000014, 0 1px 2px #0000000a;--shadow-md:0 4px 6px #00000012, 0 2px 4px #0000000d;--radius-sm:4px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--transition-fast:background .15s ease, color .15s ease, border-color .15s ease;--transition-theme:background .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease}[data-theme=dark]{--bg-base:#0f1117;--bg-card:#1a1d27;--bg-card-hover:#1e2130;--border:#2a2d3a;--border-focus:#818cf8;--accent:#6366f1;--accent-hover:#818cf8;--accent-subtle:#1e1b4b;--accent-2:#22d3ee;--accent-2-hover:#67e8f9;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-disabled:#475569;--text-on-accent:#fff;--error:#f87171;--error-subtle:#1f1315;--success:#34d399;--success-subtle:#052e16;--warning:#fbbf24;--warning-subtle:#1c1300;--shadow-sm:0 1px 2px #0000004d;--shadow:0 1px 3px #0006, 0 1px 2px #0000004d;--shadow-md:0 4px 6px #0006, 0 2px 4px #0000004d}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-sans);color:var(--text-primary);background-color:var(--bg-base);transition:var(--transition-theme);min-height:100vh;font-size:.9375rem;line-height:1.6}img,svg{max-width:100%;display:block}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-error{color:var(--error)}.text-success{color:var(--success)}.text-accent{color:var(--accent)}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:.8125rem}.text-base{font-size:.9375rem}.text-lg{font-size:1.0625rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.w-full{width:100%}.h-full{height:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm);transition:var(--transition-theme)}.card-sm{padding:var(--space-4)}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius);cursor:pointer;transition:var(--transition-fast);white-space:nowrap;border:1px solid #0000;padding:.5rem 1rem;font-size:.875rem;font-weight:500;line-height:1.4;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--text-on-accent);border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--bg-card);color:var(--text-primary);border-color:var(--border)}.btn-secondary:hover:not(:disabled){background:var(--bg-card-hover);border-color:var(--accent);color:var(--accent)}.btn-ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--accent-subtle);color:var(--accent)}.btn-danger{background:var(--error);color:#fff;border-color:var(--error)}.btn-danger:hover:not(:disabled){opacity:.85}.btn-sm{padding:.375rem .75rem;font-size:.8125rem}.btn-lg{padding:.625rem 1.25rem;font-size:1rem}.btn-icon{border-radius:var(--radius);padding:.5rem}.form-group{gap:var(--space-1);flex-direction:column;display:flex}.form-label{color:var(--text-secondary);font-size:.8125rem;font-weight:500}.form-input,.form-select,.form-textarea{width:100%;font-size:.9375rem;font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:var(--transition-fast);outline:none;padding:.5rem .75rem}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 15%, transparent)}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-disabled)}.form-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;padding-right:2.25rem}.form-textarea{resize:vertical;min-height:120px;font-family:var(--font-mono);font-size:.875rem;line-height:1.6}.form-hint{color:var(--text-secondary);font-size:.8125rem}.form-error{color:var(--error);font-size:.8125rem}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}input[type=number]{-moz-appearance:textfield}.toggle{align-items:center;gap:var(--space-2);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.toggle-track{background:var(--border);border-radius:10px;flex-shrink:0;width:36px;height:20px;transition:background .2s;position:relative}.toggle-track.active{background:var(--accent)}.toggle-thumb{width:16px;height:16px;box-shadow:var(--shadow-sm);background:#fff;border-radius:50%;transition:transform .2s;position:absolute;top:2px;left:2px}.toggle-track.active .toggle-thumb{transform:translate(16px)}.tabs{border-bottom:1px solid var(--border);gap:0;display:flex}.tab-btn{color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.5rem 1rem;font-size:.875rem;font-weight:500}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.badge{border-radius:var(--radius-sm);letter-spacing:.02em;align-items:center;padding:.125rem .5rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-1d{background:var(--accent-subtle);color:var(--accent)}.badge-2d{background:color-mix(in srgb, var(--accent-2) 15%, transparent);color:var(--accent-2)}.alert{align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius);font-size:.875rem;line-height:1.5;display:flex}.alert-warning{background:var(--warning-subtle);color:var(--warning);border:1px solid color-mix(in srgb, var(--warning) 30%, transparent)}.alert-error{background:var(--error-subtle);color:var(--error);border:1px solid color-mix(in srgb, var(--error) 30%, transparent)}.alert-success{background:var(--success-subtle);color:var(--success);border:1px solid color-mix(in srgb, var(--success) 30%, transparent)}.divider{border:none;border-top:1px solid var(--border);margin:var(--space-4) 0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-disabled)}@keyframes spin{to{transform:rotate(360deg)}}.app-layout{flex-direction:column;min-height:100vh;display:flex}.app-main{width:100%;max-width:1200px;padding:var(--space-6) var(--space-4);flex:1;margin:0 auto}.app-grid{gap:var(--space-4);grid-template-columns:280px 1fr;align-items:start;display:grid}@media (width<=640px){.app-main{padding:var(--space-4) var(--space-3)}.app-grid{grid-template-columns:1fr}.app-grid-left,.app-grid-right{display:contents}.app-grid-left>:first-child{order:1}.app-grid-right>:first-child,.app-grid-right>:nth-child(2){order:2}.app-grid-left>:last-child{order:3}}
