*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--wine: #722F37;--wine-dark: #4A1E24;--wine-light: #9B4F58;--wine-ghost: #F2E8EA;--cream: #FAF6F0;--parchment: #F0EAE0;--ink: #2C1810;--stone: #8B7D6B;--stone-light: #D4CFC7;--white: #FFFFFF;--gold: #C4A35A;--gold-light: #F5EDD8;--sg-color: #4A6FA5;--temp-color: #E67E22;--ph-color: #5B8C5A;--font-display: "Cormorant", "Georgia", serif;--font-body: "Figtree", "Segoe UI", sans-serif;--header-h: 56px;--nav-h: 56px;--safe-bottom: env(safe-area-inset-bottom, 0px);--card-radius: 14px;--card-shadow: 0 1px 3px rgba(44,24,16,.06), 0 1px 8px rgba(44,24,16,.04);--card-border: 4px;--card-bg: var(--white)}html,body,#root{height:100%;font-family:var(--font-body);font-size:15px;color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body:before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse at 15% 10%,rgba(114,47,55,.05) 0%,transparent 55%),radial-gradient(ellipse at 85% 90%,rgba(196,163,90,.05) 0%,transparent 55%),radial-gradient(ellipse at 50% 50%,rgba(114,47,55,.015) 0%,transparent 80%);pointer-events:none;z-index:0}#app{position:relative;z-index:1;min-height:100%}.header{position:sticky;top:0;height:var(--header-h);display:flex;align-items:center;padding:0 20px;background:var(--cream);border-bottom:1px solid var(--stone-light);z-index:10}.header:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--wine-dark),var(--wine),var(--wine-light))}.header-back{background:none;border:none;font-size:20px;color:var(--wine);cursor:pointer;padding:8px 14px 8px 0;line-height:1;transition:opacity .15s}.header-back:active{opacity:.6}.header h1{font-family:var(--font-display);font-weight:700;font-size:24px;color:var(--wine-dark);letter-spacing:.02em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-action{background:none;border:none;font-family:var(--font-body);font-size:13px;font-weight:600;color:var(--wine);cursor:pointer;padding:6px 12px;border-radius:8px;transition:background .15s}.header-action:active{background:var(--wine-ghost)}.content{padding-bottom:calc(var(--nav-h) + 12px + var(--safe-bottom))}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:var(--nav-h);display:flex;align-items:stretch;background:var(--white);border-top:1px solid var(--stone-light);padding-bottom:var(--safe-bottom);z-index:10}.nav-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:none;border:none;cursor:pointer;color:var(--stone);font-family:var(--font-body);font-size:11px;font-weight:500;transition:color .15s;position:relative;text-decoration:none}.nav-tab.active{color:var(--wine);font-weight:600}.nav-tab.active:before{content:"";position:absolute;top:0;left:24%;right:24%;height:2px;background:var(--wine);border-radius:0 0 2px 2px}.nav-tab svg{width:22px;height:22px}.nav-badge{position:absolute;top:4px;right:calc(50% - 18px);min-width:16px;height:16px;background:var(--wine);color:var(--white);font-size:10px;font-weight:700;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px}.status-filters{display:flex;gap:8px;padding:14px 16px 6px;overflow-x:auto}.status-filter{background:var(--white);border:1px solid var(--stone-light);border-radius:20px;padding:6px 14px;font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--stone);cursor:pointer;white-space:nowrap;transition:all .15s}.status-filter.active{background:var(--wine);border-color:var(--wine);color:var(--white)}.batch-list{padding:12px 16px 0}.batch-card,.action-card,.suggestion-card,.notification-card{background:var(--card-bg);border-radius:var(--card-radius);box-shadow:var(--card-shadow);border-left:var(--card-border) solid var(--stone-light);animation:slideUp .35s ease-out both}.batch-card{padding:16px 18px;margin-bottom:12px;cursor:pointer;transition:transform .12s,box-shadow .12s;display:flex;align-items:flex-start;gap:14px}.batch-card:active{transform:scale(.985);box-shadow:0 1px 2px #2c181014}.batch-card[data-type=red]{border-left-color:var(--wine)}.batch-card[data-type=white]{border-left-color:var(--gold)}.batch-card[data-type=rose]{border-left-color:#d4869c}.batch-card-body{flex:1;min-width:0}.batch-card-name{font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--ink);line-height:1.2;margin-bottom:6px}.batch-card-meta{font-size:13px;color:var(--stone);display:flex;flex-wrap:wrap;gap:6px;align-items:center}.batch-card-meta span:before{content:"·";margin-right:6px}.batch-card-meta span:first-child:before{content:none}.batch-card-readings{display:flex;gap:14px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(212,207,199,.4);font-size:13px}.batch-card-readings .reading-value{font-weight:600;color:var(--ink)}.batch-card-readings .reading-label{color:var(--stone);margin-left:3px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}.batch-header{padding:16px 20px 14px;background:var(--cream)}.batch-header-type{display:inline-block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:3px 10px;border-radius:6px;margin-right:6px}.batch-header-type.red{background:var(--wine-ghost);color:var(--wine)}.batch-header-type.white{background:var(--gold-light);color:#8b7530}.batch-header-type.rose{background:#f8e4ec;color:#9b4068}.batch-header-meta{font-size:13px;color:var(--stone);margin-top:6px}.info-cards{display:flex;gap:8px;padding:14px 16px;overflow-x:auto}.info-card{background:var(--white);border-radius:10px;padding:12px 16px;min-width:84px;box-shadow:0 1px 3px #2c18100d;border-bottom:2px solid var(--stone-light);transition:transform .15s,box-shadow .15s;cursor:pointer;-webkit-user-select:none;user-select:none}.info-card:active{transform:scale(.97)}.info-card-active{box-shadow:0 2px 8px #2c18101f;border-bottom-width:3px}.info-card:nth-child(1){border-bottom-color:var(--sg-color)}.info-card:nth-child(2){border-bottom-color:#5b8c5a}.info-card:nth-child(3){border-bottom-color:var(--temp-color)}.info-card:nth-child(4){border-bottom-color:var(--gold)}.info-card:nth-child(5){border-bottom-color:var(--gold)}.info-card-label{font-size:11px;color:var(--stone);text-transform:uppercase;letter-spacing:.05em;font-weight:500}.info-card-value{font-size:18px;font-weight:700;color:var(--ink);margin-top:3px}.fermentation-chart{margin:0 16px;padding:16px 20px;background:var(--white);border-radius:var(--card-radius);box-shadow:var(--card-shadow)}.fermentation-chart svg{width:100%;height:140px;display:block}.fermentation-chart-legend{display:flex;justify-content:center;gap:16px;font-size:11px;color:var(--stone);margin-top:8px;padding-top:8px;border-top:1px solid rgba(212,207,199,.3)}.fermentation-chart-legend span{cursor:pointer;transition:opacity .25s;-webkit-user-select:none;user-select:none}.fermentation-chart-legend span:before{content:"";display:inline-block;width:12px;height:3px;border-radius:2px;margin-right:4px;vertical-align:middle}.legend-sg:before{background:var(--sg-color)}.legend-temp:before{background:var(--temp-color)}.legend-ph:before{background:var(--ph-color)}.legend-muted{opacity:.35}.legend-focused{font-weight:600}.profile-list{padding:0 16px 12px}.profile-card{background:var(--card-bg);border-radius:var(--card-radius);box-shadow:var(--card-shadow);border-left:var(--card-border) solid var(--wine-light);padding:16px 18px;margin-bottom:10px;animation:slideUp .35s ease-out both}.profile-text{font-family:var(--font-display);font-size:15px;font-style:italic;color:var(--ink);line-height:1.6}.profile-date{display:block;font-size:12px;color:var(--stone-light);margin-top:8px}.section-header{font-family:var(--font-display);font-size:18px;font-weight:700;color:var(--wine-dark);padding:20px 20px 10px;display:flex;align-items:center;gap:12px}.section-header:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--stone-light),transparent)}.timeline{padding:0 16px 16px;display:flex;flex-direction:column;gap:10px}.timeline-group{display:flex;flex-direction:column;gap:10px}.timeline-group+.timeline-group{margin-top:6px}.timeline-date{font-family:var(--font-display);font-size:13px;font-weight:700;color:var(--stone);letter-spacing:.06em;text-transform:uppercase;padding:4px 2px 0}.action-card{padding:14px 16px;display:flex;flex-direction:column;gap:4px}.action-card-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.action-type-badge{flex-shrink:0;padding:2px 8px;border-radius:6px;font-size:10px;font-weight:700;color:var(--white);text-transform:uppercase;letter-spacing:.04em}.action-title{font-size:15px;font-weight:500;color:var(--ink);line-height:1.4}.action-detail{font-size:13px;color:var(--stone);line-height:1.4}.action-time{font-size:12px;color:var(--stone-light)}.action-card-editing{cursor:default;box-shadow:0 2px 8px #2c18101a}.action-edit-form{display:flex;flex-direction:column;gap:10px;padding-top:8px}.action-edit-label{font-size:11px;font-weight:600;color:var(--stone);text-transform:uppercase;letter-spacing:.04em;display:flex;flex-direction:column;gap:4px}.action-edit-input,.action-edit-textarea{font-family:var(--font-body);font-size:14px;color:var(--ink);background:var(--cream);border:1px solid var(--stone-light);border-radius:8px;padding:8px 10px;outline:none;transition:border-color .15s}.action-edit-input:focus,.action-edit-textarea:focus{border-color:var(--wine-light)}.action-edit-textarea{resize:vertical;min-height:48px}.action-edit-error{font-size:13px;color:#c0392b}.action-edit-buttons{display:flex;gap:8px;padding-top:4px}.action-edit-btn{flex:1;padding:8px 0;border:none;border-radius:8px;font-family:var(--font-body);font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s}.action-edit-btn:disabled{opacity:.5;cursor:default}.action-edit-btn:active:not(:disabled){opacity:.7}.action-edit-btn.save{background:var(--wine);color:var(--white)}.action-edit-btn.cancel{background:var(--parchment);color:var(--stone)}.suggestion-card{padding:16px 18px;margin-bottom:12px;border-left-color:var(--gold)}.suggestion-card-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.suggestion-batch{font-size:12px;font-weight:600;color:var(--wine);background:var(--wine-ghost);padding:2px 8px;border-radius:4px}.suggestion-title{font-family:var(--font-display);font-size:18px;font-weight:700;color:var(--ink);line-height:1.3}.suggestion-reasoning{font-size:13px;font-style:italic;color:var(--stone);line-height:1.5;margin:6px 0 12px}.suggestion-time{font-size:12px;color:var(--stone-light);margin-bottom:12px}.suggestion-actions{display:flex;gap:8px}.suggestion-btn{flex:1;padding:10px 0;border:none;border-radius:10px;font-family:var(--font-body);font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s,transform .1s}.suggestion-btn:disabled{opacity:.5;cursor:default}.suggestion-btn:active:not(:disabled){opacity:.7;transform:scale(.98)}.suggestion-btn.confirm{background:var(--wine);color:var(--white)}.suggestion-btn.defer{background:var(--gold-light);color:#8b7530}.suggestion-btn.dismiss{background:var(--parchment);color:var(--stone)}.notification-card{padding:14px 16px;margin-bottom:10px;display:flex;align-items:flex-start;gap:12px}.notification-body{flex:1;min-width:0}.notification-type{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}.notification-title{font-size:15px;font-weight:500;color:var(--ink);line-height:1.3}.notification-text{font-size:13px;color:var(--stone);margin-top:2px;line-height:1.4}.notification-time{font-size:12px;color:var(--stone-light);margin-top:4px}.notification-dismiss{flex-shrink:0;background:none;border:none;font-size:18px;color:var(--stone-light);cursor:pointer;padding:4px;line-height:1;transition:color .15s}.notification-dismiss:active{color:var(--stone)}.vessel-list{padding:0 16px 12px}.vessel-item{display:flex;align-items:center;gap:10px;padding:10px 0;font-size:14px;border-bottom:1px solid rgba(212,207,199,.3)}.vessel-item:last-child{border-bottom:none}.vessel-name{font-weight:600;color:var(--ink)}.vessel-type{color:var(--stone);font-size:13px}.empty-state{text-align:center;padding:80px 32px;animation:fadeIn .5s ease-out}.empty-state h2{font-family:var(--font-display);font-size:26px;font-weight:700;color:var(--wine-dark);margin-bottom:8px}.empty-state p{color:var(--stone);font-size:15px;line-height:1.5;max-width:280px;margin:0 auto}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--parchment) 25%,rgba(250,246,240,.6) 50%,var(--parchment) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:6px}.skeleton-card{pointer-events:none}.pull-to-refresh-container{overflow-y:auto;-webkit-overflow-scrolling:touch}.pull-indicator{display:flex;align-items:center;justify-content:center;overflow:hidden;transition:height .2s ease-out,opacity .2s ease-out}.pull-indicator.refreshing{transition:none}.pull-spinner{font-size:20px;color:var(--stone);transition:transform .2s}.pull-spinner.ready{color:var(--wine);transform:rotate(180deg)}.pull-indicator.refreshing .pull-spinner{animation:spin .8s linear infinite;transform:none}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.tools-intro{font-size:13px;color:var(--stone);line-height:1.5;padding:0 20px 12px}.volume-slider{padding:0 20px 16px;max-width:600px;margin:0 auto}.volume-label{display:block;font-size:14px;color:var(--ink);margin-bottom:8px}.volume-range{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:var(--stone-light);outline:none}.volume-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:24px;height:24px;border-radius:50%;background:var(--wine);border:3px solid var(--white);box-shadow:0 1px 4px #2c181033;cursor:pointer}.volume-range::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--wine);border:3px solid var(--white);box-shadow:0 1px 4px #2c181033;cursor:pointer}.volume-ticks{display:flex;justify-content:space-between;font-size:11px;color:var(--stone);margin-top:4px}.calibration-list{padding:0 16px 16px;display:flex;flex-direction:column;gap:10px}.calibration-card{background:var(--card-bg);border-radius:var(--card-radius);box-shadow:var(--card-shadow);border-left:var(--card-border) solid var(--sg-color);cursor:pointer;transition:transform .12s,box-shadow .12s;animation:slideUp .35s ease-out both}.calibration-card:active:not(.expanded){transform:scale(.985);box-shadow:0 1px 2px #2c181014}.calibration-card-header{display:flex;align-items:center;gap:12px;padding:14px 16px}.calibration-sg{font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--ink);min-width:64px}.calibration-label{flex:1;font-size:14px;color:var(--stone)}.calibration-chevron{font-size:10px;color:var(--stone-light)}.calibration-recipe{padding:0 16px 16px;border-top:1px solid rgba(212,207,199,.4);animation:fadeIn .25s ease-out}.recipe-amounts{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px 0}.recipe-amount{text-align:center}.recipe-amount-value{display:block;font-family:var(--font-display);font-size:28px;font-weight:700;color:var(--ink);line-height:1.1}.recipe-amount-label{display:block;font-size:12px;color:var(--stone);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.recipe-plus{font-size:20px;font-weight:300;color:var(--stone-light)}.recipe-steps{list-style:none;counter-reset:step;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:10px}.recipe-steps li{counter-increment:step;font-size:14px;color:var(--ink);line-height:1.5;padding-left:30px;position:relative}.recipe-steps li:before{content:counter(step);position:absolute;left:0;top:0;width:22px;height:22px;border-radius:50%;background:var(--wine-ghost);color:var(--wine);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}.recipe-note{font-size:12px;font-style:italic;color:var(--stone);line-height:1.4;padding:10px 12px;background:var(--parchment);border-radius:8px}@media(min-width:600px){.batch-list,.suggestion-list,.notification-list,.timeline,.calibration-list,.info-cards{max-width:600px;margin-left:auto;margin-right:auto}.fermentation-chart{max-width:568px;margin-left:auto;margin-right:auto}}
