@font-face{font-family:"Playfair Display";src:url(/fonts/PlayfairDisplay.ttf) format("truetype");font-weight:400 900;font-style:normal;font-display:swap}
@font-face{font-family:"Playfair Display";src:url(/fonts/PlayfairDisplay-Italic.ttf) format("truetype");font-weight:400 900;font-style:italic;font-display:swap}
@font-face{font-family:Jost;src:url(/fonts/Jost.ttf) format("truetype");font-weight:100 900;font-display:swap}

:root{--cream:#ffefe1;--peach:#ffd0a4;--ink:#101010;--peach-soft:#FFE6CF;--peach-deep:#F5B985;--sand:#FFF8F1;--line:#F1DECB;--muted:#6B6058;--card:#fff;--r:20px;--sh:0 1px 2px rgba(16,16,16,.04),0 10px 30px rgba(120,70,30,.07);--mint:var(--peach-soft);--teal:var(--ink);--navy:var(--ink);--orange:var(--peach);--text:#2A2522}
*{box-sizing:border-box}html,body{margin:0}body{font-family:Jost,system-ui,sans-serif;font-weight:400;color:var(--text);background:var(--cream);font-size:14.5px;line-height:1.6}
h1,h2,h3{font-family:"Playfair Display",Georgia,serif;font-weight:500;color:var(--ink);letter-spacing:-.005em;margin:0}
b,strong{font-weight:500}a{color:var(--ink);text-underline-offset:3px}
.app{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
aside{background:#fff;border-right:1px solid var(--line);padding:28px 18px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}
.logo{padding:6px 12px 30px}.logo img{width:170px;display:block}.logo .studio{display:block;margin-top:8px;font-size:10.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--muted)}
.logo-mark{width:42px;height:42px;border-radius:12px;border:1.5px dashed #E5CDB6;display:grid;place-items:center;font-size:9px;color:var(--muted);text-align:center;line-height:1.1}
.logo-text{font-family:"Playfair Display",Georgia,serif;color:var(--navy);font-size:18px;line-height:1.1}.logo-text small{display:block;font-family:Jost;font-size:11px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin-top:3px}
nav a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:12px;color:var(--text);text-decoration:none;font-weight:400;margin-bottom:2px;transition:.15s}
nav a svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6;flex:none}
nav a:hover{background:var(--sand)}nav a.on{background:var(--cream);color:var(--ink);font-weight:500;box-shadow:inset 2px 0 0 var(--ink)}
.side-foot{margin-top:auto;padding:14px;border-radius:14px;background:var(--cream);font-size:12px;color:var(--muted)}
main{padding:40px 56px 120px;max-width:1240px;width:100%;min-width:0}
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:32px}
.eyebrow{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-bottom:6px}
.top h1{font-size:34px}.sub{color:var(--muted);margin-top:6px}
.sample{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:500;color:#5A3A1E;background:var(--peach-soft);border:1px solid #F2C9A3;padding:4px 10px;border-radius:99px;white-space:nowrap}
.sample:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--orange)}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:26px 28px;margin-bottom:22px}
.card h3{font-size:19px;margin-bottom:4px}.card .hint{color:var(--muted);font-size:13px;margin:0 0 16px}
.grid{display:grid;gap:22px}.grid>*{min-width:0}.g4{grid-template-columns:repeat(4,1fr)}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}
.task{background:#fff;border-radius:var(--r);box-shadow:var(--sh);padding:22px;display:flex;flex-direction:column;gap:10px;text-decoration:none;color:inherit;transition:.2s}
.task:hover{transform:translateY(-2px)}.task .ic{width:40px;height:40px;border-radius:12px;background:var(--mint);display:grid;place-items:center;color:var(--teal)}
.task .ic svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6}.task .n{font-family:"Playfair Display",Georgia,serif;font-size:30px;color:var(--navy);line-height:1}
.task .l{font-weight:500;color:var(--navy)}.task .s{font-size:12.5px;color:var(--muted)}
.hero{background:var(--peach);color:var(--ink);border-radius:24px;padding:34px 38px;display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:26px;box-shadow:var(--sh)}
.hero h1{color:var(--ink);font-size:40px}.hero p{opacity:.8;margin:8px 0 0;max-width:520px}.hero .wk{background:rgba(255,255,255,.55);border-radius:16px;padding:16px 20px;font-size:13px;text-align:right}.hero .wk b{display:block;font-family:"Playfair Display",Georgia,serif;font-size:20px;font-weight:500}
.btn{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:99px;padding:10px 20px;font:500 13.5px Jost,sans-serif;cursor:pointer;background:var(--peach);color:var(--ink);transition:.15s;text-decoration:none}
.btn:hover{background:var(--peach-deep)}.btn.ghost{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px #E8CDB3}.btn.ghost:hover{background:var(--sand)}.btn.orange{background:var(--ink);color:#ffefe1}.btn.orange:hover{background:#2b2b2b}.btn:disabled{opacity:.4;cursor:not-allowed}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
table{width:100%;border-collapse:separate;border-spacing:0}th{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:500;text-align:left;padding:0 14px 12px;border-bottom:1px solid var(--line)}
td{white-space:normal;padding:14px;border-bottom:1px solid #F6E9DC;vertical-align:middle}tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--sand)}
.price{font-weight:500;color:var(--navy)}.was{color:var(--muted);text-decoration:line-through}.save{color:var(--ink);font-weight:500}
.store{font-size:12px;padding:3px 10px;border-radius:99px;font-weight:500;white-space:nowrap;display:inline-flex;align-items:center}.store{background:#fff;box-shadow:inset 0 0 0 1px #E8CDB3;color:var(--ink)}.store:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px;vertical-align:1px}.store.W:before{background:var(--ink)}.store.C{background:var(--peach-soft);box-shadow:none}.store.C:before{background:var(--peach-deep)}
.pill{display:inline-block;font-size:11.5px;font-weight:500;padding:4px 11px;border-radius:99px;margin:0 6px 6px 0;background:var(--mint);color:var(--ink)}
.pill.o{background:var(--peach-soft);color:#5A3A1E}.pill.n{background:#F4EEE8;color:var(--navy)}.pill.g{background:#F4EEE8;color:#5E5650}
.thumb{width:56px;height:72px;border-radius:8px;background:repeating-linear-gradient(45deg,#ffefe1,#ffefe1 6px,#FBE3CD 6px,#FBE3CD 12px);display:grid;place-items:center;font-size:9.5px;color:var(--muted);text-align:center}
.ed{border:1px solid transparent;border-radius:8px;padding:5px 8px;outline:0}.ed:hover,.ed:focus{border-color:var(--line);background:#fff}
.lo td{background:#FFF5EA}.conf{font-size:12px;font-weight:500}.conf.hi{color:var(--ink)}.conf.mid{color:#8A4B12}
.check{appearance:none;width:22px;height:22px;border-radius:7px;border:1.5px solid #D9C6B4;cursor:pointer;display:grid;place-items:center;transition:.15s;margin:0}
.check:checked{background:var(--ink);border-color:var(--ink)}.check:checked:after{content:"";width:6px;height:11px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}
.drop{border:1.5px dashed #E9BF97;background:var(--mint);border-radius:var(--r);padding:38px;text-align:center}
.drop .ic svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.6}.drop .ic{width:56px;height:56px;margin:0 auto 12px;border-radius:16px;background:#fff;display:grid;place-items:center;color:var(--teal);box-shadow:var(--sh)}
.steps{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:18px}.steps span{font-size:12px;background:#fff;padding:5px 12px;border-radius:99px;color:var(--navy)}
input[type=text],input[type=password],textarea,select{width:100%;font:300 14px Jost,sans-serif;color:var(--text);border:1px solid var(--line);background:var(--sand);border-radius:12px;padding:12px 14px;outline:0}
input[type=text]:focus,input[type=password]:focus,textarea:focus{border-color:var(--teal);background:#fff}label.f{display:block;font-size:12px;font-weight:500;color:var(--navy);margin:14px 0 6px}
.recipe{padding:0;overflow:hidden}.recipe .img{height:130px;background:linear-gradient(135deg,var(--cream),var(--peach-soft));display:grid;place-items:center;color:#B88E6A;font-size:12px}
.recipe .body{padding:20px 22px}.recipe h3{font-size:18px;margin-bottom:8px}.meta{font-size:12.5px;color:var(--muted);margin:6px 0 14px}
.status{font-size:11.5px;font-weight:500;padding:4px 10px;border-radius:99px}.status.d{background:#F4EEE8;color:#5E5650}.status.r{background:var(--peach-soft);color:#5A3A1E}.status.a{background:var(--ink);color:#ffefe1}
.art{display:flex;gap:16px;padding:18px 0;border-bottom:1px solid #F6E9DC}.art:last-child{border-bottom:0}.art h4{margin:0 0 4px;font-weight:500;color:var(--navy);font-size:14.5px;line-height:1.45}
.art .src{font-size:12px;color:var(--muted)}.art .sum{font-size:13px;color:var(--muted);font-style:italic;margin-top:8px;background:var(--sand);border-radius:10px;padding:10px 12px}
.counter{font-family:"Playfair Display",Georgia,serif;font-size:22px;color:var(--navy)}.counter small{font-family:Jost;font-size:12px;color:var(--muted)}
.email{background:var(--cream);border-radius:var(--r);padding:26px}.email .paper{background:#fff;max-width:560px;margin:0 auto;border-radius:14px;overflow:hidden;box-shadow:var(--sh)}
.email .mast{background:var(--cream);color:var(--ink);padding:26px 30px;text-align:center;border-bottom:1px solid var(--line)}.email .mast img{width:150px;margin:0 auto 14px;display:block}.email .mast h2{color:var(--ink);font-size:24px;font-style:italic}.email .mast p{margin:4px 0 0;opacity:.8;font-size:12.5px}
.email .in{padding:24px 30px}.email h4{font-family:"Playfair Display",Georgia,serif;font-weight:500;color:var(--navy);font-size:16px;margin:18px 0 4px}.email .foot{padding:16px 30px;background:var(--sand);font-size:11px;color:var(--muted)}
.lock{display:flex;gap:10px;align-items:center;font-size:12.5px;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;background:#D9C6B4}.dot.ok{background:var(--teal)}
.prog{height:6px;border-radius:9px;background:#F6E6D6;overflow:hidden}.prog i{display:block;height:100%;background:var(--teal);border-radius:9px}
.list li{margin-bottom:8px}.muted{color:var(--muted)}.sec{display:none}.sec.on{display:block;animation:f .25s}@keyframes f{from{opacity:0;transform:translateY(4px)}}
.ebook{padding:0;overflow:hidden}.ebook .cov .cl{width:92px;margin-bottom:auto}.ebook .cov .ct{font:500 10.5px Jost;letter-spacing:.22em;margin-top:8px;color:var(--muted)}.ebook .cov{height:240px;display:flex;flex-direction:column;justify-content:flex-end;padding:22px;color:var(--ink);font-family:"Playfair Display",Georgia,serif;font-size:21px;line-height:1.2}
.ebook .body{padding:18px 22px}.tablewrap{overflow-x:auto}
.mbar{display:none}
@media(max-width:1100px){.g4{grid-template-columns:1fr 1fr}.g3{grid-template-columns:1fr 1fr}main{padding:32px}}
@media(max-width:820px){.hero h1{font-size:30px}.fab{padding:14px}.fab span{display:none}
.g2,.g3,.g4{grid-template-columns:1fr}main{padding:22px}.hero{flex-direction:column;align-items:flex-start}.top{flex-direction:column}}
.fab{position:fixed;right:24px;bottom:24px;z-index:40;border:0;border-radius:99px;padding:14px 20px;background:var(--ink);color:#ffefe1;font:500 14px Jost;box-shadow:0 10px 30px rgba(16,16,16,.12);cursor:pointer;display:flex;gap:10px;align-items:center}
.fab i{width:8px;height:8px;border-radius:50%;background:var(--peach);box-shadow:0 0 0 4px rgba(255,208,164,.3)}
.helper{position:fixed;top:0;bottom:0;height:100%;right:0;width:420px;max-width:100vw;background:var(--sand);box-shadow:-12px 0 40px rgba(16,16,16,.12);transform:translateX(105%);transition:transform .3s ease;z-index:50;display:flex;flex-direction:column}
.helper.open{transform:none}body.hopen .fab{display:none}body.hopen main{filter:saturate(.9) brightness(.97)}.hh{padding:22px 24px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start}
.hh h3{font-size:20px}.hh p{margin:2px 0 0;font-size:12px;color:var(--muted)}.x{border:0;background:var(--mint);width:32px;height:32px;border-radius:10px;cursor:pointer;color:var(--navy);font-size:16px}
.msgs{flex:1;overflow-y:auto;padding:20px 22px;display:flex;flex-direction:column;gap:14px}
.m{max-width:88%;padding:11px 15px;border-radius:16px;font-size:13.5px;line-height:1.55}.m.u{align-self:flex-end;background:var(--ink);color:#ffefe1;border-bottom-right-radius:5px}.m.a{background:#fff;box-shadow:var(--sh);border-bottom-left-radius:5px}
.prop{background:#fff;border-radius:16px;box-shadow:var(--sh);padding:16px;font-size:13px}.prop .t{font-weight:500;color:var(--navy);margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}
.diff div{padding:6px 10px;border-radius:8px;margin-bottom:4px;font-size:12.5px}.del{background:#F4EEE8;color:#7A716A;text-decoration:line-through}.add{background:var(--peach-soft);color:var(--ink)}
.prop .row{margin-top:12px}.prop .btn{padding:7px 14px;font-size:12.5px}
.chips{display:flex;gap:6px;flex-wrap:wrap;padding:12px 22px 10px;border-top:1px solid var(--line)}.chips span{font-size:11.5px;background:var(--mint);color:var(--ink);padding:5px 10px;border-radius:99px;cursor:pointer}
.comp{padding:14px 22px 20px;border-top:1px solid var(--line);display:flex;gap:8px}.comp input{flex:1;border-radius:99px!important}
.hnote{font-size:11px;color:var(--muted);text-align:center;padding:0 22px 6px}

/* ---- app additions ---- */
.hidden{display:none!important}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--ink);color:#ffefe1;padding:12px 20px;border-radius:99px;font-size:13.5px;z-index:90;box-shadow:var(--sh);max-width:90vw;opacity:1;transition:opacity .4s ease,transform .4s ease;pointer-events:none}
.toast.out{opacity:0;transform:translateX(-50%) translateY(8px)}
.toast.err{background:#7a2e1a}
.auth{min-height:100vh;display:grid;place-items:center;padding:24px}.auth .card{width:100%;max-width:420px;text-align:center}.auth img{width:220px;margin:6px auto 18px;display:block}
.auth label.f{text-align:left}
.empty{text-align:center;padding:34px 20px;color:var(--muted)}.empty h3{margin-bottom:6px}
.mode{font-size:11px;font-weight:500;padding:3px 9px;border-radius:99px;background:#F4EEE8;color:#5E5650;margin-left:6px}.mode.live{background:var(--ink);color:#ffefe1}
.side-modes{display:flex;flex-direction:column;gap:6px}.side-modes div{display:flex;justify-content:space-between}
.ed{min-width:40px;display:inline-block}td .ed{display:block}
.thumbimg{width:56px;height:72px;object-fit:cover;border-radius:8px;box-shadow:inset 0 0 0 1px var(--line);cursor:zoom-in;background:#fff}
.zoom{position:fixed;inset:0;background:rgba(16,16,16,.55);display:grid;place-items:center;z-index:80;padding:30px}.zoom img{max-width:95vw;max-height:92vh;border-radius:12px;background:#fff}
.small{font-size:12.5px}.right{text-align:right}.mt{margin-top:14px}.mb0{margin-bottom:0}
.iframe{width:100%;height:720px;border:0;border-radius:14px;background:#ffefe1}
.list-plain{list-style:none;padding:0;margin:0}.list-plain li{padding:10px 0;border-bottom:1px solid #F6E9DC}
textarea{min-height:90px;resize:vertical}
.tagpick .pill{cursor:pointer;user-select:none;background:#F4EEE8;color:#5E5650}.tagpick .pill.on{background:var(--ink);color:#ffefe1}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(360deg)}}
.recipe .body ol,.recipe .body ul{padding-left:18px;margin:6px 0 12px;font-size:13px}
.warnbox{background:#FFF5EA;border:1px solid #F2C9A3;border-radius:14px;padding:12px 16px;font-size:13px;color:#5A3A1E;margin-bottom:18px}
.audit td{font-size:12.5px}

/* ---------- v2 ---------- */
/* 1. Selects: own chevron, room for it, vertically centred (all selects) */
select{appearance:none;-webkit-appearance:none;-moz-appearance:none;line-height:1.3;height:auto;padding:11px 42px 11px 14px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23101010' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;background-size:12px 8px}
select:focus{border-color:var(--ink);background-color:#fff}select::-ms-expand{display:none}
select.pillsel{width:auto;border-radius:99px;padding:9px 40px 9px 16px;background-color:#fff;font-weight:400}
select.mini{width:auto;padding:5px 30px 5px 10px;font-size:12.5px;border-radius:99px;background-position:right 11px center;background-color:#fff}
input[type=search]{width:100%;font:300 14px Jost,sans-serif;border:1px solid var(--line);background:var(--sand);border-radius:99px;padding:9px 16px;outline:0}
input[type=search]:focus{border-color:var(--ink);background:#fff}

/* 2. Loading card */
.loadcard{display:flex;gap:22px;align-items:center;background:#fff;border-radius:18px;padding:22px 24px;margin-top:18px;box-shadow:inset 0 0 0 1px var(--line);text-align:left}
.pulse{flex:none;width:64px;height:64px;border-radius:50%;background:var(--peach);display:grid;place-items:center;position:relative;animation:breathe 1.8s ease-in-out infinite}
.pulse:after{content:"";position:absolute;inset:-8px;border-radius:50%;border:2px solid var(--peach);opacity:.6;animation:ring 1.8s ease-out infinite}
.pulse img{width:38px;height:38px;object-fit:contain}.pulse i{width:14px;height:14px;border-radius:50%;background:var(--ink)}
@keyframes breathe{50%{transform:scale(1.07)}}@keyframes ring{from{transform:scale(.85);opacity:.7}to{transform:scale(1.25);opacity:0}}
.loadcard h4{margin:0;font:500 18px "Playfair Display",Georgia,serif;color:var(--ink)}.loadcard .eta{font-weight:500;color:var(--ink)}
.bar{height:10px;border-radius:99px;background:var(--cream);overflow:hidden;margin:10px 0 6px}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--peach-deep),var(--peach));border-radius:99px;transition:width .4s}
.bar.indet i{width:35%!important;animation:slide 1.3s ease-in-out infinite}@keyframes slide{from{transform:translateX(-100%)}to{transform:translateX(300%)}}
.steps span{transition:.2s;box-shadow:inset 0 0 0 1px transparent}.steps span.on{background:var(--ink);color:#ffefe1}.steps span.done{background:var(--peach);color:var(--ink)}
.drop.busy{opacity:.92}.drop.busy .btn,.drop.busy select{pointer-events:none;opacity:.45}

/* 4 & 7. Review / specials filters */
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 16px}.filters .search{flex:1 1 220px;max-width:320px}
.chip{display:inline-flex;align-items:center;gap:6px;font:400 12.5px Jost,sans-serif;padding:6px 13px;border-radius:99px;background:#fff;box-shadow:inset 0 0 0 1px #E8CDB3;cursor:pointer;color:var(--ink);user-select:none;border:0}
.chip b{font-weight:500;font-size:11px;color:var(--muted)}.chip.on{background:var(--ink);color:#ffefe1;box-shadow:none}.chip.on b{color:var(--peach)}
.chip.warn{background:#FFF1E2;box-shadow:inset 0 0 0 1px #F2C9A3}.chip.warn.on{background:#8A4B12;color:#fff}
.toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;user-select:none}.toggle input{display:none}
.toggle i{width:34px;height:20px;border-radius:99px;background:#E8DCD0;position:relative;transition:.2s}.toggle i:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.2s}
.toggle input:checked+i{background:var(--ink)}.toggle input:checked+i:after{left:17px}
.validbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:13px;color:var(--muted);margin-bottom:12px}.validbar b{color:var(--ink)}
.bulk{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:10px 14px;background:var(--sand);border-radius:14px;margin-bottom:12px;font-size:13px}
details.hidden-group{margin-top:16px;border-radius:14px;background:#FAF6F2;padding:4px 14px}details.hidden-group summary{cursor:pointer;padding:10px 0;font-weight:500;color:var(--muted)}
details.hidden-group td{opacity:.75}
td.nw{white-space:nowrap}
.conf.lo{color:#B4441C}

/* 8. AI banner */
.aibanner{margin:0 0 14px;padding:12px 14px;border-radius:14px;background:#FFF1E2;border:1px solid #F2C9A3;font-size:12.5px;color:#5A3A1E;line-height:1.45}
.aibanner b{display:block;color:var(--ink);margin-bottom:2px}.aibanner a{font-weight:500}

/* 5. TCL */
.tcl{margin-top:12px;padding:12px 14px;border-radius:14px;background:var(--cream);font-size:13px}.tcl ol{margin:6px 0 0 18px;padding:0}.tcl code{font-size:11.5px;word-break:break-all}

/* Settings */
.keygrid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.keygrid .full{grid-column:1/-1}
.danger{background:#fff;color:#9B2C1A;box-shadow:inset 0 0 0 1px #E9B4A8}.danger:hover{background:#FDECE8}
.onboard{background:var(--peach);border-radius:22px;padding:26px 30px;margin-bottom:22px}.onboard h3{font-size:22px}
.srcdate{font-weight:500;color:var(--ink)}

/* panel colours */
[data-panel]{position:relative}
[data-pc] .muted,[data-pc] .hint,[data-pc] .sub,[data-pc] .eyebrow,[data-pc] h1,[data-pc] h2,[data-pc] h3,[data-pc] p,[data-pc] .small{color:inherit!important}
[data-pc] .muted,[data-pc] .hint,[data-pc] .sub{opacity:.82}
[data-pc=dark] a{color:#ffefe1}
.pal-menu{position:fixed;z-index:9999;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 40px rgba(16,16,16,.18);padding:12px;width:236px;font-family:Jost,sans-serif;color:#101010}
.pal-t{font-family:'Playfair Display',serif;font-size:15px;margin:0 0 8px}
.pal-sw{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.pal-sw button{height:40px;border-radius:12px;border:1px solid rgba(16,16,16,.12);cursor:pointer;position:relative;padding:0}
.pal-sw button span{position:absolute;inset:auto 0 -15px;font-size:9.5px;color:#6B6058;white-space:nowrap;text-align:center}
.pal-sw{row-gap:20px;padding-bottom:6px}
.pal-sw button.on{outline:2px solid #101010;outline-offset:2px}
.pal-r{display:block;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);padding:8px 2px;font:inherit;font-size:13px;cursor:pointer;color:#101010}
.pal-r:hover{color:#b46c30}

/* ---------- v3: layout audit (8px spacing scale: 8/12/16/24/32/40) ---------- */
html,body{overscroll-behavior:none;background:var(--cream)}
/* sidebar background runs the full height even when the page is long */
.app{grid-template-columns:260px minmax(0,1fr);background:linear-gradient(90deg,#fff 0,#fff 259px,var(--line) 259px,var(--line) 260px,var(--cream) 260px)}
aside{border-right:0;overflow-y:auto;overscroll-behavior:contain}
nav a span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
main{padding:40px 48px 120px;max-width:1440px;margin:0 auto}
.top{align-items:flex-end;margin-bottom:32px}.top>.row{flex:none;padding-bottom:2px}.top>div:first-child{min-width:0}
.top h1{line-height:1.15}
/* the colour button never covers controls: header button sits in the gap above the header, card buttons in the padding */
/* one button size scale */
.btn{height:40px;padding:0 20px;line-height:1;white-space:nowrap;justify-content:center;flex:none}
.btn.small{height:32px;padding:0 14px;font-size:12.5px}
.btn.icon{width:32px;padding:0}
label.btn{cursor:pointer}
.prop .btn{height:32px;padding:0 14px}
.fab{height:48px;padding:0 20px}
/* filter rows: every control 36px tall and centred */
.filters .search,.filters select.mini{height:36px}.filters select.mini{padding-top:0;padding-bottom:0}
.chip{min-height:32px}
.grow{flex:1 1 auto}.nw{white-space:nowrap}.mt8{margin-top:8px}.pre{white-space:pre-line}
.ell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cardhead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding-right:12px}
.cardhead h3{margin-bottom:6px}
.sectionhead{display:flex;align-items:baseline;justify-content:space-between;margin:8px 0 12px}.sectionhead h3{font-size:20px}
/* research two-column split; stacks on narrow windows */
.split{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px;align-items:start}
.split>.card{margin-bottom:24px}
.art .art-b{flex:1;min-width:0}.art h4{overflow-wrap:anywhere}.art .sum.edited{font-style:normal;white-space:pre-line}
.nlcard .iframe{height:640px}
.tmpl{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.greets{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.chip-x{border:0;background:none;color:inherit;opacity:.55;font-size:15px;line-height:1;padding:0 0 0 2px;cursor:pointer}.chip-x:hover{opacity:1}
textarea.short{min-height:64px}
table.fixed{table-layout:fixed}
table.best td{padding:12px 8px}table.best td:first-child{padding-left:0}table.best td:last-child{padding-right:0;text-align:right}
/* catalogue upload notice */
.wwnote{max-width:640px;margin:16px auto 0;font-size:12.5px;color:var(--muted);background:rgba(255,255,255,.6);border-radius:12px;padding:10px 14px;text-align:left;line-height:1.5}
.wwnote b{color:var(--ink)}.wwnote.warn{background:#FFF5EA;border:1px solid #F2C9A3;color:#5A3A1E}.wwnote.hl{outline:2px solid var(--ink);outline-offset:2px}
.list-plain li{overflow-wrap:anywhere}
/* recipes */
.starts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}
.start{display:flex;gap:14px;align-items:flex-start;text-align:left;border:0;background:#fff;border-radius:16px;padding:18px;box-shadow:var(--sh);cursor:pointer;font:inherit;color:inherit;transition:.15s}
.start:hover{transform:translateY(-2px);box-shadow:0 1px 2px rgba(16,16,16,.04),0 14px 34px rgba(120,70,30,.12)}
.start .ic{flex:none;width:40px;height:40px;border-radius:12px;background:var(--mint);display:grid;place-items:center}
.start .ic svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6}.start .tx{display:flex;flex-direction:column;gap:4px;min-width:0}
.start b{color:var(--ink)}.start .tx span{font-size:12.5px;color:var(--muted);line-height:1.45}
.starts.compact .start{align-items:center;padding:14px 16px}
.emptystart{text-align:left}.emptystart .starts{margin:8px 0 0}.emptystart .start{box-shadow:inset 0 0 0 1px var(--line);background:var(--sand)}
.grid.recipes{align-items:stretch}
.recipe .body{display:flex;flex-direction:column;height:100%;gap:8px}
.recipe h3{margin:4px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.recipe .meta{margin:0}.rmeta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-right:16px}
.recipe .tags .pill{margin-bottom:0}.recipe .body ul{margin:4px 0}
.recipe .actions{margin-top:auto;padding-top:12px;display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid #F6E9DC}
.nline{font-size:12.5px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.nline .pill{margin:0}
.tcl summary{cursor:pointer}
.editor-wrap{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;align-items:start}
@media(min-width:1360px){.editor-wrap{grid-template-columns:minmax(0,1fr) 340px}.preview{position:sticky;top:24px;max-height:calc(100vh - 48px);overflow-y:auto}}
.editor{margin-bottom:0}.ed-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:0 32px}
.ed-col label.f:first-child{margin-top:0}.ed-col textarea#ei{min-height:220px}.ed-col textarea#em{min-height:280px}
input.narrow{max-width:160px}
.ed-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:24px;padding-top:16px;border-top:1px solid #F6E9DC}
.preview{margin-bottom:0}.preview h4{font:500 15px "Playfair Display",Georgia,serif;margin:16px 0 6px;color:var(--ink)}.preview ul,.preview ol{padding-left:18px;margin:0;font-size:13px}.preview li{margin-bottom:4px}
.nutri{margin-top:14px;padding:12px 14px;border-radius:12px;background:var(--sand);font-size:12.5px}.nutri-h{display:flex;justify-content:space-between;align-items:center;gap:8px}.nutri-h .pill{margin:0}
.nutri table td{padding:4px 0;border-bottom:1px solid #F1E3D5;font-size:12.5px}.nutri tbody tr:hover td{background:none}
/* photo upload */
.drop.compact{padding:20px;display:flex;gap:16px;align-items:center;justify-content:center;flex-wrap:wrap}.drop.over{border-color:var(--ink)}
.pthumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:12px;margin-top:16px}
.pth{position:relative;background:#fff;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line);padding:6px;min-width:0}
.pth img,.pth .heic{width:100%;height:120px;object-fit:cover;border-radius:8px;display:grid;place-items:center;background:var(--sand);font-size:11px;color:var(--muted)}
.pth .num{position:absolute;top:10px;left:10px;background:var(--ink);color:#ffefe1;border-radius:99px;font-size:11px;padding:1px 8px;z-index:1}
.pth-name{font-size:11px;color:var(--muted);margin:4px 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pth-act{display:flex;gap:4px;justify-content:space-between}.pth-act .x{width:28px;height:28px;font-size:14px}.pth-act .x:disabled{opacity:.35;cursor:default}
/* modal */
body.modal-open{overflow:hidden}
.modal-bg{position:fixed;inset:0;background:rgba(16,16,16,.42);display:grid;place-items:center;padding:24px;z-index:70;overscroll-behavior:contain}
.modal{position:relative;background:#fff;border-radius:20px;box-shadow:0 20px 60px rgba(16,16,16,.25);padding:28px;width:100%;max-width:520px;max-height:calc(100vh - 48px);overflow-y:auto}
.modal.wide{max-width:760px}.modal h3{font-size:22px;padding-right:40px;margin-bottom:8px}.modal-x{position:absolute;top:16px;right:16px}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}
.modal .iframe.short{height:420px}
dl.facts{display:grid;grid-template-columns:120px 1fr;gap:6px 16px;font-size:13px;margin:12px 0}dl.facts dt{color:var(--muted)}dl.facts dd{margin:0}
/* helper drawer */
.helper{width:min(420px,100vw)}
@media(min-width:1500px){body.hopen main{margin-right:420px}}
.prop.nutr{padding:12px}.prop.nutr .nutri{margin:0;background:none;padding:0}
.aibanner .btn{background:#fff}
/* settings key grid / usage tiles align */
.grid.g4 .task{height:100%}
@media(max-width:1180px){.split{grid-template-columns:minmax(0,1fr)}.starts{grid-template-columns:repeat(2,minmax(0,1fr))}.ed-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:1100px){.app{grid-template-columns:236px minmax(0,1fr);background:linear-gradient(90deg,#fff 0,#fff 235px,var(--line) 235px,var(--line) 236px,var(--cream) 236px)}aside{padding:24px 12px}nav a{padding:10px 12px;gap:10px;font-size:13.5px}main{padding:32px 32px 120px}.logo img{width:150px}.g2{grid-template-columns:minmax(0,1fr)}.hero h1{font-size:34px}}
@media(max-width:820px){.app{grid-template-columns:minmax(0,1fr);background:var(--cream)}.starts{grid-template-columns:minmax(0,1fr)}main{padding:22px 22px 120px}}
.more{text-align:center;padding-top:16px}
.split>.col{min-width:0}.split>.col>.card:last-child,.split>.card{margin-bottom:24px}
.sentlist{list-style:none;margin:12px 0 0;padding:0}.sentlist li{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid #F6E9DC}.sentlist li:last-child{border-bottom:0}.sl-b{flex:1;min-width:0}
.filters .search{flex:1 1 150px}
.steps span{display:inline-flex;align-items:center;gap:4px}.steps .mode{margin-left:2px}
.totop{position:fixed;right:24px;bottom:84px;z-index:45;width:44px;height:44px;border:0;border-radius:99px;background:var(--ink);color:#ffefe1;font:500 20px Jost;box-shadow:0 10px 30px rgba(16,16,16,.15);cursor:pointer;display:grid;place-items:center;opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .2s,transform .2s}
.totop.show{opacity:1;pointer-events:auto;transform:none}.totop:hover{background:#2a2a2a}
body.modal-open .totop{display:none}
/* v3.4 Overheads table */
.ohcard h2{font-family:ui-monospace,Menlo,monospace;font-size:28px;margin:4px 0}
.ohi{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;border:1px solid var(--muted);font-size:9.5px;letter-spacing:0;text-transform:none;cursor:help;margin-left:4px;vertical-align:1px}
.ohsaved{display:inline-block;margin-top:4px;font-size:12px;padding:4px 12px;border-radius:99px;background:#fff;box-shadow:inset 0 0 0 1px #E8CDB3;color:var(--muted)}
.ohtab td{padding:6px 8px}.ohtab th{padding:0 8px 10px}
.ohtab .ohin{width:100%;border:1px solid var(--line);background:var(--sand);border-radius:8px;padding:7px 10px;font:inherit}
.ohtab .ohin:focus{outline:2px solid var(--peach-deep);background:#fff}.ohtab .ohin.num{text-align:right}
.ohtab .ohpy{text-align:right;font-family:ui-monospace,Menlo,monospace;white-space:nowrap}
.ohtab tr.ohmore td{background:var(--sand)}.ohtab tr.ohmore label{display:flex;gap:6px;align-items:center}
.ohch input{width:44px;border:1px solid var(--line);border-radius:6px;padding:2px 4px;text-align:center;font:inherit;background:var(--sand)}
.ohfoot{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.ohcats{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.ohcats b{color:var(--ink);font-family:ui-monospace,Menlo,monospace}
/* ---- v4.0 ---- */
.okbox{padding:12px 14px;border-radius:12px;background:#EEF4EE;border:1px solid #C9D8C9;font-size:13px;line-height:1.5}
.stopbox{padding:12px 14px;border-radius:12px;background:#FDECEC;border:1px solid #F0B8B8;color:#5A1E1E;font-size:13px;line-height:1.5;margin:8px 0}
.stopbox b{display:block;margin-bottom:2px}.m.stopmsg{background:#FDECEC;color:#5A1E1E}
.warn{color:#9A4A12}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.codes{background:#FFF7EF;padding:12px;border-radius:10px;font-size:14px;line-height:1.7}
.chk{display:flex;gap:8px;align-items:flex-start;font-size:13px;margin:6px 0;cursor:pointer}.chk.inline{display:inline-flex;margin:4px 12px 4px 0}.chk input{width:auto;margin-top:2px}
.chips2{display:flex;flex-wrap:wrap}
.tabs{display:flex;gap:6px;margin:0 0 16px;flex-wrap:wrap}.tabs a{padding:8px 16px;border-radius:999px;background:#fff;box-shadow:var(--sh);text-decoration:none;color:inherit;font-size:13.5px}.tabs a.on{background:var(--navy,#101010);color:#fff}
.atts{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.att{background:#FFF1E2;border-radius:999px;padding:4px 10px;font-size:12px}.att button{border:0;background:none;cursor:pointer;padding:0 0 0 4px}
.comp label.btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
.msgs.big{max-height:60vh;min-height:240px;overflow:auto;display:flex;flex-direction:column;gap:10px}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}.mcard{background:#fff;border-radius:14px;box-shadow:var(--sh);padding:10px;display:flex;flex-direction:column;gap:8px}
.mcard img{width:100%;height:130px;object-fit:cover;border-radius:10px}.mic{height:130px;display:grid;place-items:center;background:#FFF7EF;border-radius:10px}.mic svg{width:40px;height:40px;fill:none;stroke:#b46c30;stroke-width:1.5}
.drop.over{outline:2px dashed #b46c30}
.filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 18px}.rng input[type=number]{width:80px}
.planbox{border-top:1px solid #eee;padding:14px 0}.plan th{width:90px;vertical-align:top;text-align:left}.meal{padding:4px 0}.meal.bad{background:#FDECEC;border-radius:8px;padding:6px}.meal select{margin-left:6px}
.sw{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:middle;border:1px solid #ddd}
details.menu{position:relative;display:inline-block}details.menu summary{list-style:none;cursor:pointer}details.menu summary::-webkit-details-marker{display:none}
.menu-list{position:absolute;right:0;z-index:20;background:#fff;box-shadow:0 8px 30px rgba(0,0,0,.15);border-radius:12px;padding:6px;min-width:240px;display:flex;flex-direction:column}
.menu-list button{border:0;background:none;text-align:left;padding:9px 12px;border-radius:8px;cursor:pointer;font:inherit;font-size:13px}.menu-list button:hover{background:#FFF1E2}.menu-list .danger{color:#A12A2A}
.list-plain li.on{background:#FFF7EF;border-radius:8px}
.cportal{min-height:100vh;background:var(--cream,#FFEFE1)}.chead{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;background:#fff}.cmain{max-width:900px;margin:0 auto;padding:24px 16px}
@media (max-width:700px){.filters{grid-template-columns:1fr}.plan th{width:60px}}


/* ============ v4.1 – one clean layer ============ */
:root{--f-h:42px;--f-r:12px;--f-b:#E8D3BF;--f-focus:0 0 0 3px rgba(245,185,133,.35)}
body.soft{--r:28px;--f-r:16px}
/* Forms: one style for every field */
input:not([type]),input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],input[type=url],input[type=tel],input[type=date],input[type=time],input[type=datetime-local],input[type=month],select,textarea{
  font:400 14.5px Jost,system-ui,sans-serif;color:var(--ink);background:#fff;border:1px solid var(--f-b);border-radius:var(--f-r);height:var(--f-h);padding:0 14px;width:100%;max-width:100%;transition:border-color .15s,box-shadow .15s;-webkit-appearance:none;appearance:none;box-shadow:none;margin:0}
textarea{height:auto;min-height:96px;padding:11px 14px;line-height:1.5;resize:vertical}
input::placeholder,textarea::placeholder{color:#B5A597}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--peach-deep);box-shadow:var(--f-focus)}
input:disabled,select:disabled,textarea:disabled{background:var(--sand);color:var(--muted)}
input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
select{padding-right:38px;cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23101010' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 14px center}
select.mini{height:34px;width:auto;font-size:13px;padding-left:12px}
input[type=checkbox],input[type=radio]{-webkit-appearance:none;appearance:none;width:18px;height:18px;margin:0;flex:none;border:1.5px solid #D9BFA7;background:#fff;border-radius:6px;display:inline-grid;place-content:center;cursor:pointer;vertical-align:middle;transition:.15s}
input[type=radio]{border-radius:50%}
input[type=checkbox]:checked{background:var(--ink);border-color:var(--ink)}
input[type=checkbox]:checked::after{content:"";width:9px;height:5px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}
input[type=radio]:checked{border-color:var(--ink);box-shadow:inset 0 0 0 4px #fff;background:var(--ink)}
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{box-shadow:var(--f-focus)}
input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.45;cursor:not-allowed}
input[type=file]:not([hidden]){font:inherit;font-size:13px}
input[type=file]::file-selector-button{font:500 13px Jost;border:0;border-radius:99px;padding:8px 16px;background:var(--peach);margin-right:10px;cursor:pointer}
input[type=color]{width:42px;height:42px;padding:3px;border:1px solid var(--f-b);border-radius:12px;background:#fff}
label.f,.f{display:block;font-size:12.5px;font-weight:500;color:var(--ink);margin:14px 0 6px}
form>label.f:first-child,.card>label.f:first-child{margin-top:0}
.chk{display:flex;align-items:center;gap:10px;margin:10px 0;font-size:14px;cursor:pointer}
.chk.inline{display:inline-flex;margin:4px 14px 4px 0}
.chk.solo{display:inline-flex;margin:0;justify-content:center}
.row>input,.row>select{width:auto;flex:1 1 160px}
.comp input{height:44px}
/* Password eye */
.pw{position:relative;display:block}.pw input{padding-right:46px}
.eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:34px;height:34px;border:0;background:none;border-radius:10px;cursor:pointer;display:grid;place-items:center;color:var(--muted)}
.eye:hover{background:var(--sand);color:var(--ink)}.eye svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6}
/* Buttons */
.btn{height:42px;padding:0 20px;justify-content:center;white-space:nowrap}
.btn.small{height:34px;padding:0 14px;font-size:12.5px}
.btn.block{display:flex;width:100%;height:46px;margin-top:20px}
.btn.danger{background:#fff;color:#9B2C1A;box-shadow:inset 0 0 0 1px #E9B4A8}.btn.danger:hover{background:#FDECE8}
.iconbtn{width:36px;height:36px;border:0;border-radius:10px;background:none;display:inline-grid;place-items:center;cursor:pointer;color:var(--muted)}
.iconbtn:hover{background:var(--sand);color:var(--ink)}.iconbtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6}
td .iconbtn[data-del]:hover{color:#9B2C1A;background:#FDECE8}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}
/* Cards & text */
.cardhead{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.cardhead h3{margin:0}
.cardfoot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px}
.cardfoot>.btn:only-child{margin-left:auto}
.card.narrow{max-width:720px}.card.flush{padding:0;overflow:hidden}.card .pad{padding:20px 24px 0;margin-bottom:8px}
.card.note{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;background:var(--sand);box-shadow:none;border:1px solid var(--line);padding:18px 22px}
.mb0{margin-bottom:0}.nw{white-space:nowrap}.right{text-align:right}.center{text-align:center}
.top{margin-bottom:26px}.top h1{font-size:32px;line-height:1.15}
.top.subtop{margin:4px 0 18px}.top.subtop h2{font-size:22px;font-weight:500}
.pagetabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:-8px 0 24px;overflow-x:auto;scrollbar-width:none}
.pagetabs a{padding:10px 16px;text-decoration:none;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;font-weight:500;font-size:14px}
.pagetabs a:hover{color:var(--ink)}.pagetabs a.on{color:var(--ink);border-bottom-color:var(--ink)}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}
.tabs a{padding:8px 16px;border-radius:99px;text-decoration:none;color:var(--ink);background:#fff;box-shadow:inset 0 0 0 1px var(--line);font-size:13.5px}
.tabs a.on{background:var(--ink);color:#ffefe1;box-shadow:none}
/* Pills */
.pill.est{background:#FFF4E8;color:#7A4E26;box-shadow:inset 0 0 0 1px #F2D2B2;margin:0;font-size:11px;padding:2px 9px;cursor:help}
.pill.ok{background:#EAF5EC;color:#245B33;margin:0;font-size:11px;padding:2px 9px}
.pills{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 4px}
label.pill{margin:0;padding:0;background:none;cursor:pointer}label.pill input{position:absolute;opacity:0;pointer-events:none}
label.pill span{display:inline-block;padding:7px 15px;border-radius:99px;background:#fff;box-shadow:inset 0 0 0 1px #E8CDB3;font-size:13px;transition:.15s}
label.pill:hover span{background:var(--sand)}label.pill input:checked+span{background:var(--ink);color:#ffefe1;box-shadow:none}
label.pill input:focus-visible+span{box-shadow:var(--f-focus)}
.sw{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:middle;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}
/* Unit fields */
.ufield{position:relative;display:inline-flex;align-items:center;width:100%}
.ufield input{padding-right:48px}.ufield.pre input{padding-left:28px}
.ufield i{position:absolute;right:14px;font-style:normal;font-size:12.5px;color:var(--muted);pointer-events:none}
.ufield.pre i:first-child{left:13px;right:auto}
.mmgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px 28px}
.mm{display:grid;grid-template-columns:72px 1fr 14px 1fr;align-items:center;gap:8px}
.mmlab{font-size:13px;font-weight:500}.dash{text-align:center;color:var(--muted)}
.lineset{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}
.inl{display:inline-flex;align-items:center;gap:10px;white-space:nowrap;font-size:13.5px}
.inl .ufield{width:110px}.inl #ebserves{width:64px;text-align:center;padding:0 8px}.inl .ufield:has(#ebserves){width:64px}
/* Staples */
table.staples{table-layout:fixed;min-width:760px}
table.staples .c-sel,table.staples .c-as,table.staples .c-x{width:56px}table.staples .c-as{width:96px}
table.staples .c-size{width:120px}table.staples .c-price{width:190px}table.staples .c-src{width:170px}
table.staples td{padding:8px 10px}table.staples th{padding:0 10px 10px}
input.cell,select.cell{height:36px;border-color:transparent;background-color:transparent;padding:0 8px;font-size:14px}
select.cell{padding-right:28px;background-position:right 8px center}
input.cell:hover,select.cell:hover{border-color:var(--f-b);background-color:#fff}
input.cell:focus,select.cell:focus{background-color:#fff}
input.cell.strong{font-weight:500}input.cell.num{width:96px}
.pricecell{display:flex;align-items:center;gap:8px}
.also{font-size:11.5px;color:#A8988A;padding:0 9px;margin-top:-2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
tr.saving td{opacity:.6}tr.saved td{background:#F1F8F1 !important;transition:background .6s}
.bulkbar{position:sticky;top:12px;z-index:20;display:flex;align-items:center;gap:10px;background:var(--ink);color:#ffefe1;border-radius:99px;padding:8px 10px 8px 20px;margin-bottom:16px;box-shadow:var(--sh)}
.bulkbar span{margin-right:auto}.bulkbar .btn.ghost{background:transparent;color:#ffefe1;box-shadow:inset 0 0 0 1px rgba(255,239,225,.4)}
/* Toasts */
.toast.act{display:flex;align-items:center;gap:16px}
.toast.act button{border:0;background:var(--peach);color:var(--ink);border-radius:99px;padding:6px 14px;font:500 13px Jost;cursor:pointer}
/* Login */
.authcard{width:min(480px,100%);padding:44px 44px 36px;border-radius:28px}
.authcard h2{font-size:28px;margin-bottom:6px}.authcard .hint{font-size:14px}
.authfoot{margin:22px 0 0;text-align:center;font-size:13.5px;color:var(--muted)}
.authfoot a{color:var(--ink)}
/* Shell: sticky sidebar with its own scroll */
.app{grid-template-columns:264px minmax(0,1fr)}
aside{position:sticky;top:0;height:100vh;overflow-y:auto;overscroll-behavior:contain;padding:26px 16px 18px;scrollbar-width:thin}
aside .side-foot{background:none;padding:12px 0 0;border-top:1px solid var(--line);margin-top:auto;display:flex;flex-direction:column;gap:10px}
aside .side-foot nav a{margin:0}
.me{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:12px;text-decoration:none;color:var(--ink)}
.me:hover{background:var(--sand)}.me b{display:block;font-size:13px;font-weight:500;line-height:1.2}.me small{color:var(--muted);font-size:11.5px}
.av{width:32px;height:32px;border-radius:50%;background:var(--peach);display:grid;place-items:center;font-weight:500;font-size:13px;flex:none}
.side-meta{display:flex;justify-content:space-between;align-items:center;padding:0 12px;font-size:12px;color:var(--muted)}
.side-meta a{color:var(--muted)}.ver{padding:0 12px;font-size:11px;color:#B5A597}
.mtop,.scrim{display:none}
.fab{display:inline-flex;align-items:center;gap:8px}.fab svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6}
body.compact main{padding-top:28px}body.compact .card{padding:18px 20px;margin-bottom:14px}body.compact td{padding:9px 12px}
/* Dashboard */
.hero .date{font-size:12px;letter-spacing:.2em;text-transform:uppercase;opacity:.7;margin-bottom:6px}
.hero .wk{display:flex;flex-direction:column;align-items:flex-end;text-decoration:none;color:var(--ink);transition:.15s}.hero .wk:hover{background:rgba(255,255,255,.8)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:22px}
.stat{background:#fff;border-radius:var(--r);box-shadow:var(--sh);padding:20px 22px;display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit;transition:transform .18s,box-shadow .18s;border:1px solid transparent}
.stat:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(120,70,30,.12);border-color:var(--line)}
.stat .ic{width:38px;height:38px;border-radius:12px;background:var(--peach-soft);display:grid;place-items:center;margin-bottom:10px}
.stat .ic svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.6}
.stat .n{font-family:"Playfair Display",Georgia,serif;font-size:32px;line-height:1}.stat .l{font-weight:500}.stat .s{font-size:12.5px;color:var(--muted)}
.glance .mini{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border-radius:14px;background:var(--sand);text-decoration:none;color:inherit;transition:.15s}
.glance .mini:hover{background:var(--peach-soft)}.glance .mini .l{font-size:12px;color:var(--muted)}.glance .mini b{font-size:18px;font-family:"Playfair Display",Georgia,serif;font-weight:500}.glance .mini .s{font-size:11.5px;color:var(--muted)}
.stepper{list-style:none;padding:0;margin:18px 0 0;display:grid;grid-template-columns:repeat(4,1fr);counter-reset:s}
.stepper li{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;font-size:12.5px;color:var(--muted)}
.stepper li:not(:last-child)::after{content:"";position:absolute;top:15px;left:calc(50% + 20px);right:calc(-50% + 20px);height:2px;background:var(--line);border-radius:2px}
.stepper li.done:not(:last-child)::after{background:var(--ink)}
.stepper .dot{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);font-weight:500;font-size:13px}
.stepper li.done .dot{background:var(--ink);color:#ffefe1;box-shadow:none}.stepper li.done{color:var(--ink)}
.stepper li.now .dot{background:var(--peach);box-shadow:0 0 0 5px rgba(255,208,164,.35)}.stepper li.now{color:var(--ink);font-weight:500}
.buys{list-style:none;margin:0;padding:0}
.buys li{display:grid;grid-template-columns:1fr auto 62px;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid #F6E9DC}.buys li:last-child{border-bottom:0}
.buys .nm small{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;margin-top:2px}
.buys .pr{text-align:right}.buys .pr b{display:block;font-weight:500}.buys .pr s{font-size:12px;color:var(--muted)}
.buys .save{justify-self:end;background:#EAF5EC;color:#245B33;border-radius:99px;padding:3px 9px;font-size:12px;font-weight:500}
/* Newsletter send */
.sendcard{border:1px solid var(--line)}.resgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:12px 0}
.resgrid>div{background:var(--sand);border-radius:14px;padding:12px 14px}.resgrid b{display:block;font-family:"Playfair Display",Georgia,serif;font-size:22px;font-weight:500}
.alertbox{background:#FDECE8;border:1px solid #F0C3B8;color:#7A2414;border-radius:14px;padding:14px 16px;margin:10px 0}
/* Phone */
@media(max-width:900px){
  .app{display:block}
  .mtop{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);padding:8px 12px;height:56px}
  .mtop img{height:28px}.mtop .studio{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}
  aside{position:fixed;top:0;left:0;bottom:0;width:min(300px,86vw);height:100%;z-index:70;transform:translateX(-105%);transition:transform .25s ease;box-shadow:0 0 40px rgba(16,16,16,.15);flex-direction:column;overflow-y:auto;padding:22px 14px}
  body.navopen aside{transform:none}
  .scrim{display:block;position:fixed;inset:0;background:rgba(16,16,16,.3);z-index:60;opacity:0;pointer-events:none;transition:opacity .2s}
  body.navopen .scrim{opacity:1;pointer-events:auto}body.navopen{overflow:hidden}
  main{padding:20px 16px 110px}
  .top{flex-direction:column;align-items:stretch}.top h1{font-size:26px}
  .stats{grid-template-columns:1fr 1fr;gap:12px}.stat{padding:16px}.stat .n{font-size:26px}
  .grid.g2,.grid.g3,.grid.g4{grid-template-columns:1fr}
  .hero{flex-direction:column;align-items:flex-start;padding:24px}.hero h1{font-size:28px}.hero .wk{align-items:flex-start;text-align:left;width:100%}
  .card{padding:20px}.authcard{padding:30px 22px}
  .mm{grid-template-columns:64px 1fr 12px 1fr}.mmgrid{grid-template-columns:1fr}
  .inl{white-space:normal;flex-wrap:wrap}
  .resgrid{grid-template-columns:1fr 1fr}
  .fab{right:16px;bottom:16px}
  .helper{width:100%}
}
.mono{word-break:break-all}
.sendcard{background:var(--sand);border:1px solid var(--line);border-radius:16px;padding:16px 18px}.sendcard .row.nowrap{flex-wrap:nowrap}.sendcard select{flex:1}.sendcard .pill{margin:0;white-space:nowrap}.sendcard label.f{margin-top:0}
nav.pagetabs a{box-shadow:none;border-radius:0;background:none;margin-bottom:-1px;padding:10px 16px}nav.pagetabs a.on{box-shadow:none;background:none;border-bottom-color:var(--ink)}nav.pagetabs a:hover{background:none}
[hidden]{display:none !important}
table.staples .c-price{width:236px}input.cell.num{width:120px}
@media(max-width:900px){.glance .grid.g4{grid-template-columns:1fr 1fr;gap:10px}}
@media(max-width:900px){.app{background:none}}
/* ---- v4.2: checkbox alignment everywhere (checkbox centred on the text line, never sitting low) */
td input[type=checkbox],th input[type=checkbox]{vertical-align:middle;margin:0}
td .chk.solo,th .chk.solo{display:flex;align-items:center;justify-content:center;margin:0;min-height:24px}
td>.check{display:grid;margin:0 auto}
label:has(>input[type=checkbox]),label:has(>input[type=radio]){align-items:center}
label.row:has(>input[type=checkbox]),.chk,.chk.inline{display:inline-flex;align-items:center;gap:8px}
.chk input,.chk.inline input{margin:0;flex:none}
.pill:has(>input[type=checkbox]){display:inline-flex;align-items:center;gap:6px}.pill>input[type=checkbox]{margin:0}
.ohtab td input[type=checkbox]{display:block;margin:0 auto}
/* ---- v4.2: one clean filter bar (Specials, Recipes, Ebook builder) */
.fbar{display:flex;flex-direction:column;gap:12px;margin:2px 0 18px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.fbar.flat{border:0;padding:0;margin:14px 0 8px}
.fb-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.fb-cats .chip{justify-content:space-between;width:100%;min-height:36px;padding:6px 14px;text-align:left}
.fb-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.fb-row .search{flex:1 1 220px;max-width:360px;height:38px}
.fb-lab{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:500;min-width:44px}
.fb-tags{display:flex;flex-wrap:wrap;gap:8px}
.dpill{position:relative;display:inline-flex;align-items:center;cursor:pointer;user-select:none}
.dpill input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.dpill span{display:inline-flex;align-items:center;min-height:32px;padding:5px 14px;border-radius:99px;font-size:12.5px;background:#fff;box-shadow:inset 0 0 0 1px #E8CDB3;color:var(--ink);transition:.15s}
.dpill input:checked+span{background:var(--ink);color:#ffefe1;box-shadow:none}
.dpill input:focus-visible+span{outline:2px solid var(--peach);outline-offset:2px}
.fbi{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;font:600 11px Jost,sans-serif;background:#F4EEE8;color:var(--muted);cursor:help}
/* ---- v4.2: selection bar (Select all · N selected · Build recipe · Delete selected) */
.selbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 14px;background:var(--sand);border-radius:14px;margin:0 0 12px;font-size:13px}
.selbar .chk.solo{margin:0}.sel-lab{cursor:pointer;margin-right:4px}
.selc{margin-left:auto;font-weight:500;color:var(--muted)}.selc.on{color:var(--ink)}
.selbar .btn:disabled{opacity:.45;cursor:not-allowed}
.sptab .c-sel{width:48px;text-align:center}.sptab .c-x{width:52px}
.sptab td{padding-top:10px;padding-bottom:10px}
.sptab .pill{margin:0}
.spname{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;line-height:1.3}.spname .pill,.spname .sample{margin:0}
/* v4.2: the global checkbox style (above) was re-showing the hidden input inside every toggle switch – the "checkbox + toggle" double control. */
.toggle input[type=checkbox]{display:none}
.dpill input[type=checkbox]{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
/* v4.2: Specials rows – every cell lines up on the same first line, even when a long name wraps */
.sptab td{vertical-align:top;line-height:28px}
.sptab td .pill,.sptab td .sample,.sptab td .store{line-height:1.4;vertical-align:middle}
.sptab td .chk.solo{min-height:28px;display:flex;align-items:center;justify-content:center}
.sptab .spname{min-height:28px;line-height:1.4}.sptab .spname>*{align-self:center}
.sptab td .iconbtn{width:28px;height:28px;vertical-align:top}
.sptab .spname>b,.sptab .spname>span.muted{display:inline-flex;align-items:center;min-height:28px}
/* v4.2: Overheads tidy – small inline hour inputs, full-size "On" tickbox */
.ohcard .ohch{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;line-height:1.6}
.ohcard .ohch input{width:52px !important;min-width:0;height:28px;padding:2px 4px;display:inline-block;flex:none;text-align:center;border-radius:8px}
.ohtab td input[type=checkbox]{width:20px;height:20px;min-width:20px;padding:0}
.ohtab th:nth-child(6),.ohtab td:nth-child(6){width:48px;text-align:center}
/* v4.2: a stray planner rule had turned every .filters row into a grid (stretched chips/search on review + newsletter) */
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;grid-template-columns:none}
.bulk label.row{display:inline-flex;align-items:center;gap:8px;flex:none;width:auto}
.bulk input[type=checkbox],.bulk .check{width:22px;height:22px;flex:none;margin:0}
.art{align-items:flex-start}.art>.check{flex:none;margin-top:1px}
/* v4.2: Pantry staples – rows with an "also …" line keep the tickboxes level with the name */
table.staples td{vertical-align:top}
table.staples .cell{height:36px}
table.staples td .chk.solo{height:36px;min-height:36px;display:flex;align-items:center;justify-content:center;margin:0}
table.staples .pricecell{min-height:36px;display:flex;align-items:center;gap:6px}
table.staples td:not(:has(.cell)):not(:has(.chk)):not(:has(.iconbtn)){line-height:36px}
.ohtab td input[type=checkbox]{display:grid;place-content:center;margin:0 auto}
/* v4.3 copyright note, cookbook import review, overheads placeholders */
.copynote{background:#F6F1EA;border:1px solid #E7DCCD;border-radius:14px;padding:12px 16px;font-size:13px;color:#5A4A3A;margin-bottom:18px;line-height:1.5}
.cbchanges{margin:6px 0 12px;padding-left:20px;font-size:14px}.cbchanges li{margin:3px 0}
.cbsim{border-radius:12px;padding:10px 14px;font-size:13px;margin-bottom:14px}.cbsim.ok{background:#EEF6EE;border:1px solid #CFE3CF;color:#2F4F2F}.cbsim.bad{background:#FDECEA;border:1px solid #F1C2BC;color:#7A2A20}
.cbcols{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.cbcol{border:1px solid #E7DCCD;border-radius:14px;padding:12px 14px;font-size:13px;max-height:46vh;overflow:auto}.cbcol.orig{background:#FAF8F5;color:#6B5E52}.cbcol.adap{background:#fff}
.cbcol ul,.cbcol ol{padding-left:20px;margin:4px 0 10px}.cbcol h4{margin:6px 0}
.cbcredit{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;margin-bottom:8px}.cbcredit .f{grid-row:1}
.cbaccept{display:flex;align-items:center;gap:10px;margin:14px 0 4px;font-size:14px;cursor:pointer}
.ohph{margin-top:6px;color:#6B5E52;background:#F6F1EA;border-radius:10px;padding:6px 10px;display:inline-block}
@media (max-width:760px){.cbcols,.cbcredit{grid-template-columns:1fr}.cbcredit .f{grid-row:auto}}

/* Grok Fast / Heavy picker (owner) */
.tierpick{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.tier{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:14px;cursor:pointer;background:#fff}
.tier.on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.tier input{margin-top:3px}
.tier b{display:block;font-size:14px}
.tier small{display:block;color:var(--muted);font-size:12.5px;margin-top:2px;line-height:1.35}

/* v4.3.1 newsletter source picker – tidy grid, not a chip jumble */
.srcpick{margin:10px 0 14px;padding:12px 14px;border-radius:14px;background:var(--cream,#ffefe1);box-shadow:inset 0 0 0 1px #E8CDB3}
.srcpick-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.srcgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 12px}
.srcitem{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;background:#fff;box-shadow:inset 0 0 0 1px #F0DCC8;cursor:pointer;min-height:36px}
.srcitem:hover{box-shadow:inset 0 0 0 1px #C9A882}
.srcitem input{flex:0 0 auto;margin:0}
.srcitem .srcname{flex:1 1 auto;font:400 12.5px Jost,sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srcitem b{flex:0 0 auto;font:500 11px Jost,sans-serif;color:var(--muted);background:#ffefe1;padding:2px 7px;border-radius:99px}
.filters.nltools{margin-top:4px}
.filters.nltools .btn{margin-left:auto}
@media (max-width:700px){.srcgrid{grid-template-columns:1fr}.filters.nltools .btn{margin-left:0;width:100%}}

/* v4.3.2 compact Fast/Heavy picker (Ask Studio hub + AI modals) */
.mpick{display:inline-flex;flex-shrink:0;border:1px solid var(--line);border-radius:99px;overflow:hidden;background:#fff;height:36px}
.mpick .mp{border:0;background:transparent;padding:0 12px;font:inherit;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;height:100%}
.mpick .mp.on{background:var(--ink);color:#fff}
.mpick .mp:focus-visible{outline:2px solid var(--peach-deep);outline-offset:-2px}
.comp .mpick{align-self:center}

/* ---- v4.4: Claude/Grok-style composer ---- */
.composer{display:flex;flex-direction:column;gap:0;margin:10px 16px 16px;padding:10px 12px 8px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 1px 2px rgba(16,16,16,.04)}
.composer.flat{margin:8px 0 0}
.composer textarea{width:100%;border:0!important;outline:none;resize:none;min-height:44px;max-height:160px;padding:8px 6px;font:inherit;font-size:15px;line-height:1.45;background:transparent;color:var(--ink);field-sizing:content}
.composer textarea::placeholder{color:var(--muted);opacity:.85}
.composer-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 0 2px;min-height:36px}
.composer-plus{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:99px;border:1px solid var(--line);background:#fff;cursor:pointer;color:var(--ink);flex-shrink:0}
.composer-plus:hover{background:var(--cream)}
.composer-plus svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9}
.composer-right{display:flex;align-items:center;gap:8px;margin-left:auto}
.mpick-quiet{display:inline-flex;align-items:center}
.mpick-sel{appearance:none;-webkit-appearance:none;border:0;background:transparent;font:inherit;font-size:12.5px;font-weight:600;color:var(--muted);padding:4px 18px 4px 6px;border-radius:8px;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%23666' d='M0 0l5 6 5-6z'/></svg>");background-repeat:no-repeat;background-position:right 4px center}
.mpick-sel:hover,.mpick-sel:focus{color:var(--ink);outline:none}
.composer-send{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border:0;border-radius:99px;background:var(--ink);color:#fff;font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.composer-send svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8}
.composer-send:hover{opacity:.92}
.composer-card .composer{margin:12px 0 0}
.helper .composer{margin:8px 14px 14px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
/* Legacy .comp kept for any leftover forms */
.comp.flat{border-top:0;padding:0}

/* ---- v4.4: sidebar user card ---- */
aside .side-foot,.side-foot{margin-top:auto;padding:10px 12px 14px;border-top:1px solid var(--line);border-radius:0;background:transparent;display:flex;flex-direction:column;gap:8px;font-size:12px}
.side-user{position:relative;display:flex;align-items:center;gap:10px;padding:8px 8px;border-radius:12px;background:rgba(16,16,16,.03)}
.side-user .av{width:32px;height:32px;border-radius:99px;background:var(--sage);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}
.side-user-txt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.side-user-txt b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-user-txt small{font-size:11.5px;color:var(--muted)}
.side-kebab{border:0;background:transparent;width:28px;height:28px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);padding:0}
.side-kebab:hover{background:rgba(16,16,16,.06);color:var(--ink)}
.side-kebab svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
.side-menu{position:absolute;right:6px;bottom:calc(100% + 4px);min-width:160px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(16,16,16,.12);padding:6px;z-index:40;display:flex;flex-direction:column;gap:2px}
.side-menu[hidden]{display:none!important}
.side-menu a,.side-logout{display:block;padding:8px 10px;border-radius:8px;font-size:13px;color:var(--ink);text-decoration:none;border:0;background:transparent;text-align:left;cursor:pointer;font:inherit}
.side-menu a:hover,.side-logout:hover{background:var(--cream)}
.side-logout{color:var(--muted);font-weight:500}
.side-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 4px}
.side-meta .ai-chip,.side-meta #aichip{font-size:11px;color:var(--muted)}
.side-meta .ai-chip b,.side-meta #aichip b{color:var(--ink);font-weight:600}
.side-meta .ver,.side-foot .ver{font-size:10.5px;color:var(--muted);opacity:.8}
.brand-logo,.brand-wordmark{max-height:36px;max-width:140px;object-fit:contain}
.brand-wordmark{font-size:14px;letter-spacing:.01em;color:var(--ink);white-space:nowrap}
.brand-wordmark b{font-weight:700}
.logo .brand-logo,.logo .brand-wordmark{max-height:40px}
.authcard .brand-logo,.authcard .auth-logo{max-height:56px;max-width:200px;margin:0 auto 8px;display:block}
.authcard .brand-wordmark{display:block;text-align:center;font-size:18px;margin-bottom:8px}
.mtop .brand-logo,.mtop .brand-wordmark{max-height:28px;max-width:110px}
.logo-preview{min-height:48px;min-width:48px;display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border:1px dashed var(--line);border-radius:12px;background:#fff}
.logo-preview img{max-height:48px;max-width:160px;object-fit:contain}

/* ---- v4.4: requests / ideas ---- */
.idea-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:10px}
.idea-card{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:#fff}
.idea-card h4{margin:0 0 6px;font-size:15px}
.idea-card p{margin:0 0 12px;color:var(--muted)}
.status.req-new{background:#eef2ff;color:#3730a3}
.status.req-scoping{background:#fff7ed;color:#9a3412}
.status.req-planned{background:#ecfdf5;color:#065f46}
.status.req-built{background:#f0fdf4;color:#166534}
.status.req-declined{background:#f4f4f5;color:#52525b}
.menu-name-row{padding:12px 0;border-bottom:1px solid var(--line)}
.menu-name-row:last-child{border-bottom:0}
.menu-name-row input[type=text]{flex:1;min-width:0}
/* v4.4.1: restore original logo sizing (v4.4 shrank it) */
.logo img.brand-logo{width:170px;max-width:170px;max-height:none;height:auto}
@media(max-width:1100px){.logo img.brand-logo{width:150px;max-width:150px}}
.mtop img.brand-logo{height:28px;max-height:28px;width:auto;max-width:none}
.authcard img.brand-logo{max-height:none;width:auto;max-width:220px;height:auto}
.chead img.brand-logo,.portal-logo{height:44px;max-height:44px;width:auto;max-width:none}

/* v4.4.2: let Manage menus escape the table scroll box */
.tablewrap:has(details.menu[open]){overflow:visible}
.card:has(details.menu[open]){overflow:visible}

.hintbox{background:#F4F8F5;border:1px solid #C5D9C8;border-radius:14px;padding:12px 16px;font-size:13px;color:#245B33;margin-bottom:18px}

.upload-progress{min-height:1.2em;margin:8px 0 4px;color:#245B33;font-weight:500}
