:root{--font-main: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-serif: "Georgia", "Times New Roman", serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #f1f5f9;--bg-elevated: #ffffff;--bg-dark: #0f172a;--bg-dark-secondary: #1e293b;--bg-dark-muted: #334155;--text-main: #0f172a;--text-secondary: #334155;--text-muted: #64748b;--text-light: #94a3b8;--border-light: #e2e8f0;--border-strong: #cbd5e1;--border-focus: #3b82f6;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-gradient: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);--primary-light: #eff6ff;--primary-border: #bfdbfe;--primary-focus: rgba(37, 99, 235, .2);--accent: #6366f1;--accent-light: #eef2ff;--success: #10b981;--success-dark: #059669;--success-light: #ecfdf5;--success-border: #a7f3d0;--danger: #ef4444;--danger-hover: #dc2626;--danger-light: #fef2f2;--danger-border: #fecaca;--warning: #f59e0b;--warning-light: #fffbeb;--topbar-height: 56px;--toolbar-left-width: 68px;--sidebar-right-width: 360px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 14px -2px rgba(15, 23, 42, .08), 0 2px 6px -1px rgba(15, 23, 42, .04);--shadow-lg: 0 12px 28px -4px rgba(15, 23, 42, .12), 0 4px 10px -2px rgba(15, 23, 42, .04);--shadow-xl: 0 22px 36px -6px rgba(15, 23, 42, .16), 0 8px 16px -4px rgba(15, 23, 42, .06);--shadow-glow: 0 0 16px rgba(37, 99, 235, .25);--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}html,body{width:100%;height:100%;overflow:hidden;font-family:var(--font-main);background-color:var(--bg-secondary);color:var(--text-main);touch-action:none;-webkit-touch-callout:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.app-root{display:flex;flex-direction:column;width:100vw;height:100vh;overflow:hidden;background:var(--bg-secondary)}.topbar{height:var(--topbar-height);background:#fffffff2;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;padding:0 14px;gap:12px;z-index:100;box-shadow:0 1px 3px #0f172a08}.topbar-left,.topbar-center,.topbar-right{display:flex;align-items:center;gap:8px}.brand-logo{display:flex;align-items:center;gap:8px;font-weight:800;font-size:1.15rem;letter-spacing:-.02em;color:var(--text-main);cursor:default;padding:4px 6px;border-radius:var(--radius-sm);transition:opacity var(--transition-fast)}.brand-text{font-weight:800;color:#1e293b;display:inline-flex;align-items:center;gap:4px}.brand-sub{font-weight:700;font-size:.65rem;letter-spacing:.05em;background:var(--primary-gradient);color:#fff;padding:2px 6px;border-radius:6px;box-shadow:0 2px 6px #2563eb4d}.divider-v{width:1px;height:24px;background:var(--border-light);margin:0 4px}.divider-h{width:80%;height:1px;background:var(--border-light);margin:6px auto}.slide-nav{display:flex;align-items:center;background:var(--bg-tertiary);border:1px solid var(--border-light);border-radius:var(--radius-full);padding:2px 4px;gap:2px;box-shadow:inset 0 1px 2px #00000005}.slide-counter{font-size:.8rem;font-family:var(--font-mono);font-weight:600;min-width:48px;text-align:center;color:var(--text-secondary);padding:0 4px}.styled-select{background-color:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:6px 12px;font-size:.825rem;font-weight:600;color:var(--text-main);cursor:pointer;outline:none;transition:all var(--transition-fast);box-shadow:var(--shadow-xs)}.styled-select:hover{border-color:#94a3b8;background-color:#fff}.styled-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-focus)}.select-subject{background:#f0fdf4;color:#166534;border-color:#bbf7d0;font-weight:700;box-shadow:0 1px 3px #16653414}.select-subject:hover{background:#dcfce7;border-color:#86efac}.ruling-selector-wrap{display:flex;align-items:center;gap:6px}.ruling-label{font-size:.78rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.ruling-scale-box{display:flex;align-items:center;background:var(--bg-tertiary);border:1px solid var(--border-light);padding:4px 10px;border-radius:var(--radius-full);gap:6px}.ruling-scale-box input[type=range]{width:64px;height:4px;accent-color:var(--primary);cursor:pointer}.scale-val{font-size:.75rem;font-family:var(--font-mono);font-weight:600;min-width:32px;color:var(--text-muted)}.btn-icon{width:38px;height:38px;border-radius:var(--radius-md);background:transparent;border:1px solid transparent;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);position:relative}.btn-icon svg{width:20px;height:20px;fill:currentColor}.btn-icon:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-main);border-color:var(--border-light)}.btn-icon:active:not(:disabled){transform:scale(.94)}.btn-icon:disabled{opacity:.3;cursor:not-allowed}.btn-icon-sm{width:30px;height:30px;border-radius:var(--radius-full);background:transparent;border:none;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all var(--transition-fast)}.btn-icon-sm:hover{background:#e2e8f0;color:var(--text-main)}.btn-icon-sm.btn-accent{background:var(--primary-gradient);color:#fff;font-size:1.1rem;box-shadow:0 2px 6px #2563eb40}.btn-icon-sm.btn-accent:hover{transform:scale(1.05);box-shadow:0 3px 8px #2563eb59}.btn-icon-sm.btn-delete-slide{color:#dc2626;font-size:1.25rem;font-weight:800;line-height:1}.btn-icon-sm.btn-delete-slide:hover{background:#fee2e2;color:#991b1b;transform:scale(1.08)}.btn-chip{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-full);background:var(--bg-tertiary);border:1px solid var(--border-light);font-size:.8rem;font-weight:700;cursor:pointer;color:var(--text-muted);transition:all var(--transition-fast)}.btn-chip .chip-dot{width:8px;height:8px;border-radius:50%;background:#94a3b8;transition:all var(--transition-fast)}.btn-chip.active{background:var(--success-light);border-color:var(--success-border);color:var(--success-dark);box-shadow:0 2px 6px #10b98126}.btn-chip.active .chip-dot{background:var(--success);box-shadow:0 0 8px var(--success)}.btn-active-indicator{background:var(--primary-light);color:var(--primary);border-color:var(--primary-border)}.dropdown-wrap,.dropdown-wrap-side{position:relative}.dropdown-menu{position:absolute;top:calc(100% + 4px);right:0;background:#fffffffa;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);min-width:270px;display:none;flex-direction:column;padding:6px;z-index:1000;animation:fadeInDown .15s ease-out}.dropdown-menu:before{content:"";position:absolute;top:-12px;left:0;right:0;height:14px;background:transparent;pointer-events:auto}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.dropdown-wrap:hover .dropdown-menu,.dropdown-wrap.open .dropdown-menu,.dropdown-menu.show{display:flex!important}.dropdown-item{background:none;border:none;text-align:left;padding:10px 14px;font-size:.85rem;font-weight:500;border-radius:var(--radius-sm);color:var(--text-main);cursor:pointer;display:flex;align-items:center;gap:10px;transition:all var(--transition-fast);width:100%}.dropdown-item:hover{background:var(--primary-light);color:var(--primary);font-weight:600}.dropdown-divider{height:1px;background:var(--border-light);margin:4px 0}.file-label{cursor:pointer}.toast-container{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:10000;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast-notification{background:#0f172a;color:#fff;padding:10px 18px;border-radius:var(--radius-full);font-size:.85rem;font-weight:600;box-shadow:var(--shadow-xl);display:flex;align-items:center;gap:10px;animation:toastSlideUp .25s cubic-bezier(.16,1,.3,1);transition:opacity .3s ease,transform .3s ease;pointer-events:auto}.toast-notification.toast-success{background:#065f46;border:1px solid #10b981}.toast-notification.toast-error{background:#991b1b;border:1px solid #ef4444}@keyframes toastSlideUp{0%{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.workspace{display:flex;flex:1;position:relative;overflow:hidden;height:calc(100vh - var(--topbar-height));background:#f8fafc}.toolbar-left{width:var(--toolbar-left-width);background:#fffffff2;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-right:1px solid var(--border-light);display:flex;flex-direction:column;align-items:center;padding:10px 8px;gap:6px;z-index:70;overflow:visible;box-shadow:1px 0 4px #0f172a05;transition:transform var(--transition-normal)}.toolbar-left.collapsed{transform:translate(-100%);position:absolute}.tool-section{display:flex;flex-direction:column;gap:6px;width:100%;align-items:center;position:relative}.dropdown-wrap-side{position:relative;width:100%;display:flex;justify-content:center}.tool-btn{width:48px;height:48px;border-radius:var(--radius-md);background:#fff;border:1px solid var(--border-light);display:flex;align-items:center;justify-content:center;color:var(--text-secondary);cursor:pointer;position:relative;transition:all var(--transition-fast);box-shadow:var(--shadow-xs)}.mode-switch-container{display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;padding-bottom:6px;border-bottom:1px solid var(--border-light);margin-bottom:4px}.mode-switch-label{font-size:8.5px;font-weight:800;text-transform:uppercase;color:var(--text-muted);letter-spacing:.04em}.mode-toggle-switch{position:relative;display:flex;background:#f1f5f9;border:1.5px solid #cbd5e1;border-radius:18px;padding:2px;width:52px;box-shadow:inset 0 1px 2px #0000000f;-webkit-user-select:none;user-select:none;cursor:pointer}.mode-toggle-btn{flex:1;position:relative;z-index:2;border:none;background:transparent;padding:3px 0;font-size:8px;font-weight:800;color:#64748b;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;transition:color .15s ease}.mode-toggle-btn .mode-icon{font-size:11px;line-height:1.1}.mode-toggle-btn .mode-text{font-size:7.5px;letter-spacing:-.02em}.mode-toggle-btn.active{color:#1d4ed8}.mode-toggle-btn.mode-raster-btn.active{color:#b45309}.mode-toggle-slider{position:absolute;top:2px;left:2px;width:calc(50% - 2px);height:calc(100% - 4px);background:#fff;border-radius:14px;box-shadow:0 1.5px 4px #00000026;transition:transform .2s cubic-bezier(.4,0,.2,1),background-color .2s ease;z-index:1}.mode-toggle-switch.is-raster .mode-toggle-slider{transform:translate(100%);background:#fef08a}.tool-btn svg{width:22px;height:22px;fill:currentColor;transition:transform var(--transition-fast)}.tool-btn:hover{background:var(--bg-tertiary);color:var(--primary);border-color:var(--border-strong);transform:translateY(-1px)}.tool-btn:active{transform:scale(.95)}.tool-btn.active{background:var(--primary-gradient);color:#fff;border-color:transparent;box-shadow:0 4px 14px #2563eb59}.tool-btn.active svg{fill:#fff}.shapes-palette{position:absolute;left:calc(100% + 10px);top:-8px;background:#fff;border:1.5px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:0 12px 32px #0f172a2e,0 4px 12px #0f172a14;padding:12px;display:none;flex-direction:column;gap:8px;z-index:300;width:250px;animation:fadeInRight .15s ease-out}.shapes-palette:before{content:"";position:absolute;left:-14px;top:0;bottom:0;width:16px}.dropdown-wrap-side:hover .shapes-palette,.dropdown-wrap-side.open .shapes-palette{display:flex!important}.palette-title{font-size:.75rem;font-weight:800;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding-bottom:2px}.shapes-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.shape-opt{width:46px;height:46px;border-radius:var(--radius-md);background:var(--bg-tertiary);border:1px solid var(--border-light);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:all var(--transition-fast)}.shape-opt svg{width:22px;height:22px}.shape-opt:hover,.shape-opt.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary);transform:scale(1.05)}.menu-action-btn{background:var(--bg-tertiary);border:1px solid var(--border-light);padding:8px 12px;border-radius:var(--radius-md);text-align:left;font-size:.825rem;font-weight:600;cursor:pointer;color:var(--text-main);transition:all var(--transition-fast)}.menu-action-btn:hover{background:var(--primary-light);border-color:var(--primary-border);color:var(--primary);transform:translate(2px)}.tool-settings-compact{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;padding-top:4px}.color-picker-wrap{position:relative;width:36px;height:36px;border-radius:50%;overflow:hidden;box-shadow:0 0 0 2px #e2e8f0,0 2px 4px #00000014;cursor:pointer;transition:transform var(--transition-fast)}.color-picker-wrap:hover{transform:scale(1.08)}.color-native{position:absolute;opacity:0;width:100%;height:100%;cursor:pointer}.color-preview{width:100%;height:100%;border-radius:50%}.preset-colors{display:grid;grid-template-columns:repeat(2,1fr);gap:5px}.color-dot{width:18px;height:18px;border-radius:50%;border:1px solid rgba(0,0,0,.12);cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.color-dot:hover{transform:scale(1.25)}.color-dot.active{box-shadow:0 0 0 2px #fff,0 0 0 4px #2563eb;transform:scale(1.15)}.stroke-width-box{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%}.stroke-width-box input[type=range]{width:48px;height:4px;accent-color:var(--primary);cursor:pointer}.stroke-val{font-size:.7rem;font-family:var(--font-mono);font-weight:700;color:var(--text-muted)}.style-toggle-box{display:flex;gap:2px}.style-btn{font-size:.75rem;padding:3px 5px;border-radius:var(--radius-xs);background:var(--bg-tertiary);border:1px solid var(--border-light);cursor:pointer;color:var(--text-secondary);transition:all var(--transition-fast)}.style-btn:hover{background:#e2e8f0}.style-btn.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary);font-weight:700}.fill-checkbox-control{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:2px 4px;border-radius:4px;transition:background .15s ease}.fill-checkbox-control:hover{background:#f1f5f9}.fill-title{font-size:.68rem;font-weight:700;color:var(--text-secondary);letter-spacing:-.01em}.compact-checkbox{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;margin:0}.checkbox-label{display:flex;flex-direction:column;align-items:center;font-size:.65rem;font-weight:700;color:var(--text-muted);gap:2px;cursor:pointer}.checkbox-label input[type=checkbox]{accent-color:var(--primary);cursor:pointer}.board-container{flex:1;position:relative;overflow:hidden;background:#fff;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.board-bg-svg{position:absolute;top:0;left:0;width:100%;height:100%;display:block;z-index:18;pointer-events:none;touch-action:none}.raster-canvas-container{position:absolute;top:0;left:0;width:4000px;height:3000px;pointer-events:none;z-index:30;transform-origin:0 0;touch-action:none}#rasterCanvas{display:block;width:4000px;height:3000px;background:transparent;touch-action:none}.board-svg{position:absolute;top:0;left:0;width:100%;height:100%;display:block;cursor:crosshair;background-color:transparent;z-index:25;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.board-svg.tool-pencil,.board-svg.tool-highlighter,.board-svg.tool-brush,.board-svg.tool-spray,.board-svg.tool-calligraphy,.board-svg.tool-eraser{cursor:crosshair}.board-svg.tool-select{cursor:default}.board-svg.tool-laser{cursor:none}.brush-cursor-ring{position:absolute;top:0;left:0;pointer-events:none;z-index:999;border-radius:50%;box-sizing:border-box;opacity:0;transition:width .04s ease-out,height .04s ease-out,opacity .12s ease-out,border-color .12s ease-out,background-color .12s ease-out;will-change:transform,width,height}.brush-cursor-ring:after{content:"";position:absolute;top:50%;left:50%;width:3px;height:3px;border-radius:50%;background:currentColor;transform:translate(-50%,-50%);box-shadow:0 0 2px #ffffffe6}.brush-cursor-ring.cursor-eraser:after{background:#ef4444;width:4px;height:4px}.brush-size-badge{position:absolute;top:0;left:0;pointer-events:none;z-index:1000;background:#0f172ad9;color:#fff;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:700;font-family:var(--font-main, sans-serif);opacity:0;transition:opacity .18s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 2px 8px #00000040;white-space:nowrap}#drawingLayer>*{pointer-events:none;transition:filter .12s ease-out}.board-svg.tool-select #drawingLayer>*{pointer-events:all;cursor:pointer}.board-svg.tool-select #drawingLayer>*:hover:not(.selected-element){filter:drop-shadow(0 0 6px rgba(37,99,235,.85)) drop-shadow(0 0 1px rgba(37,99,235,.5))}#drawingLayer>*.selected-element{pointer-events:all;cursor:move}.simulation-layer-container{position:absolute;top:0;left:0;right:0;bottom:0;z-index:15;display:flex;flex-direction:column;background:#fff}.simulation-top-control-bar{height:48px;background:#0f172a;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 16px;box-shadow:0 4px 14px #0003;z-index:60;border-bottom:1px solid #1e293b;position:relative;flex-shrink:0}.sim-mode-toggle-group{display:flex;gap:6px;background:#1e293b;padding:4px;border-radius:var(--radius-md)}.sim-mode-btn{display:flex;align-items:center;gap:6px;padding:6px 16px;border-radius:var(--radius-sm);background:transparent;border:1px solid transparent;color:#94a3b8;font-size:.825rem;font-weight:700;cursor:pointer;transition:all var(--transition-fast)}.sim-mode-btn:hover{color:#fff;background:#ffffff0d}.sim-mode-btn.active{background:var(--primary-gradient);color:#fff;border-color:#fff3;box-shadow:0 2px 10px #2563eb80}.sim-mode-btn#btnSimModeInteract.active{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 2px 10px #10b98180}.sim-mode-btn#btnSimModeDrawOver.active{background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 2px 10px #2563eb80}.sim-layer-actions{display:flex;align-items:center;gap:8px}.sim-title-badge{font-size:.8rem;font-weight:700;background:#334155;color:#f8fafc;padding:5px 12px;border-radius:var(--radius-sm);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sim-action-btn{background:#1e293b;border:1px solid #334155;color:#f1f5f9;padding:5px 12px;border-radius:var(--radius-sm);font-size:.78rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.sim-action-btn:hover{background:#334155;border-color:#475569}.sim-action-btn.btn-danger-soft:hover{background:#dc2626;border-color:#dc2626}.sim-action-btn.btn-close-sim{background:#ef4444;border-color:#dc2626}.sim-action-btn.btn-close-sim:hover{background:#dc2626}.simulation-viewport{flex:1;position:relative;width:100%;height:calc(100% - 48px);overflow:hidden}.simulation-viewport iframe{width:100%;height:100%;border:none}.sim-local-host{width:100%;height:100%;overflow:auto;padding:20px;background:#f8fafc}.sim-mode-interact .board-svg{pointer-events:none!important;z-index:20!important}.sim-mode-interact .simulation-viewport,.sim-mode-interact .simulation-viewport iframe,.sim-mode-interact .sim-local-host{pointer-events:auto!important}.sim-mode-interact #boardBackdrop,.sim-mode-interact #rulingLayer,.sim-mode-interact #marginLinesLayer{opacity:0!important}.sim-mode-draw-over .board-svg{pointer-events:auto!important;z-index:45!important;background:transparent!important}.sim-mode-draw-over .simulation-viewport,.sim-mode-draw-over .simulation-viewport iframe,.sim-mode-draw-over .sim-local-host{pointer-events:none!important}.sim-mode-draw-over #boardBackdrop,.sim-mode-draw-over #rulingLayer,.sim-mode-draw-over #marginLinesLayer{opacity:0!important}.screen-instruments-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:40}.instrument-widget{position:absolute;pointer-events:auto;cursor:move;filter:drop-shadow(0 12px 24px rgba(15,23,42,.2))}.canvas-zoom-hud{position:absolute;bottom:20px;left:20px;background:#ffffffe6;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(226,232,240,.8);border-radius:var(--radius-full);display:flex;align-items:center;padding:4px 8px;gap:4px;box-shadow:var(--shadow-lg);z-index:45}.hud-btn{width:32px;height:32px;border-radius:50%;background:var(--bg-tertiary);border:none;font-weight:700;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-main);transition:all var(--transition-fast)}.hud-btn:hover{background:var(--primary-light);color:var(--primary);transform:scale(1.08)}.hud-value{font-size:.8rem;font-family:var(--font-mono);font-weight:700;min-width:48px;text-align:center;cursor:pointer;color:var(--text-secondary)}.fab-fullscreen-btn{position:absolute;bottom:20px;right:20px;width:48px;height:48px;border-radius:50%;background:#0f172a;color:#fff;border:none;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 25px #0f172a59;cursor:pointer;z-index:45;transition:transform var(--transition-fast),background var(--transition-fast)}.fab-fullscreen-btn:hover{transform:scale(1.08);background:#1e293b}.fab-fullscreen-btn svg{width:22px;height:22px;fill:currentColor}.sidebar-right{width:var(--sidebar-right-width);background:#fffffffa;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-left:1px solid var(--border-light);display:flex;flex-direction:column;z-index:60;box-shadow:-2px 0 8px #0f172a0a;transition:transform var(--transition-normal)}.sidebar-right.collapsed{transform:translate(100%);position:absolute;right:0;height:100%}.sidebar-header{height:52px;border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#fff}.sidebar-title{font-size:.95rem;font-weight:800;letter-spacing:-.01em;color:var(--text-main)}.sidebar-content{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px;background:var(--bg-secondary)}.module-card{background:#fff;border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-fast),border-color var(--transition-fast)}.module-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong)}.module-card-title{font-size:.85rem;font-weight:800;color:var(--text-main);display:flex;align-items:center;justify-content:space-between;letter-spacing:-.01em}.btn-group-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.btn-group-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.module-btn{background:var(--bg-tertiary);border:1px solid var(--border-light);border-radius:var(--radius-md);padding:10px 8px;font-size:.8rem;font-weight:700;color:var(--text-main);cursor:pointer;text-align:center;transition:all var(--transition-fast);display:flex;flex-direction:column;align-items:center;gap:4px}.module-btn:hover{background:var(--primary-light);border-color:var(--primary-border);color:var(--primary);transform:translateY(-1px)}.module-btn.active{background:var(--primary-gradient);color:#fff;border-color:transparent;box-shadow:0 4px 12px #2563eb4d}.calligraphy-char-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;max-height:160px;overflow-y:auto;padding:6px;background:var(--bg-tertiary);border-radius:var(--radius-md)}.calligraphy-btn{height:38px;font-family:Times New Roman,serif;font-size:1.2rem;font-style:italic;background:#fff;border:1px solid var(--border-light);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.calligraphy-btn:hover{background:#eff6ff;border-color:#93c5fd;color:#2563eb;font-weight:700;transform:scale(1.08)}.sound-chips{display:flex;gap:8px}.sound-chip{flex:1;height:42px;border-radius:var(--radius-md);border:2px dashed #cbd5e1;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1rem;cursor:pointer;background:#fff;transition:all var(--transition-fast)}.sound-chip:hover{transform:scale(1.04)}.sound-chip[data-sound=vowel]{border-color:#ef4444;color:#ef4444;background:#fef2f2}.sound-chip[data-sound=consonant_hard]{border-color:#2563eb;color:#2563eb;background:#eff6ff}.sound-chip[data-sound=consonant_soft]{border-color:#10b981;color:#10b981;background:#ecfdf5}.periodic-table-mini-grid{display:grid;grid-template-columns:repeat(18,1fr);gap:3px;overflow-x:auto;padding:8px;background:#0f172a;border-radius:var(--radius-md)}.pt-element{width:24px;height:30px;border-radius:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.65rem;font-weight:800;color:#fff;cursor:pointer;transition:transform var(--transition-fast)}.pt-element:hover{transform:scale(1.35);z-index:10;box-shadow:0 0 10px #ffffffe6}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a99;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:999;display:flex;align-items:center;justify-content:center;padding:20px}.modal-dialog{background:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:680px;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;animation:modalPop .22s cubic-bezier(.16,1,.3,1);border:1px solid var(--border-light)}@keyframes modalPop{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.modal-header{height:56px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-light);background:#fff}.modal-header h3{font-size:1.1rem;font-weight:800;color:var(--text-main);letter-spacing:-.02em}.modal-body{padding:20px;overflow-y:auto;flex:1;color:var(--text-secondary);line-height:1.6}.floating-shape-toolbar{position:absolute;z-index:280;display:flex;align-items:center;gap:8px;background:#fff;border:1.5px solid #cbd5e1;border-radius:12px;padding:6px 12px;box-shadow:0 10px 28px #0f172a29,0 2px 6px #0f172a0f;-webkit-user-select:none;user-select:none;animation:popIn .12s ease-out}@keyframes popIn{0%{opacity:0;transform:scale(.95) translateY(4px)}to{opacity:1;transform:scale(1) translateY(0)}}.fl-tool-group{display:flex;align-items:center;gap:6px}.fl-label{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase}.fl-divider{width:1px;height:22px;background:#e2e8f0}.fl-color-presets{display:flex;align-items:center;gap:4px}.fl-dot{width:18px;height:18px;border-radius:50%;border:1.5px solid #ffffff;box-shadow:0 0 0 1px #cbd5e1;cursor:pointer;padding:0;transition:transform .1s}.fl-dot:hover{transform:scale(1.2)}.fl-color-pick{width:24px;height:24px;border:none;border-radius:50%;cursor:pointer;padding:0;background:transparent}.fl-btn{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:600;color:#1e293b;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .12s}.fl-btn:hover{background:#e2e8f0;color:#0f172a}.fl-btn.active{background:#dbeafe;border-color:#3b82f6;color:#1d4ed8}.fl-btn-danger{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.fl-btn-danger:hover{background:#fecaca;color:#b91c1c}.sel-rotate-knob{cursor:grab}.sel-rotate-knob circle:hover{fill:#1d4ed8;stroke:#dbeafe}@media(max-width:1200px){:root{--sidebar-right-width: 320px}.sidebar-right{position:absolute;right:0;top:0;bottom:0;height:100%;z-index:90;box-shadow:-4px 0 20px #0f172a26}.topbar{padding:0 10px;gap:8px}.ruling-scale-box{display:none}}@media(max-width:1024px){:root{--sidebar-right-width: 300px;--toolbar-left-width: 60px}.tool-btn{width:42px;height:42px}.topbar{gap:6px}.brand-sub,.chip-text{display:none}.btn-chip{padding:6px 8px}}@media(max-width:768px){.topbar{padding:0 6px;gap:4px}.brand-text,.ruling-label{display:none}.sidebar-right{position:absolute;right:0;top:0;bottom:0;height:100%;width:min(320px,90vw);z-index:95}.toolbar-left{position:absolute;top:0;bottom:0;height:100%;z-index:85}}@page{size:landscape;margin:0}@media print{html,body,.app-root{background:#fff!important;color:#000!important;width:100%!important;height:100%!important;margin:0!important;padding:0!important;overflow:visible!important}.topbar,.toolbar-left,.sidebar-right,.canvas-zoom-hud,.fab-fullscreen-btn,.screen-instruments-overlay,.toast-container,.cursor-ring,.laser-dot,.selection-box,.floating-quick-toolbar,#simControlBar{display:none!important}.workspace{height:100vh!important;width:100vw!important;margin:0!important;padding:0!important;background:#fff!important}.board-container{width:100vw!important;height:100vh!important;position:absolute!important;top:0!important;left:0!important}.board-svg{width:100vw!important;height:100vh!important}.raster-canvas-container{display:block!important}}
