:root{color-scheme:dark;--radius: 1rem;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, ui-sans-serif, system-ui, sans-serif;--background: #101010;--foreground: #f5f5f3;--card: #1a1a19;--muted: #232322;--muted-foreground: #9c9c97;--accent: #2a2a29;--accent-foreground: #f5f5f3;--primary: #f5f5f3;--primary-foreground: #0a0a0a;--border: rgb(255 255 255 / 10%);--ring: #f5f5f3;--status-reserved: #ff6b5a;--shadow-card: 0 1px 2px rgb(0 0 0 / 40%), 0 12px 32px -16px rgb(0 0 0 / 50%);--safe-bottom: env(safe-area-inset-bottom, 0px);font-family:var(--font-sans);line-height:1.5;font-weight:400}*,*:before,*:after{box-sizing:border-box}html{font-family:var(--font-sans);height:100%;height:100svh;overflow:hidden}html,body,#root{height:100%;height:100svh;overflow:hidden}body{margin:0;background:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior:none}h1,h2,h3{font-weight:600;letter-spacing:-.02em}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}button:disabled{opacity:.35;cursor:default}.app{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%;height:100svh;max-height:100svh;max-width:42rem;margin:0 auto;isolation:isolate;overflow:hidden}.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-shrink:0;padding:calc(.45rem + env(safe-area-inset-top,0px)) 1.25rem .35rem}.brand-mark{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.brand-mark svg{flex-shrink:0;color:var(--foreground)}.brand-name{font-size:.9375rem;font-weight:600;letter-spacing:-.01em}.brand-badge{font-size:.6875rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground);padding:.1rem .4rem;border:1px solid var(--border);border-radius:999px;background:var(--muted)}.brand-mark-compact .brand-name{font-size:.875rem}.stage{position:relative;display:grid;grid-template-rows:minmax(0,1fr);height:100%;min-height:0;padding:clamp(.25rem,.8svh,.5rem) 0;overflow:hidden}.scoring-row{display:grid;grid-template-columns:minmax(0,1fr) 8.25rem;align-items:center;height:100%;min-height:0;overflow:hidden}.focal-pane{display:flex;align-items:center;justify-content:center;min-height:0;overflow:hidden;padding:clamp(.2rem,.8svh,.5rem) .35rem clamp(.2rem,.8svh,.5rem) .1rem}.focal{display:flex;flex-direction:column;justify-content:center;gap:clamp(.15rem,.6svh,.35rem);width:100%;height:100%;min-height:0}.fade-swap{animation:fade-soft .22s ease-out}@keyframes fade-soft{0%{opacity:.35}to{opacity:1}}.focal-label{margin:0;flex-shrink:0;font-size:clamp(.75rem,2.2svh,1.125rem);font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-align:center;color:var(--status-reserved)}.score-wheel{--wheel-item: clamp(64px, 9svh, 88px);position:relative;flex:0 1 auto;width:100%;height:calc(var(--wheel-item) * 3.4);max-height:100%;min-height:0;touch-action:none;-webkit-user-select:none;user-select:none;cursor:ns-resize;outline:none;border-radius:var(--radius);overflow:hidden}.score-wheel:focus-visible{box-shadow:0 0 0 1px var(--border),0 0 0 3px #f5f5f32e}.score-wheel.dragging{cursor:grabbing}.score-wheel-track{position:absolute;inset:0}.score-wheel-item{position:absolute;top:50%;left:50%;display:flex;align-items:center;justify-content:center;width:max-content;min-width:4ch;font-size:clamp(4.25rem,11svh,8.5rem);font-weight:600;letter-spacing:-.06em;line-height:1;font-variant-numeric:tabular-nums;color:var(--foreground);pointer-events:none;will-change:transform,opacity;transform-origin:center center}.score-wheel-fade{pointer-events:none;position:absolute;left:0;right:0;height:34%;z-index:1}.score-wheel-fade-top{top:0;background:linear-gradient(to bottom,var(--background) 8%,rgb(16 16 16 / 0%) 100%)}.score-wheel-fade-bottom{bottom:0;background:linear-gradient(to top,var(--background) 8%,rgb(16 16 16 / 0%) 100%)}.sample-meta{position:absolute;left:0;bottom:0;z-index:2;display:flex;flex-direction:column;gap:.15rem;max-width:min(100%,calc(100% - 8.5rem));padding:clamp(.2rem,.7svh,.35rem) 1rem clamp(.35rem,1svh,.55rem);pointer-events:none}.sample-code{margin:0;font-size:.6875rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}.sample-name{margin:0;font-size:clamp(1.85rem,6.5svh,3.5rem);font-weight:600;letter-spacing:-.03em;line-height:1;color:var(--status-reserved)}.total-inline{margin:clamp(.3rem,1svh,.55rem) 0 0;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-foreground)}.total-inline span{font-size:.9375rem;font-weight:500;letter-spacing:-.02em;text-transform:none;font-variant-numeric:tabular-nums;color:var(--foreground)}.score-pane{min-height:0;max-height:100%;overflow:hidden;display:flex;flex-direction:column;align-self:center}.score-stack{list-style:none;margin:0;padding:0;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}.score-stack::-webkit-scrollbar{display:none}.score-row{display:grid;grid-template-columns:1fr;gap:clamp(.1rem,.4svh,.22rem);padding:clamp(.2rem,.7svh,.38rem) .35rem clamp(.22rem,.75svh,.42rem) .45rem;border-bottom:1px solid var(--border);border-left:2px solid transparent;cursor:pointer;transition:background .15s ease,border-color .15s ease}.score-row:hover{background:#ffffff0a}.score-row.selected{background:var(--accent);border-left-color:var(--status-reserved)}.score-stack li:last-child .score-row{border-bottom:none}.score-label{font-size:.6875rem;font-weight:500;letter-spacing:.01em;color:var(--foreground);line-height:1.15}.score-row.selected .score-label{color:var(--status-reserved);font-weight:600}.score-controls{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.2rem;width:100%}.score-value{min-width:0;height:clamp(1.35rem,3.6svh,1.7rem);border-radius:.2rem;display:grid;place-items:center;text-align:center;font-size:clamp(.7rem,1.9svh,.8125rem);font-weight:500;font-variant-numeric:tabular-nums;color:var(--foreground);background:#ffffff0f;transition:background .15s ease,color .15s ease}.score-row.selected .score-value{background:#ff6b5a29;color:var(--status-reserved);font-weight:600}.score-step{min-width:0;height:clamp(1.35rem,3.6svh,1.7rem);border-radius:.2rem;display:grid;place-items:center;font-size:.95rem;font-weight:600;line-height:1;color:var(--foreground);background:var(--muted);transition:background .15s ease,color .15s ease,opacity .15s ease}.score-step:hover:not(:disabled){background:#ffffff24;color:var(--foreground)}.score-row.selected .score-step{background:#ffffff1a}.sample-nav{padding:0;border-top:1px solid var(--border);background:color-mix(in oklab,var(--card) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden;max-width:100%;flex-shrink:0}.sample-strip{--strip-bubble: clamp(2.65rem, 7.5svh, 3.35rem);--strip-pad-top: clamp(.35rem, 1svh, .55rem);--strip-pad-bottom: calc(clamp(.4rem, 1.2svh, .7rem) + var(--safe-bottom));position:relative;box-sizing:border-box;height:calc(var(--strip-bubble) + .55rem + var(--strip-pad-top) + var(--strip-pad-bottom));padding:var(--strip-pad-top) 0 var(--strip-pad-bottom);width:100%;max-width:100%;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;cursor:ew-resize;outline:none}.sample-strip:focus-visible{box-shadow:inset 0 0 0 1px var(--border)}.sample-strip.dragging{cursor:grabbing}.sample-strip-track{position:absolute;inset:0}.sample-bubble{position:absolute;top:50%;left:50%;min-width:var(--strip-bubble);height:var(--strip-bubble);padding:0 .55rem;border-radius:999px;border:1px solid var(--border);display:grid;place-items:center;font-size:clamp(.8125rem,2.2svh,.9375rem);font-weight:500;letter-spacing:.02em;font-variant-numeric:tabular-nums;color:var(--muted-foreground);background:var(--card);pointer-events:auto;will-change:transform,opacity;transform-origin:center center;box-shadow:var(--shadow-card)}.sample-bubble.active{color:var(--primary-foreground);background:var(--primary);border-color:var(--primary);font-weight:600}.sample-strip-fade{pointer-events:none;position:absolute;top:0;bottom:0;width:2.75rem;z-index:1}.sample-strip-fade-left{left:0;background:linear-gradient(to right,var(--background) 10%,transparent)}.sample-strip-fade-right{right:0;background:linear-gradient(to left,var(--background) 10%,transparent)}@media(min-width:640px){.app{max-width:46rem}.stage{padding:clamp(.5rem,1.5svh,1rem) 0}.scoring-row{grid-template-columns:minmax(0,1fr) 8.5rem}.focal-pane{padding:clamp(.35rem,1.2svh,.75rem) .75rem clamp(.35rem,1.2svh,.75rem) .5rem}.sample-meta{padding:clamp(.25rem,.9svh,.45rem) 1.5rem clamp(.4rem,1.2svh,.65rem)}.score-wheel-item{font-size:clamp(4rem,14svh,9rem)}}:root{--accent-soft: rgb(255 107 90 / 16%);--ok: #7fd18b}.app-score{display:flex;flex-direction:column}.app-score>.stage{flex:1 1 0;height:auto}.app-scroll{display:block;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.screen{display:flex;flex-direction:column;gap:.9rem;padding:.75rem 1.25rem calc(2rem + var(--safe-bottom))}.screen-title{margin:.25rem 0 0;font-size:clamp(1.6rem,6vw,2.1rem);line-height:1.1}.screen-lede{margin:0;color:var(--muted-foreground);font-size:.95rem}.eyebrow{margin:0;font-size:.6875rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}.accent{color:var(--status-reserved)}.join-form{display:flex;flex-direction:column;gap:.85rem}.join-form.compact{gap:.6rem}.field{display:flex;flex-direction:column;gap:.3rem;font-size:.8125rem;font-weight:500}.field small{color:var(--muted-foreground);font-weight:400}.field input,.field textarea,.quick-input{width:100%;font:inherit;font-size:1rem;color:var(--foreground);background:var(--card);border:1px solid var(--border);border-radius:.6rem;padding:.7rem .8rem;outline:none}.field input:focus,.field textarea:focus,.quick-input:focus{border-color:var(--ring)}.code-input{font-size:1.6rem!important;font-weight:600;letter-spacing:.3em;text-transform:uppercase;font-variant-numeric:tabular-nums}.primary-button,.secondary-button,.sheet-bar-submit{min-height:3rem;padding:0 1.25rem;border-radius:999px;font-weight:600;font-size:1rem;color:var(--primary-foreground);background:var(--primary)}.secondary-button{color:var(--foreground);background:var(--muted);border:1px solid var(--border)}.link{align-self:flex-start;padding:0;font-size:.875rem;color:var(--foreground);text-decoration:underline;text-underline-offset:3px}.form-error,.gaps{margin:0;font-size:.875rem;color:var(--status-reserved)}.signed-in{margin:0;font-size:.9rem}.account-box{border-top:1px solid var(--border);padding-top:1rem}.room-bar{display:flex;gap:.5rem;align-items:baseline;margin:0;font-size:.8125rem;font-weight:600}.room-bar-clock{font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.room-bar-clock.over,.clock.over{color:#f0b44c}.tabs{display:flex;gap:.35rem;padding:0 1.25rem .4rem;overflow-x:auto;scrollbar-width:none;flex-shrink:0}.tab{flex-shrink:0;padding:.35rem .8rem;border-radius:999px;font-size:.8125rem;font-weight:500;color:var(--muted-foreground);border:1px solid var(--border)}.tab.on{color:var(--primary-foreground);background:var(--primary);border-color:var(--primary)}.banner{margin:0 1.25rem .4rem;padding:.45rem .7rem;border-radius:.5rem;font-size:.8125rem;background:var(--muted);color:var(--muted-foreground);flex-shrink:0}.toast{position:fixed;left:50%;bottom:calc(8.5rem + var(--safe-bottom));z-index:30;transform:translate(-50%);max-width:calc(100% - 2rem);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.6rem 1rem;border-radius:999px;font-size:.875rem;font-weight:500;color:var(--primary-foreground);background:var(--primary);box-shadow:var(--shadow-card)}.lobby-clock{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem}.clock{font-size:clamp(4rem,22vw,7rem);font-weight:600;letter-spacing:-.05em;line-height:1;font-variant-numeric:tabular-nums}.clock-caption{font-size:.8125rem;color:var(--muted-foreground)}.clock-bar{display:block;width:100%;height:.4rem;border-radius:999px;background:var(--muted);overflow:hidden}.clock-bar span{display:block;height:100%;background:var(--status-reserved);transition:width .5s ease}.evaluate-now ul{display:flex;flex-wrap:wrap;gap:.4rem;margin:.4rem 0 0;padding:0;list-style:none}.evaluate-now li{padding:.4rem .75rem;border-radius:.6rem;background:var(--card);border:1px solid var(--border);font-weight:600}.evaluate-now li span{font-weight:400;color:var(--muted-foreground)}.stage-list{display:flex;flex-wrap:wrap;gap:.3rem;margin:0;padding:0;list-style:none}.stage-list li{padding:.2rem .6rem;border-radius:999px;border:1px solid var(--border);font-size:.75rem;color:var(--muted-foreground)}.stage-list li.done{opacity:.55}.stage-list li.current{color:var(--primary-foreground);background:var(--status-reserved);border-color:var(--status-reserved);font-weight:600}.focal-intensities{display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem 1rem;flex-shrink:0}.focal-hint{margin:0;text-align:center;font-size:.75rem;color:var(--muted-foreground)}.score-wheel.unset .score-wheel-item{color:var(--muted-foreground);opacity:.45!important}.score-wheel.disabled{cursor:default;opacity:.6}.score-row.missing .score-label{color:var(--status-reserved)}.score-row.missing .score-value{box-shadow:inset 0 0 0 1px var(--status-reserved)}.dot-scale{display:flex;align-items:center;gap:.45rem}.dot-scale-label{font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-foreground)}.dot-scale-dots{display:flex;gap:.25rem}.dot{width:1.55rem;height:1.55rem;border-radius:999px;border:1.5px solid var(--muted-foreground)}.dot.on{background:var(--status-reserved);border-color:var(--status-reserved)}.sample-bubble.done:after{content:"";position:absolute;top:.15rem;right:.15rem;width:.5rem;height:.5rem;border-radius:999px;background:var(--ok)}.sheet-bar{display:flex;gap:.5rem;padding:.5rem 1rem 0}.sheet-bar-button{flex:1 1 auto;min-height:2.6rem;padding:0 .9rem;border-radius:999px;font-size:.8125rem;font-weight:500;text-align:left;background:var(--muted);border:1px solid var(--border)}.sheet-bar-submit{flex:0 0 auto;min-height:2.6rem;font-size:.875rem}.sheet-bar-submit:only-child{flex:1 1 auto}.sheet-bar-submit.wide{width:100%;min-height:3rem}.sheet-panel-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-end;justify-content:center;background:#0000008c}.sheet-panel{width:100%;max-width:42rem;max-height:88svh;overflow-y:auto;overscroll-behavior:contain;padding:0 1.25rem calc(1.25rem + var(--safe-bottom));border-radius:1.25rem 1.25rem 0 0;background:var(--background);border-top:1px solid var(--border);box-shadow:var(--shadow-card)}.sheet-panel-head{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center;padding:1rem 0 .6rem;background:var(--background)}.sheet-panel-head h2{margin:0;font-size:1.25rem}.sheet-panel-close{padding:.4rem .9rem;border-radius:999px;font-weight:600;background:var(--muted)}.sheet-section{display:flex;flex-direction:column;gap:.55rem;padding:.9rem 0;border-top:1px solid var(--border)}.sheet-section.missing .sheet-heading{color:var(--status-reserved)}.sheet-heading{margin:0;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.sheet-required{margin-left:.35rem;font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted-foreground)}.sheet-caption{margin:0;font-size:.8125rem;color:var(--muted-foreground)}.roast-row{display:flex;gap:.5rem}.roast-swatch{flex:1 1 0;height:2.75rem;border-radius:.6rem;border:2px solid transparent}.roast-swatch.on{border-color:var(--foreground);box-shadow:0 0 0 2px var(--background) inset}.cup-grid{display:flex;flex-direction:column;gap:.5rem}.cup-row{display:grid;grid-template-columns:5.5rem minmax(0,1fr) 1.75rem;align-items:center;gap:.5rem}.cup-row-label{font-size:.8125rem;font-weight:500}.cup-row-points{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}.cup-boxes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.35rem}.cup-box{position:relative;height:2.75rem;border-radius:.5rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--foreground);background:var(--muted);border:1px solid var(--border)}.cup-box.failed{color:var(--status-reserved);background:var(--accent-soft);border-color:var(--status-reserved)}.cup-box.defect{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.cup-box.defect.taint{background:#f0b44c2e;border-color:#f0b44c}.cup-box.defect.fault{background:var(--accent-soft);border-color:var(--status-reserved)}.cup-box-n{font-size:.75rem;color:var(--muted-foreground)}.cup-box-kind{font-size:1rem}.defect-equation,.breakdown{margin:0;font-size:.875rem;font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.defect-equation strong,.breakdown strong{color:var(--foreground)}.attribute-notes summary{cursor:pointer;font-size:.875rem;padding:.25rem 0}.attribute-notes .field{margin-top:.5rem}.final-score{display:flex;justify-content:space-between;align-items:baseline;margin:0}.final-score span{font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}.final-score strong{font-size:2.5rem;font-weight:600;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.quick-stage{display:block;overflow-y:auto}.quick-score{display:flex;flex-direction:column;gap:.8rem;padding:.5rem 1.25rem 1rem}.quick-row{display:grid;grid-template-columns:3.25rem minmax(0,1fr) 3.25rem;gap:.5rem}.quick-input{text-align:center;font-size:2.5rem!important;font-weight:600;font-variant-numeric:tabular-nums}.quick-input.missing{border-color:var(--status-reserved)}.score-step.big{height:auto;font-size:1.5rem}.sheet-list{display:flex;flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none}.sheet-list-row{display:grid;grid-template-columns:3rem minmax(0,1fr) auto;align-items:center;width:100%;gap:.75rem;padding:.75rem .9rem;border-radius:.8rem;text-align:left;background:var(--card);border:1px solid var(--border)}.sheet-list-code{font-size:1.5rem;font-weight:600;color:var(--status-reserved)}.sheet-list-status{font-size:.875rem;color:var(--muted-foreground)}.sheet-list-score{font-size:1.15rem;font-weight:600;font-variant-numeric:tabular-nums}.result-list{display:flex;flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none}.result-card{display:flex;flex-direction:column;gap:.6rem;padding:.9rem;border-radius:1rem;background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-card)}.result-head{display:grid;grid-template-columns:3rem minmax(0,1fr) auto;align-items:center;gap:.75rem}.result-code{display:grid;place-items:center;height:3rem;border-radius:.75rem;font-size:1.5rem;font-weight:600;background:var(--muted)}.result-lot{display:flex;flex-direction:column;min-width:0}.result-lot strong,.result-lot span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-lot span,.result-mean span{font-size:.75rem;color:var(--muted-foreground)}.result-mean{display:flex;flex-direction:column;align-items:flex-end}.result-mean strong{font-size:1.75rem;font-variant-numeric:tabular-nums}.result-strip{position:relative;height:1.75rem;border-radius:999px;background:var(--muted)}.result-mean-line{position:absolute;top:.2rem;bottom:.2rem;width:2px;transform:translate(-50%);background:#f5f5f399}.result-dot{position:absolute;top:50%;width:.95rem;height:.95rem;border-radius:999px;transform:translate(-50%,-50%);border:2px solid var(--muted-foreground);background:var(--background)}.result-dot.counts{border-color:var(--status-reserved);background:var(--status-reserved)}.result-dot.mine{box-shadow:0 0 0 2px var(--foreground)}.result-you{margin:0;font-size:.875rem}.result-you span{color:var(--muted-foreground)}.chips{display:flex;flex-wrap:wrap;gap:.3rem;margin:0;padding:0;list-style:none}.chips li{padding:.2rem .6rem;border-radius:999px;border:1px solid var(--border);font-size:.75rem}.chips li span{color:var(--muted-foreground)}.master{display:flex;flex-direction:column;gap:.5rem}.master-scroll{overflow-x:auto;border-radius:.8rem;border:1px solid var(--border);background:var(--card)}.master table{width:100%;min-width:36rem;border-collapse:collapse;font-size:.8125rem;font-variant-numeric:tabular-nums}.master th,.master td{padding:.45rem .55rem;text-align:right;border-bottom:1px solid var(--border)}.master th[scope=row],.master thead th:first-child{text-align:left}.master thead th{font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-foreground)}
