/* Layout: a baker's notebook. Inputs stacked on the left like a formula sheet, the live formula pinned on the right; one column on a phone. */
:root{
  --bg:#f6f4ee; --paper:#fffdf8; --ink:#1f2328; --ink-2:#5a5f66; --line:#dcd8cc;
  --accent:#1d4e89; --accent-ink:#ffffff; --tint:#e9eff7;
  --warn:#8a5a00; --warn-bg:#fbf1dc;
  --display:"Young Serif", Georgia, "Times New Roman", serif;
  --body:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#1b1d20; --paper:#24272b; --ink:#ece8df; --ink-2:#a7a39a; --line:#3a3e44;
  --accent:#8fb4e6; --accent-ink:#101820; --tint:#273340;
  --warn:#f0c268; --warn-bg:#3a3020; color-scheme:dark } }
:root[data-theme="dark"]{
  --bg:#1b1d20; --paper:#24272b; --ink:#ece8df; --ink-2:#a7a39a; --line:#3a3e44;
  --accent:#8fb4e6; --accent-ink:#101820; --tint:#273340;
  --warn:#f0c268; --warn-bg:#3a3020; color-scheme:dark }

*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.5;
  padding-block:20px 48px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1,h2,h3{font-family:var(--display);font-weight:400;margin:0;text-wrap:balance;line-height:1.15}
h1{font-size:1.9rem}
h2{font-size:1.15rem}
p{margin:0}
.muted{color:var(--ink-2)}
.wrap{max-width:1040px;margin:0 auto;display:grid;gap:20px}
header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px;border-bottom:1px solid var(--line);padding-bottom:12px}
header p{font-size:.9rem}
.cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:760px){.cols{grid-template-columns:1fr}}
.panel{display:grid;gap:18px;min-width:0}
section{display:grid;gap:10px}
section h2{display:flex;align-items:baseline;gap:8px}
.eyebrow{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.grid{display:grid;gap:10px 14px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:start}
.field{display:grid;gap:4px;min-width:0;align-content:start}
.field label{min-height:1.4em;display:flex;align-items:end}
.field label{font-size:.82rem;font-weight:500}
.field small{font-size:.75rem;color:var(--ink-2)}
input,select,button{font:inherit;color:inherit}
input[type=number],input[type=text],select{width:100%;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:var(--paper);height:40px;line-height:38px}
input[type=number]{font-family:var(--mono);font-variant-numeric:tabular-nums}
input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.seg{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--paper)}
.seg button{flex:1 1 auto;padding:8px 10px;border:0;background:transparent;cursor:pointer;font-size:.85rem;min-height:40px}
.seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.range{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.range input[type=range]{width:100%;accent-color:var(--accent)}
.range output{font-family:var(--mono);min-width:3.5ch;text-align:right;font-variant-numeric:tabular-nums}
.hint{font-size:.8rem;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.link{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-decoration:underline;font-size:.8rem}
.note{background:var(--warn-bg);color:var(--warn);border-radius:6px;padding:8px 10px;font-size:.82rem}
.note:empty{display:none}

.sheet{position:sticky;top:env(safe-area-inset-top,0px);background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:16px;display:grid;gap:14px;min-width:0}
@media (max-width:760px){.sheet{position:static}}
.total{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.total .big{font-family:var(--display);font-size:2.2rem;font-variant-numeric:tabular-nums}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
table{table-layout:fixed}
th,td{padding:7px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:baseline;overflow-wrap:anywhere}
th{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);font-weight:500}
th.n{width:5.5em}
th.n.g{width:7em}
td.n,th.n{text-align:right;font-family:var(--mono);white-space:nowrap}
td.n.g{font-weight:500}
td.n span.d{display:inline-block;width:1.6ch;text-align:left}
td.n span.dp{display:inline-block;width:2.6ch;text-align:left}
th.n.g{width:7em}
th.n.p{width:6.5em}
tr.sub td{color:var(--ink-2);font-size:.9rem}
tr.sub td:first-child{padding-left:16px}
tr.head td{font-weight:600;padding-top:12px;border-bottom:0}
tr.sum td{font-weight:600;border-top:2px solid var(--line);border-bottom:0}
.tempbox{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.tempbox .field input{min-height:36px}
.waterT{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.waterT b{font-family:var(--mono);font-size:1.4rem;font-weight:500}
.actions{display:flex;flex-wrap:wrap;gap:8px}
.btn{padding:8px 12px;border:1px solid var(--line);border-radius:6px;background:var(--paper);cursor:pointer;font-size:.85rem;min-height:40px}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.plan{display:grid;gap:4px;font-size:.88rem}
.plan li{margin:0}
.plan ol{margin:0;padding-left:20px;display:grid;gap:3px}
.saved{display:grid;gap:8px;border-top:1px solid var(--line);padding-top:12px}
.saverow{display:flex;gap:8px}
.saverow input{flex:1 1 auto;min-width:0}
.savedlist{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.savedlist li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px 10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.savedlist li:last-child{border-bottom:0}
.savedlist .nm{font-weight:500;overflow-wrap:anywhere}
.savedlist .meta{grid-column:1;font-size:.78rem;color:var(--ink-2);font-family:var(--mono)}
.savedlist .btn{min-height:32px;padding:4px 10px;font-size:.8rem;grid-row:1 / span 2}
.savedlist li.current .nm::after{content:" · loaded";color:var(--accent);font-weight:400;font-size:.8rem}
details{border-top:1px solid var(--line);padding-top:8px}
summary{cursor:pointer;font-weight:500;font-size:.9rem}
details .body{display:grid;gap:8px;font-size:.88rem;padding-top:8px;max-width:65ch}
@media (prefers-reduced-motion:no-preference){.seg button,.btn{transition:background .15s}}

/* resets the hosted page needs (the artifact host supplied these) */
html{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
body{margin:0}
img{max-width:100%}
[hidden]{display:none!important}

/* formerly inline style attributes; the CSP has no unsafe-inline */
.fat-note{font-size:.8rem;max-width:65ch}
.scroll-x{overflow-x:auto}
.copied{align-self:center;font-size:.85rem}
.saved-empty{font-size:.82rem}
