:root{color:#e8ddd0;background-color:#0e0c0a}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:#0e0c0a}#root{min-height:100vh}.lab{--lab-amber: #d4821a;--lab-amber-muted: #c8783a;min-height:100vh;background:#0e0c0a;color:#e8ddd0;font-family:Georgia,Times New Roman,Times,serif;-webkit-font-smoothing:antialiased}.lab__header{position:relative;text-align:left;padding:1.25rem clamp(1rem,3vw,2rem);margin:0;overflow:hidden;border-bottom:1px solid #2a2420;background:#120f0d}.lab__header:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:.12;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:overlay}.lab__title{position:relative;z-index:1;margin:0;font-size:2.25rem;line-height:1.15;font-weight:400;letter-spacing:-.02em;color:#e8ddd0}.lab__layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:clamp(1rem,2.5vw,2rem);padding:clamp(1rem,2.5vw,2rem);padding-bottom:4rem;width:100%;max-width:none;box-sizing:border-box}@media(max-width:900px){.lab__layout{grid-template-columns:1fr}}.lab__col{display:flex;flex-direction:column;gap:1.5rem;min-width:0}.lab__section{display:flex;flex-direction:column;gap:.75rem}.lab__label{margin:0;font-size:.875rem;font-weight:400;text-transform:uppercase;letter-spacing:.2em;color:#9e8f84}.lab__dose-hint{margin:0;font-size:.875rem;line-height:1.55;color:#9e8f84;text-align:left}.lab__dose-hint strong{color:var(--lab-amber-muted)}.lab__input-sublabel{font-weight:400;text-transform:none;letter-spacing:normal;color:#9e8f84;font-size:.8em}.lab__output{display:flex;align-items:center;margin:0;min-height:2.75rem;opacity:1;cursor:default;border-style:solid;border-color:#2a2420;background:#241f1b;color:#e8ddd0}.lab__segment{display:flex;flex-wrap:wrap;gap:.5rem}.lab__segment-btn{flex:1 1 auto;min-width:8rem;padding:.625rem 1rem;border-radius:.5rem;border:1px solid #3b332f;background:#161210;color:#e8ddd0;font:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.lab__segment-btn:hover{border-color:var(--lab-amber)}.lab__segment-btn--active{background:var(--lab-amber-muted);border-color:var(--lab-amber-muted);color:#161210}.lab__chips{display:flex;flex-wrap:wrap;gap:.5rem}.lab__chips--wrap{gap:.5rem .5rem}.lab__chips--scroll{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding-bottom:.35rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.lab__chips--scroll .lab__chip{flex-shrink:0}.lab__chip{padding:.375rem .75rem;border-radius:999px;border:1px solid #3b332f;background:#161210;color:#e8ddd0;font:inherit;font-size:.875rem;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.lab__chip:hover{border-color:var(--lab-amber)}.lab__chip--active{background:var(--lab-amber-muted);border-color:var(--lab-amber-muted);color:#161210}.lab__section--method{padding-bottom:.25rem}.lab__method-header{margin-bottom:.75rem}.lab__method-header .lab__label{margin-bottom:.4rem}.lab__espresso-focus{padding:.6rem .65rem;border-radius:.45rem;border:1px solid #342c26;background:#d4821a0f}.lab__espresso-focus-lead{margin:0;font-size:.82rem;line-height:1.45;color:#cbbfb3}.lab__espresso-focus-lead strong{color:#e8ddd0;font-weight:600}.lab__espresso-focus-hint{margin:.5rem 0 0;font-size:.75rem;line-height:1.4;color:#7a6d63}.lab__espresso-focus-hint strong{color:#9e8f84}.lab__method-active{margin:0;padding:.45rem .65rem;border-radius:.4rem;background:#d4821a17;border:1px solid #342c26;display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .65rem;font-size:.82rem;color:#9e8f84}.lab__method-active-label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#7a6d63}.lab__method-active-name{color:#e8ddd0;font-weight:600}.lab__method-active-ratio{font-family:DM Mono,ui-monospace,monospace;color:var(--lab-amber);font-size:.8rem}.lab__method-groups{display:flex;flex-direction:column;gap:1rem}.lab__method-group{display:flex;flex-direction:column;gap:.5rem}.lab__method-group-head{padding-right:.25rem}.lab__method-group-title{margin:0;font-size:.82rem;font-weight:600;color:#c9b8a8;letter-spacing:.02em}.lab__method-group-hint{margin:.2rem 0 0;font-size:.72rem;line-height:1.35;color:#6b5f56}.lab__method-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.75rem,1fr));gap:.45rem}.lab__method-card{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;padding:.55rem .6rem;min-height:3.75rem;text-align:left;border-radius:.45rem;border:1px solid #332b26;background:linear-gradient(165deg,#181411,#12100e);color:#e8ddd0;font:inherit;cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;box-shadow:0 1px #ffffff08}.lab__method-card:hover{border-color:#5c4d42}.lab__method-card:focus-visible{outline:2px solid var(--lab-amber);outline-offset:2px}.lab__method-card--active{border-color:var(--lab-amber-muted);background:linear-gradient(165deg,#d4821a24,#d4821a0a);box-shadow:0 0 0 1px #d4821a40,0 1px #ffffff0a}.lab__method-card-name{font-weight:600;font-size:.88rem;line-height:1.2;color:#f0e8df}.lab__method-card--active .lab__method-card-name{color:#fff8f0}.lab__method-card-metrics{display:flex;flex-wrap:wrap;gap:.15rem .25rem;align-items:center;font-size:.68rem;line-height:1.3;color:#a89888}.lab__method-card-metric--muted{opacity:.48}.lab__method-card-dot{opacity:.35;-webkit-user-select:none;user-select:none}.lab__method-card-strong{font-family:DM Mono,ui-monospace,monospace;font-weight:500;color:#d4c4b4}.lab__method-card--active .lab__method-card-strong{color:var(--lab-amber)}.lab__grid{display:grid;gap:1rem}@media(min-width:768px){.lab__grid--inputs{grid-template-columns:repeat(2,minmax(0,1fr))}}.lab__input-block{display:flex;flex-direction:column;gap:.35rem;text-align:left}.lab__input-label{font-size:.875rem;color:#9e8f84}.lab__input{width:100%;padding:.625rem .75rem;border-radius:.5rem;border:1px solid #3b332f;background:#120f0d;color:#e8ddd0;font:inherit;font-size:1rem;outline:none;transition:border-color .15s ease}.lab__input:focus{border-color:var(--lab-amber)}.lab__ratio-hero{padding:1rem 1.25rem;border-radius:.75rem;border:1px solid #2a2420;background:#161210;text-align:left}.lab__ratio-hero-label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.14em;color:#9e8f84;margin-bottom:.35rem}.lab__ratio-hero-value{font-family:DM Mono,ui-monospace,Cascadia Code,monospace;font-size:clamp(1.4rem,3vw,2rem);font-weight:500;color:var(--lab-amber);letter-spacing:-.02em}.lab__metrics{display:grid;gap:.75rem}@media(min-width:640px){.lab__metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1100px){.lab__metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}.lab__metric{padding:1rem;border-radius:.75rem;border:1px solid #2a2420;background:#161210;text-align:left}.lab__metric-label{margin:0 0 .35rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:#9e8f84;font-weight:400}.lab__metric-value{margin:0;font-size:1.125rem;color:var(--lab-amber-muted)}.lab__section--yield{padding:1rem;border-radius:.75rem;border:1px solid #2a2420;background:#120f0d}.lab__yield-track{position:relative;height:.75rem;margin-top:.5rem;border-radius:999px;background:#241f1b;overflow:visible}.lab__yield-ideal{position:absolute;top:0;height:100%;border-radius:999px;background:#d4821a47;pointer-events:none}.lab__yield-marker{position:absolute;top:50%;width:.75rem;height:.75rem;margin-left:-.375rem;border-radius:50%;background:var(--lab-amber);transform:translateY(-50%);box-shadow:0 0 0 2px #0e0c0a;pointer-events:none;transition:left .35s ease-out}.lab__yield-marker--hidden{opacity:0}.lab__yield-scale{display:flex;justify-content:space-between;margin-top:.35rem;font-size:.75rem;color:#9e8f84}.lab__tabs{display:flex;flex-wrap:wrap;gap:.5rem;border-bottom:1px solid #2a2420;padding-bottom:.35rem}.lab__chart-tabs{margin-top:.25rem}.lab__tab{padding:.35rem .75rem;border:none;background:transparent;color:#9e8f84;font:inherit;font-size:.95rem;cursor:pointer;border-radius:.35rem;transition:color .15s ease,background .15s ease}.lab__tab:hover{color:#e8ddd0}.lab__tab--active{color:var(--lab-amber);background:#d4821a1f}.lab__chart{padding:0;text-align:left}.lab__chart-title{margin:0 0 1rem;font-size:1.15rem;font-weight:500;color:#e8ddd0}.lab__chart-empty{margin:0;color:#9e8f84;font-size:.9rem}.lab__pour-diagram{margin:0;padding:0}.lab__pour-diagram-head{margin-bottom:.75rem}.lab__pour-diagram-title{margin-bottom:.5rem}.lab__pour-diagram-summary{margin:0;display:flex;flex-wrap:wrap;gap:.35rem .5rem;align-items:center}.lab__pour-diagram-pill{display:inline-flex;align-items:center;padding:.2rem .55rem;border-radius:999px;font-size:.78rem;color:#d4c4b4;background:#d4821a17;border:1px solid #342c26;font-family:DM Mono,ui-monospace,monospace}.lab__pour-diagram-card{border:1px solid #2a2420;border-radius:.45rem;background:linear-gradient(180deg,#171310,#14110f);overflow:hidden}.lab__pour-diagram-svg{width:100%;height:auto;display:block}.lab__diag-lane-label{fill:#7a6d63;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.lab__diag-lane-caption{fill:#8a7b70;font-size:11px}.lab__diag-lane-caption--muted{fill:#5c534a;font-size:10px;font-family:DM Mono,ui-monospace,monospace}.lab__diag-axis-base{stroke:#4d443c;stroke-width:1.25}.lab__diag-axis-line{stroke:#3d3630;stroke-width:1}.lab__diag-grid-v{stroke:#26211d;stroke-width:1}.lab__diag-grid-h{stroke:#221e1b;stroke-width:1}.lab__diag-tick{fill:#7a6d63;font-size:10px;font-family:DM Mono,ui-monospace,monospace}.lab__diag-tick-side{fill:#6b5f56;font-size:10px;font-family:DM Mono,ui-monospace,monospace}.lab__diag-capsule-text{fill:#f5ebe0;font-size:11px;font-weight:600;pointer-events:none}.lab__diag-capsule-sub{fill:#f5ebe0c7;font-size:10px;font-family:DM Mono,ui-monospace,monospace;pointer-events:none}.lab__diag-dot{fill:var(--lab-amber);stroke:#1a1613;stroke-width:1}.lab__diag-marker-label{fill:#d4c4b4;font-size:9px;font-family:DM Mono,ui-monospace,monospace;pointer-events:none}.lab__diag-legend{fill:#7a6d63;font-size:10px}.lab__pour-diagram-facts{margin:0;padding:.85rem 1rem 1rem;display:grid;gap:.65rem 1rem;border-top:1px solid #2a2420;font-size:.8rem}.lab__pour-diagram-facts dt{margin:0;color:#8a7b70;font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.lab__pour-diagram-facts dd{margin:.2rem 0 0;color:#cbbfb3;line-height:1.45}.lab__pour-diagram-checklist{display:flex;flex-wrap:wrap;gap:.4rem}.lab__pour-diagram-chip{display:inline-flex;flex-direction:column;gap:.1rem;padding:.35rem .5rem;border-radius:.35rem;background:#1e1a16;border:1px solid #2e2823}.lab__pour-diagram-chip strong{color:#e8ddd0;font-size:.78rem}.lab__pour-diagram-chip-meta{font-family:DM Mono,ui-monospace,monospace;font-size:.68rem;color:#9e8f84}.lab__chart-stages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.lab__chart-stage-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.35rem 1rem;margin-bottom:.35rem}.lab__chart-stage-label{font-weight:500;color:#e8ddd0}.lab__chart-stage-meta{font-size:.8rem;color:#9e8f84;font-family:DM Mono,ui-monospace,monospace}.lab__chart-bar-track{height:1.35rem;border-radius:.35rem;background:#241f1b;overflow:hidden;border:1px solid #2a2420}.lab__chart-bar-fill{height:100%;background:linear-gradient(90deg,#8a5528,var(--lab-amber));border-radius:.35rem;transition:width .3s ease-out;min-width:4px}.lab__chart-bar-foot{display:flex;justify-content:space-between;font-size:.72rem;color:#6b5f56;margin-top:.25rem}.lab__chart-timecharts{margin-top:1.75rem;display:flex;flex-direction:column;gap:1.5rem}.lab__chart-subtitle{margin:0 0 .35rem;font-size:1rem;font-weight:500;color:#d4c4b4}.lab__flow-note{margin:0 0 .65rem;font-size:.78rem;line-height:1.45;color:#7a6d63}.lab__flow-note strong{color:#9e8f84}.lab__flow-svg-wrap{border-radius:.4rem;border:1px solid #2a2420;background:#1a1613;padding:.35rem .5rem .15rem}.lab__flow-svg{width:100%;height:auto;display:block;vertical-align:middle}.lab__flow-axis-label{fill:#6b5f56;font-size:9px;font-family:DM Mono,ui-monospace,monospace}.lab__flow-axis-line{stroke:#3d3630;stroke-width:1}.lab__flow-grid-v,.lab__flow-grid-h{stroke:#27211d;stroke-width:1}.lab__flow-tick{fill:#6b5f56;font-size:9px;font-family:DM Mono,ui-monospace,monospace}.lab__flow-tick--y{text-anchor:start}.lab__flow-outline{stroke:var(--lab-amber)}.lab__cum-fill{fill:#d4821a1f}.lab__cum-line{stroke:#c9b8a8;stroke-width:1.75;vector-effect:non-scaling-stroke}.lab__flow-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.5rem 1rem;margin:.6rem 0 0;font-size:.78rem}.lab__flow-stats dt{margin:0;color:#6b5f56;font-weight:500}.lab__flow-stats dd{margin:.1rem 0 0;color:#e8ddd0;font-family:DM Mono,ui-monospace,monospace}.lab__timer{padding:.5rem 0 0;text-align:left}.lab__timer-target{margin:0 0 .75rem;font-size:.9rem;color:#9e8f84}.lab__timer-target strong{color:#e8ddd0;font-family:DM Mono,ui-monospace,monospace}.lab__timer-display{font-family:DM Mono,ui-monospace,monospace;font-size:clamp(3.5rem,10vw,5.5rem);font-weight:500;line-height:1;color:var(--lab-amber);letter-spacing:-.04em;margin:0 0 1rem}.lab__timer-controls{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.lab__timer-btn{padding:.5rem 1rem;border-radius:.5rem;border:1px solid #3b332f;background:#161210;color:#e8ddd0;font:inherit;cursor:pointer;min-height:44px}.lab__timer-btn:hover:not(:disabled){border-color:var(--lab-amber)}.lab__timer-btn:disabled{opacity:.45;cursor:not-allowed}.lab__timer-btn--primary{min-height:56px;min-width:7rem;background:var(--lab-amber);border-color:var(--lab-amber);color:#161210;font-weight:600}.lab__timer-next{margin:0 0 1rem;font-size:.95rem;color:#e8ddd0}.lab__timer-next--muted{color:#9e8f84}.lab__timer-stages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.lab__timer-stage{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem .65rem;border-radius:.35rem;transition:background .2s ease,box-shadow .2s ease}.lab__timer-stage-mark{flex-shrink:0;font-size:1rem;color:var(--lab-amber-muted)}.lab__timer-stage-text{font-size:.9rem;color:#e8ddd0}.lab__timer-stage-ml{color:#9e8f84}.lab__timer-stage--done{opacity:.55}.lab__timer-stage--done .lab__timer-stage-mark{color:#9e8f84}.lab__timer-stage--next{background:#d4821a1a;box-shadow:0 0 0 1px #d4821a59;animation:lab-timer-pulse 2s ease-in-out infinite}@keyframes lab-timer-pulse{0%,to{box-shadow:0 0 0 1px #d4821a59}50%{box-shadow:0 0 12px #d4821a59}}.lab__panel{padding:1.25rem;border-radius:.75rem;border:1px solid #2a2420;background:#161210;text-align:left}.lab__panel-title{margin:0 0 .75rem;font-size:1.25rem;font-weight:500;color:#e8ddd0}.lab__panel-lead{margin:0 0 1rem;font-size:1rem;line-height:1.6;color:var(--lab-amber-muted)}.lab__panel-body{margin:0 0 1rem;font-size:.95rem;line-height:1.65;color:#9e8f84}.lab__panel-body:last-child{margin-bottom:0}.lab__panel-note{margin:1rem 0 0;font-size:.875rem;line-height:1.55;color:#9e8f84;font-style:italic}.lab__steps{margin:0 0 1rem;padding-left:1.25rem;color:#e8ddd0;line-height:1.65}.lab__steps li{margin-bottom:.35rem}.lab__steps li:last-child{margin-bottom:0}.lab__method-notes{border:1px solid #2a2420;border-radius:.75rem;background:#120f0d;overflow:hidden}.lab__method-notes-summary{padding:.85rem 1rem;cursor:pointer;list-style:none;font-size:.95rem;color:#9e8f84;-webkit-user-select:none;user-select:none}.lab__method-notes-summary::-webkit-details-marker{display:none}.lab__method-notes-body{padding:0 1rem 1rem;border-top:1px solid #2a2420}.lab__save-recipe-trigger{margin-top:.75rem;padding:.5rem .85rem;border-radius:.5rem;border:1px dashed var(--lab-amber-muted);background:transparent;color:var(--lab-amber-muted);font:inherit;font-size:.9rem;cursor:pointer;width:fit-content}.lab__save-recipe-trigger:hover{border-style:solid;color:var(--lab-amber)}.lab__saved-recipes{border:1px solid #2a2420;border-radius:.75rem;background:#120f0d;overflow:hidden}.lab__saved-recipes-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:.85rem 1rem;border:none;background:transparent;color:#e8ddd0;font:inherit;font-size:.95rem;cursor:pointer;text-align:left}.lab__saved-recipes-toggle:hover{background:#d4821a0f}.lab__saved-recipes-chev{color:#9e8f84;font-size:.75rem}.lab__saved-recipes-panel{border-top:1px solid #2a2420;padding:.75rem;max-height:16rem;overflow-y:auto}.lab__saved-recipes-empty{margin:0;font-size:.875rem;color:#9e8f84;line-height:1.5}.lab__saved-recipes-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.lab__saved-recipe-card{display:flex;align-items:stretch;gap:.35rem;border-radius:.5rem;border:1px solid #2a2420;background:#161210;overflow:hidden}.lab__saved-recipe-load{flex:1;text-align:left;padding:.65rem .75rem;border:none;background:transparent;color:inherit;font:inherit;cursor:pointer}.lab__saved-recipe-load:hover{background:#d4821a14}.lab__saved-recipe-name{display:block;font-weight:500;color:#e8ddd0}.lab__saved-recipe-meta{display:block;font-size:.8rem;color:#9e8f84;margin-top:.2rem}.lab__saved-recipe-delete{flex-shrink:0;width:2.25rem;border:none;background:#241f1b;color:#9e8f84;font-size:1.25rem;line-height:1;cursor:pointer}.lab__saved-recipe-delete:hover{background:#3b2f28;color:#e8ddd0}.lab__recipe-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#080605bf;display:flex;align-items:center;justify-content:center;padding:1rem}.lab__recipe-modal{width:100%;max-width:26rem;max-height:90vh;overflow-y:auto;padding:1.25rem;border-radius:.75rem;border:1px solid #2a2420;background:#161210;box-shadow:0 20px 50px #00000080}.lab__recipe-modal-title{margin:0 0 1rem;font-size:1.25rem;font-weight:500;color:#e8ddd0}.lab__recipe-modal-field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem;font-size:.875rem;color:#9e8f84}.lab__recipe-modal-textarea{resize:vertical;min-height:4rem;font-family:inherit}.lab__recipe-modal-summary{display:grid;gap:.35rem;font-size:.8rem;color:#9e8f84;margin-bottom:1rem;padding:.75rem;border-radius:.5rem;background:#120f0d;border:1px solid #2a2420}.lab__recipe-modal-summary strong{color:#c4b5a8;margin-right:.35rem}.lab__recipe-modal-actions{display:flex;justify-content:flex-end;gap:.5rem}.lab__recipe-modal-btn{padding:.5rem 1rem;border-radius:.5rem;border:1px solid #3b332f;background:#120f0d;color:#e8ddd0;font:inherit;cursor:pointer}.lab__recipe-modal-btn--primary{background:var(--lab-amber);border-color:var(--lab-amber);color:#161210;font-weight:600}.lab__recipe-modal-btn--primary:disabled{opacity:.45;cursor:not-allowed}.lab__tagline{position:relative;z-index:1;margin:.5rem 0 0;font-size:.95rem;line-height:1.45;color:#9e8f84;font-family:Georgia,Times New Roman,Times,serif;max-width:36rem}.lab__method-scroller-wrap{display:flex;flex-direction:column;gap:1rem}.lab__method-scroller-group-label{margin:0;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:#7a6d63}.lab__method-scroller{display:grid;grid-template-columns:repeat(auto-fill,minmax(9.25rem,1fr));gap:.65rem;padding:.35rem 0}.lab__mcard{width:auto;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;padding:.65rem .75rem;text-align:left;border-radius:.55rem;border:1px solid #332b26;background:linear-gradient(165deg,#181411,#12100e);color:#e8ddd0;font:inherit;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease;box-shadow:0 1px #ffffff08;position:relative}.lab__mcard:hover{transform:translateY(-3px);border-color:#5c4d42}.lab__mcard:focus-visible{outline:2px solid var(--lab-amber);outline-offset:2px}.lab__mcard--active{border-color:var(--lab-amber);transform:scale(1.03);box-shadow:0 0 16px #d4821a66,0 0 0 1px #d4821a59}.lab__mcard-name{font-weight:700;font-size:.92rem;color:#f0e8df}.lab__mcard-cat{font-size:.72rem;color:#8a7b70}.lab__mcard-ratio-chip{font-family:DM Mono,ui-monospace,monospace;font-size:.78rem;color:var(--lab-amber);padding:.15rem .45rem;border-radius:999px;background:#d4821a1a;border:1px solid #342c26}.lab__mcard-last{font-size:.68rem;color:#6b5f56;line-height:1.3;margin-top:.15rem}.lab__mcard-badge{position:absolute;top:.4rem;right:.45rem;font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#161210;background:var(--lab-amber-muted);padding:.12rem .35rem;border-radius:999px}.lab__my-recipes{border:1px solid #2a2420;border-radius:.75rem;background:#120f0d;padding:.85rem 1rem 1rem;position:relative}.lab__my-recipes-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.65rem;margin-bottom:.75rem}.lab__my-recipes-title{margin:0;font-size:.875rem;font-weight:400;text-transform:uppercase;letter-spacing:.2em;color:#9e8f84}.lab__my-recipes-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.lab__my-recipes-linkish{padding:.35rem .5rem;border:none;background:transparent;color:#9e8f84;font:inherit;font-size:.82rem;cursor:pointer;text-decoration:underline;text-underline-offset:2px;min-height:44px}.lab__my-recipes-linkish:hover:not(:disabled){color:var(--lab-amber)}.lab__my-recipes-linkish:disabled{opacity:.35;cursor:not-allowed}.lab__my-recipes-add{padding:.45rem .85rem;border-radius:.5rem;border:1px solid var(--lab-amber);background:var(--lab-amber);color:#161210;font:inherit;font-size:.88rem;font-weight:600;cursor:pointer;min-height:44px;transition:filter .15s ease}.lab__my-recipes-add:hover:not(:disabled){filter:brightness(1.08)}.lab__my-recipes-add:disabled{opacity:.4;cursor:not-allowed}.lab__my-recipes-add--block{width:100%}.lab__my-recipes-empty-card{text-align:center;padding:1.5rem 1rem;border-radius:.55rem;border:1px dashed #342c26;background:#161210;color:#9e8f84}.lab__my-recipes-empty-card p{margin:0 0 1rem;font-size:.9rem}.lab__my-recipes-empty-plus{width:3.5rem;height:3.5rem;border-radius:50%;border:2px solid var(--lab-amber);background:#d4821a1f;color:var(--lab-amber);font-size:1.75rem;line-height:1;cursor:pointer;margin:0 auto;display:flex;align-items:center;justify-content:center}.lab__my-recipes-scroller{display:grid;grid-template-columns:repeat(auto-fill,minmax(9.25rem,1fr));gap:.6rem;padding-bottom:.35rem}.lab__recipe-mini{min-width:0;display:flex;align-items:stretch;border-radius:.55rem;border:1px solid #332b26;background:linear-gradient(165deg,#181411,#12100e);overflow:hidden}.lab__recipe-mini-load{flex:1;text-align:left;padding:.55rem .6rem;border:none;background:transparent;color:inherit;font:inherit;cursor:pointer;min-width:0}.lab__recipe-mini-load:hover{background:#d4821a0f}.lab__recipe-mini-badge{display:inline-block;font-size:.55rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#161210;background:var(--lab-amber-muted);padding:.1rem .35rem;border-radius:999px;margin-bottom:.35rem}.lab__recipe-mini-name{display:block;font-weight:700;font-size:.88rem;color:#f0e8df}.lab__recipe-mini-meta{display:block;font-size:.72rem;color:#8a7b70;margin-top:.2rem}.lab__recipe-mini-hint{display:block;font-size:.68rem;color:var(--lab-amber-muted);margin-top:.35rem}.lab__recipe-mini-hint.muted{color:#5c534a}.lab__recipe-mini-side{display:flex;flex-direction:column;flex-shrink:0;border-left:1px solid #2a2420;min-width:3.25rem}.lab__recipe-mini-use{min-height:44px;padding:.35rem .5rem;border:none;border-bottom:1px solid #2a2420;background:#d4821a24;color:var(--lab-amber);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer}.lab__recipe-mini-use:hover{background:#d4821a38}.lab__recipe-mini-tools{display:flex;flex-direction:column}.lab__recipe-mini-icon{flex:1;min-width:44px;min-height:44px;border:none;background:#241f1b;color:#9e8f84;font-size:1rem;cursor:pointer;padding:0}.lab__recipe-mini-icon:hover{background:#342c26;color:var(--lab-amber)}.lab__my-recipes-sticky-mobile{display:none}.lab__visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.lab__dose-hint--short{margin:0}.lab__dose-water-row{display:flex;flex-direction:column;gap:.75rem;align-items:stretch}.lab__ratio-between{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.35rem;min-height:48px}.lab__ratio-between-arrow{color:#5c534a;font-size:.85rem;-webkit-user-select:none;user-select:none}.lab__ratio-between-core{display:flex;flex-direction:column;align-items:center;gap:.2rem}.lab__ratio-chip-live{font-family:DM Mono,ui-monospace,monospace;font-size:1.1rem;font-weight:500;color:var(--lab-amber);letter-spacing:-.02em;transition:opacity .15s ease,color .15s ease}.lab__ratio-strength{font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:#9e8f84;transition:opacity .15s ease,color .15s ease}.lab__ratio-strength--muted{opacity:.45}.lab__ratio-strength--strong,.lab__ratio-strength--rich{color:#c9a888}.lab__ratio-strength--balanced{color:var(--lab-amber-muted)}.lab__ratio-strength--light{color:#8a9ec4}.lab__chart-tabs--sticky{position:sticky;top:0;z-index:10;background:#0e0c0a;padding-top:.5rem;margin-top:.35rem;margin-bottom:.35rem;border-bottom:1px solid #2a2420}.lab__chart-panel{min-height:8rem}.lab__onboard-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#080605a6;display:flex;align-items:flex-end;justify-content:center;padding:1rem}@media(min-width:640px){.lab__onboard-overlay{align-items:center}}.lab__onboard-card{position:relative;width:100%;max-width:22rem;padding:1.25rem 1.25rem 1.1rem;border-radius:.75rem;border:1px solid #342c26;background:#161210;box-shadow:0 20px 60px #00000073}.lab__onboard-dismiss{position:absolute;top:.5rem;right:.5rem;width:44px;height:44px;border:none;background:transparent;color:#9e8f84;font-size:1.35rem;line-height:1;cursor:pointer;border-radius:.35rem}.lab__onboard-dismiss:hover{color:var(--lab-amber)}.lab__onboard-step{margin:0 0 .35rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:#6b5f56}.lab__onboard-title{margin:0 0 .5rem;font-size:1.15rem;color:#e8ddd0;font-weight:500}.lab__onboard-body{margin:0 0 1rem;font-size:.9rem;line-height:1.55;color:#9e8f84}.lab__onboard-next{padding:.55rem 1rem;border-radius:.5rem;border:1px solid var(--lab-amber);background:var(--lab-amber);color:#161210;font:inherit;font-weight:600;cursor:pointer;width:100%;min-height:48px}.lab__timer-display--countdown{font-size:clamp(5rem,14vw,6rem);max-width:100%}.lab__timer-display--pulse{animation:lab-timer-clock-pulse .4s ease}@keyframes lab-timer-clock-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.lab__timer-btn--wide{min-height:64px;min-width:6.5rem}.lab__timer-btn--outline{background:transparent;border:1px solid var(--lab-amber-muted);color:var(--lab-amber-muted)}.lab__timer-btn--outline:hover:not(:disabled){border-color:var(--lab-amber);color:var(--lab-amber)}.lab__timer-next--prominent{font-size:1.05rem;color:#e8ddd0;padding:.65rem .75rem;border-radius:.45rem;background:#d4821a14;border:1px solid #342c26}.lab__timer-stage--current{background:#d4821a1f;box-shadow:0 0 0 1px #d4821a73}.lab__timer-stage--current .lab__timer-stage-mark{color:var(--lab-amber)}.lab__timer-stage--flash{animation:lab-timer-stage-flash .4s ease}@keyframes lab-timer-stage-flash{0%,to{background:#d4821a1f}40%{background:#d4821a59}}.lab__timer-feedback{margin-top:1.25rem;padding:1rem;border-radius:.65rem;border:1px solid #342c26;background:#d4821a0d}.lab__timer-feedback-title{margin:0 0 .75rem;font-size:1rem;color:#e8ddd0;font-weight:500}.lab__timer-feedback-moods{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.lab__timer-feedback-btn{flex:1 1 auto;min-height:44px;padding:.45rem .65rem;border-radius:.45rem;border:1px solid #3b332f;background:#161210;color:#e8ddd0;font:inherit;font-size:.82rem;cursor:pointer}.lab__timer-feedback-btn--active{border-color:var(--lab-amber);background:#d4821a26}.lab__timer-feedback-note-label{display:flex;flex-direction:column;gap:.35rem;font-size:.82rem;color:#9e8f84;margin-bottom:.75rem}.lab__timer-feedback-textarea{font-family:inherit;resize:vertical}.lab__timer-feedback-save{padding:.55rem 1rem;border-radius:.5rem;border:1px solid var(--lab-amber);background:var(--lab-amber);color:#161210;font:inherit;font-weight:600;cursor:pointer;min-height:48px}.lab__timer-feedback-save:disabled{opacity:.45;cursor:not-allowed}.lab__timer-feedback-saved{margin:.65rem 0 0;font-size:.85rem;color:#9e8f84}.lab__custom-recipe-base{margin:-.5rem 0 1rem;font-size:.85rem;color:#9e8f84}@media(min-width:768px){.lab__dose-water-row{flex-direction:row;align-items:flex-end}.lab__dose-water-row .lab__input-block{flex:1 1 0;min-width:0}.lab__ratio-between{flex:0 0 auto;padding:0 .25rem 1.75rem;min-width:7rem}.lab__timer-controls{flex-direction:row}}@media(max-width:767px){.lab__ratio-chip-live{font-size:20px}.lab__ratio-between{width:100%;order:2}.lab__dose-water-row .lab__input-block:first-child{order:1}.lab__dose-water-row .lab__input-block:last-child{order:3}.lab__input--dose{min-height:56px;font-size:18px}.lab__timer-display--countdown{font-size:max(80px,18vw);text-align:center}.lab__timer-controls{flex-direction:column}.lab__timer-btn--wide,.lab__timer-btn--primary,.lab__timer-btn--outline{width:100%}.lab__timer-stage{min-height:48px;align-items:center}.lab__my-recipes-actions .lab__my-recipes-add{display:none}.lab__my-recipes-sticky-mobile{display:block;position:sticky;bottom:0;margin:.75rem -1rem -1rem;padding:.65rem 1rem calc(.65rem + env(safe-area-inset-bottom,0));background:linear-gradient(180deg,transparent 0%,#0e0c0a 35%);border-top:1px solid #2a2420;z-index:5}.lab__onboard-card{margin-bottom:env(safe-area-inset-bottom,0)}}.lab__grading-ref{border:1px solid #2a2420;border-radius:.65rem;background:#120f0d;padding:0;overflow:hidden}.lab__grading-ref-summary{padding:.75rem 1rem;cursor:pointer;list-style:none;font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:#9e8f84;-webkit-user-select:none;user-select:none}.lab__grading-ref-summary::-webkit-details-marker{display:none}.lab__grading-ref-body{padding:0 1rem 1rem;border-top:1px solid #2a2420}.lab__grading-ref-lead{margin:.75rem 0 .65rem;font-size:.82rem;line-height:1.5;color:#8a7b70}.lab__grading-ref-lead strong{color:#c9b8a8;font-weight:600}.lab__grading-ref-scale{margin:0 0 .75rem;padding-left:1.1rem;font-size:.8rem;line-height:1.55;color:#cbbfb3}.lab__grading-ref-scale li{margin-bottom:.35rem}.lab__grading-ref-band{font-family:DM Mono,ui-monospace,monospace;font-size:.72rem;color:var(--lab-amber-muted);margin-right:.35rem}.lab__grading-ref-note{margin:0;font-size:.78rem;line-height:1.5;color:#7a6d63}.lab__grading-ref-note strong{color:#9e8f84}.lab__grind-details-hint{margin:0 0 .5rem;font-size:.8rem;line-height:1.45;color:#7a6d63}.lab__grind-details-textarea{resize:vertical;min-height:4rem;font-family:inherit}.lab__recipe-detail-modal{max-width:28rem}.lab__recipe-detail-meta-pill{display:inline-block;margin-left:.5rem;padding:.1rem .45rem;border-radius:999px;font-family:DM Mono,ui-monospace,monospace;font-size:.78rem;color:var(--lab-amber);border:1px solid #342c26;background:#d4821a14}.lab__recipe-detail-dl{display:grid;gap:.5rem 1rem;margin:0 0 1rem;padding:.65rem 0;border-top:1px solid #2a2420;border-bottom:1px solid #2a2420;font-size:.82rem;grid-template-columns:1fr}.lab__recipe-detail-dl dt{margin:0;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:#6b5f56;font-weight:600}.lab__recipe-detail-dl dd{margin:.1rem 0 0;color:#e8ddd0}.lab__recipe-detail-block{margin-bottom:1rem}.lab__recipe-detail-h{margin:0 0 .35rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:#9e8f84;font-weight:600}.lab__recipe-detail-text{margin:0;font-size:.88rem;line-height:1.55;color:#d4c4b4;white-space:pre-wrap}.lab__recipe-detail-empty{margin:0;font-size:.82rem;font-style:italic;color:#5c534a}.lab__recipe-detail-journal{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem;max-height:12rem;overflow-y:auto}.lab__recipe-detail-journal-row{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .55rem;border-radius:.4rem;background:#120f0d;border:1px solid #2a2420}.lab__recipe-detail-journal-when{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:#6b5f56}.lab__recipe-detail-journal-meta{font-size:.82rem;color:#9e8f84;font-family:DM Mono,ui-monospace,monospace}.lab__recipe-detail-journal-note{font-size:.82rem;color:#cbbfb3;line-height:1.4}.lab__recipe-detail-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem;justify-content:flex-end}.lab__recipe-detail-actions .lab__recipe-modal-btn--primary{flex:1 1 auto;min-width:8rem}
