@font-face{font-family:Public;src:url('../fonts/public-sans-var.woff2');font-weight:100 900;font-display:swap}@font-face{font-family:Barlow;src:url('../fonts/barlow-semi-condensed-600.woff2');font-weight:600;font-display:swap}*{box-sizing:border-box} :root{--ink:#152e43;--muted:#586b7c;--bg:#f2f5f8;--line:#c8d2dc;--blue:#244e79;--pale:#e9f0f7;--warn:#8a451d;--white:#fff;--green:#286346;--s4:4px;--s8:8px;--s12:12px;--s16:16px;--s24:24px;--s32:32px;--s48:48px;--s64:64px}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 Public,sans-serif;font-variant-numeric:tabular-nums}button,input,select{font:inherit;color:inherit}button,a,select{cursor:pointer}button,a,input,select{outline-offset:4px} :focus-visible{outline:3px solid var(--blue)}button{background:white;border:1px solid var(--line);border-radius:4px;padding:10px 16px;min-height:44px;transition:background-color 160ms ease-out}button:hover{background:var(--pale)}button.primary{background:var(--blue);color:white;border-color:var(--blue)}button.primary:hover{background:#193c60}header{padding:24px 4%;background:white;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.brand{color:var(--ink);text-decoration:none;display:flex;gap:12px;align-items:center;font-weight:650;font-size:18px}.brand small{display:block;color:var(--muted);font-size:12px;font-weight:400}.brand-mark{font:600 40px Barlow;background:var(--blue);color:white;width:48px;height:48px;text-align:center}.context{display:flex;align-items:center;gap:24px;font-size:14px}select,input{border:1px solid var(--line);border-radius:4px;background:white;padding:10px;min-height:44px}nav{display:flex;padding:0 4%;background:white;gap:24px;border-bottom:1px solid var(--line)}nav button{border:0;border-radius:0;background:transparent;padding:16px 0;color:var(--muted);font-size:14px}nav button.active{color:var(--blue);box-shadow:inset 0 -3px var(--blue);font-weight:650}main{max-width:1360px;margin:auto;padding:40px 4% 48px;min-height:680px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:16px}h1,h2,h3,p{margin:0}h1{font:600 40px/1.1 Barlow}h2{font:600 26px/1.15 Barlow}h3{font-size:16px}p.sub,.muted{color:var(--muted)}p.sub{margin-top:8px;font-size:14px}.summary{display:grid;grid-template-columns:5fr 7fr;background:white;border:1px solid var(--line);margin-bottom:32px}.number{padding:28px 32px;border-right:1px solid var(--line)}.number strong{font:600 76px/1.1 Barlow;display:block;letter-spacing:-2px}.number .variance{color:var(--warn);font-size:14px}.formula{padding:28px 32px;display:flex;flex-direction:column;justify-content:center}.equation{display:flex;gap:20px;justify-content:space-between;margin-top:16px}.equation small{display:block;color:var(--muted);font-size:12px;margin-bottom:4px}.equation strong{font-size:20px}.formula-note{font-size:12px;color:var(--muted);margin-top:16px}.split{display:grid;grid-template-columns:8fr 4fr;gap:32px}.section-title{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:16px}.section-title span{font-size:12px;color:var(--muted)}table{width:100%;border-collapse:collapse;text-align:left;background:white;font-size:14px}th{font-size:12px;color:var(--muted);font-weight:500;background:#e3e9ef}td,th{padding:14px 16px;border-bottom:1px solid var(--line)}td.num,th.num{text-align:right}td small{display:block;font-size:12px;color:var(--muted)}.flag{color:var(--warn);font-weight:600}.good{color:var(--green)}.bar{height:5px;background:#e3e9ef;width:86px;margin-top:8px}.bar span{display:block;height:100%;background:var(--blue)}.task{padding:18px 0;border-top:1px solid var(--line)}.task p{font-size:14px;color:var(--muted);margin:8px 0 12px}.task button{font-size:14px}.comparison{margin-top:32px}.location-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;align-items:center;padding:16px 20px;background:white;border-bottom:1px solid var(--line);font-size:14px}.location-row strong{font-size:20px}.note{background:var(--pale);padding:16px 20px;font-size:14px;margin:20px 0}.tabs{display:flex;gap:8px;margin:20px 0;flex-wrap:wrap}.tabs button.active{background:var(--blue);color:white}.progress{height:6px;background:var(--line);margin:16px 0}.progress span{display:block;height:100%;background:var(--blue)}.count-row{display:grid;grid-template-columns:1fr 190px 120px 100px;align-items:center;padding:20px 24px;border-bottom:1px solid var(--line);background:white;gap:24px}.count-row small{color:var(--muted);display:block}.stepper{display:flex}.stepper button{width:48px;font-size:24px;padding:0}.stepper input{width:80px;text-align:center;border-radius:0;appearance:textfield}.count-row .checked{color:var(--green);background:#edf5ef}.table-wrap{overflow-x:auto}.recipe-input{width:76px}.recipe-name{font-weight:600}.recipe-detail{display:block;font-size:12px;color:var(--muted)}.import-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px}.panel{background:white;border:1px solid var(--line);padding:24px}.panel p{margin:12px 0 20px;color:var(--muted);font-size:14px}.file-label{display:block;margin:16px 0}input[type=file]{width:100%;font-size:14px}.links{display:flex;gap:16px;margin:16px 0;flex-wrap:wrap}a{color:var(--blue)}.error{color:#a33333}.scenario{display:grid;grid-template-columns:1fr 1fr;gap:48px}.field{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.field input{width:100px}.big-saving{font:600 64px/1.1 Barlow;display:block;margin:16px 0}.saving-panel{background:var(--blue);color:white;padding:32px}.saving-panel p{margin:16px 0}.saving-panel hr{border:0;border-top:1px solid #8293a4;margin:24px 0}footer{padding:24px 4%;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;color:var(--muted);font-size:12px}footer div{display:flex;align-items:center;gap:20px}footer button{padding:0;min-height:32px;background:transparent;border:0;font-size:12px;color:var(--muted)}#notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:12px 20px;border-radius:4px;display:none;z-index:5;max-width:90%}dialog{border:1px solid var(--line);border-radius:8px;padding:32px;max-width:480px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 16px 48px #00000022}dialog::backdrop{background:#152e4355}dialog p{margin:16px 0 24px;color:var(--muted)}.dialog-actions{display:flex;justify-content:space-between;gap:12px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.tour-focus{outline:3px solid var(--blue);outline-offset:6px}@media(max-width:900px){.split{grid-template-columns:1fr}.summary{grid-template-columns:1fr 1.25fr}.equation{flex-wrap:wrap}.count-row{grid-template-columns:1fr 180px 90px;gap:12px}.count-value{display:none}.import-grid{grid-template-columns:1fr}.scenario{gap:24px}nav{gap:20px;overflow-x:auto;white-space:nowrap}}@media(max-width:600px){header{padding:16px}.brand{font-size:16px}.brand-mark{width:40px;height:40px;font-size:32px}.context{display:block;text-align:right;font-size:12px}.context select{display:block;margin-top:4px;width:140px;min-height:40px;padding:6px}nav{padding:0 16px;gap:24px}nav button{font-size:13px}main{padding:24px 16px 32px}h1{font-size:32px}.heading{align-items:flex-start;flex-wrap:wrap}.heading .primary{width:100%}.summary{grid-template-columns:1fr;margin-bottom:24px}.number{padding:24px;border-right:0;border-bottom:1px solid var(--line);position:relative}.number strong{font-size:64px}.formula{padding:20px 24px}.equation{gap:12px}.equation strong{font-size:16px}.section-title span{max-width:130px;text-align:right}td,th{padding:12px 8px;font-size:12px}.bar{width:60px}.desktop-col{display:none}.location-row{grid-template-columns:1.4fr 1fr 1fr;gap:8px;padding:16px 12px;font-size:12px}.location-row strong{font-size:18px}.count-row{grid-template-columns:1fr auto;padding:20px 16px;gap:16px}.stepper{grid-row:2;grid-column:1}.count-check{grid-row:2;grid-column:2;min-height:48px}.count-row .unit{grid-column:2;grid-row:1}.count-row .stepper input{width:64px}.scenario{grid-template-columns:1fr}.panel{padding:20px}.recipe-table{min-width:700px}.saving-panel{padding:24px}footer{display:block;padding:20px 16px}footer div{flex-wrap:wrap;margin-top:12px;gap:16px}dialog{padding:24px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.mobile-percent{display:none}button:disabled{opacity:.55;cursor:default}::selection{background:#c8d2dc;color:var(--ink)}input{caret-color:var(--blue)}a{text-underline-offset:3px}@media(max-width:600px){td .mobile-percent{display:block}}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stepper input{padding:8px}
.recipe-scroll-hint{display:none}@media(max-width:600px){.equation{display:grid;grid-template-columns:1fr 1fr;gap:16px}.equation>span{display:none}.recipe-scroll-hint{display:block;margin-bottom:12px}}
/* Review refinements: shared ledger edges and explicit working states. */
header,nav,main,footer{padding-left:max(24px,calc((100vw - 1248px)/2));padding-right:max(24px,calc((100vw - 1248px)/2));max-width:none}
.count-action{display:grid;gap:4px}.count-action small{color:var(--muted);font-size:13px}.status{margin-right:8px}.formula-title{font:600 16px/1.5 Public,sans-serif}.count-row{grid-template-columns:1fr 240px 100px 140px;min-height:96px}.count-check{white-space:nowrap;min-width:120px;display:inline-flex;align-items:center;justify-content:center;gap:8px}.unit-price{display:inline-block;margin-left:12px}.unit-suffix{align-self:center;margin-left:8px;font-size:14px}.tabs button small{display:block;font-size:13px}.mobile-theory,.mobile-label{display:none}.yield-cell label{font-size:13px}.yield-cell input{display:block;min-height:48px}.import-grid>.panel{align-self:start}.file-button{display:inline-flex;align-items:center;min-height:44px;padding:10px 16px;border:1px solid var(--line);border-radius:4px;cursor:pointer;background:white}.file-label{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.file-label:focus-within .file-button{outline:3px solid var(--blue);outline-offset:4px}footer button{min-height:44px;font-size:14px}footer small{font-size:12px}.over-budget{background:var(--warn)}
@media(max-width:900px){.count-row{grid-template-columns:1fr 220px 120px}.count-value{display:none}}
@media(max-width:600px){header,nav,main,footer{padding-left:16px;padding-right:16px}nav{gap:0;justify-content:space-between;overflow:visible}nav button{font-size:13px;white-space:nowrap}.context{font-size:13px}.count-action{width:100%}.count-action button{width:100%}td,th{font-size:14px}td small,.equation small,.formula-note,.section-title span,.recipe-detail,.location-row small{font-size:13px}.location-row{font-size:14px;grid-template-columns:1.45fr .8fr 1fr}.mobile-theory{display:block}.tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.tabs button{padding:8px 2px;font-size:13px;white-space:nowrap}.tabs button small{font-size:12px}.count-row{grid-template-columns:1fr 120px;padding:16px 12px;gap:12px;min-height:140px}.count-row>div:first-child{grid-column:1}.count-value{display:block!important;grid-column:2;grid-row:1;text-align:right}.stepper{grid-column:1;grid-row:2}.count-check{grid-column:2;grid-row:2;padding:8px;min-width:120px}.stepper button{width:40px;min-height:48px}.count-row .stepper input{width:52px}.unit-suffix{font-size:13px;margin-left:4px}.unit-price{display:block;margin-left:0}.recipe-table{min-width:0;background:transparent}.recipe-table thead{display:none}.recipe-table tbody{display:block}.recipe-table tr{display:grid;grid-template-columns:1fr 1fr;padding:20px 16px;margin-bottom:12px;background:white;border:1px solid var(--line);gap:8px 16px}.recipe-table td{border:0;padding:0;font-size:14px;text-align:left}.recipe-table td:first-child{grid-column:1/-1}.recipe-table .portion{grid-column:1;font-size:13px;color:var(--muted)}.recipe-table .menu-price{grid-column:2;grid-row:2;font-size:13px;color:var(--muted)}.recipe-table .yield-cell{grid-column:1;grid-row:3/5}.recipe-table .plate-cost{grid-column:2;grid-row:3;align-self:end}.recipe-table .plate-percent{grid-column:2;grid-row:4}.mobile-label{display:block;color:var(--muted);font-size:13px}.recipe-table .yield-cell label{font-size:13px}.recipe-table .yield-cell input{width:96px}.recipe-scroll-hint{display:none}.table-wrap:has(.recipe-table){overflow:visible}dialog{position:fixed;top:auto;bottom:0;margin:0;width:100%;max-width:none;border-radius:8px 8px 0 0;padding:20px;max-height:42vh;overflow:auto}dialog p{font-size:14px;margin:8px 0 16px}body:has(dialog[open]) #notice{display:none!important}}
input[type=file].sr{width:1px;min-height:1px;padding:0;border:0}.panel{min-width:0}.count-action small{display:block}
@media(max-width:600px){.category-table th:nth-child(3),.category-table td:nth-child(3){display:none}.category-table td:first-child{width:35%}.category-table td .mobile-label{margin-top:4px}.category-table td{font-size:14px}.category-table th{font-size:13px}.tabs button[aria-pressed=false]{color:var(--ink)}.tabs button small{font-size:13px}}
@media(max-width:600px){.stepper button{width:48px;flex-shrink:0}}
.count-value{font-size:14px}
/* Round two: semantic variance, input units and review recovery. */
:root{--field-width:104px;--overlay-gap:24px;--inverse-rule:rgba(255,255,255,.3)}
h1{text-wrap:balance}.number .variance{display:block;color:var(--ink)}.number .variance.flag{color:var(--warn)}.number .variance.good{color:var(--green)}
.location-row>div:last-child small{display:block;font-size:13px}.tabs{width:fit-content}.links a{display:inline-flex;align-items:center;min-height:44px}.saving-panel hr{border-color:var(--inverse-rule)}footer{align-items:center}
#notice{left:auto;right:var(--overlay-gap);bottom:var(--overlay-gap);transform:none;max-width:480px}
dialog{position:fixed;inset:auto var(--overlay-gap) var(--overlay-gap) auto;margin:0}
.unit-field{display:inline-flex;align-items:center;background:var(--white);border:1px solid var(--line);border-radius:4px;width:var(--field-width)}.unit-field input{border:0;min-width:0;width:100%;text-align:right;padding-right:4px;background:transparent}.unit-field>span{padding-right:8px;font-size:13px;color:var(--muted);white-space:nowrap}.yield-cell .unit-field input{width:100%}.field:has(input){display:grid;grid-template-columns:1fr var(--field-width)}.field .unit-field{width:var(--field-width)}
.field-error{display:block;font-size:13px;grid-column:1/-1}.count-row:has(.field-error),.count-row:has(.count-warning){height:auto}.count-warning{grid-column:1/-1;display:flex;align-items:center;gap:16px;font-size:14px;color:var(--warn)}.count-warning button{flex-shrink:0}.count-row:has(input:disabled) .stepper{opacity:.5}.count-row:has(input:disabled) .stepper button{opacity:1}
.preview-summary{display:flex;gap:24px;margin:16px 0 24px}.preview-summary dt{color:var(--muted);font-size:13px}.preview-summary dd{margin:0;font-weight:600}.panel:has(#preview){overflow-wrap:anywhere}#preview td,#preview th{padding:12px 8px}
@media(min-width:600px){.yield-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}}
@media(max-width:600px){.context select{min-height:44px}.section-title{display:block}.section-title span{display:block;max-width:none;text-align:left;margin-top:4px}.tabs{width:100%}.heading>#finalize{width:100%}#notice{right:16px;left:16px;bottom:calc(16px + env(safe-area-inset-bottom));max-width:none}dialog{inset:auto 0 0 0}.count-warning{display:block}.count-warning button{margin-top:8px}.recipe-table .yield-cell input{width:100%}.yield-label{display:block}.field input{width:100%}.preview-summary{gap:16px}}
/* 1017: a shorter entry into the working ledger. */
:root{--text-small:13px;--text-body:14px;--title-phone:28px;--title-intro:32px;--radius-control:4px;--warning-bg:#fff1e6}
.owner-brief{display:grid;grid-template-columns:8fr 4fr;gap:var(--s32);padding-bottom:var(--s24);margin-bottom:var(--s32);border-bottom:1px solid var(--line)}
.owner-brief h1{font-size:var(--title-intro);text-wrap:pretty;max-width:28ch}.owner-brief p{font-size:var(--text-body);color:var(--muted);max-width:65ch;margin-top:var(--s12)}
.scenario-brief{padding-left:var(--s24);border-left:1px solid var(--line);font-size:var(--text-small)}.scenario-brief>span{color:var(--muted)}.scenario-brief strong{display:block;font:600 32px Barlow;margin:var(--s4) 0}.scenario-brief strong small{font:400 var(--text-body) Public,sans-serif}.scenario-brief button{border:0;padding:0;background:transparent;color:var(--blue);text-decoration:underline;text-underline-offset:3px;min-height:44px}
.record-heading h2{font-size:32px}.record-heading{margin-bottom:var(--s16)}.csv-help{margin-top:var(--s16);font-size:var(--text-body)}summary{cursor:pointer;min-height:44px;display:flex;align-items:center;text-decoration:underline;text-underline-offset:3px}.tabs.scope-tabs{display:flex}.scope-tabs button{padding:var(--s12) var(--s16)}.scope-tabs button[aria-pressed=true]{background:var(--blue);color:var(--white)}
@media(max-width:900px){.owner-brief{grid-template-columns:7fr 5fr;gap:var(--s24)}.number,.formula{padding:var(--s24)}.equation{gap:var(--s12)}.equation strong{font-size:18px}}
@media(max-width:600px){.owner-brief{grid-template-columns:1fr;gap:var(--s16);margin-bottom:var(--s24);padding-bottom:var(--s16)}.owner-brief h1{font-size:var(--title-phone);max-width:none}.owner-brief p{margin-top:var(--s8)}.scenario-brief{border:0;padding:0;display:flex;align-items:center;flex-wrap:wrap;gap:var(--s4) var(--s8)}.scenario-brief>span{display:none}.scenario-brief strong{font-size:24px;margin:0}.scenario-brief button{font-size:var(--text-small);margin-left:auto}.record-heading h2{font-size:26px}.record-heading{gap:var(--s12)}.number{padding:var(--s16) var(--s24)}.formula{padding:var(--s16) var(--s24)}.scope-tabs{gap:var(--s4)}.scope-tabs button{flex:1;padding:var(--s12) var(--s4)}.tabs.scope-tabs button[aria-pressed=true]{color:var(--white)}}
.scenario-prefix{display:none}
@media(min-width:601px) and (max-width:900px){.equation{display:grid;grid-template-columns:1fr 1fr;gap:var(--s16)}.equation>span{display:none}}
@media(max-width:600px){.scenario-prefix{display:inline}.scenario-brief strong{font-size:20px}.scenario-brief strong small{font-size:var(--text-small)}}
