:root{color:#29231d;font-synthesis:none;text-rendering:optimizelegibility;background:#f5f0e7;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}.app-shell{max-width:58rem;min-height:100vh;margin:0 auto;padding:1rem 1rem 3rem}.app-header{align-items:center;gap:.75rem;padding:.25rem 0 2rem;display:flex}.brand-mark{color:#f5f0e7;letter-spacing:.05em;background:#29231d;border-radius:.75rem;place-items:center;width:2.75rem;height:2.75rem;font-size:.7rem;font-weight:900;display:grid}.brand-name,.brand-subtitle,.shot-count{margin:0}.brand-name{font-weight:800}.brand-subtitle{color:#8b7b6d;font-size:.78rem}.shot-count{color:#8b7b6d;margin-left:auto;font-size:.8rem}.eyebrow{color:#8a4f2b;letter-spacing:.14em;text-transform:uppercase;margin:0 0 1rem;font-size:.75rem;font-weight:800}h1{letter-spacing:-.045em;max-width:12ch;margin:0;font-family:Georgia,serif;font-size:clamp(2.5rem,9vw,4.5rem);line-height:.96}h2{letter-spacing:-.035em;margin:0;font-family:Georgia,serif;font-size:clamp(1.8rem,6vw,2.6rem);line-height:1}.intro{color:#65594e;max-width:34rem;margin:1.5rem 0 0;font-size:1.05rem;line-height:1.6}.brew-screen{gap:1.25rem;display:grid}.screen-heading{justify-content:space-between;align-items:end;gap:1rem;display:flex}.screen-heading .eyebrow{margin-bottom:.65rem}.timer{color:#5e3923;font-variant-numeric:tabular-nums;text-align:center;background:#fffaf2;border:1px solid #d9cdbf;border-radius:.75rem;min-width:7.5rem;padding:.5rem .75rem;font-size:clamp(2rem,8vw,3.25rem);font-weight:800;line-height:1}.timer-running{border-color:#b75e32;box-shadow:0 0 0 3px #b75e3224}.brew-actions{align-items:center;gap:1rem;display:flex}.primary-action{color:#fff;cursor:pointer;min-height:3.5rem;font:inherit;background:#b75e32;border:0;border-radius:.75rem;padding:.75rem 1.25rem;font-weight:800}.primary-action:hover{background:#94451f}.primary-action:focus-visible,button:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #2a6f62}.action-hint,.field-help{color:#8b7b6d;font-size:.82rem}.success-message{color:#266055;margin:0;font-weight:700}.library-section,.history-section,.dashboard-section{border-top:1px solid #d9cdbf;gap:1rem;margin-top:2.5rem;padding-top:2rem;display:grid}.section-heading{justify-content:space-between;align-items:end;gap:1rem;display:flex}.secondary-action,.small-action{color:#5e3923;cursor:pointer;min-height:2.7rem;font:inherit;background:#fffaf2;border:1px solid #cdbfaf;border-radius:.55rem;padding:.5rem .8rem;font-weight:750}.secondary-action:hover,.small-action:hover{background:#eadfce}.small-action{white-space:nowrap;min-height:2.35rem;padding:.35rem .55rem;font-size:.78rem}.bean-library-table{background:#fffaf2;border:1px solid #ded2c4;border-radius:.8rem;overflow:hidden}.bean-library-row{border-top:1px solid #eee5da;grid-template-columns:.9fr 2.6fr;align-items:center;gap:.75rem;padding:.75rem .9rem;display:grid}.bean-library-row:first-child{border-top:0}.bean-library-header{color:#8b7b6d;letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;font-weight:850}.purchase-control{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.purchase-control input,.add-bean-form input{color:#29231d;min-height:2.35rem;font:inherit;background:#fff;border:1px solid #cdbfaf;border-radius:.55rem;padding:.4rem .5rem}.add-bean-form{flex-wrap:wrap;align-items:end;gap:.6rem;display:flex}.add-bean-form label{color:#65594e;flex-basis:100%;font-size:.85rem;font-weight:700}.add-bean-form input{flex:12rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.history-count{color:#8b7b6d;font-size:.85rem;font-weight:750}.history-filter-row{justify-content:space-between;align-items:center;gap:1rem;display:flex}.history-filter{color:#65594e;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.history-filter input{accent-color:#b75e32;width:1.1rem;height:1.1rem}.empty-state{color:#8b7b6d;text-align:center;border:1px dashed #cdbfaf;border-radius:.8rem;margin:0;padding:1.25rem}.history-layout{grid-template-columns:minmax(10rem,.7fr) minmax(0,1.5fr);align-items:start;gap:1rem;display:grid}.shot-list{gap:.5rem;display:grid}.shot-summary{color:#65594e;cursor:pointer;font:inherit;text-align:left;background:#fffaf2;border:1px solid #ded2c4;border-radius:.7rem;gap:.3rem;padding:.8rem;display:grid}.shot-summary:hover,.shot-summary-active{background:#f8eee1;border-color:#b75e32}.shot-summary strong{color:#29231d}.shot-detail{background:#fffaf2;border:1px solid #ded2c4;border-radius:.85rem;gap:1rem;padding:1rem;display:grid}.shot-detail-heading{justify-content:space-between;align-items:end;gap:1rem;display:flex}.shot-detail-heading .eyebrow{margin-bottom:.5rem}.shot-detail h3{margin:0;font-family:Georgia,serif;font-size:1.4rem}.review-status{color:#8a4f2b;font-size:1.1rem;font-weight:850}.shot-facts{flex-wrap:wrap;gap:.55rem;display:flex}.shot-facts span{color:#65594e;background:#f5f0e7;border-radius:.4rem;padding:.35rem .5rem;font-size:.8rem}.review-editor{gap:.8rem;display:grid}.review-editor fieldset{border:0;margin:0;padding:0}.review-editor legend,.notes-field{color:#65594e;font-size:.85rem;font-weight:750}.rating-buttons{flex-wrap:wrap;gap:.4rem;margin-top:.45rem;display:flex}.rating-buttons button{color:#5e3923;cursor:pointer;min-width:2.5rem;min-height:2.5rem;font:inherit;background:#fff;border:1px solid #cdbfaf;border-radius:.5rem;font-weight:800}.rating-buttons .rating-active{color:#fffaf2;background:#29231d;border-color:#29231d}.rating-buttons .rating-clear{color:#8a4f2b;padding:0 .7rem;font-size:.8rem}.notes-field{gap:.4rem;display:grid}.notes-field textarea{color:#29231d;width:100%;font:inherit;resize:vertical;background:#fff;border:1px solid #cdbfaf;border-radius:.55rem;padding:.65rem}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;display:grid}.metric-card{background:#fffaf2;border:1px solid #ded2c4;border-radius:.75rem;gap:.35rem;padding:.85rem;display:grid}.metric-card span{color:#8b7b6d;text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;font-weight:800}.metric-card strong{color:#5e3923;font-size:1.35rem}.dashboard-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:1rem;display:grid}.dashboard-panel{background:#fffaf2;border:1px solid #ded2c4;border-radius:.85rem;gap:.9rem;padding:1rem;display:grid}.panel-heading{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.panel-heading h3{margin:0;font-size:1rem}.dashboard-bars,.bean-mix-list{gap:.65rem;display:grid}.dashboard-bar-row{grid-template-columns:5.2rem minmax(0,1fr) 2.5rem;align-items:center;gap:.55rem;font-size:.8rem;display:grid}.dashboard-bar-label{color:#8b7b6d;font-variant-numeric:tabular-nums}.dashboard-bar-track{background:#eadfce;border-radius:99rem;height:.65rem;display:block;overflow:hidden}.dashboard-bar-fill{border-radius:inherit;background:#b75e32;height:100%;display:block}.bean-mix-row{border-bottom:1px solid #eee5da;grid-template-columns:1fr auto auto;align-items:baseline;gap:.75rem;padding-bottom:.55rem;display:grid}.bean-mix-row:last-child{border-bottom:0;padding-bottom:0}.performance-table{overflow-x:auto}.performance-row{border-top:1px solid #eee5da;grid-template-columns:1fr .55fr .55fr .8fr .65fr 1.2fr;align-items:center;gap:.65rem;min-width:36rem;padding:.65rem 0;font-size:.8rem;display:grid}.performance-row:first-child{border-top:0}.performance-header{color:#8b7b6d;letter-spacing:.08em;text-transform:uppercase;font-size:.68rem;font-weight:850}.brew-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.panel{background:#fffaf2;border:1px solid #ded2c4;border-radius:1rem;min-width:0;margin:0;padding:1rem}.panel legend{color:#8a4f2b;letter-spacing:.12em;text-transform:uppercase;padding:0 .35rem;font-size:.75rem;font-weight:900}.segmented-control{grid-template-columns:1fr 1fr;gap:.35rem;display:grid}.segmented-control button,.link-button{color:#65594e;cursor:pointer;font:inherit;background:0 0;border:1px solid #d9cdbf;border-radius:.6rem}.segmented-control button{min-height:3rem;font-weight:700}.segmented-control .segment-active{color:#fffaf2;background:#29231d;border-color:#29231d}.bean-list{gap:.65rem;display:grid}.bean-row{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.bean-row label{font-weight:650}.quantity-control{color:#8b7b6d;align-items:center;gap:.35rem;display:flex}.bean-row input{color:#29231d;width:4rem;min-height:2.7rem;font:inherit;text-align:center;background:#fff;border:1px solid #cdbfaf;border-radius:.55rem;padding:.5rem .35rem;font-weight:800}.quantity-button{color:#5e3923;cursor:pointer;width:2.35rem;height:2.7rem;font:inherit;background:#f5f0e7;border:1px solid #cdbfaf;border-radius:.55rem;place-items:center;font-size:1.3rem;font-weight:800;line-height:1;display:grid}.quantity-button:hover:not(:disabled){background:#eadfce}.quantity-button:disabled{cursor:not-allowed;opacity:.4}.compact-fields input{width:100%}.compact-fields{align-content:start;gap:.5rem;display:grid}.field-label{color:#65594e;font-size:.85rem;font-weight:700;display:block}.pressure-panel{grid-column:span 2}.pressure-control{justify-items:center;gap:.55rem;display:grid}.pressure-dial{width:min(100%,19rem)}.pressure-dial svg{width:100%;display:block;overflow:visible}.dial-bezel{fill:#29231d}.dial-face{fill:#e9e4dc;stroke:#a99c8e;stroke-width:3px}.dial-track{fill:none;stroke:#b7aa9c;stroke-linecap:round;stroke-width:13px}.dial-tick{stroke:#65594e;stroke-width:1.5px}.dial-tick-major{stroke:#29231d;stroke-width:2.5px}.dial-number{fill:#29231d;font-size:.72rem;font-weight:850}.dial-title{fill:#65594e;letter-spacing:.06em;font-size:.52rem;font-weight:800}.dial-unit{fill:#8b7b6d;font-size:.58rem;font-weight:800}.dial-needle-shadow{stroke:#29231d;stroke-linecap:round;stroke-width:8px}.dial-needle{stroke:#b75e32;stroke-linecap:round;stroke-width:4px}.dial-hub-ring{fill:#b7aa9c;stroke:#65594e;stroke-width:2px}.dial-hub{fill:#29231d}.range-input{accent-color:#b75e32;width:min(100%,19rem)}.pressure-reading{color:#5e3923;font-size:1.25rem;font-weight:800}.grind-reading{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.grind-reading strong{color:#5e3923;font-size:1.5rem}.link-button{color:#8a4f2b;border:0;font-size:.8rem;text-decoration:underline}@media (width>=48rem){.app-shell{padding:2rem 2rem 4rem}.app-header{padding-bottom:3rem}}@media (width<=36rem){.screen-heading{flex-direction:column;align-items:start}.timer{align-self:stretch}.brew-actions{flex-direction:column;align-items:stretch}.action-hint{text-align:center}.brew-grid{grid-template-columns:1fr}.pressure-panel{grid-column:auto}.section-heading{flex-direction:column;align-items:stretch}.bean-library-table{background:0 0;border:0;overflow:visible}.bean-library-header{display:none}.bean-library-row{background:#fffaf2;border:1px solid #ded2c4;border-radius:.8rem;grid-template-columns:1fr auto;gap:.45rem .75rem;margin-bottom:.65rem}.bean-library-row>:nth-child(2){grid-column:1/-1}.history-layout{grid-template-columns:1fr}.history-filter-row{flex-direction:column;align-items:start}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}}.error-message{color:#a3392b;margin:0;font-weight:700}.login-shell{place-items:center;min-height:100vh;display:grid}.login-form{text-align:left;gap:.65rem;width:min(22rem,100%);display:grid}.login-form h1{margin:.25rem 0 0;font-size:1.25rem}.login-form label{color:#65594e;font-size:.8rem;font-weight:700}.login-form input{font:inherit;border:1px solid #d9cdbf;border-radius:.6rem;padding:.6rem .7rem}.login-form .primary-action{margin-top:.5rem}.sync-banner{background:#fff4e0;border:1px solid #d9cdbf;border-radius:.75rem;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.65rem .9rem;font-size:.85rem;display:flex}
