:root{--paper:#e7e4d3;--paper-raised:#f1eee2;--paper-sunk:#dcd8c6;--ink:#23291f;--ink-soft:#4b5142;--ink-faint:#5c5e4c;--line:#cac6b0;--line-strong:#b1ac92;--line-control:#847f69;--green:#33503a;--green-bright:#4f7a44;--on-green:#f4f1e4;--sepia:#6f5f45;--danger:#9a3b34;--tap:2.75rem;--font-display:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"SF Mono", ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;--text-xs:.72rem;--text-sm:.82rem;--text-base:.94rem;--text-md:1.06rem;--text-lg:1.25rem;--text-xl:1.55rem;--text-2xl:2.05rem;--text-3xl:2.7rem;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-8:3rem;--r-sm:3px;--r:5px;--r-lg:10px;--r-pill:999px;--shadow-card:0 1px 2px #23291f0f, 0 6px 16px -12px #23291f47;--shadow-pop:0 8px 30px -10px #23291f52;--header-h:3.5rem;--filter-h:3.25rem;--nav-h:3.75rem;--maxw:68rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--paper:#171b14;--paper-raised:#1f2519;--paper-sunk:#10130d;--ink:#e7e2d0;--ink-soft:#b6b3a0;--ink-faint:#9a9781;--line:#333a2b;--line-strong:#454c39;--line-control:#6d7359;--green:#7fa86c;--green-bright:#97c079;--on-green:#171b14;--sepia:#b39c74;--danger:#d98079;--shadow-card:0 1px 2px #0006, 0 6px 18px -12px #000000b3;--shadow-pop:0 10px 34px -10px #000000b3;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#171b14;--paper-raised:#1f2519;--paper-sunk:#10130d;--ink:#e7e2d0;--ink-soft:#b6b3a0;--ink-faint:#9a9781;--line:#333a2b;--line-strong:#454c39;--line-control:#6d7359;--green:#7fa86c;--green-bright:#97c079;--on-green:#171b14;--sepia:#b39c74;--danger:#d98079;--shadow-card:0 1px 2px #0006, 0 6px 18px -12px #000000b3;--shadow-pop:0 10px 34px -10px #000000b3;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.55;overflow-x:hidden}body:before{content:"";z-index:-1;pointer-events:none;opacity:.5;background-image:radial-gradient(circle at 20% 30%, color-mix(in srgb, var(--sepia) 5%, transparent) 0, transparent 45%), radial-gradient(circle at 80% 70%, color-mix(in srgb, var(--green) 5%, transparent) 0, transparent 45%);position:fixed;inset:0}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;font-weight:600;line-height:1.12}img,svg{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none}button:active,a:active{opacity:.72}input,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--green-bright);outline-offset:2px;border-radius:var(--r-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.binomial{font-family:var(--font-display);color:var(--ink-soft);font-style:italic}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.eyebrow{font-family:var(--font-sans);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.14em;color:var(--ink-faint);font-weight:600}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.wrap{width:100%;max-width:var(--maxw);padding-inline:var(--sp-4);margin-inline:auto}.app{min-height:100dvh;padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom))}.app-header{z-index:30;height:var(--header-h);align-items:center;gap:var(--sp-3);padding:0 var(--sp-4);background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;position:sticky;top:0}.brand{align-items:center;gap:var(--sp-2);margin-right:auto;display:flex}.brand-mark{width:1.7rem;height:1.7rem}.brand-name{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.02em;font-weight:600}.brand-name b{color:var(--green);font-weight:600}.icon-btn{border-radius:var(--r-pill);width:2.1rem;height:2.1rem;color:var(--ink-soft);border:1px solid #0000;place-items:center;display:inline-grid}.icon-btn:hover{border-color:var(--line-strong);color:var(--ink)}.app-nav{z-index:30;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);grid-auto-columns:1fr;grid-auto-flow:column;display:grid;position:fixed;bottom:0;left:0;right:0}.nav-item{font-size:var(--text-xs);letter-spacing:.02em;color:var(--ink-faint);flex-direction:column;justify-content:center;align-items:center;gap:3px;transition:color .15s;display:flex}.nav-item svg{stroke-width:1.6px;width:1.35rem;height:1.35rem}.nav-item.active{color:var(--green)}.nav-item.active .nav-dot{opacity:1}.nav-dot{background:var(--green);opacity:0;border-radius:50%;width:4px;height:4px}.page{padding-block:var(--sp-4) var(--sp-8)}.searchbar{margin-top:var(--sp-4);align-items:center;display:flex;position:relative}.searchbar svg.search-icon{left:var(--sp-3);width:1.15rem;height:1.15rem;color:var(--ink-faint);pointer-events:none;position:absolute}.searchbar input{border:1.5px solid var(--line-control);border-radius:var(--r-lg);background:var(--paper-raised);width:100%;height:3rem;font-size:var(--text-md);padding:0 2.75rem}.searchbar input::placeholder{color:var(--ink-faint)}.searchbar input:focus-visible{border-color:var(--green);box-shadow:0 0 0 3px color-mix(in srgb, var(--green) 18%, transparent);outline:none}.search-clear{right:var(--sp-2);border-radius:var(--r-pill);width:2rem;height:2rem;color:var(--ink-faint);place-items:center;display:grid;position:absolute}.search-clear:hover{color:var(--ink);background:var(--paper-sunk)}.quick-ask{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-pill);font-size:var(--text-sm);color:var(--ink-soft);background:0 0;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.quick-ask:hover{border-color:var(--green);color:var(--ink)}.filter-bar{top:calc(var(--header-h) - 1px);z-index:20;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0 var(--sp-3);background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);margin-bottom:var(--sp-4);display:flex;position:sticky}.result-count{font-size:var(--text-sm);color:var(--ink-soft)}.result-count b{font-family:var(--font-mono);color:var(--ink);font-weight:600}.filter-bar .spacer{margin-left:auto}.btn{align-items:center;gap:var(--sp-2);height:2.4rem;padding:0 var(--sp-4);border-radius:var(--r);border:1px solid var(--line-strong);background:var(--paper-raised);font-size:var(--text-sm);color:var(--ink);font-weight:500;transition:border-color .15s,background .15s;display:inline-flex}.btn:hover{border-color:var(--green)}.btn--primary{background:var(--green);border-color:var(--green);color:var(--on-green)}.btn--primary:hover{background:var(--green-bright);border-color:var(--green-bright)}.btn--ghost{color:var(--ink-soft);background:0 0;border-color:#0000}.btn--ghost:hover{color:var(--ink);background:var(--paper-sunk);border-color:#0000}.btn--sm{height:2rem;padding:0 var(--sp-3)}.btn .count-badge{border-radius:var(--r-pill);background:var(--green);min-width:1.25rem;height:1.25rem;color:var(--on-green);font-family:var(--font-mono);font-size:var(--text-xs);place-items:center;padding:0 .3rem;font-weight:600;display:inline-grid}.catalog-body{gap:var(--sp-5);display:grid}.facets-inline{display:none}.facets{gap:var(--sp-4);flex-direction:column;display:flex}.facet{border-bottom:1px solid var(--line);padding-bottom:var(--sp-3)}.facet:last-child{border-bottom:none}.swatch{border:1px solid color-mix(in srgb, var(--ink) 45%, transparent);border-radius:50%;flex:none;width:.85rem;height:.85rem;display:inline-block;box-shadow:inset 0 0 0 1.5px #ffffff40}.empty{text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--ink-soft)}.empty svg{width:3rem;height:3rem;margin:0 auto var(--sp-3);color:var(--ink-faint)}.empty h2,.empty h3{font-size:var(--text-lg);margin-bottom:var(--sp-2)}.drawer-backdrop{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#14181066;animation:.2s fade-in;position:fixed;inset:0}.drawer{z-index:51;background:var(--paper);border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg);border-top:1px solid var(--line-strong);max-height:86dvh;box-shadow:var(--shadow-pop);flex-direction:column;animation:.28s cubic-bezier(.2,.8,.2,1) slide-up;display:flex;position:fixed;inset:auto 0 0}.drawer-grip{border-radius:var(--r-pill);background:var(--line-strong);width:2.5rem;height:.28rem;margin:var(--sp-2) auto 0}.drawer-head{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.drawer-head h2{font-size:var(--text-lg)}.drawer-body{padding:var(--sp-4);overflow-y:auto}.drawer-foot{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);padding-bottom:calc(var(--sp-3) + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper-raised);display:flex}.drawer-foot .btn{flex:1;justify-content:center;height:2.8rem}@keyframes fade-in{0%{opacity:0}}@keyframes slide-up{0%{transform:translateY(100%)}}@media (width>=48rem){.catalog-body{grid-template-columns:16rem 1fr;align-items:start}.facets-inline{top:calc(var(--header-h) + var(--filter-h) + var(--sp-3));max-height:calc(100dvh - var(--header-h) - var(--sp-6));padding-right:var(--sp-2);display:block;position:sticky;overflow-y:auto}.filter-toggle{display:none}.app-nav{justify-content:center;gap:var(--sp-6);grid-template-columns:none;grid-auto-columns:auto;grid-auto-flow:column}.nav-item{gap:var(--sp-2);flex-direction:row}}@media (pointer:coarse){.btn,.btn--sm,.icon-btn,.search-clear{min-height:var(--tap);min-width:var(--tap)}.brand{min-height:var(--tap)}}.detail{padding-bottom:var(--sp-8)}.detail-top{align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;display:flex}.back-link{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);margin:calc(var(--sp-2) * -1) 0 0 calc(var(--sp-3) * -1);min-height:var(--tap);font-size:var(--text-sm);color:var(--ink-soft);display:inline-flex}.back-link:hover{color:var(--green)}.attr-absent{font-size:var(--text-sm);color:var(--ink-faint);font-style:italic}.phenology{width:100%;font-size:var(--text-xs);color:var(--sepia)}.mine-add{align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border:1px dashed var(--sepia);border-radius:var(--r);color:var(--sepia);font-family:var(--font-display);font-size:var(--text-xs);cursor:pointer;background:0 0;display:inline-flex}.mine-add:hover:not(:disabled){background:color-mix(in srgb, var(--sepia) 12%, transparent)}.mine-add:disabled{opacity:.6;cursor:default}.mine-edit{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.mine-input{min-width:0;padding:var(--sp-1) var(--sp-2);border:1px solid var(--line-control);border-radius:var(--r);background:var(--paper);color:var(--ink);font-family:var(--font-display);font-size:var(--text-sm);flex:8rem}.mine-input:focus-visible{outline:2px solid var(--green);outline-offset:1px}.mine-refused{font-size:var(--text-xs);color:var(--danger);flex-basis:100%}.mine-photo{margin-top:var(--sp-4)}.specimen-photo--mine{border-color:var(--sepia)}.thumb--mine{object-fit:cover;width:100%;height:100%;box-shadow:inset 0 0 0 2px var(--sepia);display:block}.mine-count{margin-left:var(--sp-2);font-size:var(--text-xs)}.detail-head{gap:var(--sp-4);padding-bottom:var(--sp-4);border-bottom:2px solid var(--ink);grid-template-columns:1fr auto;align-items:start;display:grid}.detail-title{font-size:var(--text-3xl);line-height:1}.detail-binomial{font-size:var(--text-lg);margin-top:var(--sp-2)}.detail-family{margin-top:var(--sp-2)}.detail-altnames{margin-top:var(--sp-2);font-size:var(--text-sm);color:var(--ink-soft)}.linkish{color:var(--green);text-underline-offset:2px;font:inherit;text-decoration:underline}.panel{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper-raised);padding:var(--sp-4)}.panel-title{font-family:var(--font-sans);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.13em;color:var(--ink-faint);margin-bottom:var(--sp-3);font-weight:700}.chip-row{flex-wrap:wrap;gap:.4rem;display:flex}.callout{gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--r);background:var(--paper-sunk);font-size:var(--text-sm);border-left:3px solid var(--sepia);display:flex}.callout--warn{border-left-color:var(--danger);background:color-mix(in srgb, var(--danger) 8%, var(--paper-sunk))}.callout svg{flex:none;width:1.15rem;height:1.15rem;margin-top:1px}.backup-say{font-size:var(--text-sm);color:var(--ink-soft);margin-top:var(--sp-2);line-height:1.55}.backup-say--ok{color:var(--ink)}.backup-say--bad{color:var(--danger)}.backup-actions,.backup-choice{gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.provenance{margin-top:var(--sp-5);padding-top:var(--sp-4);border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--ink-faint)}.specimen-photo{margin:var(--sp-4) 0 0;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper-sunk);box-shadow:var(--shadow-card);grid-template-rows:16rem auto;display:grid;overflow:hidden}.specimen-photo img{object-fit:cover;width:100%;height:100%;display:block}.specimen-photo .photo-missing{color:var(--ink-faint);place-self:center;font-size:2rem}.specimen-photo figcaption{padding:var(--sp-2) var(--sp-3);font-size:var(--text-xs);color:var(--ink-faint);border-top:1px solid var(--line)}.specimen-photo a,.callout a{color:var(--green)}.chip-key{color:var(--ink-faint);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;margin-right:3px}.facet-quick{gap:var(--sp-2);padding-bottom:var(--sp-3);border-bottom:1px solid var(--line);margin-bottom:var(--sp-1);flex-direction:column;display:flex}.fq-row{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);display:flex}.fq-row select{border:1px solid var(--line-control);border-radius:var(--r);background:var(--paper-raised);height:2rem;font-family:var(--font-mono);padding:0 var(--sp-2);margin-left:auto}.facet-sec{border-bottom:1px solid var(--line);padding:var(--sp-1) 0}.facet-sec>summary{align-items:center;gap:var(--sp-2);cursor:pointer;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.12em;color:var(--ink);padding:var(--sp-2) 0;font-weight:700;list-style:none;display:flex}.facet-sec>summary::-webkit-details-marker{display:none}.facet-sec>summary:after{content:"+";color:var(--ink-faint);font-weight:400;font-size:var(--text-md);margin-left:auto}.facet-sec[open]>summary:after{content:"–"}.facet-sec-badge{border-radius:var(--r-pill);background:var(--green);min-width:1.1rem;height:1.1rem;color:var(--on-green);font-family:var(--font-mono);font-size:var(--text-xs);place-items:center;padding:0 .3rem;display:inline-grid}.facet-sec-note{font-size:var(--text-xs);color:var(--ink-faint);margin:0 0 var(--sp-2);text-transform:none;letter-spacing:0;font-weight:400}.facet-search{width:100%;height:2rem;margin:0 0 var(--sp-2);padding:0 var(--sp-2);border:1px solid var(--line-control);border-radius:var(--r);background:var(--paper);font-size:var(--text-sm)}.facet-opts{gap:var(--sp-1);padding-bottom:var(--sp-2);flex-direction:column;display:flex}.fopt{justify-content:space-between;align-items:center;gap:var(--sp-2);border-radius:var(--r);border:1px solid var(--line);font-size:var(--text-sm);color:var(--ink-soft);text-align:left;background:0 0;padding:.32rem .5rem;display:flex}.fopt:hover{background:var(--paper-sunk);color:var(--ink)}.fopt.on{background:color-mix(in srgb, var(--green) 14%, transparent);color:var(--ink);border-color:var(--green);font-weight:500}.fopt-val{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.fopt-n{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-soft);flex:none}.fopt.on .fopt-n{color:var(--green)}.facet-more{font-size:var(--text-xs);color:var(--ink-faint);padding:var(--sp-1) .5rem}.pgrid{gap:var(--sp-2);grid-template-columns:1fr;display:grid}.pcard{gap:var(--sp-3);padding:var(--sp-2);background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--r-lg);grid-template-columns:3.5rem 1fr;align-items:center;transition:border-color .15s,transform .15s;display:grid}.pcard:hover{border-color:var(--green);transform:translateY(-1px)}.pcard-thumb{border-radius:var(--r);background:var(--paper-sunk);place-items:center;width:3.5rem;height:3.5rem;display:grid;overflow:hidden}.pcard-thumb img{object-fit:cover;width:100%;height:100%}.pcard-noimg{color:var(--ink-faint);font-size:1.3rem}.photo-missing{color:var(--ink-faint);cursor:help}.pcard-body{min-width:0}.pcard-name{font-family:var(--font-display);font-weight:600;font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;line-height:1.12;overflow:hidden}.pcard-sci{font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pcard-tags{flex-wrap:wrap;gap:.3rem;margin-top:.35rem;display:flex}.ptag{border-radius:var(--r-sm);background:var(--paper-sunk);font-size:var(--text-xs);color:var(--ink-soft);white-space:nowrap;align-items:center;padding:.1rem .45rem;display:inline-flex}.ptag--warn{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.chip-row .ptag{white-space:normal;overflow-wrap:anywhere}.ptag--fn{background:color-mix(in srgb, var(--green) 30%, var(--paper-raised));color:var(--ink)}.ptag--mine{background:color-mix(in srgb, var(--sepia) 28%, var(--paper-raised));color:var(--ink)}.pgrid-sentinel{text-align:center;padding:var(--sp-4);color:var(--ink-faint);font-size:var(--text-sm)}.loading{align-items:center;gap:var(--sp-3);padding:var(--sp-8) var(--sp-4);color:var(--ink-soft);flex-direction:column;display:flex}.spinner{border:2.5px solid var(--line-strong);border-top-color:var(--green);border-radius:50%;width:1.6rem;height:1.6rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.attr-row{gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px dotted var(--line-strong);grid-template-columns:7rem 1fr;align-items:baseline;display:grid}.attr-row:last-child{border-bottom:none}.attr-label{font-size:var(--text-sm);color:var(--ink-faint)}.detail-links{gap:var(--sp-3);margin-top:var(--sp-5);flex-wrap:wrap;display:flex}.detail-links a{padding:var(--sp-2) var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r);font-size:var(--text-sm);color:var(--ink);align-items:center;display:inline-flex}.detail-links a:hover{border-color:var(--green);color:var(--green)}.browse-top{padding-top:var(--sp-4)}.omnibox{position:relative}.omnibox .searchbar{margin-top:0}.omni-drop{z-index:40;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--r-lg);max-height:min(62vh,30rem);box-shadow:var(--shadow-pop);padding:var(--sp-2);position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.omni-group+.omni-group{margin-top:var(--sp-2);border-top:1px solid var(--line);padding-top:var(--sp-2)}.omni-group-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);padding:var(--sp-1) var(--sp-2)}.omni-item{align-items:center;gap:var(--sp-2);width:100%;padding:.45rem var(--sp-2);border-radius:var(--r);text-align:left;font-size:var(--text-base);color:var(--ink);display:flex}.omni-item:hover{background:color-mix(in srgb, var(--green) 12%, transparent)}.omni-item.hot{background:color-mix(in srgb, var(--green) 18%, transparent);box-shadow:inset 3px 0 0 var(--green)}.omni-tag{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--green);border:1px solid color-mix(in srgb, var(--green) 40%, transparent);border-radius:var(--r-sm);flex:none;padding:1px .4rem}.omni-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.omni-label .binomial{color:var(--ink-faint);font-size:var(--text-sm);margin-left:.4rem}.omni-n{color:var(--ink-soft);font-size:var(--text-xs);margin-left:auto}.omni-thumb{border-radius:var(--r-sm);background:var(--paper-sunk);width:1.9rem;height:1.9rem;color:var(--ink-faint);flex:none;place-items:center;display:grid;overflow:hidden}.omni-thumb img{object-fit:cover;width:100%;height:100%}.omni-hint{padding:var(--sp-2) var(--sp-2) var(--sp-1);font-size:var(--text-xs);color:var(--ink-faint);border-top:1px dotted var(--line);margin-top:var(--sp-2)}.trail{align-items:center;gap:var(--sp-1) var(--sp-2);margin-top:var(--sp-3);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.trail-start{color:var(--ink-faint);font-size:var(--text-sm)}.trail-step{align-items:center;gap:var(--sp-2);display:inline-flex}.trail-arrow{color:var(--ink-faint)}.trail-chip{border:1px solid var(--green);border-radius:var(--r-pill);background:color-mix(in srgb, var(--green) 12%, transparent);color:var(--ink);font-size:var(--text-sm);align-items:center;gap:.4rem;padding:.26rem .55rem;display:inline-flex}.trail-chip:hover{background:color-mix(in srgb, var(--green) 22%, transparent)}.trail-chip--text{border-style:dashed}.trail-n{color:var(--green);font-weight:600;font-size:var(--text-xs)}.trail-clear{font-size:var(--text-xs);color:var(--ink-faint);text-underline-offset:2px;text-decoration:underline}.trail-clear:hover{color:var(--ink)}.trail-undo{font-size:var(--text-xs);color:var(--green);text-underline-offset:2px;font-weight:600;text-decoration:underline}.spotbar{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.spotbar-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint)}.spot-wrap{align-items:center;gap:var(--sp-2);display:inline-flex}.spot{border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--paper-raised);font-size:var(--text-sm);color:var(--ink-soft);align-items:center;gap:.35rem;padding:.28rem .65rem;display:inline-flex}.spot:hover{border-color:var(--green);color:var(--ink)}.spot.on{border-color:var(--green);background:color-mix(in srgb, var(--green) 14%, transparent);color:var(--ink);font-weight:500}.spot--new{border-style:dashed}.spot-del{width:1.3rem;height:1.3rem;color:var(--ink-faint);background:var(--paper-sunk);border-radius:50%;place-items:center;display:grid;position:relative}.spot-del:hover{color:var(--ink)}.spot-del:after{content:"";position:absolute;inset:-11px}.spot-edit{font-size:var(--text-xs);color:var(--ink-faint);text-underline-offset:2px;text-decoration:underline}.spot-namer{gap:var(--sp-2);align-items:center;display:inline-flex}.spot-namer input{height:2rem;padding:0 var(--sp-2);border:1px solid var(--green);border-radius:var(--r-pill);background:var(--paper-raised);font-size:var(--text-sm);width:11rem}.today{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-lg);font-size:var(--text-sm);color:var(--ink-soft);flex-wrap:wrap;display:flex}.today-season{font-family:var(--font-display);color:var(--ink);border-bottom:1px dotted var(--line-strong);font-weight:600;text-decoration:none}.today-names{gap:var(--sp-1);flex-wrap:wrap;align-items:center;display:inline-flex}.today-more{font-size:var(--text-xs);color:var(--ink-faint)}.today-yards{gap:var(--sp-1);flex-wrap:wrap;margin-left:auto;display:inline-flex}.starters{margin-top:var(--sp-4);padding:var(--sp-3);border:1px dashed var(--line-strong);border-radius:var(--r-lg)}.starters-label{font-family:var(--font-display);font-weight:600;font-size:var(--text-md);margin-bottom:var(--sp-2);display:block}.starters-row{gap:var(--sp-2);flex-wrap:wrap;display:flex}.starters-hint{margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--ink-faint)}.seg{border:1px solid var(--line-strong);border-radius:var(--r);display:inline-flex;overflow:hidden}.filter-bar .seg,.filter-bar .filter-toggle{flex:none}.seg button{font-size:var(--text-sm);color:var(--ink-soft);padding:.3rem .8rem}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--green);color:var(--on-green)}.guild{gap:var(--sp-5);flex-direction:column;display:flex}.guild-head{align-items:center;gap:var(--sp-2);padding-bottom:var(--sp-2);margin-bottom:var(--sp-3);border-bottom:2px solid var(--ink);display:flex}.guild-head h2{font-size:var(--text-lg)}.guild-n{color:var(--ink-faint);margin-left:auto}.guild-spine{flex:none}.guild-empty{font-size:var(--text-sm);color:var(--ink-faint)}.guild-more{margin-top:var(--sp-3);font-size:var(--text-sm);color:var(--green);text-underline-offset:3px;text-decoration:underline}.guild-unplaced summary{cursor:pointer;font-size:var(--text-sm);color:var(--ink-faint)}.companion-row{gap:var(--sp-2);flex-wrap:wrap;display:flex}.companion{align-items:center;gap:var(--sp-2);border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--paper-raised);font-size:var(--text-sm);padding:.3rem .7rem .3rem .3rem;display:inline-flex}.companion:hover{border-color:var(--green)}.companion-thumb{background:var(--paper-sunk);width:1.7rem;height:1.7rem;color:var(--ink-faint);border-radius:50%;flex:none;place-items:center;display:grid;overflow:hidden}.companion-thumb img{object-fit:cover;width:100%;height:100%}.facet-group-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.12em;color:var(--ink);padding:var(--sp-3) 0 var(--sp-1);font-weight:700}@media (width>=34rem){.pgrid{grid-template-columns:repeat(2,1fr)}}@media (width>=64rem){.pgrid{grid-template-columns:repeat(3,1fr)}}@media (pointer:coarse){.fopt{min-height:var(--tap);padding:var(--sp-2) var(--sp-3)}.facet-opts{gap:var(--sp-2)}.facet-sec>summary,.fq-row{min-height:var(--tap)}.fq-row select,.facet-search,.spot-namer input{height:var(--tap);font-size:16px}.fq-row input[type=checkbox]{width:1.4rem;height:1.4rem;accent-color:var(--green)}.trail-chip,.spot,.quick-ask,.omni-item,.seg{min-height:var(--tap)}.guild-unplaced summary{min-height:var(--tap);align-items:center;display:flex}.trail-clear,.trail-undo,.spot-edit,.guild-more{min-height:var(--tap);padding-inline:var(--sp-1);align-items:center;display:inline-flex}}.spot-del.armed{background:var(--ink);color:var(--paper)}.kept-entry{min-width:0}.kept-item{align-items:center;gap:var(--sp-1);display:flex}.kept-item .pcard{flex:1;min-width:0}.kept-remove{color:var(--ink-faint);flex:none}.kept-remove:hover{color:var(--danger)}.kept-note{margin:var(--sp-1) 0 0 var(--sp-2);padding-left:var(--sp-2);border-left:2px solid var(--sepia);font-family:var(--font-display);font-size:var(--text-sm);color:var(--ink-soft);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.note-panel{border-left:3px solid var(--sepia)}.note-text{font-family:var(--font-display);font-size:var(--text-md);margin-bottom:var(--sp-2);line-height:1.55}.note-text:last-of-type{margin-bottom:0}.note-meta{margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--ink-faint)}.note-input{width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--line-control);border-radius:var(--r);background:var(--paper);color:var(--ink);font-family:var(--font-display);font-size:var(--text-md);resize:vertical;line-height:1.55}.note-input:focus-visible{outline:2px solid var(--green);outline-offset:1px}.note-actions{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);display:flex}.note-delete{color:var(--danger);margin-left:auto}.seen-row{align-items:center;gap:var(--sp-1) var(--sp-3);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.seen-dates{align-items:center;gap:0 var(--sp-2);font-size:var(--text-xs);color:var(--ink-soft);flex-wrap:wrap;display:inline-flex}.seen-date{align-items:center;display:inline-flex}.seen-remove{color:var(--ink-faint)}.seen-remove:hover{color:var(--danger)}.nav-icon{display:inline-flex;position:relative}.nav-badge{border-radius:var(--r-pill);background:var(--green);min-width:.95rem;height:.95rem;color:var(--on-green);font-family:var(--font-mono);text-align:center;padding:0 .2rem;font-size:.6rem;font-weight:700;line-height:.95rem;position:absolute;top:-3px;left:60%}.bcal-grid{grid-template-columns:minmax(5.5rem,8rem) repeat(9,1fr);align-items:stretch;gap:2px;display:grid}.bcal-season{font-family:var(--font-sans);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);text-align:center;padding-bottom:var(--sp-1);border-bottom:1px solid var(--line);font-weight:700}.bcal-tickrow{display:none}.bcal-tick{color:var(--ink-faint);text-align:center;padding:2px 0;font-size:.6rem}.bcal-head{padding:3px var(--sp-2) 3px 0;flex-direction:column;justify-content:center;min-width:0;display:flex}.bcal-head--sum{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-weight:700}.bcal-name{font-size:var(--text-sm);color:var(--ink);overflow-wrap:anywhere;line-height:1.2}.bcal-name:hover{color:var(--green)}.bcal-period{color:var(--ink-faint);font-size:.62rem;line-height:1.3}.bcal-period--mine{color:var(--sepia)}.bcal-sum{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-soft);background:var(--paper-sunk);border-radius:var(--r-sm);padding:var(--sp-1) 0;place-items:center;display:grid}.bcal-sum--gap{color:var(--ink-faint);background:repeating-linear-gradient(45deg, transparent, transparent 3px, color-mix(in srgb, var(--ink) 7%, transparent) 3px, color-mix(in srgb, var(--ink) 7%, transparent) 6px)}.bcal-cell{border-radius:var(--r-sm);background:color-mix(in srgb, var(--ink) 4%, transparent);flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:1.15rem;display:flex}.bcal-bar{border-radius:var(--r-sm);background:var(--ink-faint);border:1px solid color-mix(in srgb, var(--ink) 30%, transparent);flex:none;width:100%;height:.62rem}.bcal-dot{background:var(--sepia);border:1px solid color-mix(in srgb, var(--ink) 35%, transparent);border-radius:50%;flex:none;width:.45rem;height:.45rem}.bcal-legend{margin-top:var(--sp-3);font-size:var(--text-xs);color:var(--ink-faint)}.bcal-legend .bcal-dot,.bcal-legend .bcal-bar{vertical-align:-1px;display:inline-block}.bcal-legend .bcal-bar{width:1.4rem}.bcal-verdict{margin-top:var(--sp-3);font-size:var(--text-sm);color:var(--ink)}.bcal-coverage{margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--ink-faint)}.bcal-unrecorded{margin-top:var(--sp-3);flex-wrap:wrap;gap:.4rem;display:flex}@media (width>=34rem){.bcal-tickrow{display:block}.bcal-grid{grid-template-columns:minmax(8rem,12rem) repeat(9,1fr)}}.kept-actions{gap:var(--sp-3);align-items:baseline;display:flex}.yard-head{align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);display:flex}.yard-title{min-width:0;color:var(--ink);font-family:var(--font-display);font-size:var(--text-xl);padding:var(--sp-1) 0;background:0 0;border:none;border-bottom:1px solid #0000;flex:1}.yard-title:focus-visible{border-bottom-color:var(--line-strong);outline:none}.yard-canvas{width:100%;height:auto;margin-top:var(--sp-3);border:1px solid var(--line);border-radius:var(--r);touch-action:none;-webkit-user-select:none;user-select:none;display:block}.yard-canvas--draw,.yard-canvas--area{cursor:crosshair}.yard-paper{fill:var(--paper)}.yard-underlay{opacity:.5;filter:saturate(.2)contrast(.95)}.yard-line,.yard-area{stroke:var(--sepia);stroke-width:3.5px;stroke-linecap:round;stroke-linejoin:round;fill:none}.yard-area{fill:color-mix(in srgb, var(--sepia) 13%, transparent)}.yard-label{fill:var(--sepia);font-family:var(--font-display);font-size:26px;font-style:italic}.yard-bench path{fill:color-mix(in srgb, var(--sepia) 30%, transparent);stroke:var(--sepia);stroke-width:2px}.yard-bench text{fill:var(--sepia);font-family:var(--font-display);font-size:22px;font-style:italic}.yard-bench--on path{fill:var(--sepia)}.yard-canvas--ground,.yard-canvas--ask{cursor:crosshair}.yard-shade{opacity:.16;pointer-events:none}.yard-area-under{fill:none;stroke:var(--sepia);stroke-width:9px;opacity:.1;stroke-linecap:round;stroke-linejoin:round}.yard-scalebar line{stroke:var(--ink-soft);stroke-width:2.5px}.yard-scalebar text{fill:var(--ink-faint);font-family:var(--font-sans);text-anchor:middle;font-size:19px}.yard-askmark line{stroke:var(--ink-soft);stroke-width:2px}.yard-askmark circle{fill:none;stroke:var(--ink-soft);stroke-width:2px}.yard-mark{stroke:var(--ink-soft);stroke-width:2px}.yard-mark--gone{stroke-dasharray:4 4}.yard-name{fill:var(--ink-soft);font-family:var(--font-sans);text-anchor:middle;font-size:22px}.yard-token--dim .yard-mark,.yard-token--dim .yard-name{opacity:.35}.yard-ring{fill:none;stroke:var(--sepia);stroke-width:2px;stroke-dasharray:7 6}.yard-ring-grip{fill:var(--sepia);stroke:var(--paper);stroke-width:2.5px}.yard-witness{fill:none;stroke:var(--sepia);stroke-width:2.5px}.yard-show{fill:none;stroke:var(--green);stroke-width:3.5px}.yard-sel{fill:none;stroke:var(--ink);stroke-width:1.5px;stroke-dasharray:3 5;opacity:.7}.yard-elev{cursor:default}.yard-horizon{stroke:var(--line-strong);stroke-width:2px}.yard-horizon--datum{stroke-dasharray:6 6;opacity:.7}.yard-earth{fill:var(--sepia);opacity:.08}.yard-elev-tick line{stroke:var(--line-strong);stroke-width:1.5px}.yard-elev-tick text{fill:var(--ink-faint);font-family:var(--font-sans);font-size:19px}.yard-fig path{stroke:var(--ink-soft);stroke-width:2px}.yard-fig-trunk{stroke:var(--ink-soft);stroke-width:4px}.yard-fig--vine path{stroke-dasharray:6 5}.yard-fig--hers path,.yard-fig--hers .yard-fig-trunk{stroke:var(--sepia)}.yard-fig-ghost{fill:none;stroke:var(--ink-faint);stroke-width:1.5px;stroke-dasharray:4 5;opacity:.6}.yard-token--dim .yard-fig{opacity:.35}.yard-taproot{stroke:var(--sepia);stroke-width:2.5px;stroke-dasharray:4 4}.yard-viewseg{margin-top:var(--sp-3)}.yard-model{aspect-ratio:5/6;width:100%;max-height:70vh;margin-top:var(--sp-3);border:1px solid var(--line);border-radius:var(--r);touch-action:none;overflow:hidden}.yard-model canvas{display:block;width:100%!important;height:100%!important}.yard-years{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);display:flex}.yard-years-label{white-space:nowrap;margin-top:0}.yard-slider{min-width:0;accent-color:var(--green);height:var(--tap);flex:1}.yard-sun{margin-top:var(--sp-2)}.yard-sun-row{align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}.yard-sun-input{min-width:8ch;padding:var(--sp-1) var(--sp-2);flex:1}.yard-bed-line{padding:var(--sp-1) 0;border-bottom:1px solid var(--line)}.yard-bed-line:last-of-type{border-bottom:none}.yard-rose-face{fill:var(--paper);stroke:var(--line);stroke-width:2px}.yard-rose-needle{stroke:var(--ink-soft);stroke-width:2.5px}.yard-rose-tip{fill:var(--ink-soft)}.yard-rose-n{fill:var(--ink-soft);font-family:var(--font-sans);text-anchor:middle;font-size:20px}@media (prefers-reduced-motion:no-preference){.yard-mark{transition:fill .25s}.yard-token,.yard-fig{transition:opacity .25s}.yard-fig path{transition:fill .25s}.yard-shade{transition:opacity .2s}}.scrub{align-items:flex-start;gap:var(--sp-2);margin-top:var(--sp-3);display:flex}.scrub-year,.scrub-play{min-height:var(--tap);padding:0 var(--sp-2);border:1px solid var(--line-control);border-radius:var(--r);color:var(--ink-soft);font-size:var(--text-xs);flex:none}.scrub-year.on,.scrub-play.on,.scrub-slot.on{background:var(--green);color:var(--on-green);border-color:var(--green)}.scrub-mid{flex:1;min-width:0}.scrub-slots{grid-template-columns:repeat(9,1fr);gap:2px;display:grid}.scrub-slot{min-height:var(--tap);border:1px solid var(--line-control);border-radius:var(--r-sm);color:var(--ink-faint);padding:0 1px;font-size:.62rem}.scrub-seasons{margin-top:2px;display:flex}.scrub-seasons span{text-align:center;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-size:.6rem}.yard-coverage{margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--ink-faint)}.yard-note{margin-top:var(--sp-2);font-size:var(--text-sm);color:var(--ink)}.yard-tools{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);display:flex}.yard-tools .seg{flex:1}.yard-labelrow{align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);display:flex}.yard-underlay-row{align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}.yard-findrow{margin-top:var(--sp-3)}.yard-findrow input{width:100%}.yard-underlay-row .yard-coverage{margin-top:0}.yard-ask{margin-top:var(--sp-3)}.yard-ask-select{width:100%;min-height:var(--tap);padding:0 var(--sp-2);border:1px solid var(--line-control);border-radius:var(--r);background:var(--paper);color:var(--ink);font-size:var(--text-sm)}.yard-tray{gap:var(--sp-2);margin-top:var(--sp-3);padding-bottom:var(--sp-1);display:flex;overflow-x:auto}.yard-plant{align-items:center;gap:var(--sp-1);min-height:var(--tap);padding:0 var(--sp-2);border:1px solid var(--line-control);border-radius:var(--r-pill);color:var(--ink-soft);font-size:var(--text-xs);flex:none;display:inline-flex}.yard-plant.on{background:var(--green);color:var(--on-green);border-color:var(--green)}.yard-plant-thumb{border-radius:50%;flex:none;width:26px;height:26px;overflow:hidden}.yard-plant-thumb img{object-fit:cover;width:100%;height:100%}.yard-sheet{margin-top:var(--sp-3)}.yard-sheet-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.yard-sheet-name{font-family:var(--font-display);font-size:var(--text-lg);color:var(--ink)}.yard-sheet-actions{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.yard-end{align-items:center;gap:var(--sp-2);margin-top:var(--sp-6);display:flex}.yard-row{align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--line);display:flex}.yard-row:last-child{border-bottom:none}.yard-row-name{min-width:0;font-family:var(--font-display);color:var(--ink);flex:1}.yard-row-meta{font-size:var(--text-xs);color:var(--ink-faint)}.annual{max-width:860px}.annual-head{margin-top:var(--sp-3);border-bottom:2px solid var(--ink);padding-bottom:var(--sp-3)}.annual-title{font-family:var(--font-display);font-size:var(--text-3xl);color:var(--ink);margin:0}.annual-sub{margin-top:var(--sp-1);color:var(--ink-soft);font-size:var(--text-sm)}.annual-yearnav{margin-bottom:var(--sp-2);justify-content:space-between;display:flex}.annual-head .btn{margin-top:var(--sp-2)}.annual-sec{margin-top:var(--sp-6);break-inside:avoid}.annual-sec>h2{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ink);border-bottom:1px solid var(--line-strong);padding-bottom:var(--sp-1);margin-bottom:var(--sp-3)}.annual-month{break-inside:avoid}.annual-month>h3{font-family:var(--font-display);font-size:var(--text-md);color:var(--ink-soft);margin:var(--sp-3) 0 var(--sp-1)}.annual-month ul{margin:0;padding:0;list-style:none}.annual-month li{font-size:var(--text-base);color:var(--ink-soft);padding:2px 0}.annual-plant{color:var(--ink);border-bottom:1px solid var(--line-strong);text-decoration:none}.annual-note{margin-bottom:var(--sp-3);break-inside:avoid}.annual-note-head{font-family:var(--font-display);color:var(--ink)}.annual-note-text{color:var(--ink-soft);white-space:pre-wrap;margin-top:2px}.annual-sheet{margin:var(--sp-4) 0;break-inside:avoid}.annual-sheet svg{width:100%;height:auto;display:block}.annual-caption{font-size:var(--text-xs);color:var(--ink-faint);margin-top:var(--sp-1)}.annual-photos{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.annual-photo{break-inside:avoid;margin:0}.annual-photo img{border:1px solid var(--line);border-radius:var(--r-sm);width:100%;height:auto;display:block}.annual-foot{margin-top:var(--sp-8);border-top:1px solid var(--line-strong);padding-top:var(--sp-2);font-size:var(--text-xs);color:var(--ink-faint)}@media print{:root,:root[data-theme=dark],:root:not([data-theme=light]){--paper:#e7e4d3;--paper-raised:#f1eee2;--paper-sunk:#dcd8c6;--ink:#23291f;--ink-soft:#4b5142;--ink-faint:#5c5e4c;--line:#cac6b0;--line-strong:#b1ac92;--line-control:#847f69;--green:#33503a;--green-bright:#4f7a44;--on-green:#f4f1e4;--sepia:#6f5f45;--danger:#9a3b34;--shadow-card:none;--shadow-pop:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.app-header,.app-nav,.annual-chrome{display:none!important}.annual{max-width:none}.annual-sec{page-break-inside:avoid}}
