@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&family=IBM+Plex+Sans:wght@400;500;600&family=Lato:wght@300;400;700&family=Open+Sans:wght@400;700&display=swap";.flavor-wheel-wrapper{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem 0;position:relative}.flavor-wheel-viewport{width:100%;max-width:600px;aspect-ratio:1;overflow:hidden;border-radius:50%}.flavor-wheel-svg{width:100%;height:100%}.flavor-wheel-viewport--zoomed{border-radius:0}.flavor-wheel-back{display:inline-flex;align-items:center;gap:.3rem;padding:.4rem .8rem;font-size:.85rem;font-family:var(--font-body, "IBM Plex Sans", sans-serif);color:var(--text-muted, #7a7067);background:var(--bg-panel, #fffaf0);border:1px solid var(--border-soft, #e0d6c8);border-radius:6px;cursor:pointer;transition:background .12s ease;align-self:flex-start}.flavor-wheel-back:hover{background:var(--bg-canvas, #f5f0e8)}.category-wedge{transition:transform .2s ease,filter .2s ease,opacity .2s ease}.category-wedge--hovered{transform:scale(1.04);filter:brightness(1.08)}.category-wedge--dimmed{opacity:.5}.wheel-segment{stroke:var(--bg-panel, #fffaf0);stroke-width:1}.wheel-segment--selected{stroke:#fff;stroke-width:2.5;filter:none}.wheel-segment--zoomable,.wheel-segment--clickable{cursor:pointer}.descriptor-group--clickable{transform-origin:400px 400px;transition:transform .3s cubic-bezier(.4,0,.2,1)}.descriptor-group--clickable:hover{transform:scale(1.03)}.descriptor-group--clickable:hover .wheel-segment--clickable{filter:brightness(.92);stroke-width:2}.wheel-label{pointer-events:none;-webkit-user-select:none;user-select:none;font-family:var(--font-body, "IBM Plex Sans", sans-serif)}.ring-1-label{font-size:13px;font-weight:700;fill:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}.ring-2-label{font-size:9px;font-weight:600;fill:#fff}.ring-3-label{font-size:9px;font-weight:700;fill:#fff}.flavor-wheel-count{font-size:.85rem;font-family:var(--font-body, "IBM Plex Sans", sans-serif);color:var(--text-muted, #7a7067)}@media(max-width:768px){.flavor-wheel-wrapper{padding:.5rem 0}.flavor-wheel-viewport{max-width:100%}}.reactEasyCrop_Container{position:absolute;inset:0;overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none;cursor:move;display:flex;justify-content:center;align-items:center}.reactEasyCrop_Image,.reactEasyCrop_Video{will-change:transform}.reactEasyCrop_Contain{max-width:100%;max-height:100%;margin:auto;position:absolute;inset:0}.reactEasyCrop_Cover_Horizontal{width:100%;height:auto}.reactEasyCrop_Cover_Vertical{width:auto;height:100%}.reactEasyCrop_CropArea{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid rgba(255,255,255,.5);box-sizing:border-box;box-shadow:0 0 0 9999em;color:#00000080;overflow:hidden}.reactEasyCrop_CropAreaRound{border-radius:50%}.reactEasyCrop_CropAreaGrid:before{content:" ";box-sizing:border-box;position:absolute;border:1px solid rgba(255,255,255,.5);inset:0 33.33%;border-top:0;border-bottom:0}.reactEasyCrop_CropAreaGrid:after{content:" ";box-sizing:border-box;position:absolute;border:1px solid rgba(255,255,255,.5);inset:33.33% 0;border-left:0;border-right:0}:root{--font-body: "IBM Plex Sans", sans-serif;--font-display: "Fraunces", serif;--bg-canvas: #f6f2e8;--bg-panel: #fffaf0;--bg-panel-alt: #ede2c8;--bg-nav: #2b4a5e;--bg-nav-active: #3d6580;--text-main: #1d2326;--text-muted: #475054;--text-light: #f2f2e9;--brand: #b64d22;--border-soft: #d9ccb0;--shadow: 0 8px 26px rgba(27, 31, 34, .12)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;color:var(--text-main);font-family:var(--font-body);background:radial-gradient(circle at 15% -10%,#ffe0b8 0%,transparent 34%),radial-gradient(circle at 80% -20%,#d6e4ec 0%,transparent 28%),var(--bg-canvas)}h1,h2,h3{margin:0;font-family:var(--font-display);line-height:1.15}p{margin:0;color:var(--text-muted)}code{padding:.08rem .3rem;border-radius:.3rem;background:#2b4a5e14;font-size:.92em}input[type=text],input[type=number],input[type=email],input[type=password],input[type=url],input[type=search],input[type=date],input:not([type]),select,textarea{border:1px solid var(--border-soft);border-radius:.55rem;padding:.5rem .6rem;font:inherit;background:#fffdf7;transition:border-color .15s;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--bg-nav)}textarea{resize:vertical}#root{min-height:100vh}.app-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr}.topbar{display:grid;grid-template-columns:auto 1fr auto;gap:1rem;align-items:center;padding:1.1rem 1.4rem;border-bottom:1px solid var(--border-soft);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:color-mix(in srgb,var(--bg-canvas) 88%,white);position:relative;z-index:40}.menu-toggle{display:none;border:0;border-radius:999px;background:var(--bg-nav);color:var(--text-light);padding:0;width:2.2rem;height:2.2rem;align-items:center;justify-content:center;cursor:pointer;font-weight:600;font-size:1.2rem;line-height:1}.topbar-brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:inherit}.topbar-logo{height:36px;width:auto}.topbar h1{font-size:clamp(1.2rem,2vw,1.6rem);color:var(--bg-nav)}.topbar-auth-buttons{display:flex;gap:.5rem;align-items:center}.topbar-login-btn{text-decoration:none;font-size:.9rem;font-weight:500;color:var(--bg-nav);padding:.4rem .8rem;border:1px solid var(--border-soft);border-radius:6px;transition:background .15s ease}.topbar-login-btn:hover{background:var(--bg-panel-alt)}.topbar-signup-btn{text-decoration:none;font-size:.9rem;font-weight:500;color:var(--text-light);background:var(--bg-nav);padding:.4rem .8rem;border:1px solid var(--bg-nav);border-radius:6px;transition:opacity .15s ease}.topbar-signup-btn:hover{opacity:.85}.topbar-user{position:relative;display:flex;align-items:center}.profile-toggle{display:flex;align-items:center;gap:.35rem;background:none;border:1px solid var(--border-soft);border-radius:6px;padding:.4rem .7rem;color:var(--text-muted);font-weight:500;font-size:.9rem;cursor:pointer;transition:border-color .15s ease,background .15s ease}.profile-toggle:hover{background:color-mix(in srgb,var(--border-soft) 30%,transparent)}.profile-toggle-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover}.profile-toggle-avatar-placeholder{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--accent, #6366f1);color:#fff;font-size:.75rem;font-weight:600;line-height:1}.profile-caret{font-size:.7rem;line-height:1}.profile-dropdown{position:absolute;top:calc(100% + .4rem);right:0;min-width:160px;z-index:100;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:8px;box-shadow:0 4px 16px #0000001a;padding:.3rem 0}.profile-dropdown-item{display:block;width:100%;padding:.55rem .9rem;background:none;border:none;text-align:left;font-size:.9rem;font-weight:500;color:var(--text-main);text-decoration:none;cursor:pointer;transition:background .12s ease}.profile-dropdown-item:hover{background:color-mix(in srgb,var(--border-soft) 35%,transparent)}.shell-body{display:grid;grid-template-columns:260px 1fr;min-height:0}.sidebar{padding:1rem;background:var(--bg-nav);color:var(--text-light);transform:translate(0);transition:transform .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1)}.sidebar-backdrop{display:none}.sidebar nav{display:grid;gap:.55rem}.nav-link{text-decoration:none;color:var(--text-light);padding:.65rem .8rem;border-radius:.6rem;border:1px solid transparent;transition:background-color .12s ease}.nav-link:hover{background:#ffffff1a}.nav-link.active{background:var(--bg-nav-active);border-color:#ffffff38}.nav-link-locked{display:flex;align-items:center;justify-content:space-between;opacity:.5;cursor:not-allowed;pointer-events:auto}.nav-link-locked:hover{background:transparent}.lock-icon{margin-left:.35rem;flex-shrink:0;opacity:.7}.sidebar-auth-buttons{display:none}.paid-feature-banner{display:flex;align-items:center;gap:.6rem;padding:1rem 1.2rem;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:.75rem;color:var(--text-muted);font-size:.9rem}.paid-feature-lock-wrapper{display:inline-block}.paid-feature-lock-wrapper button:disabled{opacity:.55;cursor:not-allowed}.paid-section-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg-panel) 75%,transparent);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:inherit;z-index:10}.paid-section-overlay-content{display:flex;flex-direction:column;align-items:center;gap:.5rem;color:var(--text-muted);font-size:.95rem;font-weight:500;text-align:center;padding:1rem}.sidebar-hint{margin-top:1rem;font-size:.82rem;color:#f2f2e9d6;line-height:1.35}.main-content{padding:clamp(1rem,2vw,2rem);overflow:auto}.panel{background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:1rem;box-shadow:var(--shadow);padding:clamp(1rem,2.2vw,1.8rem);display:grid;gap:.9rem}.panel h2{font-size:clamp(1.2rem,2vw,1.6rem)}.panel-header-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.roasts-panel{position:relative}.roasts-layout{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:1rem;align-items:start}.roasts-list{display:grid;gap:.55rem;max-height:32vh;overflow:auto;padding-right:.25rem}.roast-list-row{display:flex;justify-content:space-between;gap:.6rem;border:1px solid var(--border-soft);border-radius:.8rem;padding:.65rem;background:#fff}.roast-list-row.active{border-color:var(--brand);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand) 40%,transparent)}.row-link{border:0;background:transparent;padding:0;margin:0;font:inherit;color:#2b4a5e;font-weight:600;cursor:pointer}.row-subline{font-size:.86rem;margin-top:.25rem}.row-checkbox{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem}.detail-headline{display:flex;justify-content:space-between;align-items:center;gap:1rem}.detail-actions{display:inline-flex;flex-wrap:wrap;gap:.55rem}.telemetry-grid{display:grid;gap:.7rem;grid-template-columns:repeat(3,minmax(0,1fr))}.telemetry h4{margin:0;font-size:.98rem}.edit-form{border:1px solid var(--border-soft);border-radius:.9rem;background:#fff;padding:1rem;display:grid;gap:.8rem}.edit-form h4{margin:0;font-size:1rem;font-family:var(--font-display)}.edit-form label,.edit-form .field-group{display:grid;gap:.3rem;font-size:.9rem}.edit-form input,.edit-form select{width:100%;border:1px solid var(--border-soft);border-radius:.55rem;padding:.5rem .6rem;font:inherit;background:#fffdf7}.button{border:0;border-radius:.7rem;background:#2b4a5e;color:var(--text-light);padding:.55rem .8rem;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.button:disabled{opacity:.65;cursor:not-allowed}.button-secondary{background:transparent;border:1.5px solid #2b4a5e;color:#2b4a5e}.button-secondary:hover{background:#2b4a5e;color:var(--text-light)}.button-danger{background:#8a2f1b}.empty-state{border:1px dashed var(--border-soft);border-radius:.9rem;padding:1rem;background:#fffdf8;display:grid;gap:.4rem}.toast-stack{position:fixed;right:1rem;bottom:1rem;display:grid;gap:.5rem;z-index:10000}.toast{margin:0;border-radius:.6rem;padding:.55rem .75rem;color:var(--text-light);box-shadow:var(--shadow)}.toast.success{background:#2b5e7a}.toast.error{background:#8a2f1b}.toast{display:flex;align-items:center;gap:.5rem}.toast-message{flex:1}.toast-report-btn{flex-shrink:0;border:1px solid rgba(255,255,255,.4);border-radius:.35rem;padding:.15rem .5rem;background:transparent;color:var(--text-light);font-size:.8rem;cursor:pointer}.toast-report-btn:hover{background:#ffffff26}.error-report-modal{width:min(520px,100%)}.error-report-modal form{display:flex;flex-direction:column;gap:.75rem;padding:1rem 0}.error-report-meta{display:flex;gap:.5rem;font-size:.875rem;color:var(--text-muted)}.error-report-meta code{font-size:.8rem}.error-report-label{font-weight:600;font-size:.875rem;color:var(--text-main);white-space:nowrap}.error-report-textarea{width:100%;border:1px solid var(--border-soft);border-radius:.5rem;padding:.5rem .75rem;font-family:var(--font-body);font-size:.9rem;resize:vertical;background:var(--bg-panel);color:var(--text-main)}.error-report-textarea:focus{outline:2px solid var(--brand);outline-offset:-1px}.error-report-success{padding:2rem 0;text-align:center;font-size:1rem;color:var(--text-main)}.beans-panel{position:relative}.bean-toolbar{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap}.bean-toolbar input[type=text],.bean-toolbar input:not([type]){flex:1;min-width:220px;width:auto}.bean-toolbar label{display:grid;gap:.28rem;font-size:.86rem;color:var(--text-muted)}.bean-form input:not([type=checkbox]),.bean-form textarea{width:100%;border:1px solid var(--border-soft);border-radius:.55rem;padding:.5rem .6rem;font:inherit;background:#fffdf7}.filter-pills{display:flex;flex-wrap:wrap;gap:.35rem}.filter-pill{border:1px solid var(--border-soft);border-radius:999px;padding:.45rem .8rem;font:inherit;font-size:.82rem;font-weight:500;background:#fff;color:var(--text-muted);cursor:pointer;transition:all .12s ease}.filter-pill:hover{border-color:#a5b8c5;background:#f0f2f4}.filter-pill.active{background:#2b4a5e;color:var(--text-light);border-color:#2b4a5e}.table-scroll{max-height:32vh;overflow:auto;-webkit-overflow-scrolling:touch}.bean-table{width:100%;border-collapse:collapse;font-size:.9rem}.bean-table thead th{position:sticky;top:0;z-index:1;background:#f7efd9;color:#2b4a5e;text-transform:uppercase;letter-spacing:.04em;font-size:.74rem;text-align:left;padding:.56rem .6rem;border-bottom:1px solid var(--border-soft)}.bean-table thead th.sortable-header{cursor:pointer;-webkit-user-select:none;user-select:none}.bean-table thead th.sortable-header:hover{background:#efe5c8}.bean-table tbody td{padding:.6rem;border-bottom:1px solid #eee4cd;vertical-align:middle}.bean-table tbody tr{background:#fff;transition:background-color .12s ease}.bean-table tbody tr:hover{background:#f9f4e8}.bean-table tbody tr.active{background:color-mix(in srgb,var(--brand) 13%,white)}.bean-table tbody tr.clickable-row,tr.clickable-row{cursor:pointer}tr.clickable-row:hover{background:color-mix(in srgb,var(--brand) 7%,white)}.bean-id-cell{display:inline-flex;align-items:center;gap:.45rem;font-weight:600;color:#2b4a5e}.bean-id-text{white-space:nowrap}.actions-cell{white-space:nowrap;text-align:right}.action-btn{border:1px solid var(--border-soft);border-radius:.45rem;padding:.35rem .6rem;font:inherit;font-size:.76rem;font-weight:500;background:#fff;color:var(--text-muted);cursor:pointer;margin-left:.25rem;transition:all .1s ease}.action-btn:first-child{margin-left:0}.action-btn:hover{background:#f0f2f4;border-color:#a5b8c5;color:var(--text-main)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.action-btn-danger{background:#8a2f1b;border-color:#8a2f1b;color:#fff}.action-btn-danger:hover{background:#7a2918;border-color:#7a2918;color:#fff}.badge-default{display:inline-block;margin-left:.5em;padding:.1em .5em;font-size:.75em;font-weight:600;border-radius:4px;background:#e8f0fe;color:#1a56db;vertical-align:middle}.inventory-modal{width:min(480px,100%)}.inventory-modal .bean-form{border:0;padding:0;background:transparent}.adjustment-history{margin-top:1rem;border-top:1px solid var(--border-soft);padding-top:1rem}.adjustment-history h4{margin:0 0 .5rem;font-size:.9rem;color:var(--text-muted)}.adjustment-history-table-wrapper{max-height:200px;overflow-y:auto}.adjustment-history-table{width:100%;border-collapse:collapse;font-size:.85rem}.adjustment-history-table th{text-align:left;padding:.3rem .5rem;border-bottom:1px solid var(--border-soft);color:var(--text-muted);font-weight:600}.adjustment-history-table td{padding:.3rem .5rem;border-bottom:1px solid var(--border-soft)}.adjustment-history-table .text-positive{color:#3a8a5c}.adjustment-history-table .text-negative{color:#8a2f1b}.button-danger-small{background:#8a2f1b;border:1px solid #8a2f1b;color:#fff;padding:.15rem .5rem;font-size:.75rem;border-radius:4px;cursor:pointer}.button-danger-small:hover{background:#7a2918;border-color:#7a2918}.button-danger-small:disabled{opacity:.5;cursor:not-allowed}.bean-table-number{text-align:right;color:#2b4a5e;font-variant-numeric:tabular-nums;font-weight:600}.stock-pill{display:inline-flex;align-items:center;border-radius:999px;border:1px solid transparent;padding:.18rem .55rem;font-size:.76rem;font-weight:600;white-space:nowrap}.stock-pill.error{background:#fbe2db;color:#8f2c1d;border-color:#f2b9aa}.bean-form{border:1px solid var(--border-soft);border-radius:.9rem;background:#fff;padding:1rem;display:grid;gap:.8rem}.bean-form h4{margin:0;font-size:1rem;font-family:var(--font-display)}.bean-form label,.bean-form .field-group{display:grid;gap:.3rem;font-size:.9rem}.bean-form textarea{resize:vertical;min-height:4.2rem}.bean-form-grid{display:grid;gap:.8rem;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.bean-form-grid>label{display:flex;flex-direction:column;gap:.2rem}.bean-form-grid>label input,.bean-form-grid>label select{height:2.5rem;box-sizing:border-box}.bean-form-grid>label input[type=date]{-webkit-appearance:none;appearance:none}.bean-form-actions{display:flex;justify-content:flex-end;align-items:center;gap:1rem;position:sticky;bottom:-1px;background:var(--bg-panel);padding:1rem 0;border-top:1px solid var(--border-soft);margin-top:1rem;z-index:1}.tasting-notes-prompt{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding:2rem 1rem;text-align:center}.tasting-notes-prompt h3{margin:0}.tasting-notes-prompt p{margin:0;color:var(--text-muted)}.tasting-notes-prompt-actions{display:flex;gap:1rem}.bean-origins-section{margin:.5rem 0}.bean-origins-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.bean-origins-header h4{margin:0;font-size:1rem}.bean-origins-header-actions{display:flex;align-items:center;gap:.5rem}.previous-origin-picker{position:relative}.previous-origin-dropdown{position:absolute;z-index:100;top:calc(100% + 4px);right:0;min-width:260px;max-height:240px;overflow-y:auto;background:var(--bg-panel, #fff);border:1px solid var(--border-soft);border-radius:.55rem;box-shadow:0 4px 16px #0000001f;display:flex;flex-direction:column}.previous-origin-item{all:unset;cursor:pointer;padding:.5rem .7rem;font-size:.88rem;border-bottom:1px solid var(--border-soft);display:block}.previous-origin-item:last-child{border-bottom:none}.previous-origin-item:hover{background:var(--accent-bg, #f0e6d6)}.previous-origin-item strong{font-weight:600}.previous-origin-item span{color:var(--text-muted)}.field-error{font-size:.78rem;color:#8a2f1b}.field-required{color:#8a2f1b;margin-left:.2rem;font-weight:600}.field-optional{font-size:.75rem;color:var(--text-muted);font-weight:400;margin-left:.3rem}.input-error{border-color:#8a2f1b!important}.bean-origin-fieldset{border:1px solid var(--border, #ccc);border-radius:var(--radius, 6px);padding:.75rem;margin-bottom:.75rem}.bean-origin-fieldset-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.bean-origin-fieldset-header legend{font-weight:600;font-size:.9rem}.bean-origin-section{margin-bottom:.75rem}.bean-origin-section-label{font-size:.9rem;font-weight:600;margin:0 0 .4rem;color:var(--text-muted)}.button-small{font-size:.8rem;padding:.3rem .6rem}.cultivar-multiselect{position:relative}.cultivar-multiselect-trigger{min-height:2.5rem;border:1px solid var(--border-soft);border-radius:.55rem;padding:.35rem .5rem;background:#fffdf7;cursor:pointer;display:flex;align-items:center;flex-wrap:wrap;gap:.3rem}.cultivar-multiselect-trigger:focus{outline:2px solid var(--accent, #6f4e37);outline-offset:-1px}.cultivar-placeholder{color:var(--text-muted);font-size:.92rem}.cultivar-chips{display:flex;flex-wrap:wrap;gap:.3rem}.cultivar-chip{display:inline-flex;align-items:center;gap:.25rem;background:var(--accent-bg, #f0e6d6);color:var(--text-primary, #1d2326);border-radius:.35rem;padding:.15rem .45rem;font-size:.82rem;line-height:1.3}.cultivar-chip-remove{all:unset;cursor:pointer;font-size:1rem;line-height:1;opacity:.6;padding:0 .1rem}.cultivar-chip-remove:hover{opacity:1}.cultivar-dropdown{position:absolute;z-index:100;top:calc(100% + 4px);left:0;right:0;background:var(--bg-panel, #fff);border:1px solid var(--border-soft);border-radius:.55rem;box-shadow:0 4px 16px #0000001f;max-height:320px;display:flex;flex-direction:column}.cultivar-search{border:none;border-bottom:1px solid var(--border-soft);border-radius:.55rem .55rem 0 0;padding:.55rem .7rem;font:inherit;font-size:.9rem;outline:none;background:transparent;width:100%;box-sizing:border-box}.cultivar-options{overflow-y:auto;flex:1;min-height:0}.cultivar-group-label{padding:.3rem .7rem .1rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);position:sticky;top:0;background:var(--bg-panel, #fff)}.cultivar-option{display:flex;align-items:center;gap:.3rem;padding:.15rem .7rem;cursor:pointer;font-size:.84rem;line-height:1.2}.cultivar-option:hover{background:var(--accent-bg, #f0e6d6)}.cultivar-option input[type=checkbox]{width:.85rem;height:.85rem;margin:0;flex-shrink:0;accent-color:var(--accent, #6f4e37)}.cultivar-custom-badge{font-size:.7rem;background:var(--border-soft);border-radius:.25rem;padding:.05rem .35rem;color:var(--text-muted);margin-left:auto}.cultivar-no-results{padding:.7rem;color:var(--text-muted);font-size:.88rem;text-align:center}.cultivar-add-custom-section{border-top:1px solid var(--border-soft);padding:.45rem .7rem}.cultivar-add-custom-btn{all:unset;cursor:pointer;color:var(--accent, #6f4e37);font-size:.88rem;font-weight:500}.cultivar-add-custom-btn:hover{text-decoration:underline}.cultivar-add-custom-form{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.cultivar-add-custom-form input[type=text]{flex:1;min-width:100px;height:2rem;padding:.25rem .5rem;font:inherit;font-size:.88rem;border:1px solid var(--border-soft);border-radius:.35rem}.cultivar-add-custom-form select{height:2rem;padding:.25rem .4rem;font:inherit;font-size:.84rem;border:1px solid var(--border-soft);border-radius:.35rem}.char-count{display:block;text-align:right;font-size:.78rem;color:var(--text-muted);margin-top:.2rem}.batch-id-preview{display:block;padding:.55rem .75rem;font-family:var(--font-mono, monospace);font-size:.95rem;color:var(--text-muted);background:var(--bg-secondary, #f5f5f5);border-radius:var(--radius, 6px);border:1px dashed var(--border, #ccc)}.dropdown{position:relative}.dropdown-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;border:1px solid var(--border-soft);border-radius:.55rem;padding:.5rem .6rem;font:inherit;background:#fff;cursor:pointer;text-align:left;color:var(--text-main);transition:border-color .15s}.dropdown-trigger:hover{border-color:#b8a98a}.dropdown-open .dropdown-trigger{border-color:var(--brand);box-shadow:0 0 0 2px #b64d221f}.dropdown-disabled{opacity:.5;pointer-events:none}.dropdown-placeholder{color:var(--text-muted)}.dropdown-chevron{flex-shrink:0;transition:transform .15s}.dropdown-open .dropdown-chevron{transform:rotate(180deg)}.dropdown-menu{position:absolute;z-index:50;top:calc(100% + 4px);left:0;right:0;max-height:220px;overflow-y:auto;list-style:none;margin:0;padding:.25rem 0;background:#fff;border:1px solid var(--border-soft);border-radius:.55rem;box-shadow:0 6px 20px #1b1f221f}.dropdown-option{padding:.45rem .7rem;cursor:pointer;display:flex;align-items:baseline;gap:.5rem;font-size:.9rem;transition:background .1s}.dropdown-option:hover{background:color-mix(in srgb,var(--border-soft) 30%,transparent)}.dropdown-option.active{background:color-mix(in srgb,var(--brand) 10%,transparent);font-weight:500}.dropdown-option-secondary{margin-left:auto;font-size:.8rem;color:var(--text-muted);white-space:nowrap}.dropdown-empty{color:var(--text-muted);cursor:default;font-style:italic}.dropdown-footer{border-top:1px solid var(--border-soft);padding:.4rem .7rem;list-style:none}.toggle-row{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-label{font-size:.85rem;color:var(--text-muted);white-space:nowrap}.toggle-switch{position:relative;width:34px;height:20px;border-radius:10px;border:1px solid var(--border-soft);background:var(--bg-panel-alt);cursor:pointer;padding:0;transition:background .2s,border-color .2s;flex-shrink:0}.toggle-switch.toggle-on{background:var(--brand);border-color:var(--brand)}.toggle-knob{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000026;transition:transform .2s}.toggle-switch.toggle-on .toggle-knob{transform:translate(14px)}.input-with-unit{display:flex;gap:.4rem}.input-with-unit input{flex:1}.input-with-unit select{width:auto;min-width:3.5rem}.settings-page{display:grid;gap:1.2rem}.settings-tabs{display:flex;gap:.25rem;background:var(--bg-panel-alt);border-radius:.5rem;padding:.2rem}.settings-tab{flex:1;border:0;background:transparent;padding:.5rem 1rem;font:inherit;font-weight:500;font-size:.9rem;color:var(--text-muted);cursor:pointer;border-radius:.35rem;transition:background .15s,color .15s}.settings-tab:hover{color:var(--text-main)}.settings-tab.active{background:var(--bg-panel);color:var(--text-main);box-shadow:0 1px 3px #00000014}.settings-section{margin-top:1.5rem}.settings-section h3{margin-bottom:.4rem}.settings-unit-toggle{margin-top:.5rem}.settings-info{display:grid;grid-template-columns:auto 1fr;gap:.3rem 1rem}.settings-info dt{font-weight:600;color:var(--text-muted, #7a7060)}.settings-info dd{margin:0}.api-key-create-form{display:flex;gap:.5rem;align-items:center}.api-key-create-form input{flex:1;min-width:0}.api-key-reveal{background:#eef6ee;border:1px solid #a3c9a3;border-radius:.7rem;padding:.8rem;display:grid;gap:.5rem}.api-key-reveal-warning{font-weight:600;color:#2a5e2a}.api-key-reveal-value{display:flex;align-items:center;gap:.5rem;background:#fff;border:1px solid var(--border-soft);border-radius:.5rem;padding:.4rem .6rem;overflow-x:auto}.api-key-reveal-value code{flex:1;word-break:break-all;font-size:.88rem;background:none;padding:0}.api-key-reveal-dismiss{border:0;background:none;color:var(--text-muted);cursor:pointer;font:inherit;font-size:.85rem;text-decoration:underline;justify-self:start}.api-key-confirm{background:#fdf4ee;border:1px solid #e0c0a0;border-radius:.7rem;padding:.8rem;display:grid;gap:.5rem}.api-key-confirm p{color:var(--text-main)}.api-key-confirm-actions{display:flex;gap:.4rem}.api-key-list{display:grid;gap:.5rem}.api-key-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem .8rem;border:1px solid var(--border-soft);border-radius:.6rem;background:#fffdf8}.api-key-revoked{opacity:.6}.api-key-info{display:grid;gap:.15rem;min-width:0}.api-key-name{font-weight:600;font-size:.95rem}.api-key-suffix{font-family:monospace;font-size:.88rem;color:var(--text-muted);display:flex;align-items:center;gap:.4rem}.api-key-badge-revoked{font-family:var(--font-body);font-size:.72rem;font-weight:600;text-transform:uppercase;background:#8a2f1b;color:#fff;padding:.1rem .35rem;border-radius:.3rem}.api-key-meta{font-size:.8rem;color:var(--text-muted)}.api-key-actions{display:flex;gap:.3rem;flex-shrink:0}.modal-backdrop{position:fixed;inset:0;z-index:60;background:#1d232673;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:1rem}.modal-card{width:min(900px,100%);max-width:100%;max-height:min(92vh,860px);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border-soft);border-radius:1rem;box-shadow:var(--shadow);background:var(--bg-panel);padding:1rem}.modal-card>.detail-headline{flex-shrink:0;border-bottom:1px solid var(--border-soft);padding-bottom:1rem;margin-bottom:0}.modal-card>.import-url-bar{flex-shrink:0}.modal-card>form{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;padding-top:1rem}.bean-details-modal .bean-form{border:0;padding:0;background:transparent}.import-url-bar{display:flex;gap:.5rem;align-items:center;margin-top:.5rem}.import-url-bar input{flex:1;border:1px solid var(--border-soft);border-radius:.55rem;padding:.5rem .6rem;font:inherit;background:#fffdf7}.import-url-bar input:disabled{opacity:.6}.grid-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.tile{border-radius:.85rem;padding:.85rem;border:1px solid var(--border-soft);background:linear-gradient(135deg,#fffdf6,#f4e9d0);display:grid;gap:.35rem}.tile-link{text-decoration:none;color:inherit;transition:transform .12s ease,box-shadow .12s ease;cursor:pointer}.tile-link:hover{transform:translateY(-2px);box-shadow:0 6px 18px #1b1f221f}.tile h3{font-size:1rem}.label-select-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:var(--surface-2, #f0f4f8);border:1px solid var(--border, #d0d7de);border-radius:6px;font-size:.875rem;color:var(--text-secondary, #57606a);margin-bottom:.5rem}.label-template-select{padding:.25rem .5rem;border-radius:4px;border:1px solid var(--border, #d0d7de);font-size:.875rem}tr.label-selected{background:var(--accent-bg, #dbeafe)!important}tr.label-selected:hover{background:var(--accent-bg-hover, #bfdbfe)!important}@media(max-width:1024px){.menu-toggle{display:inline-flex}.topbar{grid-template-columns:auto 1fr auto}.topbar-auth-buttons{display:none}.sidebar-auth-buttons{display:grid;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.15)}.sidebar-login-btn{text-decoration:none;text-align:center;font-size:.9rem;font-weight:500;color:var(--text-light);padding:.6rem .8rem;border:1px solid rgba(255,255,255,.3);border-radius:.6rem;transition:background .15s ease}.sidebar-login-btn:hover{background:#ffffff1a}.sidebar-signup-btn{text-decoration:none;text-align:center;font-size:.9rem;font-weight:500;color:var(--bg-nav);background:var(--text-light);padding:.6rem .8rem;border:1px solid transparent;border-radius:.6rem;transition:opacity .15s ease}.sidebar-signup-btn:hover{opacity:.85}.api-base{grid-column:span 2}.shell-body{grid-template-columns:1fr;position:relative}.sidebar{position:absolute;z-index:30;width:min(80vw,280px);top:0;bottom:0;left:0;transform:translate(-105%);box-shadow:none}.sidebar.open{transform:translate(0);box-shadow:4px 0 24px #00000040}.sidebar-backdrop{display:block;position:absolute;inset:0;z-index:29;background:#0006;opacity:0;pointer-events:none;transition:opacity .3s cubic-bezier(.4,0,.2,1)}.sidebar-backdrop.visible{opacity:1;pointer-events:auto}.grid-cards{grid-template-columns:1fr}.panel-header-row,.detail-headline{flex-direction:column;align-items:flex-start}.roasts-layout{grid-template-columns:1fr}.roasts-list{max-height:none}.bean-form-grid,.telemetry-grid{grid-template-columns:1fr}.roast-meta-grid{grid-template-columns:repeat(2,1fr)}}.profile-page{display:flex;flex-direction:column;gap:1.5rem}.profile-section{display:grid;gap:.9rem}.profile-avatar-section{padding:1.5rem}.avatar-display{display:flex;align-items:center;gap:1.25rem}.avatar-image{width:96px;height:96px;border-radius:50%;object-fit:cover;border:3px solid var(--border-soft);flex-shrink:0}.avatar-placeholder{width:96px;height:96px;border-radius:50%;background:var(--bg-nav);color:var(--text-light);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:2.2rem;font-weight:700;flex-shrink:0}.avatar-actions{display:flex;flex-direction:column;gap:.25rem}.avatar-actions h3{font-size:1.15rem}.avatar-buttons{display:flex;gap:.5rem;margin-top:.4rem}.avatar-crop-modal{max-width:480px;width:90vw}.avatar-crop-container{position:relative;width:100%;height:320px;margin:1rem 0 .5rem;border-radius:8px;overflow:hidden;background:#111}.avatar-crop-zoom{padding:0 .25rem;margin-bottom:.75rem}.avatar-crop-zoom label{display:flex;align-items:center;gap:.75rem;font-size:.85rem;color:var(--text-muted)}.avatar-crop-zoom input[type=range]{flex:1}.form-actions{display:flex;justify-content:flex-end;gap:.5rem}.roast-detail{display:grid;gap:1rem}.roast-detail-nav{display:flex;align-items:center;gap:1rem}.roast-detail-nav a{color:var(--text-muted);text-decoration:none;font-size:.85rem}.roast-detail-nav a:hover{text-decoration:underline}.roast-detail-nav h2{margin:0}.roast-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.6rem}.meta-item{display:flex;flex-direction:column;gap:.15rem}.meta-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600}.meta-value{font-size:1.05rem;font-weight:600;color:var(--text-main)}.dtr-badge{display:inline-block;border-radius:999px;padding:.15rem .55rem;font-size:.88rem;font-weight:700;color:#fff;width:fit-content}.view-toggle{display:flex;gap:.35rem}.chart-container{width:100%;height:420px;position:relative}.chart-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.25rem .5rem;padding:4px 8px;font-size:.8rem}.chart-legend-item{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border:none;background:none;cursor:pointer;border-radius:3px;font-size:.8rem;color:#4a3828;transition:opacity .15s}.chart-legend-item:hover{background:#f0e8d8}.chart-legend-item--hidden{opacity:.45;text-decoration:line-through}.chart-legend-swatch{display:inline-block;width:12px;height:3px;border-radius:1px}.chart-legend-label{white-space:nowrap}.chart-axis-selector{display:inline-flex;align-items:center;padding:2px 8px;border:1px solid #d9ccb0;background:#fffaf0;border-radius:3px;cursor:pointer;font-size:.75rem;color:#6a5a4a;font-weight:600;white-space:nowrap;transition:background .15s,border-color .15s}.chart-axis-selector:hover{background:#f0e8d8;border-color:#b09a80}.event-hover-tooltip{position:absolute;top:10px;right:50px;z-index:10;background:#fffaf0;border:1px solid #d9ccb0;border-radius:4px;padding:8px 12px;font-size:.85rem;pointer-events:none;box-shadow:0 2px 6px #00000014}.event-hover-tooltip-label{margin:0 0 4px;font-weight:600;color:#5a4a3a}.event-hover-tooltip-row{margin:2px 0;display:flex;align-items:center;gap:6px}.event-hover-tooltip-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;flex-shrink:0}.event-hover-tooltip-value{margin-left:auto;font-variant-numeric:tabular-nums}.sensor-table .sensor-table-event-row{background:#e4eff5}.sensor-table .sensor-table-event-row td{font-weight:600}.event-label{font-size:.78rem;font-weight:700;color:#26a}.event-timeline{display:flex;flex-wrap:wrap;gap:.25rem .75rem;padding:.5rem 0}.event-timeline-item{display:flex;flex-direction:column;align-items:center;padding:.35rem .6rem;border-left:3px solid var(--event-color, #888);border-radius:0 4px 4px 0;background:var(--panel-bg);cursor:default;transition:background .15s,box-shadow .15s}.event-timeline-item:hover,.event-timeline-item.hovered{background:#f5efe4;box-shadow:0 1px 4px #00000014}.event-timeline-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--event-color, #888)}.event-timeline-time{font-size:.85rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-main)}.bean-tasting-notes{display:flex;flex-direction:column;gap:.25rem}.bean-tasting-notes p{margin:0;font-size:.95rem;color:var(--text-main)}.inventory-section{display:flex;flex-direction:column;gap:.5rem}.inventory-stats{display:flex;flex-wrap:wrap;gap:1.5rem;font-size:.9rem;color:var(--text-muted)}.inventory-stats strong{color:var(--text-main)}.inventory-bar-track{width:100%;height:18px;background:var(--bg-panel-alt);border-radius:999px;overflow:hidden;border:1px solid var(--border-soft)}.inventory-bar-fill{height:100%;border-radius:999px;transition:width .4s ease,background-color .4s ease}.inventory-bar-label{font-size:.78rem;color:var(--text-muted)}.bean-roasts-section,.cupping-sessions-section{display:flex;flex-direction:column;gap:.5rem}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}.auth-card{background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:1rem;box-shadow:var(--shadow);padding:2rem;width:100%;max-width:400px}.auth-logo{display:block;width:80px;height:auto;margin:0 auto .8rem;border-radius:.5rem}.auth-card h2{margin-bottom:1.2rem;text-align:center}.auth-card form{display:flex;flex-direction:column;gap:.9rem}.auth-card label{display:flex;flex-direction:column;gap:.25rem;font-weight:500;font-size:.88rem;color:var(--text-muted)}.auth-card input{border:1px solid var(--border-soft);border-radius:.5rem;padding:.5rem .6rem;font:inherit;background:#fffdf7;transition:border-color .15s}.auth-card input:focus{outline:none;border-color:var(--bg-nav)}.auth-card .btn-primary{border:0;border-radius:.5rem;background:var(--bg-nav);color:var(--text-light);padding:.6rem 1rem;font:inherit;font-weight:600;cursor:pointer;margin-top:.4rem;transition:background .15s}.auth-card .btn-primary:hover:not(:disabled){background:var(--bg-nav-active)}.auth-card .btn-primary:disabled{opacity:.65;cursor:not-allowed}.auth-tabs{display:flex;gap:.25rem;margin-bottom:1rem;background:var(--bg-panel-alt);border-radius:.5rem;padding:.2rem}.auth-tab{flex:1;border:0;background:transparent;border-radius:.4rem;padding:.4rem;font:inherit;font-weight:500;cursor:pointer;color:var(--text-muted)}.auth-tab.active{background:var(--bg-panel);color:var(--text-main);box-shadow:0 1px 3px #00000014}.auth-error{color:#8a2f1b;background:#fdecea;border-radius:.5rem;padding:.5rem .7rem;font-size:.88rem;margin-bottom:.5rem}.auth-info{color:#1a5c3a;background:#e8f5ed;border-radius:.5rem;padding:.5rem .7rem;font-size:.88rem;margin-bottom:.5rem}.auth-links{display:flex;flex-direction:column;align-items:center;gap:.4rem;margin-top:1rem;font-size:.88rem}.auth-links a{color:var(--bg-nav);text-decoration:none}.auth-links a:hover{text-decoration:underline}.resend-verification{margin-top:.4rem}.resend-verification .link-button{background:none;border:none;color:#8a2f1b;text-decoration:underline;cursor:pointer;padding:0;font-size:.88rem;font-weight:500}.resend-verification .link-button:hover{color:#6b2315}.resend-verification .link-button:disabled{color:#b0856e;cursor:default;text-decoration:none}.resend-verification .resend-message{margin-top:.3rem;font-size:.82rem}.resend-verification .resend-hint{font-size:.82rem;margin:0}.sso-buttons{display:flex;flex-direction:column;align-items:center;gap:.6rem;margin-bottom:.2rem}.sso-google-btn{width:100%;display:flex;justify-content:center}.sso-divider{display:flex;align-items:center;width:100%;gap:.8rem;color:var(--text-muted);font-size:.82rem;margin:.2rem 0}.sso-divider:before,.sso-divider:after{content:"";flex:1;height:1px;background:var(--border-soft)}.cupping-meta-bar{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:var(--bg-panel-alt);border-radius:8px}.cupping-meta-field{display:flex;flex-direction:column;gap:.25rem;min-width:140px}.cupping-meta-field label{font-size:.8rem;font-weight:600;color:var(--text-muted)}.cupping-meta-field input,.cupping-meta-field select{padding:.4rem .6rem;border:1px solid var(--border-soft);border-radius:4px;font-family:var(--font-body);font-size:.9rem;background:var(--bg-panel)}.cupping-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.cupping-tab{padding:.5rem 1.25rem;border:1px solid var(--border-soft);border-radius:6px;background:var(--bg-panel);color:var(--text-muted);font-family:var(--font-body);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s}.cupping-tab:hover{background:var(--bg-panel-alt)}.cupping-tab.active{background:var(--brand);color:#fff;border-color:var(--brand)}.cupping-sticky-actions{position:sticky;bottom:0;display:flex;gap:.75rem;padding:1rem 0;margin-top:1.5rem;border-top:1px solid var(--border-soft);background:var(--bg-panel);z-index:10}.score-sliders-grid{display:grid;gap:1rem}.score-slider-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.4rem}.score-slider-label{font-weight:600;font-size:.9rem}.score-slider-description{font-size:.78rem;color:var(--text-muted)}.score-slider-controls{display:flex;align-items:center;gap:.75rem}.score-slider-value{font-weight:600;font-variant-numeric:tabular-nums;min-width:3.5ch;text-align:right}.score-slider-clear{font-size:.75rem;color:var(--text-muted);background:none;border:none;cursor:pointer;padding:.35rem .55rem}.score-slider-clear:hover{color:var(--brand)}.score-slider-note{width:100%;margin-top:.4rem;padding:.3rem .5rem;border:1px solid var(--border-soft);border-radius:4px;font-family:var(--font-body);font-size:.82rem;resize:vertical}.defect-editor{margin-top:1.5rem;padding:1rem;border:1px solid var(--border-soft);border-radius:6px}.defect-editor-title{margin:0 0 .75rem;font-size:.95rem}.defect-row{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.defect-row label{font-weight:500;min-width:100px}.defect-cups-input{width:60px;padding:.3rem .5rem;border:1px solid var(--border-soft);border-radius:4px;font-family:var(--font-body)}.defect-radio-label{display:flex;align-items:center;gap:.3rem;font-weight:400;cursor:pointer}.defect-penalty{margin:.5rem 0 0;font-size:.88rem;color:var(--text-muted)}.score-summary{margin-top:1.5rem;padding:1rem;border:1px solid var(--border-soft);border-radius:6px;background:var(--bg-panel)}.score-summary-row{display:flex;justify-content:space-between;padding:.3rem 0;font-size:.9rem}.score-summary-final{font-weight:700;font-size:1.1rem;border-top:1px solid var(--border-soft);padding-top:.5rem;margin-top:.3rem}.grade-badge{display:inline-block;margin-top:.75rem;padding:.3rem .8rem;border-radius:12px;font-size:.82rem;font-weight:600;color:#fff}.grade-exceptional{background-color:#d4a017}.grade-specialty{background-color:#27ae60}.grade-below{background-color:#7f8c8d}.flavor-tags{display:flex;flex-wrap:wrap;gap:.5rem;padding:1rem 0}.flavor-tags-empty{color:var(--text-muted);font-size:.88rem;font-style:italic;padding:1rem 0}.flavor-tag{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .6rem;border:1px solid var(--border-soft);border-radius:16px;font-size:.82rem;background:var(--bg-panel)}.flavor-tag-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.flavor-tag-remove{background:none;border:none;cursor:pointer;font-size:1rem;line-height:1;color:var(--text-muted);padding:0 .1rem}.flavor-tag-remove:hover{color:var(--brand)}.tiptap-editor-wrapper{border:1px solid var(--border-soft);border-radius:6px;overflow:hidden}.tiptap-toolbar{display:flex;align-items:center;gap:2px;padding:.35rem .5rem;background:var(--bg-panel-alt);border-bottom:1px solid var(--border-soft);flex-wrap:wrap}.tiptap-toolbar button,.tiptap-toolbar select{background:transparent;border:1px solid transparent;border-radius:4px;padding:.25rem .5rem;font-family:var(--font-body);font-size:.8rem;color:var(--text-main);cursor:pointer;line-height:1.4}.tiptap-toolbar button:hover,.tiptap-toolbar select:hover{background:var(--bg-panel);border-color:var(--border-soft)}.tiptap-toolbar button.is-active{background:var(--accent);color:#fff;border-color:var(--accent)}.tiptap-block-select{font-size:.8rem}.tiptap-separator{width:1px;height:1.2rem;background:var(--border-soft);margin:0 .25rem}.tiptap-editor-wrapper .tiptap{padding:1rem;min-height:200px;font-family:var(--font-body);font-size:.9rem;line-height:1.6;background:var(--bg-panel);color:var(--text-main)}.tiptap-editor-wrapper .tiptap:focus-visible{outline:none}.tiptap-editor-wrapper .tiptap p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;color:var(--text-muted);pointer-events:none;height:0}.tiptap-editor-wrapper .tiptap h1,.tiptap-editor-wrapper .tiptap h2,.tiptap-editor-wrapper .tiptap h3,.tiptap-editor-wrapper .tiptap h4{margin-top:.75rem;margin-bottom:.5rem}.tiptap-editor-wrapper .tiptap h1{font-size:1.75rem}.tiptap-editor-wrapper .tiptap h4{font-size:1rem;font-weight:600}.tiptap-editor-wrapper .tiptap pre{background:var(--bg-panel);border-radius:6px;padding:.75rem 1rem;font-family:monospace;font-size:.875rem;overflow-x:auto}.tiptap-editor-wrapper .tiptap code{background:var(--bg-panel);border-radius:3px;padding:.15rem .3rem;font-family:monospace;font-size:.875rem}.tiptap-editor-wrapper .tiptap pre code{background:none;padding:0;border-radius:0}.tiptap-editor-wrapper .tiptap hr{border:none;border-top:1px solid var(--border-soft);margin:1rem 0}.tiptap-editor-wrapper .tiptap s{text-decoration:line-through}.tiptap-editor-wrapper .tiptap ul,.tiptap-editor-wrapper .tiptap ol{padding-left:1.5rem}.tiptap-editor-wrapper .tiptap li{margin-bottom:.2rem}.tiptap-editor-wrapper .tiptap blockquote{border-left:3px solid var(--border-soft);padding-left:1rem;color:var(--text-muted);margin:.5rem 0}.tiptap-editor-wrapper .tiptap a{color:var(--accent);text-decoration:underline}.score-cell.grade-exceptional{color:#b8860b}.score-cell.grade-specialty{color:#27ae60}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.panel-header h2{margin:0}.link-subtle{font-size:.9rem;color:var(--accent);text-decoration:none}.link-subtle:hover{text-decoration:underline}.dashboard{display:flex;flex-direction:column;gap:1.5rem}.button-danger:hover{background:#7a2918;border-color:#7a2918}.stats-page{display:flex;flex-direction:column;gap:1.5rem}.stats-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem}.stat-card{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:1.25rem 1rem;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:8px;box-shadow:var(--shadow)}.stat-value{font-family:var(--font-display);font-size:1.6rem;font-weight:600;color:var(--text-main)}.stat-label{font-size:.82rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.stats-chart-panel{padding:1.25rem}.stats-chart-panel h3{margin:0 0 1rem;font-family:var(--font-display);font-size:1.1rem;font-weight:600}.stats-chart{width:100%}.cupping-meta-bar{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem 0 1rem 1rem;border-bottom:1px solid var(--border-soft);margin-bottom:1rem}.cupping-meta-field{display:flex;flex-direction:column;gap:.25rem;min-width:0}.cupping-meta-field label{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.cupping-meta-field input,.cupping-meta-field select{font-family:var(--font-body);font-size:.875rem;padding:.375rem .5rem;border:1px solid var(--border-soft);border-radius:4px;background:var(--bg-panel)}.cupping-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.cupping-tab-content{min-height:300px}.cupping-actions{display:flex;gap:.75rem;padding-top:1.5rem;border-top:1px solid var(--border-soft);margin-top:1.5rem}.score-sliders-grid{display:grid;grid-template-columns:1fr;gap:1rem;margin-bottom:1.5rem}@media(min-width:768px){.score-sliders-grid{grid-template-columns:1fr 1fr}}.score-slider-row{padding:.75rem;border:1px solid var(--border-soft);border-radius:6px;background:var(--bg-panel)}.score-slider-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.25rem}.score-slider-label{font-weight:600;font-size:.875rem}.score-slider-description{font-size:.75rem;color:var(--text-muted)}.score-slider-controls{display:flex;align-items:center;gap:.75rem;margin:.5rem 0}.score-slider-input{flex:1;accent-color:var(--brand)}.score-slider-value{font-weight:600;font-size:.875rem;min-width:2.5rem;text-align:right;font-variant-numeric:tabular-nums}.score-slider-note{width:100%;font-family:var(--font-body);font-size:.8rem;padding:.25rem .5rem;border:1px solid var(--border-soft);border-radius:4px;margin-top:.25rem;background:var(--bg-panel);resize:vertical}.defect-editor{padding:1rem;border:1px solid var(--border-soft);border-radius:6px;margin-bottom:1rem;background:var(--bg-panel)}.defect-editor-title{margin:0 0 .75rem;font-size:.9rem}.defect-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.defect-row label{font-size:.85rem;font-weight:500;min-width:100px}.defect-cups-input{width:4rem;padding:.25rem .5rem;border:1px solid var(--border-soft);border-radius:4px;font-family:var(--font-body)}.defect-intensity-options{display:flex;gap:1rem}.defect-radio-label{display:flex;align-items:center;gap:.35rem;font-size:.85rem;cursor:pointer}.defect-penalty{margin-top:.5rem;font-size:.85rem;color:#c0392b}.score-summary-card{padding:1rem;margin-bottom:1.5rem;border:2px solid var(--border-soft);border-radius:8px;background:var(--bg-panel)}.score-summary-row{display:flex;justify-content:space-between;padding:.35rem 0;font-size:.9rem}.score-summary-penalty{color:#c0392b}.score-summary-final{font-weight:700;font-size:1.1rem;border-top:1px solid var(--border-soft);padding-top:.5rem;margin-top:.25rem}.score-summary-value{font-variant-numeric:tabular-nums}.grade-badge{display:inline-block;margin-top:.5rem;padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.grade-exceptional{background:#f9e79f;color:#7d6608}.grade-specialty{background:#a9dfbf;color:#1e6f3f}.grade-below{background:#e5e5e5;color:#666}.flavor-tags{display:flex;flex-wrap:wrap;gap:.5rem;padding:.75rem 0}.flavor-tags-empty{color:var(--text-muted);font-size:.85rem;font-style:italic;padding:.5rem 0}.flavor-tag{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .6rem;background:var(--bg-panel-alt);border:1px solid var(--border-soft);border-radius:16px;font-size:.8rem;font-weight:500}.flavor-tag-remove{background:none;border:none;cursor:pointer;font-size:1rem;line-height:1;padding:0;color:var(--text-muted)}.flavor-tag-remove:hover{color:#c0392b}.score-cell{font-weight:600;font-variant-numeric:tabular-nums}.table-toolbar{margin-bottom:1rem}.search-input{width:100%;max-width:300px;padding:.5rem .75rem;font-family:var(--font-body);font-size:.875rem;border:1px solid var(--border-soft);border-radius:4px;background:var(--bg-panel)}.table-container{overflow-x:auto}.actions-cell{display:flex;gap:.5rem}.loading{color:var(--text-muted);font-style:italic}.panel-header-actions{display:flex;gap:.5rem;align-items:center}.cupping-sessions-section{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border)}.channel-builder{margin-top:.5rem}.channel-builder-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.channel-builder-header h4{margin:0}.channel-row{border:1px solid var(--border-soft);border-radius:.55rem;padding:.75rem;margin-bottom:.5rem;background:#fffdf7}.channel-row-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.channel-number{font-weight:600;font-size:.85rem;color:var(--text-muted)}.channel-row-actions{display:flex;gap:.25rem}.button-small{padding:.15rem .4rem;font-size:.8rem;min-width:auto}.button-danger{background:#8a2f1b;border-color:#8a2f1b;color:#fff}.channel-hint{font-size:.85rem;color:var(--text-muted);margin:.25rem 0 0}.template-picker-trigger{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.modal-backdrop-overlay{z-index:1001}.template-badge{font-size:.8rem;color:var(--text-muted);font-style:italic}.template-selector-modal{width:min(700px,100%)}.template-selector-body{padding-top:1rem;display:flex;flex-direction:column;gap:.75rem;overflow:hidden;min-height:0;flex:1}.template-selector-hint{color:var(--text-muted);margin:0}.template-selector-search{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:6px;font-size:.95rem;background:var(--bg-input, var(--bg-panel))}.template-selector-list{flex:1;overflow-y:auto;min-height:0;max-height:50vh}.template-selector-actions{display:flex;justify-content:flex-end;padding-top:.5rem;border-top:1px solid var(--border-soft)}.nav-section-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#fff;padding:.75rem 1rem .25rem;margin-top:.25rem}.profile-timeline-table-wrap{overflow-x:auto}.profile-timeline-table{width:100%;border-collapse:collapse;font-size:.9rem}.profile-timeline-table th,.profile-timeline-table td{padding:.35rem .4rem;text-align:left;white-space:nowrap}.profile-timeline-table th{font-weight:600;border-bottom:2px solid var(--border-soft);font-size:.85rem}.profile-timeline-table td{border-bottom:1px solid var(--border-soft)}.profile-timeline-table input,.profile-timeline-table select{width:100%;min-width:4rem}.profile-timeline-unit{font-weight:400;color:var(--text-muted);font-size:.8rem}.profile-timeline-add-row{margin-top:.5rem}.timeline-time-input{width:6rem}.timeline-remove-btn{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;border:1px solid #8a2f1b;background:transparent;color:#8a2f1b;font-size:1rem;line-height:1;cursor:pointer;padding:0}.timeline-remove-btn:hover{background:#8a2f1b;color:#fff}.empty-state-text{font-size:.9rem;color:var(--text-muted);margin:.5rem 0}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.5rem;margin-top:1rem}.template-card{border:2px solid var(--border, #ddd);border-radius:8px;overflow:hidden;background:var(--surface, #fff);transition:border-color .15s}.template-card:hover{border-color:var(--primary, #3d5061)}.template-card-active{border-color:var(--primary, #3d5061);box-shadow:0 0 0 2px var(--primary, #3d5061)}.template-preview-img{width:100%;aspect-ratio:1055 / 1505;object-fit:cover;display:block;background:var(--bg-muted, #f5f5f5)}.template-card-body{padding:.75rem 1rem}.template-card-body h3{margin:0 0 .25rem;font-size:1rem}.template-card-body p{margin:0 0 .5rem;font-size:.85rem;color:var(--text-muted)}.template-picker-inline{display:flex;align-items:center;gap:.5rem}.template-picker-inline select{padding:.25rem .5rem;border-radius:4px;border:1px solid var(--border, #ddd);font-size:.85rem;background:var(--surface, #fff)}.label-create-layout{display:grid;grid-template-columns:1fr 320px;gap:1.2rem;align-items:start}.label-preview-sidebar{min-width:0}@media(max-width:1024px){.label-create-layout{grid-template-columns:1fr}}.label-builder-layout{display:flex;flex-direction:column;height:calc(100vh - 60px);overflow:hidden}.builder-topbar{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;border-bottom:1px solid var(--border-soft);background:var(--bg-panel)}.builder-history-buttons{display:flex;gap:.25rem}.builder-history-buttons .action-btn{display:inline-flex;align-items:center;justify-content:center;padding:.35rem .5rem;min-width:unset;line-height:1}.builder-history-buttons .action-btn:disabled{opacity:.35;cursor:default}.builder-name-input{flex:1;max-width:320px;font-size:1.05rem;font-weight:600}.builder-body{display:grid;grid-template-columns:220px 4px 1fr 280px;flex:1;min-height:0;overflow:hidden}.builder-field-tooltip{position:absolute;z-index:100;pointer-events:none;padding:4px 10px;border-radius:4px;font-size:.78rem;font-weight:600;white-space:nowrap;background:var(--bg-invert, #1a1a1a);color:var(--text-invert, #fff);box-shadow:0 2px 6px #00000040}.builder-resize-handle{width:4px;cursor:col-resize;background:var(--border-soft);transition:background .15s}.builder-resize-handle:hover,.builder-resize-handle:active{background:var(--accent)}.builder-toolbox,.builder-properties{padding:.75rem;overflow-y:auto;border-right:1px solid var(--border-soft);background:var(--bg-panel);font-size:.88rem}.builder-properties{border-right:none;border-left:1px solid var(--border-soft)}.builder-toolbox h3,.builder-properties h3{font-size:.9rem;margin-bottom:.5rem}.toolbox-buttons{display:flex;flex-direction:column;gap:.6rem}.toolbox-group{display:flex;flex-wrap:wrap;gap:.3rem}.toolbox-group-label{width:100%;font-size:.78rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.layer-list{display:flex;flex-direction:column;gap:.2rem}.layer-item{display:flex;align-items:center;gap:.3rem;padding:.3rem .5rem;border-radius:.35rem;cursor:pointer;font-size:.82rem}.layer-item:hover{background:var(--bg-panel-alt)}.layer-item-selected{background:var(--bg-panel-alt);outline:2px solid var(--brand)}.layer-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-actions{display:flex;gap:.15rem;flex-shrink:0}.layer-drag-handle{cursor:grab;opacity:.4;font-size:.85rem;line-height:1;flex-shrink:0;touch-action:none;-webkit-user-select:none;user-select:none}.layer-drag-handle:hover{opacity:.8}.layer-item:active .layer-drag-handle{cursor:grabbing}.layer-actions .action-btn{padding:.1rem .3rem;font-size:.7rem}.builder-canvas-area{display:flex;align-items:center;justify-content:center;padding:1rem;overflow:auto;background:var(--bg-canvas);user-select:none;-webkit-user-select:none}.builder-canvas-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.prop-section{margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-soft)}.prop-section h4{font-size:.82rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.4rem}.prop-field{display:flex;flex-direction:column;gap:.2rem;font-size:.82rem;font-weight:500;margin-bottom:.4rem}.prop-field input,.prop-field select,.prop-field textarea{font-size:.85rem;padding:.3rem .5rem}.prop-field-color{flex-direction:row;align-items:center;gap:.5rem}.color-input-wrap{display:flex;align-items:center;gap:.3rem}.color-input-wrap input[type=color]{width:28px;height:28px;padding:0;border:1px solid var(--border-soft);border-radius:4px;cursor:pointer}.prop-field-check{flex-direction:row;align-items:center;gap:.3rem}.prop-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.4rem}.prop-row .prop-field{flex:1;min-width:55px;margin-bottom:0}.prop-section-inner{margin-bottom:.5rem;padding:.4rem;border:1px solid var(--border-soft);border-radius:.35rem;background:#00000005}.prop-section-inner>.prop-field:first-child{margin-bottom:.3rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.empty-hint{font-size:.82rem;color:var(--text-muted);font-style:italic}.font-select{position:relative}.font-select-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.3rem .5rem;font-size:.85rem;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:.3rem;cursor:pointer;text-align:left;color:inherit}.font-select-trigger:hover{border-color:var(--text-muted)}.font-select-arrow{font-size:.7rem;color:var(--text-muted);margin-left:.4rem}.font-select-dropdown{position:absolute;top:100%;left:0;right:0;z-index:50;max-height:260px;overflow-y:auto;margin:2px 0 0;padding:4px 0;list-style:none;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:.35rem;box-shadow:0 4px 12px #0000001f}.font-select-option{display:block;width:100%;padding:.35rem .6rem;font-size:.9rem;text-align:left;background:none;border:none;cursor:pointer;color:inherit}.font-select-option:hover{background:var(--bg-panel-alt)}.font-select-option-active{background:var(--bg-panel-alt);font-weight:600}.text-toolbar{display:flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--border-soft);border-radius:.35rem;background:var(--bg-panel);margin-bottom:.4rem}.text-toolbar-btn{display:flex;align-items:center;justify-content:center;width:30px;height:28px;border:1px solid transparent;border-radius:.25rem;background:none;cursor:pointer;font-size:.85rem;color:var(--text-primary);transition:background .1s,border-color .1s}.text-toolbar-btn:hover{background:var(--bg-panel-alt);border-color:var(--border-soft)}.text-toolbar-btn-active{background:var(--brand);color:#fff;border-color:var(--brand)}.text-toolbar-btn-active:hover{background:var(--brand);border-color:var(--brand);opacity:.9}.text-toolbar-btn svg{display:block}.text-toolbar-sep{width:1px;height:20px;background:var(--border-soft);margin:0 3px}.builder-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.builder-modal{background:var(--bg-panel);border-radius:.75rem;box-shadow:0 20px 60px #0000004d;min-width:340px;max-width:480px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.builder-modal-wide{max-width:640px;width:90vw}.builder-modal-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border-soft)}.builder-modal-header h3{margin:0;font-size:1rem}.builder-modal-body{padding:1rem;overflow-y:auto;overflow-x:hidden}.content-reuse-actions{margin-bottom:1rem}.content-reuse-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.75rem}.content-reuse-item{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.5rem;border:2px solid var(--border-soft);border-radius:.5rem;background:var(--bg-panel);cursor:pointer;transition:border-color .15s,box-shadow .15s}.content-reuse-item:hover{border-color:var(--brand);box-shadow:0 2px 12px #0000001a}.content-reuse-item img{width:100%;height:80px;object-fit:contain;border-radius:.25rem;background:#00000008}.content-reuse-name{font-size:.75rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.widget-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}.widget-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.75rem;border:2px solid var(--border-soft);border-radius:.5rem;background:var(--bg-panel);cursor:pointer;transition:border-color .15s,box-shadow .15s}.widget-card:hover{border-color:var(--brand);box-shadow:0 2px 12px #0000001a}.widget-card-preview{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:80px;border-radius:.35rem;background:#00000008;overflow:hidden;padding:.5rem}.widget-card-name{font-size:.85rem;font-weight:600;color:var(--text-primary)}.widget-preview-roastbar{position:relative;width:100%;height:18px;border-radius:9px;background:linear-gradient(to right,tan,#a0714a 35%,#6b3a1f 65%,#3c1a0a)}.widget-preview-indicator{position:absolute;top:50%;left:43%;width:14px;height:14px;border-radius:50%;background:#b64d22;border:2px solid white;transform:translate(-50%,-50%)}.widget-preview-label{font-size:.65rem;font-weight:600;color:#666;margin-top:.25rem}.widget-preview-minimalist-bar{position:relative;width:100%;height:18px;display:flex;align-items:center}.widget-preview-minimalist-line{width:100%;height:3px;border-radius:2px;background:#666}.widget-preview-minimalist-dot{position:absolute;top:50%;left:43%;width:12px;height:12px;border-radius:50%;background:#b64d22;border:2px solid white;transform:translate(-50%,-50%)}.widget-preview-qr{display:flex;align-items:center;justify-content:center}.content-field-group{margin-bottom:1rem}.content-field-group-title{font-size:.9rem;font-weight:700;color:var(--text-primary);margin:0 0 .35rem .25rem;padding-bottom:.2rem;border-bottom:1px solid var(--border-soft)}.content-field-table{width:100%;border-collapse:collapse;font-size:.85rem}.content-field-table th{text-align:left;padding:.4rem .5rem;font-size:.78rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--border-soft)}.content-field-table td{padding:.4rem .5rem;border-bottom:1px solid var(--border-soft)}.content-field-table tbody tr:hover{background:var(--bg-panel-alt)}.content-field-name{font-weight:600;white-space:nowrap}.content-field-sample{color:var(--text-muted);font-style:italic;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-field-max{text-align:center;font-variant-numeric:tabular-nums}@media(max-width:1024px){.builder-body{grid-template-columns:1fr!important;grid-template-rows:auto 1fr auto}.builder-resize-handle{display:none}.builder-toolbox,.builder-properties{border-right:none;border-left:none;border-bottom:1px solid var(--border-soft);max-height:200px}}@media(max-width:640px){.topbar{padding:.8rem 1rem}.roast-meta-grid{grid-template-columns:1fr}.chart-container{height:250px}.cupping-meta-field{min-width:100px}.bean-toolbar input{min-width:0}.grid-cards{grid-template-columns:1fr}}.public-cupping-page{min-height:100vh;padding:2rem 1rem;display:flex;justify-content:center}.public-cupping-container{width:100%;max-width:720px}.public-cupping-header{text-align:center;margin-bottom:2rem}.public-cupping-header h1{font-family:var(--font-display);font-size:2rem;color:var(--text-main);margin-bottom:.5rem}.public-cupping-date{color:var(--text-muted);font-size:.95rem;margin-bottom:.75rem}.public-grade-score{font-weight:400;font-size:.9em}.public-section{background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:1rem;padding:1.5rem;margin-bottom:1.5rem}.public-section h2{font-family:var(--font-display);font-size:1.3rem;margin-bottom:1rem;color:var(--text-main)}.public-details-grid{display:flex;flex-direction:column;gap:.5rem}.public-detail-row{display:flex;justify-content:space-between;align-items:baseline;padding:.4rem 0;border-bottom:1px solid var(--border-soft)}.public-detail-row:last-child{border-bottom:none}.public-detail-label{font-weight:600;font-size:.9rem;color:var(--text-muted);flex-shrink:0;margin-right:1rem}.public-detail-value{font-size:.95rem;text-align:right}.public-flavor-tags{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-top:1rem}.public-score-summary{margin-bottom:1.5rem}.public-scores-grid{display:flex;flex-direction:column;gap:1rem}.public-score-row{display:flex;flex-direction:column;gap:.25rem}.public-score-header{display:flex;justify-content:space-between;align-items:baseline}.public-score-label{font-weight:600;font-size:.9rem}.public-score-value{font-weight:700;font-size:.95rem;color:var(--brand)}.public-score-bar-bg{height:8px;background:var(--bg-panel-alt);border-radius:4px;overflow:hidden}.public-score-bar-fill{height:100%;background:var(--brand);border-radius:4px;transition:width .3s ease}.public-score-note{font-size:.85rem;color:var(--text-muted);font-style:italic}.public-notes{white-space:pre-wrap;font-size:.95rem;line-height:1.6;color:var(--text-main)}.public-cupping-footer{text-align:center;padding:1.5rem 0}.public-cupping-footer p{font-size:.8rem;color:var(--text-muted)}.cupping-impressions-summary{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1.5rem}.cupping-impressions-summary label{font-weight:600;font-size:.9rem}.cupping-impressions-hint{font-size:.8rem;color:var(--text-muted)}.cupping-impressions-summary textarea{resize:vertical;min-height:3rem}.cupping-impressions-count{font-size:.75rem;color:var(--text-muted);text-align:right}.cupping-public-toggle{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:1rem 0;border-top:1px solid var(--border-soft);margin-top:1rem}.cupping-public-label{display:flex;align-items:center;gap:.4rem;font-weight:600;font-size:.9rem;cursor:pointer}.cupping-public-hint{font-size:.8rem;color:var(--text-muted)}.cupping-share-link{display:flex;align-items:center;gap:.5rem;width:100%;margin-top:.25rem}.cupping-share-url{flex:1;font-size:.85rem;font-family:monospace;color:var(--brand);word-break:break-all;padding:.4rem .6rem;background:var(--bg-canvas);border:1px solid var(--border-soft);border-radius:.4rem}@media(max-width:600px){.public-cupping-page{padding:1rem .5rem}.public-section{padding:1rem;border-radius:.75rem}.public-cupping-header h1{font-size:1.5rem}.public-detail-row{flex-direction:column;gap:.15rem}.public-detail-value{text-align:left}}.landing-page-config{max-width:640px}.landing-page-config h3{margin-bottom:.25rem}.landing-page-config h4{margin-top:0;margin-bottom:.25rem}.landing-page-config .toggle-row{margin-bottom:.75rem}.landing-page-section{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--border-soft)}.landing-page-url{margin:1rem 0}.landing-page-url-row{display:flex;align-items:center;gap:.5rem;margin-top:.25rem}.landing-page-url-value{flex:1;font-size:.85rem;font-family:monospace;color:var(--brand);word-break:break-all;padding:.4rem .6rem;background:var(--bg-canvas);border:1px solid var(--border-soft);border-radius:.4rem}.public-product-description{font-size:1.05rem;line-height:1.6;color:var(--text-main);margin:0}.public-product-pills{display:flex;flex-wrap:wrap;gap:.5rem}.public-product-long-desc h2,.public-product-long-desc h3{margin-top:1rem;margin-bottom:.5rem}.public-product-long-desc p{margin:.5rem 0}.public-product-long-desc ul{padding-left:1.5rem;margin:.5rem 0}.public-product-long-desc a{color:var(--brand);text-decoration:underline}.public-product-beans{display:flex;flex-direction:column;gap:1rem}.public-product-bean-card{padding:1rem;border:1px solid var(--border-soft);border-radius:.75rem;background:var(--bg-canvas)}.public-product-bean-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.5rem}.public-product-bean-name{font-weight:600;font-size:1rem}.public-product-bean-count{font-size:.85rem;color:var(--text-muted);white-space:nowrap}.public-product-bean-card .public-details-grid{margin-top:.5rem}.public-product-bean-tasting-notes{margin-top:.75rem;font-style:italic;color:var(--text-muted);font-size:.9rem}:root{--live-dtr-bad: #c0392b;--live-dtr-ok: #e67e22;--live-dtr-ideal: #27ae60}.live-roast-trigger{background:var(--brand)!important;border-color:var(--brand)!important;color:#fff!important}.live-roast-modal{display:flex;flex-direction:column}.live-roast-modal-timer{width:min(600px,100%)}.live-roast-header{text-align:center;padding:1.25rem 1rem 1rem;border-bottom:1px solid var(--border-soft);flex-shrink:0}.live-roast-timer-display{font-family:Lato,monospace;font-size:4rem;font-weight:700;letter-spacing:.04em;margin:.25rem 0;line-height:1}.live-dtr-display{font-size:1.3rem;font-weight:700;margin-top:.25rem;transition:color .3s}.live-roast-phase-bar{display:flex;justify-content:center;margin-bottom:.25rem}.live-phase-badge{display:inline-block;padding:.2rem .85rem;border-radius:1rem;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.live-phase-pre-charge{background:#e0e0e0;color:#555}.live-phase-drying{background:#ffeaa7;color:#7d6608}.live-phase-maillard{background:#f8c471;color:#7e5109}.live-phase-development{background:#e74c3c;color:#fff}.live-phase-cooling{background:#74b9ff;color:#1a5276}.live-phase-done{background:#27ae60;color:#fff}.live-roast-body{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.live-profile-timeline h4,.live-events-timeline h4{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:.5rem}.live-milestone-list{display:flex;flex-direction:column;gap:.35rem}.live-milestone{display:flex;align-items:center;gap:.6rem;padding:.4rem .6rem;border-radius:.4rem;border:1px solid var(--border-soft);background:var(--bg-panel);font-size:.88rem;transition:background .2s,border-color .2s}.live-milestone-passed{opacity:.5;background:var(--bg-panel-alt)}.live-milestone-flashing{animation:milestone-flash .6s ease-in-out infinite alternate;border-color:var(--brand)}@keyframes milestone-flash{0%{background:var(--bg-panel)}to{background:#fff3e0}}.live-milestone-time{font-weight:700;font-variant-numeric:tabular-nums;min-width:3.5rem;flex-shrink:0}.live-milestone-content{flex:1;display:flex;flex-wrap:wrap;gap:.25rem .6rem}.live-milestone-channel{font-size:.85rem}.live-milestone-highlight{font-weight:700;color:var(--brand)}.live-milestone-countdown{font-size:.8rem;font-weight:700;color:var(--brand);flex-shrink:0}.live-milestone-check{color:#27ae60;font-size:1rem;flex-shrink:0}.live-roast-event-timeline{padding:0 1rem}.live-event-list{display:flex;flex-direction:column;gap:.25rem}.live-event-item{display:flex;align-items:center;gap:.6rem;padding:.35rem .6rem;border-radius:.35rem;background:var(--bg-panel-alt);font-size:.88rem}.live-event-time{font-weight:700;font-variant-numeric:tabular-nums;min-width:3.5rem}.live-event-label{font-weight:500}.live-roast-actions{padding:1rem;border-top:1px solid var(--border-soft);display:flex;gap:.75rem;justify-content:center;flex-shrink:0}.live-charge-btn{font-size:1.3rem;padding:.8rem 3rem;background:#27ae60;border-color:#27ae60;color:#fff;border-radius:.6rem}.live-charge-btn:hover{background:#219a52;border-color:#219a52}.live-event-btn{flex:1;font-size:1.1rem;padding:.7rem 1.5rem}.live-drop-btn{flex:1;font-size:1.1rem;padding:.7rem 1.5rem;background:#c0392b;border-color:#c0392b;color:#fff}.live-drop-btn:hover{background:#a93226;border-color:#a93226}.live-finish-btn{font-size:1.2rem;padding:.75rem 2.5rem;background:var(--brand);border-color:var(--brand);color:#fff}.live-finish-btn:hover{background:#a0431c;border-color:#a0431c}.live-finish-events{margin-top:.5rem}.how-to-nav{display:flex;gap:.25rem;border-bottom:1px solid var(--border-soft);padding-bottom:.5rem}.how-to-nav-link{padding:.4rem .9rem;border-radius:.5rem;font-size:.9rem;color:var(--text-muted);text-decoration:none;transition:background .15s,color .15s}.how-to-nav-link:hover{background:var(--bg-hover);color:var(--text)}.how-to-nav-link.active{background:var(--brand);color:#fff}.how-to-article{max-width:42rem;line-height:1.7}.how-to-article h2{margin-bottom:.5rem}.how-to-article h3{margin-top:1.5rem;margin-bottom:.4rem;font-size:1.1rem}.how-to-article p{margin-bottom:.75rem;color:var(--text-muted)}.how-to-article ul{padding-left:1.5rem;margin-bottom:.75rem}.how-to-article li{margin-bottom:.5rem;color:var(--text-muted)}.builder-context-menu{z-index:1000;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 4px 16px #00000026;padding:4px 0;min-width:160px}.builder-context-menu button{display:block;width:100%;padding:6px 14px;text-align:left;background:none;border:none;font-size:.85rem;cursor:pointer;color:#333}.builder-context-menu button:hover{background:#f0f0f0}.builder-context-menu-separator{height:1px;background:#e0e0e0;margin:4px 0}.auth-card-wide{max-width:520px}.plan-selector{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1.2rem}.plan-card{background:var(--bg-panel);border:2px solid var(--border-soft);border-radius:.75rem;padding:1rem;cursor:pointer;text-align:left;font:inherit;transition:border-color .15s,box-shadow .15s;display:flex;flex-direction:column;gap:.35rem}.plan-card:hover{border-color:var(--bg-nav)}.plan-card-active{border-color:var(--brand);box-shadow:0 0 0 2px #b64d2226}.plan-card-name{font-family:var(--font-display);font-size:1.05rem;font-weight:700;color:var(--text-main)}.plan-card-price{font-size:1.3rem;font-weight:700;color:var(--brand)}.plan-card-interval{font-size:.85rem;font-weight:400;color:var(--text-muted)}.plan-card-features{list-style:none;padding:0;margin:.3rem 0 0;font-size:.82rem;color:var(--text-muted)}.plan-card-features li:before{content:"✓";color:var(--brand);font-weight:700}.plan-card-action{margin-top:auto;width:100%}.subscription-panel .subscription-features{margin:.5rem 0 1rem}.subscription-panel .subscription-features ul{margin:.3rem 0 0 1.2rem;padding:0;color:var(--text-muted);font-size:.9rem}.subscription-panel .subscription-features li{margin-bottom:.2rem}.billing-history{margin-top:1.5rem;border-top:1px solid var(--border-soft);padding-top:1rem}.billing-history h4{font-family:var(--font-display);font-size:.95rem;margin-bottom:.5rem}.billing-table{width:100%;border-collapse:collapse;font-size:.85rem}.billing-table th{text-align:left;font-weight:600;color:var(--text-muted);padding:.4rem .5rem;border-bottom:1px solid var(--border-soft)}.billing-table td{padding:.4rem .5rem;border-bottom:1px solid var(--border-soft);color:var(--text-main)}.billing-table tr:last-child td{border-bottom:none}.billing-status{display:inline-block;padding:.1rem .45rem;border-radius:.25rem;font-size:.78rem;font-weight:600}.billing-status-paid{background:#e6f4ea;color:#1a7431}.billing-status-open{background:#fff3cd;color:#856404}.billing-status-uncollectible{background:#fde8e8;color:#991b1b}.billing-status-void{background:var(--bg-panel-alt);color:var(--text-muted)}.billing-receipt-link{color:var(--brand);font-size:.8rem;text-decoration:none}.billing-receipt-link:hover{text-decoration:underline}.plan-save-badge{font-size:.7rem;font-weight:700;color:var(--brand);margin-left:.3rem}.benefits-card{background:var(--bg-panel-alt);border:1px solid var(--border-soft);border-radius:.75rem;padding:1rem 1.25rem;margin:.75rem 0 1rem}.benefits-card-upgrade{border-color:var(--brand);border-width:2px;background:linear-gradient(135deg,var(--bg-panel-alt) 0%,var(--bg-panel) 100%)}.benefits-card h4{font-family:var(--font-display);font-size:1rem;font-weight:700;margin:0 0 .25rem;color:var(--text-main)}.benefits-card-description{font-size:.88rem;color:var(--text-muted);margin:0 0 .75rem;line-height:1.45}.benefits-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.6rem}.benefits-list li{display:flex;flex-direction:column;gap:.1rem;padding-left:1.3rem;position:relative;font-size:.88rem}.benefits-list li:before{content:"✓";position:absolute;left:0;color:var(--brand);font-weight:700}.benefits-list li strong{color:var(--text-main)}.benefits-list li span{color:var(--text-muted);font-size:.82rem}.early-adopter-banner{background:linear-gradient(135deg,var(--brand) 0%,var(--brand-hover, var(--brand)) 100%);color:#fff;border-radius:.75rem;padding:1.1rem 1.3rem;margin:.75rem 0 1rem}.early-adopter-banner h4{font-family:var(--font-display);font-size:1.05rem;font-weight:700;margin:0 0 .4rem;color:#fff}.early-adopter-banner p{font-size:.9rem;margin:0 0 .5rem;line-height:1.5;color:#ffffffeb}.early-adopter-banner p:last-child{margin-bottom:0}.early-adopter-banner strong{color:#fff}.plan-options{display:grid;grid-template-columns:1fr 1.4fr;gap:1rem;margin-top:.75rem}@media(max-width:640px){.plan-options{grid-template-columns:1fr}}.plan-option{background:var(--bg-panel-alt);border:1px solid var(--border-soft);border-radius:.75rem;padding:1rem 1.25rem}.plan-option--disabled{opacity:.55;background:var(--bg-panel)}.plan-option--active{border-color:var(--brand);border-width:2px}.plan-option-header{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.plan-option-header h4{font-family:var(--font-display);font-size:1.05rem;font-weight:700;margin:0;color:var(--text-main)}.plan-option-price{font-size:.95rem;color:var(--text-muted)}.plan-option-price s{opacity:.6;margin-right:.3rem}.plan-option-price strong{color:var(--brand);font-weight:700}.plan-option-meta{font-size:.82rem;color:var(--text-muted);margin:.5rem 0 0;line-height:1.5}.subscription-result-page{min-height:60vh;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}.subscription-result-card{max-width:480px;text-align:center}.subscription-result-card h2{margin-bottom:.75rem}.subscription-result-card p{margin-bottom:1rem}.subscription-result-links{display:flex;gap:.75rem;justify-content:center}@media(max-width:500px){.plan-selector{grid-template-columns:1fr}.auth-card-wide{max-width:400px}}.contact-page{padding:1.5rem}.contact-page-inner{max-width:600px;margin:0 auto}.contact-page-inner h2{font-family:var(--font-display);font-size:1.6rem;margin:0 0 .5rem}.contact-direct-email{color:var(--text-muted);margin:0 0 1.5rem}.contact-form .contact-textarea{width:100%;border:1px solid var(--border-soft);border-radius:.55rem;padding:.5rem .6rem;font:inherit;background:#fffdf7;resize:vertical}.contact-success{background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:.9rem;padding:1.5rem;display:flex;flex-direction:column;align-items:flex-start;gap:1rem}.contact-success p{margin:0}
