:root{--bg: #efe9dc;--card: #e2ddd0;--card-hover: #d5d0c3;--ink: #1f2b24;--ink-2: #6b7a72;--ink-3: #8a968e;--line: #d3ccbc;--accent-primary: #3b5344;--accent-highlight: #c25e38;--green: #3b5344;--green-deep: #18221c;--green-bg: #dde5da;--orange: #c25e38;--orange-deep: #a34a28;--orange-bg: #f4e2d6;--amber: #a8790f;--amber-bg: #f2ead2;--blue: #4a6fa5;--blue-bg: #e7edf5;--red: #b5432e;--red-bg: #f3e4de;--gray-bg: #e6e0d2;--radius: 16px;--shadow: 0 1px 2px rgba(31, 43, 36, .06), 0 3px 10px rgba(31, 43, 36, .07);--shadow-lift: 0 6px 20px rgba(31, 43, 36, .14);--maxw: 480px;--duration-fast: .18s;--easing-standard: cubic-bezier(.16, 1, .3, 1);--font-serif: "Noto Serif SC", "Source Han Serif SC", "Songti SC", "SimSun", serif}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:radial-gradient(900px 420px at 50% -140px,rgba(59,83,68,.16),transparent 68%),linear-gradient(180deg,#efe9dc,#e9e2d2);background-attachment:fixed;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,sans-serif;font-size:15px;line-height:1.65}#root{min-height:100vh}a{color:var(--green-deep);text-decoration:none}.app-shell{max-width:var(--maxw);margin:0 auto;min-height:100vh;padding-bottom:calc(80px + env(safe-area-inset-bottom,0px))}.app-header{position:sticky;top:0;z-index:20;background:#faf7f2c7;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border-bottom:1px solid rgba(236,230,219,.7);padding:10px 16px;display:flex;align-items:center;gap:10px}.logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px;color:var(--ink);letter-spacing:.5px}.logo svg{display:block}.logo-slogan{font-size:12px;color:var(--ink-3);margin-left:auto;white-space:nowrap}.page{padding:14px 14px 24px}.filter-pill{padding:8px 14px;font-size:13.5px}.btn{min-height:40px}input,select,textarea{font-size:15px}input[type=number],input[type=text],input[type=date],input:not([type]){min-height:40px}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:30;background:#ffffffd1;backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);border-top:1px solid rgba(236,230,219,.7);display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom,0px)}.tabbar-inner{display:flex;width:100%;max-width:var(--maxw)}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;color:var(--ink-3);font-size:11px;transition:color .15s,transform .1s}.tab svg{width:22px;height:22px}.tab-icon{display:flex;align-items:center;justify-content:center;transition:transform .15s}.tab.active{color:var(--green-deep);font-weight:700}.tab.active .tab-icon{transform:scale(1.12)}.tab:active{transform:scale(.94)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:8px 18px;font-size:14px;cursor:pointer;transition:background .15s,box-shadow .15s,transform .08s}.btn:active{transform:scale(.96)}.btn-primary{background:linear-gradient(135deg,#4a8a58,#3f7d4e);border-color:transparent;color:#fff;font-weight:700;box-shadow:0 3px 10px #3f7d4e47}.btn-primary:active{transform:scale(.96);box-shadow:0 2px 6px #3f7d4e3d}.btn-ghost{background:transparent}.chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;white-space:nowrap}.chip-green{background:var(--green-bg);color:var(--green-deep)}.chip-orange{background:var(--orange-bg);color:var(--orange-deep)}.chip-amber{background:var(--amber-bg);color:var(--amber)}.chip-blue{background:var(--blue-bg);color:var(--blue)}.chip-gray{background:var(--gray-bg);color:var(--ink-2)}.chip-red{background:var(--red-bg);color:var(--red)}.tag{display:inline-block;border:1px solid var(--line);border-radius:6px;padding:1px 8px;font-size:12px;color:var(--ink-2);background:var(--bg);margin-right:6px}.section{margin-bottom:20px}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px;padding:0 2px}.section-title{font-size:17px;font-weight:700;display:flex;align-items:center;gap:6px}.section-title:before{content:"";width:4px;height:16px;border-radius:2px;background:var(--green);display:inline-block}.section-more{font-size:13px;color:var(--ink-3)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.daily-hero{overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);margin-bottom:20px}.daily-hero-top{display:flex;justify-content:space-between;align-items:center;background:var(--green);color:#f4efe2;font-size:12px;letter-spacing:2px;padding:7px 12px 7px 16px}.hero-cal-btn{color:#f4efe2;background:#ffffff29;border-radius:999px;padding:2px 10px;font-weight:700;letter-spacing:1px}.hero-cal-btn:active{background:#ffffff47}.daily-hero-body{padding:18px 18px 16px}.daily-date-row{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}.daily-month{font-size:18px;font-weight:700;color:var(--ink-2)}.daily-day{font-size:56px;font-weight:800;line-height:.95;color:var(--ink);letter-spacing:-2px;font-variant-numeric:tabular-nums}.daily-term-chip{font-size:13px;font-weight:600;color:var(--green-deep);background:var(--green-bg);border:1px solid #d5e6d9;border-radius:999px;padding:3px 12px}.daily-headline{font-size:22px;font-weight:800;margin:0 0 6px;color:var(--ink);letter-spacing:.5px}.daily-sub{font-size:13px;color:var(--ink-3);margin:0}.todo-card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:4px 14px;margin-bottom:20px}.todo-item{display:flex;align-items:center;gap:14px;padding:13px 2px}.todo-divided{border-top:1px dashed var(--line)}.todo-verb-wrap{flex-shrink:0;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center}.todo-verb{font-size:20px;font-weight:800;letter-spacing:0}.todo-green .todo-verb-wrap{background:var(--green-bg)}.todo-green .todo-verb{color:var(--green-deep)}.todo-orange .todo-verb-wrap{background:#fdeedd}.todo-orange .todo-verb{color:#b05e1e}.todo-blue .todo-verb-wrap{background:#e8f0fa}.todo-blue .todo-verb{color:#2c5a99}.todo-amber .todo-verb-wrap{background:#faf0d3}.todo-amber .todo-verb{color:#9c6f12}.todo-main{min-width:0}.todo-text{font-size:15px;font-weight:700;color:var(--ink);margin-bottom:2px}.todo-note{font-size:12px;color:var(--ink-3)}.year-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin-bottom:12px}.year-cell{display:flex;flex-direction:column;align-items:center;gap:1px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:5px 2px 4px;color:var(--ink);transition:box-shadow .15s,transform .15s}.year-cell:hover{box-shadow:var(--shadow-lift);transform:translateY(-1px)}.year-now{background:var(--green);border-color:var(--green)}.year-now .year-month{color:#f4efe2;font-weight:800}.year-now .year-count{color:#d8e6d4}.year-month{font-size:12.5px;font-weight:700}.year-count{font-size:10px;color:var(--ink-3)}.year-empty{opacity:.55}.cat-grid{grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:4px}.cat-tile{display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 2px 8px;color:var(--ink);box-shadow:var(--shadow);transition:box-shadow .15s,transform .15s}.cat-tile:hover{box-shadow:var(--shadow-lift);transform:translateY(-1px)}.cat-emoji{font-size:26px;line-height:1}.cat-label{font-size:13px;font-weight:700}.cat-count{font-size:11px;color:var(--green-deep)}.more-link{display:block;text-align:center;font-size:13px;color:var(--green-deep);background:var(--green-bg);border-radius:10px;padding:8px;margin-top:10px}.cal-tabs{display:flex;gap:8px;margin-bottom:12px}.cal-tab{flex:1;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:10px;font-size:14px;font-weight:700;color:var(--ink-2);cursor:pointer}.cal-tab.active{background:linear-gradient(135deg,#4a8a58,#3f7d4e);border-color:transparent;color:#fff;box-shadow:0 3px 10px #3f7d4e47}.cal-hint{font-size:12px;color:var(--ink-3);margin:0 0 8px}.ym-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 8px;overflow:hidden}.ym-head,.ym-row{display:grid;grid-template-columns:92px repeat(12,1fr);gap:3px;align-items:center;padding:2px 0}.ym-head{padding-bottom:6px}.ym-col-head{text-align:center;font-size:10px;color:var(--ink-3);border-radius:4px;padding:1px 0}.ym-name-cell{font-size:11.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;padding-right:2px}.ym-cell{height:13px;border-radius:3.5px}.ym-clickable{cursor:pointer}.ym-clickable:hover .ym-name-cell{color:var(--green-deep)}.ym-now-col{background:#3f7d4e1f;border-radius:4px}.ym-head .ym-now-col{font-weight:800;color:var(--green-deep)}.st-peak{background:#3f7d4e}.st-in{background:#cfe3d3}.st-soft{background:#e7efe4}.st-off{background:#f1ede3}.ym-legend{display:flex;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--ink-2);margin-bottom:8px}.ym-legend .lg{display:inline-flex;align-items:center;gap:4px}.ym-legend .lg i{width:12px;height:10px;border-radius:3px;display:inline-block}.group-hint{font-size:12px;color:var(--ink-3);margin:-6px 0 10px}.sub-collapse-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;background:var(--card);border:1px dashed var(--line);border-radius:var(--radius);padding:11px 14px;font-size:13.5px;font-weight:700;color:var(--ink);cursor:pointer;margin-bottom:8px}.admin-banner{display:flex;justify-content:space-between;align-items:center;background:var(--green-deep);color:#e8e4d8;border-radius:12px;padding:10px 14px;font-size:13px;font-weight:700;margin-bottom:14px;box-shadow:0 3px 10px #18221c40}.admin-banner-go{font-size:12px;opacity:.85}.section-title,.detail-title,.home-hero-title{font-family:var(--font-serif)}.cheap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.cheap-card{display:block;background:linear-gradient(135deg,#f6f1e3,#eaf3ec);border:1.5px solid var(--accent-highlight);border-radius:14px;padding:10px 12px;color:var(--ink);transition:transform var(--duration-fast) var(--easing-standard),box-shadow var(--duration-fast) var(--easing-standard)}.cheap-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-lift)}.cheap-flag{display:inline-block;font-size:11px;font-weight:800;color:#fff;background:var(--accent-highlight);border-radius:999px;padding:1px 8px;margin-bottom:5px}.cheap-name{font-size:14px;font-weight:800;margin-bottom:3px}.cheap-intel{font-size:12px;color:var(--ink-2);margin-bottom:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cheap-price{font-size:12px;font-weight:700;color:var(--green-deep)}.audience-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.audience-card{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:12px 4px 10px;color:var(--ink);text-decoration:none;transition:border-color var(--duration-fast) var(--easing-standard),transform var(--duration-fast) var(--easing-standard),box-shadow var(--duration-fast) var(--easing-standard)}.audience-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-lift)}.audience-card.active{border-color:var(--accent-highlight);background:linear-gradient(135deg,#f6f1e3,#fdf0e4)}.aud-emoji{font-size:26px;line-height:1}.aud-label{font-size:13.5px;font-weight:800}.aud-sub{font-size:10.5px;color:var(--ink-3)}.group-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;background:none;border:none;padding:4px 2px;cursor:pointer;color:var(--ink);text-align:left}.group-toggle-meta{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-3)}.chev{display:inline-block;width:7px;height:7px;border-right:1.8px solid var(--ink-3);border-bottom:1.8px solid var(--ink-3);transform:rotate(-45deg);transition:transform .15s;margin-bottom:2px}.chev.open{transform:rotate(45deg);margin-bottom:0;margin-top:2px}.related-block{margin-bottom:10px}.related-label{font-size:12px;font-weight:700;color:var(--ink-3);margin-bottom:6px}.kb-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.kb-badge{font-size:11px;font-weight:600;color:var(--green-deep);background:var(--green-bg);border:1px solid #cfdccb;border-radius:999px;padding:2px 10px}.ask-dock{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;gap:8px;max-width:var(--maxw);margin:0 auto;padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));background:#e2ddd0e6;backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);border-top:1px solid rgba(211,204,188,.8)}.ask-dock input{flex:1;border:1px solid var(--line);border-radius:999px;padding:11px 16px;font-size:15px;background:#fff;outline:none;min-height:44px}.ask-dock input:focus{border-color:var(--green)}.ask-dock-btn{width:48px;min-height:44px;padding:0;border-radius:50%;font-size:15px}.price-needle{position:absolute;top:-7px;width:16px;height:26px;background:var(--ink);border-radius:4px;box-shadow:0 3px 8px #1f2b2459;display:flex;align-items:center;justify-content:center;transition:left var(--duration-fast) var(--easing-standard)}.price-needle-tick{width:2px;height:12px;background:var(--card);border-radius:1px}.daily-sub{border-left:2px solid var(--accent-highlight);padding-left:10px;line-height:1.6}.filter-row{position:relative}.filter-row:after{content:"";position:absolute;right:0;top:0;bottom:0;width:24px;background:linear-gradient(to right,rgba(239,233,220,0),var(--bg));pointer-events:none}.fruit-card{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px;margin-bottom:10px;color:var(--ink);transition:box-shadow .18s,transform .18s,border-color .18s}.fruit-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-lift)}.fruit-card:active{transform:scale(.985);box-shadow:var(--shadow)}.section-title{font-size:17px;font-weight:800;letter-spacing:.2px}.gift-tip-card{background:linear-gradient(135deg,#fdf7ee,#f3f8f2);border:1px solid #e3ddcc;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px;margin-bottom:10px}.gift-tip-head{display:flex;align-items:center;gap:8px}.gift-tip-emoji{font-size:20px}.gift-tip-title{font-size:15px;font-weight:800;color:var(--ink)}.gift-tip-go{margin-left:auto;font-size:12px;font-weight:700;color:var(--green-deep);background:var(--green-bg);border-radius:999px;padding:3px 10px}.gift-tip-reason{font-size:13px;color:var(--ink-2);margin-top:5px}.gift-filters-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;background:var(--card);border:1px dashed var(--line);border-radius:var(--radius);padding:11px 14px;font-size:14px;font-weight:700;color:var(--ink);cursor:pointer}.map-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 10px 8px;margin-bottom:14px}.map-svg{width:100%;height:auto;display:block}.map-path{stroke:#fff;stroke-width:6;transition:filter .15s}.map-hot{cursor:pointer}.map-hot:hover{filter:brightness(1.08)}.map-legend{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--ink-2);padding:6px 4px 2px;flex-wrap:wrap}.map-legend .lg{display:inline-flex;align-items:center;gap:4px}.map-legend .lg i{width:10px;height:10px;border-radius:3px;display:inline-block}.fruit-card-top{display:flex;align-items:center;gap:8px;margin-bottom:4px}.fruit-name{font-size:16px;font-weight:700}.fruit-alias{font-size:12px;color:var(--ink-3)}.fruit-card-reason{font-size:13px;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.fruit-card-origins{margin-top:6px;font-size:12px;color:var(--green-deep);background:var(--green-bg);border-radius:8px;padding:4px 8px;display:inline-block}.veg-scroll{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:none}.veg-scroll::-webkit-scrollbar{display:none}.veg-card{min-width:128px;max-width:168px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:var(--shadow)}.veg-name{font-weight:700;font-size:14px;line-height:1.35}.veg-meta{font-size:11px;color:var(--ink-3);margin-top:2px}.veg-cooking{font-size:12px;color:var(--ink-2);margin-top:4px}.note-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px dashed var(--line)}.note-item:last-child{border-bottom:none;padding-bottom:2px}.note-kind{flex-shrink:0;align-self:flex-start;min-width:44px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap;padding:0 6px;box-sizing:border-box}.note-title{font-weight:600;font-size:14px}.note-body{font-size:13px;color:var(--ink-2);margin-top:2px}.note-lead{font-size:13px;font-weight:600;color:var(--ink);margin-top:3px}.note-rest{font-size:12px;color:var(--ink-3);margin-top:2px}.fruit-origins-bold{margin-top:6px;font-size:13px;font-weight:700;color:var(--green-deep);letter-spacing:.2px}.fruit-varieties{margin-top:4px;font-size:12px;color:var(--ink-2)}.ai-fab{position:fixed;right:14px;bottom:calc(72px + env(safe-area-inset-bottom,0px));width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#46624f,#3b5344);color:#efe9dc;box-shadow:0 6px 18px #18221c6b;display:flex;align-items:center;justify-content:center;z-index:40;transition:transform .12s}.ai-fab:active{transform:scale(.92)}.tool-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.tool-chip{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 2px 7px;color:var(--ink);font-size:12px;font-weight:600;box-shadow:var(--shadow);transition:box-shadow .15s,transform .15s}.tool-chip:hover{box-shadow:var(--shadow-lift);transform:translateY(-1px)}.tool-chip .tc-icon{display:flex;align-items:center;color:var(--accent-primary)}.smart-card{background:linear-gradient(135deg,#eef5ee,#fdf7ec);border:1.5px solid #d8e6d4;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.smart-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.smart-title{font-size:16px;font-weight:800}.smart-upload{width:100%;display:flex;flex-direction:column;align-items:center;gap:3px;background:#fff;border:1.5px dashed #9cc3a6;border-radius:14px;padding:20px 12px;cursor:pointer}.smart-upload-emoji{font-size:30px}.smart-upload-main{font-size:15px;font-weight:800;color:var(--green-deep)}.smart-upload-sub{font-size:12px;color:var(--ink-3)}.smart-ocr{display:grid;gap:8px}.smart-ocr-bar{height:8px;border-radius:4px;background:var(--gray-bg);overflow:hidden}.smart-ocr-fill{height:100%;background:linear-gradient(90deg,#4a8a58,#7cb98a);transition:width .3s}.smart-preview{width:100%;max-height:200px;object-fit:contain;border-radius:10px;border:1px solid var(--line);background:#fff}.smart-confirm{display:grid;gap:10px}.smart-verdict{border-radius:12px;padding:12px;background:#fff;border:1px solid var(--line)}.smart-row{display:grid;gap:4px}.smart-label{font-size:12px;color:var(--ink-3)}.smart-input{border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:15px;background:#fff;width:100%;box-sizing:border-box;min-height:40px}.data-basis{font-size:11px;color:var(--ink-3);line-height:1.6;padding:10px 12px;background:var(--gray-bg);border-radius:10px}.filter-row{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x proximity;padding:2px 2px 10px;scrollbar-width:none}.filter-row>*{scroll-snap-align:start}.cal-months{gap:8px}.cal-months .filter-pill{scroll-snap-align:center;transition:transform var(--duration-fast) var(--easing-standard)}.cal-months .filter-pill.active{transform:scale(1.2);font-weight:800}.filter-row::-webkit-scrollbar{display:none}.filter-pill{flex-shrink:0;border:1px solid var(--line);background:#fff;color:var(--ink-2);border-radius:999px;padding:5px 14px;font-size:13px;cursor:pointer}.filter-pill.active{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}.search-bar{display:flex;gap:8px;margin-bottom:12px}.search-bar input{flex:1;border:1px solid var(--line);border-radius:10px;padding:9px 14px;font-size:14px;background:#fff;color:var(--ink);outline:none}.search-bar input:focus{border-color:var(--green)}.search-bar button{border-radius:10px}.detail-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}.detail-title{font-size:22px;font-weight:800;margin:0}.stage-panel{border-radius:var(--radius);padding:14px 16px;margin-bottom:14px}.stage-panel-green{background:var(--green-bg);border:1px solid #d5e6d9}.stage-panel-orange{background:var(--orange-bg);border:1px solid #f3ddc8}.stage-panel-amber{background:var(--amber-bg);border:1px solid #ecdfba}.stage-panel-blue{background:var(--blue-bg);border:1px solid #d6e2f0}.stage-panel-gray{background:var(--gray-bg);border:1px solid var(--line)}.stage-panel-label{font-size:13px;color:var(--ink-2)}.stage-panel-stage{font-size:20px;font-weight:800;margin:2px 0 4px}.stage-panel-advice{font-size:14px}.taste-bars{display:grid;gap:8px}.taste-row{display:flex;align-items:center;gap:10px;font-size:13px}.taste-label{width:40px;color:var(--ink-2);flex-shrink:0}.taste-track{flex:1;height:8px;border-radius:4px;background:var(--gray-bg);overflow:hidden}.taste-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--green),#7cb98a)}.origin-card{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;background:#fff}.origin-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.origin-name{font-weight:700;font-size:15px}.origin-variety{font-size:12px;color:var(--ink-3)}.origin-desc{font-size:13px;color:var(--ink-2);margin-top:6px}.origin-note{font-size:12px;color:var(--amber);background:var(--amber-bg);border-radius:8px;padding:6px 10px;margin-top:8px}.window-bar{display:flex;gap:3px;margin-top:10px}.window-cell{flex:1;height:20px;border-radius:4px;background:var(--gray-bg);position:relative;font-size:9px;color:var(--ink-3);display:flex;align-items:center;justify-content:center}.window-cell.taste{background:var(--green);color:#fff;font-weight:600}.window-cell.harvest{background:var(--orange);color:#fff}.window-cell.market{background:#d9d2c4;color:#7a7466}.window-cell.now{outline:2px solid var(--ink);outline-offset:1px}.window-legend{display:flex;gap:12px;font-size:11px;color:var(--ink-3);margin-top:6px}.window-legend i{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:4px;vertical-align:-1px}.kv-list{display:grid;gap:4px;font-size:13.5px}.kv-list b{color:var(--ink)}.back-link{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--ink-3);margin-bottom:8px}.calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.calc-field{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink-2)}.calc-field input,.calc-field select{border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:15px;background:#fff;color:var(--ink);outline:none;width:100%}.calc-field input:focus{border-color:var(--green)}.calc-result{margin-top:14px;background:var(--green-bg);border:1px solid #d5e6d9;border-radius:12px;padding:14px}.calc-big{font-size:26px;font-weight:800;color:var(--green-deep)}.calc-line{font-size:13px;color:var(--ink-2);margin-top:4px}.empty-state{text-align:center;padding:60px 20px;color:var(--ink-2)}.empty-title{font-size:16px;font-weight:600;margin-bottom:6px}.empty-icon{font-size:40px;margin-bottom:8px}.loading-skeleton{background:linear-gradient(90deg,#f1ede6 25%,#faf7f2,#f1ede6 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:10px;height:84px;margin-bottom:10px}@keyframes shimmer{to{background-position:-200% 0}}.error-box{text-align:center;padding:40px 20px;color:var(--ink-2)}.error-box .btn{margin-top:10px}.wip-box{text-align:center;padding:36px 20px}.wip-box h3{margin:8px 0 4px}.wip-box p{color:var(--ink-2);font-size:13px}.wip-plan{text-align:left;margin:16px auto 0;max-width:420px;font-size:13px;color:var(--ink-2)}.wip-plan li{margin-bottom:6px}@media(min-width:760px){.page{padding:20px 24px 32px}body{background:#f3efe7}.app-shell{box-shadow:0 0 40px #2b282214}}
