@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap";:root{color:#38251f;font-synthesis:none;--cream:#f2eadb;--paper:#faf5eb;--brown:#38251f;--muted:#816f65;--line:#d8cdbd;--coral:#d9573f;--ochre:#dda938;--sage:#7b9274;background:#f2eadb;font-family:DM Sans,system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--cream);min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{color:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #d9573f59}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Fraunces,Georgia,serif}.app-shell{min-height:100vh;padding-bottom:20px}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20;background:#f2eadbe0;justify-content:space-between;align-items:center;height:76px;padding:0 clamp(20px,5vw,72px);display:flex;position:sticky;top:0}.wordmark,.login-brand{letter-spacing:.15em;background:0 0;border:0;padding:0;font-size:15px;font-weight:800}.wordmark span,.login-brand span{color:var(--coral);margin:0 5px}.top-actions{align-items:center;gap:18px;display:flex}.text-button,.back-button{cursor:pointer;background:0 0;border:0;border-bottom:1px solid;padding:8px 0;font-weight:700}.text-button:disabled{opacity:.35;cursor:not-allowed}.avatar{width:38px;height:38px;color:var(--paper);background:var(--brown);cursor:pointer;border:0;border-radius:50%;font-weight:700}main{max-width:1240px;margin:0 auto;padding:0 clamp(20px,5vw,72px)}.hero{border-bottom:1px solid var(--line);grid-template-columns:1.08fr .92fr;align-items:center;min-height:520px;display:grid;overflow:hidden}.hero-copy{z-index:2;padding:64px 0 70px;position:relative}.eyebrow{color:var(--coral);letter-spacing:.18em;text-transform:uppercase;margin-bottom:15px;font-size:11px;font-weight:800;display:block}.hero h1,.form-intro h1,.history-header h1,.login-card h1{letter-spacing:-.045em;margin-bottom:24px;font-size:clamp(43px,6vw,78px);line-height:.98}h1 em{color:var(--coral);font-weight:inherit}.hero-copy>p{color:var(--muted);max-width:470px;margin-bottom:32px;font-size:17px;line-height:1.6}.button{border:1px solid var(--brown);cursor:pointer;border-radius:2px;justify-content:center;align-items:center;gap:10px;min-height:50px;padding:0 22px;font-weight:700;transition:transform .18s,box-shadow .18s,background .18s;display:inline-flex}.button:hover{box-shadow:4px 5px 0 var(--brown);transform:translateY(-2px)}.button:disabled{cursor:wait;opacity:.6;box-shadow:none;transform:none}.button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.primary{background:var(--coral);color:#fff}.secondary{background:var(--paper);color:var(--brown)}.scan-button{min-width:224px}.hero-art{place-items:center;height:100%;min-height:500px;display:grid;position:relative}.sun{aspect-ratio:1;background:var(--ochre);border-radius:50%;width:clamp(260px,29vw,390px);position:absolute}.sun:before,.sun:after{content:"";background:var(--ochre);width:28px;height:90px;position:absolute;top:-68px;left:50%;transform:translate(-50%)}.sun:after{top:auto;bottom:-68px}.coffee-bag{border:2px solid var(--brown);z-index:2;text-align:center;background:#f7efde;flex-direction:column;align-items:center;width:238px;height:328px;padding:34px 25px;display:flex;position:relative;transform:rotate(5deg);box-shadow:18px 18px #38251f29}.coffee-bag:before{content:"";background:repeating-linear-gradient(90deg, var(--brown), var(--brown) 2px, transparent 2px, transparent 7px);opacity:.7;height:16px;position:absolute;top:0;left:0;right:0}.bag-top,.bag-origin{letter-spacing:.17em;font-size:8px;font-weight:800}.coffee-bag strong{letter-spacing:-.06em;margin:40px 0 22px;font-family:Fraunces,Georgia,serif;font-size:38px;line-height:.88}.coffee-bag i{background:var(--coral);border-radius:50%;place-items:center;width:58px;height:58px;margin-top:auto;font-size:26px;font-style:normal;display:grid}.scribble{z-index:3;font-family:Fraunces,Georgia,serif;font-size:18px;font-style:italic;position:absolute;bottom:70px;right:4%;transform:rotate(-8deg)}.dashboard-grid{grid-template-columns:minmax(0,1fr) 300px;gap:50px;padding:64px 0 80px;display:grid}.section-title{justify-content:space-between;align-items:end;gap:20px;margin-bottom:25px;display:flex}.section-title h2{letter-spacing:-.03em;margin:0;font-size:30px}.section-title .eyebrow{margin-bottom:8px}.coffee-list{border-top:1px solid var(--brown)}.coffee-card{border-bottom:1px solid var(--line);grid-template-columns:84px minmax(0,1fr) auto;align-items:center;gap:20px;padding:20px 0;display:grid}.coffee-mark{width:84px;height:84px;color:var(--brown);place-items:center;display:grid;position:relative;overflow:hidden}.coffee-mark:before{content:"";border:1px solid #38251f40;width:64px;height:64px;position:absolute;transform:rotate(45deg)}.coffee-mark span{z-index:1;filter:grayscale();font-size:28px}.ochre{background:#e2bb65}.coral-bg{background:#e5836f}.sage{background:#a8b49c}.coffee-main .roaster{color:var(--coral);letter-spacing:.14em;text-transform:uppercase;margin-bottom:4px;font-size:10px;font-weight:800;display:block}.coffee-main h3{letter-spacing:-.02em;margin-bottom:5px;font-size:22px}.coffee-main p,.coffee-main q{color:var(--muted);margin:0;font-size:13px}.coffee-main q{white-space:nowrap;text-overflow:ellipsis;max-width:360px;margin-top:6px;font-style:italic;display:block;overflow:hidden}.coffee-score{text-align:right;flex-direction:column;justify-content:space-between;align-self:stretch;display:flex}.coffee-score>span{letter-spacing:2px;color:var(--coral);white-space:nowrap}.coffee-score time{color:var(--muted);font-size:11px}.stats-card{background:var(--brown);color:var(--paper);min-height:360px;padding:30px;position:relative;overflow:hidden}.stats-card .eyebrow{color:#e7b853}.big-stat{border-bottom:1px solid #ffffff2e;flex-direction:column;padding:18px 0 28px;display:flex}.big-stat strong{color:#e7b853;font-family:Fraunces,Georgia,serif;font-size:78px;line-height:.9}.big-stat span{margin-top:8px;font-size:13px}.stat-row{border-bottom:1px solid #ffffff2e;justify-content:space-between;padding:17px 0;font-size:13px;display:flex}.stat-row small{color:#e7b853}.steam{color:#ffffff14;font-size:190px;position:absolute;bottom:-65px;right:-25px;transform:rotate(-20deg)}.empty-state{text-align:center;color:var(--muted);border:1px dashed #b9a99a;padding:44px}.empty-state span{filter:grayscale();font-size:35px}.empty-state h3{color:var(--brown);margin:10px 0 6px}.empty-state p{margin-bottom:0}.message{border-left:3px solid;max-width:700px;margin:18px 0;padding:12px 15px;font-size:13px}.message.success,.message.info{border-color:var(--sage);background:#e5e9dc}.message.error{border-color:var(--coral);background:#f5dfd8}.passkey-prompt{border:1px solid var(--brown);background:#e5e9dc;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:20px;margin:28px 0 0;padding:22px 25px;display:grid}.passkey-prompt .eyebrow{margin-bottom:4px}.passkey-prompt h2{margin:0 0 4px;font-size:23px}.passkey-prompt p{color:var(--muted);margin:0;font-size:13px}.passkey-icon,.passkey-list-icon{background:var(--brown);width:52px;height:52px;color:var(--paper);border-radius:50%;place-items:center;display:grid}.passkey-icon svg,.passkey-list-icon svg,.passkey-login svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:23px;height:23px}.form-page,.history-page,.account-page{max-width:900px;margin:0 auto;padding-top:42px;padding-bottom:100px}.back-button{margin-bottom:44px}.form-intro{margin-bottom:46px}.form-intro h1{margin-bottom:15px}.form-intro p,.history-header p{color:var(--muted)}.coffee-form{background:var(--paper);border:1px solid var(--line);padding:clamp(24px,5vw,54px)}.form-section{align-items:center;gap:16px;margin-bottom:28px;display:flex}.form-section h2{margin:0 0 2px;font-size:27px}.form-section p{color:var(--muted);margin:0;font-size:13px}.form-number{background:var(--ochre);width:42px;height:42px;color:var(--brown);letter-spacing:.08em;border-radius:50%;place-items:center;font-size:11px;font-weight:800;display:grid}.form-number.coral{background:var(--coral);color:#fff}.field-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.field-grid label,.manual-code label,.login-card label,.rating-field legend{letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:800}.field-grid label{gap:8px;display:grid}.field-grid .wide{grid-column:1/-1}input,select,textarea{width:100%;color:var(--brown);background:#fff;border:1px solid #bcae9f;border-radius:0;min-height:48px;padding:13px 14px}textarea{resize:vertical;line-height:1.5}input::placeholder,textarea::placeholder{color:#a8998f}.divider{background:var(--line);height:1px;margin:42px 0}.rating-field{border:0;margin:0 0 25px;padding:0}.rating-field legend{margin-bottom:8px}.rating-buttons{gap:5px;display:flex}.rating-buttons button{color:#c9bcaf;cursor:pointer;background:0 0;border:0;padding:0 3px;font-size:39px;line-height:1}.rating-buttons button.selected{color:var(--coral)}.save-button{width:100%;margin-top:30px}.history-page{max-width:1000px}.history-header{justify-content:space-between;align-items:end;gap:25px;margin-bottom:46px;display:flex}.history-header h1{margin-bottom:12px}.full-list .coffee-card{padding:24px 0}.account-page{max-width:760px}.account-header{margin-bottom:38px}.account-header h1{letter-spacing:-.045em;margin-bottom:14px;font-size:clamp(43px,7vw,66px);line-height:1}.account-header p{color:var(--muted)}.account-card{border:1px solid var(--line);background:var(--paper);padding:clamp(23px,5vw,42px)}.account-section-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:25px;padding-bottom:25px;display:flex}.account-section-heading h2{margin:0 0 6px;font-size:28px}.account-section-heading p{color:var(--muted);margin:0;font-size:13px}.passkey-list{margin:0;padding:0;list-style:none}.passkey-list li{border-bottom:1px solid var(--line);grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:15px;padding:20px 0;display:grid}.passkey-list li:last-child{border-bottom:0}.passkey-list-icon{background:var(--ochre);color:var(--brown)}.passkey-list strong,.passkey-list span{display:block}.passkey-list span{color:var(--muted);margin-top:5px;font-size:11px}.delete-button{min-height:44px;color:var(--coral);cursor:pointer;background:0 0;border:0;border-bottom:1px solid;font-weight:700}.delete-button:disabled{opacity:.5;cursor:wait}.no-passkeys{text-align:center;border:1px dashed #b9a99a;margin-top:24px;padding:30px}.no-passkeys p{margin-bottom:5px;font-family:Fraunces,Georgia,serif;font-size:20px}.no-passkeys span,.muted{color:var(--muted);font-size:13px}.sign-out{color:var(--coral);margin-top:28px}.overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:50;background:#2b1d18c2;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.scanner-sheet{background:var(--paper);width:min(560px,100%);max-height:calc(100vh - 36px);padding:26px;overflow-y:auto;box-shadow:0 24px 80px #0000004d}.sheet-heading{justify-content:space-between;gap:20px;display:flex}.sheet-heading h2{margin:0 0 20px;font-size:28px}.sheet-heading .eyebrow{margin-bottom:6px}.icon-button{border:1px solid var(--brown);cursor:pointer;background:0 0;width:38px;height:38px;font-size:24px;line-height:1}.camera-frame{aspect-ratio:4/3;background:#1b1715;position:relative;overflow:hidden}.camera-frame video{object-fit:cover;width:100%;height:100%}.scan-line{background:var(--coral);height:2px;box-shadow:0 0 12px var(--coral);animation:2.4s ease-in-out infinite scan;position:absolute;top:50%;left:12%;right:12%}@keyframes scan{0%,to{transform:translateY(-70px)}50%{transform:translateY(70px)}}.corner{border-style:solid;border-color:#fff;width:32px;height:32px;position:absolute}.c1{border-width:3px 0 0 3px;top:10%;left:10%}.c2{border-width:3px 3px 0 0;top:10%;right:10%}.c3{border-width:0 0 3px 3px;bottom:10%;left:10%}.c4{border-width:0 3px 3px 0;bottom:10%;right:10%}.camera-help{text-align:center;color:var(--muted);margin:10px 0 20px;font-size:12px}.manual-code label{margin-bottom:8px;display:block}.manual-code>div{grid-template-columns:1fr auto;display:grid}.manual-code .button{min-height:48px}.login-page{background:radial-gradient(circle at 75% 45%, #dda93859, transparent 23%), var(--cream);grid-template-rows:auto 1fr auto;place-items:center;max-width:none;min-height:100vh;padding:32px clamp(20px,5vw,72px);display:grid}.login-brand{justify-self:start}.login-card{background:var(--paper);border:1px solid var(--line);width:min(530px,100%);box-shadow:14px 14px 0 var(--brown);padding:clamp(26px,6vw,56px);position:relative}.login-card h1{margin-bottom:20px;font-size:clamp(39px,6vw,61px)}.login-card>p{color:var(--muted);margin-bottom:26px}.login-card form{gap:10px;display:grid}.login-card form .button{margin-top:7px}.passkey-login{width:100%}.login-divider{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:13px;margin:22px 0 18px;font-size:10px;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--line);flex:1;height:1px}.login-illustration{background:var(--coral);border-radius:50%;place-items:center;width:84px;height:84px;display:grid;position:absolute;top:-42px;right:-32px;transform:rotate(8deg)}.login-illustration span{filter:grayscale()brightness(3);font-size:36px}.login-footer{color:var(--muted);align-self:end;margin:20px 0 0;font-family:Fraunces,Georgia,serif;font-style:italic}.loading-page{place-items:center;min-height:100vh;display:grid}.bean-loader{color:var(--coral);font-size:42px;animation:1s ease-in-out infinite alternate pulse}@keyframes pulse{to{opacity:.45;transform:scale(.65)}}.bottom-nav{display:none}@media (width<=820px){.topbar{height:64px}.top-actions .text-button{display:none}.hero{grid-template-columns:1fr;padding-top:25px}.hero-copy{padding:40px 0 10px}.hero h1{font-size:clamp(48px,14vw,68px)}.hero-art{min-height:390px}.sun{width:270px}.coffee-bag{width:185px;height:260px;padding:26px 16px}.coffee-bag strong{margin:28px 0 16px;font-size:29px}.coffee-bag i{width:46px;height:46px;font-size:21px}.scribble{bottom:52px}.dashboard-grid{grid-template-columns:1fr;gap:35px;padding-top:45px}.stats-card{min-height:320px}.history-header{flex-direction:column;align-items:start}.passkey-prompt{grid-template-columns:50px 1fr}.passkey-prompt .button{grid-column:1/-1;width:100%}.bottom-nav{z-index:30;height:calc(70px + env(safe-area-inset-bottom));padding:8px 16px env(safe-area-inset-bottom);background:var(--paper);border-top:1px solid var(--line);grid-template-columns:1fr 84px 1fr;align-items:center;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{color:var(--muted);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:10px;font-weight:700;display:flex}.bottom-nav svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.bottom-nav button.active{color:var(--coral)}.bottom-nav .nav-scan{background:var(--coral);color:#fff;border:4px solid var(--paper);width:58px;height:58px;box-shadow:0 0 0 1px var(--line);border-radius:50%;margin:-30px auto 0}.bottom-nav .nav-scan svg{width:25px;height:25px}.app-shell{padding-bottom:78px}}@media (width<=560px){main{padding-left:17px;padding-right:17px}.hero{min-height:0}.hero-copy>p{font-size:15px}.section-title{align-items:start}.section-title .text-button{font-size:12px}.coffee-card{grid-template-columns:68px minmax(0,1fr);gap:14px}.coffee-mark{width:68px;height:72px}.coffee-mark:before{width:50px;height:50px}.coffee-main h3{font-size:19px}.coffee-score{flex-direction:row;grid-column:2;margin-top:-7px}.field-grid{grid-template-columns:1fr}.field-grid .wide{grid-column:auto}.coffee-form{margin-left:-8px;margin-right:-8px}.form-page{padding-top:28px}.form-intro h1,.history-header h1,.account-header h1{font-size:47px}.account-section-heading{flex-direction:column;align-items:stretch}.account-section-heading .button{width:100%}.passkey-list li{grid-template-columns:46px 1fr}.passkey-list-icon{width:46px;height:46px}.delete-button{grid-column:2;justify-self:start}.scanner-sheet{padding:18px}.manual-code>div{grid-template-columns:1fr;gap:8px}.login-page{padding-top:24px}.login-card{box-shadow:8px 8px 0 var(--brown)}.login-illustration{right:-8px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
