:root{--color-paper:oklch(16.5% .008 80);--color-paper-2:oklch(20% .01 80);--color-panel:oklch(22.5% .01 80);--color-ink:oklch(94% .006 80);--color-ink-strong:oklch(97% .005 80);--color-muted:oklch(72% .008 80);--color-rule:oklch(30% .008 80);--color-accent:oklch(80% .07 235);--color-accent-hover:oklch(84% .06 235);--color-on-accent:oklch(24% .03 235);--color-focus:oklch(80% .07 235);--color-error:oklch(72% .12 30);--color-gene-heavy:oklch(49.74% .1204 32.71);--color-gene-light:oklch(57% .1368 128.84);--color-gene-letter:oklch(100% 0 0);--font-display:ui-monospace, "JetBrains Mono", "Geist Mono", Menlo, Consolas, monospace;--font-body:system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "JetBrains Mono", "Geist Mono", Menlo, Consolas, monospace;--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--space-3xl:6rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.25rem;--text-lg:1.5625rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--radius-input:2px;--radius-card:2px;--z-base:1;--z-raised:10;--z-dropdown:100;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:16px/1.55 var(--font-body);color:var(--color-ink);background:var(--color-paper)}*{box-sizing:border-box}html,body{overflow-x:clip}body{margin:0}#app{max-width:68rem;padding:var(--space-xl) clamp(var(--space-md), 4vw, var(--space-xl)) var(--space-3xl);min-width:0;margin:0 auto}h1,h2,h3{overflow-wrap:anywhere;min-width:0;font-style:normal}#app>header{justify-content:space-between;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-rule);display:flex}.brand{align-items:baseline;gap:var(--space-sm);min-width:0;display:flex}h1{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink-strong);white-space:nowrap;margin:0;font-size:20px;font-weight:700}.tool-meta{font-family:var(--font-mono);letter-spacing:.06em;color:var(--color-muted);white-space:nowrap;margin:0;font-size:12px}.debug-menu{position:relative}.debug-toggle{min-width:44px;min-height:44px;color:var(--color-muted);background:0 0;border-color:#0000;justify-content:center;align-items:center;padding:6px;display:inline-flex}.debug-toggle:hover:not(:disabled),.debug-toggle[aria-expanded=true]{color:var(--color-accent);background:var(--color-panel);border-color:var(--color-rule)}.debug-toggle svg{width:18px;height:18px}.debug-popover{z-index:var(--z-dropdown);background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-card);flex-direction:column;gap:4px;min-width:176px;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 10px 24px #00000059}.debug-popover[hidden]{display:none}.debug-popover button{text-align:left;white-space:nowrap;width:100%}form{gap:var(--space-lg);flex-direction:column;margin-top:2px;display:flex}.workbench{gap:var(--space-lg);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=60rem){.workbench{grid-template-columns:1.15fr .85fr;align-items:start}}.panel{background:var(--color-paper-2);border:1px solid var(--color-rule);border-radius:var(--radius-card);padding:var(--space-md);min-width:0}.side{gap:var(--space-md);flex-direction:column;min-width:0;display:flex}.field{flex-direction:column;gap:6px;min-width:0;display:flex}label{color:var(--color-ink-strong);font-size:13.5px;font-weight:600}.hint{color:var(--color-muted);font-size:13px;font-weight:400}input,textarea{width:100%;font:inherit;color:var(--color-ink);background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-input);min-width:0;padding:9px 11px}textarea{font-family:var(--font-mono);resize:vertical;white-space:pre;overflow-wrap:normal;font-size:13.5px;line-height:1.5;overflow-x:auto}input{font-family:var(--font-mono);font-size:14px}@media (pointer:coarse){input,textarea{font-size:16px}}input:focus-visible,textarea:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;border-color:#0000}.input-group{background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-input);align-items:stretch;width:100%;display:flex;overflow:hidden}.input-group input{background:0 0;border:none;border-radius:0;flex:1;width:auto;min-width:0}.input-group input:focus-visible{border:none;outline:none}.input-group:focus-within{outline:2px solid var(--color-focus);outline-offset:1px;border-color:#0000}.input-fill{border:none;border-left:1px solid var(--color-rule);background:var(--color-paper);width:auto;color:var(--color-muted);font-family:var(--font-mono);letter-spacing:.04em;white-space:nowrap;border-radius:0;flex:none;padding:0 10px;font-size:11.5px;font-weight:600}.input-fill:hover:not(:disabled){background:var(--color-panel);color:var(--color-accent);border-color:var(--color-rule)}.controls{align-items:stretch;gap:var(--space-sm);flex-direction:column;display:flex}@media (width>=40rem){.controls-row{gap:var(--space-sm);align-items:flex-end;display:flex}.controls-row .field{flex:1}}.checkbox{color:var(--color-ink);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;min-height:44px;font-size:13.5px;font-weight:400;display:inline-flex}.checkbox input{width:auto;accent-color:var(--color-accent);background:0 0;border:none;margin:0;padding:0}button{font:inherit;color:var(--color-ink-strong);background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-input);cursor:pointer;white-space:nowrap;transition:background-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out);padding:8px 13px;font-size:13.5px;font-weight:600}button:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}button:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}button:active:not(:disabled){transform:translateY(1px)}button[type=submit]{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-paper);min-height:48px;padding:12px 24px}button[type=submit]:hover:not(:disabled){background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent)}button:disabled{opacity:.5;cursor:default}.status{min-height:1.5em;font-family:var(--font-mono);color:var(--color-muted);margin:18px 0 0;font-size:13px}.status.error{color:var(--color-error)}.progress{width:100%;height:4px;accent-color:var(--color-accent);border:none;border-radius:0;margin-top:12px;display:block;overflow:hidden}.progress[hidden]{display:none}.progress::-webkit-progress-bar{background:var(--color-rule)}.progress::-webkit-progress-value{background:var(--color-accent)}.progress::-moz-progress-bar{background:var(--color-accent)}.output{min-width:0;margin-top:18px}.report{flex-direction:column;display:flex}.report>.generation{margin-top:var(--space-xl)}.report>.generation:first-of-type{margin-top:var(--space-md)}.report-head{border-top:1px solid var(--color-rule);border-bottom:1px solid var(--color-rule);padding:12px 0 10px}.report-target{flex-wrap:wrap;align-items:center;gap:10px;margin:0;display:flex}.report-label{color:var(--color-muted);font-size:14px}.report-label:after{content:":"}.target-gene{font-family:var(--font-mono);letter-spacing:.12em;color:var(--color-ink-strong);font-size:21px;font-weight:600}.target-gene .genotype{--circle-size:26px}.resolved{color:var(--color-muted);align-items:center;gap:7px;display:inline-flex}.badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;border:1px solid var(--color-accent);border-radius:var(--radius-input);color:var(--color-accent);white-space:nowrap;padding:6px 7px;font-size:10px;font-weight:600}.badge.final{background:var(--color-accent);color:var(--color-on-accent)}.stats{border-top:1px solid var(--color-rule);grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px 20px;margin:14px 0 0;padding-top:12px;display:grid}.stat dt{color:var(--color-muted);font-size:12.5px}.stat dd{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-ink-strong);margin:2px 0 0;font-size:14.5px}.generation h2{border-bottom:1px solid var(--color-rule);justify-content:space-between;align-items:center;gap:12px;margin:0 0 10px;padding-bottom:5px;display:flex}.gen-tag{font-family:var(--font-mono);letter-spacing:.08em;color:var(--color-ink-strong);background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-input);white-space:nowrap;padding:6px 8px;font-size:12px;font-weight:600}.gen-count{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-muted);white-space:nowrap;margin-left:auto;font-size:12px;font-weight:400}.steps{align-items:flex-start;gap:var(--space-md);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.step{background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-card);width:fit-content;max-width:100%;padding:var(--space-md);transition:border-color var(--dur-micro) var(--ease-out);flex-direction:column;gap:10px;display:flex}@media (hover:hover) and (pointer:fine){.report:not(.focus-mode) .step:hover{border-color:color-mix(in oklch, var(--color-accent) 40%, var(--color-rule))}}.report-head,.checklist,.generation h2{transition:opacity var(--dur-short) var(--ease-out)}.report.focus-mode .report-head,.report.focus-mode .checklist,.report.focus-mode .generation h2,.report.focus-mode .step:not(.focused){opacity:.25}.step.focused{background-color:var(--color-panel);outline:1px solid var(--color-rule);border-radius:var(--radius-input)}.step-head{flex-wrap:wrap;align-items:center;gap:8px 10px;min-width:0;padding-left:66px;display:flex}.step-result{border-bottom:1px solid var(--color-rule);padding-bottom:7px;display:inline-flex}.round{flex-direction:column;gap:14px;min-width:0;display:flex}.slot{align-items:center;gap:10px;min-width:0;display:flex}.slot.donors{align-items:flex-start}.slot.donors .slot-values{flex-direction:column;align-items:flex-start;gap:12px}.slot-label{width:56px;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);text-align:right;flex:none;font-size:12px;font-weight:600}.slot-values{flex-wrap:wrap;align-items:center;gap:5px 10px;min-width:0;display:flex}.genotype{--circle-size:22px;letter-spacing:normal;align-items:center;gap:3px;width:fit-content;min-width:0;line-height:1;display:flex}.gene-circle{width:var(--circle-size);height:var(--circle-size);font-family:var(--font-mono);font-size:calc(var(--circle-size) * .6);color:var(--color-gene-letter);border-radius:50%;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex}.gene-letter{display:block}.gene-circle.heavy{background:var(--color-gene-heavy)}.gene-circle.light{background:var(--color-gene-light)}.gene-sep{color:var(--color-muted);-webkit-user-select:none;user-select:none;font-size:11px}.gene.bred{align-items:center;display:inline-flex}.gene.bred .genotype{outline:2px dotted var(--color-accent);outline-offset:2px;border-radius:999px}.gene.gen2 .genotype{outline-style:dashed}.gene.any{font-family:var(--font-mono);letter-spacing:.08em;background:var(--color-paper);border:1px solid var(--color-rule);border-radius:var(--radius-input);color:var(--color-muted);white-space:nowrap;padding:5px 8px;font-size:13px;display:inline-block}.planting{gap:var(--space-xs);flex-direction:column;display:flex}.checklist{border-bottom:1px solid var(--color-rule);padding-bottom:12px}.checklist summary{color:var(--color-ink-strong);cursor:pointer;grid-template-columns:auto 1fr auto;align-items:baseline;gap:8px;font-size:15px;font-weight:600;list-style:none;display:grid}.checklist summary:before{content:"▸";color:var(--color-muted);font-size:11px}.checklist[open] summary:before{content:"▾"}.checklist[open] summary{margin-bottom:14px}.clone-group+.clone-group{margin-top:18px}.clone-group-title{color:var(--color-muted);margin:0 0 8px;font-size:14px;font-weight:400}.clone-grid{grid-template-columns:repeat(auto-fill,minmax(min(250px,100%),1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.clone-item{background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-input);flex-wrap:wrap;align-items:center;gap:2px 10px;min-width:0;padding:6px 10px;display:flex}.clone-pos{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-muted);-webkit-user-select:none;user-select:none;flex:none;grid-template-columns:.2em 2ch .2em 2ch;place-items:center;font-size:16px;line-height:1;display:inline-grid}.clone-pos-icon{width:16px;height:16px}.clone-pos-icon.right{transform:rotate(-90deg)}.clone-pos-part{display:block}.gene-slot{flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;display:inline-flex}.clone-count{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-accent);border:1px solid var(--color-rule);border-radius:var(--radius-input);white-space:nowrap;background:0 0;flex:none;margin-left:auto;padding:6px;font-size:12px;font-weight:600}.notice{background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-input);padding:16px 18px}.notice h2{color:var(--color-ink-strong);margin:0;font-size:17px}.notice p{color:var(--color-muted);margin:6px 0 0;font-size:14px}.faq{margin-top:var(--space-2xl);border-top:1px solid var(--color-rule);flex-direction:column;display:flex}.faq h2{font-family:var(--font-display);letter-spacing:.04em;color:var(--color-ink-strong);margin:14px 0 2px;font-size:15px;font-weight:700}.faq details{border-bottom:1px solid var(--color-rule);padding:12px 2px}.faq summary{color:var(--color-ink-strong);cursor:pointer;align-items:baseline;gap:8px;font-size:14px;font-weight:600;list-style:none;display:flex}.faq summary:before{content:"▸";color:var(--color-muted);font-size:11px}.faq details[open] summary:before{content:"▾"}.faq details[open] summary{margin-bottom:8px}.faq p{color:var(--color-ink);max-width:65ch;margin:0 0 10px;font-size:14px}.faq p:last-child{margin-bottom:0}.faq a{color:var(--color-accent);text-underline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.15s!important;animation-duration:.15s!important}}
