:root{--bg:#000;--panel:#0b0b0a;--panel-2:#000;--border:#2b2925;--text:#ece7da;--muted:#8b8574;--accent:#ffb000;--accent-dim:#cc8a00;--warn:#ff6a2b;--font-pixel:"Press Start 2P", ui-monospace, monospace;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;font-family:var(--font-mono)}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#3a362e transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#3a362e padding-box padding-box;border:2px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#ffb00073 padding-box padding-box}::-webkit-scrollbar-corner{background:0 0}*{-webkit-tap-highlight-color:transparent}:focus{outline:none}:focus-visible{outline:1px solid var(--accent);outline-offset:1px}body{font-family:var(--font-mono)}html,body,#app{background:var(--panel);height:100%;color:var(--text);margin:0}#app{display:flex;overflow:hidden}.main{background:var(--panel);flex-direction:column;flex:1;min-width:0;display:flex}.controlbar{flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;display:flex}.intro{z-index:100;background:var(--bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.intro-title{font-family:var(--font-pixel);color:var(--accent);text-align:center;letter-spacing:-.5px;opacity:0;font-size:clamp(20px,4vw,34px)}.booting .sidebar{opacity:0}.booting .controlbar{opacity:0;transform:translateY(140%)}.booted .intro{animation:.6s 1.5s forwards intro-fade}.booted .intro-title{animation:.4s forwards intro-appear,1.4s ease-in-out infinite alternate intro-glow,.6s cubic-bezier(.4,0,.2,1) 1.45s forwards intro-exit}.booted .sidebar{animation:.6s 1.5s both sidebar-in}.booted .controlbar{animation:.55s cubic-bezier(.2,.9,.2,1) 1.75s both controlbar-in}@keyframes intro-appear{to{opacity:1}}@keyframes intro-glow{0%{text-shadow:0 0 14px #ffb0004d}to{text-shadow:0 0 36px #ffb000d9}}@keyframes intro-exit{to{opacity:0;transform:translateY(-26vh)scale(.42)}}@keyframes intro-fade{to{opacity:0;visibility:hidden}}@keyframes sidebar-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:none}}@keyframes controlbar-in{0%{opacity:0;transform:translateY(140%)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.intro{display:none}.intro-title,.booting .sidebar,.booting .controlbar{opacity:1;transform:none}.booted .sidebar,.booted .controlbar,.booted .intro-title{animation:none}}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);font-family:var(--font-mono);cursor:pointer;border-radius:8px;padding:7px 12px;font-size:13px;transition:background .12s,border-color .12s}.btn:hover{border-color:var(--accent-dim)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600}.btn.primary:hover{background:var(--accent-dim);border-color:var(--accent-dim)}.btn-icon{justify-content:center;align-items:center;padding:7px 10px;display:inline-flex}.btn-icon svg{display:block}.btn-icon:hover{color:var(--accent)}.btn-iconed{align-items:center;gap:6px;display:inline-flex}.btn-iconed svg{display:block}.ctl{align-items:center;gap:6px;display:flex}.ctl label{color:var(--muted);font-size:12px}.slider{width:110px;accent-color:var(--accent)}.stats{font-variant-numeric:tabular-nums;align-items:center;gap:12px;margin-left:auto;font-size:13px;display:flex}.stats .gen{color:var(--muted)}.stats .pop{align-items:center;gap:5px;display:inline-flex}.canvas-wrap{background:var(--bg);border-radius:16px;flex:1;min-height:0;margin:16px;position:relative;overflow:hidden}.grid-canvas{cursor:crosshair;width:100%;height:100%;display:block;position:absolute;inset:0}.resizer{cursor:col-resize;background:var(--border);width:12px;height:24px;color:var(--muted);border-radius:12px;flex-shrink:0;justify-content:center;align-self:center;align-items:center;transition:background .12s,color .12s;display:flex}.resizer:before{content:"";background:currentColor;border-radius:50%;width:2px;height:2px;box-shadow:0 -4px,0 4px}.resizer:hover{background:var(--accent);color:#000}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing .grid-canvas{pointer-events:none}.sidebar{background:var(--panel);scrollbar-gutter:stable;border-radius:0 6px 6px 0;flex-shrink:0;width:380px;padding:32px 32px 32px 18px;overflow-y:auto}.sidebar h1{font-family:var(--font-pixel);letter-spacing:-.5px;color:var(--accent);text-shadow:0 0 14px #ffb00080;margin:4px 0 14px;font-size:15px;line-height:1.5}.sidebar h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 10px;font-size:12px}.sidebar h2:before{content:">";color:var(--accent);transition:transform .15s;display:inline-block}.sidebar p{margin:6px 0;font-size:13px;line-height:1.5}.muted{color:var(--muted)}.row{gap:8px;margin:12px 0;display:flex}.share-note{min-height:16px;color:var(--accent);font-size:12px;display:block}.preset-select,select,input[type=text],input[type=number]{background:var(--panel-2);color:var(--text);border:1px solid var(--border);font-family:var(--font-mono);border-radius:4px;padding:6px 8px;font-size:13px}.preset-select{flex:1}select{cursor:pointer}.panel{margin-top:22px}.state-row{cursor:pointer;border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:6px;display:flex}.state-row:hover{background:var(--panel-2)}.state-row.active{border-color:var(--accent);background:var(--panel-2)}.brush-dot{border-radius:4px;flex-shrink:0;width:14px;height:14px;box-shadow:inset 0 0 0 1px #ffffff26}.swatch{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:5px;width:28px;height:24px;padding:0}.state-name{flex:1;min-width:0}.state-id{font-size:11px}.rule{background:var(--panel-2);border:1px solid var(--border);border-radius:9px;margin-bottom:10px;padding:10px}.rule-head,.rule-result{align-items:center;gap:6px;display:flex}.rule-result{flex-wrap:wrap;margin-top:8px}.kw{color:var(--accent);letter-spacing:.03em;font-size:11px;font-weight:600}.spacer{flex:1}.conds{flex-direction:column;gap:6px;margin:8px 0;display:flex}.cond-row{flex-wrap:wrap;align-items:center;gap:5px;font-size:12px;display:flex}.num{width:56px}.state-select,.op-select,.kind-select{padding:4px 6px;font-size:12px}.op-select{width:52px}.icon-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:5px;width:26px;height:26px;font-size:13px;line-height:1}.icon-btn:hover{color:var(--text);border-color:var(--accent-dim)}.icon-btn.danger:hover{color:#ff6b6b;border-color:#ff6b6b}.add-cond,.add-rule{border:1px dashed var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;width:100%;padding:6px 10px;font-size:12px}.add-cond:hover,.add-rule:hover{color:var(--text);border-color:var(--accent)}.add-rule{margin-top:4px}.pop-chart{border:1px solid var(--border);background:var(--panel-2);border-radius:4px;width:100%;height:96px;display:block}.params-body{flex-direction:column;gap:10px;display:flex}.param-row{flex-direction:column;gap:4px;display:flex}.param-row label{color:var(--muted);justify-content:space-between;font-size:12px;display:flex}.param-val{color:var(--accent);font-weight:700}.param-val.warn{color:var(--warn);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.param-row.warn .param-slider{accent-color:var(--warn)}.param-slider{width:100%}.species-card{background:var(--panel-2);border:1px solid var(--border);border-radius:9px;flex-direction:column;gap:8px;padding:10px;display:flex}.species-head{align-items:center;gap:8px;display:flex}.species-name{flex:1;font-size:13px;font-weight:700}.mobile-toggle{color:var(--muted);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:flex}.mobile-toggle input{accent-color:var(--accent)}.diet-chips{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.diet-label{margin-right:2px;font-size:12px}.chip{background:var(--bg);border:1px solid var(--border);color:var(--muted);font-family:var(--font-mono);cursor:pointer;border-radius:999px;padding:3px 9px;font-size:11px}.chip:hover{color:var(--text)}.chip.on{border-color:var(--accent);color:var(--accent);font-weight:700}.pattern-chips{flex-wrap:wrap;gap:5px;display:flex}.colormap-row{gap:6px;display:flex}.colormap-row .swatch{width:100%;height:28px}.help{margin-top:22px;font-size:12px;line-height:1.5}.help p{margin:4px 0}.script-editor{resize:vertical;background:var(--bg);width:100%;min-height:200px;color:var(--text);border:1px solid var(--border);font-family:var(--font-mono);tab-size:2;white-space:pre;border-radius:6px;padding:10px;font-size:12.5px;line-height:1.55;overflow:auto}.script-editor:focus{border-color:var(--accent);outline:none}.script-notice{border:1px solid var(--warn);color:#ffae85;background:#ff6a2b17;border-radius:6px;margin:0 0 10px;padding:8px 10px;font-size:12px;line-height:1.45;display:none}.script-notice.show{display:block}.script-hint{align-self:center;font-size:11px}.script-error{color:#ff9b9b;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;background:#ff6b6b14;border:1px solid #ff6b6b;border-radius:6px;margin:8px 0 0;padding:8px 10px;font-size:12px;display:none}.script-error.show{display:block}.script-doc{background:var(--bg);border:1px solid var(--border);font-family:var(--font-mono);color:#6f8f73;white-space:pre;border-radius:6px;margin:0 0 10px;padding:10px 12px;font-size:11.5px;line-height:1.7;overflow-x:auto}.cm-host{border:1px solid var(--border);border-radius:6px;min-height:220px;overflow:hidden}.cm-host .cm-editor{height:220px}.cm-loading{padding:12px;font-size:12px;display:inline-block}.modal.script-modal{width:min(920px,100%)}.cm-host-modal{min-height:62vh;margin-top:12px}.cm-host-modal .cm-editor{height:62vh}.sidebar h2.panel-head{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:flex}.panel-title{flex:1;min-width:0}.panel.collapsed>:not(.panel-head){display:none}.panel.collapsed .panel-head:before{transform:rotate(90deg)}.help-btn{border:1px solid var(--border);background:var(--panel-2);width:18px;height:18px;color:var(--muted);font-family:var(--font-mono);cursor:pointer;border-radius:999px;flex-shrink:0;padding:0;font-size:11px;font-weight:700;line-height:1;transition:color .12s,border-color .12s}.help-btn:hover{color:var(--accent);border-color:var(--accent)}.help p .help-btn{vertical-align:middle}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes modal-pop-in{0%{opacity:0;transform:translateY(10px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-backdrop{z-index:50;background:#020408a8;justify-content:center;align-items:center;padding:24px;animation:.16s ease-out modal-backdrop-in;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:min(520px,100%);max-height:82vh;padding:18px 20px 20px;animation:.19s cubic-bezier(.2,.8,.2,1) modal-pop-in;overflow-y:auto;box-shadow:0 18px 60px #0000008c}@media (prefers-reduced-motion:reduce){.modal-backdrop,.modal{animation:none}}.modal-head{align-items:center;gap:10px;display:flex}.modal-head h3{font-family:var(--font-pixel);color:var(--accent);text-shadow:0 0 10px #ffb00066;flex:1;margin:0;font-size:12px;line-height:1.5}.modal-intro{margin:10px 0 14px}.glossary{margin:0}.glossary dt{color:var(--text);margin-top:12px;font-size:12.5px;font-weight:700}.glossary dd{color:var(--muted);margin:3px 0 0;font-size:12.5px;line-height:1.5}
