@import "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&family=Noto+Serif+SC:wght@600;700;900&display=swap";:root{color:oklch(24% .022 72);font-synthesis:none;text-rendering:optimizelegibility;font-kerning:normal;--paper:oklch(98.5% .012 88);--paper-deep:oklch(94% .025 88);--ink:oklch(24% .022 72);--ink-soft:oklch(45% .025 72);--rule:oklch(79% .025 82);--green:oklch(48% .105 155);--green-dark:oklch(35% .08 155);--green-light:oklch(91% .055 150);--amber:oklch(70% .13 72);--amber-light:oklch(93% .055 82);--red:oklch(52% .16 30);--red-light:oklch(93% .045 30);--shadow-sm:0 2px 10px oklch(30% .02 72/.08);--shadow-md:0 18px 48px oklch(30% .02 72/.12);--ease-out:cubic-bezier(.16, 1, .3, 1);background:oklch(96% .018 88);font-family:Noto Sans SC,PingFang SC,sans-serif}*{box-sizing:border-box}html{background:var(--paper-deep);scroll-behavior:smooth;min-width:320px}body{background:linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), oklch(86% .025 84) calc(100% - 1px)) 0 0 / 24px 24px, var(--paper);min-width:320px;min-height:100vh;color:var(--ink);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);margin:0}button,input,select{font:inherit}button,label,select{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:3px;outline:3px solid oklch(62% .14 155/.55)}label:has(input:focus-visible){outline-offset:3px;outline:3px solid oklch(62% .14 155/.55)}a{color:inherit}.app-shell{min-height:100vh;padding-top:env(safe-area-inset-top);flex-direction:column;display:flex}.skip-link{z-index:50;background:var(--ink);color:var(--paper);padding:10px 14px;text-decoration:none;position:fixed;top:12px;left:12px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.site-header{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;width:min(100% - 32px,1180px);min-height:72px;margin-inline:auto;display:flex}.brand{letter-spacing:.08em;align-items:center;gap:10px;font-family:Noto Serif SC,Songti SC,serif;font-size:1.25rem;font-weight:900;text-decoration:none;display:inline-flex}.brand-mark{gap:3px;width:22px;display:grid}.brand-mark i{transform-origin:0;height:4px;display:block}.brand-mark i:first-child{background:var(--green);width:100%}.brand-mark i:nth-child(2){background:var(--amber);width:70%}.brand-mark i:nth-child(3){background:var(--red);width:40%}.standard-pill{color:var(--ink-soft);border:1px solid var(--rule);background:var(--paper);font-variant-numeric:tabular-nums;padding:6px 9px;font-size:.75rem}.landing{align-items:center;gap:56px;width:min(100% - 32px,1180px);margin:auto;padding-block:clamp(48px,8vw,112px);display:grid}.hero-copy{max-width:620px;animation:rise-in .6s var(--ease-out) both}.eyebrow{color:var(--green-dark);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:8px;margin:0 0 18px;font-size:.75rem;font-weight:700;display:flex}h1{letter-spacing:-.045em;font-family:Noto Serif SC,Songti SC,serif;font-weight:900}.hero-copy h1{margin:0;font-size:clamp(3.5rem,16vw,7.6rem);line-height:.98}.hero-lead{max-width:34em;color:var(--ink-soft);margin:30px 0 0;font-size:clamp(1rem,2.8vw,1.22rem);line-height:1.85}.capability-line{color:var(--green-dark);flex-wrap:wrap;gap:8px 18px;margin:20px 0 0;padding:0;font-size:.75rem;font-weight:700;list-style:none;display:flex}.capability-line li{padding-left:13px;position:relative}.capability-line li:before{content:"";background:var(--amber);width:5px;height:5px;position:absolute;top:.56em;left:0;transform:rotate(45deg)}.hero-actions{flex-direction:column;gap:12px;margin-top:36px;display:flex}.action{cursor:pointer;min-height:48px;transition:transform .15s var(--ease-out), background-color .15s var(--ease-out), color .15s var(--ease-out);border:1px solid #0000;justify-content:center;align-items:center;gap:10px;padding:12px 18px;font-weight:700;display:inline-flex}.action:active{transform:translateY(1px)scale(.99)}.action:disabled{cursor:not-allowed;opacity:.42}.primary-action{background:var(--green-dark);color:var(--paper)}.secondary-action{border-color:var(--ink);color:var(--ink);background:0 0}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.trust-line{color:var(--ink-soft);align-items:flex-start;gap:8px;margin-top:18px;font-size:.78rem;line-height:1.6;display:flex}.capture-stage{min-height:410px;animation:rise-in .7s .1s var(--ease-out) both;background:oklch(91% .055 87);place-items:center;padding:38px 22px 64px;display:grid;position:relative;overflow:hidden}.capture-stage:before{content:"";background:oklch(83% .11 78/.65);border-radius:50%;width:280px;height:280px;position:absolute;top:-80px;right:-100px}.frame-corner{border-color:var(--green-dark);z-index:2;border-style:solid;width:34px;height:34px;position:absolute}.corner-a{border-width:2px 0 0 2px;top:18px;left:18px}.corner-b{border-width:2px 2px 0 0;top:18px;right:18px}.corner-c{border-width:0 2px 2px 0;bottom:18px;right:18px}.corner-d{border-width:0 0 2px 2px;bottom:18px;left:18px}.label-sheet{z-index:1;background:var(--paper);border:1px solid var(--ink);width:min(280px,82%);box-shadow:var(--shadow-md);padding:22px;position:relative;transform:rotate(1.6deg)}.sheet-kicker{font-family:Noto Serif SC,Songti SC,serif;font-size:1.22rem;font-weight:900}.sheet-rule{background:var(--ink);height:1px;margin-block:10px}.sheet-rule.thick{height:4px;margin-top:7px}.sheet-row{border-bottom:1px solid var(--rule);font-variant-numeric:tabular-nums;grid-template-columns:1fr 1.15fr .7fr;gap:8px;padding-block:6px;font-size:.69rem;display:grid}.header-row{border-bottom-color:var(--ink)}.label-sheet small{color:var(--ink-soft);font-size:.6rem}.capture-tip{z-index:3;color:var(--green-dark);margin:0;font-size:.74rem;font-weight:700;position:absolute;bottom:22px}.workspace,.result-page{flex:1;width:min(100% - 32px,1180px);margin:0 auto;padding-block:clamp(36px,6vw,76px)}.workspace{gap:36px;display:grid}.photo-panel{min-width:0}.photo-wrap{aspect-ratio:4/3;background:var(--paper-deep);border:1px solid var(--ink);position:relative;overflow:hidden}.photo-wrap img{object-fit:contain;width:100%;height:100%;display:block}.scan-line{inset-inline:0;background:var(--green);opacity:0;height:1px;position:absolute;top:50%;box-shadow:0 0 0 1px oklch(90% .08 155/.35)}.analyzing-layout .scan-line{opacity:1;animation:scan 2.6s var(--ease-out) infinite alternate}.text-button{min-height:44px;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;margin-top:10px;padding:8px 0;display:inline-flex}.analysis-copy,.error-copy{align-self:center;max-width:530px}.analysis-copy h1,.error-copy h1,.review-section h1,.result-hero h1{margin:0;font-size:clamp(2.2rem,8vw,4.4rem);line-height:1.12}.analysis-copy>p:not(.eyebrow),.error-copy>p:not(.eyebrow){color:var(--ink-soft);line-height:1.75}.analysis-steps{border-top:1px solid var(--rule);margin:34px 0 0;padding:0;list-style:none}.analysis-steps li{border-bottom:1px solid var(--rule);min-height:54px;color:var(--ink-soft);align-items:center;gap:12px;display:flex}.analysis-steps li>span:first-child:not(.pulse-dot){width:16px}.analysis-steps .done{color:var(--green-dark)}.analysis-steps .active{color:var(--ink);font-weight:700}.pulse-dot{background:var(--amber);border-radius:50%;width:10px;height:10px;margin-inline:3px;animation:1.2s ease-in-out infinite pulse}.review-section{min-width:0}.section-heading{border-bottom:4px solid var(--ink);justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:24px;display:flex}.section-heading .eyebrow{margin-bottom:10px}.review-status{background:var(--amber-light);color:oklch(42% .1 67);flex:none;align-items:center;gap:6px;padding:7px 9px;font-size:.72rem;font-weight:700;display:inline-flex}.review-status.verified{background:var(--green-light);color:var(--green-dark)}.warning-box{color:oklch(40% .1 62);background:var(--amber-light);align-items:flex-start;gap:10px;margin-top:20px;padding:13px 14px;font-size:.82rem;line-height:1.6;display:flex}.warning-box p{margin:0}.warning-box p+p{margin-top:5px}.source-evidence{border-bottom:1px solid var(--rule);color:var(--ink-soft);flex-wrap:wrap;gap:8px 18px;padding:13px 0;font-size:.72rem;display:flex}.source-evidence span{align-items:center;gap:6px;display:inline-flex}.source-evidence span:first-child{color:var(--green-dark);font-weight:700}.identity-row{border-bottom:1px solid var(--ink);gap:16px;padding-block:22px;display:grid}.identity-row label,.nutrient-field{gap:8px;display:grid}.identity-row label>span:first-child,.field-label{color:var(--ink-soft);font-size:.75rem;font-weight:600}.identity-row input,.identity-row select,.nutrient-field input{border:1px solid var(--rule);background:var(--paper);width:100%;min-height:44px;color:var(--ink);font-variant-numeric:tabular-nums;border-radius:0;padding:9px 11px}.identity-row input::placeholder{color:oklch(58% .018 75)}.select-wrap,.number-wrap{align-items:center;display:flex;position:relative}.select-wrap select{appearance:none;padding-right:36px}.select-wrap svg{pointer-events:none;position:absolute;right:11px}.nutrition-fields{border-bottom:1px solid var(--ink);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.nutrient-field{border-bottom:1px solid var(--rule);padding:16px 12px}.field-label{justify-content:space-between;align-items:center;gap:8px;min-height:22px;display:flex}.field-label small{color:oklch(42% .1 67);font-size:.65rem}.field-review input,.field-review select{border-color:var(--amber);background:oklch(97% .025 82)}.number-wrap input{text-align:right;padding-right:44px}.number-wrap>span{color:var(--ink-soft);pointer-events:none;font-size:.72rem;position:absolute;right:11px}input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.review-footer{flex-direction:column;align-items:stretch;gap:20px;padding-top:22px;display:flex}.review-footer p{color:var(--ink-soft);margin:0;font-size:.78rem;line-height:1.65}.supporting-block{border-bottom:1px solid var(--ink)}.supporting-block summary{cursor:pointer;align-items:center;gap:8px;min-height:48px;font-family:Noto Serif SC,Songti SC,serif;font-weight:700;display:flex}.supporting-block summary::marker{content:""}.supporting-block summary:after{content:"+";color:var(--ink-soft);margin-left:auto;font-family:Noto Sans SC,PingFang SC,sans-serif;font-size:1.2rem}.supporting-block[open] summary:after{content:"−"}.supporting-block summary span{background:var(--paper-deep);min-width:22px;color:var(--ink-soft);text-align:center;padding:2px 6px;font-family:Noto Sans SC,PingFang SC,sans-serif;font-size:.65rem}.supporting-block>p{color:var(--ink-soft);margin:0 0 12px;font-size:.72rem;line-height:1.6}.supporting-list{border-top:1px solid var(--rule)}.supporting-list>div{border-bottom:1px solid var(--rule);font-variant-numeric:tabular-nums;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;min-height:44px;font-size:.75rem;display:grid}.supporting-list>div:last-child{border-bottom:0}.supporting-list strong{font-weight:600}.supporting-list small{min-width:58px;color:var(--ink-soft);text-align:right}.result-page{--grade-color:var(--amber);--grade-soft:var(--amber-light);gap:44px;display:grid}.grade-a{--grade-color:oklch(48% .11 156);--grade-soft:oklch(91% .055 150)}.grade-b{--grade-color:oklch(58% .12 135);--grade-soft:oklch(93% .05 135)}.grade-c{--grade-color:oklch(68% .13 78);--grade-soft:oklch(94% .05 82)}.grade-d{--grade-color:oklch(63% .14 52);--grade-soft:oklch(93% .05 55)}.grade-e{--grade-color:oklch(53% .17 30);--grade-soft:oklch(93% .045 30)}.result-hero{border-top:4px solid var(--ink);border-bottom:1px solid var(--ink);padding:28px 0 34px;position:relative;overflow:hidden}.result-hero:after{content:"";background:var(--grade-soft);z-index:-1;border-radius:50%;width:220px;height:220px;position:absolute;top:-80px;right:-90px}.grade-lockup{align-items:center;gap:clamp(20px,5vw,44px);margin-top:28px;display:flex}.grade-letter{color:var(--grade-color);letter-spacing:-.1em;font-family:Noto Serif SC,Songti SC,serif;font-size:clamp(7rem,32vw,14rem);font-weight:900;line-height:.78}.grade-lockup strong{font-family:Noto Serif SC,Songti SC,serif;font-size:clamp(1.5rem,6vw,2.6rem)}.grade-lockup p{max-width:25em;color:var(--ink-soft);margin:8px 0 0;line-height:1.65}.score-line{border-top:1px solid var(--rule);color:var(--ink-soft);grid-template-columns:auto 1fr auto;align-items:baseline;gap:12px;margin-top:34px;padding-top:16px;font-size:.75rem;display:grid}.score-line strong{color:var(--ink);font-variant-numeric:tabular-nums;font-family:Noto Serif SC,Songti SC,serif;font-size:2rem}.partial-note{color:oklch(42% .1 67);margin:12px 0 0;font-size:.78rem}.uncertainty-strip{border:1px solid var(--grade-color);background:var(--grade-soft);color:var(--ink);gap:4px;margin-top:16px;padding:12px 14px;display:grid}.uncertainty-strip strong{font-size:.8rem}.uncertainty-strip span{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:.7rem}.result-details{max-width:760px}.summary-columns{gap:24px;margin-bottom:34px;display:grid}.summary-columns>div{border-top:1px solid var(--ink);padding-top:12px}.summary-label{color:var(--ink-soft);letter-spacing:.1em;font-size:.72rem;font-weight:700}.summary-columns p{margin:12px 0 0;font-family:Noto Serif SC,Songti SC,serif;font-size:1.2rem;font-weight:700;line-height:1.6}.metric-list{border-top:4px solid var(--ink);border-bottom:1px solid var(--ink)}.metric-row{border-bottom:1px solid var(--rule);grid-template-columns:.8fr 1.8fr auto;align-items:center;gap:12px;min-height:58px;font-size:.82rem;display:grid}.metric-row:last-child{border-bottom:0}.metric-row>span:nth-child(2){color:var(--ink-soft)}.metric-row strong{font-variant-numeric:tabular-nums}.level-great strong,.level-good strong{color:var(--green-dark)}.level-bad strong,.level-terrible strong{color:var(--red)}.disclaimer{background:var(--paper-deep);color:var(--ink-soft);align-items:flex-start;gap:10px;margin-top:28px;padding:15px;display:flex}.result-supporting{border-top:1px solid var(--ink);margin-top:26px}.disclaimer svg{color:var(--green-dark);flex:none}.disclaimer p{margin:0;font-size:.75rem;line-height:1.7}.result-actions{flex-direction:column;gap:10px;margin-top:24px;display:flex}.share-status{color:var(--green-dark);margin:10px 0 0;font-size:.75rem}.error-copy>svg{color:var(--red);margin-bottom:16px}.error-copy h1{font-size:clamp(1.8rem,7vw,3.4rem)}.error-copy .primary-action{margin-top:20px}.site-footer{margin-inline:auto;width:min(100% - 32px,1180px);min-height:68px;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--rule);color:var(--ink-soft);justify-content:space-between;align-items:center;gap:16px;margin-top:auto;font-size:.68rem;display:flex}@media (width>=520px){.hero-actions{flex-direction:row}.identity-row,.summary-columns{grid-template-columns:1fr 1fr}.review-footer{flex-direction:row;justify-content:space-between;align-items:center}.result-actions{flex-direction:row}}@media (width>=760px){.site-header,.landing,.workspace,.result-page,.site-footer{width:min(100% - 64px,1180px)}.landing{grid-template-columns:minmax(0,1.15fr) minmax(330px,.85fr)}.workspace{grid-template-columns:minmax(250px,.7fr) minmax(0,1.3fr);align-items:start}.photo-panel{position:sticky;top:24px}.nutrient-field:nth-child(3n+1){padding-left:0}.nutrient-field:nth-child(3n){padding-right:0}.result-page{grid-template-columns:minmax(330px,.8fr) minmax(0,1.2fr);align-items:start}.result-hero{position:sticky;top:24px}}@media (hover:hover) and (pointer:fine){.primary-action:hover{background:var(--green);transform:translateY(-1px)}.secondary-action:hover{background:var(--ink);color:var(--paper);transform:translateY(-1px)}.text-button:hover{color:var(--ink)}}@media (pointer:coarse){.action{min-height:52px;padding-block:14px}}@keyframes rise-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes scan{0%{transform:translateY(-150px)}to{transform:translateY(150px)}}@keyframes pulse{0%,to{opacity:.45;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
