:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh;width:100%}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}html{overflow-y:scroll;margin:0;padding:0}#root{max-width:1280px;margin:0 auto;padding:0;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.register-container{max-width:400px;margin:2rem auto;padding:2rem;border:1px solid #ccc;border-radius:8px}.register-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;text-align:left;gap:.5rem}.form-group label{font-weight:500;font-size:.9rem}.form-group input{padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;background-color:transparent;color:inherit}.form-group input:focus{outline:none;border-color:#646cff}.form-group input:disabled{opacity:.6;cursor:not-allowed}.form-group textarea{padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;background-color:transparent;color:inherit;font-family:inherit;resize:vertical;min-height:80px}.form-group textarea:focus{outline:none;border-color:#646cff}.form-group textarea:disabled{opacity:.6;cursor:not-allowed}.plant-list-container{max-width:900px;margin:2rem auto;padding:2rem;border:1px solid #ccc;border-radius:8px}.plant-list-container h2{margin-top:0;margin-bottom:1.5rem}.no-plants{color:#888;font-style:italic}.plants-table-wrapper{overflow-x:auto;margin:1rem 0}.plants-table{width:100%;border-collapse:collapse;margin:1rem 0}.plants-table th,.plants-table td{padding:.75rem;text-align:left;border-bottom:1px solid #ccc}.plants-table th{background-color:#646cff1a;font-weight:600;color:#646cff}.plants-table tbody tr:hover{background-color:#646cff0d}.plant-stats{margin-top:1.5rem;padding-top:1rem;border-top:1px solid #ccc;display:flex;gap:2rem;justify-content:center}.plant-stats p{margin:.5rem 0;color:#666}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:1rem}.loading-spinner{font-size:3rem;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem}.auth-container{width:100%;max-width:450px}.auth-header{text-align:center;margin-bottom:2rem;color:#fff}.auth-header h1{font-size:2.5rem;margin-bottom:.5rem}.auth-header p{font-size:1.1rem;opacity:.9}.auth-box{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003}.auth-switch{text-align:center;padding:1.5rem;border-top:1px solid #eee}.auth-switch p{margin:0;color:#666}.link-button{background:none;border:none;color:#646cff;cursor:pointer;font-weight:600;text-decoration:underline;padding:0}.link-button:hover{color:#535bf2}.dashboard{min-height:100vh;background-color:#f5f5f5;overflow:hidden}.dashboard-header{background:#fff;border-bottom:1px solid #e0e0e0;padding:1rem 2rem;box-shadow:0 2px 4px #0000000d}.header-content{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.dashboard-header h1{margin:0;font-size:1.8rem;color:#333}.header-actions{display:flex;align-items:center;gap:1.5rem}.user-welcome{color:#666;font-size:.9rem}.logout-button{padding:.5rem 1rem;background-color:#f5f5f5;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .2s}.logout-button:hover{background-color:#e0e0e0}.weather-info{max-width:1200px;margin:.75rem auto 0;padding:.5rem 0;display:flex;align-items:flex-start;justify-content:space-between;border-top:1px solid #eee}.weather-content{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem}.weather-date{display:flex;flex-direction:column;gap:.1rem}.weather-day{font-size:1rem;font-weight:600;color:#333}.weather-date-str{font-size:.85rem;color:#666}.weather-details{display:flex;align-items:center;gap:.75rem}.weather-label{font-size:.85rem;color:#888;font-weight:500}.weather-icon{font-size:1.5rem}.weather-condition{font-size:.95rem;color:#555;font-weight:500}.weather-current{display:flex;align-items:baseline;gap:.2rem;padding:.15rem .5rem;background:#4caf501a;border-radius:4px}.temp-current{font-size:1.1rem;font-weight:600;color:#2e7d32}.temp-current-label{font-size:.7rem;color:#666;text-transform:uppercase}.weather-temps{display:flex;align-items:center;gap:.25rem;font-size:.95rem}.temp-high{color:#e65100;font-weight:600}.temp-separator{color:#999}.temp-low{color:#1565c0;font-weight:500}.weather-loading,.weather-no-location{font-size:.85rem;color:#888;font-style:italic}.weather-extra{display:flex;align-items:center;gap:1rem;font-size:.8rem;color:#666}.weather-humidity,.weather-precipitation,.weather-precip-chance{display:flex;align-items:center;gap:.25rem}.weather-warnings{display:flex;gap:.5rem}.warning{padding:.15rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500}.warning-caution{background:#fff3cd;color:#856404}.warning-warning{background:#cce5ff;color:#004085}.warning-danger{background:#f8d7da;color:#721c24}.dashboard-main{max-width:1200px;margin:0 auto;padding:2rem}.tab-content{width:100%;min-height:400px}.dashboard-tabs{display:flex;gap:0;max-width:1200px;margin:0 auto;padding:0 2rem;background:#fff;border-bottom:2px solid #e0e0e0}.tab-button{padding:.75rem 1.5rem;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:1rem;font-weight:500;color:#666;transition:all .2s}.tab-button:hover{color:#333;background-color:#f5f5f5}.tab-button.active{color:#646cff;border-bottom-color:#646cff}.preferences-container{width:100%;max-width:600px;margin:0 auto}.preferences-container h2{margin-top:0;margin-bottom:1.5rem;color:#333;text-align:left}.preferences-form{width:100%}.preferences-form .form-section{margin-bottom:2rem}.preferences-form .form-section h3{margin-top:0;margin-bottom:1rem;font-size:1.1rem;color:#333;border-bottom:1px solid #eee;padding-bottom:.5rem;text-align:left}.preferences-form .form-group{margin-bottom:1.25rem}.preferences-form .form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#333;text-align:left}.preferences-form select{width:100%;padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;background-color:#fff;color:inherit}.preferences-form select:focus{outline:none;border-color:#646cff}.preferences-form input[type=text]{width:100%;padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;background-color:#fff;color:inherit;box-sizing:border-box}.preferences-form input[type=text]:focus{outline:none;border-color:#646cff}.preferences-form small{display:block;margin-top:.25rem;color:#888;font-size:.85rem;text-align:left}.preferences-form .checkbox-group{margin:.5rem 0}.preferences-form .checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:400}.preferences-form .checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#646cff}.preferences-form .checkbox-label span{font-size:.95rem}.preferences-form .checkbox-group small{margin-left:26px}.form-actions{margin-top:1.5rem;display:flex;justify-content:flex-start}.save-button{padding:.75rem 1.5rem;background-color:#646cff;color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.save-button:disabled{opacity:.6;cursor:not-allowed}.success-message{background-color:#d4edda;color:#155724;padding:.75rem;border-radius:4px;margin-bottom:1rem;font-size:.9rem;text-align:left}.preferences-loading{text-align:center;padding:2rem;color:#666}.feedback-section{display:flex;justify-content:center;padding:2rem 1rem 1rem}.feedback-button{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:#f5f5f5;color:#333;text-decoration:none;border-radius:8px;font-size:.95rem;font-weight:500;border:1px solid #ddd;transition:all .2s ease}.feedback-button:hover{background:#e8e8e8;border-color:#ccc;transform:translateY(-1px)}.app-footer{text-align:center;padding:1.5rem 1rem 2rem;color:#888;font-size:.85rem}.app-footer p{margin:0}.dashboard-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.dashboard-toolbar h2{margin:0;color:#333}.toolbar-controls{display:flex;align-items:center;gap:.75rem}.search-box{position:relative;display:flex;align-items:center}.search-input{padding:.5rem 2rem .5rem .75rem;font-size:.9rem;border:1px solid #ddd;border-radius:6px;width:280px;background-color:#fff;color:#333;transition:border-color .2s,box-shadow .2s}.search-input:focus{outline:none;border-color:#646cff;box-shadow:0 0 0 3px #646cff1a}.search-input::placeholder{color:#999}.search-clear{position:absolute;right:6px;background:#e0e0e0;border:none;width:20px;height:20px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:#666;line-height:1;padding:0}.search-clear:hover{background:#ccc;color:#333}.sort-button{padding:.5rem 1rem;background-color:#f5f5f5;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .2s;white-space:nowrap}.sort-button:hover{background-color:#e0e0e0}.add-plant-button{padding:.75rem 1.5rem;background-color:#646cff;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:background-color .2s}.add-plant-button:hover{background-color:#535bf2}.empty-state,.loading-state,.error-state{text-align:center;padding:4rem 2rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000d}.empty-state-icon{font-size:4rem;margin-bottom:1rem}.empty-state h3{color:#333;margin-bottom:.5rem}.empty-state p{color:#666;margin-bottom:1.5rem}.plants-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;max-height:60vh;overflow-y:auto;padding-right:.5rem}.plants-grid::-webkit-scrollbar{width:8px}.plants-grid::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.plants-grid::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.plants-grid::-webkit-scrollbar-thumb:hover{background:#a1a1a1}.plant-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0000001a;transition:transform .2s,box-shadow .2s;cursor:pointer;position:relative;border:3px solid transparent}.plant-card:hover{transform:translateY(-4px);box-shadow:0 4px 16px #00000026}.plant-card.status-healthy{border-color:#4caf50}.plant-card.status-sick{border-color:#ff9800}.plant-card.status-dead{border-color:#9e9e9e;opacity:.7}.watered-badge{position:absolute;top:8px;right:8px;background:#fffffff2;border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:18px;z-index:1;box-shadow:0 2px 4px #0003}.plant-card-image{width:100%;height:200px;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;overflow:hidden}.plant-card-image img{width:100%;height:100%;object-fit:cover}.placeholder-image{font-size:4rem}.plant-card-content{padding:1.5rem}.plant-name{margin:0 0 .5rem;font-size:1.3rem;color:#333}.plant-species{margin:0 0 1rem;color:#666;font-size:.9rem}.plant-details{display:flex;flex-direction:column;gap:.5rem}.plant-detail{display:flex;justify-content:space-between;font-size:.85rem}.detail-label{color:#999}.detail-value{color:#333;font-weight:500}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:2rem;overflow-y:auto;overscroll-behavior:contain}.modal-content{background:#fff;border-radius:12px;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 10px 40px #0000004d;position:relative}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #eee}.modal-header h2{margin:0;font-size:1.5rem}.close-button{background:none;border:none;font-size:2rem;cursor:pointer;color:#999;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;line-height:1}.close-button:hover{color:#333}.modal-form{padding:1.5rem}.modal-form .form-group{margin-bottom:1.5rem}.modal-form .form-group:last-of-type{margin-bottom:0}.modal-form small{display:block;margin-top:.25rem;color:#666;font-size:.85rem}.form-section{margin-bottom:1.5rem;padding:1rem;background-color:#f9f9f9;border-radius:8px}.form-section h3{margin:0 0 1rem;font-size:1rem;color:#333}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.stats-grid .form-group{margin-bottom:0}.browse-button{padding:.5rem 1rem;background-color:#f5f5f5;border:1px solid #ddd;border-radius:4px;cursor:pointer;width:100%;text-align:left}.browse-button:disabled{opacity:.5;cursor:not-allowed}.error-message{background-color:#fee;color:#c33;padding:.75rem;border-radius:4px;margin-bottom:1rem;font-size:.9rem}.modal-actions{display:flex;gap:1rem;padding:1.5rem;border-top:1px solid #eee;justify-content:flex-end}.cancel-button,.save-button{padding:.75rem 1.5rem;border-radius:6px;font-size:1rem;cursor:pointer;border:none;transition:all .2s}.cancel-button{background-color:#f5f5f5;color:#333;border:1px solid #ddd}.cancel-button:hover{background-color:#e0e0e0}.save-button{background-color:#646cff;color:#fff}.save-button:hover{background-color:#535bf2}.save-button:disabled,.cancel-button:disabled{opacity:.5;cursor:not-allowed}.plant-detail-modal{background:#fff;border-radius:12px;width:100%;max-width:750px;max-height:90vh;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 10px 40px #0000004d}.plant-detail-content{padding:1.5rem}.plant-detail-image{width:100%;height:250px;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;border-radius:8px;margin-bottom:2rem;overflow:hidden}.plant-detail-image img{width:100%;height:100%;object-fit:cover}.placeholder-image-large{font-size:6rem}.plant-detail-info{margin-bottom:2rem}.detail-view{background:#f9f9f9;padding:1.5rem;border-radius:8px}.detail-row{display:flex;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid #e0e0e0}.detail-row:last-child{border-bottom:none}.detail-row .detail-label{color:#666;font-weight:500}.detail-row .detail-value{color:#333}.plant-stats-section{margin:1rem 0;padding:1rem 1.25rem;background:#f0f7f0;border-radius:8px;border-left:3px solid #4caf50}.plant-stats-section .detail-row{padding:.5rem 0;flex-direction:column;align-items:flex-start;gap:.25rem}.plant-stats-section .detail-row:first-child{padding-top:0}.plant-stats-section .detail-value{line-height:1.5}.status-alive{color:#4caf50;font-weight:600}.status-dead{color:#c33;font-weight:600}.germinated-yes{color:#4caf50}.germinated-no{color:#999;font-style:italic}.heat-mat-active{color:#f97316;font-weight:500}.heat-mat-since{color:#888;font-weight:400;font-size:.9em}.plant-issues-section{margin-top:1rem;padding-top:1rem;border-top:1px dashed #ffcc80}.issues-header .issue-warning{color:#e65100;font-weight:600}.issue-row{display:flex;align-items:center;gap:.75rem}.issue-badge{padding:.25rem .5rem;border-radius:4px;font-size:.85rem;font-weight:600}.issue-pests{background:#ffebee;color:#c62828}.issue-mould{background:#fff3e0;color:#e65100}.issue-rot{background:#fce4ec;color:#ad1457}.issue-since{color:#666;font-size:.85rem}.edit-button{width:100%;padding:.75rem;margin-top:1rem;background-color:#646cff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:600;transition:background-color .2s}.edit-button:hover{background-color:#535bf2}.detail-actions{display:flex;gap:.75rem;margin-top:1rem}.detail-actions .edit-button{flex:1;margin-top:0}.detail-actions .delete-button{flex:1}.edit-form{background:#f9f9f9;padding:1.5rem;border-radius:8px}.edit-form .form-group{margin-bottom:1rem}.edit-actions{display:flex;gap:1rem;margin-top:1.5rem;justify-content:flex-end}.plant-logs-section{border-top:2px solid #e0e0e0;padding-top:1.5rem;margin-top:1.5rem}.plant-logs-section h3{margin-top:0;margin-bottom:1rem;color:#333}.logs-grid{min-height:150px;background:#f9f9f9;border-radius:8px;padding:2rem;margin-bottom:1rem;display:flex;align-items:center;justify-content:center}.empty-logs{text-align:center;color:#999}.logs-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem;max-height:400px;overflow-y:auto}.log-card{background:#f9f9f9;border-radius:8px;padding:1.25rem;border:1px solid #e0e0e0;transition:box-shadow .2s,transform .2s;cursor:pointer;display:flex;gap:1rem}.log-card:hover{box-shadow:0 2px 8px #0000001a;transform:translateY(-2px)}.log-thumbnail{position:relative;width:80px;height:80px;flex-shrink:0;border-radius:6px;overflow:hidden;background:linear-gradient(135deg,#667eea,#764ba2)}.log-thumbnail img{width:100%;height:100%;object-fit:cover}.thumbnail-badge{position:absolute;bottom:4px;right:4px;background:#000000bf;color:#fff;padding:2px 6px;border-radius:4px;font-size:.75rem;font-weight:600}.log-content{flex:1;min-width:0}.log-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.log-header h4{margin:0;color:#333;font-size:1.1rem}.log-date{color:#666;font-size:.85rem}.log-description{margin:0;color:#555;line-height:1.6;white-space:pre-wrap}.new-log-button{width:100%;padding:.75rem;background-color:#646cff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:600;transition:background-color .2s}.new-log-button:hover{background-color:#535bf2}.new-log-button:disabled{opacity:.6;cursor:not-allowed;background-color:#f5f5f5;color:#666;border:1px solid #ddd}.modal-footer{padding:1rem 1.5rem;border-top:1px solid #eee;background:#f9f9f9}.back-button{padding:.75rem 1.5rem;background:#fff;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:.95rem;color:#666;transition:all .2s}.back-button:hover{background-color:#f5f5f5;color:#333}.log-detail-modal{background:#fff;border-radius:12px;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 10px 40px #0000004d}.log-detail-content{padding:1.5rem}.detail-row-full{padding:1rem 0;border-bottom:1px solid #e0e0e0}.detail-row-full:last-child{border-bottom:none}.detail-row-full .detail-label{color:#666;font-weight:500;display:block;margin-bottom:.5rem}.detail-description{color:#333;line-height:1.6;white-space:pre-wrap;margin:0}.log-actions{display:flex;gap:1rem;margin-top:1.5rem}.delete-button{flex:1;padding:.75rem;background-color:#dc3545;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:600;transition:background-color .2s}.delete-button:hover{background-color:#c82333}.delete-button:disabled{opacity:.5;cursor:not-allowed}.image-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin-top:.75rem}.gallery-image{position:relative;width:100%;padding-bottom:100%;border-radius:8px;overflow:hidden;background:#f0f0f0;cursor:pointer;transition:transform .2s,box-shadow .2s}.gallery-image:hover{transform:scale(1.05);box-shadow:0 4px 12px #00000026}.gallery-image img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}.carousel-overlay{position:fixed;inset:0;background-color:#000000f2;display:flex;align-items:center;justify-content:center;z-index:2000;cursor:pointer}.carousel-content{max-width:90vw;max-height:90vh;display:flex;align-items:center;justify-content:center;cursor:default}.carousel-image{max-width:100%;max-height:90vh;width:auto;height:auto;object-fit:contain;border-radius:4px;box-shadow:0 10px 40px #00000080}.carousel-close{position:fixed;top:20px;right:20px;background:#ffffffe6;border:none;width:50px;height:50px;border-radius:50%;font-size:2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2001;transition:all .2s;color:#333;line-height:1;padding:0}.carousel-close:hover{background:#fff;transform:scale(1.1)}.carousel-nav{position:fixed;top:50%;transform:translateY(-50%);background:#ffffffe6;border:none;width:50px;height:50px;border-radius:50%;font-size:2.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2001;transition:all .2s;color:#333;line-height:1;padding:0}.carousel-nav:hover{background:#fff;transform:translateY(-50%) scale(1.1)}.carousel-nav-left{left:20px}.carousel-nav-right{right:20px}.carousel-counter{position:fixed;bottom:30px;left:50%;transform:translate(-50%);background:#000000b3;color:#fff;padding:.5rem 1rem;border-radius:20px;font-size:.9rem;font-weight:500;z-index:2001}.upload-progress{position:absolute;bottom:0;left:0;right:0;padding:.75rem 1rem;background:#0000000d;border-top:1px solid rgba(0,0,0,.1);border-radius:0 0 8px 8px}.upload-progress-bar{height:4px;background:#0000001a;border-radius:2px;overflow:hidden;margin-bottom:.5rem}.upload-progress-fill{height:100%;background:linear-gradient(90deg,#4ade80,#22c55e);border-radius:2px;transition:width .2s ease-out}.upload-progress-text{font-size:.75rem;color:#666;text-align:center;display:block}@media(prefers-color-scheme:dark){.upload-progress{background:#ffffff0d;border-top-color:#ffffff1a}.upload-progress-bar{background:#ffffff1a}.upload-progress-text{color:#aaa}}.background-upload-indicator{position:fixed;bottom:1rem;right:1rem;width:300px;max-height:400px;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;z-index:10000;overflow:hidden}.upload-indicator-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:#f5f5f5;border-bottom:1px solid #e0e0e0;font-weight:600;font-size:.875rem}.dismiss-all-btn{background:none;border:none;color:#666;cursor:pointer;font-size:.75rem;padding:.25rem .5rem}.dismiss-all-btn:hover{color:#333;text-decoration:underline}.upload-indicator-list{max-height:320px;overflow-y:auto}.upload-item{padding:.75rem 1rem;border-bottom:1px solid #f0f0f0;position:relative}.upload-item:last-child{border-bottom:none}.upload-item-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.upload-item-name{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.upload-item-status{font-size:.75rem;color:#666}.upload-complete .upload-item-status{color:#22c55e}.upload-error .upload-item-status{color:#ef4444}.upload-item-progress{height:3px;background:#e0e0e0;border-radius:2px;overflow:hidden}.upload-item-progress-fill{height:100%;background:linear-gradient(90deg,#4ade80,#22c55e);border-radius:2px;transition:width .2s ease-out}.dismiss-btn{position:absolute;top:.5rem;right:.5rem;background:none;border:none;color:#999;cursor:pointer;font-size:1rem;line-height:1;padding:.25rem}.dismiss-btn:hover{color:#333}@media(prefers-color-scheme:dark){.background-upload-indicator{background:#2a2a2a;box-shadow:0 4px 20px #0006}.upload-indicator-header{background:#333;border-bottom-color:#444}.dismiss-all-btn{color:#aaa}.dismiss-all-btn:hover{color:#fff}.upload-item{border-bottom-color:#333}.upload-item-status{color:#aaa}.upload-item-progress{background:#444}.dismiss-btn{color:#666}.dismiss-btn:hover{color:#fff}}.image-preview{position:relative;display:inline-block;margin-top:.5rem;max-width:200px}.image-preview img{width:100%;height:auto;max-height:150px;object-fit:cover;border-radius:4px;border:1px solid #ddd}.remove-image-btn{position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:50%;background:#ef4444;color:#fff;border:none;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center}.remove-image-btn:hover{background:#dc2626}.image-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:.5rem;margin-top:.5rem;max-width:100%}.image-preview-item{position:relative;aspect-ratio:1}.image-preview-item img{width:100%;height:100%;object-fit:cover;border-radius:4px;border:1px solid #ddd}.image-preview-item .remove-image-btn{top:-6px;right:-6px;width:20px;height:20px;font-size:14px}.file-error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626;padding:.5rem .75rem;border-radius:4px;margin-top:.5rem;font-size:.875rem}.file-error div{margin:.25rem 0}.compression-status{color:#3b82f6;font-size:.875rem;margin-top:.5rem;display:flex;align-items:center;gap:.5rem}.compression-status:before{content:"";width:14px;height:14px;border:2px solid #3b82f6;border-top-color:transparent;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:768px){.dashboard-toolbar{flex-direction:column;align-items:stretch;gap:1rem}.toolbar-controls{flex-wrap:wrap;gap:.5rem}.search-input{width:100%;flex:1;min-width:150px}.search-box{flex:1}.sort-button,.add-plant-button{flex:1;text-align:center}}@media(prefers-color-scheme:dark){.search-input{background-color:#2a2a2a;border-color:#444;color:#fff}.search-input:focus{border-color:#646cff;box-shadow:0 0 0 3px #646cff33}.search-input::placeholder{color:#666}.search-clear{background:#444;color:#aaa}.search-clear:hover{background:#555;color:#fff}.sort-button{background-color:#2a2a2a;border-color:#444;color:#ddd}.sort-button:hover{background-color:#333}.image-preview img,.image-preview-item img{border-color:#444}.file-error{background:#450a0a;border-color:#7f1d1d;color:#fca5a5}.compression-status{color:#60a5fa}.compression-status:before{border-color:#60a5fa;border-top-color:transparent}}.logs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.logs-header h3{margin:0}.logs-header-actions{display:flex;gap:.5rem;align-items:center}.log-sort-button{padding:.35rem .75rem;border:1px solid #ddd;border-radius:4px;background:#f5f5f5;cursor:pointer;font-size:.8rem;color:#666;transition:all .2s}.log-sort-button:hover{background:#e8e8e8;border-color:#ccc}@media(prefers-color-scheme:dark){.log-sort-button{background:#2a2a2a;border-color:#444;color:#aaa}.log-sort-button:hover{background:#333;border-color:#555}}.log-preset-buttons{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.preset-btn{padding:.5rem .75rem;border:1px solid #e0e0e0;border-radius:6px;background:#f9f9f9;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s;display:flex;align-items:center;gap:.25rem}.preset-btn:hover{background:#f0f0f0;border-color:#ccc}.preset-watered{color:#0284c7}.preset-watered:hover{background:#e0f2fe;border-color:#0284c7}.preset-growth{color:#16a34a}.preset-growth:hover{background:#dcfce7;border-color:#16a34a}.preset-pests{color:#ea580c}.preset-pests:hover{background:#fff7ed;border-color:#ea580c}.preset-maintenance{color:#7c3aed}.preset-maintenance:hover{background:#f5f3ff;border-color:#7c3aed}.preset-died{color:#dc2626}.preset-died:hover{background:#fef2f2;border-color:#dc2626}.preset-custom{color:#646cff}.preset-custom:hover{background:#eef2ff;border-color:#646cff}.preset-modal{max-width:450px}.preset-options{display:flex;flex-wrap:wrap;gap:.5rem}.preset-option-btn{padding:.5rem 1rem;border:1px solid #ddd;border-radius:20px;background:#fff;cursor:pointer;font-size:.875rem;transition:all .2s}.preset-option-btn:hover{border-color:#646cff;background:#f8f9ff}.preset-option-btn.selected{background:#646cff;color:#fff;border-color:#646cff}.preset-tags{display:flex;flex-wrap:wrap;gap:.5rem}.preset-tag-btn{padding:.25rem .75rem;border:1px solid #ddd;border-radius:12px;background:#fff;cursor:pointer;font-size:.8rem;transition:all .2s}.preset-tag-btn:hover{border-color:#ea580c;background:#fff7ed}.preset-tag-btn.selected{background:#ea580c;color:#fff;border-color:#ea580c}.confirmation-box{padding:1rem;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-bottom:1rem}.checkbox-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;font-weight:500;color:#dc2626}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.germinated-count{color:#16a34a;font-weight:500}.dead-count{color:#dc2626;font-weight:500}@media(max-width:768px){.log-preset-buttons{gap:.375rem}.preset-btn{padding:.4rem .6rem;font-size:.8rem;flex:1;justify-content:center;min-width:calc(33% - .375rem)}}@media(prefers-color-scheme:dark){.preset-btn{background:#2a2a2a;border-color:#444}.preset-btn:hover{background:#333;border-color:#555}.preset-watered:hover{background:#0c4a6e;border-color:#0284c7}.preset-growth:hover{background:#14532d;border-color:#16a34a}.preset-pests:hover{background:#7c2d12;border-color:#ea580c}.preset-maintenance:hover{background:#4c1d95;border-color:#7c3aed}.preset-died:hover{background:#450a0a;border-color:#dc2626}.preset-custom:hover{background:#312e81;border-color:#646cff}.preset-option-btn{background:#2a2a2a;border-color:#444;color:#ddd}.preset-option-btn:hover{background:#333;border-color:#646cff}.preset-option-btn.selected{background:#646cff;color:#fff}.preset-tag-btn{background:#2a2a2a;border-color:#444;color:#ddd}.preset-tag-btn:hover{background:#333;border-color:#ea580c}.preset-tag-btn.selected{background:#ea580c;color:#fff}.confirmation-box{background:#450a0a;border-color:#7f1d1d}.checkbox-label{color:#fca5a5}.feedback-button{background:#2a2a2a;color:#ddd;border-color:#444}.feedback-button:hover{background:#333;border-color:#555}.app-footer{color:#888}}html[data-theme=light]{color-scheme:light}html[data-theme=light] body{background-color:#fff;color:#213547}html[data-theme=light] .dashboard{background-color:#f5f5f5}html[data-theme=light] .dashboard-header,html[data-theme=light] .plant-card,html[data-theme=light] .modal-content,html[data-theme=light] .plant-detail-modal{background:#fff}html[data-theme=dark]{color-scheme:dark}html[data-theme=dark] body{background-color:#1a1a1a;color:#e0e0e0}html[data-theme=dark] .dashboard{background-color:#1a1a1a}html[data-theme=dark] .dashboard-header{background:linear-gradient(135deg,#2d1f4e,#1e3a5f)}html[data-theme=dark] .plant-card{background:#2a2a2a}html[data-theme=dark] .modal-content,html[data-theme=dark] .plant-detail-modal{background:#2a2a2a!important}html[data-theme=dark] .preferences-form .form-section{background-color:#2a2a2a}html[data-theme=dark] .preferences-form select,html[data-theme=dark] .preferences-form input[type=text]{background-color:#333;border-color:#555;color:#f0f0f0}html[data-theme=dark] .tab-button{color:#a0a0a0}html[data-theme=dark] .tab-button.active{color:#818cf8;border-bottom-color:#818cf8}html[data-theme=dark] .dashboard-tabs{background:#2a2a2a;border-bottom-color:#3a3a3a}html[data-theme=dark] .dashboard-header h1{color:#fff}html[data-theme=dark] .user-welcome{color:#e0e0e0}html[data-theme=dark] .logout-button{background:#ffffff26;color:#fff;border-color:#ffffff4d}html[data-theme=dark] .logout-button:hover{background:#ffffff40}html[data-theme=dark] .weather-day{color:#fff}html[data-theme=dark] .weather-date-str{color:#ffffffb3}html[data-theme=dark] .weather-label{color:#fff9}html[data-theme=dark] .weather-condition{color:#ffffffd9}html[data-theme=dark] .weather-extra{color:#ffffffb3}html[data-theme=dark] .weather-loading,html[data-theme=dark] .weather-no-location{color:#ffffff80}html[data-theme=dark] .weather-info{border-top-color:#ffffff1a}html[data-theme=dark] .dashboard-toolbar h2{color:#e0e0e0}html[data-theme=dark] .preferences-container h2{color:#f0f0f0}html[data-theme=dark] .preferences-form .form-section h3{color:#f0f0f0;border-bottom-color:#444}html[data-theme=dark] .preferences-form .form-group label{color:#e0e0e0}html[data-theme=dark] .preferences-form small{color:#a0a0a0}html[data-theme=dark] .preferences-form .checkbox-label,html[data-theme=dark] .preferences-form .checkbox-label span{color:#e0e0e0}html[data-theme=dark] .plant-name{color:#f0f0f0}html[data-theme=dark] .plant-species{color:#a0a0a0}html[data-theme=dark] .plant-details{border-top-color:#3a3a3a}html[data-theme=dark] .detail-label{color:#888}html[data-theme=dark] .detail-value,html[data-theme=dark] .plant-detail-content,html[data-theme=dark] .plant-detail-info{color:#e0e0e0}html[data-theme=dark] .plant-detail-info h2{color:#f0f0f0}html[data-theme=dark] .plant-detail-info p{color:#a0a0a0}html[data-theme=dark] .detail-view{background:#1f1f1f}html[data-theme=dark] .detail-view h3{color:#f0f0f0}html[data-theme=dark] .detail-view .detail-row{border-bottom-color:#3a3a3a}html[data-theme=dark] .detail-view .detail-row span:first-child{color:#888}html[data-theme=dark] .detail-view .detail-row span:last-child{color:#e0e0e0}html[data-theme=dark] .close-button{color:#888}html[data-theme=dark] .close-button:hover{color:#fff;background:#3a3a3a}html[data-theme=dark] .form-section{background-color:#333}html[data-theme=dark] .form-section h3{color:#f0f0f0}html[data-theme=dark] .modal-form label{color:#e0e0e0}html[data-theme=dark] .modal-form input,html[data-theme=dark] .modal-form select,html[data-theme=dark] .modal-form textarea{background-color:#2a2a2a;border-color:#444;color:#f0f0f0}html[data-theme=dark] .modal-form small{color:#888}html[data-theme=dark] .modal-header{border-bottom-color:#3a3a3a}html[data-theme=dark] .modal-header h2{color:#f0f0f0}html[data-theme=dark] .modal-footer{border-top-color:#3a3a3a;background:#1f1f1f}html[data-theme=dark] .browse-button{background:#3a3a3a;color:#d0d0d0;border-color:#444}html[data-theme=dark] .browse-button:hover{background:#444}html[data-theme=dark] .image-preview img,html[data-theme=dark] .image-preview-item img{border-color:#444}html[data-theme=dark] .form-group label{color:#e0e0e0}html[data-theme=dark] .form-group input,html[data-theme=dark] .form-group select,html[data-theme=dark] .form-group textarea{background-color:#2a2a2a;border-color:#444;color:#f0f0f0}html[data-theme=dark] .form-group input::placeholder,html[data-theme=dark] .form-group textarea::placeholder{color:#888}html[data-theme=dark] .form-group input:focus,html[data-theme=dark] .form-group select:focus,html[data-theme=dark] .form-group textarea:focus{border-color:#818cf8}html[data-theme=dark] .form-group small{color:#888}html[data-theme=dark] .stats-grid{background:#333}html[data-theme=dark] .plant-stats-section{background:#1f2f1f;border-color:#4caf50}html[data-theme=dark] .plant-stats-section .detail-label{color:#a0c0a0}html[data-theme=dark] .plant-stats-section .detail-value{color:#f0f0f0}html[data-theme=dark] .plant-logs-section{border-top-color:#3a3a3a}html[data-theme=dark] .plant-logs-section h3{color:#e0e0e0}html[data-theme=dark] .logs-list{background:transparent}html[data-theme=dark] .log-card{background:#1a1a1a;border-color:#3a3a3a}html[data-theme=dark] .log-card:hover{box-shadow:0 2px 8px #0000004d;border-color:#444}html[data-theme=dark] .log-header h4{color:#f0f0f0}html[data-theme=dark] .log-date{color:#888}html[data-theme=dark] .log-notes{color:silver}html[data-theme=dark] .log-type{color:#a0a0a0}html[data-theme=dark] .sort-button{background-color:#2a2a2a;border-color:#444;color:#ddd}html[data-theme=dark] .sort-button:hover{background-color:#333}html[data-theme=dark] .log-sort-button{background:#2a2a2a;border-color:#444;color:#aaa}html[data-theme=dark] .log-sort-button:hover{background:#333;border-color:#555}html[data-theme=dark] .log-description{color:silver}html[data-theme=dark] .log-detail-modal{background:#2a2a2a!important;box-shadow:0 10px 40px #00000080}html[data-theme=dark] .log-detail-content{color:#e0e0e0}html[data-theme=dark] .log-detail-content h3{color:#f0f0f0}html[data-theme=dark] .log-detail-content .detail-row span:first-child{color:#888}html[data-theme=dark] .log-detail-content .detail-row span:last-child{color:#e0e0e0}html[data-theme=dark] .log-detail-content .detail-row-full{border-bottom-color:#3a3a3a}html[data-theme=dark] .log-detail-content .detail-row-full .detail-label{color:#a0a0a0}html[data-theme=dark] .log-detail-content .detail-row-full h4{color:#f0f0f0}html[data-theme=dark] .log-detail-content .detail-row-full p{color:silver}html[data-theme=dark] .empty-logs{color:#888}html[data-theme=dark] .edit-form,html[data-theme=dark] .plant-detail-modal .edit-form,html[data-theme=dark] .log-detail-modal .edit-form,html[data-theme=dark] .plant-detail-info .edit-form,html[data-theme=dark] .log-detail-content .edit-form{background:#333!important;background-color:#333!important}html[data-theme=dark] .edit-form .form-group label{color:#e0e0e0}html[data-theme=dark] .edit-form .form-group input,html[data-theme=dark] .edit-form .form-group textarea,html[data-theme=dark] .edit-form .form-group select{background:#2a2a2a!important;border-color:#444;color:#f0f0f0}html[data-theme=dark] .edit-form .form-group input::placeholder,html[data-theme=dark] .edit-form .form-group textarea::placeholder{color:#666}html[data-theme=dark] .edit-form .form-group small{color:#888}html[data-theme=dark] .edit-form .browse-button{background:#444;color:#e0e0e0;border-color:#555}html[data-theme=dark] .edit-form .browse-button:hover{background:#555}html[data-theme=dark] .detail-actions .edit-button{background:#3a3a3a;color:#d0d0d0;border:1px solid #444}html[data-theme=dark] .detail-actions .edit-button:hover{background:#444}html[data-theme=dark] .detail-actions .delete-button{background:#dc2626}html[data-theme=dark] .detail-actions .delete-button:hover{background:#b91c1c}html[data-theme=dark] .cancel-button{background:#3a3a3a;color:#d0d0d0;border-color:#444}html[data-theme=dark] .cancel-button:hover{background:#444}html[data-theme=dark] .save-button{background:#646cff;color:#fff}html[data-theme=dark] .save-button:hover{background:#535bf2}html[data-theme=dark] .preset-btn{background:#2a2a2a;border-color:#444;color:#e0e0e0}html[data-theme=dark] .preset-btn:hover{background:#333;border-color:#555}html[data-theme=dark] .preset-watered:hover{background:#3b82f633;border-color:#3b82f6}html[data-theme=dark] .preset-fertilized:hover{background:#22c55e33;border-color:#22c55e}html[data-theme=dark] .preset-pruned:hover{background:#a855f733;border-color:#a855f7}html[data-theme=dark] .preset-repotted:hover{background:#eab30833;border-color:#eab308}html[data-theme=dark] .preset-option-btn{background:#2a2a2a;border-color:#444;color:#ddd}html[data-theme=dark] .preset-option-btn:hover{background:#333;border-color:#646cff}html[data-theme=dark] .preset-option-btn.selected{background:#646cff;color:#fff}html[data-theme=dark] .preset-tag-btn{background:#2a2a2a;border-color:#444;color:#ddd}html[data-theme=dark] .preset-tag-btn:hover{background:#333;border-color:#ea580c}html[data-theme=dark] .preset-tag-btn.selected{background:#ea580c;color:#fff}html[data-theme=dark] .confirmation-box{background:#450a0a;border-color:#7f1d1d}html[data-theme=dark] .confirmation-box .checkbox-label,html[data-theme=dark] .confirmation-box .checkbox-label span{color:#fca5a5}html[data-theme=dark] .back-button{background:#3a3a3a;border-color:#555;color:#d0d0d0}html[data-theme=dark] .back-button:hover{background:#444;color:#f0f0f0}html[data-theme=dark] .feedback-button{background:#2a2a2a;color:#ddd;border-color:#444}html[data-theme=dark] .feedback-button:hover{background:#333;border-color:#555}html[data-theme=dark] .timeline-modal{background:#2a2a2a}html[data-theme=dark] .timeline-empty{color:#888}html[data-theme=dark] .timeline-scroll-container{scrollbar-color:#444 transparent}html[data-theme=dark] .timeline-scroll-container::-webkit-scrollbar-thumb{background:#444}html[data-theme=dark] .timeline-scroll-container::-webkit-scrollbar-thumb:hover{background:#555}html[data-theme=dark] .timeline-line{background:linear-gradient(90deg,#22c55e,#16a34a,#15803d)}html[data-theme=dark] .timeline-marker{background:#2a2a2a;border-color:#22c55e;box-shadow:0 2px 8px #0006}html[data-theme=dark] .timeline-marker-start{background:#14532d;border-color:#22c55e}html[data-theme=dark] .timeline-marker-end{background:#166534;border-color:#16a34a}html[data-theme=dark] .timeline-marker-log{background:#2a2a2a;border-color:#818cf8}html[data-theme=dark] .timeline-marker-log:hover{box-shadow:0 4px 16px #818cf866}html[data-theme=dark] .marker-day{color:#e0e0e0}html[data-theme=dark] .marker-month,html[data-theme=dark] .marker-label{color:#888}html[data-theme=dark] .timeline-entry-tooltip{background:#1a1a1a;box-shadow:0 4px 12px #00000080}html[data-theme=dark] .timeline-entry-tooltip:after{border-top-color:#1a1a1a}html[data-theme=dark] .timeline-start-tooltip,html[data-theme=dark] .timeline-end-tooltip{background:#1a1a1a;box-shadow:0 4px 12px #00000080}html[data-theme=dark] .timeline-start-tooltip:after,html[data-theme=dark] .timeline-end-tooltip:after{border-top-color:#1a1a1a}html[data-theme=dark] .date-day{color:#818cf8}html[data-theme=dark] .date-label{color:#888}html[data-theme=dark] .timeline-button{background:linear-gradient(135deg,#4c51bf,#6b46c1)}html[data-theme=dark] .timeline-button:hover{box-shadow:0 4px 12px #818cf866}html[data-theme=dark] .auth-page{background:linear-gradient(135deg,#2d1f4e,#1e3a5f)}html[data-theme=dark] .auth-box{background:#2a2a2a;box-shadow:0 10px 40px #00000080}html[data-theme=dark] .auth-switch{border-top-color:#3a3a3a}html[data-theme=dark] .auth-switch p{color:#a0a0a0}html[data-theme=dark] .register-container{background:#2a2a2a;border-color:#3a3a3a}html[data-theme=dark] .register-container h2{color:#f0f0f0}html[data-theme=dark] .register-form .form-group label{color:#e0e0e0}html[data-theme=dark] .register-form .form-group input{background-color:#333;border-color:#555;color:#f0f0f0}html[data-theme=dark] .register-form .form-group input::placeholder{color:#888}html[data-theme=dark] .register-form .form-group input:focus{border-color:#818cf8}html[data-theme=dark] .register-form button{background-color:#646cff;color:#fff}html[data-theme=dark] .register-form button:hover{background-color:#535bf2}html[data-theme=dark] .link-button{color:#818cf8}html[data-theme=dark] .link-button:hover{color:#a5b4fc}@media(prefers-color-scheme:dark){:root{color-scheme:dark}body{background-color:#1a1a1a;color:#e0e0e0}.dashboard{background-color:#1a1a1a;min-height:100vh}.dashboard-header{background:linear-gradient(135deg,#2d1f4e,#1e3a5f)}.dashboard-header h1{color:#fff}.weather-info{border-top-color:#ffffff1a}.weather-day{color:#fff}.weather-date-str{color:#ffffffb3}.weather-condition{color:#ffffffd9}.weather-current{background:#4caf5033}.temp-current{color:#81c784}.temp-current-label{color:#fff9}.temp-high{color:#ffab40}.temp-low{color:#64b5f6}.weather-loading,.weather-no-location{color:#ffffff80}.weather-label{color:#fff9}.weather-extra{color:#ffffffb3}.warning-caution{background:#ffc10733;color:#ffc107}.warning-warning{background:#2196f333;color:#64b5f6}.warning-danger{background:#f4433633;color:#ef5350}.dashboard-main{background-color:#1a1a1a}.dashboard-tabs{background:#2a2a2a;border-bottom-color:#3a3a3a}.tab-button{color:#a0a0a0}.tab-button:hover{color:#e0e0e0;background-color:#333}.tab-button.active{color:#818cf8;border-bottom-color:#818cf8}.preferences-container h2{color:#f0f0f0}.preferences-form .form-section{background-color:#2a2a2a;border-radius:8px;padding:1rem}.preferences-form .form-section h3{color:#f0f0f0;border-bottom-color:#444}.preferences-form .form-group label{color:#e0e0e0}.preferences-form select{background-color:#333;border-color:#555;color:#f0f0f0}.preferences-form select:focus{border-color:#818cf8}.preferences-form input[type=text]{background-color:#333;border-color:#555;color:#f0f0f0}.preferences-form input[type=text]:focus{border-color:#818cf8}.preferences-form small{color:#a0a0a0}.preferences-form .checkbox-label,.preferences-form .checkbox-label span{color:#e0e0e0}.success-message{background-color:#14532d;color:#86efac}.preferences-loading{color:#a0a0a0}.user-welcome{color:#e0e0e0}.logout-button{background:#ffffff26;color:#fff;border-color:#ffffff4d}.logout-button:hover{background:#ffffff40}.dashboard-toolbar h2{color:#e0e0e0}.plants-grid::-webkit-scrollbar-track{background:#2a2a2a}.plants-grid::-webkit-scrollbar-thumb{background:#4a4a4a}.plants-grid::-webkit-scrollbar-thumb:hover{background:#5a5a5a}.plant-card{background:#2a2a2a;box-shadow:0 2px 8px #0000004d}.plant-card:hover{box-shadow:0 4px 16px #0006}.plant-card.status-healthy{border-color:#22c55e}.plant-card.status-sick{border-color:#f59e0b}.plant-card.status-dead{border-color:#6b7280}.plant-name{color:#f0f0f0}.plant-species{color:#a0a0a0}.plant-details{border-top-color:#3a3a3a}.detail-label{color:#888}.detail-value{color:#d0d0d0}.placeholder-image{background:linear-gradient(135deg,#3d4a6b,#4a3d6b)}.watered-badge{background:#2a2a2af2;box-shadow:0 2px 4px #0006}.empty-state,.loading-state{color:#a0a0a0}.empty-state-icon{opacity:.7}.error-state{background:#450a0a;color:#fca5a5}.modal-overlay{background:#000000bf}.modal-content,.plant-detail-modal{background:#2a2a2a;box-shadow:0 20px 60px #00000080}.form-section{background-color:#333}.form-section h3{color:#f0f0f0}.edit-form{background:#333!important;background-color:#333!important}.modal-header{border-bottom-color:#3a3a3a}.modal-header h2{color:#f0f0f0}.close-button{color:#888}.close-button:hover{color:#fff;background:#3a3a3a}.modal-footer{border-top-color:#3a3a3a;background:#1f1f1f}.form-group label{color:#d0d0d0}.form-group input[type=text],.form-group input[type=number],.form-group input[type=date],.form-group input[type=email],.form-group input[type=password],.form-group textarea,.form-group select{background:#1a1a1a;border-color:#444;color:#e0e0e0}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:#646cff;box-shadow:0 0 0 3px #646cff33}.form-group input::placeholder,.form-group textarea::placeholder{color:#666}.form-group small{color:#888}.save-button{background:#646cff;color:#fff}.save-button:hover{background:#535bf2}.cancel-button{background:#3a3a3a;color:#d0d0d0;border-color:#444}.cancel-button:hover{background:#444}.edit-button{background:#3a3a3a;color:#d0d0d0;border-color:#444}.edit-button:hover{background:#444}.delete-button{background:#dc2626}.delete-button:hover{background:#b91c1c}.back-button{background:#3a3a3a;color:#d0d0d0}.back-button:hover{background:#444}.browse-button{background:#3a3a3a;color:#d0d0d0;border-color:#444}.browse-button:hover{background:#444}.add-plant-button{background:#646cff}.add-plant-button:hover{background:#535bf2}.plant-detail-content,.plant-detail-info{color:#e0e0e0}.detail-view{background:#1f1f1f}.detail-view .detail-label{color:#a0a0a0}.detail-view .detail-value{color:#f0f0f0}.detail-view .detail-row{border-bottom-color:#3a3a3a}.plant-detail-image .placeholder-image-large{background:linear-gradient(135deg,#3d4a6b,#4a3d6b)}.plant-stats-section{background:#1f2f1f;border-color:#4caf50}.plant-stats-section .detail-label{color:#a0c0a0}.plant-stats-section .detail-value{color:#f0f0f0}.germinated-yes{color:#4ade80}.heat-mat-active{color:#fb923c}.heat-mat-since{color:#a0a0a0}.status-dead{color:#f87171}.plant-issues-section{background:#1a1a1a}.issue-warning{color:#fbbf24}.issue-badge{color:#fff}.issue-since{color:#888}.plant-logs-section{border-top-color:#3a3a3a}.plant-logs-section h3{color:#e0e0e0}.logs-grid{background:#1a1a1a}.logs-list{background:transparent}.log-card{background:#1a1a1a;border-color:#3a3a3a}.log-card:hover{box-shadow:0 2px 8px #0000004d;border-color:#444}.log-header h4{color:#f0f0f0}.log-date{color:#888}.log-description{color:#a0a0a0}.empty-logs{color:#666}.log-detail-modal{background:#2a2a2a!important}.log-detail-content{color:#e0e0e0}.auth-page{background:linear-gradient(135deg,#2d1f4e,#1e3a5f)}.auth-box{background:#2a2a2a;box-shadow:0 10px 40px #00000080}.auth-switch{border-top-color:#3a3a3a}.auth-switch p{color:#a0a0a0}.link-button{color:#818cf8}.link-button:hover{color:#a5b4fc}.register-container{background:#2a2a2a;border-color:#3a3a3a}.error-message{background:#450a0a;border-color:#7f1d1d;color:#fca5a5}.success-message{background:#14532d;border-color:#166534;color:#86efac}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#1a1a1a}::-webkit-scrollbar-thumb{background:#444;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}.image-gallery{background:#1a1a1a}.gallery-nav{background:#0009;color:#fff}.gallery-nav:hover{background:#000c}.thumbnail-badge{background:#000000b3;color:#fff}}.timeline-modal{background:#fff;border-radius:12px;width:100%;max-width:900px;max-height:90vh;overflow:visible;box-shadow:0 10px 40px #0000004d;display:flex;flex-direction:column}.timeline-content{flex:1;overflow:visible;padding:1.5rem;min-height:320px}.timeline-empty{display:flex;align-items:center;justify-content:center;min-height:200px;color:#666;font-style:italic}.timeline-scroll-container{overflow-x:auto;overflow-y:visible;padding:9rem 1rem 1rem;scrollbar-width:thin;scrollbar-color:#ccc transparent}.timeline-scroll-container::-webkit-scrollbar{height:8px}.timeline-scroll-container::-webkit-scrollbar-track{background:transparent}.timeline-scroll-container::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.timeline-scroll-container::-webkit-scrollbar-thumb:hover{background:#aaa}.timeline-track{display:flex;align-items:flex-start;gap:0;min-width:max-content;padding:0 2rem;position:relative}.timeline-line{position:absolute;top:28px;left:0;right:0;height:4px;background:linear-gradient(90deg,#4ade80,#22c55e,#16a34a);border-radius:2px;z-index:0}.timeline-start,.timeline-end{display:flex;flex-direction:column;align-items:center;z-index:1;min-width:80px}.timeline-marker{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff;border:4px solid #4ade80;box-shadow:0 2px 8px #00000026;z-index:2;transition:transform .2s,box-shadow .2s}.timeline-marker-start{border-color:#22c55e;background:#dcfce7}.timeline-marker-end{border-color:#16a34a;background:#bbf7d0}.timeline-marker-log{width:48px;height:48px;cursor:pointer;border-color:#646cff;background:#fff;overflow:hidden}.timeline-marker-log:hover{transform:scale(1.15);box-shadow:0 4px 16px #646cff66}.timeline-marker-log.has-image{padding:0}.timeline-marker-log.has-image img{width:100%;height:100%;object-fit:cover}.marker-icon{font-size:1.5rem}.timeline-marker-info{display:flex;flex-direction:column;align-items:center;margin-top:.75rem;text-align:center}.marker-day{font-size:.9rem;font-weight:600;color:#333}.marker-date{font-size:.8rem;color:#666}.marker-label{font-size:.75rem;color:#888;margin-top:.25rem}.timeline-date-group{display:flex;flex-direction:column;align-items:center;margin:0 1.5rem;z-index:1;position:relative}.timeline-entry{position:relative;margin-bottom:.5rem}.timeline-entry-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem .75rem;border-radius:6px;font-size:.8rem;white-space:nowrap;min-width:150px;max-width:280px;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s;z-index:100;box-shadow:0 4px 12px #0003}.timeline-entry-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#333}.timeline-entry-tooltip strong{display:block;margin-bottom:.25rem}.timeline-entry-tooltip p{margin:0;font-size:.75rem;opacity:.9;line-height:1.4}.timeline-entry:hover .timeline-entry-tooltip{opacity:1;visibility:visible}.timeline-start,.timeline-end{position:relative}.timeline-start-tooltip,.timeline-end-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem .75rem;border-radius:6px;font-size:.8rem;white-space:nowrap;min-width:160px;max-width:280px;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s;z-index:100;box-shadow:0 4px 12px #0003}.timeline-start-tooltip:after,.timeline-end-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#333}.timeline-start-tooltip strong,.timeline-end-tooltip strong{display:block;margin-bottom:.25rem}.timeline-start-tooltip ul,.timeline-end-tooltip ul{margin:.25rem 0 0;padding-left:1rem;list-style:disc}.timeline-tooltip-scroll-wrapper{max-height:4.5em;overflow:hidden}.timeline-tooltip-scroll-wrapper .tooltip-scroll-content{display:flex;flex-direction:column}.timeline-tooltip-scroll-wrapper.has-overflow .tooltip-scroll-content{animation:tooltip-scroll 6s ease-in-out infinite}@keyframes tooltip-scroll{0%,15%{transform:translateY(0)}35%,65%{transform:translateY(var(--scroll-amount, -50%))}85%,to{transform:translateY(0)}}.timeline-start-tooltip li,.timeline-end-tooltip li{margin:.15rem 0;cursor:pointer;transition:color .2s}.timeline-start-tooltip li:hover,.timeline-end-tooltip li:hover{color:#a5b4fc;text-decoration:underline}.timeline-start:hover .timeline-start-tooltip,.timeline-end:hover .timeline-end-tooltip{opacity:1;visibility:visible}.timeline-marker.has-logs{cursor:pointer}.timeline-marker.has-logs:hover{transform:scale(1.1)}.timeline-date-info{display:flex;flex-direction:column;align-items:center;margin-top:.5rem}.date-day{font-size:.85rem;font-weight:600;color:#646cff}.date-label{font-size:.75rem;color:#666}.timeline-button{padding:.5rem 1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .2s;display:flex;align-items:center;gap:.5rem}.timeline-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.timeline-button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}@media(max-width:768px){.timeline-modal{max-width:100%;margin:1rem;max-height:calc(100vh - 2rem)}.timeline-scroll-container{padding:9rem .5rem .5rem}.timeline-marker{width:44px;height:44px}.timeline-marker-log{width:40px;height:40px}.marker-icon{font-size:1.2rem}.timeline-date-group{margin:0 1rem}}@media(prefers-color-scheme:dark){.timeline-modal{background:#2a2a2a}.timeline-empty{color:#888}.timeline-scroll-container::-webkit-scrollbar-thumb{background:#444}.timeline-scroll-container::-webkit-scrollbar-thumb:hover{background:#555}.timeline-line{background:linear-gradient(90deg,#22c55e,#16a34a,#15803d)}.timeline-marker{background:#2a2a2a;border-color:#22c55e;box-shadow:0 2px 8px #0006}.timeline-marker-start{background:#14532d;border-color:#22c55e}.timeline-marker-end{background:#166534;border-color:#16a34a}.timeline-marker-log{background:#2a2a2a;border-color:#818cf8}.timeline-marker-log:hover{box-shadow:0 4px 16px #818cf866}.marker-day{color:#e0e0e0}.marker-date{color:#a0a0a0}.marker-label{color:#888}.timeline-entry-tooltip{background:#1a1a1a;box-shadow:0 4px 12px #00000080}.timeline-entry-tooltip:after{border-top-color:#1a1a1a}.timeline-start-tooltip,.timeline-end-tooltip{background:#1a1a1a;box-shadow:0 4px 12px #00000080}.timeline-start-tooltip:after,.timeline-end-tooltip:after{border-top-color:#1a1a1a}.date-day{color:#818cf8}.date-label{color:#888}.timeline-button{background:linear-gradient(135deg,#4c51bf,#6b46c1)}.timeline-button:hover{box-shadow:0 4px 12px #818cf866}}.landscape-banner{width:100%;aspect-ratio:1200 / 200;position:relative;flex-shrink:0}.landscape-banner svg{width:100%;height:100%;display:block}.clouds{--cloud-speed-multiplier: 1}.cloud{animation:cloud-drift 60s linear infinite}.cloud-1{animation-duration:calc(55s / var(--cloud-speed-multiplier));animation-delay:0s}.cloud-2{animation-duration:calc(65s / var(--cloud-speed-multiplier));animation-delay:-20s}.cloud-3{animation-duration:calc(50s / var(--cloud-speed-multiplier));animation-delay:-10s}.cloud-4{animation-duration:calc(70s / var(--cloud-speed-multiplier));animation-delay:-35s}.cloud-5{animation-duration:calc(45s / var(--cloud-speed-multiplier));animation-delay:-5s}.cloud-6{animation-duration:calc(60s / var(--cloud-speed-multiplier));animation-delay:-25s}.cloud-7{animation-duration:calc(52s / var(--cloud-speed-multiplier));animation-delay:-15s}.cloud-8{animation-duration:calc(68s / var(--cloud-speed-multiplier));animation-delay:-40s}.cloud-9{animation-duration:calc(48s / var(--cloud-speed-multiplier));animation-delay:-8s}.cloud-10{animation-duration:calc(58s / var(--cloud-speed-multiplier));animation-delay:-30s}.cloud-11{animation-duration:calc(62s / var(--cloud-speed-multiplier));animation-delay:-18s}.cloud-12{animation-duration:calc(54s / var(--cloud-speed-multiplier));animation-delay:-12s}.cloud-13{animation-duration:calc(66s / var(--cloud-speed-multiplier));animation-delay:-28s}.cloud-14{animation-duration:calc(46s / var(--cloud-speed-multiplier));animation-delay:-3s}.cloud-15{animation-duration:calc(72s / var(--cloud-speed-multiplier));animation-delay:-45s}@keyframes cloud-drift{0%{transform:translate(var(--start-x, 0px))}to{transform:translate(calc(var(--start-x, 0px) + 1400px))}}.sun-glow{animation:sun-pulse 4s ease-in-out infinite}@keyframes sun-pulse{0%,to{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.moon-glow{animation:moon-pulse 6s ease-in-out infinite}@keyframes moon-pulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}.stars circle{animation:twinkle 3s ease-in-out infinite}.stars circle:nth-child(odd){animation-delay:-1.5s}@keyframes twinkle{0%,to{opacity:.5}50%{opacity:1}}.landscape-debug{position:absolute;top:8px;right:8px;z-index:10}.debug-toggle{background:#fffc;border:none;border-radius:50%;width:32px;height:32px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0000001a;transition:transform .2s,background .2s}.debug-toggle:hover{background:#fff;transform:scale(1.1)}.debug-panel{position:absolute;top:40px;right:0;background:#fffffff2;border-radius:8px;padding:12px;box-shadow:0 4px 12px #00000026;display:flex;flex-direction:column;gap:8px;min-width:200px}.time-slider{width:100%;cursor:pointer}.time-display{font-family:monospace;font-size:14px;text-align:center;color:#333}.quick-times{display:flex;gap:4px;flex-wrap:wrap}.quick-times button{flex:1;padding:4px 8px;font-size:11px;background:#f0f0f0;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:background .2s}.quick-times button:hover{background:#e0e0e0}.debug-section{display:flex;flex-direction:column;gap:6px;padding-bottom:10px;border-bottom:1px solid #e0e0e0}.debug-section:last-of-type{border-bottom:none}.debug-section label{font-size:11px;font-weight:600;color:#666;text-transform:uppercase}.weather-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.weather-buttons button{padding:6px 4px;font-size:10px;background:#f0f0f0;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:all .2s}.weather-buttons button:hover{background:#e0e0e0}.weather-buttons button.active{background:#646cff;color:#fff;border-color:#646cff}.reset-weather{width:100%;padding:4px 8px;font-size:10px;background:#fff3e0;border:1px solid #ffcc80;border-radius:4px;cursor:pointer;color:#e65100}.reset-weather:hover{background:#ffe0b2}.cloud-sliders{display:flex;flex-direction:column;gap:6px}.slider-row{display:flex;align-items:center;gap:8px;font-size:10px}.slider-row span:first-child{width:60px;color:#666}.slider-row input[type=range]{flex:1;height:4px;-webkit-appearance:none;appearance:none;background:#ddd;border-radius:2px;cursor:pointer}.slider-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;background:#646cff;border-radius:50%;cursor:pointer}.slider-row input[type=range]::-moz-range-thumb{width:12px;height:12px;background:#646cff;border-radius:50%;cursor:pointer;border:none}.slider-value{width:35px;text-align:right;font-family:monospace;color:#333}.randomize-clouds{width:100%;padding:6px 8px;font-size:10px;background:#e3f2fd;border:1px solid #90caf9;border-radius:4px;cursor:pointer;color:#1565c0;margin-top:4px}.randomize-clouds:hover{background:#bbdefb}.debug-info{font-size:11px;color:#888;text-align:center;padding-top:6px}.raindrop{animation:rain-fall .6s linear infinite}@keyframes rain-fall{0%{transform:translateY(-20px);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(220px);opacity:0}}.snowflake{animation:snow-fall 5s linear infinite}@keyframes snow-fall{0%{transform:translateY(-20px) translate(0);opacity:0}10%{opacity:1}90%{opacity:.8}to{transform:translateY(220px) translate(var(--drift, 0));opacity:0}}.lightning{animation:lightning-flash .15s ease-out}@keyframes lightning-flash{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.notification-settings{margin:1rem 0;padding:1rem;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.notification-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.notification-icon{font-size:1.2rem}.notification-title{font-weight:600;color:#333}.notification-toggle{display:flex;align-items:center;gap:.75rem}.toggle-switch{position:relative;display:inline-block;width:48px;height:26px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.3s;border-radius:26px}.toggle-slider:before{position:absolute;content:"";height:20px;width:20px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}.toggle-switch input:checked+.toggle-slider{background-color:#2d6a4f}.toggle-switch input:checked+.toggle-slider:before{transform:translate(22px)}.toggle-switch input:disabled+.toggle-slider{opacity:.5;cursor:not-allowed}.toggle-label{font-size:.9rem;color:#666}.notification-options{display:flex;gap:1rem;margin-top:.75rem;flex-wrap:wrap}.notification-option{display:flex;flex-direction:column;gap:.25rem}.notification-option label{font-size:.8rem;color:#666}.notification-option input[type=time],.notification-option select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;background:#fff}.notification-option input[type=time]:focus,.notification-option select:focus{outline:none;border-color:#2d6a4f}.notification-error{margin-top:.5rem;padding:.5rem;background:#fee;color:#c00;border-radius:4px;font-size:.85rem}.notification-warning{margin-top:.5rem;padding:.5rem;background:#fff3cd;color:#856404;border-radius:4px;font-size:.85rem}.notification-settings-loading{color:#666;font-size:.9rem}html[data-theme=dark] .notification-settings{background:#2a2a2a;border-color:#3a3a3a}html[data-theme=dark] .notification-title{color:#f0f0f0}html[data-theme=dark] .toggle-label,html[data-theme=dark] .notification-option label{color:#aaa}html[data-theme=dark] .notification-option input[type=time],html[data-theme=dark] .notification-option select{background:#1a1a1a;border-color:#444;color:#e0e0e0}html[data-theme=dark] .notification-error{background:#4a1a1a;color:#ff8080}html[data-theme=dark] .notification-warning{background:#4a3a1a;color:#ffd080}html[data-theme=dark] .notification-settings-loading{color:#888}
