:root{--ink:#203630;--muted:#63716d;--line:#dce3df;--accent:#176c53;--panel:#fff;--canvas:#f6f8f7}
*{letter-spacing:0!important}
[hidden]{display:none!important}
body{height:100dvh;background:var(--canvas);color:var(--ink);font-family:Arial,sans-serif;font-size:13px}
body>header:not(#appHeader){display:none}
button,input,select{font:inherit;color:inherit;border-color:#cbd5cf;border-radius:5px;min-height:34px}
button{transition:background .12s,border-color .12s;white-space:normal}
button:hover:not(:disabled){background:#edf5f0;border-color:#7ca38e}
button:disabled{cursor:default;opacity:.45}
input:focus-visible,button:focus-visible,summary:focus-visible,select:focus-visible{outline:2px solid #147f68;outline-offset:2px}
input[type=checkbox]{min-height:0;width:15px;height:15px;accent-color:var(--accent);flex:none}
input[type=search]{width:100%;min-width:0}
select{min-width:0;max-width:100%;background:#fff}
svg.lucide{width:18px;height:18px;flex-shrink:0;stroke-width:1.7}
#appHeader{height:70px;min-height:70px;padding:0 22px;gap:28px;flex-wrap:nowrap;border-bottom:1px solid var(--line);background:#fff}
.brand{display:flex;align-items:center;gap:10px;flex-shrink:0}
.brand-mark{display:grid;place-items:center;color:#176c53;width:36px;height:36px;background:#edf5ef;border-radius:50%}
.brand-mark svg{width:24px;height:24px}
.brand strong{display:block;font-size:16px}.brand span:not(.brand-mark){display:block;color:var(--muted);font-size:11px;margin-top:4px}
#researchModes{display:flex;align-items:stretch;height:100%;gap:4px;overflow-x:auto;min-width:0}
#researchModes button{border:0;border-radius:0;background:none;display:flex;align-items:center;gap:7px;padding:0 12px;white-space:nowrap;font-size:12px;border-bottom:3px solid transparent;color:#5e6e66}
#researchModes button[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent);background:#f3f8f5;font-weight:700}
#sectionHelp{margin-left:auto;flex:1;min-width:240px;max-width:480px;padding:7px 12px;border-left:2px solid #a8c8b7;background:#f3f8f5;font-size:11px;line-height:1.4;box-sizing:border-box}
#sectionHelpTitle{display:block;color:var(--accent);margin-bottom:2px;font-size:12px}
#sectionHelpText{display:block;color:var(--muted)}
#explorerWorkspace{display:flex;flex:1;min-height:0;min-width:0}
#researchDock{width:330px;flex:0 0 330px;display:flex;flex-direction:column;background:#fff;border-right:1px solid var(--line);min-height:0}
.dock-heading{height:54px;flex:0 0 54px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line)}
.dock-heading h2{font-size:14px;margin:0;font-weight:700}
.icon-button{width:32px;height:32px;min-height:32px;display:inline-flex;justify-content:center;align-items:center;padding:6px;border:1px solid transparent;background:transparent}
#researchBody{overflow:auto;min-height:0;flex:1;padding:16px 18px 24px}
.workspace-section{margin:0 0 18px;padding:0 0 18px;border-bottom:1px solid var(--line)}
.workspace-section h3{font-size:11px;text-transform:uppercase;color:var(--muted);margin:0 0 12px;line-height:1.5}
.field-label{display:block;font-size:12px;margin:10px 0 6px;color:#435b50}
.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.two-fields h3{grid-column:1/-1;margin-bottom:0}
.two-fields label{display:grid;gap:6px;font-size:12px;white-space:normal}
.primary-action{background:var(--accent);color:white;border-color:var(--accent);font-weight:700}
.primary-action:hover:not(:disabled){background:#105c45;color:#fff}
#mode-lineage>.primary-action{width:100%;margin-bottom:24px}
.action-row{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.action-row button{flex:1;padding:7px;font-size:12px}
.selection-name{font-size:14px;font-weight:700;overflow-wrap:anywhere;margin:0 0 10px}
.text-action{padding:3px 0;border:0;background:none;font-size:11px;color:var(--accent);min-height:24px}
#mode-connections .primary-action{width:100%;margin-top:12px}
.workspace-details{padding:0;border:0;background:none;font-size:13px}
.workspace-details>summary{display:none}
#researchDock .range-panel{position:static;width:auto;min-width:0;max-height:none;overflow:visible;border:0;box-shadow:none;border-radius:0;padding:0;background:none}
.inline-disclosure{border:0;border-top:1px solid var(--line);border-radius:0;padding:12px 0;margin:10px 0;background:none;min-width:0}
.inline-disclosure>summary{cursor:pointer;font-size:12px;font-weight:600;list-style:disclosure-closed;display:list-item;margin-left:12px}
.inline-disclosure[open]>summary{list-style:disclosure-open;margin-bottom:12px}
.inline-disclosure .range-panel{padding-top:10px!important}
#researchDock fieldset{padding:10px 0!important;border:0!important;margin:0!important;min-width:0}
#similarIgnoreTraits{max-height:none!important;gap:0 14px!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
#similarIgnoreTraits label{display:flex;gap:4px;align-items:center;min-height:36px;font-size:12px;cursor:pointer}
#similarIgnoreTraits .trait-switch-label{flex:1;min-width:0}
#similarIgnoreTraits input[role="switch"]{appearance:none;position:relative;flex:0 0 32px;width:32px;height:18px;min-height:0;padding:0;margin:0;border:1px solid #7b8580;border-radius:10px;background:#e1e5e2;cursor:pointer}
#similarIgnoreTraits input[role="switch"]::before{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#59625d;transition:transform .12s}
#similarIgnoreTraits input[role="switch"]:checked{background:var(--accent);border-color:var(--accent)}
#similarIgnoreTraits input[role="switch"]:checked::before{transform:translateX(14px);background:white}
#similarIgnoreTraits input[role="switch"]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
#similarIgnoreTraits .trait-switch-state{width:22px;color:var(--muted);font-size:11px}
.form-detail-options{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);margin-top:10px;padding-top:12px;font-size:12px}
.form-detail-options select{flex:1;max-width:180px}
.form-match-help{font-size:12px;line-height:1.5;color:var(--muted);margin-top:12px}
.form-match-help p{margin:0 0 10px}.form-match-help strong,.form-match-help dt{color:var(--ink);font-weight:600}
.form-match-help dl{margin:0 0 10px}.form-match-help dt{margin-top:7px}.form-match-help dd{margin:2px 0 0}
.trait-rule .trait-text{grid-column:1/3;min-width:0;box-sizing:border-box}
.trait-rule.text-rule>.trait-part,.trait-rule.text-rule>.trait-mode{grid-column:1/3}
.force-matches{border-top:1px solid var(--line);padding-top:10px;margin-top:16px}.force-matches button{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;margin:5px 0;padding:7px;background:white}.force-matches button strong{white-space:nowrap}
.related-option{display:flex;align-items:center;gap:7px;margin:10px 0;font-size:12px}
#relatedAppearance{border-top:1px solid var(--line);margin-top:20px;padding-top:14px}#relatedAppearance h3{font-size:14px}#relatedAppearance button{display:grid;gap:5px;width:100%;text-align:left;padding:10px;margin:8px 0;background:white}#relatedAppearance button span{font-size:12px;color:var(--muted)}
.same-cross-results{max-height:none;overflow:visible;gap:8px;margin-top:18px}
#similarResults button{margin:0!important;padding:12px!important;border-color:var(--line);line-height:1.45}
#similarResults button .meta{font-size:11px}
#similarScoringTable{max-height:none!important;margin:12px 0}
.range-actions{justify-content:stretch;flex-wrap:wrap;margin:14px 0}.range-actions button{flex:1;font-size:12px}
.range-row{grid-template-columns:68px minmax(0,1fr) minmax(0,1fr);gap:6px}.range-row input{min-width:0}
.pedigree-grid{gap:12px}.pedigree-grid label{color:var(--muted)}
#traitPanel{display:block;padding:0;border:0;box-shadow:none;background:transparent}
.trait-panel-inner{display:block;max-width:none}
.trait-title-row{display:flex;flex-direction:column;align-items:stretch;gap:12px}
.trait-title-row h2{font-size:12px;margin-bottom:14px}
.trait-rule{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 30px;gap:6px;padding:12px 0;border-bottom:1px solid var(--line);margin:0 0 10px}
.trait-rule>:nth-child(1){grid-column:1/2}.trait-rule>:nth-child(2){grid-column:2/3}.trait-rule>:nth-child(3){grid-column:1/3}.trait-rule>:nth-child(4){grid-column:1/3}.trait-rule>:last-child{grid-column:3;grid-row:1;padding:4px}
.trait-rule .exact-colors{height:110px;grid-column:1/3}.trait-numeric{grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}
.trait-title-row>.trace-toggle{font-size:12px;white-space:normal;border:0;padding:0;line-height:1.5}
.trait-title-row>label:not(.trace-toggle){display:flex;align-items:center;justify-content:space-between;font-size:12px;gap:10px}
.trait-title-row select{max-width:160px}
.appearance-section{margin:24px -18px -24px;padding:18px;border-top:1px solid var(--line);background:#f7f9f8}
.measurement-toggles{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.measurement-toggles .metric-toggle{font-weight:400;background:#fff;border:1px solid var(--metric-color);color:#435b50;cursor:pointer;min-height:32px;box-sizing:border-box}
.measurement-toggles .metric-toggle input{accent-color:var(--metric-color)}
#graphWorkspace{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}
#graphToolbar{height:64px;flex:0 0 64px;display:flex;align-items:center;justify-content:space-between;padding:8px 16px;gap:12px;border-bottom:1px solid var(--line);background:#fff}
.graph-heading{display:flex;align-items:center;gap:8px;min-width:0}.graph-heading>div{min-width:0}.graph-heading h2{font-size:15px;margin:4px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.graph-heading span{font-size:10px;color:var(--muted)}
.graph-tools{display:flex;align-items:center;gap:2px;flex-shrink:0}#graphCounts{font-size:11px;color:var(--muted);margin-right:10px}#zoomPercent{font-size:10px;color:var(--muted);min-width:34px;text-align:center}
#stage{flex:1;min-height:0;background:var(--canvas);touch-action:auto}
#stage canvas{display:block}
#relatedPhotoOverlay{position:absolute;bottom:12px;left:12px;right:12px;z-index:5;background:rgba(255,255,255,.97);border:1px solid var(--line);border-radius:6px;box-shadow:0 3px 14px #20363015;max-height:45%;overflow:auto}
#relatedPhotoOverlay[hidden]{display:none}
.related-photo-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}
.related-photo-heading>div{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;font-size:12px}
#relatedPhotoCount{color:var(--muted)}
#closeRelatedPhotos{font-size:22px;width:30px;height:30px;padding:0;flex-shrink:0}
#relatedPhotoStrip{display:flex;gap:12px;overflow-x:auto;padding:10px;scroll-snap-type:x proximity;overscroll-behavior:contain}
#relatedPhotoStrip .related-photo{flex:0 0 140px;width:140px;display:flex;flex-direction:column;gap:5px;align-items:stretch;white-space:normal;text-align:left;padding:6px;background:white;border:1px solid var(--line);scroll-snap-align:start}
#relatedPhotoStrip .related-reference{border-color:var(--accent)}
.related-photo strong{font-size:12px;line-height:1.3;overflow-wrap:anywhere}
.related-photo .meta{font-size:11px;line-height:1.3}
.related-photo-media{display:flex;align-items:center;justify-content:center;height:100px;flex:0 0 100px;background:#f1f4f2;border-radius:3px;overflow:hidden}
.related-photo-media img{width:100%;height:100%;object-fit:contain}
.related-photo-missing{font-size:11px;color:var(--muted);text-align:center;padding:8px}
@media(max-width:760px){#relatedPhotoOverlay{left:6px;right:6px;bottom:6px;max-height:42%}#relatedPhotoStrip .related-photo{flex-basis:116px;width:116px}.related-photo-media{height:80px;flex-basis:80px}}
#emptyGraph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;pointer-events:none;color:var(--muted)}
#emptyGraph>svg{width:60px;height:60px;stroke-width:1;color:#8bafa0}#emptyGraph h2{font-size:22px;font-weight:400;margin:0}
#recentExamples{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:90%;pointer-events:auto}#recentExamples button{border:0;background:transparent;color:var(--accent);font-size:12px;text-decoration:underline;text-underline-offset:4px}
#graphActivity{flex:0 0 auto;border-top:1px solid var(--line);background:#fff;max-height:140px;overflow:auto;font-size:11px}
#graphActivity>summary{padding:10px 16px;cursor:pointer;display:flex;justify-content:space-between;gap:12px;list-style:none;color:var(--muted)}#activitySummary{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
#status{display:block;padding:0 16px 12px;font-size:12px;line-height:1.6}
#inspectorDock{width:310px;flex:0 0 310px;display:flex;flex-direction:column;border-left:1px solid var(--line);min-height:0;background:#fff}
#side{border:0;padding:18px;min-height:0;flex:1}#side h2{font-size:20px;line-height:1.25;overflow-wrap:anywhere}#side h3{font-size:14px}#side img{border-radius:5px;margin:8px 0 16px}#side .meta{font-size:12px;line-height:1.7}
.metrics{gap:1px;background:var(--line);border:1px solid var(--line);border-radius:5px;overflow:hidden}.metric{border:0;border-radius:0;background:#fff;padding:10px}.metric b{font-size:11px;margin-bottom:4px}
.cohort-info{border-radius:0;border:0;border-left:3px solid #91b9a5;padding:10px 12px;background:#f1f7f3}.trait{background:#f7f9f8;border-color:var(--line);font-size:12px}.trait b{font-size:10px}.inspector-empty{padding-top:24px}#side .inspector-empty h2{font-size:15px;color:var(--muted)}
#suggestions{position:static;min-width:0;width:100%;box-shadow:none;border-color:var(--line);margin-top:5px;font-size:12px;max-height:220px}
.loading-card{border-radius:6px;background:#fff;border-color:var(--line)}#loadingOverlay{background:rgba(246,248,247,.8)}
#traitStatsOverlay{width:calc(100% - 28px);border-radius:5px;box-shadow:none;background:rgba(255,255,255,.96);max-height:28vh;pointer-events:auto}
#traitStatsOverlay .trait-stat-grid{grid-template-columns:repeat(3,minmax(70px,1fr))}#traitStatsOverlay.stats-collapsed{display:none}
#mobileResearchMode{display:none}#mobileWorkspace{display:none}#expandResearch{display:none}.research-hidden #researchDock{display:none}.research-hidden #expandResearch{display:inline-flex}.inspector-hidden #inspectorDock{display:none}
@media(max-width:1250px){#appHeader{gap:14px;padding:0 14px}.brand strong{font-size:14px}.brand-mark{display:none}#researchModes button{padding:0 8px}#researchModes svg{display:none}.workspace-tag{display:none}#researchDock{width:300px;flex-basis:300px}#inspectorDock{width:270px;flex-basis:270px}#graphCounts{display:none}}
@media(max-width:1000px){#inspectorDock{display:none}body[data-pane=details] #inspectorDock{display:flex;flex:1;width:auto}body[data-pane=details] #graphWorkspace{display:none}body[data-pane=details].inspector-hidden #graphWorkspace{display:flex}#mobileWorkspace{display:flex;padding:5px 12px;gap:8px;background:#fff;border-bottom:1px solid var(--line)}#mobileWorkspace button{border:0;font-size:12px;flex:1}body[data-pane=research] [data-pane=research],body[data-pane=graph] [data-pane=graph],body[data-pane=details] [data-pane=details]{background:#edf5ef;color:var(--accent);font-weight:700}#researchModes button{font-size:11px}#appHeader{height:auto;min-height:90px;flex-wrap:wrap;gap:0;padding-top:10px}.brand{width:100%}.brand span:not(.brand-mark){display:none}#researchModes{height:45px;width:100%}}
@media(max-width:700px){#researchDock{display:none;width:100%;flex:1;border:0}body[data-pane=research] #researchDock{display:flex}body[data-pane=research] #graphWorkspace,body[data-pane=research] #inspectorDock{display:none}body[data-pane=graph] #graphWorkspace{display:flex}body[data-pane=graph] #researchDock,body[data-pane=graph] #inspectorDock{display:none}body[data-pane=details] #researchDock{display:none}body[data-pane=details] #inspectorDock{display:flex}#researchBody{padding:18px 22px}.appearance-section{margin:24px -22px -24px;padding:18px 22px}#collapseResearch,#expandResearch,#toggleInspector,#closeInspector{display:none!important}#graphToolbar{padding:8px;height:60px;flex-basis:60px}.graph-heading h2{font-size:13px}.graph-tools{gap:0}#zoomPercent{min-width:28px}#researchModes{gap:0}#researchModes button{padding:0 10px}.trait-numeric{grid-template-columns:1fr 1fr}.dock-heading{height:48px;flex-basis:48px}#graphActivity{max-height:100px}#traitStatsOverlay .trait-stat-grid{grid-template-columns:repeat(2,minmax(70px,1fr))}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}.spinner{animation-duration:2s}}
@media(max-width:700px){#researchModes{display:none}#mobileResearchMode{display:block;width:100%;margin:8px 0 10px}#appHeader{min-height:94px}.trait-rule .trait-form{grid-column:1/3}}
@media(max-width:1400px){#appHeader{height:auto;flex-wrap:wrap;row-gap:0}#researchModes{height:60px}#sectionHelp{order:3;flex:0 0 100%;max-width:none;min-width:0;margin:0 0 8px}#sectionHelpTitle{display:inline;margin-right:8px}#sectionHelpText{display:inline}}
@media(max-width:1000px){#researchModes{height:45px}#sectionHelp{margin-top:2px}}
#contactOpen{display:flex;align-items:center;gap:7px;flex-shrink:0;padding:7px 10px;background:white;font-size:12px;max-width:175px}
#contactDialog{width:460px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);box-sizing:border-box;margin:auto;padding:20px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:white;overflow:auto}
#contactDialog::backdrop{background:rgba(20,35,30,.3)}
.contact-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.contact-heading h2{font-size:18px;margin:0}
#contactForm>label,#contactPhotoFields>label:not(.contact-permission){display:block;font-size:12px;margin:12px 0 5px}
#contactForm input:not([type=checkbox]),#contactForm select,#contactForm textarea{width:100%;box-sizing:border-box;padding:8px;font:inherit;border:1px solid #cbd5cf;border-radius:5px}
#contactForm textarea{resize:vertical;min-height:85px}
.contact-note{font-size:12px;line-height:1.5;color:var(--muted);margin:12px 0}
.contact-permission{display:flex;align-items:flex-start;gap:8px;font-size:12px;line-height:1.5;margin-top:12px}
.contact-actions{display:flex;gap:8px;flex-wrap:wrap}.contact-actions button{display:flex;align-items:center;gap:7px;padding:8px 12px}
.contact-address{display:flex;align-items:center;gap:6px;margin-top:16px}.contact-address input{min-width:0}.contact-address button{flex-shrink:0}
#contactStatus{font-size:12px;line-height:1.5;margin:10px 0 0}#contactForm textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
#side .matching-note{border-top:1px solid var(--line);margin-top:20px;padding-top:12px;color:var(--muted);font-size:12px;line-height:1.6}
#side .matching-note h3{font-size:12px;margin:0 0 6px;color:var(--ink)}
#side .matching-note p{margin:0}
@media(min-width:1401px) and (max-width:1650px){#appHeader{gap:12px;padding:0 14px}#researchModes button{padding:0 8px}#sectionHelp{min-width:200px}}
@media(max-width:1400px){#sectionHelp{flex:1 1 240px;margin-right:12px}#contactOpen{order:4;margin-bottom:8px}#researchModes{flex:1}}
@media(max-width:1000px){#researchModes{flex:0 0 100%}}
@media(max-width:700px){#sectionHelp{flex-basis:100%;margin-right:0}#contactOpen{margin-left:auto;max-width:none}}
