.tools-calc{background:var(--bg-warm);border:1px solid var(--border);border-radius:var(--radius);padding:2.5rem}.calc-strength{display:flex;align-items:center;gap:1.2rem;margin-bottom:2rem;flex-wrap:wrap}.calc-strength-label{font-size:.7rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mid)}.calc-strength-options{display:flex;gap:.5rem}.strength-btn{font-size:.68rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;padding:.45rem 1.2rem;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-mid);background:transparent;cursor:pointer;transition:all .3s}.strength-btn:hover{color:var(--text-ink);border-color:var(--text-mid)}.strength-btn.active{background:var(--accent-roast);color:#fff;border-color:var(--accent-roast)}.calc-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1.5rem}.calc-field label{display:block;font-size:.65rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mid);margin-bottom:.5rem}.calc-input-wrap{display:flex;align-items:center;background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .3s}.calc-input-wrap:focus-within{border-color:var(--accent-roast)}.calc-input-wrap input{flex:1;border:none;background:transparent;padding:.7rem .9rem;font-size:1.1rem;font-family:var(--serif);font-weight:300;color:var(--text-ink);width:100%;min-width:0;outline:none;-moz-appearance:textfield}.calc-input-wrap input::-webkit-outer-spin-button,.calc-input-wrap input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.calc-unit{font-size:.7rem;font-weight:400;letter-spacing:.1em;color:var(--text-pale);padding-right:.9rem;white-space:nowrap}.calc-input-ratio{gap:0}.calc-ratio-prefix{font-size:1.1rem;font-family:var(--serif);font-weight:300;color:var(--text-pale);padding-left:.9rem;white-space:nowrap}.recipe-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-bottom:2rem}.recipe-card{background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;text-align:center}.recipe-card-label{display:block;font-size:.6rem;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:var(--text-pale);margin-bottom:.6rem}.recipe-card-value{display:block;font-family:var(--serif);font-size:1.4rem;font-weight:300;color:var(--text-ink);letter-spacing:.02em}.recipe-tip{background:var(--bg-canvas);border-left:3px solid var(--accent-roast);padding:1.2rem 1.6rem;border-radius:0 var(--radius) var(--radius) 0}.recipe-tip strong{display:block;font-size:.65rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-roast);margin-bottom:.4rem}.recipe-tip span{font-size:.9rem;font-weight:300;line-height:1.7;color:var(--text-mid)}@media(max-width:600px){.tools-calc{padding:1.5rem}.calc-fields,.recipe-grid{grid-template-columns:1fr 1fr}}@media(max-width:400px){.calc-fields,.recipe-grid{grid-template-columns:1fr}}.timer-setup{background:var(--bg-warm);border:1px solid var(--border);border-radius:var(--radius);padding:2.5rem}.timer-methods{display:flex;align-items:center;gap:1.2rem;margin-bottom:1.5rem;flex-wrap:wrap}.timer-method-options{display:flex;gap:.5rem;flex-wrap:wrap}.method-btn{font-size:.68rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;padding:.45rem 1.2rem;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-mid);background:transparent;cursor:pointer;transition:all .3s}.method-btn:hover{color:var(--text-ink);border-color:var(--text-mid)}.method-btn.active{background:var(--accent-roast);color:#fff;border-color:var(--accent-roast)}.timer-setup select{flex:1;border:none;background:transparent;padding:.7rem .9rem;font-size:.85rem;font-family:var(--sans);font-weight:400;color:var(--text-ink);width:100%;min-width:0;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.timer-steps-preview{margin-top:2rem}.timer-step-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.8rem}.timer-step-row{display:flex;align-items:center;gap:.8rem;background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius);padding:.65rem 1rem;transition:opacity .3s,background .3s,border-color .3s,transform .25s}.timer-step-row:hover{border-color:var(--accent-roast);background:#fff}.timer-step-row.step-disabled{opacity:.45;border-style:dashed}.timer-step-row.step-disabled:hover{opacity:.65;border-color:var(--text-pale);background:var(--bg-canvas)}.timer-step-row.step-disabled .step-row-name{text-decoration:line-through;color:var(--text-pale)}.step-row-toggle{flex-shrink:0}.step-toggle-btn{display:flex;align-items:center;background:none;border:none;padding:4px;cursor:pointer}.step-toggle-track{position:relative;width:36px;height:20px;border-radius:10px;background:var(--text-pale);transition:background .25s}.step-toggle-track.step-toggle-on{background:var(--accent-roast)}.step-toggle-knob{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .25s;box-shadow:0 1px 3px #0003}.step-toggle-on .step-toggle-knob{transform:translate(16px)}.step-row-body{flex:1;display:flex;align-items:baseline;justify-content:space-between;gap:.8rem;min-width:0}.step-row-name{font-size:.72rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--text-ink);transition:color .3s}.step-row-meta{font-size:.85rem;color:var(--text-pale);white-space:nowrap;letter-spacing:.03em}.step-row-actions{display:flex;flex-direction:column;gap:1px;flex-shrink:0}.step-move-btn{display:flex;align-items:center;justify-content:center;width:22px;height:16px;background:none;border:none;color:var(--text-pale);cursor:pointer;border-radius:2px;transition:color .2s,background .2s;padding:0}.step-move-btn:hover:not(:disabled){color:var(--accent-roast);background:#c04b2014}.step-move-btn:disabled{opacity:.2;cursor:default}.timer-total{display:flex;align-items:center;gap:1rem;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border)}.timer-total-value{font-family:var(--serif);font-size:1.6rem;font-weight:300;color:var(--text-ink)}.timer-start-btn{display:block;width:100%;margin-top:2rem;padding:1rem;font-size:.75rem;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:var(--accent-roast);border:none;border-radius:var(--radius);cursor:pointer;transition:background .4s,transform .3s}.timer-start-btn:hover{background:#a03a15;transform:translateY(-1px)}.timer-overlay{position:fixed;inset:0;z-index:9999;background:var(--bg-dark);color:#f5eee4;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .5s,visibility .5s}.timer-overlay.open{opacity:1;visibility:visible}.timer-overlay-inner{width:100%;max-width:600px;padding:2rem;text-align:center;position:relative}.timer-close-btn{position:absolute;top:-1rem;right:0;font-size:2rem;color:#f5eee480;background:none;border:none;cursor:pointer;line-height:1;transition:color .3s}.timer-close-btn:hover{color:#f5eee4}.timer-progress-bar{width:100%;height:3px;background:#f5eee41f;border-radius:2px;margin-bottom:2.5rem;overflow:hidden}.timer-progress-fill{height:100%;background:var(--accent-roast);border-radius:2px;transition:width 1s linear;width:0}.timer-step-indicator{display:flex;justify-content:center;gap:.5rem;margin-bottom:2rem}.ov-dot{width:8px;height:8px;border-radius:50%;background:#f5eee426;transition:all .4s}.ov-dot-active{background:var(--accent-roast);transform:scale(1.3)}.ov-dot-done{background:#f5eee466}.ov-dot-viewing{outline:2px solid rgba(245,238,228,.5);outline-offset:2px}.timer-carousel-viewport{position:relative;overflow:hidden;margin-bottom:2.5rem;width:100%}.timer-carousel-track{display:flex;transition:transform .6s cubic-bezier(.16,1,.3,1);will-change:transform}.ov-step-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2.5rem 2rem;box-sizing:border-box;transition:opacity .4s;opacity:.25}.ov-step-card.ov-viewing{opacity:1}.ov-step-card.ov-upcoming.ov-viewing,.ov-step-card.ov-visited.ov-viewing{opacity:.6}.ov-step-card.ov-current.ov-viewing{opacity:1}.carousel-arrow{position:absolute;top:50%;transform:translateY(-80%);background:none;border:1px solid rgba(245,238,228,.15);border-radius:50%;width:44px;height:44px;display:flex;align-items:center;justify-content:center;color:#f5eee499;cursor:pointer;transition:all .3s;z-index:2}.carousel-arrow:hover{border-color:#f5eee466;color:#f5eee4;background:#f5eee40f}.carousel-arrow-left{left:1rem}.carousel-arrow-right{right:1rem}.ov-step-num{font-size:.6rem;font-weight:400;letter-spacing:.2em;text-transform:uppercase;color:#f5eee459;margin-bottom:.8rem}.ov-step-name{font-family:var(--serif);font-size:2.4rem;font-weight:300;letter-spacing:.04em;color:#f5eee4;margin-bottom:.6rem}.ov-step-water{font-size:1.8rem;letter-spacing:.1em;color:var(--accent-roast);margin-bottom:.8rem;font-weight:400}.ov-step-instr{font-size:1.25rem;font-weight:300;line-height:1.7;color:#f5eee48c;max-width:400px}.ov-final-icon{font-size:3.5rem;margin-bottom:1rem;line-height:1}.ov-card-final .ov-step-name{font-size:2.8rem;margin-bottom:1rem}.ov-card-final .ov-step-instr{font-size:.9rem;max-width:360px;color:#f5eee473}.timer-countdown{font-family:var(--serif);font-size:5rem;font-weight:300;letter-spacing:.04em;color:#f5eee4;line-height:1;margin-bottom:.5rem}.timer-total-elapsed{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#f5eee44d;margin-bottom:2.5rem}.timer-controls{display:flex;justify-content:center;gap:1rem}.timer-ctrl-btn{font-size:.7rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;padding:.7rem 2rem;border:1px solid rgba(245,238,228,.2);border-radius:var(--radius);color:#f5eee4;background:transparent;cursor:pointer;transition:all .3s}.timer-ctrl-btn:hover{border-color:#f5eee480;background:#f5eee40f}.timer-ctrl-skip{border-color:var(--accent-roast);color:var(--accent-roast)}.timer-ctrl-skip:hover{background:#c04b2026;border-color:var(--accent-roast)}.timer-overlay.paused .timer-countdown{animation:pulse-dim 1.5s ease-in-out infinite}@keyframes pulse-dim{0%,to{opacity:1}50%{opacity:.4}}@media(max-width:600px){.timer-setup{padding:1.5rem}.timer-countdown{font-size:3.5rem}.ov-step-name{font-size:1.8rem}.timer-overlay-inner{padding:1.5rem}.carousel-arrow{width:36px;height:36px}.carousel-arrow-left{left:.5rem}.carousel-arrow-right{right:.5rem}}
