:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f1e8;--surface:#fbf9f3;--surface-2:#ece7da;--surface-3:#e2dccd;--ink:#2a2620;--ink-soft:#6b6558;--ink-strong:#100e0a;--line:#ded8c9;--line-strong:#c9c2b0;--accent:#9caf88;--accent-ink:#5f7050;--accent-contrast:#2a2620;--accent-soft-bg:#9caf8829;--danger:#b5493f;--danger-contrast:#fff;--hetero:#8a5a1e;--info:#3a6ea5;--shadow:#3c342829;--shadow-strong:#3c342847;--scrim:#3a342a8c;--scrim-strong:#3a342ab8;--focus-ring:var(--accent-ink);--danger-soft-bg:#b5493f1a;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-pill:999px;--paper:#fff;--mat:#e9e3d3;--mat-shadow:#3c342833;--mat-bevel:#3c342824;--theme-transition:.24s ease;--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;--font-display:Georgia, "Iowan Old Style", "Times New Roman", serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fg:var(--ink);--hint-fg:var(--ink-soft);--hint-kbd-bg:var(--surface-2);--hint-kbd-fg:var(--ink)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#1a1a1a;--surface:#232323;--surface-2:#2a2a2a;--surface-3:#333;--ink:#e8e8e8;--ink-soft:#949494;--ink-strong:#fff;--line:#333;--line-strong:#444;--accent:#9caf88;--accent-ink:#b9cba6;--accent-contrast:#1a1a1a;--accent-soft-bg:#9caf8824;--danger:#d47070;--danger-contrast:#fff;--danger-soft-bg:#d4707024;--hetero:#e8a869;--info:#6ba0e8;--shadow:#0006;--shadow-strong:#0000008c;--scrim:#0f0f0fe6;--scrim-strong:#000000f2;--focus-ring:var(--accent);--paper:#fff;--mat:#2a2621;--mat-shadow:#00000080;--mat-bevel:#0000006b}body,.collection-card,.picker-card,.offspring-card,.gene-card,.lineage-card,.breeder-slot,#gene-panel,#route-menu a,#route-menu button,.card-actions button,.a4-actions button{transition:background-color var(--theme-transition), color var(--theme-transition), border-color var(--theme-transition)}html,body{background-color:var(--bg);height:100%;color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;margin:0;padding:0;font-size:15px}body{background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='220'%20height='220'%3E%3Cfilter%20id='n'%3E%3CfeTurbulence%20type='fractalNoise'%20baseFrequency='0.62'%20numOctaves='3'%20stitchTiles='stitch'/%3E%3CfeColorMatrix%20type='saturate'%20values='0'/%3E%3CfeColorMatrix%20type='matrix'%20values='1%200%200%200%200.045%200%201%200%200%200.017%200%200%201%200%20-0.022%200%200%200%201%200'/%3E%3CfeComponentTransfer%3E%3CfeFuncA%20type='linear'%20slope='0.24'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect%20width='220'%20height='220'%20filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat}:focus:not(:focus-visible){outline:none}button,[role=button],.card-thumb,.mosaic-tile{transition:transform 90ms}button:active,[role=button]:active,.card-thumb:active,.mosaic-tile:active{transform:scale(.97)}body{place-items:center;min-height:100vh;display:grid}#art{background:var(--paper);aspect-ratio:1;width:min(90vw,88vh);height:min(90vw,88vh);display:block}body.route-home{--grow-header-band:calc(env(safe-area-inset-top,0px) + 140px);--grow-deck-band:128px;--grow-caption-band:116px;--grow-side-gutter:clamp(220px, 26vw, 360px)}.gg-plate{background:var(--mat);border-radius:var(--radius-lg);box-shadow:inset 0 0 0 1px var(--mat-bevel), inset 0 2px 5px var(--mat-bevel), 0 1px 2px var(--mat-shadow), 0 14px 32px var(--mat-shadow);box-sizing:border-box;padding:clamp(8px,1vw,14px)}canvas.gg-plate{border:clamp(9px, 1vw, 15px) solid var(--mat);padding:0}#hint{text-align:center;color:var(--ink-soft);letter-spacing:.02em;-webkit-user-select:none;user-select:none;pointer-events:none;font-size:12px;position:fixed;bottom:14px;left:0;right:0}#hint kbd,#swipe-summary kbd{border-radius:var(--radius-sm);background:var(--surface-2);color:var(--ink);margin:0 2px;padding:1px 6px;font-family:inherit;font-size:11px;display:inline-block}#hint a{color:var(--ink-soft);border-bottom:1px dotted var(--ink-soft);pointer-events:auto;text-decoration:none}#hint a:hover{color:var(--ink);border-bottom-color:var(--ink)}#swipe-progress{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-lg);letter-spacing:.05em;-webkit-user-select:none;user-select:none;z-index:2;padding:4px 12px;font-size:12px;position:fixed;top:20px;right:24px}#swipe-summary{background:var(--scrim);color:var(--ink);z-index:3;text-align:center;place-items:center;padding:20px;display:grid;position:fixed;inset:0}#swipe-summary h2{margin:0 0 12px;font-size:18px;font-weight:500}#swipe-summary p{color:var(--ink);margin:4px 0}#swipe-summary .hint{color:var(--ink-soft);margin-top:16px;font-size:12px}#route-menu{color:var(--ink-soft);z-index:10;flex-direction:column;align-items:flex-end;gap:clamp(4px,.4vw,10px);font-size:clamp(15px,1.3vw,22px);display:flex;position:fixed;top:50%;right:clamp(20px,4vw,88px);transform:translateY(-50%)}.nav-links{display:contents}#route-menu a,#route-menu button{color:var(--ink-soft);border-radius:var(--radius-md);cursor:pointer;background:0 0;border:none;padding:clamp(6px,.5vw,10px) clamp(12px,.8vw,18px);font-family:inherit;font-size:clamp(15px,1.3vw,22px);text-decoration:none}#route-menu a.active{color:var(--accent-ink)}#route-menu a:hover,#route-menu button:hover{background:var(--surface-2);color:var(--ink)}#route-menu a:active,#route-menu button:active{transform:scale(.96)}#route-menu .sep{display:none}#route-menu .sep-break{background:var(--line-strong);width:26px;height:1px;margin:6px 12px;display:block}#route-menu .menu-danger{color:var(--danger)}#route-menu .menu-danger:hover{background:var(--danger);color:var(--danger-contrast)}#route-menu #menu-auth{margin-top:8px}#route-menu .menu-handle-slot{align-items:center;gap:6px;display:inline-flex}#route-menu a.menu-handle{color:var(--accent-ink,var(--ink));font-weight:500;text-decoration:none}#route-menu a.menu-handle:hover{text-decoration:underline}#route-menu .menu-handle-form{align-items:center;gap:4px;display:inline-flex}#route-menu .menu-handle-at{color:var(--ink-soft)}#route-menu .menu-handle-input{width:8.5em;font:inherit;color:var(--ink);background:var(--surface);border:.5px solid var(--line);border-radius:var(--radius-pill,6px);padding:2px 8px}#route-menu .menu-handle-msg{color:var(--ink-soft);font-size:.85em}#route-menu .menu-handle-msg.is-error{color:var(--danger)}#action-bar{left:50%;bottom:max(env(safe-area-inset-bottom), 16px);z-index:20;background:var(--surface);border-radius:var(--radius-pill);border:.5px solid var(--line);box-shadow:0 4px 18px var(--shadow);gap:6px;padding:6px;display:flex;position:fixed;transform:translate(-50%)}.action-btn{appearance:none;color:var(--ink);border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:none;min-height:44px;padding:10px 18px;font-family:inherit;font-size:14px}.action-btn:hover{background:var(--surface-2)}.action-btn:disabled{opacity:.6;cursor:default}.action-btn-primary{background:var(--accent);color:var(--accent-contrast)}.action-btn-primary:hover{background:var(--accent-ink);color:var(--accent-contrast)}#grow-sidebar{z-index:18;flex-direction:column;gap:clamp(16px,1.1vw,24px);width:clamp(190px,14vw,250px);display:flex;position:fixed;top:50%;left:clamp(24px,5vw,88px);transform:translateY(-50%)}.gs-group{flex-direction:column;gap:clamp(8px,.5vw,12px);display:flex}.gs-btn{appearance:none;text-align:left;border:.5px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius-lg);cursor:pointer;flex-direction:column;gap:2px;padding:clamp(10px,.7vw,14px) clamp(14px,.9vw,18px);font-family:inherit;transition:border-color .14s,background .14s,box-shadow .16s,transform 90ms;display:flex}.gs-btn:hover{border-color:var(--line-strong);background:var(--surface-2)}.gs-btn:active{transform:scale(.98)}.gs-label{font-size:clamp(15px,1vw,19px);line-height:1.1}.gs-desc{color:var(--ink-soft);font-size:clamp(11px,.7vw,14px)}.gs-btn-primary{background:var(--accent);border-color:#0000}.gs-btn-primary .gs-label{color:var(--accent-contrast)}.gs-btn-primary .gs-desc{color:var(--accent-contrast);opacity:.82}.gs-btn-primary:hover{background:var(--accent-ink)}.gs-quiet{flex-direction:row;gap:4px;padding-left:2px}.gs-mini{appearance:none;color:var(--ink-soft);border-radius:var(--radius-md);cursor:pointer;background:0 0;border:none;padding:4px 9px;font-family:inherit;font-size:clamp(12px,.75vw,15px)}.gs-mini:hover{background:var(--surface-2);color:var(--ink)}.gs-spotlight{box-shadow:0 0 0 3px var(--accent), 0 8px 24px var(--shadow);border-color:var(--accent-ink)!important}#grow-tour{z-index:60;pointer-events:none;position:fixed;inset:0}.tour-coach{background:var(--surface);border:.5px solid var(--line);border-radius:var(--radius-lg);width:300px;max-width:78vw;box-shadow:0 18px 50px var(--shadow);pointer-events:auto;padding:18px 18px 14px;position:absolute}.tour-title{margin-bottom:6px;font-size:16px}.tour-body{color:var(--ink);font-size:13.5px;line-height:1.5}.tour-body p{margin:0 0 8px}.tour-explain{color:var(--ink-soft);border-top:.5px solid var(--line);margin-top:2px;padding-top:9px}.tour-foot{justify-content:space-between;align-items:center;margin-top:10px;display:flex}.tour-count{color:var(--ink-soft);font-size:11px}.tour-skip{appearance:none;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:4px;font-family:inherit;font-size:12px}.tour-next{appearance:none;background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius-pill);cursor:pointer;border:none;padding:7px 16px;font-family:inherit;font-size:13px}.tour-next[hidden]{display:none}.tour-deck .tour-coach{width:auto;max-width:none;left:12px;right:12px}@media (width>=641px){body.route-home #action-bar,#grow-deck{display:none}body.route-home #grow-caption{z-index:6;padding:12px 24px calc(env(safe-area-inset-bottom,0px) + 14px);text-align:center;pointer-events:none;flex-direction:column;align-items:center;gap:5px;display:flex;position:fixed;bottom:0;left:0;right:0}body.route-home #grow-caption>*{pointer-events:auto}.caption-body{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:4px 10px;max-width:min(760px,92vw);display:inline-flex}.caption-id{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-soft);font-size:11px}body.route-home #grow-caption #genome-fingerprint{text-align:center;pointer-events:auto;max-width:min(700px,90vw);line-height:1.5;position:static}body.route-home #grow-caption .fingerprint-help-btn{position:static}body.route-home #art{width:min(90vw, calc(100vw - var(--grow-side-gutter) * 2), calc(100vh - var(--grow-caption-band) * 2));height:min(90vw, calc(100vw - var(--grow-side-gutter) * 2), calc(100vh - var(--grow-caption-band) * 2))}}.toast{left:50%;bottom:calc(max(env(safe-area-inset-bottom), 16px) + 64px);background:var(--ink);color:var(--bg);border-radius:var(--radius-pill);z-index:30;opacity:0;pointer-events:none;padding:10px 18px;font-size:14px;transition:opacity .2s,transform .2s;position:fixed;transform:translate(-50%)translateY(8px)}.toast-in{opacity:1;transform:translate(-50%)translateY(0)}@media (prefers-reduced-motion:reduce){.toast{transition:opacity .12s linear;transform:translate(-50%)}.toast-in{transform:translate(-50%)}}.toast-msg{pointer-events:none}.toast:has(.toast-action){align-items:center;gap:14px;display:inline-flex}.toast-action{pointer-events:auto;appearance:none;color:var(--accent);letter-spacing:.02em;cursor:pointer;border-radius:var(--radius-md);background:0 0;border:none;margin:-2px -2px -2px 0;padding:2px 4px;font-family:inherit;font-size:14px;font-weight:600}.toast-action:hover{text-decoration:underline}.offline-chip{left:max(env(safe-area-inset-left), 16px);bottom:calc(max(env(safe-area-inset-bottom), 16px) + 64px);background:var(--surface);max-width:min(78vw,320px);color:var(--ink-soft);border:1px solid var(--line);border-radius:var(--radius-pill);box-shadow:0 2px 10px var(--shadow);font-family:var(--font-ui);letter-spacing:.01em;z-index:29;opacity:0;pointer-events:none;align-items:center;gap:8px;padding:8px 14px;font-size:13px;transition:opacity .2s,transform .2s;display:inline-flex;position:fixed;transform:translateY(6px)}.offline-chip-in{opacity:1;transform:translateY(0)}.offline-chip-dot{background:var(--hetero);border-radius:50%;flex:none;width:7px;height:7px}.offline-chip-msg{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media (prefers-reduced-motion:reduce){.offline-chip{transition:opacity .12s linear;transform:none}.offline-chip-in{transform:none}}.gs-rollmode,.deck-rollmode{color:var(--ink-soft);letter-spacing:.02em;text-align:center;font-family:inherit;font-size:12px}.gs-rollmode{text-align:left;padding-left:2px}.gs-btn.is-rolling,.deck-btn.is-rolling{opacity:.6}.gs-btn.is-rolling{cursor:progress}.grow-roll-cue{z-index:4;pointer-events:none;border-radius:var(--radius-lg);opacity:0;transition:opacity .16s;overflow:hidden}.grow-roll-cue.is-active{opacity:1;background:#9caf881a}.grow-roll-cue:after{content:"";background:linear-gradient(115deg,#0000 42%,#ffffff4d 50%,#0000 58%);position:absolute;inset:-40%;transform:translate(-65%)}.grow-roll-cue.is-active:after{animation:1.15s ease-in-out infinite grow-roll-sheen}@keyframes grow-roll-sheen{0%{transform:translate(-65%)}to{transform:translate(65%)}}.grow-mutate-ghost{z-index:4;pointer-events:none;display:block}.swipe-verdict{z-index:5;pointer-events:none;opacity:0;justify-content:center;align-items:flex-start;padding-top:14%;display:flex;position:fixed}.swipe-verdict-label{border-radius:var(--radius-pill);background:var(--surface);text-transform:lowercase;border:2px solid;padding:8px 22px;font-family:Georgia,Times New Roman,serif;font-size:clamp(28px,9vw,52px);line-height:1}.swipe-verdict[data-kind=keep] .swipe-verdict-label{color:var(--accent-ink)}.swipe-verdict[data-kind=new] .swipe-verdict-label{color:var(--ink-soft)}#grow-undo-chip{left:50%;bottom:calc(var(--grow-deck-band,128px) + env(safe-area-inset-bottom,0px) + 20px);z-index:22;appearance:none;border:.5px solid var(--line-strong);background:var(--surface);color:var(--ink-soft);border-radius:var(--radius-pill);box-shadow:0 6px 18px var(--shadow);cursor:pointer;opacity:0;pointer-events:none;padding:7px 15px;font-family:inherit;font-size:13px;transition:opacity .18s,transform .18s;position:fixed;transform:translate(-50%)translateY(6px)}#grow-undo-chip.is-shown{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(0)}@media (width>=641px){#grow-undo-chip{bottom:calc(var(--grow-caption-band,116px) + 20px)}}#grow-top,#grow-stats,#swipe-hint,#nav-toggle,#nav-scrim{display:none}.grow-mark{color:var(--ink);font-family:Georgia,Times New Roman,serif;font-size:19px;text-decoration:none}.grow-menu-btn{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-md);cursor:pointer;border:none;padding:7px 13px;font-family:inherit;font-size:13px}@media (width<=640px){#grow-sidebar{display:none}body.route-home #grow-top{box-sizing:border-box;z-index:30;align-items:center;gap:10px;padding:10px 14px;display:flex;position:fixed;top:0;left:0;right:0}#nav-scrim{background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(7px);z-index:30;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .24s,visibility 0s linear .24s;display:block;position:fixed;inset:0}body.nav-open #nav-scrim{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .24s}body.route-home #grow-stats{left:14px;right:14px;top:calc(env(safe-area-inset-top,0px) + 54px);text-align:center;color:var(--ink-soft);flex-direction:column;align-items:center;gap:5px;display:flex;position:fixed}.grow-gnm{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-soft);font-size:11px}.grow-stat-line{font-family:var(--font-display);letter-spacing:.01em;color:var(--ink);font-size:16px;line-height:1.2}.grow-parents{color:var(--ink-soft);flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2px 6px;font-size:11px;display:inline-flex}.grow-parents-label{font-family:var(--font-display);letter-spacing:.02em}.grow-parents a{color:var(--ink);border-bottom:1px dotted var(--ink);text-decoration:none}.grow-parent-dim{color:var(--ink-soft)}body.route-home #art{position:relative;top:0}button.grow-fingerprint{appearance:none;cursor:pointer;width:100%;font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink-soft);text-align:center;-webkit-line-clamp:2;max-width:100%;-webkit-text-decoration:underline dotted var(--line-strong);text-decoration:underline dotted var(--line-strong);text-underline-offset:3px;background:0 0;border:none;-webkit-box-orient:vertical;padding:1px 0;font-size:11px;line-height:1.5;display:-webkit-box;overflow:hidden}button.grow-fingerprint:active{color:var(--ink);-webkit-text-decoration-color:var(--accent-ink);text-decoration-color:var(--accent-ink)}#grow-deck{z-index:21;padding:16px 16px calc(env(safe-area-inset-bottom,0px) + 14px);background:linear-gradient(to top, var(--bg) 66%, transparent);pointer-events:none;flex-direction:column;gap:9px;display:flex;position:fixed;bottom:0;left:0;right:0}#grow-deck>*{pointer-events:auto}.deck-primary{gap:10px;display:flex}.deck-btn{appearance:none;border:.5px solid var(--line-strong);background:var(--surface);color:var(--ink);border-radius:var(--radius-lg);cursor:pointer;min-height:52px;font-family:inherit;font-size:16px;transition:transform 90ms,background .15s,border-color .15s}.deck-btn:active{transform:scale(.97)}.deck-lg{flex:1;font-size:17px}.deck-keep{background:var(--accent);color:var(--accent-contrast);border-color:#0000}.deck-keep:active{background:var(--accent-ink)}.deck-secondary{border:.5px solid var(--line);border-radius:var(--radius-md);background:var(--surface);gap:0;display:flex}.deck-min{appearance:none;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:0;flex:1;min-height:44px;padding:6px 4px;font-family:inherit;font-size:13px;transition:background .14s}.deck-min+.deck-min{border-left:.5px solid var(--line)}.deck-min:first-child{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.deck-min:last-child{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.deck-min:active{background:var(--surface-2)}body.route-home #grow-top{z-index:20;padding-right:56px}body.route-home #uniqueness-badge,#grow-caption,body.route-home #swipe-hint{display:none}#route-menu{z-index:35;opacity:0;visibility:hidden;pointer-events:none;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:0;transition:opacity .22s;position:fixed;inset:0;transform:none}body.nav-open #route-menu{opacity:1;visibility:visible;pointer-events:auto}#route-menu a,#route-menu button{color:var(--ink);border-radius:var(--radius-md);background:0 0;padding:10px 24px;font-size:22px;font-weight:400}#route-menu a.active{color:var(--accent-ink);background:0 0}#route-menu .sep,#route-menu .sep-break{display:none}#route-menu #menu-auth,#route-menu #menu-theme{margin-top:10px}#route-menu #menu-auth{align-items:center}#nav-toggle{box-sizing:border-box;top:calc(env(safe-area-inset-top,0px) + 12px);cursor:pointer;z-index:40;background:0 0;border:none;width:44px;height:44px;padding:14px 9px;display:block;position:fixed;right:12px}#nav-toggle span{background:var(--ink);border-radius:2px;width:100%;height:2px;transition:transform .22s,opacity .16s;display:block}#nav-toggle span+span{margin-top:5px}body.nav-open #nav-toggle span:first-child{transform:translateY(7px)rotate(45deg)}body.nav-open #nav-toggle span:nth-child(2){opacity:0}body.nav-open #nav-toggle span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}#nav-toggle.has-new:after{content:"";background:var(--accent-ink);border-radius:50%;width:8px;height:8px;position:absolute;top:8px;right:6px}body.nav-open #nav-toggle.has-new:after{display:none}#action-bar{border-radius:var(--radius-lg);justify-content:space-between;left:8px;right:8px;transform:none}.action-btn{flex:1;padding:12px 6px;font-size:15px}#art{width:min(96vw, calc(100dvh - var(--grow-header-band) - var(--grow-deck-band)));height:min(96vw, calc(100dvh - var(--grow-header-band) - var(--grow-deck-band)))}body.route-home{padding-top:var(--grow-header-band);padding-bottom:var(--grow-deck-band);box-sizing:border-box;overscroll-behavior:none;height:100dvh;overflow:hidden}#genome-fingerprint,#fingerprint-help-btn,.fingerprint-help-btn{display:none}#uniqueness-badge{text-align:center;font-size:12px;bottom:100px;left:0;right:0}}.theme-toggle{background:var(--surface-2);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;place-items:center;min-width:44px;min-height:44px;padding:4px 8px;font-family:inherit;font-size:13px;line-height:1;display:inline-grid}.theme-toggle:hover{background:var(--surface-3);color:var(--ink)}.theme-toggle .theme-toggle-glyph{pointer-events:none;display:block}body.route-collection,body.route-breed,body.route-lineage{place-items:initial;padding:60px 32px 40px;display:block}body.route-a4{place-items:initial;padding:40px 32px;display:block}#a4-view{flex-direction:column;align-items:center;gap:12px;max-width:900px;margin:0 auto;display:flex}.a4-badge{font-family:var(--font-mono);color:var(--ink-soft);letter-spacing:.03em;font-size:11px}#art-a4{background:var(--paper);aspect-ratio:210/297;width:min(70vw,62.2222vh);box-shadow:0 2px 12px var(--shadow-strong);margin:0 auto;display:block}.a4-back-btn{z-index:10;background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 12px;font-family:inherit;font-size:12px;text-decoration:none;position:fixed;top:20px;left:20px}.a4-back-btn:hover{background:var(--surface-3);color:var(--ink)}.a4-actions{gap:8px;margin-top:4px;display:flex}.a4-actions button{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 14px;font-family:inherit;font-size:12px}.a4-actions button:hover{background:var(--surface-3);color:var(--ink)}.card-actions button.card-a4{color:var(--accent-ink)}.empty-state{text-align:center;max-width:480px;margin:20vh auto}.empty-state h1{font-family:var(--font-display);margin:0 0 12px;font-size:20px;font-weight:500}.empty-state p{color:var(--ink);margin:8px 0}.empty-state p.dim{color:var(--ink-soft);font-size:12px}.empty-state a{color:var(--accent-ink);border-bottom:1px dotted var(--accent-ink);text-decoration:none}.dim{color:var(--ink-soft)}@media (pointer:coarse){.kbd-only{display:none}}.collection-header{max-width:1100px;margin:0 auto 20px}.collection-header h1{font-family:var(--font-display);margin:0;font-size:20px;font-weight:500}.collection-header-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.sync-indicator{color:var(--ink-soft);border-radius:var(--radius-md);white-space:nowrap;border:1px solid #0000;padding:3px 8px;font-size:12px}.sync-indicator.active{color:var(--ink);border-color:var(--ink-soft)}.collection-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px;max-width:1100px;margin:0 auto;display:grid}.collection-card{background:var(--surface);border-radius:var(--radius-lg);border:.5px solid var(--line);flex-direction:column;display:flex;overflow:hidden}.card-thumb{aspect-ratio:1;background:var(--paper);cursor:pointer;outline:none;display:block}.card-thumb img{object-fit:cover;width:100%;height:100%;display:block}.no-thumb{background:var(--surface-2);width:100%;height:100%}.card-footer{align-items:center;gap:6px;padding:8px 10px;display:flex}.card-id{min-width:0;font-family:var(--font-mono);color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:10px;overflow:hidden}.card-meta{flex-direction:column;gap:2px;padding:0 10px 8px;display:flex}.card-meta:empty{display:none}.card-name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.card-kept,.card-rediscovery{color:var(--ink-soft);font-size:10px}.card-rediscovery:empty{display:none}.card-name-input{border:1px solid var(--ink-soft);border-radius:var(--radius-md);background:var(--surface-2);width:100%;color:var(--ink);padding:4px 6px;font-size:12px}.collection-cap-note{margin:4px 0 0;font-size:11px}.card-more{min-width:44px;min-height:32px;color:var(--ink-soft);cursor:pointer;border-radius:var(--radius-md);background:0 0;border:none;flex:none;place-items:center;padding:0 8px;font-size:16px;line-height:1;display:grid;position:relative}.card-more:after{content:"";position:absolute;inset:-6px 0}.card-more:hover{background:var(--surface-2);color:var(--ink)}.card-actions{opacity:0;flex-direction:column;gap:6px;max-height:0;padding:0 10px;transition:max-height .24s,opacity .18s,padding .2s;display:flex;overflow:hidden}.collection-card.actions-open .card-actions{opacity:1;max-height:360px;padding:0 10px 10px}.card-action-group{flex-wrap:wrap;gap:4px;display:flex}.card-action-sep{background:var(--line);height:1px;margin:1px 0}.card-actions button{background:var(--surface-2);min-height:44px;color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;flex:auto;padding:6px 8px;font-family:inherit;font-size:10px}.card-actions button.card-remove{width:100%;color:var(--danger)}.card-actions button:hover{background:var(--surface-3)}.print-menu{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);width:min(420px,100%);max-height:80dvh;color:var(--ink);box-shadow:0 8px 40px var(--shadow-strong);padding:24px 22px 20px;position:relative;overflow-y:auto}.print-menu h2{font-family:var(--font-display);margin:0 0 14px;font-size:18px;font-weight:500}.print-menu .print-menu-close{min-width:44px;min-height:44px;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;place-items:center;font-size:24px;line-height:1;display:grid;position:absolute;top:6px;right:6px}.print-menu .print-menu-close:hover{color:var(--ink)}.print-menu-group+.print-menu-group{margin-top:14px}.print-menu-group-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin-bottom:6px;font-size:11px}.print-menu-sizes{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;display:grid}.print-menu-size{text-align:left;background:var(--surface-2);min-height:44px;color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:8px 10px;font-family:inherit;font-size:12px}.print-menu-size:hover{background:var(--surface-3)}.breeder-header{text-align:center;max-width:900px;margin:0 auto 30px}.breeder-header h1{font-family:var(--font-display);margin:0;font-size:20px;font-weight:500}.breeder-target-panel{border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:16px;max-width:900px;margin:0 auto 24px;padding:14px 16px;display:flex}.daily-target-thumb{border-radius:var(--radius-md);object-fit:cover;flex:none;width:72px;height:72px}.daily-target-thumb-empty{background:var(--surface-3)}.daily-target-meta{flex-direction:column;gap:3px;min-width:0;display:flex}.daily-target-label{font-size:14px;font-weight:600}.daily-target-best{font-variant-numeric:tabular-nums;font-size:12px}.daily-target-hint{font-size:12px}.daily-target-missing{color:var(--ink-soft);flex-basis:100%;margin:0;font-size:12px;line-height:1.5}.breeder-slots{grid-template-columns:1fr auto 1fr;align-items:stretch;gap:20px;max-width:900px;margin:0 auto;display:grid}.breeder-cross{color:var(--ink-soft);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex}.breeder-cross-glyph{font-size:32px;line-height:1}.swap-parents{background:var(--surface-2);color:var(--ink);border:1px solid var(--line-strong);cursor:pointer;border-radius:999px;place-items:center;width:34px;height:34px;padding:0;font-size:16px;line-height:1;display:grid}.swap-parents:hover{border-color:var(--accent);color:var(--accent-ink)}.breeder-slot{background:var(--surface);border:2px dashed var(--line-strong);border-radius:var(--radius-md);text-align:center;cursor:pointer;flex-direction:column;justify-content:center;gap:8px;min-height:200px;padding:40px 20px;display:flex}.breeder-slot.filled{border-style:solid;border-color:var(--accent);background:var(--surface-2)}.breeder-slot:hover{background:var(--surface-2)}.slot-label{color:var(--ink);font-size:14px}.slot-empty-hint,.slot-swap{color:var(--ink-soft);font-size:11px}.slot-dominant{color:var(--accent-ink);margin-top:2px;font-size:11px}.slot-id{font-family:var(--font-mono);font-size:12px}.slot-toggle{color:var(--accent-ink);cursor:pointer;background:0 0;border:none;margin-top:2px;padding:4px;font-family:inherit;font-size:12px}.slot-alleles[hidden]{display:none}@media (width<=640px){.breeder-slots{grid-template-columns:1fr;gap:12px}.breeder-cross{padding:2px 0;font-size:22px}.breeder-slot{min-height:auto;padding:20px 16px}}.breeder-action{text-align:center;max-width:900px;margin:30px auto 0}#breed-btn{background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius-md);cursor:pointer;border:none;padding:10px 24px;font-family:inherit;font-size:14px}#breed-btn:disabled{background:var(--surface-3);color:var(--ink-soft);cursor:not-allowed}@media (width<=640px){#breeder-view{padding:58px 14px calc(32px + env(safe-area-inset-bottom));box-sizing:border-box}.breeder-action{margin-top:20px}}.picker-overlay{background:var(--scrim-strong);z-index:20;padding:60px 32px 40px;position:fixed;inset:0;overflow-y:auto}.picker-header{justify-content:space-between;align-items:center;max-width:1100px;margin:0 auto 20px;display:flex}.picker-header h2{margin:0;font-size:16px;font-weight:500}.picker-close{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 12px;font-family:inherit}.picker-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;max-width:1100px;margin:0 auto;display:grid}.picker-card{background:var(--surface);border-radius:var(--radius-md);cursor:pointer;border:1px solid var(--line);overflow:hidden}.picker-card img,.picker-card .no-thumb{aspect-ratio:1;object-fit:cover;width:100%;display:block}.picker-id{font-size:10px;font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;padding:6px 8px;overflow:hidden}.picker-card:hover{outline:2px solid var(--accent)}.picker-card-excluded{cursor:not-allowed;opacity:.4}.picker-card-excluded:hover{outline:none}.picker-card-excluded img,.picker-card-excluded .no-thumb{filter:grayscale()}.allele-summary{background:var(--surface-2);border-radius:var(--radius-md);border:1px solid var(--line);text-align:left;font-family:var(--font-mono);max-height:260px;margin-top:10px;padding:8px 10px;font-size:10px;overflow-y:auto}.allele-summary .gene-group{border-bottom:1px dotted var(--line);margin-bottom:6px;padding-bottom:4px}.allele-summary .gene-group:last-child{border-bottom:none;margin-bottom:0}.allele-summary .gene-id{background:var(--surface-3);color:var(--ink);border-radius:var(--radius-sm);letter-spacing:.03em;margin-bottom:3px;padding:1px 6px;font-size:9px;display:inline-block}.allele-summary .trait-line{color:var(--ink-soft);gap:6px;padding:1px 0;line-height:1.4;display:flex}.allele-summary .trait-name{color:var(--ink-soft);flex:none}.allele-summary .trait-value{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.allele-summary .heterozygous .trait-name,.allele-summary .heterozygous .trait-value{color:var(--hetero)}.offspring-preview-overlay{background:var(--scrim-strong);z-index:26;padding:40px 20px calc(40px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;position:fixed;inset:0;overflow-y:auto}.offspring-preview-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;max-width:1100px;margin:0 auto 24px;display:flex}.offspring-preview-header h2{margin:0;font-size:16px;font-weight:500}.offspring-preview-header h2 .dim{font-family:var(--font-mono);margin-left:8px;font-size:11px}.offspring-preview-note{flex-basis:100%;order:3;margin:0;font-size:11px}.offspring-preview-actions{gap:8px;display:flex}@media (width<=640px){.offspring-preview-header{padding-right:44px}.offspring-preview-header h2 .dim{display:none}}.reroll-btn,.cancel-preview-btn{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 14px;font-family:inherit;font-size:12px}.reroll-btn{background:var(--accent);color:var(--accent-contrast)}.reroll-btn:hover{background:var(--accent-ink);color:var(--accent-contrast)}.cancel-preview-btn:hover{background:var(--surface-3)}.offspring-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;max-width:1100px;margin:0 auto;display:grid}@media (width<=900px){.offspring-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.offspring-grid{grid-template-columns:1fr}}.offspring-card{background:var(--surface);border-radius:var(--radius-md);border:1px solid var(--line);flex-direction:column;align-items:center;gap:8px;padding:12px;display:flex}.offspring-thumb{background:var(--paper);border-radius:var(--radius-sm);width:200px;height:200px;display:block;overflow:hidden}.offspring-thumb canvas{width:100%;height:100%;display:block}.offspring-meta{text-align:center;width:100%;font-size:11px}.offspring-id{font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.offspring-sim{color:var(--ink-soft);font-variant-numeric:tabular-nums;justify-content:center;gap:8px;margin:4px 0 2px;font-size:10px;display:flex}.offspring-sim .sim-val{color:var(--ink);font-weight:600}.offspring-target{color:var(--ink-soft);font-variant-numeric:tabular-nums;justify-content:center;gap:6px;margin:0 0 2px;font-size:10px;display:flex}.offspring-target .target-val{color:var(--accent-ink,var(--ink));font-weight:600}.offspring-badges{flex-wrap:wrap;justify-content:center;gap:4px;min-height:16px;margin-top:6px;display:flex}.hetero-badge{border-radius:var(--radius-sm);background:var(--surface-3);color:var(--ink);letter-spacing:.03em;padding:1px 6px;font-size:9px}.hetero-badge.hetero-NEOTENY{color:#d9ecfa;background:#365a6e}.hetero-badge.hetero-ACCELERATION{color:#fae4c9;background:#6e5236}.hetero-badge.hetero-HYPERMORPHOSIS{color:#d9fae4;background:#3a6e4c}.hetero-badge.hetero-PROGENESIS{color:#fad9e4;background:#6e364c}.offspring-pick-btn{background:var(--accent);width:100%;color:var(--accent-contrast);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 12px;font-family:inherit;font-size:12px}.offspring-pick-btn:hover{background:var(--accent-ink);color:var(--accent-contrast)}.lineage-header{text-align:center;max-width:1100px;margin:4px auto 26px}.lineage-header h1{font-family:var(--font-display,Georgia, "Times New Roman", serif);margin:0 0 6px;font-size:26px;font-weight:500}.lineage-sub{color:var(--ink-soft);font-family:var(--font-mono);letter-spacing:.02em;font-size:11px}.lineage-tree{flex-direction:column;align-items:center;max-width:1100px;margin:0 auto;display:flex}.lineage-generation{text-align:center;width:100%}.lineage-label{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.12em;margin-bottom:12px;font-size:11px}.lineage-row{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.lineage-branch{background:var(--line-strong);opacity:.55;width:1px;height:30px;margin:12px auto}.lineage-card{background:var(--surface);border:.5px solid var(--line);border-radius:var(--radius-lg);text-align:left;width:168px;transition:border-color .14s,box-shadow .16s;overflow:hidden}.lineage-card:hover{border-color:var(--line-strong)}.lineage-card.is-root{border-color:var(--accent-ink);box-shadow:0 0 0 1px var(--accent)}.lineage-card.ghost{background:var(--surface-2);border-style:dashed}.lineage-thumb{aspect-ratio:1;background:var(--paper);display:block;overflow:hidden}.lineage-thumb img{object-fit:cover;width:100%;height:100%;display:block}.lineage-thumb-empty{background:repeating-linear-gradient(45deg, var(--surface-2), var(--surface-2) 7px, var(--surface) 7px, var(--surface) 14px)}.lineage-foot{justify-content:space-between;align-items:baseline;gap:8px;padding:8px 11px 2px;display:flex}.lineage-id{font-family:var(--font-mono);color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.lineage-note{color:var(--ink-soft);flex:none;font-size:10px}.lineage-drill{color:var(--accent-ink);padding:6px 11px 10px;font-size:11px;text-decoration:none;display:block}.lineage-drill:hover{text-decoration:underline}.lineage-server-tree{border-top:.5px solid var(--line);text-align:center;max-width:1100px;margin:44px auto 0;padding-top:26px}.lineage-server-tree>.lineage-label{margin-bottom:20px}.lineage-server-empty{color:var(--ink-soft);margin:4px 0 0;font-size:13px}.caption-parents{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.caption-parents .lineage-strip-inner{color:var(--ink-soft);flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 10px;font-size:11px;display:inline-flex}.caption-parents .lineage-badges{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:inline-flex}.caption-parents a{color:var(--ink);border-bottom:1px dotted var(--ink);text-decoration:none}.caption-parents a.lineage-link{color:var(--ink-soft);border-bottom-color:var(--ink-soft)}.caption-parents .dim{color:var(--ink-soft);font-family:var(--font-display);letter-spacing:.02em}.caption-parents .badge{background:var(--surface-3);border-radius:var(--radius-sm);color:var(--ink);padding:2px 6px;font-size:10px}#gene-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);z-index:5;width:220px;color:var(--ink);box-shadow:0 2px 12px var(--shadow);padding:10px 12px 12px;font-size:11px;display:none;position:fixed;top:60px;right:16px}body.route-home #gene-panel{display:block}#gene-panel header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;display:flex}#gene-panel .panel-title{letter-spacing:.02em;font-size:12px;font-weight:500}#gene-panel .reset-btn{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:10px}#gene-panel .reset-btn:hover{color:var(--ink)}#gene-panel .gene-row{font-family:var(--font-mono);grid-template-columns:1fr auto auto;align-items:center;gap:6px;padding:3px 0;display:grid}#gene-panel .gene-row.mandatory{color:var(--ink-soft)}#gene-panel .gene-id{font-size:10px}#gene-panel .gene-phase{color:var(--ink-soft);letter-spacing:.03em;font-size:9px}#gene-panel .gene-badge{background:var(--surface-3);color:var(--ink-soft);border-radius:var(--radius-sm);padding:1px 5px;font-size:9px}#gene-panel .toggle-3state{background:var(--surface-3);border-radius:var(--radius-sm);display:flex;overflow:hidden}#gene-panel .toggle-3state button{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:2px 5px;font-family:inherit;font-size:9px;line-height:1.4}#gene-panel .toggle-3state button:hover{color:var(--ink)}#gene-panel .toggle-3state[data-current=off] button[data-state=off]{background:var(--danger);color:var(--danger-contrast)}#gene-panel .toggle-3state[data-current=on] button[data-state=on]{background:var(--accent);color:var(--accent-contrast)}#gene-panel .toggle-3state[data-current=auto] button[data-state=auto]{background:var(--surface-2);color:var(--ink)}#gene-panel footer{border-top:1px solid var(--line);margin-top:10px;padding-top:8px}#gene-panel .regen-btn{background:var(--accent);width:100%;color:var(--accent-contrast);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px;font-family:inherit;font-size:11px}#gene-panel .regen-btn:hover{background:var(--accent-ink);color:var(--accent-contrast)}#gene-panel .panel-hint{color:var(--ink-soft);text-align:center;margin-top:6px;font-size:10px;line-height:1.4}#genome-fingerprint{font-family:var(--font-mono);color:var(--ink-soft);letter-spacing:.03em;-webkit-user-select:text;user-select:text;pointer-events:none;max-width:calc(100vw - 300px);font-size:10px;line-height:1.4;position:fixed;bottom:14px;left:20px;right:auto}#genome-fingerprint .fp-gene{white-space:nowrap;-webkit-text-decoration:underline dotted var(--line-strong);text-decoration:underline dotted var(--line-strong);text-underline-offset:3px}#genome-fingerprint .fp-sep{color:var(--ink-soft);opacity:.4;margin:0 6px}body.route-collection #genome-fingerprint,body.route-breed #genome-fingerprint,body.route-lineage #genome-fingerprint,body.route-a4 #genome-fingerprint,body.route-genes #genome-fingerprint{display:none}#gene-panel .preset-row{border-bottom:1px solid var(--line);align-items:center;gap:4px;margin-bottom:6px;padding:6px 0;display:flex}#gene-panel .preset-label{color:var(--ink-soft);letter-spacing:.05em;text-transform:uppercase;margin-right:4px;font-size:10px}#gene-panel .preset-btn{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;flex:1;padding:3px 8px;font-family:inherit;font-size:10px}#gene-panel .preset-btn:hover{background:var(--surface-3)}#gene-panel .preset-btn.active{background:var(--accent);color:var(--accent-contrast)}.offspring-verdict{border-radius:var(--radius-md);letter-spacing:.02em;margin:4px auto;padding:2px 10px;font-size:10px;font-weight:500;display:inline-block}.offspring-verdict.verdict-a{color:#d8e6ff;background:#3b5c8a}.offspring-verdict.verdict-b{color:#ffd8e6;background:#8a3b5c}.offspring-verdict.verdict-even{background:var(--surface-3);color:var(--ink)}.offspring-card.focused{outline:2px solid var(--accent);outline-offset:-2px;transition:transform .12s;transform:translateY(-2px)}.allele-summary .inter-parent-diff{color:var(--info)}.allele-summary .inter-parent-diff.heterozygous{color:var(--ink);border-radius:var(--radius-sm);background:#e8a8691f;padding:0 4px}.collection-curation-bar{align-items:center;gap:12px;max-width:1100px;margin:0 auto 16px;display:flex}.collection-curation-bar input[type=search]{background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:var(--radius-sm);flex:1;padding:6px 10px;font-family:inherit;font-size:12px}.collection-curation-bar select{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 10px;font-family:inherit;font-size:12px}.collection-curation-bar .select-toggle{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 12px;font-family:inherit;font-size:12px}.collection-curation-bar .select-toggle.active{background:var(--accent);color:var(--accent-contrast)}.collection-card.selected{outline:2px solid var(--accent);outline-offset:-2px}@media (width<=640px){body.route-collection{padding-left:14px;padding-right:14px}#collection-view{box-sizing:border-box;padding:0;overflow-x:hidden}.collection-header,.collection-curation-bar,.collection-grid{max-width:100%}.collection-curation-bar{flex-wrap:wrap}.collection-curation-bar input[type=search]{flex:140px;min-width:0}.collection-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}}.card-checkbox{z-index:2;pointer-events:none;width:18px;height:18px;position:absolute;top:6px;left:6px}.collection-card{position:relative}.card-pin{z-index:2;cursor:pointer;background:0 0;border:none;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:0;right:0}.card-pin:before{content:"";border:1.5px solid var(--line-strong);border-radius:50%;width:16px;height:16px;transition:border-color .14s,background .14s}.card-pin:hover:before{border-color:var(--accent-ink)}.card-pin.pinned:before{border-color:var(--accent-ink);background:var(--accent-ink)}.bulk-action-bar{background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-md);box-shadow:0 4px 20px var(--shadow-strong);z-index:15;align-items:center;gap:12px;padding:8px 16px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.bulk-action-bar button{background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 12px;font-family:inherit;font-size:12px}.bulk-action-bar button.danger{background:var(--danger);color:var(--danger-contrast)}body.route-genes{place-items:initial;padding:60px 32px 40px;display:block}.glossary-header{max-width:900px;margin:0 auto 24px}.glossary-header h1{font-family:var(--font-display);margin:0 0 6px;font-size:22px;font-weight:500}.glossary-phase{max-width:900px;margin:0 auto 20px}.glossary-phase-header{color:var(--ink-soft);letter-spacing:.15em;text-transform:uppercase;margin:0 0 8px;font-size:11px}.gene-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);margin-bottom:12px;padding:14px 16px}.gene-card-header{align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.gene-card-id{font-family:var(--font-mono);color:var(--ink);font-size:14px;font-weight:600}.gene-card-short{font-family:var(--font-mono);color:var(--ink-soft);background:var(--surface-2);border-radius:var(--radius-sm);padding:1px 6px;font-size:10px}.gene-card-desc{color:var(--ink);margin:6px 0 10px;font-size:13px;line-height:1.5}.gene-card-traits{color:var(--ink-soft);font-size:11px;line-height:1.6}.gene-card-traits strong{color:var(--ink);font-weight:500}.gene-card-phase{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);margin-left:auto;font-size:10px}.gene-card-tagline{color:var(--ink);margin:2px 0 6px;font-size:12.5px;font-weight:600}.gene-card-eli5{color:var(--ink);margin:0 0 10px;font-size:13px;line-height:1.55}.gene-card-knobs{flex-direction:column;gap:7px;display:flex}.gene-card-knob{grid-template-columns:auto 1fr;align-items:baseline;gap:1px 8px;font-size:11px;display:grid}.gene-card-knob-name{font-family:var(--font-mono);color:var(--ink);font-weight:500}.gene-card-knob-range{font-family:var(--font-mono);color:var(--ink-soft);text-align:right;font-size:10px}.gene-card-knob-desc{color:var(--ink-soft);grid-column:1/-1;line-height:1.45}.gene-card-knob-more{color:var(--ink-soft);font-size:10px;font-style:italic}#genome-fingerprint .fp-gene{cursor:help}#genome-fingerprint .fp-gene:hover,#genome-fingerprint .fp-gene:focus-visible{color:var(--ink);-webkit-text-decoration-color:var(--accent-ink);text-decoration-color:var(--accent-ink)}.gene-card-hover{z-index:9000;width:300px;max-width:88vw;box-shadow:0 8px 28px var(--shadow-strong);border:1px solid var(--line);pointer-events:none;margin:0;position:fixed}.fp-sheet-scrim{z-index:9100;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(6px);align-items:flex-end;animation:.18s fp-sheet-fade;display:flex;position:fixed;inset:0}@keyframes fp-sheet-fade{0%{opacity:0}to{opacity:1}}.fp-sheet{box-sizing:border-box;background:var(--surface);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);border-top:1px solid var(--line);width:100%;max-height:78dvh;box-shadow:0 -8px 28px var(--shadow-strong);padding:8px 16px calc(env(safe-area-inset-bottom,0px) + 20px);-webkit-overflow-scrolling:touch;animation:.2s fp-sheet-rise;overflow-y:auto}@keyframes fp-sheet-rise{0%{transform:translateY(12px)}to{transform:translateY(0)}}.fp-sheet-grip{background:var(--line-strong);border-radius:2px;width:36px;height:4px;margin:8px auto 4px}.fp-sheet-head{justify-content:space-between;align-items:center;gap:12px;margin:4px 2px 10px;display:flex}.fp-sheet-head h3{color:var(--ink);margin:0;font-size:15px;font-weight:600}.fp-sheet-close{appearance:none;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:var(--radius-md);cursor:pointer;min-width:44px;min-height:44px;padding:0 14px;font-family:inherit;font-size:14px}.fp-sheet .gene-card{margin:0 0 10px}@media (prefers-reduced-motion:reduce){.fp-sheet-scrim,.fp-sheet{animation:none}}.tutorial-overlay{background:var(--scrim);z-index:100;place-items:center;padding:40px;display:grid;position:fixed;inset:0}.tutorial-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);max-width:480px;color:var(--ink);box-shadow:0 8px 40px var(--shadow-strong);padding:28px 32px}.tutorial-card h2{margin:0 0 12px;font-size:18px;font-weight:500}.tutorial-card p{color:var(--ink);margin:8px 0;font-size:14px;line-height:1.6}.tutorial-nav{justify-content:space-between;align-items:center;gap:12px;margin-top:20px;display:flex}.tutorial-nav .step-indicator{color:var(--ink-soft);font-size:11px}.tutorial-nav button{background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:8px 16px;font-family:inherit;font-size:12px}.tutorial-nav .skip-btn{color:var(--ink-soft);background:0 0}#genome-fingerprint{pointer-events:auto}.fingerprint-help-btn{color:var(--ink-soft);border:1px solid var(--ink-soft);cursor:pointer;opacity:.5;z-index:5;background:0 0;border-radius:50%;place-items:center;width:14px;height:14px;padding:0;font-size:9px;display:grid;position:fixed;bottom:14px;left:4px}.fingerprint-help-btn:hover{opacity:1}.fingerprint-legend{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);max-width:380px;color:var(--ink);box-shadow:0 4px 20px var(--shadow-strong);z-index:10;padding:14px 16px;font-size:11px;line-height:1.5;position:fixed;bottom:40px;left:20px}.fingerprint-legend h3{margin:0 0 6px;font-size:12px;font-weight:600}.fingerprint-legend .legend-gene-map{font-family:var(--font-mono);color:var(--ink-soft);columns:2;margin:8px 0;font-size:10px}.fingerprint-legend .replay-tutorial{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:6px 0 0;font-family:inherit;font-size:11px;text-decoration:underline}body.route-a3,body.route-a5,body.route-postcard{place-items:initial;padding:40px 32px;display:block}#art-a3{background:var(--paper);aspect-ratio:297/420;width:min(70vw,62.2286vh);margin:0 auto;display:block}#art-a5{background:var(--paper);aspect-ratio:148/210;width:min(50vw,62.0191vh);margin:0 auto;display:block}#art-postcard{background:var(--paper);aspect-ratio:148/105;width:min(60vw,124.038vh);margin:0 auto;display:block}.a3-badge,.a5-badge,.postcard-badge{text-align:center;font-family:var(--font-mono);color:var(--ink-soft);margin-bottom:12px;font-size:11px}.a3-back-btn,.a5-back-btn,.postcard-back-btn{z-index:10;background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:6px 12px;font-family:inherit;font-size:12px;text-decoration:none;position:fixed;top:20px;left:20px}.a3-actions,.a5-actions,.postcard-actions{justify-content:center;gap:8px;max-width:500px;margin:20px auto 0;display:flex}.a3-actions button,.a5-actions button,.postcard-actions button{background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:8px 16px;font-family:inherit;font-size:12px}.card-actions button.card-size{padding:4px 6px;font-size:9px}body.route-a3 #genome-fingerprint,body.route-a5 #genome-fingerprint,body.route-postcard #genome-fingerprint{display:none}#menu-auth{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.menu-auth-user{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;opacity:.75;max-width:200px;padding:2px 11px;font-size:11px;overflow:hidden}.auth-overlay{background:var(--scrim);z-index:200;place-items:start center;padding:20px;display:grid;position:fixed;inset:0;overflow-y:auto}.auth-modal,.qr-modal,.print-menu{margin-block:auto}.auth-modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);width:min(400px,100%);color:var(--ink);box-shadow:0 8px 40px var(--shadow-strong);padding:32px 28px 24px;position:relative}.auth-modal h2{margin:0 0 6px;font-size:20px;font-weight:500}.auth-modal .auth-reason{color:var(--ink-soft);margin:0 0 16px;font-size:12px;line-height:1.5}.auth-modal .auth-close{min-width:44px;min-height:44px;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;place-items:center;padding:0;font-size:24px;line-height:1;display:grid;position:absolute;top:4px;right:6px}.auth-modal .auth-close:hover{color:var(--ink)}.auth-google-btn{color:#1a1a1a;border-radius:var(--radius-md);cursor:pointer;background:#fff;border:1px solid #dadce0;width:100%;margin-top:6px;padding:12px 14px;font-family:inherit;font-size:14px;font-weight:500;box-shadow:0 1px 2px #00000014}.auth-google-btn:hover{background:#e8e8e8}.auth-divider{color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:8px;margin:18px 0 14px;font-size:10px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:1px}.auth-tabs{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-md);gap:3px;margin-bottom:12px;padding:3px;display:flex}.auth-tab{color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;flex:1;padding:7px 10px;font-family:inherit;font-size:13px;transition:background .14s,box-shadow .14s}.auth-tab:not(.active):hover{background:var(--surface-3)}.auth-tab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px var(--shadow)}.auth-form{flex-direction:column;gap:8px;display:none}.auth-form.active{display:flex}.auth-form .auth-label{color:var(--ink-soft);letter-spacing:.03em;margin-bottom:-3px;font-size:11px}.auth-form input{background:var(--surface-2);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-md);padding:9px 11px;font-family:inherit;font-size:16px}.auth-form input:focus{border-color:var(--accent);outline:2px solid var(--accent-soft-bg);outline-offset:1px}.auth-form button[type=submit]{background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius-md);cursor:pointer;border:none;margin-top:6px;padding:11px 14px;font-family:inherit;font-size:14px;font-weight:500;transition:background .14s,transform 90ms}.auth-form button[type=submit]:hover{background:var(--accent-ink)}.auth-form button[type=submit]:active{transform:scale(.98)}.auth-error{color:var(--danger);background:var(--danger-soft-bg);border-radius:var(--radius-md);margin:10px 0 0;padding:6px 8px;font-size:11px}.auth-anonymous-hint{color:var(--ink-soft);text-align:center;margin:14px 0 0;font-size:11px}.auth-legal{color:var(--ink-soft);text-align:center;opacity:.85;margin:8px 0 0;font-size:10px}.auth-legal a{color:var(--ink-soft);text-decoration:underline}.auth-legal a:hover{color:var(--ink)}#uniqueness-badge{font-family:var(--font-mono);color:var(--ink-soft);letter-spacing:.03em;-webkit-user-select:text;user-select:text;pointer-events:none;opacity:.75;z-index:5;max-width:320px;font-size:10px;position:fixed;bottom:14px;right:20px}#uniqueness-badge.uniqueness-first{color:var(--accent-ink);font-weight:600}#uniqueness-badge.uniqueness-discovered{color:var(--info)}body.route-collection #uniqueness-badge,body.route-breed #uniqueness-badge,body.route-lineage #uniqueness-badge,body.route-a4 #uniqueness-badge,body.route-a3 #uniqueness-badge,body.route-a5 #uniqueness-badge,body.route-postcard #uniqueness-badge,body.route-sweep #uniqueness-badge,body.route-genes #uniqueness-badge{display:none}.qr-scanner-overlay{background:var(--scrim-strong);z-index:250;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.qr-scanner-modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);color:var(--ink);text-align:center;max-width:500px;padding:24px;position:relative}.qr-scanner-modal h2{margin:0 0 12px;font-size:18px;font-weight:500}.qr-scanner-modal p{color:var(--ink-soft);margin:0 0 16px;font-size:12px}.qr-scanner-modal video{border-radius:var(--radius-md);background:#000;width:100%;max-width:400px;height:auto;margin:0 auto 12px;display:block}.qr-scanner-modal .qr-scanner-cancel{color:var(--ink-soft);border:1px solid var(--ink-soft);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:6px 16px;font-family:inherit;font-size:12px}.qr-scanner-modal .qr-scanner-cancel:hover{border-color:var(--ink);color:var(--ink)}.qr-scanner-modal .qr-scanner-error{color:var(--danger);margin-top:12px;font-size:11px}.card-actions button.card-qr{flex:0 0 32px;padding:4px 6px;font-size:14px}.qr-modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);color:var(--ink);text-align:center;max-width:400px;padding:32px;position:relative}.qr-modal .qr-close{min-width:44px;min-height:44px;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;place-items:center;font-size:24px;line-height:1;display:grid;position:absolute;top:6px;right:6px}.qr-modal .qr-image{background:var(--paper);border-radius:var(--radius-md);width:300px;height:300px;margin:0 auto;padding:12px;display:block}.qr-modal .qr-url{font-family:var(--font-mono);color:var(--ink-soft);word-break:break-all;max-height:60px;margin:16px 0 12px;font-size:10px;overflow-y:auto}.qr-modal .qr-copy-btn{background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:8px 16px;font-family:inherit;font-size:12px}.qr-modal .qr-fallback{background:var(--surface-2);border:1px dashed var(--line-strong);border-radius:var(--radius-md);color:var(--ink-soft);margin:20px 0 12px;padding:20px 16px;font-size:12px;line-height:1.5}#a4-view,#a3-view,#a5-view,#postcard-view{position:relative}.qr-print-corner{text-align:center;width:20mm;position:absolute;bottom:12mm;right:12mm}.qr-print-corner img{width:100%;height:auto;display:block}.qr-print-corner .qr-label{font-family:var(--font-mono);color:#555;margin-top:1mm;font-size:6pt}.palette-picker-btn{background:var(--surface);width:40px;height:40px;color:var(--ink);border:1px solid var(--line);cursor:pointer;z-index:6;box-shadow:0 2px 12px var(--shadow);border-radius:50%;font-size:18px;line-height:1;display:none;position:fixed;bottom:16px;right:16px}body.route-home .palette-picker-btn{display:block}.palette-picker-btn:hover{background:var(--surface-2)}#palette-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);width:300px;max-height:70vh;color:var(--ink);z-index:7;box-shadow:0 2px 16px var(--shadow-strong);padding:10px 12px 12px;font-size:11px;position:fixed;bottom:64px;right:16px;overflow-y:auto}.pp-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.pp-title{font-weight:600}.pp-close{color:var(--ink);cursor:pointer;background:0 0;border:none;font-size:16px}.pp-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.pp-swatch{background:var(--surface-2);border:1px solid var(--line);cursor:pointer;text-align:left;border-radius:5px;flex-direction:column;gap:3px;padding:5px;display:flex}.pp-swatch:hover{border-color:var(--accent)}.pp-strip{border-radius:var(--radius-sm);height:16px;display:flex;overflow:hidden}.pp-chip{flex:1 1 0}.pp-name{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.pp-custom{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.pp-custom-head{margin-bottom:6px;font-weight:600}.pp-preview{border-radius:var(--radius-sm);background:var(--surface-3);height:20px;margin-bottom:8px;display:flex;overflow:hidden}.pp-custom label{color:var(--ink-soft);justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;display:flex}.pp-custom input[type=range]{flex:1}.pp-apply-custom{background:var(--surface-3);width:100%;color:var(--ink);cursor:pointer;border:none;border-radius:5px;margin-top:6px;padding:6px}.pp-apply-custom:hover{background:var(--line-strong)}.dialog-overlay{background:var(--scrim);z-index:320;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.dialog-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);width:min(400px,100%);color:var(--ink);box-shadow:0 8px 40px var(--shadow-strong);padding:24px 24px 18px}.dialog-title{margin:0 0 8px;font-size:17px;font-weight:500}.dialog-message{color:var(--ink-soft);font-size:13px;line-height:1.55}.dialog-message p{margin:0 0 8px}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.dialog-btn{border-radius:var(--radius-md);cursor:pointer;border:1px solid var(--line);color:var(--ink);background:0 0;padding:8px 16px;font-family:inherit;font-size:13px}.dialog-btn:hover{background:var(--surface-3)}.dialog-btn-confirm{background:var(--ink);color:var(--paper);border-color:var(--ink)}.dialog-btn-confirm:hover{opacity:.88;background:var(--ink)}.dialog-btn-danger{color:var(--danger);border-color:var(--danger);background:0 0}.dialog-btn-danger:hover{background:var(--danger);color:var(--danger-contrast)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}#app-main{display:contents}.skip-link{z-index:100;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:0 6px 20px var(--shadow-strong);padding:10px 16px;font-family:inherit;font-size:14px;text-decoration:none;transition:transform .16s;position:fixed;top:10px;left:10px;transform:translateY(calc(-100% - 16px))}.skip-link:focus{transform:translateY(0)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.card-thumb:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}button:active,[role=button]:active,#route-menu a:active,.card-thumb:active,.mosaic-tile:active{transform:none}}@media (width>=641px){body.route-collection,body.route-breed,body.route-community,body.route-landing,body.route-about,body.route-lineage,body.route-genesis,body.route-genes,body.route-sweep,body.route-lab{padding-right:clamp(172px,15vw,260px)}}
