:root{--black:#0f1114;--surface:#191d22;--raised:#222830;--graphite:#323a45;--silver:#aab2bc;--white:#f3f5f7;--muted:#a9b0b9;--line:#343b45;--accent:#e0e5eb;--danger:#f1aaa3;--shadow:0 10px 28px rgba(0,0,0,.32)}*{box-sizing:border-box}body{margin:0;background:var(--black);color:var(--white);font:16px Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}button,input,select{font:inherit}button{cursor:pointer}.app-shell{max-width:680px;margin:auto;padding:31px 17px 102px}.hero{padding:4px 6px 21px}.eyebrow{margin:0 0 5px;color:var(--silver);font-size:.76rem;font-weight:800;letter-spacing:.095em;text-transform:uppercase}h1,h2,p{margin-top:0}h1,h2{color:var(--white);font-family:Georgia,serif}h1{margin-bottom:0;font-size:1.9rem;line-height:1.12}h2{margin-bottom:0;font-size:1.36rem}.card{margin-bottom:19px;padding:21px;border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:var(--shadow)}.section-heading{display:flex;align-items:center;gap:9px;margin-bottom:19px}.section-icon{font-size:1.3rem}fieldset{border:0;padding:0;margin:0 0 22px}legend,.field-label{display:block;margin-bottom:10px;color:var(--white);font-size:.91rem;font-weight:750}.field-label span{color:var(--muted);font-size:.78rem;font-weight:500}.method-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.choice{min-height:87px;padding:9px 5px;border:1px solid var(--line);border-radius:14px;color:var(--muted);background:var(--raised)}.choice span,.choice small,.choice strong{display:block}.choice span{margin-bottom:4px;font-size:1.36rem}.choice strong{font-size:.82rem}.choice small{font-size:.72rem}.choice.selected,.pill.selected{color:#fff;border-color:#c7ced7;background:var(--graphite);box-shadow:inset 0 0 0 1px #c7ced7}.pill-row{display:flex;flex-wrap:wrap;gap:8px}.pill{min-height:40px;padding:7px 13px;border:1px solid var(--line);border-radius:999px;color:var(--white);background:var(--raised);font-size:.84rem;font-weight:700}input,select{width:100%;margin-top:8px;padding:12px 13px;border:1px solid var(--line);border-radius:11px;outline:none;color:var(--white);background:var(--raised)}input:focus,select:focus{border-color:var(--silver);box-shadow:0 0 0 3px rgba(174,183,194,.15)}.custom-amount{display:block;margin-top:11px;color:var(--muted);font-size:.82rem;font-weight:650}.advanced{margin:2px 0 18px;border:1px solid var(--line);border-radius:13px;background:#171b20}.advanced summary{padding:13px;color:#dce1e7;font-size:.86rem;font-weight:800;cursor:pointer}.advanced-content{padding:2px 13px 13px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.advanced hr{border:0;border-top:1px solid var(--line);margin:16px 0}.microcopy{margin:9px 0 0;color:var(--muted);font-size:.76rem;line-height:1.4}.grind-tip,.dial-in-tip{margin:1px 0 18px;padding:11px 12px;border-radius:12px;color:#cbd1d8;background:#252b33;font-size:.85rem}.dial-in-tip{margin-top:14px;border-left:3px solid #8090a0}.primary-button,.save-button{width:100%;min-height:53px;border:0;border-radius:14px;font-weight:800;letter-spacing:.02em}.primary-button{color:#14171b;background:var(--accent)}.save-button{margin-top:17px;color:#fff;background:#454d58}.hidden{display:none!important}.result-card{border-top:4px solid #67717c}.result-top{display:flex;justify-content:space-between;gap:12px;margin-bottom:18px}.intensity-badge{padding:6px 9px;border-radius:999px;color:#e5e9ee;background:#353c46;font-size:.75rem;font-weight:800}.recipe-grid{display:grid;grid-template-columns:repeat(2,1fr);overflow:hidden;border:1px solid var(--line);border-radius:14px}.recipe-item{min-height:70px;padding:11px;border-bottom:1px solid var(--line)}.recipe-item:nth-child(odd){border-right:1px solid var(--line)}.recipe-item:nth-last-child(-n+2){border-bottom:0}.recipe-item span{display:block;margin-bottom:3px;color:var(--muted);font-size:.71rem}.recipe-item strong{font-size:.94rem}.coffee-used{margin:15px 1px;color:#cbd1d8;font-size:.9rem}.save-feedback{min-height:1.1em;margin:10px 0 0;color:#9ac796;text-align:center;font-size:.82rem;font-weight:700}.view{display:none}.view.active{display:block}.page-header{padding:5px 5px 20px}.page-header p:last-child{margin:8px 0 0;color:var(--muted);font-size:.91rem}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px}.stat{min-height:98px;padding:12px 9px;border:1px solid var(--line);border-radius:16px;background:var(--surface);text-align:center}.stat b{display:block;margin:6px 0 3px;color:var(--white);font-family:Georgia,serif;font-size:1.22rem}.stat span{color:var(--muted);font-size:.68rem;line-height:1.1}.list-stack{display:grid;gap:12px}.saved-card,.empty-state{padding:17px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.saved-top{display:flex;justify-content:space-between;gap:10px}.saved-card h2{font-size:1.11rem}.date{color:var(--muted);font-size:.75rem;text-align:right}.saved-detail{margin:6px 0;color:#cbd1d8;font-size:.85rem}.saved-meta,.feedback-line{margin:0 0 9px;color:var(--muted);font-size:.82rem}.feedback-line{padding:8px 9px;border-radius:8px;color:#d7dde5;background:#252b33}.rating{display:flex;gap:1px;margin:9px 0 12px}.star{padding:1px 2px;border:0;color:#68717c;background:transparent;font-size:1.4rem}.star.filled{color:#e0b35e}.card-actions{display:flex;gap:8px}.secondary-button,.delete-button{flex:1;min-height:38px;border:1px solid var(--line);border-radius:10px;color:var(--white);background:var(--raised);font-size:.79rem;font-weight:800}.delete-button{flex:0 0 auto;padding:0 12px;color:var(--danger)}.empty-state{color:var(--muted);text-align:center;line-height:1.5}.bottom-nav{position:fixed;z-index:2;right:0;bottom:0;left:0;display:flex;justify-content:center;gap:5px;padding:9px max(13px,calc((100vw - 680px)/2));border-top:1px solid var(--line);background:rgba(15,17,20,.96);backdrop-filter:blur(12px)}.nav-item{flex:1;max-width:170px;padding:5px;border:0;border-radius:11px;color:var(--muted);background:transparent;font-size:.74rem;font-weight:700}.nav-item span{display:block;font-size:1.16rem}.nav-item.active{color:#fff;background:#323944}@media(min-width:600px){.app-shell{padding-top:49px}.card{padding:26px}}@media(max-width:390px){.field-grid{grid-template-columns:1fr}}
