html,body{overflow-x:clip}.shelf-gallery{position:relative;background:rgb(var(--color-forest-900));border-radius:24px;padding:clamp(1.25rem,3vw,2.5rem);color:rgb(var(--color-cream));display:flex;flex-direction:column;gap:clamp(1.25rem,2.5vw,2rem);box-shadow:0 28px 60px -24px #0000008c,0 8px 18px -8px #00000059,inset 0 1px #ffffff0a}.needs-attention-panel{background:rgba(var(--color-gold-light),.07);border:1px solid rgba(var(--color-gold-light),.18);border-radius:14px;overflow:hidden}.needs-attention-summary{display:flex;align-items:center;gap:.55rem;padding:.8rem 1rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:.875rem;font-weight:600;color:rgba(var(--color-gold-light),.95);list-style:none}.needs-attention-summary::-webkit-details-marker{display:none}.needs-attention-summary b{font-weight:700}.needs-attention-arrow{width:16px;height:16px;flex-shrink:0;color:rgba(var(--color-gold-light),.85);transition:transform .2s ease}details[open] .needs-attention-arrow{transform:rotate(90deg)}.needs-attention-grid{display:flex;flex-wrap:wrap;gap:.85rem;padding:0 1rem 1rem}.needs-attention-mini{display:flex;flex-direction:column;align-items:center;gap:.35rem;width:60px;text-decoration:none}.needs-attention-mini-photo{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;overflow:hidden;background:rgb(var(--color-forest-800));border:1px solid rgba(var(--color-gold-light),.32);color:rgba(var(--color-gold-light),.45);transition:border-color .2s ease,transform .2s ease}.needs-attention-mini-photo img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.needs-attention-mini-photo svg{width:18px;height:18px}.needs-attention-mini:hover .needs-attention-mini-photo{border-color:rgb(var(--color-gold-light));transform:translateY(-1px)}.needs-attention-mini-name{font-size:.66rem;text-align:center;color:rgba(var(--color-gold-light),.78);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shelf-filters,.shelf-sort{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem}.shelf-toolbar-label{font-size:.68rem;font-weight:700;color:rgba(var(--color-cream),.5);margin-right:.25rem;text-transform:uppercase;letter-spacing:.1em}.shelf-filter-btn,.shelf-sort-btn{white-space:nowrap;cursor:pointer;font-size:.78rem;font-weight:600;padding:.36rem .78rem;border-radius:999px;background:transparent;color:rgba(var(--color-cream),.62);border:1px solid transparent;transition:background .18s ease,color .18s ease,border-color .18s ease}.shelf-sort-btn{font-weight:500;font-size:.75rem;padding:.3rem .7rem}.shelf-filter-btn:hover,.shelf-sort-btn:hover{color:rgb(var(--color-cream));background:rgba(var(--color-cream),.07)}.shelf-filter-btn.is-active,.shelf-sort-btn.is-active{background:rgba(var(--color-cream),.13);color:rgb(var(--color-cream))}.shelf-filter-btn:focus-visible,.shelf-sort-btn:focus-visible{outline:2px solid rgb(var(--color-gold-light));outline-offset:2px}.shelf-filter-btn:active,.shelf-sort-btn:active{transform:translateY(1px)}.filter-count{font-variant-numeric:tabular-nums;opacity:.6;margin-left:.2rem}.shelf-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:clamp(.85rem,1.8vw,1.4rem)}.shelf-grid-item{min-width:0}.shelf-divider{display:flex;align-items:center;gap:1rem;margin-bottom:clamp(.85rem,1.8vw,1.4rem)}.shelf-divider:before,.shelf-divider:after{content:"";flex:1;height:1px;background:rgba(var(--color-cream),.14)}.shelf-divider>span{font-size:.74rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(var(--color-cream),.6);white-space:nowrap}.shelf-hidden{display:none!important}.shelf-empty{text-align:center;color:rgba(var(--color-cream),.5);font-size:.92rem;padding:2rem 0;margin:0}.shelf-empty-state{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:4rem 1rem;color:rgba(var(--color-cream),.62)}.shelf-empty-state svg{width:64px;height:64px;color:rgba(var(--color-cream),.22)}.shelf-empty-state p{font-weight:500;margin:0}.shelf-empty-btn{margin-top:.5rem;padding:.75rem 1.5rem;border-radius:999px;background:rgb(var(--color-terra));color:rgb(var(--color-cream));font-weight:600;cursor:pointer;border:0;transition:background .18s ease,transform .18s ease}.shelf-empty-btn:hover{background:rgba(var(--color-terra),.88);transform:translateY(-1px)}.shelf-empty-btn:focus-visible{outline:2px solid rgb(var(--color-gold-light));outline-offset:2px}.plant-card{position:relative;display:flex;flex-direction:column;text-decoration:none;color:inherit;border-radius:16px;outline:2px solid transparent}.plant-card:focus-visible{outline-color:rgb(var(--color-gold-light));outline-offset:3px}.plant-photo{position:relative;aspect-ratio:4 / 5;width:100%;margin:0;border-radius:14px;overflow:hidden;background:rgb(var(--color-forest-800));box-shadow:0 10px 22px -10px #0009;transition:transform .3s ease,box-shadow .3s ease}.plant-photo>img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block;transition:transform .45s ease}.plant-photo .plant-placeholder{width:100%;height:100%;display:grid;place-items:center;color:rgba(var(--color-cream),.16)}.plant-photo .plant-placeholder svg{width:40%;height:40%}.plant-card:hover .plant-photo,.plant-card:focus-visible .plant-photo{transform:translateY(-3px);box-shadow:0 22px 32px -10px #0000008c}.plant-card:hover .plant-photo>img,.plant-card:focus-visible .plant-photo>img{transform:scale(1.04)}.plant-card[data-status=wanted] .plant-photo:after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:14px;border:1.5px dashed rgba(var(--color-cream),.32)}.plant-health-dot{position:absolute;top:10px;right:10px;z-index:10;width:12px;height:12px;border-radius:50%;border:2px solid rgb(var(--color-forest-900));pointer-events:none}.plant-health-dot--thriving{background:#4ade80}.plant-health-dot--struggling{background:rgb(var(--color-terra));animation:plantPulse 2.4s ease-in-out infinite}@keyframes plantPulse{0%,to{box-shadow:0 0 rgba(var(--color-terra),.5)}50%{box-shadow:0 0 0 6px rgba(var(--color-terra),0)}}.plant-milestone-badge{position:absolute;top:10px;left:10px;z-index:10;display:inline-flex;align-items:center;gap:.2rem;padding:.18rem .5rem;background:rgba(var(--color-gold-light),.95);color:rgb(var(--color-forest-900));font-size:.68rem;font-weight:700;border-radius:999px;pointer-events:none;font-variant-numeric:tabular-nums}.quick-actions{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.7rem .55rem .55rem;background:linear-gradient(180deg,#0000,#0009 80%);border-radius:0 0 14px 14px;opacity:0;transition:opacity .2s ease}.plant-card:hover .quick-actions,.plant-card:focus-within .quick-actions{opacity:1}@media (hover: none){.plant-card .quick-actions{opacity:1}}.care-btn{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:rgba(var(--color-cream),.18);color:rgb(var(--color-cream));border:0;cursor:pointer;font-size:.95rem;line-height:1;transition:background .18s ease,transform .18s ease}.care-btn:hover{background:rgba(var(--color-cream),.32)}.care-btn:focus-visible{outline:2px solid rgb(var(--color-cream));outline-offset:2px}.care-btn:active{transform:scale(.92)}.mark-acquired-btn{position:absolute;left:50%;bottom:12px;transform:translate(-50%);padding:.45rem 1.05rem;border-radius:999px;background:rgba(var(--color-terra),.95);color:rgb(var(--color-cream));border:0;cursor:pointer;font-weight:700;font-size:.78rem;white-space:nowrap;opacity:0;transition:opacity .2s ease,background .18s ease}.plant-card[data-status=wanted]:hover .mark-acquired-btn,.plant-card[data-status=wanted]:focus-within .mark-acquired-btn{opacity:1}@media (hover: none){.plant-card[data-status=wanted] .mark-acquired-btn{opacity:1}}.mark-acquired-btn:hover{background:rgb(var(--color-terra))}.mark-acquired-btn:focus-visible{outline:2px solid rgb(var(--color-cream));outline-offset:2px}.plant-meta{margin-top:.7rem;padding:0 .1rem;display:flex;flex-direction:column;gap:.1rem;min-width:0}.plant-name{font-weight:600;font-size:.95rem;line-height:1.2;color:rgb(var(--color-cream));margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.005em}.plant-nickname{font-style:italic;font-size:.78rem;line-height:1.3;color:rgba(var(--color-cream),.55);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plant-meta-line{font-size:.75rem;line-height:1.3;color:rgba(var(--color-cream),.5);margin:.15rem 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.plant-meta-line.is-italic{font-style:italic}.add-plant-card{aspect-ratio:4 / 5;width:100%;border-radius:14px;border:1.5px dashed rgba(var(--color-cream),.22);background:transparent;color:rgba(var(--color-cream),.5);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;cursor:pointer;transition:border-color .2s ease,color .2s ease,background .2s ease,transform .2s ease}.add-plant-card:hover{border-color:rgb(var(--color-gold-light));color:rgb(var(--color-gold-light));background:rgba(var(--color-gold-light),.05);transform:translateY(-2px)}.add-plant-card:focus-visible{outline:2px solid rgb(var(--color-gold-light));outline-offset:2px}.add-plant-card svg{width:32px;height:32px}.add-plant-card-label{font-size:.84rem;font-weight:600}@media (max-width: 640px){.shelf-gallery{border-radius:16px;padding:1rem}.shelf-grid{grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr))}.plant-name{font-size:.85rem}.plant-nickname{font-size:.72rem}.plant-meta-line{font-size:.7rem}.plant-milestone-badge{font-size:.62rem;padding:.14rem .42rem;top:8px;left:8px}.plant-health-dot{top:8px;right:8px;width:10px;height:10px}}@media (prefers-reduced-motion: reduce){.plant-photo,.plant-photo>img,.quick-actions,.mark-acquired-btn,.care-btn,.shelf-sort-btn,.shelf-filter-btn,.add-plant-card,.needs-attention-mini-photo,.needs-attention-arrow,.shelf-empty-btn{transition:none}.plant-card:hover .plant-photo,.plant-card:focus-visible .plant-photo,.plant-card:hover .plant-photo>img,.plant-card:focus-visible .plant-photo>img,.add-plant-card:hover,.shelf-empty-btn:hover{transform:none}.plant-health-dot--struggling{animation:none}}
