@import"https://fonts.googleapis.com/css2?family=Manrope:wght@400;600;700&family=Sora:wght@500;600;700&display=swap";:root{color-scheme:dark;--font-heading: "Sora", "Avenir Next", "Trebuchet MS", sans-serif;--font-body: "Manrope", "Gill Sans", "Trebuchet MS", sans-serif;--bg-base: #060d0c;--bg-overlay: radial-gradient(circle at 18% 12%, #12352f 0%, transparent 42%), radial-gradient(circle at 88% 1%, #0f2d27 0%, transparent 40%), linear-gradient(180deg, #07100e 0%, #050808 100%);--surface-1: #0c1c19;--surface-2: #112824;--surface-3: #163531;--surface-border: rgba(116, 210, 180, .2);--text-primary: #f5faf8;--text-secondary: #abbbb6;--text-muted: #6b8079;--accent-teal: #57c4a0;--accent-teal-strong: #73e2b8;--accent-gold: #dfb55e;--accent-gold-strong: #ffcc70;--danger: #ef7d6f;--badge-hybrid: #5ebd76;--badge-indica: #ee9b3f;--badge-sativa: #8d7dec;--shadow-soft: 0 14px 32px rgba(0, 0, 0, .35);--radius-card: 18px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;width:100%}body{background:var(--bg-overlay);background-color:var(--bg-base);color:var(--text-primary);font-family:var(--font-body);line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{margin:0;font-family:var(--font-heading);letter-spacing:.01em}p{margin:0}button,input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.app-shell{min-height:100dvh;padding:0 0 env(safe-area-inset-bottom);display:flex;flex-direction:column}.app-toolbar{position:sticky;top:0;z-index:24;display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.75rem 1rem;backdrop-filter:blur(14px);background:linear-gradient(170deg,#040c0aeb,#071210c7);border-bottom:1px solid rgba(116,210,180,.16)}.app-branding{display:flex;align-items:center;gap:.5rem}.app-brand-dot{width:1.8rem;height:1.8rem;border-radius:999px;display:grid;place-items:center;background:#57c4a033;border:1px solid rgba(115,226,184,.35)}.app-brand-title{font-family:var(--font-heading);font-size:.95rem;font-weight:700}.app-brand-subtitle{color:var(--text-secondary);font-size:.72rem}.connection-status{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--text-secondary)}.status-dot{width:.58rem;height:.58rem;border-radius:50%;box-shadow:0 0 10px #00000073}.status-dot.is-online{background:#48d67f}.status-dot.is-offline{background:#e95d5d}.app-main{padding:.95rem 1rem 6.5rem;max-width:1120px;margin:0 auto;width:100%}.page{display:flex;flex-direction:column;gap:1rem;animation:page-fade-in .26s ease both}@keyframes page-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.3rem}.page-header h1{font-size:clamp(1.55rem,4.5vw,2rem)}.eyebrow{color:var(--accent-gold);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700}.detail-subtitle{color:var(--text-secondary);margin-top:.25rem}.section-block{display:flex;flex-direction:column;gap:.75rem}.section-heading{display:flex;align-items:baseline;justify-content:space-between;color:var(--text-secondary)}.section-heading h2{color:var(--text-primary);font-size:1.15rem}.view-toggle{display:inline-flex;gap:.45rem;width:fit-content;padding:.2rem;border-radius:999px;background:#57c4a012;border:1px solid rgba(115,226,184,.18)}.pull-indicator{align-self:center;font-size:.8rem;color:var(--text-secondary);background:#0c1c19c7;border:1px solid rgba(116,210,180,.25);border-radius:999px;padding:.3rem .75rem;margin-top:-.35rem;transition:transform .15s ease,opacity .15s ease;opacity:.84;pointer-events:none}.pull-indicator.is-ready{color:#ffe8b8}.pull-indicator.is-refreshing{color:var(--accent-teal-strong)}.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.stat-card{background:linear-gradient(160deg,#57c4a021,#10201ce0);border:1px solid var(--surface-border);border-radius:var(--radius-card);padding:.9rem;box-shadow:var(--shadow-soft)}.stat-value{font-family:var(--font-heading);font-size:1.45rem;font-weight:700}.stat-label{color:var(--text-secondary);font-size:.9rem}.offline-banner{background:linear-gradient(120deg,#dfb55e42,#583d175c);border:1px solid rgba(223,181,94,.55);color:#ffe8b8;padding:.75rem .9rem;border-radius:14px}.api-control{display:flex;flex-direction:column;gap:.5rem}.api-control-panel{background:var(--surface-1);border:1px solid var(--surface-border);border-radius:14px;padding:.9rem;display:flex;flex-direction:column;gap:.7rem}.api-control-panel p{color:var(--text-secondary);font-size:.85rem}.api-control-actions{display:flex;gap:.55rem}.api-warning{color:#ffd9a9;background:#57340e73;border:1px solid rgba(223,181,94,.56);border-radius:12px;padding:.6rem .75rem;font-size:.88rem}.card-grid{display:grid;grid-template-columns:1fr;gap:.75rem}.strain-card{display:flex;flex-direction:column;gap:.5rem;padding:.95rem;border-radius:var(--radius-card);background:linear-gradient(145deg,#163531e6,#0a1412f2);border:1px solid rgba(115,226,184,.15);box-shadow:var(--shadow-soft);transition:transform .15s ease,border-color .15s ease}.strain-card:hover,.strain-card:focus-visible{transform:translateY(-2px);border-color:#73e2b873}.strain-thumb{border-radius:13px;overflow:hidden;border:1px solid rgba(112,174,157,.25);background:#081412f2}.strain-thumb img{width:100%;aspect-ratio:1.6;object-fit:cover}.image-fallback{width:100%;min-height:110px;display:grid;place-items:center;color:#d6f6ea;font-size:1.45rem;background:linear-gradient(145deg,#1e443c8c,#091412eb)}.strain-card-header{display:flex;gap:.4rem;justify-content:space-between;align-items:start}.strain-card h3{font-size:1rem}.strain-breeder{color:var(--accent-gold-strong);font-weight:600}.strain-lineage{color:var(--text-secondary);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strain-ranges{display:flex;justify-content:space-between;gap:.5rem;color:var(--text-secondary);font-size:.86rem}.strain-ranges strong{color:var(--text-primary)}.skeleton-card{display:flex;flex-direction:column;gap:.55rem;padding:.95rem;border-radius:var(--radius-card);border:1px solid rgba(115,226,184,.12);background:linear-gradient(145deg,#0f201dd6,#0a1412e6);box-shadow:var(--shadow-soft)}.skeleton-thumb{width:100%;aspect-ratio:1.6;border-radius:12px;background:#1e3c36a6}.skeleton-line{height:.72rem;border-radius:999px;width:100%;background:#1e3c3694}.skeleton-short{width:48%}.skeleton-medium{width:68%}.skeleton-shimmer{position:relative;overflow:hidden}.skeleton-shimmer:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(100deg,transparent 0%,rgba(198,255,235,.2) 50%,transparent 100%);animation:shimmer 1.15s linear infinite}@keyframes shimmer{to{transform:translate(100%)}}.strain-badge{border-radius:999px;display:inline-flex;align-items:center;justify-content:center;padding:.24rem .63rem;font-size:.72rem;font-weight:700;color:#050606;letter-spacing:.02em}.badge-hybrid{background:var(--badge-hybrid)}.badge-indica{background:var(--badge-indica)}.badge-sativa{background:var(--badge-sativa)}.filter-panel,.seed-form,.detail-card,.gallery-panel,.detail-summary{background:#0c1c19e6;border:1px solid rgba(116,210,180,.18);border-radius:var(--radius-card);padding:.9rem;box-shadow:var(--shadow-soft)}.filter-panel,.seed-form{display:flex;flex-direction:column;gap:.75rem}label{display:flex;flex-direction:column;gap:.35rem;color:var(--text-secondary);font-weight:600}input,textarea,select{background:var(--surface-2);border:1px solid rgba(112,174,157,.34);border-radius:12px;color:var(--text-primary);padding:.65rem .75rem}input::placeholder,textarea::placeholder{color:var(--text-muted)}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid rgba(223,181,94,.62);outline-offset:1px}:where(button,a,input,textarea,select,[role=button]):focus-visible{outline:2px solid rgba(223,181,94,.75);outline-offset:2px}:where(button,a,input,textarea,select,[role=button]):focus:not(:focus-visible){outline:none}.number-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.primary-button,.ghost-button,.seed-form button,.api-control-panel button,.type-chip,.captured-item button,.file-upload span{border:none;border-radius:999px;padding:.55rem .95rem;font-weight:700;cursor:pointer;transition:opacity .12s ease,transform .12s ease}.primary-button,.seed-form button[type=submit]{background:linear-gradient(120deg,var(--accent-gold),var(--accent-gold-strong));color:#15231d}.primary-button:disabled,.seed-form button:disabled{opacity:.45;cursor:not-allowed}.ghost-button,.api-control-panel button,.type-chip,.captured-item button,.file-upload span{background:#57c4a029;color:var(--accent-teal-strong);border:1px solid rgba(115,226,184,.35)}.ghost-button:hover,.primary-button:hover,.seed-form button:hover,.api-control-panel button:hover,.type-chip:hover,.captured-item button:hover,.file-upload span:hover{transform:translateY(-1px)}.ghost-button.danger,.api-control-panel .danger{color:#ffd5cf;background:#ef7d6f29;border-color:#ef7d6f80}.filter-heading{color:var(--text-secondary);margin-bottom:.35rem}.chip-row{display:flex;flex-wrap:wrap;gap:.45rem}.type-chip.is-selected{background:linear-gradient(125deg,#57c4a047,#dfb55e38);color:#d8f4e9}.trait-chip{padding:.28rem .65rem;background:#dfb55e2b;border-radius:999px;border:1px solid rgba(223,181,94,.45);color:#ffe8be;font-size:.84rem}.form-error{color:#ffb6ab;background:#5017149e;border:1px solid rgba(239,125,111,.5);border-radius:12px;padding:.65rem .75rem}.loading-copy,.empty-copy{color:var(--text-secondary)}.camera-module{display:flex;flex-direction:column;gap:.75rem}.camera-module header p{color:var(--text-secondary);margin-top:.3rem}.camera-actions{display:flex;gap:.5rem;flex-wrap:wrap}.camera-preview-shell{border:1px dashed rgba(112,174,157,.45);border-radius:14px;min-height:180px;background:#071311e6;position:relative;overflow:hidden}.camera-preview-shell video{width:100%;height:100%;max-height:280px;object-fit:cover;display:none}.camera-preview-shell video.is-visible{display:block}.camera-placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--text-muted)}.file-upload{position:relative;display:inline-flex;width:fit-content}.file-upload input{position:absolute;inset:0;opacity:0;cursor:pointer}.captured-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.captured-item{background:var(--surface-2);border:1px solid rgba(112,174,157,.35);border-radius:14px;padding:.5rem;margin:0;display:flex;flex-direction:column;gap:.4rem}.captured-item img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}.captured-item button{border-radius:8px;padding:.35rem .5rem}.detail-header{align-items:flex-start}.detail-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;color:var(--text-secondary)}.detail-summary strong{color:var(--text-primary)}.gallery-panel{display:flex;flex-direction:column;gap:.6rem}.gallery-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,1fr);gap:.55rem;overflow-x:auto;padding-bottom:.2rem}.gallery-item{margin:0;display:flex;flex-direction:column;gap:.3rem}.gallery-item img,.gallery-placeholder{width:100%;aspect-ratio:1;border-radius:12px;object-fit:cover;background:var(--surface-3)}.gallery-placeholder{display:grid;place-items:center;color:var(--text-muted);border:1px dashed rgba(112,174,157,.38)}.gallery-item figcaption{color:var(--text-secondary);font-size:.82rem}.bottom-nav{position:fixed;z-index:30;left:.5rem;right:.5rem;bottom:max(.5rem,env(safe-area-inset-bottom));background:linear-gradient(145deg,#081512f7,#0e2520f0);border:1px solid rgba(112,174,157,.35);border-radius:18px;box-shadow:0 14px 34px #00000080;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.25rem;padding:.45rem}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.18rem;color:var(--text-secondary);border-radius:12px;min-height:56px}.bottom-nav-item svg{width:20px;height:20px;fill:currentColor}.bottom-nav-item span{font-size:.72rem;font-weight:700}.bottom-nav-item.is-active{color:var(--accent-gold-strong);background:#dfb55e29}.empty-state{border-radius:14px;border:1px dashed rgba(116,210,180,.35);background:#081412bf;padding:.9rem;display:grid;gap:.5rem}.empty-state h3{font-size:1rem}.empty-state-illustration{width:100%;max-width:360px}.empty-illustration-panel{fill:#122b26e6;stroke:#74d2b440}.empty-illustration-shadow{fill:#03060673}.empty-illustration-ring{fill:none;stroke:#dfb55eb8;stroke-width:5}.empty-illustration-stroke{stroke:#dfb55eb8;stroke-width:5;stroke-linecap:round}.toast-region{position:fixed;z-index:60;left:1rem;right:1rem;bottom:calc(5.4rem + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:.8rem;border-radius:14px;padding:.62rem .78rem;border:1px solid rgba(116,210,180,.22);background:#0c1c19f5;box-shadow:var(--shadow-soft)}.toast p{font-size:.88rem}.toast-success{border-color:#5ddd997a;color:#cbffd9;background:#143826f0}.toast-error{border-color:#ef7d6f80;color:#ffd1c9;background:#501714f2}.toast-dismiss{border:none;background:transparent;color:currentColor;font-size:1rem;cursor:pointer}.error-screen{min-height:100dvh;display:grid;place-items:center;padding:1.2rem}.error-screen-card{width:min(420px,100%);padding:1.2rem;border-radius:var(--radius-card);background:#0c1c19f2;border:1px solid rgba(116,210,180,.2);display:flex;flex-direction:column;gap:.65rem}.not-found-page{align-items:flex-start}@media(min-width:640px){.app-main{padding:1.25rem 1.25rem 6.7rem}.app-toolbar{padding:.85rem 1.25rem}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.captured-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.bottom-nav{left:50%;transform:translate(-50%);width:min(520px,calc(100% - 1rem))}.toast-region{left:50%;right:auto;width:min(480px,calc(100% - 2rem));transform:translate(-50%)}}@media(min-width:980px){.card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
