.recipe-shell{max-width:1180px}.recipe-page{padding-top:55px}.recipe-hero{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:32px;align-items:end;margin-bottom:38px}.recipe-hero h1{font-size:clamp(52px,8vw,88px);letter-spacing:-5px;line-height:.88;margin:0 0 25px}.recipe-hero h1 em{font-style:normal;background:var(--yellow);padding:0 8px}.recipe-hero>div>p:last-child{font-size:18px;line-height:1.45;max-width:650px}.recipe-moka{text-align:center}.recipe-moka img{display:block;width:190px;max-width:100%;margin:auto;filter:drop-shadow(7px 7px 0 var(--yellow))}.recipe-moka p{display:inline-block;background:var(--ink);color:var(--white);font-size:11px;line-height:1.35;text-align:left;padding:9px 12px;margin:-4px 0 0}.recipe-layout{display:grid;grid-template-columns:minmax(330px,.78fr) minmax(0,1.42fr);gap:24px;align-items:start}.recipe-controls,.recipe-result{border:2px solid var(--ink);background:var(--white);padding:24px}.recipe-controls{display:grid;gap:15px}.recipe-section-heading{display:flex;align-items:flex-start;gap:12px;border-top:2px solid var(--ink);padding-top:20px;margin-top:8px}.recipe-section-heading:first-child{border-top:0;padding-top:0;margin-top:0}.recipe-section-heading>span{display:grid;place-items:center;min-width:38px;height:38px;background:var(--ink);color:var(--white);font-weight:900}.recipe-section-heading .eyebrow{margin-bottom:5px}.recipe-section-heading h2{font-size:22px;letter-spacing:-.8px;margin:0}.recipe-input-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.recipe-input-grid label:last-child{grid-column:1/-1}.goal-grid{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.goal-grid label{display:block}.goal-grid input{position:absolute;opacity:0;pointer-events:none}.goal-grid span{display:grid;gap:3px;background:var(--paper);border:2px solid transparent;padding:12px;cursor:pointer;font-size:13px;font-weight:900;min-height:69px}.goal-grid small{font-size:10px;color:var(--muted);font-weight:normal}.goal-grid input:checked+span{background:var(--yellow);border-color:var(--ink);box-shadow:3px 3px 0 var(--ink)}.goal-grid input:focus-visible+span{outline:3px solid var(--pink);outline-offset:2px}.recipe-actions{display:flex;gap:10px;flex-wrap:wrap}.recipe-actions .primary{margin-top:0}.recipe-result{position:sticky;top:18px}.result-topline{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.result-topline h2{font-size:34px;letter-spacing:-1.5px;margin:0}.recipe-context{color:var(--muted);font-size:13px;margin:7px 0 0}.recipe-badge{background:var(--pink);border:2px solid var(--ink);padding:6px 9px;font-size:9px;font-weight:900;letter-spacing:1px;white-space:nowrap}.recipe-summary{font-size:17px;line-height:1.45;max-width:720px}.recipe-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:22px 0}.recipe-kpis div{background:var(--paper);border:1px solid var(--ink);padding:13px}.recipe-kpis strong{display:block;font-size:23px;letter-spacing:-.5px}.recipe-kpis small{display:block;text-transform:uppercase;font-size:9px;font-weight:900;letter-spacing:1px;margin-top:4px}.recipe-scale{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);padding:16px 0;margin:22px 0}.recipe-scale>div:first-child{display:flex;justify-content:space-between;font-size:10px;font-weight:900;text-transform:uppercase}.recipe-scale-line{height:6px;background:linear-gradient(90deg,var(--pink),var(--blue));position:relative;margin:9px 5px}.recipe-scale-line i{position:absolute;width:18px;height:18px;border-radius:50%;background:var(--yellow);border:3px solid var(--ink);top:50%;transform:translate(-50%,-50%);transition:left .25s ease}.recipe-scale p{font-size:12px;color:var(--muted);margin:8px 0 0}.recipe-detail-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:24px}.recipe-steps{counter-reset:steps;list-style:none;padding:0;margin:0;display:grid;gap:8px}.recipe-steps li{counter-increment:steps;display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start;border-top:1px solid #d1cdc4;padding-top:9px;font-size:13px;line-height:1.4}.recipe-steps li::before{content:counter(steps);display:grid;place-items:center;width:30px;height:30px;background:var(--ink);color:var(--white);font-weight:900}.recipe-reasons{padding-left:18px;margin:0;display:grid;gap:8px;font-size:13px;line-height:1.4}.recipe-torpedo{background:var(--yellow);border:2px solid var(--ink);padding:14px;margin-top:18px;font-size:12px;line-height:1.4}.recipe-torpedo p{margin:6px 0 0}.recipe-disclaimer{font-size:11px;color:var(--muted);border-top:1px solid #d1cdc4;padding-top:14px;margin-top:22px}.recipe-result .result-actions{margin-top:16px}.recipe-result .primary{margin-top:0}
.competition-match{display:flex;justify-content:space-between;align-items:center;gap:18px;background:var(--paper);border:2px dashed var(--ink);padding:15px;margin-top:22px}.competition-match b{font-size:15px}.competition-match p{font-size:12px;line-height:1.4;margin:4px 0}.competition-match small{display:block;color:var(--muted);font-size:10px}.competition-match .secondary{flex:0 0 auto;margin:0}
.competition-library{border-top:3px solid var(--ink);margin-top:64px;padding-top:34px}.competition-library-head{display:grid;grid-template-columns:1.05fr .95fr;gap:45px;align-items:end}.competition-library-head h2{font-size:clamp(38px,5.5vw,64px);letter-spacing:-3px;line-height:.95;margin:0}.competition-library-head h2 em{font-style:normal;background:var(--yellow);padding:0 6px}.competition-library-head>p{font-size:15px;line-height:1.55;margin:0}.competition-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;background:var(--ink);padding:14px;margin-top:30px}.competition-filters label{color:var(--white);font-size:9px;letter-spacing:1px;text-transform:uppercase;font-weight:900}.competition-filters select{margin-top:7px;background:var(--white);border-color:var(--white)}.competition-count{display:flex;align-items:baseline;gap:10px;margin:22px 0 13px}.competition-count strong{font-size:34px;line-height:1}.competition-count span{font-size:10px;text-transform:uppercase;letter-spacing:1px;font-weight:900}.competition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.competition-card{background:var(--white);border:2px solid var(--ink);padding:20px;display:flex;flex-direction:column;transition:box-shadow .2s,transform .2s}.competition-card.is-highlighted{box-shadow:8px 8px 0 var(--pink);transform:translate(-3px,-3px)}.competition-card-top{display:flex;justify-content:space-between;align-items:center;font-size:9px;font-weight:900;letter-spacing:1px;text-transform:uppercase}.competition-tier{display:inline-block;border:1px solid var(--ink);padding:5px 7px}.competition-tier.world{background:var(--yellow)}.competition-tier.national{background:var(--blue)}.competition-card h3{font-size:29px;letter-spacing:-1px;margin:17px 0 1px}.competition-title{font-size:10px;text-transform:uppercase;letter-spacing:1px;font-weight:900;margin:0 0 16px}.competition-coffee{background:var(--paper);border-left:6px solid var(--pink);padding:12px;display:grid;gap:3px;font-size:12px}.competition-coffee span{color:var(--muted)}.competition-kpis{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--ink);margin-top:12px}.competition-kpis span{padding:9px 6px;border-right:1px solid var(--ink);font-size:8px;text-transform:uppercase}.competition-kpis span:last-child{border-right:0}.competition-kpis b{display:block;font-size:13px;text-transform:none;white-space:nowrap}.competition-method{font-size:12px;line-height:1.45;margin:13px 0 5px}.competition-insight{font-size:13px;line-height:1.45;margin:6px 0 13px}.competition-card details{border-top:1px solid #d1cdc4;border-bottom:1px solid #d1cdc4;padding:10px 0;font-size:12px}.competition-card summary{cursor:pointer;font-weight:900}.competition-card details ol{padding-left:20px;line-height:1.45}.competition-card details li+li{margin-top:6px}.competition-tags{display:flex;gap:5px;flex-wrap:wrap;margin:13px 0}.competition-tags span{background:var(--paper);border:1px solid var(--ink);padding:4px 6px;font-size:8px;text-transform:uppercase;font-weight:900;letter-spacing:.5px}.competition-source{font-size:10px;color:var(--ink);font-weight:900;margin-top:auto;text-decoration:underline}.competition-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.competition-actions button{margin:0}.competition-actions .primary{padding:10px 13px}.competition-actions button:disabled{cursor:not-allowed;opacity:.58}.competition-reference{font-size:9px;letter-spacing:.5px}.competition-empty{grid-column:1/-1;border:2px dashed var(--ink);padding:30px;text-align:center}.competition-note{border:2px dashed var(--ink);padding:16px;font-size:11px;line-height:1.45;margin:16px 0 60px}
.recipe-mode-nav{display:flex;gap:9px;flex-wrap:wrap;margin:-8px 0 34px}.recipe-mode-nav a{display:inline-block;border:2px solid var(--ink);background:var(--white);color:var(--ink);padding:11px 14px;text-decoration:none;font-size:11px;font-weight:900}.recipe-mode-nav a:hover,.recipe-mode-nav .is-primary{background:var(--yellow);box-shadow:4px 4px 0 var(--ink)}
.custom-recipe-library{border-top:3px solid var(--ink);margin-top:64px;padding-top:34px}.custom-recipe-form{background:var(--white);border:2px solid var(--ink);padding:26px;margin-top:30px}.custom-recipe-section{display:flex;gap:13px;align-items:center;border-top:2px solid var(--ink);padding-top:22px;margin:27px 0 15px}.custom-recipe-section:first-child{border-top:0;padding-top:0;margin-top:0}.custom-recipe-section>span{display:grid;place-items:center;width:40px;height:40px;flex:0 0 40px;background:var(--ink);color:var(--white);font-weight:900}.custom-recipe-section .eyebrow{margin:0 0 3px}.custom-recipe-section h3{font-size:24px;letter-spacing:-1px;margin:0}.custom-recipe-grid{display:grid;gap:12px}.custom-recipe-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.custom-recipe-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.custom-recipe-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.custom-recipe-wide{grid-column:1/-1}.custom-recipe-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-top:2px solid var(--ink);margin-top:24px;padding-top:20px}.custom-recipe-actions .primary{margin:0}.custom-recipe-actions .save-state{margin:0 0 0 auto}.recipe-history{margin-top:34px}.recipe-history-head{display:flex;justify-content:space-between;gap:25px;align-items:end}.recipe-history-head h3{font-size:34px;letter-spacing:-1.5px;margin:0}.recipe-history-filters{display:grid;grid-template-columns:minmax(210px,1fr) minmax(170px,.7fr);gap:10px;min-width:min(100%,470px)}.custom-recipe-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.custom-recipe-card{display:flex;flex-direction:column;background:var(--white);border:2px solid var(--ink);padding:20px}.custom-recipe-card-top{display:flex;justify-content:space-between;gap:12px;font-size:9px;font-weight:900;letter-spacing:1px;text-transform:uppercase}.custom-recipe-card h4{font-size:27px;letter-spacing:-1px;margin:15px 0 2px}.custom-recipe-card .custom-recipe-byline{font-size:11px;color:var(--muted);margin:0 0 14px}.custom-recipe-coffee{background:var(--paper);border-left:6px solid var(--pink);padding:11px;font-size:12px;line-height:1.45}.custom-recipe-coffee b{display:block}.custom-recipe-kpis{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--ink);margin-top:12px}.custom-recipe-kpis span{padding:9px 6px;border-right:1px solid var(--ink);font-size:8px;text-transform:uppercase}.custom-recipe-kpis span:last-child{border-right:0}.custom-recipe-kpis b{display:block;font-size:13px;text-transform:none;white-space:nowrap}.custom-recipe-equipment{font-size:12px;line-height:1.5;margin:13px 0}.custom-recipe-card details{border-top:1px solid #d1cdc4;border-bottom:1px solid #d1cdc4;padding:10px 0;font-size:12px}.custom-recipe-card summary{cursor:pointer;font-weight:900}.custom-recipe-card details ol{padding-left:22px;line-height:1.45}.custom-recipe-card details li+li{margin-top:6px}.custom-recipe-objective{display:inline-block;align-self:flex-start;background:var(--blue);border:1px solid var(--ink);padding:5px 7px;font-size:9px;font-weight:900;margin:13px 0}.custom-recipe-notes{font-size:12px;color:var(--muted);line-height:1.45}.custom-recipe-card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:14px}.custom-recipe-card-actions button{margin:0}.custom-recipe-empty{grid-column:1/-1;border:2px dashed var(--ink);padding:30px;text-align:center}.recipe-history .help{margin:0 0 16px}
.custom-recipe-roast{display:block;background:var(--yellow);border:1px solid var(--ink);padding:4px 6px;margin-top:8px;font-size:9px;font-weight:900;letter-spacing:.4px;text-transform:uppercase}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:900px){.recipe-layout{grid-template-columns:1fr}.recipe-result{position:static}.recipe-hero{grid-template-columns:1fr 190px}.recipe-detail-grid{grid-template-columns:1fr 1fr}.competition-library-head{grid-template-columns:1fr}.competition-filters{grid-template-columns:1fr 1fr}.custom-recipe-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.recipe-history-head{align-items:stretch;flex-direction:column}.recipe-history-filters{width:100%}}
@media(max-width:700px){.competition-grid,.custom-recipe-cards{grid-template-columns:1fr}.custom-recipe-grid.three{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.recipe-page{padding-top:38px}.recipe-hero{grid-template-columns:1fr}.recipe-hero h1{letter-spacing:-3px}.recipe-moka{width:175px;margin:auto}.recipe-input-grid,.goal-grid,.recipe-detail-grid,.custom-recipe-grid.two,.custom-recipe-grid.three,.custom-recipe-grid.four,.recipe-history-filters{grid-template-columns:1fr}.recipe-input-grid label:last-child{grid-column:auto}.recipe-controls,.recipe-result,.custom-recipe-form{padding:17px}.recipe-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.result-topline{flex-direction:column}.result-topline h2{font-size:29px}.recipe-badge{align-self:flex-start}.competition-match{align-items:flex-start;flex-direction:column}.competition-filters{grid-template-columns:1fr}.competition-library-head h2{letter-spacing:-2px}.competition-kpis,.custom-recipe-kpis{grid-template-columns:1fr 1fr}.competition-kpis span:nth-child(2),.custom-recipe-kpis span:nth-child(2){border-right:0}.competition-kpis span:nth-child(-n+2),.custom-recipe-kpis span:nth-child(-n+2){border-bottom:1px solid var(--ink)}.custom-recipe-actions .save-state{width:100%;margin:0}.recipe-mode-nav a{flex:1 1 auto;text-align:center}}
