@font-face{font-family:Barlow;src:url('./assets/display.ttf') format('truetype');font-display:swap}
@font-face{font-family:Manrope;src:url('./assets/body.ttf') format('truetype');font-weight:200 800;font-display:swap}
@font-face{font-family:JetBrains;src:url('./assets/mono.ttf') format('truetype');font-display:swap}
:root{font-family:Manrope,system-ui,sans-serif;font-size:16px;color:#183e32;background:#eef3ef;--paper:#eef3ef;--surface:#fcfdfb;--ink:#183e32;--muted:#51685d;--line:#cad8d0;--accent:#27634d;--soft:#dce9df;--gold:#d88434;--shadow:0 12px 34px #1430240b}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}body[data-theme=bbq]{--paper:#101619;--surface:#1a2429;--ink:#f4f0e6;--muted:#b6c1c4;--line:#34434a;--accent:#ff7046;--soft:#2c3030;--gold:#ffb660;--shadow:0 12px 34px #0002;color-scheme:dark}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Barlow,system-ui,sans-serif;font-weight:600;line-height:1.03;letter-spacing:-.015em}h1{font-size:clamp(2.7rem,6vw,4.5rem);margin-bottom:.6rem}h2{font-size:2rem}h3{font-size:1.65rem}p{line-height:1.65}svg{width:24px;height:24px;flex-shrink:0}button{border:0}img{max-width:100%;object-fit:cover}.button{display:inline-flex;justify-content:center;align-items:center;gap:10px;padding:14px 20px;min-height:50px;background:var(--accent);color:var(--surface);border-radius:13px;font-weight:750;font-size:.95rem}.button.secondary{background:var(--soft);color:var(--ink)}.button.danger{background:#a8352a;color:white}.text-button{background:none;color:var(--accent);padding:12px 0;font-weight:700}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:var(--soft);font-size:1.75rem}.topbar{max-width:1280px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:22px 32px;border-bottom:1px solid var(--line);gap:12px}.brand{display:flex;align-items:center;gap:12px;background:none;padding:0;text-align:left;font-family:Barlow;font-size:1.6rem;letter-spacing:.03em}.brand img{width:46px;height:46px;border-radius:12px}.brand b{font-weight:600}.top-actions{display:flex;align-items:center;gap:14px}.switch{background:none;border-bottom:1px solid var(--muted);padding:8px 0;font-size:.875rem;font-weight:700}#main{max-width:1180px;margin:auto;padding:40px 32px 165px}.page-title{margin-bottom:26px}.page-title p{color:var(--muted);margin:12px 0 0}.eyebrow{display:block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin-bottom:12px}.browse-tools{display:flex;gap:14px;margin-bottom:20px}.search{flex:1;display:flex}.search input,input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:var(--surface);padding:14px 16px;min-height:50px}.chips{display:flex;gap:8px;overflow:auto;scrollbar-width:none;margin:0 0 30px;padding:3px 0}.chip{flex-shrink:0;padding:10px 17px;border-radius:99px;background:transparent;border:1px solid var(--line);font-size:.875rem;font-weight:650}.chip.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.recipe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.recipe-card{position:relative;border-radius:22px;background:var(--surface);overflow:hidden;box-shadow:var(--shadow)}.recipe-open{background:none;padding:0;text-align:left;width:100%;height:100%;display:flex;flex-direction:column}.recipe-image{position:relative;width:100%;aspect-ratio:1.42;overflow:hidden}.recipe-image img{height:100%;width:100%;transition:transform .3s}.recipe-open:hover img{transform:scale(1.025)}.recipe-copy{padding:22px}.recipe-copy h2{font-size:1.9rem;margin:0 0 10px}.recipe-copy p{font-size:.875rem;line-height:1.6;color:var(--muted);margin:0}.recipe-copy .eyebrow{font-size:.75rem;margin-bottom:9px}.time-pill{position:absolute;bottom:12px;left:14px;background:#101619db;color:white;display:flex;align-items:center;gap:7px;font-size:.8rem;font-weight:700;padding:7px 10px;border-radius:8px}.time-pill svg{width:17px;height:17px}.favorite{position:absolute;right:12px;top:12px;border-radius:50%;width:44px;height:44px;background:#fcfdfbed;color:#183e32;display:grid;place-items:center}.favorite.selected svg{fill:#bb4430;stroke:#bb4430}.bottom-nav{position:fixed;z-index:10;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:clamp(0px,4vw,60px);background:var(--surface);border-top:1px solid var(--line);padding:8px 12px calc(9px + env(safe-area-inset-bottom))}.nav-item{display:flex;flex-direction:column;align-items:center;gap:5px;background:none;color:var(--muted);padding:8px 18px;border-radius:14px;min-width:78px;font-size:.75rem;font-weight:650}.nav-item.active{color:var(--accent);background:var(--soft)}.portal{max-width:1080px;margin:auto;padding:38px 28px}.portal-brand{display:flex;align-items:center;gap:12px;letter-spacing:.16em;font-weight:800;font-size:.8rem;margin-bottom:42px}.portal-brand img{width:48px;border-radius:13px}.portal h1{font-size:clamp(3rem,7vw,5rem);margin-bottom:32px}.worlds{display:grid;grid-template-columns:1fr 1fr;gap:22px}.world{position:relative;min-height:380px;border-radius:24px;overflow:hidden;text-align:left;background:#17251c;color:white}.world>img{position:absolute;inset:0;width:100%;height:100%;transition:transform .35s}.world:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 15%,#0b1716e8)}.world:hover img{transform:scale(1.025)}.world>span{position:absolute;z-index:1;bottom:28px;left:28px;right:28px}.world strong{display:block;font-family:Barlow;font-size:4.4rem;line-height:1.1}.world small{font-size:.95rem}.world i{display:block;font-style:normal;font-weight:750;margin-top:16px;color:#f3ce92}.portal-note{margin-top:24px;color:var(--muted);font-size:.875rem}.boot{padding:40px;max-width:600px}.empty{padding:32px;border:1px dashed var(--line);border-radius:18px;grid-column:1/-1}#toast{position:fixed;bottom:110px;left:50%;transform:translateX(-50%) translateY(20px);max-width:90vw;width:max-content;background:var(--ink);color:var(--paper);padding:14px 20px;border-radius:14px;box-shadow:0 6px 30px #0003;opacity:0;pointer-events:none;transition:.2s;z-index:100;font-size:.95rem}#toast.show{opacity:1;transform:translateX(-50%)}dialog{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:24px;width:min(600px,calc(100vw - 28px));padding:26px;max-height:88dvh;overflow-y:auto;box-shadow:0 24px 90px #0005}dialog::backdrop{background:#06120d99;backdrop-filter:blur(4px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px}.dialog-head h2{margin:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(max-width:900px){.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:580px){.topbar{padding:16px 18px}.brand{font-size:1.4rem}.brand img{width:38px;height:38px}.top-actions{gap:10px}.switch{font-size:.8rem}.icon-button{width:42px;height:42px}#main{padding:27px 18px 160px}.recipe-grid{grid-template-columns:1fr;gap:22px}.recipe-image{aspect-ratio:1.5}.recipe-copy h2{font-size:2.15rem}.browse-tools{flex-wrap:wrap;gap:12px}.browse-tools .search{flex-basis:100%}.browse-tools .button{min-height:44px;padding:10px 16px}.chips{margin-bottom:24px}.nav-item{padding:8px 10px;min-width:72px}.bottom-nav{justify-content:space-around;gap:0}.portal{padding:26px 20px}.portal-brand{margin-bottom:30px}.portal h1{font-size:3.2rem}.worlds{grid-template-columns:1fr;gap:18px}.world{min-height:255px}.world strong{font-size:3.5rem}.world>span{left:24px;bottom:22px}.world small{font-size:.875rem}dialog{padding:22px}}
.panel{background:var(--surface);padding:26px;border:1px solid var(--line);border-radius:22px;margin-bottom:24px}.section-line{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.section-line h2{margin:0}.section-line select{width:auto;max-width:100%}.actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0}.detail-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.detail-hero{display:grid;grid-template-columns:1fr 1.1fr;align-items:center;gap:40px;margin-bottom:40px}.detail-hero>img{width:100%;aspect-ratio:1.05;border-radius:24px}.detail-hero h1{font-size:clamp(2.7rem,5vw,4rem)}.detail-hero p{color:var(--muted)}.facts{display:flex;gap:20px;flex-wrap:wrap}.facts>span{display:flex;align-items:center;gap:8px}.facts>strong{flex-basis:100%;color:var(--accent)}.detail-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:30px;align-items:start}.ingredients ul{list-style:none;padding:0;margin:24px 0}.ingredients li{padding:13px 0;border-bottom:1px solid var(--line);line-height:1.55}.steps{list-style:none;padding:0;margin:0 0 35px}.steps li{display:flex;gap:18px;margin-bottom:30px}.step-index{font-family:JetBrains;font-size:.9rem;background:var(--soft);width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.steps h3{margin:4px 0 12px}.steps p{margin-bottom:10px}.steps small{color:var(--muted);font-size:.875rem}.tip{background:var(--soft)}.tip p{margin-bottom:0}.notice{border-left:3px solid var(--gold);padding:12px 16px;background:var(--soft);border-radius:0 12px 12px 0;line-height:1.7;font-size:.9rem}.subtle{font-size:.875rem;color:var(--muted);line-height:1.65}.field{display:flex;flex-direction:column;gap:9px;margin:18px 0;font-size:.9rem;font-weight:650}.field textarea{resize:vertical;line-height:1.6;min-height:90px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field span{line-height:1.4}.scope-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:25px;font-size:.875rem}.week-controls{margin-bottom:24px}.week-controls h2{font-size:1.8rem}.week-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.day{border-top:2px solid var(--line);padding-top:18px}.day.today{border-color:var(--accent)}.day-heading{display:flex;align-items:center;gap:15px;margin-bottom:15px}.day-heading h3{margin:0}.day-heading span{color:var(--muted);font-size:.875rem}.day-heading button{margin-left:auto;width:36px;height:36px}.meal{background:var(--surface);padding:22px;border-radius:16px;margin-bottom:12px}.meal h3{margin-bottom:8px}.meal p{margin:6px 0;font-size:.9rem}.meal .actions{margin:4px 0 0}.meal .eyebrow{font-size:.75rem}.shopping-list{display:flex;flex-direction:column;gap:10px;margin:25px 0}.shopping-row{display:flex;align-items:center;gap:18px;background:var(--surface);padding:16px 20px;border-radius:16px}.shopping-row>input{appearance:auto;width:24px;height:24px;min-height:24px;accent-color:var(--accent);flex-shrink:0}.shopping-name{flex:1;text-align:left;background:none;padding:0;overflow-wrap:anywhere}.shopping-name strong{display:block;font-size:1.1rem;line-height:1.5}.shopping-name span,.shopping-name small{display:block;color:var(--muted);font-size:.875rem;line-height:1.6}.shopping-row.checked{opacity:.65}.shopping-row.checked strong{text-decoration:line-through}.grill-plan{background:#182126;color:#f4f0e6;border:1px solid #46524e;padding:24px;border-radius:20px;margin:20px 0}.grill-plan .eyebrow{color:#ffc172;margin:0}.grill-plan p{font-size:.875rem;line-height:1.65;color:#c8d2d1;margin-bottom:0}.burners{display:grid;grid-template-columns:repeat(var(--count),minmax(0,1fr));gap:8px;margin-top:20px}.burner{background:#302b25;border:1px solid #bb743a;border-radius:12px;padding:14px 6px;text-align:center;min-width:0}.burner>span{display:block;font-size:.75rem;line-height:1.4}.burner>strong{display:block;color:#ffbb71;font-family:Barlow;font-size:1.6rem;margin:8px 0 12px}.burner.off{background:#11191d;border-color:#35444a}.burner.off strong{color:#a5b4b8}.heat-meter{display:flex;gap:3px;justify-content:center}.heat-meter i{width:14%;height:5px;background:#48514c;border-radius:2px}.heat-meter i.on{background:#ffac5b}.grill-zones{display:grid;grid-template-columns:repeat(var(--count),1fr);gap:8px;margin-top:18px;background:repeating-linear-gradient(90deg,#11181c 0px,#11181c 7px,#2c393e 8px,#2c393e 10px);border-radius:8px;padding:12px 6px;min-height:18px}.grill-zones span{background:#334b3ff0;border:1px dashed #b0bda5;border-radius:8px;padding:12px 5px;font-size:.875rem;text-align:center;line-height:1.4}details{border-bottom:1px solid var(--line);padding:15px 0}summary{cursor:pointer;font-weight:700;line-height:1.6}.cook-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:34px;align-items:start}.cook-instruction{font-size:1.2rem;line-height:1.75}.progress{height:5px;background:var(--line);border-radius:3px;margin:0 0 28px}.progress i{display:block;background:var(--accent);height:100%}.timer-panel{text-align:center;position:sticky;top:20px}.big-clock{font-family:JetBrains;font-size:clamp(2.8rem,7vw,4.3rem);letter-spacing:-.06em;font-variant-numeric:tabular-nums;margin:25px 0}.timer-panel .actions{justify-content:center}.wide{width:100%}.core-temp{background:var(--soft);padding:22px;border-radius:16px;margin:25px 0}.core-temp span,.core-temp small{display:block;font-size:.875rem}.core-temp strong{display:block;font-family:Barlow;font-size:2.2rem;margin:8px 0}.timer-strip{position:fixed;bottom:calc(85px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;gap:8px;max-width:min(100% - 24px,1000px);overflow:auto;z-index:11;padding:5px}.timer-mini{min-width:260px;display:flex;align-items:center;gap:12px;background:var(--ink);color:var(--paper);padding:12px 16px;border-radius:14px;box-shadow:0 4px 20px #0003;text-align:left}.timer-mini span{flex:1;min-width:0}.timer-mini b{font-size:.8rem;display:block;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-mini small{font-size:.7rem;display:block;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-mini>strong{font-family:JetBrains;font-size:.9rem}.preview-nav{display:flex;gap:8px;overflow:auto;margin-bottom:24px}.menu-list{display:flex;flex-direction:column;gap:12px}.check-field{display:flex;align-items:center;gap:12px;line-height:1.5;margin:20px 0}.check-field input{width:22px;height:22px;min-height:22px;flex-shrink:0;accent-color:var(--accent)}.safety-list{padding-left:20px;line-height:1.7}.safety-list li{margin-bottom:12px}.invite-code{font-family:JetBrains;font-size:1.5rem;overflow-wrap:anywhere;background:var(--soft);padding:20px;border-radius:12px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8rem;max-height:250px;overflow:auto;background:var(--soft);padding:15px;border-radius:12px}#photo-preview img{max-height:200px;border-radius:15px}.food-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:25px 0}.food-option{background:var(--surface);border:1px solid var(--line);padding:20px;border-radius:18px}.food-option:has(input:checked){border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.food-option .check-field{margin-top:0}.food-option .field{margin:0}.food-option .subtle{margin:15px 0 0}.timeline{margin-top:28px}.timeline-event{display:grid;grid-template-columns:110px 1fr;gap:25px;border-bottom:1px solid var(--line);padding:24px 0}.timeline-event.completed{opacity:.55}.event-time strong{display:block;font-family:JetBrains;font-size:1.4rem}.event-time span{font-family:JetBrains;font-size:.8rem;color:var(--muted);display:block;margin-top:7px}.timeline-event h3{margin-bottom:10px}.timeline-event p{font-size:.9rem}.timeline-event .eyebrow{margin-bottom:7px}
@media(max-width:850px){.detail-hero{grid-template-columns:1fr;gap:25px}.detail-hero>img{aspect-ratio:1.7;max-height:480px}.detail-columns,.cook-grid{grid-template-columns:1fr}.food-grid{grid-template-columns:1fr 1fr}.timer-panel{position:static}.cook-grid .timer-panel{grid-row:1}.cook-grid .big-clock{margin:12px 0}.week-grid{grid-template-columns:1fr}}
@media(max-width:580px){.panel{padding:22px}.detail-hero>img{aspect-ratio:1.3}.detail-hero{margin-bottom:28px}.detail-columns{gap:15px}.detail-hero .actions .button{flex:1}.food-grid{grid-template-columns:1fr}.grill-plan{padding:16px}.burner>strong{font-size:1.3rem}.section-line{gap:12px}.ingredients .section-line select{width:100%}.week-controls h2{font-size:1.5rem;flex:1;text-align:center}.timeline-event{grid-template-columns:80px 1fr;gap:15px}.event-time strong{font-size:1.1rem}.timer-strip{bottom:calc(82px + env(safe-area-inset-bottom))}.core-temp strong{font-size:1.9rem}.form-row{gap:10px}.form-row input,.form-row select{padding:12px 8px}}
.login-page{min-height:100dvh;display:grid;grid-template-columns:1.1fr 1fr;max-width:1500px;margin:auto;background:var(--surface)}.login-photo{position:relative;min-height:650px;background:#183e32;color:#fff;overflow:hidden}.login-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.login-photo:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#10291a11 10%,#10291ae8)}.login-photo>div{position:absolute;z-index:1;bottom:65px;left:60px;right:30px}.login-photo span{letter-spacing:.2em;font-size:.8rem;font-weight:800}.login-photo h1{font-size:clamp(4rem,8vw,7rem);margin:15px 0}.login-photo p{font-size:1.3rem;line-height:1.5;color:#f3e9d7;margin:0}.login-form{padding:70px clamp(28px,5vw,85px);align-self:center}.login-logo{width:54px;height:54px;border-radius:15px;margin-bottom:35px}.login-form h2{font-size:3rem;margin-bottom:18px}.login-form>p{color:var(--muted)}.login-form form{margin-top:28px}.login-form .button{margin-top:12px}.login-invite{font-size:.85rem;border-top:1px solid var(--line);padding-top:22px;margin-top:30px}.brand span{font-size:1.6rem}.brand span b{display:block;font-family:Manrope;font-size:.65rem;letter-spacing:.12em;margin-top:2px}#account-link{font-family:JetBrains;font-size:.8rem;margin:15px 0}
@media(max-width:750px){.login-page{grid-template-columns:1fr}.login-photo{min-height:245px;max-height:32dvh}.login-photo>div{bottom:28px;left:26px}.login-photo h1{font-size:4rem;margin:8px 0}.login-photo p{display:none}.login-form{padding:30px 26px}.login-logo{display:none}.login-form h2{font-size:2.6rem}.login-form .eyebrow{margin-bottom:12px}}
.preview-notice{font-size:.8rem;line-height:1.55;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:24px}
/* Tischzeit: original mirrored BB, copper braces and a quiet chef's toque. */
.tischzeit-mark{display:block;width:64px;height:60px;flex:0 0 auto;color:var(--ink);overflow:visible}
.brand,.portal-brand,.login-brand{gap:12px;letter-spacing:normal}
.brand .brand-wordmark,.portal-brand .brand-wordmark,.login-brand .brand-wordmark{display:block;font-family:Barlow,system-ui,sans-serif;font-size:2.1rem;font-weight:600;line-height:1;letter-spacing:-.025em;white-space:nowrap}
.brand .brand-wordmark b,.portal-brand .brand-wordmark b,.login-brand .brand-wordmark b{display:block;margin-top:7px;font-family:Manrope,system-ui,sans-serif;font-size:.6rem;font-weight:800;line-height:1.2;letter-spacing:.16em;color:var(--muted)}
.portal-brand{margin-bottom:36px}.login-brand{display:flex;align-items:center;margin-bottom:32px}
@media(max-width:580px){.brand{gap:8px}.brand .tischzeit-mark{width:50px;height:47px}.brand .brand-wordmark{font-size:1.75rem}.brand .brand-wordmark b{font-size:.55rem;margin-top:5px}.topbar{gap:8px}.top-actions{gap:10px}}
@media(max-width:360px){.brand .tischzeit-mark{width:44px;height:42px}.brand .brand-wordmark{font-size:1.6rem}.top-actions .switch{font-size:.75rem}.top-actions{gap:8px}.top-actions .icon-button{width:42px;height:42px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
