*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg);color:var(--text);transition:background-color .3s ease,color .3s ease}:root{--bg: #ffffff;--panel: #f8fafc;--text: #1e293b;--accent: #3b82f6;--good: #10b981;--warn: #f59e0b;--error: #ef4444;--border: #e2e8f0;--shadow: rgba(0, 0, 0, .1);--hover: #f1f5f9;--active: #e2e8f0;--grid-size: 40px;--border-radius: 8px;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem}[data-theme=dark]{--bg: #0f172a;--panel: #1e293b;--text: #f1f5f9;--accent: #60a5fa;--good: #34d399;--warn: #fbbf24;--error: #f87171;--border: #334155;--shadow: rgba(0, 0, 0, .3);--hover: #334155;--active: #475569}[data-contrast=high]{--bg: #000000;--panel: #1a1a1a;--text: #ffffff;--accent: #00ff00;--good: #00ff00;--warn: #ffff00;--error: #ff0000;--border: #ffffff;--shadow: rgba(255, 255, 255, .2);--hover: #333333;--active: #666666;font-weight:600;font-size:1.1em}*:focus{outline:2px solid var(--accent);outline-offset:2px}*:focus:not(:focus-visible){outline:none}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,h4,h5,h6{font-weight:600;margin-bottom:var(--spacing-md)}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.125rem}p{margin-bottom:var(--spacing-md)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--border);border-radius:var(--border-radius);background-color:var(--panel);color:var(--text);font-size:.875rem;font-weight:500;text-decoration:none;cursor:pointer;transition:all .2s ease;min-height:44px;min-width:44px;gap:var(--spacing-xs)}.btn:hover{background-color:var(--hover);border-color:var(--accent)}.btn:active{background-color:var(--active);transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background-color:var(--accent);opacity:.9}.btn-success{background-color:var(--good);color:#fff;border-color:var(--good)}.btn-warning{background-color:var(--warn);color:#fff;border-color:var(--warn)}.btn-danger{background-color:var(--error);color:#fff;border-color:var(--error)}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-md)}.game-layout{display:grid;grid-template-areas:"toolbox canvas info" "toolbox canvas info";grid-template-columns:250px 1fr 300px;grid-template-rows:1fr;min-height:100vh;gap:var(--spacing-sm);padding:var(--spacing-sm);overflow-y:auto}.toolbox{grid-area:toolbox;background-color:var(--panel);border:1px solid var(--border);border-radius:var(--border-radius);padding:var(--spacing-md);overflow-y:auto}.canvas{grid-area:canvas;background-color:var(--panel);border:1px solid var(--border);border-radius:var(--border-radius);position:relative;overflow:hidden}.info-panel{grid-area:info;background-color:var(--panel);border:1px solid var(--border);border-radius:var(--border-radius);padding:var(--spacing-md);overflow-y:auto}@media (max-width: 768px){.game-layout{grid-template-areas:"toolbox" "canvas" "info";grid-template-columns:1fr;grid-template-rows:auto 1fr auto;height:100vh}.toolbox{max-height:150px}.info-panel{max-height:200px}.main-menu{padding:var(--spacing-md)}.menu-options{grid-template-columns:1fr;max-width:400px;gap:var(--spacing-md)}.menu-card:hover{transform:translateY(-4px)}}@media (max-width: 480px){.game-layout{padding:var(--spacing-xs);gap:var(--spacing-xs)}.toolbox,.info-panel{padding:var(--spacing-sm)}.main-menu{padding:var(--spacing-sm);min-height:100vh}.main-menu h1{font-size:2rem;margin-bottom:var(--spacing-md)}.menu-options{max-width:320px;gap:var(--spacing-sm)}.menu-card{padding:var(--spacing-md)}.menu-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px var(--shadow)}.menu-card:hover{transform:translateY(-2px) rotateX(0)}}.card{background-color:var(--panel);border:1px solid var(--border);border-radius:var(--border-radius);padding:var(--spacing-md);box-shadow:0 2px 4px var(--shadow);transition:all .2s ease}.card:hover{box-shadow:0 4px 8px var(--shadow);transform:translateY(-2px)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-md)}.modal{background-color:var(--panel);border:1px solid var(--border);border-radius:var(--border-radius);padding:var(--spacing-lg);max-width:500px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:0 8px 16px var(--shadow)}.component-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.component-item{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-sm);border:1px solid var(--border);border-radius:var(--border-radius);background-color:var(--bg);cursor:grab;transition:all .2s ease;min-height:80px;justify-content:center}.component-item:hover{background-color:var(--hover);border-color:var(--accent)}.component-item:active{cursor:grabbing;transform:scale(.95)}.component-item svg{width:32px;height:32px;margin-bottom:var(--spacing-xs)}.component-item span{font-size:.75rem;text-align:center}.physics-modules{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-md);padding:var(--spacing-md)}.main-menu{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:var(--spacing-lg);text-align:center;position:relative}.main-menu h1{font-size:clamp(2rem,5vw,3rem);margin-bottom:var(--spacing-lg);background:linear-gradient(45deg,var(--accent),var(--good));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.menu-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-xl);max-width:900px;width:100%;perspective:1000px}.menu-card{background-color:var(--panel);border:1px solid var(--border);border-radius:var(--border-radius);padding:var(--spacing-lg);text-decoration:none;color:var(--text);transition:all .3s cubic-bezier(.4,0,.2,1);cursor:pointer;position:relative;overflow:hidden;transform-style:preserve-3d;will-change:transform;display:flex;flex-direction:column;min-height:300px;height:100%}.menu-card:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(45deg,transparent,var(--accent));opacity:0;transition:opacity .3s ease;pointer-events:none}.menu-card:hover{transform:translateY(-8px) rotateX(5deg);box-shadow:0 12px 32px var(--shadow),0 2px 8px #0000001a;border-color:var(--accent)}.menu-card:hover:before{opacity:.03}.menu-card:focus{outline:2px solid var(--accent);outline-offset:2px;transform:translateY(-4px)}.menu-card:active{transform:translateY(-2px) scale(.98)}.menu-card h2{color:var(--accent);margin-bottom:var(--spacing-md)}.theme-controls{position:fixed;top:var(--spacing-md);right:var(--spacing-md);display:flex;gap:var(--spacing-sm);z-index:100}.progress-bar{width:100%;height:8px;background-color:var(--border);border-radius:4px;overflow:hidden;margin-bottom:var(--spacing-md)}.progress-fill{height:100%;background-color:var(--good);transition:width .3s ease}.badge{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--good);color:#fff;border-radius:12px;font-size:.75rem;font-weight:500;margin:var(--spacing-xs)}.badge-new{animation:badgeGlow 2s ease-in-out}@keyframes badgeGlow{0%,to{box-shadow:0 0 0 0 var(--good)}50%{box-shadow:0 0 0 8px transparent}}.loading{display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg)}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top:3px solid var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.circuit-grid{position:relative;background-image:linear-gradient(to right,var(--border) 1px,transparent 1px),linear-gradient(to bottom,var(--border) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);width:100%;height:100%;min-height:400px}.circuit-component{position:absolute;cursor:pointer;-webkit-user-select:none;user-select:none}.circuit-wire{stroke:var(--text);stroke-width:3;fill:none;cursor:pointer}.circuit-wire.active{stroke:var(--accent);stroke-width:4}.physics-canvas{width:100%;height:100%;border:1px solid var(--border);border-radius:var(--border-radius)}.control-panel{display:flex;flex-direction:column;gap:var(--spacing-md)}.slider-group{display:flex;flex-direction:column;gap:var(--spacing-sm)}.slider-group label{font-weight:500;display:flex;justify-content:space-between;align-items:center}.slider-group input[type=range]{width:100%;height:6px;border-radius:3px;background:var(--border);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.slider-group input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer}.slider-group input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer;border:none}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.slide-in{animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.mt-auto{margin-top:auto}.mb-auto{margin-bottom:auto}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.p-sm{padding:var(--spacing-sm)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}.m-sm{margin:var(--spacing-sm)}.m-md{margin:var(--spacing-md)}.m-lg{margin:var(--spacing-lg)}.context-menu{position:absolute;background:var(--panel);border:1px solid var(--border);border-radius:var(--border-radius);padding:8px 0;box-shadow:0 4px 12px var(--shadow);z-index:1000;min-width:120px;-webkit-user-select:none;user-select:none}.context-menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--text);font-size:14px;transition:background-color .2s ease}.context-menu-item:hover{background-color:var(--hover)}.context-menu-item.danger{color:var(--error)}.context-menu-item.danger:hover{background-color:#ef44441a}
