@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600&display=swap');

:root{
  color-scheme:dark;
  --ink:#edf5ef;
  --muted:#71867c;
  --soft:#9db0a4;
  --line:rgba(211,239,218,.14);
  --line-bright:rgba(197,248,121,.45);
  --lime:#c5f879;
  --cyan:#75daff;
  --panel:rgba(6,16,14,.84);
  --deep:#07100f;
}

*{box-sizing:border-box}
html,body,main{width:100%;height:100%;margin:0;overflow:hidden}
body{background:var(--deep);color:var(--ink);font-family:Manrope,sans-serif}
button{font:inherit}
button:focus-visible,input:focus-visible{outline:1px solid var(--lime);outline-offset:2px}
canvas{position:absolute;inset:0;width:100%;height:100%}
.hidden{display:none!important}

header{
  position:absolute;z-index:10;top:0;left:0;right:0;height:64px;
  display:grid;grid-template-columns:1fr minmax(180px,320px) 1fr;align-items:center;
  padding:0 22px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,rgba(5,14,13,.96),rgba(5,14,13,.66));
  backdrop-filter:blur(12px);
}
.brand{font:500 12px DM Mono,monospace;letter-spacing:2.2px}
.brand i{display:inline-block;width:7px;height:7px;margin-right:9px;border:1px solid var(--lime);transform:rotate(45deg)}
.generation-state{display:grid;grid-template-columns:74px 1fr;gap:10px;align-items:center;color:var(--soft);font:8px DM Mono,monospace;text-transform:uppercase}
.generation-state>div{height:1px;overflow:hidden;background:#294038}
.generation-state b{display:block;width:0;height:100%;background:var(--lime);transition:width .08s linear}
nav{justify-self:end;display:flex;gap:6px}
nav button{height:32px;padding:0 10px;border:1px solid var(--line);background:rgba(7,18,16,.86);color:var(--soft);cursor:pointer;font:9px DM Mono,monospace}
nav button:hover{border-color:var(--line-bright);color:var(--lime)}
.gallery-toggle span{display:inline-grid;place-items:center;min-width:17px;height:17px;margin-left:5px;padding:0 4px;background:rgba(197,248,121,.12);color:var(--lime)}
.export-control{position:relative}
.export-menu{position:absolute;z-index:20;top:38px;right:0;width:178px;padding:5px;border:1px solid var(--line);background:rgba(5,14,13,.98);box-shadow:0 18px 50px rgba(0,0,0,.48)}
nav .export-menu button{display:block;width:100%;border:0;text-align:left}
.export-menu button+button{border-top:1px solid var(--line)}

.formula-panel,.gallery-panel,.action-bar,.genome-preview{
  border:1px solid var(--line);background:var(--panel);backdrop-filter:blur(12px);
}
.formula-panel{position:absolute;z-index:4;top:84px;left:22px;width:340px;padding:15px 16px}
.panel-heading,.gallery-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.kicker{margin:0 0 6px;color:var(--lime);font:8px DM Mono,monospace;letter-spacing:1.2px;text-transform:uppercase}
.panel-heading strong,.gallery-head strong{font:500 13px Manrope,sans-serif}
.panel-heading>span{color:#81978c;font:9px DM Mono,monospace}
.equation{margin-top:13px;padding:9px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:#dce9df;font:9px/1.55 DM Mono,monospace}
.equation span{display:block;white-space:nowrap}
.equation span:first-child{color:#81978c;font-size:8px}
.traits{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 10px;margin-top:11px}
.traits span{color:var(--muted);font:8px DM Mono,monospace}
.traits b{margin-left:3px;color:#b9cabf;font-weight:400}
.lineage{margin:11px 0 0;padding-top:9px;border-top:1px solid var(--line);color:#71867c;font:8px DM Mono,monospace}

.gallery-panel{position:absolute;z-index:5;top:84px;right:22px;bottom:112px;width:292px;padding:15px;overflow:hidden}
.gallery-head button{display:none;width:28px;height:28px;border:1px solid var(--line);background:transparent;color:var(--soft);cursor:pointer}
.gallery-help{margin:8px 0 12px;color:var(--muted);font-size:9px;line-height:1.45}
.parent-slots{display:grid;grid-template-columns:1fr 1fr 27px;gap:5px;margin-bottom:10px}
.parent-slots span{overflow:hidden;padding:7px 8px;border:1px solid var(--line);color:#82968b;font:8px DM Mono,monospace;white-space:nowrap;text-overflow:ellipsis}
.parent-slots span b{margin-right:5px;color:var(--lime);font-weight:500}.parent-slots span:nth-child(2) b{color:var(--cyan)}
.parent-slots button{border:1px solid var(--line);background:transparent;color:var(--soft);cursor:pointer}.parent-slots button:hover{border-color:var(--line-bright);color:var(--lime)}
.archive{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;max-height:calc(100% - 137px);overflow:auto;scrollbar-width:thin;scrollbar-color:#385047 transparent}
.archive article{position:relative;aspect-ratio:1.5;overflow:hidden;border:1px solid var(--line);background:#081411;cursor:pointer}
.archive article:hover,.archive article.current{border-color:var(--line-bright)}
.archive article.current{box-shadow:inset 0 0 0 1px var(--lime)}
.archive article.selected-a{box-shadow:inset 0 0 0 2px var(--lime)}
.archive article.selected-b{box-shadow:inset 0 0 0 2px var(--cyan)}
.archive img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .25s ease}
.archive article:hover img{transform:scale(1.035)}
.archive span{position:absolute;right:4px;bottom:3px;padding:2px 4px;background:rgba(2,9,8,.82);color:#d2e6d7;font:7px DM Mono,monospace}
.archive .parent-pick{
  position:absolute;top:4px;right:4px;width:21px;height:21px;padding:0;border:1px solid rgba(211,239,218,.28);
  background:rgba(2,9,8,.88);color:var(--lime);cursor:pointer;font:9px DM Mono,monospace
}
.archive article.selected-b .parent-pick{color:var(--cyan)}
.archive .parent-pick:hover{border-color:var(--lime);background:#14251d}
.load-more{width:100%;height:29px;margin-top:7px;border:1px solid var(--line);background:transparent;color:var(--soft);cursor:pointer;font:8px DM Mono,monospace}
.load-more:hover{border-color:var(--line-bright);color:var(--lime)}

.genome-preview{position:fixed;z-index:15;width:330px;padding:8px;pointer-events:none;box-shadow:0 24px 65px rgba(0,0,0,.58)}
.genome-preview canvas{position:static;inset:auto;display:block;width:100%;height:auto;aspect-ratio:1.5;background:#081411}
.genome-preview>div{display:flex;justify-content:space-between;align-items:center;padding:9px 3px 2px}
.genome-preview strong{color:var(--lime);font:11px DM Mono,monospace;font-weight:400}
.genome-preview span{color:var(--muted);font:8px DM Mono,monospace}

.action-bar{
  position:absolute;z-index:8;left:50%;bottom:48px;width:min(660px,calc(100% - 700px));min-width:540px;
  display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px;
  transform:translateX(-50%);
}
.action-copy{min-width:0;padding-left:5px}
.action-copy span{display:block;overflow:hidden;margin-bottom:4px;color:var(--muted);font:7px DM Mono,monospace;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase}
.action-copy strong{display:block;overflow:hidden;font-size:10px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}
.breeding-controls{display:flex;gap:6px;flex:0 0 auto}
.breeding-controls label{display:block}
.breeding-controls label>span{display:block;margin:0 0 4px;color:var(--muted);font:7px DM Mono,monospace;text-transform:uppercase}
.breeding-controls select{
  width:96px;height:29px;padding:0 22px 0 7px;border:1px solid var(--line);border-radius:0;
  background:#0b1b17;color:#b6c6bc;cursor:pointer;font:8px DM Mono,monospace
}
.breeding-controls select:hover{border-color:var(--line-bright);color:var(--lime)}
.action-buttons{display:flex;gap:7px;flex:0 0 auto}
.action-buttons button{height:48px;border:0;cursor:pointer}
.action-buttons button:disabled{cursor:wait;opacity:.58}
.action-buttons span,.action-buttons small{display:block}
.action-buttons small{margin-top:2px;font:7px DM Mono,monospace;opacity:.65}
.action-buttons .secondary{min-width:142px;padding:0 15px;border:1px solid var(--line);background:#0b1b17;color:#b6c6bc;text-align:left;font-size:9px}
.action-buttons .secondary:hover{border-color:var(--line-bright);color:var(--lime)}
.action-buttons .primary{min-width:184px;display:flex;align-items:center;justify-content:space-between;padding:0 14px 0 16px;background:var(--lime);color:#102015;font-size:10px}
.action-buttons .primary i{font-style:normal;font-size:18px}

.toast{position:absolute;z-index:30;left:50%;bottom:122px;padding:8px 12px;border:1px solid var(--line);background:rgba(5,14,13,.94);color:#c7d9cd;font:8px DM Mono,monospace;transform:translateX(-50%)}
footer{position:absolute;z-index:9;left:0;right:0;bottom:0;height:30px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 22px;border-top:1px solid var(--line);background:rgba(5,14,13,.93);color:#60756b;font:7px DM Mono,monospace}
footer span:last-child{text-align:right}
.live{display:inline-block;width:5px;height:5px;margin-right:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 7px var(--lime)}

@media(max-width:1179px){
  .gallery-panel{
    display:none;top:auto;right:12px;bottom:128px;left:12px;width:auto;height:clamp(200px,32vh,260px);
    box-shadow:0 20px 60px rgba(0,0,0,.55)
  }
  .gallery-panel.open{display:block}
  .gallery-head button{display:block}
  .formula-panel{top:78px;left:12px;width:320px}
  .archive{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}
  .action-bar{width:min(620px,calc(100% - 48px));min-width:0}
}

@media(max-width:760px){
  header{height:62px;grid-template-columns:1fr auto;padding:0 10px}
  .generation-state{position:absolute;top:66px;left:11px;right:11px;grid-template-columns:62px 1fr}
  nav{gap:5px}
  nav>button,nav>.export-control>button{width:34px;padding:0;overflow:hidden;font-size:0}
  nav .gallery-toggle:before{content:'▦';font-size:14px}
  nav .gallery-toggle span{position:absolute;top:10px;right:43px;min-width:13px;height:13px;margin:0;font-size:6px}
  nav>.export-control>button:before{content:'↓';font-size:14px}
  .export-menu{right:0}
  .formula-panel{top:91px;left:10px;right:10px;width:auto;padding:12px 14px}
  .equation{margin-top:9px;padding:8px 0;font-size:7.5px}
  .equation span{overflow:hidden;text-overflow:ellipsis}
  .traits{gap:6px 8px;margin-top:8px}
  body.gallery-open .formula-panel{display:none}
  .gallery-panel,.gallery-panel.open{
    top:auto;right:10px;bottom:158px;left:10px;width:auto;height:clamp(190px,32vh,230px)
  }
  .gallery-help{display:none}
  .archive{grid-template-columns:repeat(3,1fr);max-height:calc(100% - 75px)}
  .genome-preview{display:none!important}
  .action-bar{right:10px;bottom:40px;left:10px;width:auto;flex-direction:column;gap:7px;padding:8px;transform:none}
  .action-copy{display:none}
  .breeding-controls{width:100%}
  .breeding-controls label{min-width:0;flex:1}
  .breeding-controls select{width:100%}
  .action-buttons{width:100%}
  .action-buttons button{height:46px}
  .action-buttons .secondary,.action-buttons .primary{min-width:0;flex:1}
  .toast{bottom:154px}
  footer{grid-template-columns:1fr auto;padding:0 10px}
  footer>span:nth-child(2){display:none}
}

@media(max-height:700px) and (max-width:1179px){
  body.gallery-open .formula-panel{display:none}
}

@media(max-height:520px) and (max-width:1179px){
  .gallery-panel,.gallery-panel.open{
    top:72px;right:10px;bottom:158px;left:auto;width:min(280px,44vw);height:auto
  }
  .gallery-help{display:none}
  .archive{grid-template-columns:repeat(2,1fr);max-height:calc(100% - 75px)}
  .action-copy{display:none}
}

@media(max-height:620px) and (min-width:761px){
  .action-bar{bottom:38px}
}

@media(max-height:620px) and (min-width:1180px){
  .formula-panel{top:74px}
  .gallery-panel{top:74px;bottom:94px}
}

@media(prefers-reduced-motion:reduce){
  .archive img,.generation-state b{transition:none}
}
