:root{--bg:#f7f5ef;--paper:#fff;--ink:#24271f;--muted:#797b72;--line:#e7e3d9;--green:#244e3b;--orange:#df784b;--soft:#efede6}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:DM Sans,Arial,sans-serif}button,input,textarea,select{font:inherit}button,.button{cursor:pointer;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:11px;padding:10px 14px;font-weight:600}.primary{background:var(--green)!important;border-color:var(--green)!important;color:#fff!important}.shell{min-height:100vh;display:grid;grid-template-columns:230px 1fr}.shell>aside{position:sticky;top:0;height:100vh;background:#fcfbf7;border-right:1px solid var(--line);padding:28px 18px;display:flex;flex-direction:column}.wordmark{display:flex;gap:12px;align-items:center;font:700 19px Playfair Display,serif;padding:0 8px 28px}.wordmark span,.login .logo{width:37px;height:37px;display:grid;place-items:center;background:var(--green);color:#fff;border-radius:12px 12px 12px 4px}.shell aside nav{display:grid;gap:4px}.shell aside nav button{border:0;background:transparent;text-align:left;color:var(--muted);padding:11px 12px}.shell aside nav button i{font-style:normal;display:inline-block;width:28px}.shell aside nav button.active{background:#e9eee9;color:var(--green)}.profile{margin-top:auto;display:flex;gap:10px;align-items:center;border-top:1px solid var(--line);padding:20px 7px 0}.profile>span{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#d8ba8c;font-size:12px;font-weight:800}.profile div{display:grid;font-size:13px}.profile small{color:var(--muted)}.workspace{padding:38px 4.2vw 100px;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}.page-head small,.dialog>small,.matches>small{color:var(--orange);letter-spacing:.16em;font-weight:800;font-size:10px}.page-head h1,.dialog h1{font:700 clamp(36px,4.5vw,56px)/1 "Playfair Display",serif;margin:9px 0 0;letter-spacing:-.03em}.head-actions{display:flex;gap:8px}.searchbar{height:58px;border:1px solid var(--line);border-radius:16px;background:var(--paper);display:flex;align-items:center;gap:12px;padding:0 18px;box-shadow:0 10px 30px #3e38260d}.searchbar span{font-size:25px}.searchbar input{border:0;outline:0;width:100%;font-size:15px}.filters{display:flex;gap:8px;margin:18px 0 28px;overflow:auto}.filters button{white-space:nowrap;border-radius:999px}.filters button.active,.tabs button.active{background:var(--green);color:#fff}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.card{background:var(--paper);border:1px solid var(--line);border-radius:20px;overflow:hidden;cursor:pointer;transition:.2s}.card:hover{transform:translateY(-4px);box-shadow:0 16px 30px #29211514}.cover{height:190px;position:relative;display:grid;place-items:center;background:linear-gradient(140deg,#d09c58,#754a28);overflow:hidden}.cover.c1{background:linear-gradient(140deg,#dd7457,#902f27)}.cover.c2{background:linear-gradient(140deg,#9bab73,#3d593f)}.cover.c3{background:linear-gradient(140deg,#df9b62,#a7462f)}.cover.c4{background:linear-gradient(140deg,#d9ad54,#76612e)}.cover.c5{background:linear-gradient(140deg,#b7b48a,#5b7359)}.cover>span{font-size:72px}.cover img,.recipe-art img{width:100%;height:100%;object-fit:cover}.cover em{position:absolute;left:12px;bottom:12px;background:#fffffff0;color:#34352f;border-radius:999px;padding:6px 9px;font:700 10px DM Sans;font-style:normal}.fav{position:absolute;right:12px;top:12px;border:0;background:#fffffff0;width:36px;height:36px;border-radius:50%;padding:0;font-size:20px}.fav.on{color:#c94a43}.card-copy{padding:17px}.card-copy>small{color:var(--muted);font-size:11px}.card h3{font:700 19px/1.25 Playfair Display;margin:8px 0 18px}.card-copy>div{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:12px;font-size:11px;color:var(--muted);text-transform:uppercase}.card-copy b{color:#d99131}.empty{text-align:center;border:1px dashed var(--line);background:var(--paper);padding:70px 20px;border-radius:20px}.empty>span{font-size:40px}.empty h2{font:700 25px Playfair Display;margin:12px 0 5px}.empty p{color:var(--muted)}.modal{position:fixed;inset:0;background:#24271f9c;z-index:50;padding:30px;display:grid;place-items:center;overflow:auto}.dialog{position:relative;background:var(--bg);width:min(960px,100%);max-height:calc(100vh - 60px);overflow:auto;border-radius:24px;padding:34px}.x{position:absolute;right:18px;top:18px;border-radius:50%;font-size:20px;width:38px;height:38px;padding:0}.recipe{width:min(1120px,100%);padding:0}.recipe>.x{z-index:2}.recipe-hero{display:grid;grid-template-columns:.85fr 1.15fr;background:var(--paper)}.recipe-art{min-height:360px;display:grid;place-items:center;background:linear-gradient(135deg,#d6a858,#795835);font-size:100px}.recipe-hero>div:last-child{padding:46px}.recipe-hero h1{font:700 45px/1.05 Playfair Display;margin:10px 0}.recipe-hero p{color:var(--muted);line-height:1.6}.metrics{display:flex;gap:26px;margin:26px 0}.metrics span{display:grid;color:var(--muted);font-size:10px;text-transform:uppercase}.metrics b{font-size:18px;color:var(--ink)}.recipe-actions{display:flex;gap:8px}.recipe-body{display:grid;grid-template-columns:.8fr 1.2fr;gap:50px;padding:42px}.recipe-body h2,.repeater h2{font:700 24px Playfair Display}.serve{display:flex;justify-content:space-between;align-items:center}.serve label{font-size:11px;color:var(--muted)}.serve button{border:0;padding:4px 8px}.serve b{padding:0 6px}.ingredients{list-style:none;padding:0}.ingredients li{padding:10px 0;border-bottom:1px solid var(--line);line-height:1.5}.ingredients li>b{display:inline-block;min-width:70px}.ingredients em{font-style:normal;font-size:9px;background:#e7eee7;color:var(--green);padding:3px 6px;border-radius:999px;margin-left:7px}.taglist{display:flex;gap:7px;flex-wrap:wrap}.taglist span{padding:7px 9px;background:var(--soft);border-radius:8px;font-size:11px}.steps{list-style:none;padding:0}.steps li{display:grid;grid-template-columns:38px 1fr;gap:14px;padding:13px;border-radius:12px;cursor:pointer}.steps li:hover{background:var(--paper)}.steps li>b{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:#fff}.steps li.done{opacity:.5;text-decoration:line-through}.steps li button{display:block;margin-top:8px;font-size:11px}.note{padding:16px;border-left:3px solid var(--orange);background:#f3e9df;display:grid;gap:5px}.recipe details{margin-top:18px}.recipe pre{white-space:pre-wrap;background:var(--paper);padding:15px;font:12px/1.5 monospace}.cooked{margin-top:20px}.cooking .recipe-hero,.cooking .recipe-body>section:first-child,.cooking .recipe-actions button:not(.primary){display:none}.cooking .recipe-body{display:block;font-size:19px;max-width:760px;margin:auto}.cooking .steps li{padding:22px}.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin:24px 0}.form-grid .wide{grid-column:span 4}.dialog label{display:grid;gap:6px;font-size:12px;font-weight:600;margin:12px 0}.dialog input,.dialog textarea,.dialog select,.quick-add input,.pantry-form input{border:1px solid var(--line);border-radius:10px;padding:11px;background:var(--paper);color:var(--ink)}.dialog textarea{resize:vertical}.repeater>div{display:flex;justify-content:space-between}.repeater label{display:flex;align-items:center}.repeater label>span{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--soft)}.repeater input{flex:1}.repeater label button{border:0;background:transparent}.dialog footer{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding-top:20px;margin-top:25px}.tabs{display:flex;gap:7px;margin:22px 0}.import-master{text-align:center;background:var(--paper);padding:35px;border-radius:18px}.import-master>span{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;margin:auto;background:var(--green);color:#fff;font:700 28px Playfair Display}.success,.warning,.preview{margin:16px 0;padding:15px;border-radius:12px;background:#e5f0e5;color:#245436}.warning{background:#fff1d7;color:#74530c}.collection-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.collection-grid article{background:var(--paper);border:1px solid var(--line);padding:16px;border-radius:18px}.collection-art{height:140px;border-radius:13px;background:#315d47;color:#fff;display:grid;place-items:center;font-size:50px}.collection-grid h2{font:700 22px Playfair Display;margin-bottom:5px}.collection-grid p{color:var(--muted);font-size:13px}.collection-grid article>b{font-size:11px}.week{display:grid;grid-template-columns:repeat(7,1fr);gap:9px}.week>article{background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:11px;min-width:0}.week>article.today{border:2px solid var(--orange)}.week article>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.week header small{color:var(--muted)}.week header b{font:700 26px Playfair Display}.meal{width:100%;min-height:84px;padding:8px;margin:5px 0;text-align:left;border-style:dashed;color:var(--muted)}.meal small,.meal span{display:block;text-transform:capitalize}.meal span{font-size:11px;margin-top:5px}.meal.filled{border-style:solid;background:#e7eee8;color:var(--green)}.tip{margin-top:25px;padding:16px 20px;border-left:3px solid var(--orange);background:var(--paper)}.tip p{margin-bottom:0;color:var(--muted)}.quick-add{display:flex;gap:8px;max-width:700px;margin-bottom:25px}.quick-add input{flex:1}.list-board{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.list-board>section{background:var(--paper);padding:20px;border-radius:16px;border:1px solid var(--line)}.list-board h2{font:700 21px Playfair Display;border-bottom:1px solid var(--line);padding-bottom:10px}.list-board h2 span{float:right;font:12px DM Sans;background:var(--soft);padding:3px 7px;border-radius:999px}.list-board label{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.list-board label>span{flex:1}.list-board label>small{color:var(--muted)}.list-board label button{border:0}.list-board .checked{text-decoration:line-through;opacity:.5}.pantry-layout{display:grid;grid-template-columns:1fr 310px;gap:20px}.pantry-form{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:15px}.pantry-form input{width:150px}.pantry-table,.matches{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:18px}.pantry-table>header,.pantry-table>div{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:8px;padding:11px;border-bottom:1px solid var(--line)}.pantry-table header{color:var(--muted);font-size:10px;text-transform:uppercase}.soon{color:#c7513c}.matches h2{font:700 24px Playfair Display}.matches div{display:grid;padding:10px 0;border-bottom:1px solid var(--line)}.matches span{color:var(--muted);font-size:11px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.stats article{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:20px;display:grid}.stats small{color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.stats b{font:700 42px Playfair Display;margin-top:8px}.insight-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}.insight-grid section,.settings section{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:22px}.insight-grid h2,.settings h2{font:700 23px Playfair Display}.rank{display:grid;grid-template-columns:30px 1fr auto;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.rank>small{color:var(--muted)}.settings{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.settings p{color:var(--muted);line-height:1.6}.button{text-decoration:none;display:inline-block}.badge{display:inline-block;padding:6px 9px;border-radius:999px;background:#e7eee8;color:var(--green);font-size:11px;font-weight:800}.login,.loader{min-height:100vh;display:grid;place-items:center}.login form{width:min(410px,calc(100% - 32px));background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:36px;box-shadow:0 20px 60px #29211517}.login .logo{margin:auto}.login h1{text-align:center;font:700 38px Playfair Display;margin-bottom:5px}.login p{text-align:center;color:var(--muted)}.login label{display:grid;gap:6px;font-size:12px;font-weight:600;margin:16px 0}.login input{padding:12px;border:1px solid var(--line);border-radius:10px}.login .primary{width:100%}.error{color:#a5342e;background:#f8dfdc;padding:10px;border-radius:8px}.bottom-nav{display:none}@media(max-width:1050px){.grid,.collection-grid{grid-template-columns:repeat(2,1fr)}.week{grid-template-columns:repeat(4,1fr)}.recipe-hero{grid-template-columns:1fr}.recipe-art{min-height:260px}.recipe-body,.pantry-layout{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.shell{display:block}.shell>aside{display:none}.workspace{padding:24px 15px 95px}.page-head{align-items:flex-start}.page-head h1{font-size:37px}.page-head>button,.head-actions button:first-child{display:none}.grid,.collection-grid,.list-board,.insight-grid,.settings{grid-template-columns:1fr}.cover{height:220px}.modal{padding:0}.dialog{min-height:100vh;max-height:none;border-radius:0;padding:25px 17px}.recipe-hero>div:last-child{padding:25px 18px}.recipe-hero h1{font-size:36px}.recipe-body{padding:25px 18px;gap:20px}.metrics{gap:14px;flex-wrap:wrap}.form-grid{grid-template-columns:1fr 1fr}.form-grid .wide{grid-column:span 2}.week{display:flex;overflow:auto}.week>article{min-width:170px}.pantry-table{overflow:auto}.pantry-table>header,.pantry-table>div{min-width:600px}.stats{grid-template-columns:1fr 1fr}.bottom-nav{position:fixed;display:flex;bottom:0;left:0;right:0;height:70px;background:var(--paper);border-top:1px solid var(--line);z-index:40;justify-content:space-around}.bottom-nav button{border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--muted);padding:10px 4px}.bottom-nav button.active{color:var(--green)}.bottom-nav small{font-size:8px}}@media print{.shell>aside,.bottom-nav,.page-head,.recipe-actions,.x{display:none!important}.shell{display:block}.workspace{padding:0}.modal{position:static;background:#fff;padding:0}.dialog{max-height:none}.recipe-body{display:grid!important}}
