@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/geist-latin.woff2)format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/geist-mono-latin.woff2)format("woff2")}:root{--color-paper:oklch(16.5% .008 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-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-body:"Geist", system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"Geist Mono", ui-monospace, "JetBrains Mono", Menlo, Consolas, monospace;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--space-3xl:6rem;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.8125rem;--text-md:.875rem;--text-lg:1rem;--text-xl:1.25rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-micro:.12s;--dur-short:.22s;--radius-input:2px;--radius-card:2px;--shadow-popover:inset 0 1px 0 oklch(96% .006 80/.05), 0 12px 28px oklch(5% .008 80/.55);--z-dropdown:100;--z-skip:200;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:var(--text-lg)/1.55 var(--font-body);color:var(--color-ink);background:var(--color-paper)}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{overflow-x:clip}body{background:var(--color-paper);margin:0}::selection{background:color-mix(in oklch, var(--color-accent) 35%, transparent);color:var(--color-ink-strong)}.skip-link{top:0;left:var(--space-md);z-index:var(--z-skip);font-size:var(--text-sm);color:var(--color-paper);background:var(--color-ink);border-radius:0 0 var(--radius-input) var(--radius-input);transition:transform var(--dur-short) var(--ease-out);padding:10px 14px;font-weight:600;position:fixed;transform:translateY(-150%)}.skip-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;transform:translateY(0)}#app{max-width:64rem;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;text-wrap:balance;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:center;gap:var(--space-sm);min-width:0;display:flex}.brand-mark{background:var(--color-gene-light);width:26px;height:26px;color:var(--color-gene-letter);font-family:var(--font-mono);font-size:var(--text-lg);-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;place-items:center;font-weight:700;line-height:1;display:inline-grid}h1{font-size:var(--text-xl);letter-spacing:-.02em;color:var(--color-ink-strong);white-space:nowrap;margin:0;font-weight:700}.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);min-width:176px;box-shadow:var(--shadow-popover);flex-direction:column;gap:4px;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.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{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{font-weight:600;font-size:var(--text-md);color:var(--color-ink-strong)}.hint{color:var(--color-muted);font-weight:400;font-size:var(--text-sm)}.field-error{font-size:var(--text-sm);color:var(--color-error);margin:0;line-height:1.45}.field-error[hidden]{display:none}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);font-size:var(--text-md);resize:vertical;white-space:pre;overflow-wrap:normal;line-height:1.5;overflow-x:auto}input{font-family:var(--font-mono);font-size:var(--text-md)}@media (pointer:coarse){input,textarea{font-size:var(--text-lg)}}input:focus-visible,textarea:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;border-color:#0000}input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--color-error)}.input-group{align-items:stretch;gap:var(--space-xs);width:100%;display:flex}.input-group input{flex:1;width:auto;min-width:0}.input-presets{border:1px solid var(--color-rule);border-radius:var(--radius-input);flex:none;display:flex;overflow:hidden}.input-fill{background:var(--color-paper);width:auto;color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;white-space:nowrap;transition:background-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out);border:none;border-radius:0;flex:none;padding:0 10px;font-weight:600}.input-fill+.input-fill{border-left:1px solid var(--color-rule)}.input-fill:hover:not(:disabled){background:var(--color-panel);color:var(--color-accent);border-color:var(--color-rule)}.input-fill:focus-visible{outline-offset:-2px}.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{font-size:var(--text-md);color:var(--color-ink);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;min-height:44px;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;font-weight:600;font-size:var(--text-md);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}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[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-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-muted);margin:18px 0 0}.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{gap:var(--space-lg);flex-direction:column;display:flex}.report>.generation{margin-top:var(--space-md)}.report-head{border-top:1px solid var(--color-rule);padding-top:14px}.report-target{flex-wrap:wrap;align-items:center;gap:10px;margin:0;display:flex}.report-label{font-size:var(--text-md);color:var(--color-muted)}.report-label:after{content:":"}.target-gene{font-family:var(--font-mono);font-size:var(--text-xl);letter-spacing:.12em;color:var(--color-ink-strong);font-weight:600}.target-gene .genotype{--circle-size:26px}.resolved{color:var(--color-muted);align-items:center;gap:7px;display:inline-flex}.report-summary{font-size:var(--text-md);font-variant-numeric:tabular-nums;color:var(--color-muted);margin:8px 0 0}.generation h2{font-size:var(--text-lg);color:var(--color-ink-strong);border-bottom:1px solid var(--color-rule);flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0 0 12px;padding-bottom:6px;font-weight:600;display:flex}.gen-note,.gen-count{font-size:var(--text-md);color:var(--color-muted);white-space:nowrap;font-weight:400}.gen-count{font-variant-numeric:tabular-nums;margin-left:auto}#app[data-show-positions=true]{max-width:74.5rem}.steps,.clone-grid{column-gap:var(--space-md);row-gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(min(19rem,100%),19rem));align-items:start;margin:0;padding:0;list-style:none;display:grid}#app[data-show-positions=true] .steps,#app[data-show-positions=true] .clone-grid{grid-template-columns:repeat(auto-fill,minmax(min(22.5rem,100%),22.5rem))}.clone-grid{row-gap:2px}.step{background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-card);max-width:100%;padding:var(--space-md);transition:border-color var(--dur-short) var(--ease-out);flex-direction:column;gap:14px;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))}}.step:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.report-head,.planting,.generation h2{transition:opacity var(--dur-short) var(--ease-out)}.report.focus-mode .report-head,.report.focus-mode .planting,.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)}.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-weight:500;font-size:var(--text-sm);color:var(--color-muted);text-align:right;flex:none}.slot-hint{font-size:var(--text-2xs);opacity:.8;-webkit-user-select:none;user-select:none;margin-top:3px;font-weight:400;line-height:1.25;display:block}.step-head .slot-label{color:var(--color-ink-strong);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{text-box:cap alphabetic;display:block}.gene-circle.heavy{background:var(--color-gene-heavy)}.gene-circle.light{background:var(--color-gene-light)}.gene-sep{font-size:var(--text-2xs);color:var(--color-muted);-webkit-user-select:none;user-select:none}.gene.bred{align-items:center;display:inline-flex}.gene.bred .genotype{outline:2px dotted var(--color-muted);outline-offset:2px;border-radius:999px}.gene.gen2 .genotype{outline-style:dashed}.gene.any{font-size:var(--text-md);color:var(--color-muted);white-space:nowrap}.planting{gap:var(--space-xs);flex-direction:column;display:flex}.checklist summary{font-weight:600;font-size:var(--text-lg);color:var(--color-ink-strong);cursor:pointer}.checklist[open] summary{margin-bottom:14px}.checklist summary::marker{color:var(--color-muted)}.faq summary::marker{color:var(--color-muted)}.clone-group+.clone-group{margin-top:18px}.clone-group-title{font-weight:400;font-size:var(--text-md);color:var(--color-muted);margin:0 0 8px}.clone-legend{font-size:var(--text-sm);color:var(--color-muted);margin:-4px 0 10px}.clone-item{flex-wrap:wrap;align-items:center;gap:2px 10px;min-width:0;padding:5px 4px;display:flex}.clone-pos{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-lg);color:var(--color-muted);-webkit-user-select:none;user-select:none;flex:none;grid-template-columns:.2em 2ch .2em 2ch;place-items:center;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;font-size:var(--text-sm);color:var(--color-ink);white-space:nowrap;flex:none;font-weight:600}.notice{background:var(--color-panel);border:1px solid var(--color-rule);border-radius:var(--radius-input);padding:16px 18px}.notice h2{font-size:var(--text-lg);color:var(--color-ink-strong);margin:0}.notice p{font-size:var(--text-md);color:var(--color-muted);margin:6px 0 0}.faq{margin-top:var(--space-2xl);border-top:1px solid var(--color-rule);flex-direction:column;display:flex}.faq h2{font-size:var(--text-lg);color:var(--color-ink-strong);margin:14px 0 2px;font-weight:700}.faq details{border-bottom:1px solid var(--color-rule);padding:12px 2px}.faq summary:focus-visible,.checklist summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.faq summary{font-weight:600;font-size:var(--text-md);color:var(--color-ink-strong);cursor:pointer}.faq details[open] summary{margin-bottom:8px}.faq p{font-size:var(--text-md);color:var(--color-ink);text-wrap:pretty;max-width:65ch;margin:0 0 10px;line-height:1.65}.faq p:last-child{margin-bottom:0}.faq a{color:var(--color-accent);text-underline-offset:2px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.15s!important;animation-duration:.15s!important}}
