:root{--bg:#f7f6f2;--card:#fff;--text:#252d29;--muted:#7a827d;--line:#e9ece6;--green:#234e3d;--orange:#ed7242;--soft:#fcefe6;--red:#bd4538;--font:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0;background:#e9ebe6;color:var(--text);font-family:var(--font);font-size:14px;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}button:disabled{opacity:.45;cursor:default}a{color:var(--green)}#app{max-width:480px;min-height:100vh;margin:auto;background:var(--bg);padding-bottom:105px}.topbar{padding:22px 22px 14px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:9px;align-items:center;font-size:23px;font-weight:800;letter-spacing:1px}.mark{background:var(--green);color:white;border-radius:13px;width:36px;height:36px;display:grid;place-items:center}.mark svg{width:24px;height:24px}.topbar small{font-size:11px;color:var(--muted);letter-spacing:0}.avatar{background:#e8ede5;color:var(--green);border:1px solid #d6dfd2;padding:10px 12px;border-radius:14px;display:flex;gap:6px;align-items:center}.content{padding:0 20px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:var(--muted)}h1{font-size:27px;line-height:1.4;letter-spacing:-.7px;margin:5px 0 8px}h2{font-size:18px;margin:0}h3{font-size:16px;margin:0 0 8px}p{line-height:1.7;margin:8px 0}.muted{color:var(--muted);font-size:12px}.row{display:flex;gap:10px;align-items:center}.between{justify-content:space-between}.stack{display:grid;gap:12px}.section{margin-top:24px}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.link{color:var(--green);background:none;padding:6px 0;font-size:12px}.hero{background:var(--green);color:white;border-radius:24px;padding:24px 22px;position:relative;overflow:hidden;margin:20px 0}.hero .eyebrow{color:#b8cdbe}.hero h2{font-size:25px;line-height:1.4;margin:10px 0}.hero p{color:#c3d4c9;font-size:12px;max-width:190px}.hero-art{position:absolute;right:-22px;top:18px;width:170px;height:170px;opacity:.95}.hero .btn{margin-top:12px;background:#fff;color:var(--green);position:relative}.hero .eyebrow,.hero h2,.hero p{position:relative}.btn{background:var(--green);color:#fff;border-radius:12px;padding:13px 18px;font-weight:600;display:inline-flex;gap:8px;align-items:center;justify-content:center}.btn.orange{background:var(--orange)}.btn.secondary{background:#eef1eb;color:var(--green)}.btn.ghost{background:transparent;color:var(--green);border:1px solid #ced8ce}.btn.danger{background:#fae8e5;color:var(--red)}.btn.sm{font-size:12px;padding:9px 12px}.full{width:100%}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:17px}.stat .value{font-size:27px;font-weight:700;margin:7px 0 3px;font-variant-numeric:tabular-nums}.stat .value small{font-size:13px;font-weight:400}.stat .muted{font-size:11px}.chip{display:inline-flex;padding:5px 9px;font-size:10px;border-radius:6px;background:#edf2eb;color:#3a6750;align-items:center;gap:4px;line-height:1.2}.chip.orange{background:var(--soft);color:#b6683d}.chip.red{background:#fae9e5;color:var(--red)}.chip.gray{background:#f0f1ed;color:#7a827d}.workflow{display:flex;justify-content:space-between;gap:4px;margin:18px 0 8px}.workflow div{font-size:10px;color:var(--muted);text-align:center;flex:1;position:relative}.workflow div:not(:last-child):after{content:'';position:absolute;top:15px;right:-12px;width:24px;height:1px;background:#d5dbd2}.workflow span{display:grid;place-items:center;width:30px;height:30px;margin:0 auto 8px;border-radius:50%;background:#e7ece4;color:var(--green);font-size:12px}.workflow .active span{background:var(--green);color:white}.notice{border:1px solid #f2dec8;background:#fff7ed;color:#97693c;font-size:11px;line-height:1.65;border-radius:12px;padding:11px 13px}.notice.green{background:#eef4ec;border-color:#dce7d7;color:#4e7055}.notice.red{background:#fff0ed;border-color:#f0ccc4;color:#a84436}.list-item{display:flex;align-items:center;gap:13px}.food{width:69px;height:69px;border-radius:16px;background:#f4eadb;flex-shrink:0;display:grid;place-items:center;overflow:hidden}.food svg{width:68px;height:68px}.list-body{flex:1;min-width:0}.list-body h3{font-size:15px;margin-bottom:5px}.list-body p{font-size:11px;color:var(--muted);margin:3px 0}.chevron{background:none;font-size:24px;color:#a2aca2}.nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,480px);padding:10px 10px calc(14px + env(safe-area-inset-bottom));background:rgba(255,255,255,.97);border-top:1px solid var(--line);display:flex;z-index:20}.nav button{background:transparent;flex:1;display:flex;align-items:center;flex-direction:column;gap:5px;font-size:10px;color:#90988f;padding:4px}.nav svg{width:22px;height:22px;stroke-width:1.7}.nav .active{color:var(--green);font-weight:700}.nav .active svg{stroke-width:2.3}.nav .active:after{content:'';width:4px;height:4px;background:var(--orange);border-radius:50%;position:absolute;bottom:6px}.tabs{display:flex;gap:7px;overflow-x:auto;padding:4px 0 12px;scrollbar-width:none}.tabs button{border-radius:20px;padding:9px 14px;background:#eceedf;color:#71816d;white-space:nowrap;font-size:12px}.tabs .active{background:var(--green);color:#fff}label{display:block;font-size:12px;font-weight:600;margin-bottom:7px}input,select,textarea{width:100%;border:1px solid #dce2d8;background:#fff;border-radius:10px;padding:12px;color:var(--text);outline:0;font-size:14px}input:focus,select:focus,textarea:focus{border-color:#5b8868;box-shadow:0 0 0 3px #eaf0e5}input[type=checkbox]{width:18px;height:18px;accent-color:var(--green);flex-shrink:0}textarea{min-height:90px;resize:vertical;line-height:1.6}.field{margin-bottom:15px}.check{display:flex;align-items:center;gap:9px;font-size:12px;padding:9px 0;font-weight:400}.equipment{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.divider{height:1px;background:var(--line);margin:16px 0}.amount{font-size:30px;font-weight:700;letter-spacing:-1px}.amount small{font-size:14px}.bar{height:7px;background:#eff1eb;border-radius:5px;overflow:hidden}.bar i{display:block;height:100%;background:#88a879;border-radius:5px}.costrow{display:flex;justify-content:space-between;margin:13px 0;gap:12px}.costrow span{color:#768170;font-size:12px}.costrow b{font-size:13px}.step{display:flex;gap:13px;align-items:flex-start;margin:16px 0}.step b{display:grid;place-items:center;border-radius:9px;background:#eaf0e5;color:var(--green);width:29px;height:29px;flex-shrink:0}.step p{font-size:12px;margin:2px 0}.bottom-action{display:flex;gap:10px;margin:18px 0}.bottom-action>*{flex:1}.empty{text-align:center;padding:35px 10px;color:var(--muted)}.modal-shade{position:fixed;inset:0;z-index:40;background:#17291cb0;display:flex;justify-content:center;align-items:flex-end}.sheet{background:var(--bg);width:min(100%,480px);max-height:92vh;overflow:auto;border-radius:25px 25px 0 0;padding:23px 21px calc(25px + env(safe-area-inset-bottom))}.sheet .section-title{position:sticky;top:-23px;background:var(--bg);padding:14px 0;z-index:1}.close{border-radius:50%;background:#e9ede5;font-size:23px;width:32px;height:32px;color:#64715e}.sheet h2{font-size:20px}.ingredient{padding:15px;background:white;border:1px solid var(--line);border-radius:14px;margin-bottom:12px}.ingredient .grid3{gap:6px}.ingredient input{padding:10px 8px}.ingredient label{font-size:10px;color:var(--muted)}#toast{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:fixed;left:50%;bottom:110px;transform:translateX(-50%);background:#263d30;color:#fff;padding:12px 20px;border-radius:12px;font-size:12px;z-index:80;max-width:90%;opacity:0;pointer-events:none;transition:opacity .2s}.doc-icon{width:43px;height:48px;background:#eaf0e5;border-radius:8px;color:#476b46;display:grid;place-items:center;font-size:10px;font-weight:800;flex-shrink:0}.smallprint{font-size:10px;color:#92998e;line-height:1.7;margin:18px 0}.ratingline{display:grid;grid-template-columns:55px 1fr 30px;gap:12px;align-items:center;margin:12px 0;font-size:12px}.ratingline input{padding:0;accent-color:var(--green)}.score{font-size:35px;color:var(--green);font-weight:750}.alert-dot{width:6px;height:6px;background:var(--orange);border-radius:50%;display:inline-block}.pill-group{display:flex;gap:6px;flex-wrap:wrap}.recipe-select{margin:15px 0;font-weight:600}.mini{font-size:10px}.header-title{margin:14px 0 20px}.trend{height:50px;display:flex;align-items:end;gap:5px}.trend i{background:#dce6d4;border-radius:3px 3px 0 0;flex:1}.quote{border-left:3px solid #9cad8a;padding-left:12px;color:#63735d;font-size:12px}table{border-collapse:collapse;width:100%;font-size:11px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:10px 5px}th{color:var(--muted);font-weight:500}.scroll-table{overflow:auto}.audit{font-size:11px;padding:12px 0;border-bottom:1px solid var(--line);line-height:1.6}.release{font-size:10px;color:#b7cabc;margin-top:18px}.error{color:var(--red);font-size:12px;margin:10px 0;line-height:1.7}.cost-hero{background:#e9efdf;border:1px solid #dce5d2;border-radius:18px;padding:22px}.cost-hero .amount{font-size:40px}.cost-hero .muted{color:#75816b}.tagline{font-size:12px;color:#7d8975;margin-bottom:15px}.form-hint{font-size:10px;color:var(--muted);margin-top:5px;line-height:1.6}@media(min-width:600px){#app{box-shadow:0 0 70px #24352310;min-height:100vh}.modal-shade{align-items:center}.sheet{border-radius:24px}}@media print{.nav,.topbar,.btn,.tabs{display:none}#app{max-width:none;padding:0}.card{break-inside:avoid}body{background:white}}
.brand{background:none;padding:0;color:var(--text)}.avatar-photo{width:30px;height:30px;border-radius:9px;object-fit:cover}.achievement{text-align:left;display:grid;gap:6px}.achievement b{font-size:35px;color:var(--green)}.achievement span{font-size:15px;font-weight:650}.achievement small{font-size:10px;color:var(--muted)}.product-photo{width:100%;height:190px;object-fit:cover;border-radius:14px;margin-top:12px}.illustrated{display:grid;place-items:center;background:#eee8dc}.illustrated svg{height:100%;max-width:100%}.history-photo{width:90px;height:90px;object-fit:cover;border-radius:10px;margin-top:12px}.list-item{text-align:left}.food{object-fit:cover;margin:0}.news-list{max-height:260px;overflow-y:auto;margin-top:12px}.news-item{display:block;width:100%;text-align:left;padding:13px 0;background:none;border-bottom:1px solid var(--line);color:var(--text)}.news-item strong{display:block;line-height:1.6;font-size:13px}.news-item span{font-size:10px;color:var(--muted)}.goal-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.goal{min-width:0;border:1px solid var(--line);border-radius:12px;padding:8px 4px;display:grid;gap:5px;text-align:center}.goal input{width:16px;margin:auto;accent-color:var(--green)}.goal b{font-size:14px}.goal small{font-size:9px;font-weight:400;color:var(--muted)}.radar{width:100%;height:240px;margin:10px 0}.photo-actions{margin-top:12px}.purchase-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:13px 0;gap:12px}.purchase-row div{flex:1}.purchase-row b{font-size:13px}.purchase-row small{display:block;font-size:10px;color:var(--muted);line-height:1.7}.purchase-row label{width:90px;margin:0;flex-shrink:0}.purchase-row label input{padding:10px}.month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.month-grid .card{padding:14px 10px;text-align:left}.photo-upload{border:1px dashed #becab6;border-radius:14px;padding:12px;margin:12px 0}.upload-preview{height:110px;max-width:100%;object-fit:cover;border-radius:10px;margin-bottom:10px}.file-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.region-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px}.region-grid select{padding:11px 5px;font-size:12px}.compact-head,.compact-ingredient{display:grid;grid-template-columns:minmax(80px,1.5fr) minmax(42px,.75fr) minmax(42px,.65fr) minmax(48px,.8fr) 19px;gap:5px;align-items:center}.compact-head{font-size:9px;color:var(--muted);margin:12px 0 6px}.compact-ingredient{padding:7px 0;border-bottom:1px solid var(--line)}.compact-ingredient input{padding:10px 5px;font-size:12px;min-width:0}.remove-mini{padding:0;background:none;color:#8d9789;font-size:20px}.raw-error{grid-column:1/-1;margin:0;font-size:10px}.raw-error:empty{display:none}.compact-ingredient input:invalid{border-color:#d68f75}#training-canvas{width:100%;border-radius:16px;background:#e8eddf}video{width:100%;border-radius:14px}.topbar .avatar{padding:7px}.smallprint{overflow-wrap:anywhere}.card{min-width:0}.row{min-width:0}.row h3{overflow-wrap:anywhere}.sheet .btn.close{padding:0;color:#6a7861}.illustrated.food svg{width:69px}.form-error{white-space:pre-wrap}.month-grid h3{font-size:15px}@media(max-width:350px){.content{padding:0 14px}.sheet{padding-left:13px;padding-right:13px}.btn{padding:12px 13px}.topbar{padding-left:15px;padding-right:15px}h1{font-size:24px}.region-grid{grid-template-columns:1fr}.compact-ingredient{gap:3px}.compact-ingredient input{font-size:11px}.compact-head{font-size:8px}}
/* Keep forms inside the area remaining above the software keyboard. */
#app{min-height:var(--visible-height,100dvh)}
.modal-shade{top:var(--visible-top,0px);bottom:auto;height:var(--visible-height,100dvh)}
.sheet{max-height:calc(var(--visible-height,100dvh) - 12px);overscroll-behavior:contain;scroll-padding-top:75px;scroll-padding-bottom:65px}
input,textarea{scroll-margin-top:75px;scroll-margin-bottom:65px}
.keyboard-dismiss{display:none;position:fixed;right:max(12px,calc((100vw - 480px)/2 + 12px));top:calc(var(--visible-top,0px) + var(--visible-height,100dvh) - 48px);z-index:100;background:#234e3d;color:white;border-radius:20px;padding:10px 15px;box-shadow:0 2px 12px #0002}
.editing .keyboard-dismiss{display:block}
.editing .nav{display:none}
.editing .sheet{padding-bottom:70px}
body[data-theme="light"]{--bg:#f7fbff;--card:#fff;--text:#172a38;--muted:#536b7b;--line:#dce7ee;--green:#176b70;--orange:#d45a2f;--soft:#fff0e7;--red:#ae302d}body[data-theme="light"] #app{box-shadow:0 0 38px #203b4c0c}body[data-theme="light"] .hero{background:#176b70}body[data-theme="light"] .nav{background:#fffffffa}body[data-theme="light"] .card{border-radius:12px}body[data-theme="contrast"]{--bg:#fff6ed;--card:#fffdf9;--text:#382419;--muted:#765d4a;--line:#efd8c3;--green:#a9440a;--orange:#e86f16;--soft:#ffead8;--red:#ae302d}body[data-theme="contrast"] #app{background:var(--bg)}body[data-theme="contrast"] .hero{background:#a9440a;color:#fff}body[data-theme="contrast"] .hero p{color:#ffead8}body[data-theme="contrast"] .hero .eyebrow{color:#ffd2a8}body[data-theme="contrast"] .goal,body[data-theme="contrast"] .ingredient{background:#fffaf4;border-color:#edc9a9}body[data-theme="contrast"] input,body[data-theme="contrast"] select,body[data-theme="contrast"] textarea{background:#fffdf9;color:#382419;border-color:#d8a77e}body[data-theme="contrast"] .nav,body[data-theme="contrast"] .sheet{background:#fffaf4}body[data-theme="contrast"] .btn.secondary{background:#ffead8;color:#713208}body[data-theme="contrast"] .chip{background:#ffead8;color:#803708}body[data-theme="contrast"] .notice.green{background:#fff1e2;border-color:#e9b98f;color:#713708}body[data-theme="contrast"] .close{background:#f4dcc8;color:#713708}body[data-theme="contrast"] .mark{color:#fff;background:#b94f0a}

/* Desktop presentation */
@media(min-width:800px){body{background:#edf0eb}#app{max-width:1320px;min-height:100vh;padding-bottom:100px;box-shadow:0 0 50px #223b2c0b}.topbar{max-width:1160px;margin:auto;padding:28px 36px 20px}.content{max-width:1120px;margin:auto;padding:0 34px}.content>h1{font-size:34px;margin:8px 0 12px}.hero{padding:42px 46px;margin:26px 0}.hero h2{font-size:32px}.hero-art{width:180px;height:180px}.section{margin-top:30px}.stack{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.stack>.card{height:100%}.month-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.nav{max-width:700px;left:50%;transform:translateX(-50%);border-radius:18px 18px 0 0}.sheet{max-width:760px}.modal-shade{align-items:center}.recipe-select{max-width:560px}.product-photo{height:280px}}
@media(min-width:1200px){.content{max-width:1160px}.home-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.home-grid>.section{margin-top:0}}

.theme-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.theme-option{min-width:0;min-height:88px;padding:12px 5px;border:1px solid var(--line);border-radius:13px;background:var(--card);color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center}.theme-option b{font-size:12px;white-space:nowrap}.theme-option small{font-size:10px;color:var(--muted);white-space:nowrap}.theme-option span{font-size:10px;color:var(--muted)}.theme-option[aria-pressed="true"]{border:2px solid var(--green);background:var(--card);color:var(--green)}
