@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600&display=swap");:root{--bg:#0a0a0f;--bg-canvas:#050508;--surface:rgba(15,15,25,.7);--surface-solid:#0f0f19;--text:#f0f0f5;--text-muted:#8888a0;--text-subtle:#5a5a70;--border:hsla(0,0%,100%,.08);--border-hover:hsla(0,0%,100%,.15);--neon-fuchsia:#ff2d92;--neon-cyan:#00d4ff;--neon-green:#0f8;--neon-purple:#9d4edd;--glow-fuchsia:0 0 20px rgba(255,45,146,.25),0 0 40px rgba(255,45,146,.1);--glow-cyan:0 0 20px rgba(0,212,255,.25),0 0 40px rgba(0,212,255,.1);--entity-cell:#fff;--entity-food:#0f8;--entity-predator:#ff2d92;--entity-plague:#9d4edd;--entity-protector:#9d4edd;--glass-bg:rgba(15,15,25,.6);--glass-blur:12px;--glass-border:1px solid hsla(0,0%,100%,.08);--glass-shadow:0 8px 32px rgba(0,0,0,.4);--font:"Space Grotesk",system-ui,sans-serif;--font-mono:ui-monospace,monospace;--radius-sm:6px;--radius-md:10px;--radius-lg:16px}.app-shell{position:relative;width:100vw;height:100vh;overflow:hidden;background:var(--bg-canvas)}.simulation-canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair}.ui-layer{position:absolute;inset:0;z-index:10;pointer-events:none}.ui-layer>*{pointer-events:auto}.glass-panel{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow)}@supports not ((-webkit-backdrop-filter:blur(12px)) or (backdrop-filter:blur(12px))){.glass-panel{background:var(--surface-solid)}}.toolbar{position:fixed;top:16px;left:50%;transform:translateX(-50%);display:flex;gap:8px;padding:8px 12px;z-index:100}.stats-panel{padding:12px 16px;min-width:140px;font-size:11px;color:var(--text-muted);-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:box-shadow .15s ease}.stats-panel--dragging{box-shadow:0 8px 32px rgba(0,0,0,.4),var(--glass-shadow)}.stats-panel__title{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-subtle);margin-bottom:8px}.stats-panel__row{display:flex;justify-content:space-between;align-items:center;padding:2px 0}.stats-panel__total{padding-top:6px;margin-top:4px;border-top:1px solid hsla(0,0%,100%,.06)}.stats-panel__dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px;vertical-align:middle}.stats-panel__value{font-family:var(--font-mono);color:var(--neon-cyan)}.glass-panel ::-webkit-scrollbar{width:6px}.glass-panel ::-webkit-scrollbar-track{background:transparent}.glass-panel ::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.1);border-radius:3px}.glass-panel ::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.2)}.glass-panel *{scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.1) transparent}.entity-btn{position:relative;padding:8px 16px 8px 24px;border:1px solid var(--border);border-radius:var(--radius-md);background:hsla(0,0%,100%,.03);color:var(--text-muted);font-family:var(--font);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s ease}.entity-btn:before{content:"";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;background:var(--entity-color,#fff);box-shadow:0 0 8px var(--entity-color,#fff)}.entity-btn:hover{background:hsla(0,0%,100%,.08);color:var(--text)}.entity-btn.active{border-color:var(--entity-color,#fff);color:var(--text);box-shadow:0 0 20px rgba(var(--entity-color-rgb,255,255,255),.2)}.entity-btn[data-type=cell]{--entity-color:#fff;--entity-color-rgb:255,255,255}.entity-btn[data-type=food]{--entity-color:#0f8;--entity-color-rgb:0,255,136}.entity-btn[data-type=predator]{--entity-color:#ff2d92;--entity-color-rgb:255,45,146}.entity-btn[data-type=plague],.entity-btn[data-type=protector]{--entity-color:#9d4edd;--entity-color-rgb:157,78,221}.entity-btn[data-type=sick]{--entity-color:#ac3;--entity-color-rgb:170,204,51}.about-btn{position:fixed;bottom:20px;left:20px;width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:hsla(0,0%,100%,.03);color:var(--text-muted);font-size:18px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.about-btn:hover{background:hsla(0,0%,100%,.08);color:var(--text);transform:scale(1.05)}.sp{position:fixed;top:60px;right:16px;z-index:200}.sp__gear{width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--text);font-size:18px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.sp__gear:hover{background:hsla(0,0%,100%,.08);color:var(--text);border-color:var(--border-hover)}.sp__gear--active{border-color:var(--neon-cyan);color:var(--neon-cyan);box-shadow:var(--glow-cyan)}.sp__sidebar{position:absolute;top:44px;right:0;display:flex;flex-direction:column;gap:0;animation:sp-fade-in .2s ease}@keyframes sp-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.sp__sidebar-header{display:flex;justify-content:flex-end;margin-bottom:6px}.sp__reset{padding:4px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--text-muted);font-family:var(--font);font-size:9px;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s ease}.sp__reset:hover{background:hsla(0,0%,100%,.06);color:var(--text)}.sp__categories{display:flex;flex-direction:column;gap:2px}.sp__cat{position:relative}.sp__cat-btn{width:130px;display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--text-muted);font-family:var(--font);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s ease}.sp__cat-btn:hover{background:hsla(0,0%,100%,.06);color:var(--text);border-color:var(--border-hover)}.sp__cat-btn--active{border-color:var(--cat-color,var(--text-subtle));color:var(--text);box-shadow:0 0 12px hsla(0,0%,100%,.05)}.sp__cat-dot{width:6px;height:6px;border-radius:50%;background:var(--cat-color,var(--text-subtle));flex-shrink:0}.sp__cat-arrow{margin-left:auto;font-size:7px;color:var(--text-subtle);transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.sp__cat-btn--active .sp__cat-arrow{color:var(--cat-color,var(--text))}.sp__panel{position:absolute;top:0;right:136px;width:0;opacity:0;overflow:hidden;pointer-events:none;transition:width .35s cubic-bezier(.34,1.56,.64,1),opacity .2s ease}.sp__panel--open{width:260px;opacity:1;pointer-events:auto}.sp__panel-inner{width:260px;max-height:calc(100vh - 200px);overflow-y:auto;padding:12px;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow)}.sp__row{display:flex;justify-content:space-between;align-items:center;padding:3px 0}.sp__label{font-size:10px;color:var(--text-muted)}.sp__value{font-family:var(--font-mono);font-size:9px;color:var(--sp-accent,var(--neon-cyan));min-width:40px;text-align:right}.sp__slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:3px;border-radius:2px;background:hsla(0,0%,100%,.08);outline:none;margin:3px 0 6px}.sp__slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:10px;height:10px;border-radius:50%;background:var(--sp-accent,var(--neon-cyan));cursor:pointer;box-shadow:0 0 6px hsla(0,0%,100%,.2)}.sp__slider::-moz-range-thumb{width:10px;height:10px;border:none;border-radius:50%;background:var(--sp-accent,var(--neon-cyan));cursor:pointer;box-shadow:0 0 6px hsla(0,0%,100%,.2)}.sp__sub{font-size:8px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-subtle);margin-top:8px;margin-bottom:4px;padding-top:6px;border-top:1px solid hsla(0,0%,100%,.04)}.sp__panel-inner ::-webkit-scrollbar{width:4px}.sp__panel-inner ::-webkit-scrollbar-track{background:transparent}.sp__panel-inner ::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.1);border-radius:2px}.sp__toggle-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.sp__toggle-switch{position:relative;width:32px;height:16px;padding:0;border:1px solid hsla(0,0%,100%,.15);border-radius:8px;background:hsla(0,0%,100%,.06);cursor:pointer;transition:all .25s cubic-bezier(.34,1.56,.64,1)}.sp__toggle-switch--on{background:var(--sp-accent,var(--neon-cyan));border-color:var(--sp-accent,var(--neon-cyan));box-shadow:0 0 8px hsla(0,0%,100%,.15)}.sp__toggle-knob{position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:hsla(0,0%,100%,.5);transition:all .25s cubic-bezier(.34,1.56,.64,1)}.sp__toggle-switch--on .sp__toggle-knob{left:18px;background:#fff}.sp__size-row{display:flex;gap:6px;margin-bottom:8px}.sp__size-btn{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:hsla(0,0%,100%,.03);color:var(--text-muted);font-family:var(--font);font-size:11px;font-weight:600;cursor:pointer;transition:all .2s ease}.sp__size-btn:hover{background:hsla(0,0%,100%,.08);color:var(--text);border-color:var(--sp-accent,var(--border-hover))}.sp__size-dim{font-size:8px;font-weight:400;color:var(--text-subtle)}.rules-toggle-wrap{position:fixed;top:60px;right:60px;z-index:200}.rules-toggle{width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--text-muted);font-size:18px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.rules-toggle:hover{background:hsla(0,0%,100%,.08);color:var(--text);border-color:var(--border-hover)}.rules-toggle--active{border-color:var(--neon-cyan);color:var(--neon-cyan);box-shadow:var(--glow-cyan)}.rules-overlay{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;animation:rules-fade-in .15s ease}@keyframes rules-fade-in{0%{opacity:0}to{opacity:1}}.rules-modal{width:520px;max-height:80vh;overflow-y:auto;padding:24px;animation:rules-slide-in .15s ease}@keyframes rules-slide-in{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.rules-modal__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid var(--border)}.rules-modal__title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:var(--text)}.rules-modal__close{width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.rules-modal__close:hover{background:hsla(0,0%,100%,.06);color:var(--text);border-color:var(--border-hover)}.rules-modal__body{display:flex;flex-direction:column;gap:16px}.rules-modal__section{padding-bottom:12px;border-bottom:1px solid hsla(0,0%,100%,.04)}.rules-modal__section:last-child{border-bottom:none;padding-bottom:0}.rules-modal__section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;display:flex;align-items:center;gap:6px;color:var(--text)}.rules-modal__section-title:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--section-color,var(--text-subtle))}.rules-modal__desc{font-size:11px;color:var(--text-muted);margin-bottom:6px;line-height:1.5}.rules-modal__subtitle{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-subtle);margin-top:8px;margin-bottom:4px}.rules-modal__row{display:flex;justify-content:space-between;align-items:baseline;padding:2px 0;gap:12px}.rules-modal__label{font-size:10px;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.rules-modal__value{font-family:var(--font-mono);font-size:10px;color:var(--neon-cyan);text-align:right}.rules-modal__li{position:relative;padding-left:10px;font-size:10px;color:var(--text-muted);line-height:1.6}.rules-modal__li:before{content:"·";position:absolute;left:2px;color:var(--text-subtle)}.popgraph-toggle-wrap{position:fixed;top:60px;right:104px;z-index:200}.popgraph-toggle{width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--text-muted);font-size:16px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.popgraph-toggle:hover{background:hsla(0,0%,100%,.08);color:var(--text);border-color:var(--border-hover)}.popgraph-toggle--active{border-color:var(--neon-cyan);color:var(--neon-cyan);box-shadow:var(--glow-cyan)}.popgraph{position:fixed;bottom:16px;right:16px;width:420px;padding:12px 14px;z-index:150}.popgraph__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.popgraph__header--draggable{cursor:-webkit-grab;cursor:grab}.popgraph__header--draggable:active{cursor:-webkit-grabbing;cursor:grabbing}.popgraph__title{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-subtle)}.popgraph__legend{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.popgraph__legend-item{display:flex;align-items:center;gap:3px;font-size:8px;color:var(--text-muted);cursor:pointer;transition:opacity .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.popgraph__legend-item:hover{opacity:.8}.popgraph__legend-item--hidden{opacity:.35;text-decoration:line-through}.popgraph__legend-item--right{border-bottom:1px dashed hsla(0,0%,100%,.2)}.popgraph__legend-axis{font-size:7px;font-weight:600;color:rgba(255,45,146,.6);margin-left:1px}.popgraph__legend-dot{display:inline-block;width:5px;height:5px;border-radius:50%;flex-shrink:0}.popgraph__canvas{width:100%;height:140px;display:block}.phase-toggle-wrap{position:fixed;top:60px;right:148px;z-index:200}.phase-toggle{width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--text-muted);font-size:16px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.phase-toggle:hover{background:hsla(0,0%,100%,.08);color:var(--text);border-color:var(--border-hover)}.phase-toggle--active{border-color:var(--neon-cyan);color:var(--neon-cyan);box-shadow:var(--glow-cyan)}.phase{position:fixed;bottom:16px;right:450px;width:360px;padding:12px 14px;z-index:150}.phase__header{margin-bottom:8px}.phase__header--draggable{cursor:-webkit-grab;cursor:grab}.phase__header--draggable:active{cursor:-webkit-grabbing;cursor:grabbing}.phase__title{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-subtle)}.phase__variables{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:8px}.phase__chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid hsla(0,0%,100%,.1);border-radius:12px;font-size:9px;color:var(--text-muted);cursor:-webkit-grab;cursor:grab;transition:all .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.phase__chip:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--chip-color,var(--text-subtle))}.phase__chip:hover{border-color:hsla(0,0%,100%,.25);background:hsla(0,0%,100%,.04);color:var(--text)}.phase__chip:active{cursor:-webkit-grabbing;cursor:grabbing}.phase__axes{gap:8px;margin-bottom:8px}.phase__axes,.phase__axis-drop{display:flex;align-items:center}.phase__axis-drop{flex:1 1;gap:6px;padding:5px 8px;border:1px dashed hsla(0,0%,100%,.12);border-radius:var(--radius-sm);transition:all .15s ease;min-height:28px}.phase__axis-drop--hover{border-color:var(--neon-cyan);background:rgba(0,212,255,.06);box-shadow:inset 0 0 12px rgba(0,212,255,.08)}.phase__axis-label{font-size:9px;font-weight:600;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.5px}.phase__axis-value{font-family:var(--font-mono);font-size:10px}.phase__axis-vs{font-size:9px;color:var(--text-subtle)}.phase__canvas{width:100%;height:220px;display:block}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text)}