._container_1vftx_5{width:100%;max-width:100%;margin:0 auto;padding:0}._menu_1vftx_21{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6) var(--space-4);background:linear-gradient(135deg,var(--color-neutral-100) 0%,#ffffff 100%);border-radius:var(--radius-lg);text-align:center}._title_1vftx_41{margin:0 0 var(--space-1) 0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-neutral-900);letter-spacing:-.5px}._subtitle_1vftx_57{margin:0 0 var(--space-4) 0;font-size:var(--font-size-sm);color:var(--color-neutral-600)}._divider_1vftx_69{display:flex;align-items:center;gap:var(--space-3);font-size:var(--font-size-xs);color:var(--color-neutral-500);margin:var(--space-1) 0}._divider_1vftx_69:before,._divider_1vftx_69:after{content:"";flex:1;height:1px;background:var(--color-neutral-300)}._button_1vftx_105{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-normal);min-height:48px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}._button_1vftx_105:disabled{opacity:.5;cursor:not-allowed}._primaryButton_1vftx_149{background:var(--color-primary-500);color:#fff;box-shadow:var(--shadow-md)}._primaryButton_1vftx_149:not(:disabled):hover{background:var(--color-primary-600);box-shadow:var(--shadow-lg);transform:translateY(-2px)}._primaryButton_1vftx_149:not(:disabled):active{transform:translateY(0);box-shadow:var(--shadow-sm)}._secondaryButton_1vftx_183{background:#fff;color:var(--color-primary-500);border:var(--border-width-medium) solid var(--color-primary-500)}._secondaryButton_1vftx_183:not(:disabled):hover{background:var(--color-primary-50);border-color:var(--color-primary-600);box-shadow:var(--shadow-md);transform:translateY(-2px)}._secondaryButton_1vftx_183:not(:disabled):active{transform:translateY(0)}._success_1vftx_219,._warning_1vftx_221,._error_1vftx_223{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);margin-top:var(--space-2)}._success_1vftx_219{background:var(--color-success-50);color:var(--color-success-700);border-left:var(--border-width-thick) solid var(--color-success-500)}._warning_1vftx_221{background:var(--color-warning-50);color:var(--color-warning-700);border-left:var(--border-width-thick) solid var(--color-warning-500)}._error_1vftx_223{background:var(--color-error-50);color:var(--color-error-700);border-left:var(--border-width-thick) solid var(--color-error-500)}._cameraContainer_1vftx_279{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);background:#000;border-radius:var(--radius-lg);overflow:hidden}._videoWrapper_1vftx_299{position:relative;width:100%;aspect-ratio:4 / 3;background:#000;border-radius:var(--radius-md);overflow:hidden}._video_1vftx_299{display:block;width:100%;height:100%;object-fit:cover}._scannerOverlay_1vftx_333{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);pointer-events:none}._scanBox_1vftx_355{position:relative;width:280px;height:180px;background:transparent;box-shadow:0 0 0 2000px #0009;animation:_scanPulse_1vftx_947 2s ease-in-out infinite}@keyframes _scanPulse_1vftx_947{0%,to{box-shadow:0 0 0 2000px #0009}50%{box-shadow:0 0 0 2000px #00000080,0 0 20px 5px #8b5a2b66}}._confirmationOverlay_1vftx_395{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000;animation:_fadeIn_1vftx_1 .2s ease-out}@keyframes _fadeIn_1vftx_1{0%{opacity:0}to{opacity:1}}._confirmationCard_1vftx_433{background:var(--color-surface, #ffffff);border-radius:var(--radius-xl, 16px);padding:var(--space-8, 2rem);text-align:center;max-width:320px;margin:var(--space-4);animation:_scaleIn_1vftx_1 .3s ease-out}@keyframes _scaleIn_1vftx_1{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}._confirmationIcon_1vftx_475{width:64px;height:64px;border-radius:50%;background:var(--color-success-100, #d1fae5);color:var(--color-success-600, #059669);display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;margin:0 auto var(--space-4);animation:_checkPop_1vftx_1 .4s ease-out .2s both}@keyframes _checkPop_1vftx_1{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}._confirmationText_1vftx_517{font-size:var(--font-size-lg, 1.125rem);font-weight:var(--font-weight-semibold, 600);color:var(--color-text-primary, #0a0a0a);margin:0 0 var(--space-3)}._confirmationBarcode_1vftx_531{display:block;font-family:var(--font-family-mono, monospace);font-size:var(--font-size-base, 1rem);background:var(--color-neutral-100, #f4f4f5);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md, 8px);color:var(--color-text-secondary, #1a1a1a);margin-bottom:var(--space-3);letter-spacing:1px}._confirmationHint_1vftx_555{font-size:var(--font-size-sm, .875rem);color:var(--color-text-muted, #666);margin:0}._scanningIndicator_1vftx_569{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:#000000b3;border-radius:var(--radius-full);margin-top:var(--space-2)}._scanningDot_1vftx_589{width:8px;height:8px;border-radius:50%;background:var(--color-primary-400);animation:_dotPulse_1vftx_1 1.4s ease-in-out infinite}._scanningDot_1vftx_589:nth-child(2){animation-delay:.2s}._scanningDot_1vftx_589:nth-child(3){animation-delay:.4s}@keyframes _dotPulse_1vftx_1{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}._scanningText_1vftx_643{color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}._cornerTL_1vftx_657,._cornerTR_1vftx_657,._cornerBL_1vftx_657,._cornerBR_1vftx_657{position:absolute;width:30px;height:30px;border-color:var(--color-primary-300);border-style:solid;border-width:0}._cornerTL_1vftx_657{top:0;left:0;border-top-width:var(--border-width-thick);border-left-width:var(--border-width-thick);border-top-left-radius:var(--radius-md)}._cornerTR_1vftx_657{top:0;right:0;border-top-width:var(--border-width-thick);border-right-width:var(--border-width-thick);border-top-right-radius:var(--radius-md)}._cornerBL_1vftx_657{bottom:0;left:0;border-bottom-width:var(--border-width-thick);border-left-width:var(--border-width-thick);border-bottom-left-radius:var(--radius-md)}._cornerBR_1vftx_657{bottom:0;right:0;border-bottom-width:var(--border-width-thick);border-right-width:var(--border-width-thick);border-bottom-right-radius:var(--radius-md)}._scanLine_1vftx_741{position:absolute;width:260px;height:3px;background:linear-gradient(90deg,transparent,var(--color-primary-300),var(--color-error-500),var(--color-primary-300),transparent);border-radius:var(--radius-sm);animation:_scanMove_1vftx_1 2s ease-in-out infinite;box-shadow:0 0 10px #d4a574cc}@keyframes _scanMove_1vftx_1{0%,to{transform:translateY(-80px);opacity:.3}50%{transform:translateY(80px);opacity:1}}._hint_1vftx_783{color:#fffffff2;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);text-align:center;margin:0;text-shadow:0 2px 4px rgba(0,0,0,.5)}@media (min-width: 640px){._menu_1vftx_21{padding:var(--space-8) var(--space-6)}._title_1vftx_41{font-size:var(--font-size-2xl);margin-bottom:var(--space-4)}._button_1vftx_105{padding:var(--space-4) var(--space-6);font-size:var(--font-size-lg)}._scanBox_1vftx_355{width:320px;height:320px}._hint_1vftx_783{font-size:var(--font-size-base)}}@media (min-width: 1024px){._container_1vftx_5{max-width:600px;margin:0 auto}._menu_1vftx_21{padding:var(--space-10) var(--space-8)}._title_1vftx_41{font-size:var(--font-size-3xl)}._button_1vftx_105{padding:var(--space-4) var(--space-8);font-size:var(--font-size-base)}._scanBox_1vftx_355{width:360px;height:360px}._videoWrapper_1vftx_299{max-width:500px;margin:0 auto}}@media (prefers-reduced-motion: reduce){._button_1vftx_105{transition:none}._scanBox_1vftx_355{animation:none}._primaryButton_1vftx_149:not(:disabled):hover{transform:none}._scanPulse_1vftx_947{animation:none}}@media (prefers-color-scheme: dark){._menu_1vftx_21{background:linear-gradient(135deg,var(--color-neutral-800) 0%,var(--color-neutral-900) 100%)}._title_1vftx_41{color:var(--color-neutral-100)}._divider_1vftx_69{color:var(--color-neutral-600)}._divider_1vftx_69:before,._divider_1vftx_69:after{background:var(--color-neutral-700)}._secondaryButton_1vftx_183{background:var(--color-neutral-900);color:var(--color-primary-400);border-color:var(--color-primary-400)}._secondaryButton_1vftx_183:not(:disabled):hover{background:var(--color-neutral-800)}}._cameraControls_1vftx_1019{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--space-3);flex-wrap:wrap}._controlButton_1vftx_1037{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:var(--border-width-medium) solid rgba(255,255,255,.3);border-radius:var(--radius-md);background:#ffffff1a;color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}._controlButton_1vftx_1037:hover{background:#fff3;border-color:#ffffff80}._controlButton_1vftx_1037._active_1vftx_1079{background:#d4a5744d;border-color:var(--color-primary-300);color:var(--color-primary-300)}@supports (padding: max(0px)){._button_1vftx_105{padding-left:max(var(--space-5),env(safe-area-inset-left));padding-right:max(var(--space-5),env(safe-area-inset-right))}._menu_1vftx_21{padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right));padding-bottom:max(var(--space-6),env(safe-area-inset-bottom))}._cameraContainer_1vftx_279{padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right));padding-bottom:max(var(--space-4),env(safe-area-inset-bottom))}}.extraction-theory-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-4);margin-bottom:var(--space-4);border:1px solid var(--color-neutral-200);cursor:pointer;transition:all var(--transition-fast);contain:layout style}.extraction-theory-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary-200)}.extraction-theory-card.loading{cursor:default;min-height:180px;display:flex;flex-direction:column}.extraction-theory-card.loading:hover{transform:none;box-shadow:none;border-color:var(--color-neutral-200)}.theory-card-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4)}.theory-icon{font-size:1.5rem;flex-shrink:0}.theory-header-text{display:flex;flex-direction:column;gap:2px}.theory-card-header h2{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.theory-subtitle{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:var(--font-weight-normal)}.theory-loading{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.theory-loading .loading-spinner{width:24px;height:24px;border:2px solid var(--color-neutral-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin .8s linear infinite}.theory-card-content{display:flex;flex-direction:column;gap:var(--space-3)}.theory-meta{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center}.theory-category,.theory-difficulty,.theory-time{font-size:var(--font-size-xs);padding:2px 8px;border-radius:var(--radius-sm);background:#fff;color:var(--color-text-secondary);font-weight:var(--font-weight-medium);border:1px solid var(--color-neutral-200)}.theory-difficulty{display:flex;align-items:center;gap:4px;text-transform:capitalize}.theory-time{display:flex;align-items:center;gap:4px}.theory-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0;line-height:1.3}.theory-summary{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.theory-tags{display:flex;gap:var(--space-2);flex-wrap:wrap}.theory-tag{font-size:var(--font-size-xs);color:var(--color-text-primary);background:#fff;padding:2px 8px;border-radius:var(--radius-sm);border:1px solid var(--color-neutral-200);font-weight:var(--font-weight-medium)}.theory-cta{display:flex;align-items:center;justify-content:space-between;padding-top:var(--space-2);border-top:1px solid var(--color-neutral-200);font-size:var(--font-size-sm);color:var(--color-primary-500);font-weight:var(--font-weight-semibold)}.theory-arrow{font-size:var(--font-size-lg);transition:transform var(--transition-fast)}.extraction-theory-card:hover .theory-arrow{transform:translate(4px)}@media (min-width: 640px){.extraction-theory-card{padding:var(--space-5)}.theory-title{font-size:var(--font-size-xl)}.theory-summary{font-size:var(--font-size-base)}}@media (min-width: 1024px){.extraction-theory-card{max-width:800px}}.personalized-dashboard{padding:var(--space-4);padding-bottom:calc(70px + var(--space-4));max-width:800px;margin:0 auto;min-height:100vh}.personalized-dashboard.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);min-height:50vh}.dashboard-header{text-align:center;margin-bottom:var(--space-6);padding:var(--space-4) 0}.dashboard-header h1{font-family:var(--font-family-serif);font-size:var(--font-size-2xl);color:var(--color-primary-900);margin-bottom:var(--space-2)}.dashboard-header p{color:var(--color-text-muted);font-size:var(--font-size-base)}.my-day-card{background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-primary-100) 100%);border-radius:var(--radius-xl);padding:var(--space-3);margin-bottom:var(--space-4);border:1px solid var(--color-primary-200);max-width:100%;box-sizing:border-box;min-height:200px;contain:layout style}.my-day-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.my-day-header .my-day-icon{font-size:1.25rem}.my-day-header .calendar-icon{display:flex;flex-direction:column;align-items:center;justify-content:center;width:2rem;height:2rem;background:var(--color-primary-500);border-radius:var(--radius-sm);font-size:1rem;line-height:1;overflow:hidden}.my-day-header .calendar-icon .calendar-month{font-size:.5rem;font-weight:var(--font-weight-bold);color:#fff;text-transform:uppercase;letter-spacing:.02em;background:var(--color-primary-700);width:100%;text-align:center;padding:1px 0}.my-day-header .calendar-icon .calendar-day{font-size:.85rem;font-weight:var(--font-weight-bold);color:var(--color-primary-900);background:#fff;width:100%;text-align:center;flex:1;display:flex;align-items:center;justify-content:center}.my-day-header h2{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-primary-800);margin:0}.my-day-content.no-brew{text-align:center}.no-brew-message{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-3)}.no-brew-emoji{font-size:1.5rem;opacity:.7}.no-brew-message p{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0}.quick-brew-suggestion{background:#fff;border-radius:var(--radius-lg);padding:var(--space-3)}.suggestion-label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin:0 0 var(--space-2) 0}.quick-brew-btn{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3);background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);text-align:left}.quick-brew-btn:hover{background:var(--color-primary-100);border-color:var(--color-primary-300)}.quick-brew-btn .brew-method-icon{font-size:1.5rem}.quick-brew-btn .brew-details{flex:1;display:flex;flex-direction:column;gap:2px}.quick-brew-btn .brew-details strong{font-size:var(--font-size-sm);color:var(--color-text-primary);text-transform:capitalize}.quick-brew-btn .brew-details span{font-size:var(--font-size-xs);color:var(--color-text-muted)}.quick-brew-btn .brew-arrow{font-size:var(--font-size-lg);color:var(--color-primary-500)}.start-brew-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-3);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.start-brew-btn:hover{background:var(--color-primary-600)}.my-day-content.has-brewed{text-align:center}.stat-boxes{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);margin-bottom:var(--space-3);min-height:90px}.stat-box{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2);background:var(--color-neutral-50);border:1px solid var(--color-primary-100);border-radius:var(--radius-lg);min-height:76px;position:relative;font-family:inherit;font-size:inherit;color:inherit;overflow:hidden}button.stat-box{-webkit-appearance:none;-moz-appearance:none;appearance:none}.stat-box-link{cursor:pointer;transition:all .2s ease;text-decoration:none}.stat-box-link:hover{background:var(--color-primary-50);border-color:var(--color-primary-300);transform:translateY(-1px);box-shadow:0 2px 8px #8b5a2b1f}.stat-box-link:active{transform:translateY(0)}.stat-box-icon{font-size:var(--font-size-base);margin-bottom:2px}.stat-box-value{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-primary-700);line-height:1}.stat-box-label{font-size:.65rem;color:var(--color-text-muted);margin-top:2px;text-align:center;white-space:nowrap}.stat-box-arrow{position:absolute;top:var(--space-1);right:var(--space-1);font-size:var(--font-size-xs);color:var(--color-primary-500);opacity:.7}.stat-box-link:hover .stat-box-arrow{opacity:1}.stat-box-link .stat-box-label{color:var(--color-primary-600)}.day-insight{margin-bottom:var(--space-3)}.day-insight p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}.another-brew-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:#fff;color:var(--color-primary-700);border:1px solid var(--color-primary-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.another-brew-btn:hover{background:var(--color-primary-50);border-color:var(--color-primary-400)}.dashboard-section{margin-bottom:var(--space-6)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.section-header h2{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.see-all{background:none;border:none;color:var(--color-primary-500);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;padding:var(--space-2);margin-right:calc(-1 * var(--space-2))}.see-all:hover{color:var(--color-primary-700);text-decoration:underline}.manage-icon-btn{background:none;border:none;font-size:var(--font-size-lg);cursor:pointer;padding:var(--space-1);opacity:.7;transition:opacity var(--transition-fast),transform var(--transition-fast)}.manage-icon-btn:hover{opacity:1;transform:rotate(45deg)}.coffee-cards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.coffee-card{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;cursor:pointer;transition:all var(--transition-fast)}.coffee-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.coffee-card-image{position:relative;width:100%;height:100px;background:linear-gradient(135deg,var(--color-primary-100),var(--color-primary-200));display:flex;align-items:center;justify-content:center}.coffee-card-image img{width:100%;height:100%;object-fit:cover}.coffee-card-placeholder{font-size:2.5rem;opacity:.5}.freshness-tag{position:absolute;top:var(--space-2);right:var(--space-2);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.freshness-tag.fresh{background:var(--color-success-500);color:#fff}.freshness-tag.peak{background:var(--color-warning-500);color:#fff}.freshness-tag.aging{background:var(--color-neutral-400);color:#fff}.coffee-card-content{padding:var(--space-3)}.coffee-card-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.coffee-card-details{display:flex;gap:var(--space-2);margin-bottom:var(--space-1)}.coffee-card-grams{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-primary-600)}.coffee-card-origin{font-size:var(--font-size-xs);color:var(--color-text-muted);background:var(--color-neutral-100);padding:2px var(--space-2);border-radius:var(--radius-sm)}.coffee-card-freshness{font-size:var(--font-size-xs);color:var(--color-text-muted)}.brew-cards-scroll{display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-2);-webkit-overflow-scrolling:touch;scrollbar-width:none}.brew-cards-scroll::-webkit-scrollbar{display:none}.brew-card{flex-shrink:0;width:160px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;cursor:pointer;transition:all var(--transition-fast)}.brew-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.brew-card-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);background:linear-gradient(135deg,var(--color-primary-50),var(--color-primary-100));border-bottom:1px solid var(--color-primary-100)}.brew-card-icon{font-size:1.25rem}.brew-card-method{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-primary-700);text-transform:capitalize;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brew-card-body{padding:var(--space-3)}.brew-card-coffee{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brew-card-params{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-muted)}.param-divider{opacity:.5}.brew-card-footer{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);background:var(--color-neutral-50);border-top:1px solid var(--color-neutral-100)}.brew-card-rating{font-size:var(--font-size-xs);color:var(--color-warning-500);letter-spacing:-1px}.brew-card-rating-empty{font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic}.brew-card-time{font-size:var(--font-size-xs);color:var(--color-text-muted)}.scan-cards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.scan-card{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;cursor:pointer;transition:all var(--transition-fast)}.scan-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.scan-card-image{width:100%;height:80px;background:linear-gradient(135deg,var(--color-neutral-100),var(--color-neutral-200));display:flex;align-items:center;justify-content:center}.scan-card-image img{width:100%;height:100%;object-fit:cover}.scan-card-placeholder{font-size:2rem;opacity:.4}.scan-card-content{padding:var(--space-3)}.scan-card-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:var(--space-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scan-card-origin{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-1)}.scan-card-time{font-size:var(--font-size-xs);color:var(--color-text-muted)}.try-cards-scroll{display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-2);-webkit-overflow-scrolling:touch;scrollbar-width:none}.try-cards-scroll::-webkit-scrollbar{display:none}.try-card{flex-shrink:0;width:140px;display:flex;flex-direction:column;align-items:center;padding:var(--space-4);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-primary-100);cursor:pointer;transition:all var(--transition-fast);text-align:center}.try-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary-300)}.try-card-icon{font-size:1.5rem;width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-primary-100),var(--color-primary-200));border-radius:var(--radius-md);margin-bottom:var(--space-2)}.try-card-content{min-width:0;width:100%}.try-card-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:var(--space-1)}.try-card-notes{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-style:italic}.suggestions{padding:var(--space-4);background:linear-gradient(135deg,var(--color-primary-50),var(--color-primary-100));border-radius:var(--radius-lg)}.suggestions h2{margin-bottom:var(--space-4)}.suggestion-cards{display:flex;flex-direction:column;gap:var(--space-3)}.suggestion-card{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:#fff;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.suggestion-card:hover{transform:translate(4px);box-shadow:var(--shadow-sm)}.suggestion-icon{font-size:1.5rem;width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-primary-100);border-radius:var(--radius-md)}.suggestion-content h3{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:2px}.suggestion-content p{font-size:var(--font-size-sm);color:var(--color-text-muted)}.alerts-section{margin-bottom:var(--space-4)}.alerts-banner{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:linear-gradient(135deg,var(--color-warning-50),var(--color-warning-100));border:1px solid var(--color-warning-200);border-radius:var(--radius-lg);border-left:4px solid var(--color-warning-500)}.alert-icon{font-size:1.5rem;flex-shrink:0}.alert-content{flex:1;min-width:0}.alert-content strong{display:block;font-size:var(--font-size-sm);color:var(--color-warning-800);margin-bottom:2px}.alert-content p{font-size:var(--font-size-xs);color:var(--color-warning-700);margin:0}.alert-action{padding:var(--space-2) var(--space-3);background:#fff;border:1px solid var(--color-warning-300);border-radius:var(--radius-md);color:var(--color-warning-700);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.alert-action:hover{background:var(--color-warning-50);border-color:var(--color-warning-500)}.goals-list{display:flex;flex-direction:column;gap:var(--space-3);width:100%;overflow:hidden}.goal-card{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);cursor:pointer;transition:all var(--transition-fast);border:1px solid var(--color-neutral-100);width:100%;box-sizing:border-box;overflow:hidden}.goal-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);border-color:var(--color-primary-200)}.goal-card.complete{background:linear-gradient(135deg,var(--color-success-50) 0%,white 100%);border-color:var(--color-success-200)}.goal-card.almost{background:linear-gradient(135deg,var(--color-warning-50) 0%,white 100%);border-color:var(--color-warning-200)}.goal-left{flex-shrink:0}.goal-status-icon{font-size:1.25rem;display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:var(--color-neutral-100);border-radius:var(--radius-full)}.goal-card.complete .goal-status-icon{background:var(--color-success-100)}.goal-card.almost .goal-status-icon{background:var(--color-warning-100)}.goal-content{flex:1;min-width:0}.goal-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.goal-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.goal-progress-text{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);flex-shrink:0}.goal-progress-text.complete{color:var(--color-success-600)}.goal-progress-text.almost{color:var(--color-warning-600)}.goal-progress-bar{height:8px;background:var(--color-neutral-200);border-radius:var(--radius-full);overflow:hidden}.goal-progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary-400),var(--color-primary-500));border-radius:var(--radius-full);transition:width .3s ease}.goal-progress-fill.complete{background:linear-gradient(90deg,var(--color-success-400),var(--color-success-500))}.goal-progress-fill.almost{background:linear-gradient(90deg,var(--color-warning-400),var(--color-warning-500))}.pro-tools-section{background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-neutral-50) 100%);border-radius:var(--radius-lg);padding:var(--space-4);margin:var(--space-6) calc(-1 * var(--space-4));width:calc(100% + var(--space-8))}.pro-tools-section .section-header h2{color:var(--color-primary-800)}.pro-tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--space-3)}.pro-tool-card{background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;align-items:center;text-align:center;cursor:pointer;transition:all .2s ease;border:1px solid var(--color-neutral-200);box-shadow:var(--shadow-sm)}.pro-tool-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary-300)}.pro-tool-card.highlight{background:linear-gradient(135deg,var(--color-primary-50),var(--color-primary-100));border-color:var(--color-primary-300)}.pro-tool-card.highlight:hover{background:linear-gradient(135deg,var(--color-primary-100),var(--color-primary-200))}.pro-tool-card:active{transform:translateY(0)}.pro-tool-icon{font-size:1.75rem;margin-bottom:var(--space-2)}.pro-tool-content h3{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-1)}.pro-tool-content p{font-size:var(--font-size-xs);color:var(--color-text-muted);line-height:1.3}.quick-log-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.quick-log-popup{background:#fff;width:100%;max-width:100vw;border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--space-3);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));animation:slideUp .25s ease;box-sizing:border-box}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.quick-log-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.quick-log-header h3{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0;display:flex;align-items:center;gap:var(--space-2)}.quick-log-close{background:transparent;border:none;font-size:1.25rem;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);line-height:1;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.quick-log-close:hover{background:var(--color-neutral-100);color:var(--color-text-primary)}.quick-log-content{display:flex;flex-direction:column;gap:var(--space-4)}.quick-log-brew-info{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--color-primary-50);border-radius:var(--radius-lg);border:1px solid var(--color-primary-100)}.quick-log-method{font-size:1.75rem;flex-shrink:0}.quick-log-details{flex:1;display:flex;flex-direction:column;gap:var(--space-1)}.quick-log-details .detail-row{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.quick-log-details .detail-row:first-child{font-weight:var(--font-weight-medium);color:var(--color-text-primary);font-size:var(--font-size-base)}.quick-log-details .detail-row span:first-child{flex-shrink:0}.quick-log-rating{display:flex;flex-direction:column;gap:var(--space-2)}.quick-log-rating label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.rating-stars{display:flex;gap:var(--space-1);justify-content:center}.star-btn{background:transparent;border:none;font-size:1.75rem;cursor:pointer;padding:var(--space-1);transition:transform .15s ease;color:var(--color-neutral-300)}.star-btn.filled{color:var(--color-warning-400)}.star-btn:active{transform:scale(.95)}.quick-log-submit{width:100%;padding:var(--space-3);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.quick-log-submit:hover:not(:disabled){background:var(--color-primary-600)}.quick-log-submit:disabled{opacity:.6;cursor:not-allowed}.quick-log-success{width:100%;padding:var(--space-3);background:var(--color-success-50, #ecfdf5);color:var(--color-success-700, #047857);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);text-align:center}.quick-log-error{padding:var(--space-2) var(--space-3);background:var(--color-danger-50, #fef2f2);color:var(--color-danger-700, #b91c1c);border-radius:var(--radius-md);font-size:var(--font-size-sm);text-align:center}@media (max-width: 640px){.personalized-dashboard{padding:var(--space-3);padding-bottom:calc(70px + var(--space-3))}.coffee-cards-grid,.scan-cards-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.coffee-card-image,.scan-card-image{height:70px}.brew-card{width:140px}.try-card{width:120px}.day-stats{gap:var(--space-3)}.stat-value{font-size:var(--font-size-lg)}}@media (min-width: 641px){.my-day-card{padding:var(--space-4);max-width:400px}.quick-log-popup{max-width:400px;padding:var(--space-4)}.quick-log-method,.star-btn{font-size:2rem}}.journey-section{margin-bottom:var(--space-4)}.journey-section .section-header{margin-bottom:var(--space-3)}.journey-section .section-header h2{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0;display:flex;align-items:center;gap:var(--space-2)}.journey-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:var(--space-2)}.journey-stat-card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-3);border:1px solid var(--color-neutral-200);box-shadow:var(--shadow-sm);cursor:pointer;transition:all var(--transition-fast);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-1)}.journey-stat-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary-200);transform:translateY(-2px)}.journey-stat-card:active{transform:translateY(0)}.journey-stat-card .stat-icon{font-size:1.25rem}.journey-stat-card .stat-value{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:1}.journey-stat-card .stat-label{font-size:var(--font-size-xs);color:var(--color-text-muted);line-height:1.2}.journey-stat-card.highlight{background:linear-gradient(135deg,var(--color-warning-50),var(--color-warning-100));border-color:var(--color-warning-200)}.journey-stat-card.highlight .stat-value{color:var(--color-warning-700)}.journey-stat-card.highlight .stat-label{color:var(--color-warning-600)}.journey-stat-card.awards{background:linear-gradient(135deg,var(--color-primary-50),var(--color-primary-100));border-color:var(--color-primary-200)}.journey-stat-card.awards .stat-value{color:var(--color-primary-700)}.journey-stat-card.awards .stat-label{color:var(--color-primary-600)}.journey-stat-card.skeleton{cursor:default;animation:pulse 1.5s ease-in-out infinite;pointer-events:none;opacity:.6}.journey-stat-card.skeleton .stat-value{color:var(--color-text-muted)}@keyframes pulse{0%,to{opacity:.6}50%{opacity:.3}}@media (max-width: 400px){.journey-stats-grid{grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.journey-stat-card{padding:var(--space-2)}.journey-stat-card .stat-icon{font-size:1rem}.journey-stat-card .stat-value{font-size:var(--font-size-lg)}.journey-stat-card .stat-label{font-size:10px}}.loading-spinner-container{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2, .5rem)}.loading-spinner--sm .loading-spinner{width:16px;height:16px}.loading-spinner--md .loading-spinner{width:24px;height:24px}.loading-spinner--lg .loading-spinner{width:40px;height:40px}.loading-spinner--xl .loading-spinner{width:56px;height:56px}.loading-spinner{animation:spin 1s linear infinite}.loading-spinner__track{stroke:var(--color-neutral-200, #e5e5e5);opacity:.3}.loading-spinner__progress{stroke-dasharray:80,200;stroke-dashoffset:0;animation:dash 1.5s ease-in-out infinite}.loading-spinner--primary .loading-spinner__progress{stroke:var(--color-primary-500, #8b5a2b)}.loading-spinner--neutral .loading-spinner__progress{stroke:var(--color-neutral-400, #525252)}.loading-spinner--white .loading-spinner__progress{stroke:#fff}.loading-spinner--white .loading-spinner__track{stroke:#ffffff4d}.loading-spinner__label{font-size:var(--font-size-sm, .875rem);color:var(--color-text-muted, #333333);font-weight:var(--font-weight-medium, 500)}.loading-spinner--inline{display:inline-flex;vertical-align:middle;margin:0}.loading-spinner-fullpage{display:flex;align-items:center;justify-content:center;min-height:200px;width:100%;padding:var(--space-8, 2rem)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}@media (prefers-reduced-motion: reduce){.loading-spinner{animation:spin 2s linear infinite}.loading-spinner__progress{animation:none;stroke-dasharray:50,200}}.landing-page{min-height:100vh;background:var(--color-neutral-50)}.hero-section{display:flex;flex-direction:column;align-items:center;padding:var(--space-8) var(--space-4);background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-primary-100) 100%);text-align:center}.hero-content{max-width:var(--container-lg);margin-bottom:var(--space-8)}.hero-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:#8b5a2b1a;border-radius:var(--radius-full);margin-bottom:var(--space-6)}.badge-icon{font-size:var(--font-size-lg)}.badge-text{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-primary-600)}.hero-title{font-family:var(--font-family-serif);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--space-4) 0;line-height:var(--line-height-tight)}.hero-subtitle{font-size:var(--font-size-lg);color:var(--color-text-secondary);margin:0 0 var(--space-8) 0;line-height:var(--line-height-relaxed)}.hero-scanner{background:#fff;border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-lg);margin:0 auto;max-width:var(--container-md)}.hero-image{width:100%;max-width:var(--container-md);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-xl)}.hero-coffee-image{width:100%;height:auto;display:block}.section-title{font-family:var(--font-family-serif);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);text-align:center;margin:0 0 var(--space-3) 0}.section-subtitle{font-size:var(--font-size-base);color:var(--color-text-muted);text-align:center;margin:0 0 var(--space-8) 0;max-width:600px;margin-left:auto;margin-right:auto}.features-section{padding:var(--space-12) var(--space-4);background:#fff}.features-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6);max-width:1200px;margin:0 auto}.feature-card{background:var(--color-neutral-50);border-radius:var(--radius-xl);padding:var(--space-6);text-align:center;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.feature-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.feature-icon-wrapper{width:64px;height:64px;margin:0 auto var(--space-4);background:linear-gradient(135deg,var(--color-primary-100) 0%,var(--color-primary-200) 100%);border-radius:var(--radius-xl);display:flex;align-items:center;justify-content:center}.feature-icon{font-size:2rem}.feature-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-3) 0}.feature-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0;line-height:var(--line-height-relaxed)}.how-it-works-section{padding:var(--space-12) var(--space-4);background:var(--color-primary-50)}.steps-container{max-width:800px;margin:0 auto;display:flex;flex-direction:column;gap:var(--space-8)}.step{display:flex;flex-direction:column;align-items:center;text-align:center;background:#fff;border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-md)}.step-number{width:48px;height:48px;background:var(--color-primary-500);color:#fff;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-4)}.step-content{margin-bottom:var(--space-4)}.step-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.step-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.step-image{width:100%;max-width:300px;border-radius:var(--radius-lg);overflow:hidden}.step-image img{width:100%;height:auto;display:block}.pricing-section{padding:var(--space-12) var(--space-4);background:#fff}.pricing-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6);max-width:1000px;margin:0 auto}.pricing-loading{text-align:center;padding:var(--space-8);grid-column:1 / -1}.loading-spinner{display:inline-block;width:32px;height:32px;border:3px solid var(--color-neutral-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite}.pricing-card{background:var(--color-neutral-50);border-radius:var(--radius-xl);padding:var(--space-6);border:2px solid transparent;position:relative;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.pricing-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.pricing-card.popular{border-color:var(--color-primary-500);background:#fff}.pricing-card.current{border-color:var(--color-success-500)}.popular-badge,.current-badge{position:absolute;top:-12px;left:50%;transform:translate(-50%);padding:var(--space-1) var(--space-4);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);white-space:nowrap}.popular-badge{background:var(--color-primary-500);color:#fff}.current-badge{background:var(--color-success-500);color:#fff}.pricing-header{text-align:center;padding-bottom:var(--space-4);border-bottom:1px solid var(--color-neutral-200);margin-bottom:var(--space-4)}.pricing-name{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.pricing-price{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-primary-600)}.pricing-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:var(--space-2) 0 0 0}.pricing-features{list-style:none;padding:0;margin:0 0 var(--space-6) 0}.pricing-features li{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.pricing-features li.disabled{opacity:.5;text-decoration:line-through}.pricing-cta{width:100%;padding:var(--space-4);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);border:none;min-height:48px}.pricing-cta.primary{background:var(--color-primary-500);color:#fff}.pricing-cta.primary:hover:not(:disabled){background:var(--color-primary-600)}.pricing-cta.secondary{background:transparent;color:var(--color-primary-500);border:2px solid var(--color-primary-500)}.pricing-cta.secondary:hover:not(:disabled){background:var(--color-primary-50)}.pricing-cta:disabled{opacity:.6;cursor:not-allowed}.testimonials-section{padding:var(--space-12) var(--space-4);background:var(--color-neutral-50)}.testimonials-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6);max-width:1000px;margin:0 auto}.testimonial-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}.testimonial-stars{margin-bottom:var(--space-3)}.testimonial-text{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin:0 0 var(--space-4) 0;font-style:italic}.testimonial-author{display:flex;align-items:center;gap:var(--space-3)}.author-avatar{width:48px;height:48px;background:var(--color-primary-100);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:1.5rem}.author-info{display:flex;flex-direction:column}.author-name{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.author-role{font-size:var(--font-size-sm);color:var(--color-text-muted)}.cta-section{padding:var(--space-12) var(--space-4);background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-600) 100%);text-align:center}.cta-content{max-width:600px;margin:0 auto}.cta-title{font-family:var(--font-family-serif);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:#fff;margin:0 0 var(--space-3) 0}.cta-subtitle{font-size:var(--font-size-base);color:#ffffffe6;margin:0 0 var(--space-8) 0}.cta-buttons{display:flex;flex-direction:column;gap:var(--space-4);max-width:300px;margin:0 auto}.cta-btn{padding:var(--space-4) var(--space-6);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);border:none;min-height:48px}.cta-btn-primary{background:#fff;color:var(--color-primary-600)}.cta-btn-primary:hover{background:var(--color-neutral-100);transform:translateY(-2px)}.cta-btn-secondary{background:transparent;color:#fff;border:2px solid white}.cta-btn-secondary:hover{background:#ffffff1a}.landing-footer{padding:var(--space-8) var(--space-4);background:var(--color-primary-900);text-align:center}.footer-content{max-width:400px;margin:0 auto}.footer-brand{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-3)}.footer-logo{font-size:1.5rem}.footer-name{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:#fff}.footer-tagline{font-size:var(--font-size-sm);color:#ffffffb3;margin:0 0 var(--space-4) 0}.footer-copyright{font-size:var(--font-size-xs);color:#ffffff80;margin:0}@media (min-width: 640px){.hero-title{font-size:var(--font-size-4xl)}.features-grid{grid-template-columns:repeat(2,1fr)}.pricing-grid{grid-template-columns:repeat(3,1fr)}.testimonials-grid{grid-template-columns:repeat(2,1fr)}.cta-buttons{flex-direction:row;max-width:none;justify-content:center}.step{flex-direction:row;text-align:left;gap:var(--space-6)}.step-number{flex-shrink:0;margin-bottom:0}.step-content{flex:1;margin-bottom:0}.step-image{flex-shrink:0;width:200px}}@media (min-width: 1024px){.hero-section{flex-direction:row;padding:var(--space-16) var(--space-8);text-align:left;gap:var(--space-12)}.hero-content{flex:1;margin-bottom:0}.hero-image{flex:1}.features-grid,.testimonials-grid{grid-template-columns:repeat(3,1fr)}.section-title,.cta-title{font-size:var(--font-size-3xl)}}.home-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:var(--space-6);background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-primary-100) 100%)}.home-header{text-align:center;margin-bottom:var(--space-8)}.home-logo{font-size:4rem;margin-bottom:var(--space-4);animation:float 3s ease-in-out infinite}.home-title{font-family:var(--font-family-serif);font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--space-3) 0;letter-spacing:-.02em}.home-tagline{font-size:var(--font-size-lg);color:var(--color-text-secondary);margin:0;font-weight:var(--font-weight-medium)}.home-main{width:100%;max-width:var(--container-md)}.home-scanner-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-lg);margin-bottom:var(--space-8)}.home-features{display:flex;flex-direction:column;gap:var(--space-4)}.feature-item{display:flex;align-items:center;gap:var(--space-3);background:#fff;padding:var(--space-4);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .2s}.feature-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.feature-icon{font-size:1.5rem}.feature-text{font-size:var(--font-size-base);color:var(--color-text-primary);font-weight:var(--font-weight-medium)}@media (min-width: 640px){.home-features{flex-direction:row;justify-content:center}.feature-item{flex:1;max-width:200px;flex-direction:column;text-align:center}.feature-icon{font-size:2rem}}@media (min-width: 768px){.home-title{font-size:3rem}.home-tagline{font-size:var(--font-size-xl)}}.vision-page{min-height:100vh;background:var(--color-neutral-50)}.vision-hero{background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-400) 50%,var(--color-primary-300) 100%);color:#fff;padding:var(--space-10) var(--space-4);text-align:center}.vision-hero-content{max-width:var(--container-md);margin:0 auto var(--space-8)}.vision-tagline{display:inline-block;background:#ffffff26;padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);letter-spacing:.05em;text-transform:uppercase;margin-bottom:var(--space-4)}.vision-title{font-family:var(--font-family-serif);font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);line-height:1.1;margin:0 0 var(--space-6)}.vision-title .highlight{color:var(--color-warning-300)}.vision-subtitle{font-size:var(--font-size-lg);line-height:var(--line-height-relaxed);opacity:.9;max-width:600px;margin:0 auto}.vision-hero-visual{max-width:var(--container-sm);margin:0 auto}.journey-illustration{display:flex;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-3);background:#ffffff1a;border-radius:var(--radius-xl);flex-wrap:nowrap;overflow-x:auto}.journey-step{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-1) var(--space-2);min-width:0;flex-shrink:0}.step-icon{font-size:1.25rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}.step-label{font-size:.625rem;font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.02em;opacity:.8;white-space:nowrap}.journey-connector{width:12px;height:2px;background:#ffffff4d;border-radius:1px;flex-shrink:0}.trailer-message{background:#ffffff14;border-left:4px solid var(--color-warning-400);padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);margin:var(--space-6) 0}.trailer-highlight{font-size:var(--font-size-lg);color:var(--color-warning-300);margin:0;line-height:var(--line-height-relaxed)}.vision-section{padding:var(--space-12) var(--space-4)}.section-content{max-width:var(--container-lg);margin:0 auto}.section-badge{display:inline-block;background:var(--color-primary-100);color:var(--color-primary-700);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-4)}.section-title{font-family:var(--font-family-serif);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--space-6);line-height:1.2}.section-text{font-size:var(--font-size-lg);line-height:var(--line-height-relaxed);color:var(--color-text-secondary);margin:0 0 var(--space-4);max-width:800px}.section-text.large-text{font-size:var(--font-size-xl)}.highlight-text{color:var(--color-primary-700);font-weight:var(--font-weight-medium)}.vision-problem{background:var(--color-neutral-100)}.vision-solution{background:#fff}.solution-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6);margin-top:var(--space-8)}.solution-card{background:var(--color-neutral-50);padding:var(--space-6);border-radius:var(--radius-xl);border:1px solid var(--color-neutral-200);transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.solution-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.solution-icon{font-size:2.5rem;margin-bottom:var(--space-4)}.solution-card h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-2)}.solution-card p{font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-text-muted);margin:0}.vision-future{background:linear-gradient(180deg,var(--color-primary-50) 0%,white 100%)}.vision-pillars{display:grid;grid-template-columns:1fr;gap:var(--space-6);margin-top:var(--space-8)}.pillar{text-align:center;padding:var(--space-6)}.pillar-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;background:var(--color-primary-500);color:#fff;font-size:1.5rem;border-radius:50%;margin-bottom:var(--space-4)}.pillar h4{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-2)}.pillar p{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.vision-impact{background:#fff}.impact-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6);margin-top:var(--space-8)}.impact-card{background:var(--color-neutral-50);padding:var(--space-6);border-radius:var(--radius-xl);border-left:4px solid var(--color-primary-500)}.impact-emoji{font-size:2.5rem;margin-bottom:var(--space-3)}.impact-card h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-2)}.impact-card p{font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-text-muted);margin:0}.vision-cta{background:linear-gradient(135deg,var(--color-primary-700) 0%,var(--color-primary-900) 100%);color:#fff;text-align:center}.vision-cta .section-title{color:#fff}.vision-cta .section-text{color:#ffffffe6;margin-left:auto;margin-right:auto}.cta-buttons{display:flex;flex-direction:column;gap:var(--space-4);margin:var(--space-8) auto;max-width:320px}.cta-button{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4) var(--space-6);border-radius:var(--radius-lg);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);text-decoration:none;transition:all var(--transition-fast);min-height:56px}.cta-button.primary{background:#fff;color:var(--color-primary-700)}.cta-button.primary:hover{background:var(--color-neutral-100);transform:translateY(-2px)}.cta-button.secondary{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.5)}.cta-button.secondary:hover{background:#ffffff1a;border-color:#fff}.btn-icon{font-size:1.25rem}.cta-tagline{font-size:var(--font-size-lg);opacity:.8;margin:var(--space-6) 0 0}@media (min-width: 640px){.vision-hero{padding:var(--space-16) var(--space-6)}.vision-title{font-size:var(--font-size-5xl)}.journey-illustration{gap:var(--space-2);padding:var(--space-4)}.journey-step{padding:var(--space-2) var(--space-3)}.step-icon{font-size:1.5rem}.step-label{font-size:var(--font-size-xs)}.journey-connector{width:24px}.section-title{font-size:var(--font-size-4xl)}.solution-grid{grid-template-columns:repeat(2,1fr)}.vision-pillars{grid-template-columns:repeat(3,1fr)}.impact-grid{grid-template-columns:repeat(2,1fr)}.cta-buttons{flex-direction:row;max-width:none;justify-content:center}}@media (min-width: 1024px){.vision-hero{padding:var(--space-20) var(--space-8)}.vision-title{font-size:4rem}.vision-subtitle{font-size:var(--font-size-xl)}.journey-illustration{gap:var(--space-3)}.step-icon{font-size:2rem}.step-label{font-size:var(--font-size-sm)}.journey-connector{width:40px}.vision-section{padding:var(--space-16) var(--space-8)}.solution-grid,.impact-grid{grid-template-columns:repeat(4,1fr)}}.flavor-radar-chart{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.radar-grid-circle{fill:none;stroke:var(--color-neutral-200);stroke-width:1}.radar-axis-line{stroke:var(--color-neutral-300);stroke-width:1;stroke-dasharray:2 2}.radar-data-area{fill:var(--color-primary-500);fill-opacity:.3;stroke:var(--color-primary-600);stroke-width:2}.radar-data-point{fill:var(--color-primary-600);stroke:var(--color-neutral-50);stroke-width:2}.radar-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);fill:var(--color-text-secondary)}.flavor-scores-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2) var(--space-4);padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md);width:100%;max-width:280px}.score-item{display:flex;flex-direction:column;align-items:center;min-width:60px}.score-label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.score-value{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-primary-600)}@media (min-width: 640px){.flavor-radar-chart{flex-direction:row;gap:var(--space-6)}.flavor-scores-legend{flex-direction:column;max-width:120px;gap:var(--space-2)}.score-item{flex-direction:row;justify-content:space-between;width:100%}}.locked-feature-card{background:var(--color-neutral-50);border:2px dashed var(--color-neutral-300);border-radius:var(--radius-lg);padding:var(--space-6);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.locked-feature-card--small{padding:var(--space-4);gap:var(--space-3)}.locked-feature-card--small .locked-feature-card__title{font-size:var(--font-size-sm)}.locked-feature-card--small .locked-feature-card__benefits{font-size:var(--font-size-xs)}.locked-feature-card--large{padding:var(--space-8);gap:var(--space-5)}.locked-feature-card--large .locked-feature-card__title{font-size:var(--font-size-xl)}.locked-feature-card__preview{width:100%;height:120px;background:linear-gradient(135deg,var(--color-neutral-100),var(--color-neutral-200));border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.locked-feature-card__preview-blur{width:100%;height:100%;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.locked-feature-card__preview-icon{font-size:3rem;opacity:.3}.locked-feature-card__header{display:flex;align-items:center;gap:var(--space-2)}.locked-feature-card__icon{font-size:1.25rem}.locked-feature-card__feature-icon{font-size:1.5rem}.locked-feature-card__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.locked-feature-card__benefits{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-2);text-align:left;width:100%;max-width:280px}.locked-feature-card__benefits li{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.locked-feature-card__check{color:var(--color-success-500);font-weight:var(--font-weight-bold)}.locked-feature-card__cta{background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);padding:var(--space-3) var(--space-6);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);width:100%;max-width:280px}.locked-feature-card__cta:hover{background:var(--color-primary-600);transform:translateY(-1px);box-shadow:var(--shadow-md)}.locked-feature-card__cta:active{transform:translateY(0)}.locked-feature-card--small .locked-feature-card__preview{height:80px}.locked-feature-card--small .locked-feature-card__preview-icon{font-size:2rem}.locked-feature-card--small .locked-feature-card__cta{padding:var(--space-2) var(--space-4)}@media (max-width: 480px){.locked-feature-card{padding:var(--space-4)}.locked-feature-card__title{font-size:var(--font-size-base)}}.feature-gate-locked{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8);text-align:center;background:var(--color-neutral-50);border-radius:var(--radius-lg);border:1px dashed var(--color-neutral-200);min-height:200px}.feature-gate-icon{font-size:3rem;margin-bottom:var(--space-4);opacity:.6}.feature-gate-message{color:var(--color-text-secondary);font-size:var(--font-size-base);margin-bottom:var(--space-4);max-width:300px}.feature-gate-upgrade-btn{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background .2s ease}.feature-gate-upgrade-btn:hover{background:var(--color-primary-600)}.feature-gate-locked.compact{padding:var(--space-4);min-height:auto;flex-direction:row;gap:var(--space-3)}.feature-gate-locked.compact .feature-gate-icon{font-size:1.5rem;margin-bottom:0}.feature-gate-locked.compact .feature-gate-message{margin-bottom:0;font-size:var(--font-size-sm)}.feature-gate-overlay{position:relative}.feature-gate-overlay-content{filter:blur(4px);pointer-events:none;-webkit-user-select:none;user-select:none}.feature-gate-overlay-prompt{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#fffffff2;padding:var(--space-6);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:10}.feature-gate__preview-wrapper{position:relative;border:2px dashed #a855f7;border-radius:var(--radius-lg);background:linear-gradient(135deg,#a855f708,#7c3aed0d)}.feature-gate__preview-banner{display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:linear-gradient(135deg,#7c3aed,#a855f7);color:#fff;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:600;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.feature-gate__preview-icon{font-size:var(--font-size-base)}.feature-gate__preview-text{letter-spacing:.05em;text-transform:uppercase}.product-info-card{background:var(--color-neutral-50);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-neutral-200)}.product-header{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);background:linear-gradient(to bottom,var(--color-primary-50),var(--color-neutral-50));border-bottom:1px solid var(--color-neutral-200)}.product-image{width:100%;max-width:200px;height:auto;border-radius:var(--radius-md);object-fit:cover;align-self:center}.product-title-section{text-align:center}.product-name{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--space-1) 0;line-height:var(--line-height-tight)}.product-brand{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0 0 var(--space-2) 0}.product-barcode{display:inline-flex;align-items:center;gap:var(--space-2);background:#f0e8e2;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.barcode-label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.barcode-value{font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text-primary)}.info-section{padding:var(--space-4);border-bottom:1px solid var(--color-neutral-200)}.info-section:last-child{border-bottom:none}.section-title{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-3) 0}.section-icon{font-size:var(--font-size-lg)}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.info-item{display:flex;flex-direction:column;gap:var(--space-1)}.info-item.full-width{grid-column:1 / -1}.info-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.info-value{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.cultural-note,.variety-description,.tasting-notes{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin:var(--space-3) 0 0 0;padding:var(--space-3);background:var(--color-neutral-100);border-radius:var(--radius-md);font-style:italic}.flavor-chart-container{display:flex;justify-content:center;margin-bottom:var(--space-4)}.flavor-details{display:flex;flex-direction:column;gap:var(--space-3)}.flavor-tags{display:flex;flex-direction:column;gap:var(--space-2)}.tags-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.tags-container{display:flex;flex-wrap:wrap;gap:var(--space-1)}.flavor-tag{padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.flavor-tag.primary{background:var(--color-primary-100);color:var(--color-primary-700)}.flavor-tag.secondary{background:var(--color-neutral-200);color:var(--color-text-secondary)}.flavor-tag.aroma{background:var(--color-success-100, #d1fae5);color:var(--color-success-700, #047857)}.confidence-indicator{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-neutral-100)}.confidence-label{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap}.confidence-bar{flex:1;height:6px;background:var(--color-neutral-200);border-radius:var(--radius-full);overflow:hidden}.confidence-fill{height:100%;background:var(--color-success-500);border-radius:var(--radius-full);transition:width .3s ease}.confidence-value{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);min-width:36px;text-align:right}@media (min-width: 640px){.product-header{flex-direction:row;align-items:flex-start}.product-image{max-width:160px}.product-title-section{text-align:left;flex:1}.info-grid{grid-template-columns:repeat(4,1fr)}}.story-loading-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm);overflow:hidden}.story-loading-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4)}.story-icon{font-size:1.5rem}.story-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.story-loading-content{text-align:center;padding:var(--space-4) 0}.story-loading-animation{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-4)}.typewriter-cursor{width:3px;height:24px;background:var(--color-primary-500);animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.loading-dots{display:flex;gap:var(--space-1)}.loading-dots span{width:8px;height:8px;background:var(--color-primary-400);border-radius:50%;animation:bounce 1.4s infinite ease-in-out both}.loading-dots span:nth-child(1){animation-delay:-.32s}.loading-dots span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.story-loading-text{color:var(--color-text-muted);font-size:var(--font-size-sm);line-height:1.6;margin-bottom:var(--space-4);max-width:400px;margin-left:auto;margin-right:auto}.story-loading-steps{display:flex;flex-direction:column;gap:var(--space-2);max-width:250px;margin:0 auto}.loading-step{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md);opacity:.5;transition:all .3s}.loading-step.active{opacity:1;background:var(--color-primary-50);animation:pulse 2s infinite}.step-icon{font-size:1.25rem}.step-text{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.story-error .story-error-content{text-align:center;padding:var(--space-4)}.story-error-message{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--space-4)}.story-retry-button{padding:var(--space-2) var(--space-4);background:var(--color-primary-100);color:var(--color-primary-700);border:none;border-radius:var(--radius-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:background .2s}.story-retry-button:hover{background:var(--color-primary-200)}.story-success .story-content{color:var(--color-text-secondary);font-size:var(--font-size-base);line-height:1.7}.story-headline{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-4);text-align:center}.story-paragraph{margin:0 0 var(--space-3)}.story-paragraph:last-child{margin-bottom:0}.story-part{margin-bottom:var(--space-4);padding:var(--space-3);background:var(--color-primary-50);border-radius:var(--radius-lg)}.story-part:last-child{margin-bottom:0}.story-part-title{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-primary-700);margin:0 0 var(--space-2)}.story-part p{margin:0;font-size:var(--font-size-sm)}.story-fact{display:flex;gap:var(--space-3);padding:var(--space-4);background:linear-gradient(135deg,var(--color-warning-50) 0%,var(--color-primary-50) 100%);border-radius:var(--radius-lg);margin-top:var(--space-4)}.fact-icon{font-size:1.5rem;flex-shrink:0}.story-fact p{margin:0;font-size:var(--font-size-sm)}.story-fact strong{color:var(--color-text-primary)}@media (min-width: 640px){.story-loading-card{padding:var(--space-6)}.story-loading-steps{flex-direction:row;max-width:100%;justify-content:center}.loading-step{flex:1;max-width:180px}}@media (min-width: 1024px){.story-success .story-content{font-size:var(--font-size-base)}.story-part{padding:var(--space-4)}}.photo-capture-step{padding:var(--space-4);max-width:480px;margin:0 auto}.photo-capture-header{text-align:center;margin-bottom:var(--space-6)}.photo-capture-icon{font-size:3rem;margin-bottom:var(--space-3)}.photo-capture-title{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text-primary);margin-bottom:var(--space-2)}.photo-capture-subtitle{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.5;margin-bottom:var(--space-3)}.photo-capture-subtitle strong{color:var(--color-primary-500)}.photo-capture-barcode{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#f0e8e2;border-radius:var(--radius-md);font-size:var(--font-size-sm)}.photo-capture-barcode .barcode-label{color:var(--color-text-muted)}.photo-capture-barcode .barcode-value{font-family:var(--font-family-mono);color:var(--color-text-primary);font-weight:600}.photo-capture-area{margin-bottom:var(--space-6)}.photo-capture-trigger{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-4);border:2px dashed var(--color-neutral-300);border-radius:var(--radius-lg);background:var(--color-neutral-50)}.capture-button{min-height:56px;font-size:var(--font-size-lg);padding:var(--space-4) var(--space-6)}.capture-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center;max-width:280px}.photo-preview-container{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.photo-preview-image{width:100%;max-width:360px;max-height:400px;object-fit:contain;border-radius:var(--radius-lg);border:2px solid var(--color-neutral-200);box-shadow:var(--shadow-md)}.photo-preview-actions{display:flex;gap:var(--space-3);width:100%;justify-content:center}.photo-preview-actions .btn{min-height:48px;flex:1;max-width:200px}.spinner-small{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin .8s linear infinite;margin-right:var(--space-2)}.photo-capture-progress{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-4)}.progress-step{display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.progress-step .step-number{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:var(--font-size-sm);font-weight:700;background:var(--color-neutral-200);color:var(--color-text-muted);transition:all .2s ease}.progress-step.active .step-number{background:var(--color-primary-500);color:#fff}.progress-step.completed .step-number{background:var(--color-success-500);color:#fff}.progress-step .step-label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500}.progress-step.active .step-label{color:var(--color-primary-500);font-weight:600}.progress-line{width:48px;height:2px;background:var(--color-neutral-300);margin-bottom:var(--space-4)}.photo-step-instruction{text-align:center;margin-bottom:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-primary-50);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5}.photo-step-instruction strong{color:var(--color-primary-500)}.photo-thumbnails{display:flex;justify-content:center;gap:var(--space-3);margin-bottom:var(--space-4)}.thumbnail{display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.thumbnail img{width:64px;height:64px;object-fit:cover;border-radius:var(--radius-sm);border:2px solid var(--color-neutral-200);opacity:.7}.thumbnail.active img{border-color:var(--color-primary-500);opacity:1}.thumbnail-label{font-size:var(--font-size-xs);color:var(--color-success-500);font-weight:600}.photo-capture-footer{text-align:center;padding-top:var(--space-4);border-top:1px solid var(--color-neutral-200)}@media (min-width: 640px){.photo-capture-step{padding:var(--space-6)}.photo-capture-title{font-size:var(--font-size-2xl)}.progress-line{width:80px}.thumbnail img{width:80px;height:80px}}.coffee-scanner-feature{min-height:100vh;background:var(--color-neutral-50);padding:var(--space-4);padding-bottom:calc(var(--space-8) + 60px)}.scanner-header{text-align:center;margin-bottom:var(--space-6)}.scanner-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--space-2) 0;display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.scanner-icon{font-size:var(--font-size-3xl)}.scanner-subtitle{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0}.scanner-section{max-width:500px;margin:0 auto}.loading-section{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8) var(--space-4);text-align:center;min-height:300px}.loading-animation{margin-bottom:var(--space-6)}.coffee-cup-loader{position:relative;width:80px;height:80px}.cup{position:absolute;bottom:0;left:10px;width:60px;height:50px;background:var(--color-primary-600);border-radius:5px 5px 25px 25px}.cup:before{content:"";position:absolute;top:10px;right:-15px;width:15px;height:30px;border:4px solid var(--color-primary-600);border-left:none;border-radius:0 10px 10px 0}.steam{position:absolute;bottom:55px;left:50%;width:6px;height:20px;background:var(--color-neutral-400);border-radius:10px;opacity:0;animation:steam 1.5s ease-out infinite}.steam-2{left:calc(50% - 12px);animation-delay:.3s}.steam-3{left:calc(50% + 12px);animation-delay:.6s}@keyframes steam{0%{opacity:0;transform:translateY(0) scaleX(1)}15%{opacity:.8}50%{opacity:.5;transform:translateY(-15px) scaleX(1.2)}to{opacity:0;transform:translateY(-30px) scaleX(.8)}}.loading-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.loading-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--space-4) 0}.barcode-display{display:inline-flex;align-items:center;gap:var(--space-2);background:#f0e8e2;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md)}.barcode-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.barcode-value{font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:var(--font-weight-medium)}.error-section{display:flex;flex-direction:column;align-items:center;padding:var(--space-8) var(--space-4);text-align:center}.error-icon{font-size:48px;margin-bottom:var(--space-4)}.error-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.error-message{font-size:var(--font-size-base);color:var(--color-danger-600, #dc2626);margin:0 0 var(--space-4) 0}.error-actions{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.result-section{display:flex;flex-direction:column;gap:var(--space-4);max-width:600px;margin:0 auto}.scan-success-banner{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);background:var(--color-success-100, #d1fae5);border-radius:var(--radius-lg)}.success-icon{color:var(--color-success-600, #059669);font-weight:var(--font-weight-bold);font-size:var(--font-size-lg)}.success-text{font-weight:var(--font-weight-semibold);color:var(--color-success-700, #047857)}.scan-time{font-size:var(--font-size-sm);color:var(--color-success-600, #059669);margin-left:var(--space-2)}.story-section{background:var(--color-neutral-50);border-radius:var(--radius-lg);padding:var(--space-4);border:1px solid var(--color-neutral-200)}.story-title{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-4) 0}.story-icon{font-size:var(--font-size-xl)}.story-content{font-family:var(--font-family-serif);font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-text-secondary)}.story-content p{margin:0 0 var(--space-4) 0}.story-content p:last-child{margin-bottom:0}.action-section{padding:var(--space-4) 0;text-align:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all .2s ease;border:none;min-height:48px}.btn-primary{background:var(--color-primary-500);color:var(--color-neutral-50)}.btn-secondary{background:var(--color-neutral-200);color:var(--color-text-primary)}.btn-secondary:hover{background:var(--color-neutral-300)}.btn-large{padding:var(--space-4) var(--space-6);font-size:var(--font-size-lg);min-height:56px}.btn-icon{font-size:var(--font-size-lg)}@media (min-width: 640px){.coffee-scanner-feature{padding:var(--space-6)}.scanner-title{font-size:var(--font-size-3xl)}.result-section{max-width:700px}}@media (min-width: 1024px){.coffee-scanner-feature{max-width:var(--container-xl);margin:0 auto;padding-bottom:var(--space-8)}}.brewing-guide-card{background:var(--color-neutral-50);border-radius:var(--radius-lg);padding:var(--space-4);border:1px solid var(--color-neutral-200)}.brewing-header{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.brewing-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--space-2);margin:0}.brewing-icon{font-size:var(--font-size-xl)}.recommended-badge{font-size:var(--font-size-sm);color:var(--color-primary-600);background:var(--color-primary-50);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);display:inline-block;width:fit-content}.method-selector{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-neutral-200)}.method-button{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--color-neutral-100);border:2px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease;min-width:70px}.method-button:hover{background:var(--color-neutral-200)}.method-button.active{background:var(--color-primary-50);border-color:var(--color-primary-500)}.method-icon{font-size:var(--font-size-xl)}.method-name{font-size:var(--font-size-xs);color:var(--color-text-secondary);white-space:nowrap}.method-button.active .method-name{color:var(--color-primary-700);font-weight:var(--font-weight-medium)}.parameters-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);margin-bottom:var(--space-4)}.parameter-item{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);background:var(--color-neutral-100);border-radius:var(--radius-md)}.parameter-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.parameter-value{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.brewing-tips{margin-bottom:var(--space-4)}.tips-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin:0 0 var(--space-2) 0}.tips-list{margin:0;padding-left:var(--space-4)}.tip-item{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-1);line-height:var(--line-height-relaxed)}.pairing-notes{display:flex;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-3);background:var(--color-primary-50);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.pairing-label{color:var(--color-text-muted)}.pairing-text{color:var(--color-primary-700);font-weight:var(--font-weight-medium)}@media (min-width: 640px){.brewing-header{flex-direction:row;justify-content:space-between;align-items:center}.parameters-grid{grid-template-columns:repeat(4,1fr)}.method-button{flex-direction:row;min-width:auto}}.scanner-page{min-height:100vh;background:var(--color-neutral-50)}.flavor-wheel-container{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--color-neutral-50);border-radius:var(--radius-lg);border:var(--border-width-thin) solid var(--color-neutral-200)}.flavor-wheel-title{font-family:var(--font-family-serif);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0;text-align:center}.flavor-wheel-wrapper{position:relative;width:100%;max-width:320px}.flavor-wheel-svg{width:100%;height:auto;display:block}.flavor-wheel-background{fill:var(--color-primary-50);stroke:var(--color-neutral-300);stroke-width:1}.flavor-wheel-grid-circle{fill:none;stroke:var(--color-neutral-200);stroke-width:.5;stroke-dasharray:4 4}.flavor-wheel-spoke{stroke:var(--color-neutral-300);stroke-width:1;transition:stroke .2s ease,stroke-width .2s ease}.flavor-wheel-spoke.active{stroke:var(--color-primary-500);stroke-width:2}.flavor-wheel-polygon{fill-opacity:.3;stroke:var(--color-primary-500);stroke-width:2;stroke-linejoin:round;transition:fill-opacity .2s ease}.flavor-wheel-container:hover .flavor-wheel-polygon{fill-opacity:.4}.flavor-wheel-point-hitarea{fill:transparent;cursor:pointer}.flavor-wheel-point{stroke:#fff;stroke-width:2;transition:r .2s ease,stroke-width .2s ease;pointer-events:none}.flavor-wheel-point.active{stroke-width:3}.flavor-wheel-label{font-family:var(--font-family-sans);font-size:var(--font-size-xs);fill:var(--color-text-muted);transition:fill .2s ease,font-weight .2s ease;pointer-events:none}.flavor-wheel-label.active{font-weight:var(--font-weight-semibold)}.flavor-wheel-tooltip{position:absolute;transform:translate(-50%);background:var(--color-neutral-800);color:#fff;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-xs);white-space:nowrap;z-index:100;pointer-events:none;box-shadow:var(--shadow-lg);animation:tooltip-fade-in .15s ease-out}.flavor-wheel-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--color-neutral-800)}@keyframes tooltip-fade-in{0%{opacity:0;transform:translate(-50%) translateY(4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.tooltip-path{font-weight:var(--font-weight-medium);margin-bottom:var(--space-1);color:var(--color-primary-100)}.tooltip-intensity{color:var(--color-neutral-300)}.tooltip-intensity strong{color:#fff}.flavor-wheel-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3);padding-top:var(--space-2);border-top:var(--border-width-thin) solid var(--color-neutral-200);width:100%}.legend-item{display:flex;align-items:center;gap:var(--space-1)}.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.legend-label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.flavor-wheel-empty{min-height:200px;justify-content:center}.flavor-wheel-placeholder{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);color:var(--color-text-muted)}.flavor-wheel-placeholder-icon{font-size:var(--font-size-4xl);opacity:.5}.flavor-wheel-placeholder p{margin:0;font-size:var(--font-size-sm)}@media (min-width: 640px){.flavor-wheel-container{padding:var(--space-6)}.flavor-wheel-wrapper{max-width:400px}.flavor-wheel-title{font-size:var(--font-size-xl)}.flavor-wheel-label,.legend-label{font-size:var(--font-size-sm)}}@media (min-width: 1024px){.flavor-wheel-wrapper{max-width:480px}}.quick-scan-card{background:var(--color-neutral-50);border-radius:var(--radius-xl);padding:var(--space-3);max-width:100%;width:100%;margin:0 auto;box-shadow:var(--shadow-lg);animation:cardSlideUp .3s ease-out;box-sizing:border-box}@keyframes cardSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.quick-scan-actions-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.quick-action-group{display:flex;gap:var(--space-2)}.quick-action-btn{min-width:40px;min-height:40px;padding:var(--space-2);border-radius:var(--radius-lg);border:1px solid var(--color-neutral-200);background:#fff;font-size:1rem;cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}.quick-action-btn:hover{background:var(--color-neutral-100)}.quick-action-btn:active{transform:scale(.95)}.back-btn{padding:var(--space-2) var(--space-3);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.quick-action-btn.icon-btn.active{background:var(--color-danger-50);border-color:var(--color-danger-200)}.quick-scan-header{display:flex;gap:var(--space-3);margin-bottom:var(--space-3);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-lg);transition:background var(--transition-fast)}.quick-scan-header:hover{background:var(--color-neutral-100)}.quick-scan-image{width:80px;height:80px;object-fit:cover;border-radius:var(--radius-lg);background:var(--color-neutral-200);flex-shrink:0}.quick-scan-title{flex:1;min-width:0}.quick-scan-name{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--space-1) 0;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.quick-scan-brand{font-size:var(--font-size-xs);color:var(--color-text-muted);margin:0 0 var(--space-2) 0}.quick-scan-badges{display:flex;flex-wrap:wrap;gap:var(--space-1)}.quick-badge{display:inline-flex;align-items:center;gap:2px;padding:2px var(--space-2);border-radius:var(--radius-full);font-size:.7rem;font-weight:var(--font-weight-medium);white-space:nowrap}.origin-badge{background:var(--color-primary-100);color:var(--color-primary-800)}.roast-badge{color:#fff}.flavor-match-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-3);margin-bottom:var(--space-3);border:1px solid var(--color-neutral-200);cursor:pointer;transition:background var(--transition-fast)}.flavor-match-section:hover{background:var(--color-neutral-50)}.flavor-match-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.flavor-match-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.flavor-match-score{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-primary-700)}.flavor-match-bar{height:10px;background:var(--color-neutral-200);border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--space-2)}.flavor-match-fill{height:100%;background:linear-gradient(90deg,var(--color-primary-400),var(--color-primary-600));border-radius:var(--radius-full);transition:width .5s ease-out}.flavor-match-text{display:flex;align-items:center;gap:var(--space-2)}.match-emoji{font-size:1.25rem}.match-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.quick-scan-flavors{margin-bottom:var(--space-3);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-lg);transition:background var(--transition-fast)}.quick-scan-flavors:hover{background:var(--color-neutral-100)}.flavors-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.flavor-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.flavor-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.tap-hint{text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0 0 var(--space-3) 0;cursor:pointer}.tap-hint:hover{color:var(--color-primary-600)}.quick-scan-actions{display:flex;gap:var(--space-2)}.quick-action-primary{flex:1;padding:var(--space-3);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);min-height:48px;display:flex;align-items:center;justify-content:center;gap:var(--space-2);-webkit-tap-highlight-color:transparent;background:var(--color-neutral-100);color:var(--color-text-primary);border:1px solid var(--color-neutral-200)}.quick-action-primary:hover{background:var(--color-neutral-200)}.quick-action-primary:active{background:var(--color-neutral-300)}@media (max-width: 380px){.quick-scan-card{padding:var(--space-3)}.quick-scan-header{gap:var(--space-2)}.quick-scan-image{width:64px;height:64px}.quick-scan-title{font-size:var(--font-size-sm)}.quick-badge{font-size:.65rem;padding:2px 4px}}.share-card-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.share-card-modal{background:#fff;border-radius:var(--radius-xl);max-width:400px;width:100%;overflow:hidden;position:relative;box-shadow:var(--shadow-xl)}.close-btn{position:absolute;top:var(--space-3);right:var(--space-3);width:36px;height:36px;border-radius:var(--radius-full);background:#0000001a;border:none;color:var(--color-text-secondary);font-size:1.25rem;cursor:pointer;z-index:10;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast)}.close-btn:hover{background:#0003}.share-card-preview{aspect-ratio:1 / 1.2;padding:var(--space-5);display:flex;flex-direction:column}.share-card-header{display:flex;justify-content:center;margin-bottom:var(--space-3)}.share-brand{font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary-700);background:#fff;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);box-shadow:var(--shadow-sm)}.share-card-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.share-card-image{width:120px;height:120px;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-lg);margin-bottom:var(--space-4);background:#fff}.share-card-image img{width:100%;height:100%;object-fit:cover}.share-card-image-placeholder{width:120px;height:120px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-size:3rem;margin-bottom:var(--space-4)}.share-card-info h2{font-size:var(--font-size-xl);font-weight:700;margin:0 0 var(--space-1);line-height:1.2}.share-card-brand{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0 0 var(--space-3)}.share-card-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-3)}.share-tag{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:500}.share-card-rating{display:flex;gap:var(--space-1);font-size:1.5rem}.rating-star{color:var(--color-neutral-300)}.rating-star.filled{color:var(--color-warning-500)}.share-card-brew-details{margin-top:var(--space-2)}.brew-detail{font-size:var(--font-size-sm);font-family:var(--font-family-mono);background:#fff;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.share-card-footer{display:flex;justify-content:center;padding-top:var(--space-3)}.share-url{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500}.share-card-actions{display:flex;gap:var(--space-2);padding:var(--space-4);border-top:1px solid var(--color-neutral-200)}.share-action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.share-action-btn.primary{background:var(--color-primary-500);color:#fff;border:none}.share-action-btn.primary:hover{background:var(--color-primary-600)}.share-action-btn.primary:disabled{opacity:.6;cursor:not-allowed}.share-action-btn.secondary{background:var(--color-neutral-100);color:var(--color-text-primary);border:1px solid var(--color-neutral-300)}.share-action-btn.secondary:hover{background:var(--color-neutral-200)}@media (max-width: 480px){.share-card-modal{max-width:100%;border-radius:var(--radius-lg)}.share-card-preview{aspect-ratio:1 / 1.1;padding:var(--space-4)}.share-card-image,.share-card-image-placeholder{width:100px;height:100px}.share-card-info h2{font-size:var(--font-size-lg)}}.coffee-product-page{min-height:100vh;background:var(--color-neutral-50);padding-bottom:var(--space-8);width:100%;max-width:100vw;overflow-x:hidden}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:var(--space-8);text-align:center}.loading-spinner{width:48px;height:48px;border:4px solid var(--color-primary-100);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--space-4)}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:var(--space-8);text-align:center}.error-icon{font-size:4rem;margin-bottom:var(--space-4)}.error-container h2{color:var(--color-text-primary);margin-bottom:var(--space-2)}.error-container p{color:var(--color-text-muted);margin-bottom:var(--space-6)}.enrichment-banner{margin:var(--space-4);padding:var(--space-4);background:linear-gradient(135deg,var(--color-primary-50),var(--color-info-50, #eff6ff));border:1px solid var(--color-primary-200);border-radius:var(--radius-lg);text-align:center}.enrichment-message{display:flex;align-items:center;justify-content:center;gap:var(--space-2);color:var(--color-text-secondary);margin-bottom:var(--space-3);font-size:var(--font-size-sm)}.enrichment-icon{font-size:var(--font-size-lg)}.enrichment-button{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;min-height:44px;transition:background-color .2s ease,transform .1s ease}.enrichment-button:hover{background:var(--color-primary-600)}.enrichment-button:active{transform:scale(.98)}.enrichment-button:disabled{opacity:.6;cursor:not-allowed}.enrichment-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-3);color:var(--color-primary-700);font-size:var(--font-size-sm);animation:pulse 2s ease-in-out infinite}.enrichment-spinner{width:20px;height:20px;border:2px solid var(--color-primary-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite}.enrichment-error{color:var(--color-danger-600, #dc2626);font-size:var(--font-size-xs);margin-top:var(--space-2)}.regeneration-banner{margin:var(--space-4);padding:var(--space-4);background:linear-gradient(135deg,var(--color-primary-50),var(--color-info-50, #eff6ff));border:1px solid var(--color-primary-200);border-radius:var(--radius-lg);text-align:center}.regeneration-banner.success{background:linear-gradient(135deg,var(--color-success-50, #ecfdf5),var(--color-success-100, #d1fae5));border-color:var(--color-success-300, #6ee7b7)}.regeneration-banner.error{background:linear-gradient(135deg,var(--color-danger-50, #fef2f2),var(--color-danger-100, #fee2e2));border-color:var(--color-danger-300, #fca5a5)}.regeneration-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-3);color:var(--color-primary-700);font-size:var(--font-size-sm);animation:pulse 2s ease-in-out infinite}.regeneration-spinner{width:20px;height:20px;border:2px solid var(--color-primary-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite}.regeneration-success{color:var(--color-success-700, #15803d);font-size:var(--font-size-sm);font-weight:500}.regeneration-error{color:var(--color-danger-700, #b91c1c);font-size:var(--font-size-sm);font-weight:500}.error-actions{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:280px}.btn-primary,.btn-secondary{padding:var(--space-3) var(--space-6);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:500;cursor:pointer;min-height:48px;border:none;transition:all .2s}.btn-primary{background:var(--color-primary-500);color:#fff}.btn-secondary{background:var(--color-neutral-100);color:var(--color-text-primary)}.product-hero{position:relative;padding:var(--space-6) var(--space-4);padding-top:var(--space-14, 3.5rem);background:#fff;text-align:center}.back-button{position:absolute;top:var(--space-4);left:var(--space-4);width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#fff;border:none;border-radius:var(--radius-full);font-size:var(--font-size-lg);color:var(--color-text-primary);cursor:pointer;box-shadow:0 2px 8px #0000001a;transition:all .2s}.back-button:hover{background:var(--color-neutral-100);transform:scale(1.05)}.hero-actions{position:absolute;top:var(--space-4);right:var(--space-4);display:flex;gap:var(--space-2)}.favorite-button,.trylist-button,.share-button,.regenerate-button{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#fff;border:none;border-radius:var(--radius-full);font-size:var(--font-size-lg);cursor:pointer;box-shadow:0 2px 8px #0000001a;transition:all .2s}.favorite-button:hover,.trylist-button:hover,.share-button:hover,.regenerate-button:hover{background:var(--color-neutral-100);transform:scale(1.05)}.favorite-button.favorited{background:var(--color-primary-50)}.trylist-button.in-trylist{background:var(--color-success-50, #ecfdf5);color:var(--color-success-600, #059669)}.regenerate-button{background:linear-gradient(135deg,var(--color-info-50, #eff6ff),var(--color-primary-50));border:1px solid var(--color-primary-200)}.regenerate-button:hover{background:linear-gradient(135deg,var(--color-info-100, #dbeafe),var(--color-primary-100));border-color:var(--color-primary-300)}.regenerate-button.regenerating{animation:pulse 1s ease-in-out infinite;cursor:wait}.regenerate-button:disabled{cursor:not-allowed;opacity:.7}.favorite-button:disabled{cursor:not-allowed;opacity:.7}.product-image-container{display:flex;justify-content:center;margin-bottom:var(--space-4)}.product-hero-image{width:160px;height:160px;object-fit:contain;border-radius:var(--radius-xl);background:#fff;box-shadow:0 4px 16px #0000001a}.product-hero-content{padding:0 var(--space-2)}.product-name{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text-primary);margin-bottom:var(--space-1);line-height:1.3}.product-brand{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.product-barcode{margin:0}.product-barcode code{font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text-muted);background:#0000000d;padding:var(--space-1) var(--space-2);border-radius:var(--radius-md)}.main-info-section{padding:var(--space-4);background:#fff;margin-bottom:var(--space-2)}.main-info-section h2{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-4);font-weight:600}.main-info-grid{display:flex;flex-direction:column;gap:var(--space-2)}.main-info-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);background:var(--color-neutral-50);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;text-align:left;transition:all .2s;min-height:56px}.main-info-item:hover{background:var(--color-primary-50);border-color:var(--color-primary-200)}.main-info-item:active{transform:scale(.98)}.info-icon{font-size:var(--font-size-xl);flex-shrink:0}.info-label{font-size:var(--font-size-xs);color:var(--color-text-muted);display:block;flex-shrink:0;min-width:85px}.info-value{font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:500;flex:1;margin-left:var(--space-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-value--wrap{white-space:normal;line-height:1.4;-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical}.flavor-profile-section{padding:var(--space-4);background:#fff;margin-bottom:var(--space-2);width:100%;overflow-x:hidden}.flavor-profile-section h2{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-4);font-weight:600;text-align:center}.flavor-wheel-wrapper{display:flex;flex-direction:column;align-items:center;width:100%;max-width:400px;margin:0 auto}.ml-status{padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);font-size:var(--font-size-sm);margin-bottom:var(--space-3);text-align:center}.ml-status.loading{background:var(--color-primary-50);color:var(--color-text-primary);border:1px solid var(--color-primary-100)}.ml-status.warning{background:var(--color-warning-50);color:var(--color-warning-700)}.ml-status.success{background:var(--color-success-50);color:var(--color-success-700)}.quality-grade-badge{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-lg);margin-bottom:var(--space-4);font-size:var(--font-size-sm);text-align:center}.quality-grade-badge .quality-label{font-weight:600}.quality-grade-badge .quality-sca{opacity:.8;font-size:var(--font-size-xs)}.quality-grade-badge .quality-note{font-size:var(--font-size-xs);opacity:.7;cursor:help}.quality-grade-badge.quality-specialty{background:linear-gradient(135deg,var(--color-premium-400) 0%,var(--color-premium-600) 100%);color:#fff;border:1px solid var(--color-premium-600)}.quality-grade-badge.quality-premium{background:linear-gradient(135deg,var(--color-neutral-300) 0%,var(--color-neutral-400) 100%);color:var(--color-text-primary);border:1px solid var(--color-neutral-400)}.quality-grade-badge.quality-commercial{background:var(--color-neutral-100);color:var(--color-text-primary);border:1px solid var(--color-neutral-300)}.quality-grade-badge.quality-below-standard{background:var(--color-warning-50);color:var(--color-warning-800);border:1px solid var(--color-warning-300)}.quality-grade-badge.quality-instant{background:var(--color-neutral-200);color:var(--color-text-muted);border:1px solid var(--color-neutral-400)}.flavor-wheel-container{display:flex;justify-content:center;align-items:center;width:100%;max-width:100%;margin:0 auto var(--space-4);padding:var(--space-2);overflow-x:hidden;overflow-y:visible}.flavor-wheel-container>div{display:flex;justify-content:center;max-width:100%}.flavor-wheel-container svg{max-width:100%;height:auto;display:block;margin:0 auto}.no-flavor-data{padding:var(--space-6);text-align:center;color:var(--color-text-muted);font-style:italic}.flavor-notes-section{width:100%;padding:var(--space-4);background:var(--color-neutral-50);border-radius:var(--radius-lg);margin:var(--space-4) 0}.flavor-notes-section h3{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-3);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.flavor-notes-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.flavor-note-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500;background:var(--color-neutral-100);color:var(--color-text-primary);cursor:default;transition:transform .15s ease,box-shadow .15s ease}.flavor-note-chip:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.flavor-note-chip .flavor-icon{font-size:var(--font-size-base)}.flavor-note-chip .flavor-name{white-space:nowrap}.flavor-note-chip.category-fruity{background:linear-gradient(135deg,#ffebe9,#ffd9d4);color:#b91c1c}.flavor-note-chip.category-floral{background:linear-gradient(135deg,#fce7f3,#f9d0e8);color:#a21caf}.flavor-note-chip.category-sweet{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e}.flavor-note-chip.category-nutty_cocoa{background:linear-gradient(135deg,#f5e6d3,#e6d4be);color:#78350f}.flavor-note-chip.category-spices{background:linear-gradient(135deg,bisque,#ffd19c);color:#9a3412}.flavor-note-chip.category-roasted{background:linear-gradient(135deg,#e5e0dc,#d1c7bf);color:#44403c}.flavor-note-chip.category-green_vegetative{background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#166534}.flavor-note-chip.category-sour_fermented{background:linear-gradient(135deg,#fef9c3,#fef08a);color:#854d0e}.flavor-note-chip.category-other{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);color:#374151}.flavor-notes-references{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-neutral-200)}.flavor-notes-references .references-label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500;margin-bottom:var(--space-1)}.flavor-notes-references .references-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-style:italic}.tasting-notes-section{padding:var(--space-4);background:var(--color-neutral-50);border-radius:var(--radius-lg);margin-bottom:var(--space-4)}.tasting-notes-section h2{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-2)}.tasting-notes-intro{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-4)}.tasting-notes-grid{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.tasting-note-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500;background:var(--color-neutral-100);color:var(--color-text-primary);border:none;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.tasting-note-chip:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.tasting-note-chip:active{transform:translateY(0)}.tasting-note-chip .tasting-note-icon{font-size:var(--font-size-base)}.tasting-note-chip .tasting-note-name{white-space:nowrap}.tasting-note-chip.category-fruity{background:linear-gradient(135deg,#ffebe9,#ffd9d4);color:#b91c1c}.tasting-note-chip.category-floral{background:linear-gradient(135deg,#fce7f3,#f9d0e8);color:#a21caf}.tasting-note-chip.category-sweet{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e}.tasting-note-chip.category-nutty_cocoa{background:linear-gradient(135deg,#f5e6d3,#e6d4be);color:#78350f}.tasting-note-chip.category-spices{background:linear-gradient(135deg,bisque,#ffd19c);color:#9a3412}.tasting-note-chip.category-roasted{background:linear-gradient(135deg,#e5e0dc,#d1c7bf);color:#44403c}.tasting-note-chip.category-green_vegetative{background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#166534}.tasting-note-chip.category-sour_fermented{background:linear-gradient(135deg,#fef9c3,#fef08a);color:#854d0e}.tasting-note-chip.category-other{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);color:#374151}.tasting-notes-references{padding:var(--space-3);background:var(--color-neutral-100);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.tasting-notes-section .references-label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-1)}.tasting-notes-section .references-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-style:italic;line-height:1.5}.learn-more-link{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:transparent;border:1px solid var(--color-primary-500);color:var(--color-primary-500);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all .2s ease}.learn-more-link:hover{background:var(--color-primary-500);color:#fff}.tasting-notes-educational{padding:var(--space-2)}.tasting-notes-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--space-4);padding:var(--space-3);background:var(--color-neutral-100);border-radius:var(--radius-md);border-left:3px solid var(--color-primary-500)}.tasting-note-detail{padding:var(--space-4);background:var(--color-neutral-50);border-radius:var(--radius-lg);margin-bottom:var(--space-3);border:1px solid var(--color-neutral-200)}.tasting-note-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap}.tasting-note-header .tasting-note-icon{font-size:var(--font-size-xl)}.tasting-note-header h4{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0;flex:1}.tasting-note-category{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:500;text-transform:capitalize}.tasting-note-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--space-3)}.tasting-note-facts{display:flex;flex-direction:column;gap:var(--space-2)}.tasting-fact{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2);background:#fff;border-radius:var(--radius-sm)}.tasting-fact .fact-label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted)}.tasting-fact .fact-value{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.4}.tasting-notes-guide{margin-top:var(--space-5);padding:var(--space-4);background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-neutral-50) 100%);border-radius:var(--radius-lg);border:1px solid var(--color-primary-100)}.tasting-notes-guide h4{font-size:var(--font-size-base);color:var(--color-text-primary);margin-bottom:var(--space-4);text-align:center}.guide-content{display:flex;flex-direction:column;gap:var(--space-4)}.guide-item{display:flex;gap:var(--space-3);align-items:flex-start}.guide-icon{font-size:var(--font-size-2xl);flex-shrink:0}.guide-text{flex:1}.guide-text strong{display:block;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-1)}.guide-text p{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5;margin:0}.cupping-scores{width:100%;padding:var(--space-4);background:var(--color-neutral-50);border-radius:var(--radius-lg)}.cupping-scores h3{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-3);font-weight:600}.scores-grid{display:flex;flex-direction:column;gap:var(--space-2)}.score-item{display:flex;align-items:center;gap:var(--space-3)}.score-item .score-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);width:90px;flex-shrink:0}.score-item .score-track{flex:1;height:8px;background:var(--color-neutral-200);border-radius:var(--radius-full);overflow:hidden}.score-item .score-fill{height:100%;background:linear-gradient(90deg,var(--color-primary-400),var(--color-primary-600));border-radius:var(--radius-full);transition:width .5s ease}.score-item .score-value{font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:600;width:36px;text-align:right}.total-score{display:flex;justify-content:space-between;align-items:center;padding-top:var(--space-3);margin-top:var(--space-3);border-top:1px solid var(--color-border)}.total-cup-points{display:flex;align-items:baseline;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:linear-gradient(135deg,var(--color-primary-50),var(--color-primary-100));border-radius:var(--radius-lg);margin-top:var(--space-3)}.total-cup-points .total-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:500}.total-cup-points .total-value{font-size:var(--font-size-2xl);color:var(--color-primary-700);font-weight:700}.total-cup-points .total-max{font-size:var(--font-size-sm);color:var(--color-text-muted)}.total-label{font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:600}.total-value{font-size:var(--font-size-xl);color:var(--color-primary-600);font-weight:700}.story-section{padding:var(--space-4);background:#fff;margin-bottom:var(--space-2);overflow-x:hidden;word-wrap:break-word}.story-section h2{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-4);font-weight:600}.story-content{color:var(--color-text-secondary);font-size:var(--font-size-base);line-height:1.7}.story-content h3{color:var(--color-text-primary);font-size:var(--font-size-lg);margin-bottom:var(--space-3)}.story-content p{margin-bottom:var(--space-4)}.story-content blockquote{font-style:italic;padding:var(--space-4);background:var(--color-primary-50);border-left:4px solid var(--color-primary-500);margin:var(--space-4) 0;border-radius:0 var(--radius-md) var(--radius-md) 0}.story-content .interesting-fact{display:flex;gap:var(--space-2);padding:var(--space-3);background:var(--color-info-50);border-radius:var(--radius-lg);margin:var(--space-4) 0}.bean-to-cup-story-section{padding:var(--space-4);background:#fff;margin-bottom:var(--space-2)}.story-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.story-header h2{font-size:var(--font-size-lg);color:var(--color-text-primary);font-weight:600;margin:0}.reading-time{font-size:var(--font-size-sm);color:var(--color-text-muted);background:var(--color-primary-50);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full)}.story-loading{display:flex;flex-direction:column;align-items:center;padding:var(--space-8);text-align:center}.story-loading p{color:var(--color-text-muted);margin-top:var(--space-4);font-style:italic}.story-loading .generating-hint{display:block;margin-top:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-muted);opacity:.7}.story-error{display:flex;gap:var(--space-3);padding:var(--space-4);background:var(--color-danger-50, #fef2f2);border:1px solid var(--color-danger-200, #fecaca);border-radius:var(--radius-lg);flex-direction:column;align-items:flex-start}.story-error .error-icon{font-size:var(--font-size-xl)}.story-error p{color:var(--color-danger-700, #b91c1c);margin:0}.story-error .retry-button{margin-top:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-weight:500;transition:background-color .2s}.story-error .retry-button:hover{background:var(--color-primary-600)}.discover-story-cta{padding:var(--space-6);background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-primary-100) 100%);border:2px dashed var(--color-primary-300);border-radius:var(--radius-xl);text-align:center}.discover-story-content{display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.discover-story-content .discover-icon{font-size:3rem;margin-bottom:var(--space-2)}.discover-story-content h3{font-family:var(--font-family-serif);font-size:var(--font-size-xl);color:var(--color-primary-800);margin:0;font-weight:600}.discover-story-content p{color:var(--color-text-secondary);line-height:1.6;margin:0;max-width:400px}.discover-story-button{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-600) 100%);color:#fff;border:none;border-radius:var(--radius-full);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 14px #8b5a2b4d;margin-top:var(--space-2)}.discover-story-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #8b5a2b66}.discover-story-button:disabled{opacity:.6;cursor:not-allowed}.discover-story-button .button-icon{font-size:1.1em}.discover-story-cta .waiting-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);font-style:italic;margin-top:var(--space-1)}.bean-to-cup-content{margin-top:var(--space-4)}.story-title{font-family:var(--font-family-serif);font-size:var(--font-size-xl);color:var(--color-primary-700);text-align:center;margin-bottom:var(--space-4);font-weight:600}.story-introduction{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.8;margin-bottom:var(--space-6);font-style:italic;text-align:center;padding:0 var(--space-4)}.story-stages{position:relative;margin:var(--space-6) 0}.story-stage{display:flex;gap:var(--space-4);margin-bottom:var(--space-6);position:relative}.stage-marker{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:48px}.stage-number{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--color-primary-500);color:#fff;border-radius:50%;font-weight:700;font-size:var(--font-size-sm);margin-bottom:var(--space-2)}.stage-icon{font-size:var(--font-size-xl)}.story-stage:not(:last-child) .stage-marker:after{content:"";position:absolute;top:48px;left:23px;width:2px;height:calc(100% - 32px);background:linear-gradient(to bottom,var(--color-primary-300),var(--color-primary-100))}.stage-content{flex:1;min-width:0}.stage-title{font-size:var(--font-size-lg);color:var(--color-text-primary);font-weight:600;margin-bottom:var(--space-3)}.stage-photo{margin-bottom:var(--space-3);border-radius:var(--radius-lg);overflow:hidden}.stage-photo img{width:100%;height:auto;max-height:200px;object-fit:cover;border-radius:var(--radius-lg)}.stage-photo-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:120px;background:var(--color-neutral-100);border:2px dashed var(--color-neutral-300);border-radius:var(--radius-lg);margin-bottom:var(--space-3)}.placeholder-icon{font-size:var(--font-size-2xl);opacity:.5}.placeholder-text{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--space-2)}.stage-text{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.8;margin:0}.story-conclusion{margin-top:var(--space-6);padding:var(--space-4);background:var(--color-primary-50);border-radius:var(--radius-lg)}.story-conclusion p{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.8;margin:0}.emotional-quote{margin-top:var(--space-6);padding:var(--space-6);background:linear-gradient(135deg,var(--color-primary-50),var(--color-primary-100));border-radius:var(--radius-xl);text-align:center;font-family:var(--font-family-serif);font-size:var(--font-size-lg);font-style:italic;color:var(--color-primary-800);line-height:1.6;position:relative}.quote-mark{font-size:var(--font-size-2xl);color:var(--color-primary-400);font-weight:700}.story-upgrade-prompt{padding:var(--space-4);background:#fff;margin-bottom:var(--space-2)}.upgrade-content{text-align:center;padding:var(--space-6);background:linear-gradient(135deg,var(--color-primary-50),var(--color-neutral-50));border:2px dashed var(--color-primary-200);border-radius:var(--radius-xl)}.upgrade-icon{font-size:3rem;display:block;margin-bottom:var(--space-3)}.upgrade-content h3{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-2)}.upgrade-content p{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-4);line-height:1.6}.upgrade-button{background:linear-gradient(135deg,var(--color-primary-500),var(--color-primary-600));color:#fff;border:none;padding:var(--space-3) var(--space-6);border-radius:var(--radius-lg);font-weight:600;font-size:var(--font-size-base);cursor:pointer;min-height:48px;transition:transform .2s ease,box-shadow .2s ease;box-shadow:0 4px 12px #8b5a2b4d}.upgrade-button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #8b5a2b66}.upgrade-button:active{transform:translateY(0)}.entity-sections{padding:var(--space-4);background:#fff;margin-bottom:var(--space-2);overflow-x:hidden}.entity-sections h2{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-4);font-weight:600}.collapsible-section{margin-bottom:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-neutral-50)}.collapsible-section.expanded{border-color:var(--color-primary-200);background:#fff}.collapsible-header{display:flex;align-items:center;width:100%;padding:var(--space-4);background:transparent;border:none;cursor:pointer;text-align:left;min-height:56px;transition:background .2s}.collapsible-header:hover{background:#00000005}.collapsible-icon{font-size:var(--font-size-lg);margin-right:var(--space-3);flex-shrink:0}.collapsible-title{flex:1;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.collapsible-arrow{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-left:var(--space-2)}.collapsible-content{padding:0 var(--space-4) var(--space-4);animation:slideDown .2s ease;word-wrap:break-word;overflow-wrap:break-word}.entity-detail{padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-lg)}.entity-detail+.entity-detail{margin-top:var(--space-3)}.entity-detail h4{font-size:var(--font-size-base);color:var(--color-text-primary);font-weight:600;margin-bottom:var(--space-2)}.entity-detail>p{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--space-3)}.entity-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2);margin-bottom:var(--space-3)}.fact-item{display:flex;flex-direction:column;gap:var(--space-1)}.fact-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.fact-value{font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:500}.fact-link{font-size:var(--font-size-sm);color:var(--color-primary-500);text-decoration:none;word-break:break-all}.fact-link:hover{text-decoration:underline}.flavor-notes{padding:var(--space-3);background:var(--color-primary-50);border-radius:var(--radius-md)}.notes-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-1);text-transform:uppercase;letter-spacing:.5px}.notes-value{font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:1.5}.entity-fallback{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-style:italic}.entities-loading{padding:var(--space-4);text-align:center;color:var(--color-text-muted)}.product-footer{padding:var(--space-4);padding-bottom:var(--space-8);text-align:center}.scan-another-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4) var(--space-6);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-full);font-size:var(--font-size-base);font-weight:600;cursor:pointer;min-height:52px;transition:all .2s;box-shadow:0 4px 16px #8b5a2b4d}.scan-another-btn:hover{background:var(--color-primary-600);transform:translateY(-2px);box-shadow:0 6px 20px #8b5a2b66}.scan-another-btn:active{transform:translateY(0)}@media (min-width: 640px){.coffee-product-page{max-width:600px;margin:0 auto}.product-hero-image{width:200px;height:200px}.product-name{font-size:var(--font-size-2xl)}.main-info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.error-actions{flex-direction:row;justify-content:center}.flavor-notes-section{padding:var(--space-5)}.flavor-notes-grid{gap:var(--space-3)}.flavor-note-chip{padding:var(--space-2) var(--space-4)}}.story-upgrade-section{padding:var(--space-4);background:#fff;margin-bottom:var(--space-2)}.story-upgrade-section h2{font-size:var(--font-size-lg);color:var(--color-text-primary);font-weight:600;margin:0 0 var(--space-4) 0}@media (min-width: 1024px){.coffee-product-page{max-width:800px}.main-info-grid{grid-template-columns:repeat(3,1fr)}.entity-facts{grid-template-columns:repeat(4,1fr)}.flavor-wheel-container{max-width:400px}}.equipment-multiselect{margin-bottom:var(--space-4)}.multiselect-label{display:flex;align-items:center;gap:var(--space-2);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-2);font-size:var(--font-size-sm)}.label-icon{font-size:var(--font-size-lg)}.selected-count{font-weight:400;color:var(--color-text-muted);font-size:var(--font-size-xs)}.multiselect-trigger{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:var(--space-2) var(--space-3);background:var(--color-neutral-50);border:2px solid var(--color-neutral-200);border-radius:var(--radius-md);cursor:pointer;transition:border-color .2s,box-shadow .2s}.multiselect-trigger:hover{border-color:var(--color-primary-400)}.multiselect-trigger:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px #8b5a2b1a}.multiselect-trigger.open{border-color:var(--color-primary-500);border-bottom-left-radius:0;border-bottom-right-radius:0}.selected-items{display:flex;flex-wrap:wrap;gap:var(--space-1);flex:1}.placeholder{color:var(--color-text-muted)}.selected-tag{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:var(--color-primary-100);color:var(--color-primary-800);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:transparent;color:var(--color-text-muted);border-radius:50%;cursor:pointer;font-size:12px;line-height:1;flex-shrink:0;opacity:.7}.tag-remove:hover{background:transparent;color:var(--color-danger-600);opacity:1}.more-count{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);background:var(--color-neutral-200);color:var(--color-text-secondary);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:500}.trigger-actions{display:flex;align-items:center;gap:var(--space-2);margin-left:var(--space-2)}.clear-all{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;background:transparent;color:var(--color-text-muted);border-radius:50%;cursor:pointer;font-size:14px;opacity:.7}.clear-all:hover{background:transparent;color:var(--color-danger-600);opacity:1}.dropdown-arrow{font-size:10px;color:var(--color-text-muted);transition:transform .2s}.dropdown-arrow.open{transform:rotate(180deg)}.multiselect-dropdown{position:absolute;left:0;right:0;background:#fff;border:2px solid var(--color-primary-500);border-top:none;border-bottom-left-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md);z-index:100;box-shadow:var(--shadow-lg);max-height:350px;display:flex;flex-direction:column}.equipment-multiselect{position:relative}.search-container{position:relative;padding:var(--space-2);border-bottom:1px solid var(--color-neutral-200)}.search-input{width:100%;padding:var(--space-2) var(--space-3);padding-right:var(--space-8);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-neutral-50)}.search-input:focus{outline:none;border-color:var(--color-primary-400)}.search-clear{position:absolute;right:var(--space-4);top:50%;transform:translateY(-50%);width:20px;height:20px;padding:0;border:none;background:transparent;color:var(--color-text-muted);border-radius:50%;cursor:pointer;font-size:12px}.search-clear:hover{background:transparent;color:var(--color-text-primary)}.options-list{flex:1;overflow-y:auto;max-height:250px}.option-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer;transition:background-color .15s}.option-item:hover{background:var(--color-neutral-100)}.option-item.selected{background:var(--color-primary-50)}.option-item.selected:hover{background:var(--color-primary-100)}.checkbox{font-size:var(--font-size-lg);color:var(--color-primary-500)}.option-item:not(.selected) .checkbox{color:var(--color-neutral-400)}.option-label{font-size:var(--font-size-sm);color:var(--color-text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:var(--space-2)}.option-item.add-custom{background:var(--color-success-50);border-bottom:1px solid var(--color-neutral-200)}.option-item.add-custom:hover{background:var(--color-success-100)}.add-icon{font-size:var(--font-size-lg);color:var(--color-success-600);font-weight:700}.option-item.custom-item{background:var(--color-info-50)}.option-item.custom-item.selected{background:var(--color-primary-100)}.custom-badge{font-size:var(--font-size-xs);padding:1px 6px;background:var(--color-info-100);color:var(--color-info-700);border-radius:var(--radius-sm);margin-left:var(--space-1)}.no-results{padding:var(--space-6);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}.dropdown-footer{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-neutral-200);background:var(--color-neutral-50)}.item-count{font-size:var(--font-size-xs);color:var(--color-text-muted)}@media (max-width: 640px){.multiselect-dropdown{position:fixed;left:var(--space-4);right:var(--space-4);bottom:0;top:auto;max-height:60vh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;border:2px solid var(--color-primary-500)}.selected-tag{max-width:120px}}.statsig-gate-skeleton{min-height:100px;background:var(--color-neutral-100);border-radius:var(--radius-md);position:relative;overflow:hidden}.statsig-gate-skeleton-shimmer{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,var(--color-neutral-200) 50%,transparent 100%);animation:statsig-shimmer 1.5s infinite}@keyframes statsig-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.statsig-gate-locked{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8);text-align:center;background:var(--color-neutral-50);border-radius:var(--radius-lg);border:1px dashed var(--color-neutral-200);min-height:200px}.statsig-gate-icon{font-size:3rem;margin-bottom:var(--space-4);opacity:.6}.statsig-gate-message{color:var(--color-text-secondary);font-size:var(--font-size-base);margin-bottom:var(--space-4);max-width:300px}.statsig-gate-upgrade-btn{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background .2s ease}.statsig-gate-upgrade-btn:hover{background:var(--color-primary-600)}.statsig-gate-locked.compact{padding:var(--space-4);min-height:auto;flex-direction:row;gap:var(--space-3)}.statsig-gate-locked.compact .statsig-gate-icon{font-size:1.5rem;margin-bottom:0}.statsig-gate-locked.compact .statsig-gate-message{margin-bottom:0;flex:1;text-align:left}.feature-gated-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;padding:var(--space-6);text-align:center;color:var(--color-text-secondary)}.feature-gated-loading .loading-spinner{width:40px;height:40px;border:3px solid var(--color-neutral-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--space-4)}.feature-gated-disabled{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:var(--space-6);text-align:center;max-width:400px;margin:0 auto}.feature-gated-disabled .disabled-icon{font-size:3rem;margin-bottom:var(--space-4)}.feature-gated-disabled h2{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-3) 0}.feature-gated-disabled .disabled-message{color:var(--color-text-secondary);margin:0 0 var(--space-6) 0;line-height:1.5}.upgrade-prompt{background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-6);width:100%}.upgrade-prompt p{color:var(--color-text-secondary);margin:0 0 var(--space-4) 0}.upgrade-prompt .upgrade-button{display:inline-block;background:var(--color-primary-500);color:#fff;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);text-decoration:none;font-weight:500;transition:background-color .2s ease}.upgrade-prompt .upgrade-button:hover{background:var(--color-primary-600)}.back-home-link{color:var(--color-primary-500);text-decoration:none;font-size:var(--font-size-sm)}.back-home-link:hover{text-decoration:underline}.feature-gated-unauthorized{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:var(--space-6);text-align:center;max-width:400px;margin:0 auto}.feature-gated-unauthorized .unauthorized-icon{font-size:3rem;margin-bottom:var(--space-4)}.feature-gated-unauthorized h2{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-3) 0}.feature-gated-unauthorized .required-role{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--space-6)}.feature-gated-route__preview-wrapper{position:relative;min-height:100%}.feature-gated-route__preview-banner{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:linear-gradient(135deg,#7c3aed,#a855f7);color:#fff;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:600;box-shadow:0 2px 8px #7c3aed4d}.feature-gated-route__preview-icon{font-size:var(--font-size-base)}.feature-gated-route__preview-text{letter-spacing:.05em;text-transform:uppercase}.preview-badge{display:inline-flex;align-items:center;gap:var(--space-1);background:linear-gradient(135deg,#7c3aed1a,#a855f71a);color:#7c3aed;border:1px dashed #7c3aed40;border-radius:var(--radius-full);font-weight:600;white-space:nowrap;cursor:help}.preview-badge--small{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2)}.preview-badge--medium{font-size:var(--font-size-sm);padding:var(--space-1) var(--space-3)}.profile-page{padding:var(--space-4);max-width:800px;margin:0 auto;min-height:100vh;background:var(--color-neutral-50)}.profile-header{text-align:center;margin-bottom:var(--space-6)}.profile-header h1{font-family:var(--font-family-serif);font-size:var(--font-size-2xl);color:var(--color-text-primary);margin-bottom:var(--space-2)}.profile-subtitle{color:var(--color-text-muted);font-size:var(--font-size-sm)}.profile-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);gap:var(--space-4)}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-primary-100);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite}.profile-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);text-align:center;min-height:60vh}.profile-error-state .error-icon{font-size:3rem;margin-bottom:var(--space-4)}.profile-error-state h2{font-family:var(--font-family-serif);font-size:var(--font-size-xl);color:var(--color-text-primary);margin-bottom:var(--space-2)}.profile-error-state p{color:var(--color-text-muted);font-size:var(--font-size-base);margin-bottom:var(--space-6);max-width:400px;line-height:1.6}.profile-error-state .error-actions{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:280px}.profile-error-state .retry-btn.primary{padding:var(--space-3) var(--space-6);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-base);font-weight:600;transition:background .2s,transform .1s;min-height:48px}.profile-error-state .retry-btn.primary:hover{background:var(--color-primary-600)}.profile-error-state .retry-btn.primary:active{transform:scale(.98)}.profile-error-state .signout-btn.secondary{padding:var(--space-3) var(--space-6);background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);font-weight:500;transition:background .2s,border-color .2s;min-height:44px}.profile-error-state .signout-btn.secondary:hover{background:var(--color-neutral-100);border-color:var(--color-neutral-400)}.profile-error,.profile-success{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4);display:flex;align-items:center;gap:var(--space-2)}.profile-error{background:var(--color-danger-50, #fef2f2);color:var(--color-danger-700, #b91c1c);border:1px solid var(--color-danger-200, #fecaca);flex-wrap:wrap}.profile-error .error-actions{margin-left:auto;display:flex;gap:var(--space-2);flex-wrap:wrap}.profile-error .retry-btn{padding:var(--space-1) var(--space-3);background:var(--color-danger-600, #dc2626);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-sm);font-weight:500;transition:background .2s}.profile-error .retry-btn:hover{background:var(--color-danger-700, #b91c1c)}.profile-error .signout-btn{padding:var(--space-1) var(--space-3);background:var(--color-neutral-600, #4b5563);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-sm);font-weight:500;transition:background .2s}.profile-error .signout-btn:hover{background:var(--color-neutral-700, #374151)}.profile-success{background:var(--color-success-50, #f0fdf4);color:var(--color-success-700, #15803d);border:1px solid var(--color-success-200, #bbf7d0)}.profile-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4);box-shadow:0 1px 3px #0000001a}.section-description{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-top:calc(-1 * var(--space-2));margin-bottom:var(--space-4)}.equipment-link-card{display:block;text-decoration:none;background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-neutral-100) 100%);border:1px solid var(--color-primary-200);border-radius:var(--radius-lg);padding:var(--space-4);transition:all .2s ease}.equipment-link-card:hover{border-color:var(--color-primary-400);box-shadow:0 4px 12px #8b6f4726;transform:translateY(-1px)}.equipment-link-content{display:flex;align-items:center;gap:var(--space-4)}.equipment-link-icon{font-size:2rem;flex-shrink:0}.equipment-link-text{flex:1}.equipment-link-text h3{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-1) 0}.equipment-link-text p{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.equipment-link-arrow{font-size:var(--font-size-xl);color:var(--color-primary-500);flex-shrink:0}.profile-section h2{font-family:var(--font-family-serif);font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-neutral-200)}.form-group label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--space-1)}.form-group input,.form-group textarea{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--color-text-primary);background:#fff;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-100)}.form-group input.input-disabled{background:var(--color-neutral-100);color:var(--color-text-muted);cursor:not-allowed}.form-group input.readonly-field{background:var(--color-neutral-50);color:var(--color-text-muted);cursor:not-allowed;border-style:dashed}.field-note{font-size:var(--font-size-xs);font-weight:400;color:var(--color-text-muted)}.preference-group{margin-bottom:var(--space-5)}.preference-group h3{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-1)}.preference-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-3)}.chip-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip{padding:var(--space-2) var(--space-3);border:1px solid var(--color-neutral-300);border-radius:var(--radius-full);background:#fff;color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all .2s;min-height:36px}.chip:hover{border-color:var(--color-primary-400);background:var(--color-primary-50)}.chip.chip-selected{background:var(--color-primary-500);border-color:var(--color-primary-500);color:#fff}.chip.chip-selected:hover{background:var(--color-primary-600);border-color:var(--color-primary-600)}.profile-role-section{background:var(--color-primary-50)}.role-badge-container{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}.role-badge{display:inline-block;padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;text-transform:capitalize}.role-badge.role-admin{background:var(--color-primary-500);color:#fff}.role-badge.role-beta_tester{background:var(--color-info-500);color:#fff}.role-badge.role-user{background:var(--color-primary-300);color:var(--color-primary-900)}.role-badge.role-roaster{background:var(--color-warning-500);color:#fff}.role-badge.role-farm{background:var(--color-success-500);color:#fff}.role-description{font-size:var(--font-size-sm);color:var(--color-text-muted)}.profile-actions{padding:var(--space-4) 0;text-align:center}.btn-save{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-3) var(--space-8);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:background .2s;min-height:48px;min-width:160px}.btn-save:hover:not(:disabled){background:var(--color-primary-600)}@media (min-width: 640px){.profile-page{padding:var(--space-6)}.profile-header h1{font-size:var(--font-size-3xl)}.profile-section{padding:var(--space-6)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}}@media (min-width: 1024px){.profile-page{padding:var(--space-8)}.profile-content{display:grid;grid-template-columns:1fr;gap:var(--space-4)}}.profile-tabs{display:flex;gap:var(--space-1);margin-bottom:var(--space-4);overflow-x:auto;padding-bottom:var(--space-2);border-bottom:1px solid var(--color-neutral-200);-webkit-overflow-scrolling:touch;scrollbar-width:none}.profile-tabs::-webkit-scrollbar{display:none}.profile-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2);border:none;background:transparent;color:var(--color-text-muted);font-size:var(--font-size-xs);font-weight:500;cursor:pointer;white-space:nowrap;border-radius:var(--radius-md);transition:all .2s;min-width:60px;min-height:52px;gap:var(--space-1)}.profile-tab .tab-icon{font-size:var(--font-size-lg)}.profile-tab .tab-label{font-size:var(--font-size-2xs, 10px);line-height:1}@media (max-width: 360px){.profile-tab{min-width:48px;padding:var(--space-2)}.profile-tab .tab-label{display:none}.profile-tab .tab-icon{font-size:var(--font-size-xl)}}.profile-tab:hover{background:var(--color-primary-50);color:var(--color-text-primary)}.profile-tab.active{background:var(--color-primary-500);color:#fff}.profile-tab.locked{opacity:.8}.profile-tab.locked .tab-lock{font-size:var(--font-size-xs);margin-left:var(--space-1)}.profile-tab.locked:not(.active){color:var(--color-text-muted)}@media (min-width: 640px){.profile-tabs{gap:var(--space-2);justify-content:center}.profile-tab{flex-direction:row;padding:var(--space-2) var(--space-4);min-width:auto;font-size:var(--font-size-sm);gap:var(--space-2)}.profile-tab .tab-icon{font-size:var(--font-size-base)}.profile-tab .tab-label{font-size:var(--font-size-sm)}}.goals-section{padding:var(--space-4) 0}.goals-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.goals-header h2{margin:0;font-family:var(--font-family-serif);font-size:var(--font-size-xl);color:var(--color-text-primary)}.btn-add-goal{padding:var(--space-2) var(--space-4);border:none;background:var(--color-primary-500);color:#fff;font-size:var(--font-size-sm);font-weight:600;border-radius:var(--radius-md);cursor:pointer;transition:background .2s;min-height:44px}.btn-add-goal:hover{background:var(--color-primary-600)}.goals-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(2,1fr);width:100%;overflow:hidden}@media (min-width: 640px){.goals-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1024px){.goals-grid{grid-template-columns:repeat(4,1fr)}}.goal-card{position:relative;background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);text-align:center;border:2px solid var(--color-primary-300);transition:transform .2s;min-width:0;max-width:100%;box-sizing:border-box}.goal-card:hover{transform:translateY(-2px);box-shadow:0 2px 8px #00000026}.goal-card.goal-active{border-color:var(--color-primary-500);box-shadow:0 2px 8px #00000026}.goal-card.goal-completed{border-color:var(--color-success-500);background:var(--color-success-50, #f0fdf4);box-shadow:0 2px 8px #00000026}.goal-card.goal-expired,.goal-card.goal-abandoned{border-color:var(--color-neutral-300);color:var(--color-text-muted);opacity:.7}.btn-delete-goal-icon{position:absolute;top:8px;right:8px;width:28px;height:28px;padding:0;border:none;background:var(--color-neutral-100);color:var(--color-text-muted);font-size:16px;line-height:1;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;-webkit-tap-highlight-color:transparent;touch-action:manipulation;z-index:10;pointer-events:auto}.btn-delete-goal-icon:hover,.btn-delete-goal-icon:active{background:var(--color-danger-100, #fee2e2);color:var(--color-danger-500)}@media (hover: none){.btn-delete-goal-icon:active{background:var(--color-danger-100, #fee2e2);color:var(--color-danger-500)}}.goal-icon{font-size:2rem;display:block;margin-bottom:var(--space-2)}.goal-status{display:block;margin-bottom:var(--space-1);font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);text-transform:uppercase;font-weight:600}.goal-status.status-active{background:var(--color-info-100, #dbeafe);color:var(--color-info-700, #1d4ed8)}.goal-status.status-completed{background:var(--color-success-100, #dcfce7);color:var(--color-success-700, #15803d)}.goal-status.status-expired,.goal-status.status-abandoned{background:var(--color-neutral-200);color:var(--color-text-muted)}.goal-name{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-1);word-wrap:break-word;overflow-wrap:break-word;white-space:normal;-webkit-hyphens:auto;hyphens:auto}.goal-description{font-size:var(--font-size-xs);color:var(--color-text-muted);margin:0 0 var(--space-2);line-height:1.4;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;-webkit-hyphens:auto;hyphens:auto}.goal-progress{margin-bottom:var(--space-1)}.progress-bar{height:8px;background:var(--color-neutral-200);border-radius:var(--radius-full);overflow:hidden}.progress-fill{height:100%;background:var(--color-primary-500);border-radius:var(--radius-full);transition:width .3s ease}.goal-completed .progress-fill{background:var(--color-success-500)}.progress-text{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-2)}.goal-status{display:block;margin-bottom:var(--space-1)}.goal-meta{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-1);opacity:.8}.btn-delete-goal{position:absolute;top:6px;right:6px;width:24px;height:24px;padding:0;border:none;background:var(--color-neutral-100);color:var(--color-text-muted);font-size:12px;line-height:1;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;z-index:10}.btn-delete-goal:hover,.btn-delete-goal:active{background:var(--color-danger-100, #fee2e2);color:var(--color-danger-500)}.delete-confirm{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2);background:var(--color-danger-50, #fef2f2);border:1px solid var(--color-danger-200, #fecaca);border-radius:var(--radius-md);margin-top:var(--space-2)}.delete-confirm span{font-size:var(--font-size-xs);color:var(--color-danger-700, #b91c1c);font-weight:500}.delete-confirm-buttons{display:flex;gap:var(--space-2)}.btn-confirm-yes,.btn-confirm-no{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;border:none;min-width:60px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.btn-confirm-yes{background:var(--color-danger-500);color:#fff}.btn-confirm-yes:active{background:var(--color-danger-600, #dc2626)}.btn-confirm-no{background:var(--color-neutral-200, #e5e5e5);color:var(--color-text-primary)}.btn-confirm-no:active{background:var(--color-neutral-300, #d4d4d4)}.empty-state{text-align:center;padding:var(--space-8) var(--space-4);background:var(--color-neutral-50);border-radius:var(--radius-lg)}.empty-icon{font-size:3rem;display:block;margin-bottom:var(--space-3)}.empty-state h3{font-family:var(--font-family-serif);font-size:var(--font-size-lg);color:var(--color-text-primary);margin:0 0 var(--space-2)}.goal-type-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.goal-type-option{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);background:#fff;cursor:pointer;transition:all .2s}.goal-type-option:hover{border-color:var(--color-primary-400);background:var(--color-primary-50)}.goal-type-option.selected{border-color:var(--color-primary-500);background:var(--color-primary-100)}.goal-type-icon{font-size:var(--font-size-xl)}.goal-type-name{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center}.achievements-section h2{font-family:var(--font-family-serif);font-size:var(--font-size-xl);color:var(--color-text-primary);margin-bottom:var(--space-4)}.achievements-section h3{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-bottom:var(--space-3)}.achievements-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(2,1fr)}@media (min-width: 640px){.achievements-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1024px){.achievements-grid{grid-template-columns:repeat(4,1fr)}}.achievement-card{position:relative;padding:var(--space-4);border-radius:var(--radius-lg);text-align:center;border:2px solid;transition:transform .2s}.achievement-card:hover{transform:translateY(-2px)}.achievement-card.earned{box-shadow:0 2px 8px #00000026}.achievement-card.available{background:var(--color-neutral-100);border-color:var(--color-neutral-300);color:var(--color-text-muted);opacity:.7}.achievement-icon{font-size:2rem;display:block;margin-bottom:var(--space-2)}.achievement-card h4{font-size:var(--font-size-sm);font-weight:600;margin:0 0 var(--space-1)}.achievement-card p{font-size:var(--font-size-xs);margin:0 0 var(--space-2);line-height:1.4}.achievement-tier{display:inline-block;font-size:var(--font-size-xs);text-transform:uppercase;font-weight:600;padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);background:#ffffff4d}.achievement-date{display:block;font-size:var(--font-size-xs);margin-top:var(--space-2);opacity:.8}.export-section .profile-section{text-align:center}.export-section h2{font-family:var(--font-family-serif);color:var(--color-text-primary)}.export-info{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);margin:var(--space-6) 0;text-align:left}@media (min-width: 640px){.export-info{grid-template-columns:repeat(4,1fr)}}.export-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--color-primary-50);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.export-icon{font-size:var(--font-size-lg)}.export-actions{margin:var(--space-6) 0}.btn-export{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-8);border:none;background:var(--color-primary-500);color:#fff;font-size:var(--font-size-base);font-weight:600;border-radius:var(--radius-md);cursor:pointer;transition:background .2s;min-height:48px}.btn-export:hover:not(:disabled){background:var(--color-primary-600)}.btn-export:disabled{opacity:.7;cursor:not-allowed}.loading-spinner-small{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}.export-note{font-size:var(--font-size-sm);color:var(--color-text-muted);max-width:400px;margin:0 auto;line-height:1.5}.settings-section .profile-section{max-width:600px}.settings-section h2{font-family:var(--font-family-serif);color:var(--color-text-primary);margin-bottom:var(--space-2)}.setting-item{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-4);background:var(--color-neutral-50);border-radius:var(--radius-md);margin-bottom:var(--space-3)}.setting-info{flex:1}.setting-label{font-weight:600;color:var(--color-text-primary);display:block;margin-bottom:var(--space-1)}.setting-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0;line-height:1.4}.toggle-switch{position:relative;display:inline-block;width:52px;height:28px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--color-neutral-300);transition:.3s;border-radius:28px}.toggle-slider:before{position:absolute;content:"";height:22px;width:22px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%;box-shadow:0 2px 4px #0000001a}.toggle-switch input:checked+.toggle-slider{background-color:var(--color-primary-500)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(24px)}.toggle-switch input:focus+.toggle-slider{box-shadow:0 0 0 2px var(--color-primary-200)}.pro-features-info{margin-top:var(--space-4);padding:var(--space-4);background:linear-gradient(135deg,var(--color-primary-50),var(--color-info-50));border-radius:var(--radius-md);border-left:4px solid var(--color-primary-500)}.pro-features-info h4{margin:0 0 var(--space-3) 0;color:var(--color-primary-700);font-size:var(--font-size-sm);font-weight:600}.pro-features-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.pro-features-list li{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.pro-features-list li span{flex-shrink:0}.btn-reset{padding:var(--space-2) var(--space-4);background:transparent;border:1px solid var(--color-danger-300);color:var(--color-danger-600);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:all .2s;min-height:40px}.btn-reset:hover{background:var(--color-danger-50);border-color:var(--color-danger-500)}.preview-features-info{margin-top:var(--space-4);padding:var(--space-4);background:linear-gradient(135deg,var(--color-warning-50),var(--color-info-50));border-radius:var(--radius-md);border-left:4px solid var(--color-warning-500)}.preview-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--color-warning-100);border-radius:var(--radius-full);margin-bottom:var(--space-3)}.preview-icon{font-size:var(--font-size-base)}.preview-text{font-size:var(--font-size-sm);font-weight:600;color:var(--color-warning-700)}.preview-note{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0;line-height:1.5}@media (max-width: 480px){.pro-features-list{grid-template-columns:1fr}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4)}.modal-content{background:#fff;border-radius:var(--radius-lg);padding:var(--space-6);width:100%;max-width:500px;max-height:90vh;overflow-y:auto}.modal-content h2{font-family:var(--font-family-serif);font-size:var(--font-size-xl);color:var(--color-text-primary);margin:0 0 var(--space-4)}.modal-content select{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--color-text-primary);background:transparent}.modal-actions{display:flex;gap:var(--space-3);margin-top:var(--space-6)}.btn-cancel{flex:1;padding:var(--space-3);border:1px solid var(--color-neutral-300);background:#fff;color:var(--color-text-secondary);font-size:var(--font-size-base);font-weight:500;border-radius:var(--radius-md);cursor:pointer;transition:all .2s;min-height:48px}.btn-cancel:hover{background:var(--color-neutral-100)}.modal-actions .btn-save{flex:1}.favorites-page{min-height:100vh;padding:var(--space-4);background:var(--color-primary-50)}.favorites-header{text-align:center;margin-bottom:var(--space-6)}.favorites-header h1{font-family:var(--font-family-serif);font-size:var(--font-size-2xl);color:var(--color-text-primary);margin:0 0 var(--space-2);display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.header-icon{font-size:1.5em}.favorites-count{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.favorites-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);color:var(--color-text-muted)}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-primary-100);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--space-4)}.favorites-auth-required{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);text-align:center}.auth-icon{font-size:3rem;margin-bottom:var(--space-4)}.favorites-auth-required h2{font-family:var(--font-family-serif);color:var(--color-text-primary);margin:0 0 var(--space-2)}.favorites-auth-required p{color:var(--color-text-muted);margin:0 0 var(--space-6)}.favorites-error{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-danger-50);border:1px solid var(--color-danger-200);border-radius:var(--radius-md);color:var(--color-danger-700);margin-bottom:var(--space-4)}.favorites-error button{margin-left:auto;background:none;border:none;color:var(--color-danger-700);cursor:pointer;font-size:var(--font-size-sm);text-decoration:underline}.favorites-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);text-align:center}.empty-icon{font-size:4rem;margin-bottom:var(--space-4);opacity:.5}.favorites-empty h2{font-family:var(--font-family-serif);color:var(--color-text-primary);margin:0 0 var(--space-2)}.favorites-empty p{color:var(--color-text-muted);margin:0 0 var(--space-6);max-width:300px}.favorites-grid{display:grid;grid-template-columns:1fr;gap:var(--space-4);max-width:800px;margin:0 auto}.favorite-card{display:flex;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.favorite-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.favorite-image{width:100px;min-width:100px;height:100px;cursor:pointer}.favorite-image img{width:100%;height:100%;object-fit:cover}.favorite-image-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--color-primary-100);color:var(--color-primary-500);font-size:2rem}.favorite-content{flex:1;padding:var(--space-3);display:flex;flex-direction:column}.favorite-name{font-family:var(--font-family-serif);font-size:var(--font-size-base);color:var(--color-text-primary);margin:0 0 var(--space-1);cursor:pointer;line-height:1.3}.favorite-name:hover{color:var(--color-primary-600)}.favorite-origin{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--space-1)}.origin-icon{font-size:.9em}.favorite-barcode{font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-text-muted);background:#f0e8e2;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);margin:0 0 var(--space-2);width:fit-content}.favorite-actions{display:flex;gap:var(--space-2);margin-top:auto}.btn-log{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background var(--transition-fast)}.btn-log:hover{background:var(--color-primary-600)}.btn-remove{display:flex;align-items:center;justify-content:center;padding:var(--space-2);background:var(--color-neutral-100);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast);min-width:40px}.btn-remove:hover{background:var(--color-danger-100)}.btn-remove:disabled{opacity:.5;cursor:not-allowed}.removing-spinner{width:16px;height:16px;border:2px solid var(--color-neutral-300);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin .8s linear infinite}.btn-primary{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-3) var(--space-6);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:background var(--transition-fast)}@media (min-width: 640px){.favorites-page{padding:var(--space-6)}.favorites-header h1{font-size:var(--font-size-3xl)}.favorites-grid{grid-template-columns:repeat(2,1fr)}.favorite-card{flex-direction:column}.favorite-image{width:100%;height:150px}.favorite-content{padding:var(--space-4)}.favorite-name{font-size:var(--font-size-lg)}}@media (min-width: 1024px){.favorites-page{padding:var(--space-8)}.favorites-grid{max-width:1000px}.favorite-image{height:180px}}.btn-new-bag{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-success-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.btn-new-bag:hover{background:var(--color-success-600)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:var(--z-modal)}.new-bag-modal{background:#fff;border-radius:var(--radius-xl);width:100%;max-width:400px;box-shadow:var(--shadow-xl);animation:modalSlideIn .2s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-neutral-200)}.modal-header h2{margin:0;font-size:var(--font-size-lg);color:var(--color-text-primary)}.modal-close{background:none;border:none;font-size:1.5rem;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);line-height:1}.modal-close:hover{color:var(--color-text-primary)}.modal-content{padding:var(--space-4)}.bag-coffee-info{background:var(--color-primary-50);padding:var(--space-3);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.bag-coffee-info h3{margin:0 0 var(--space-1);font-size:var(--font-size-base);color:var(--color-text-primary)}.bag-origin{margin:0;font-size:var(--font-size-sm);color:var(--color-text-muted)}.form-group{margin-bottom:var(--space-4)}.form-group label{display:block;margin-bottom:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.form-select,.form-input{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--color-text-primary);background:#fff}.form-select:focus,.form-input:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 2px var(--color-primary-100)}.modal-footer{display:flex;gap:var(--space-3);justify-content:flex-end;padding:var(--space-4);border-top:1px solid var(--color-neutral-200)}.modal-footer .btn-secondary{padding:var(--space-2) var(--space-4);background:var(--color-neutral-100);color:var(--color-text-primary);border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer}.modal-footer .btn-primary{padding:var(--space-2) var(--space-4);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer}.modal-footer .btn-primary:disabled{opacity:.6;cursor:not-allowed}.modal-footer .btn-primary:hover:not(:disabled){background:var(--color-primary-600)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}@media (max-width: 480px){.form-row{grid-template-columns:1fr}}.form-input.readonly{background:var(--color-neutral-100);color:var(--color-text-muted);cursor:not-allowed}.loading-story{text-align:center;padding:var(--space-4);color:var(--color-text-muted);font-size:var(--font-size-sm);background:var(--color-primary-50);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.bag-editor-page{min-height:100vh;padding:var(--space-4);padding-bottom:calc(var(--space-8) + 70px);background:var(--color-neutral-50)}.bag-editor-page .page-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.bag-editor-page .back-button{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-full);cursor:pointer;color:var(--color-text-primary)}.bag-editor-page .page-header h1{font-size:var(--font-size-xl);color:var(--color-text-primary);margin:0;flex:1}.bag-editor-page .auth-required,.bag-editor-page .loading{text-align:center;padding:var(--space-8);color:var(--color-text-muted)}.bag-editor-page .error-message{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-danger-50, #fef2f2);border:1px solid var(--color-danger-200, #fecaca);border-radius:var(--radius-md);color:var(--color-danger-700, #b91c1c);margin-bottom:var(--space-4)}.bag-editor-page .error-message button{background:none;border:none;font-size:var(--font-size-lg);color:var(--color-danger-500);cursor:pointer}.bag-form .form-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.bag-form .form-section h2{font-size:var(--font-size-lg);color:var(--color-text-primary);margin:0 0 var(--space-4) 0;padding-bottom:var(--space-2);border-bottom:1px solid var(--color-neutral-200)}.bag-form .form-group{margin-bottom:var(--space-4)}.bag-form .form-group:last-child{margin-bottom:0}.bag-form .form-group label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--space-1)}.bag-form .form-group input,.bag-form .form-group select,.bag-form .form-group textarea{width:100%;padding:var(--space-3);font-size:var(--font-size-base);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);background:#fff;color:var(--color-text-primary)}.bag-form .form-group input:focus,.bag-form .form-group select:focus,.bag-form .form-group textarea:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-100)}.bag-form .form-group textarea{resize:vertical;min-height:80px}.bag-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.bag-form .form-row .form-group{margin-bottom:0}.bag-form .form-actions{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.bag-form .btn-cancel{flex:1;padding:var(--space-4);font-size:var(--font-size-base);font-weight:500;border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);background:#fff;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.bag-form .btn-cancel:hover:not(:disabled){background:var(--color-neutral-100)}.bag-form .btn-save{flex:2;padding:var(--space-4);font-size:var(--font-size-base);font-weight:600;border:none;border-radius:var(--radius-md);background:var(--color-primary-500);color:#fff;cursor:pointer;transition:all .2s ease}.bag-form .btn-save:hover:not(:disabled){background:var(--color-primary-600)}.bag-form .btn-cancel:disabled,.bag-form .btn-save:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 480px){.bag-form .form-row{grid-template-columns:1fr}}.new-bag-page{min-height:100vh;padding:var(--space-4);padding-bottom:calc(var(--space-8) + 70px);background:var(--color-neutral-50)}.new-bag-page .page-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.new-bag-page .back-button{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-full);cursor:pointer;color:var(--color-text-primary)}.new-bag-page .page-header h1{font-size:var(--font-size-xl);color:var(--color-text-primary);margin:0;flex:1}.new-bag-page .auth-required{text-align:center;padding:var(--space-8);color:var(--color-text-muted)}.new-bag-page .loading-story{text-align:center;padding:var(--space-4);color:var(--color-text-muted);background:var(--color-primary-50);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.new-bag-page .error-message{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-danger-50, #fef2f2);border:1px solid var(--color-danger-200, #fecaca);border-radius:var(--radius-md);color:var(--color-danger-700, #b91c1c);margin-bottom:var(--space-4)}.new-bag-page .error-message button{background:none;border:none;font-size:var(--font-size-lg);color:var(--color-danger-500);cursor:pointer}.new-bag-page .no-coffee-selected{text-align:center;padding:var(--space-8);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.new-bag-page .no-coffee-selected p{color:var(--color-text-muted);margin-bottom:var(--space-4)}.new-bag-page .no-coffee-selected .btn-primary{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base);font-weight:500;border:none;border-radius:var(--radius-md);background:var(--color-primary-500);color:#fff;cursor:pointer}.new-bag-page .coffee-info-card{background:linear-gradient(135deg,var(--color-primary-100),var(--color-primary-50));border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-3);box-shadow:var(--shadow-sm);display:flex;gap:var(--space-4);align-items:center}.new-bag-page .coffee-info-card .coffee-image{flex-shrink:0;width:80px;height:80px;border-radius:var(--radius-md);overflow:hidden;background:#fff;box-shadow:0 2px 8px #0000001a}.new-bag-page .coffee-info-card .coffee-image img{width:100%;height:100%;object-fit:cover}.new-bag-page .coffee-info-card .coffee-details{flex:1;min-width:0}.new-bag-page .coffee-info-card .coffee-name{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-1) 0;line-height:1.3}.new-bag-page .coffee-info-card .coffee-brand-roaster{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}.new-bag-page .coffee-info-card .coffee-brand-roaster .brand{font-weight:500}.new-bag-page .coffee-info-card .coffee-brand-roaster .separator,.new-bag-page .coffee-info-card .coffee-brand-roaster .roaster{color:var(--color-text-muted)}.new-bag-page .coffee-details-card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.new-bag-page .coffee-details-card h3{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-3) 0;padding-bottom:var(--space-2);border-bottom:1px solid var(--color-neutral-200)}.new-bag-page .coffee-details-card .details-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.new-bag-page .coffee-details-card .detail-item{display:flex;flex-direction:column;gap:var(--space-1)}.new-bag-page .coffee-details-card .detail-label{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.new-bag-page .coffee-details-card .detail-value{font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:500}.new-bag-page .coffee-details-card .coffee-barcode{margin:var(--space-3) 0 0 0;padding-top:var(--space-3);border-top:1px solid var(--color-neutral-100);font-size:var(--font-size-xs);color:var(--color-text-muted)}.new-bag-page .coffee-details-card .coffee-barcode code{font-family:var(--font-family-mono);background:var(--color-neutral-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);margin-left:var(--space-1)}.new-bag-page .bag-form .form-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.new-bag-page .bag-form .form-section h2{font-size:var(--font-size-lg);color:var(--color-text-primary);margin:0 0 var(--space-4) 0;padding-bottom:var(--space-2);border-bottom:1px solid var(--color-neutral-200)}.new-bag-page .form-group{margin-bottom:var(--space-4)}.new-bag-page .form-group:last-child{margin-bottom:0}.new-bag-page .form-group label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--space-1)}.new-bag-page .form-group input,.new-bag-page .form-group select,.new-bag-page .form-group textarea{width:100%;padding:var(--space-3);font-size:var(--font-size-base);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);background:#fff;color:var(--color-text-primary)}.new-bag-page .form-group input:focus,.new-bag-page .form-group select:focus,.new-bag-page .form-group textarea:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-100)}.new-bag-page .form-group input.readonly{background:var(--color-neutral-100);color:var(--color-text-muted)}.new-bag-page .form-group textarea{resize:vertical;min-height:80px}.new-bag-page .form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.new-bag-page .form-row .form-group{margin-bottom:0}.new-bag-page .form-actions{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.new-bag-page .btn-cancel{flex:1;padding:var(--space-4);font-size:var(--font-size-base);font-weight:500;border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);background:#fff;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.new-bag-page .btn-cancel:hover:not(:disabled){background:var(--color-neutral-100)}.new-bag-page .btn-save{flex:2;padding:var(--space-4);font-size:var(--font-size-base);font-weight:600;border:none;border-radius:var(--radius-md);background:var(--color-primary-500);color:#fff;cursor:pointer;transition:all .2s ease}.new-bag-page .btn-save:hover:not(:disabled){background:var(--color-primary-600)}.new-bag-page .btn-cancel:disabled,.new-bag-page .btn-save:disabled{opacity:.6;cursor:not-allowed}.log-comparison{background:#fff;border:2px solid var(--color-neutral-200);border-radius:var(--radius-lg);padding:var(--space-4)}.log-comparison__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.log-comparison__title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0}.log-comparison__close{background:none;border:none;font-size:var(--font-size-lg);cursor:pointer;padding:var(--space-2);color:var(--color-text-muted);transition:color var(--transition-fast)}.log-comparison__close:hover{color:var(--color-text-primary)}.log-comparison__summary{display:flex;justify-content:center;gap:var(--space-6);margin-bottom:var(--space-4);padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.log-comparison__stat{text-align:center}.log-comparison__stat-value{display:block;font-size:var(--font-size-2xl);font-weight:700;font-family:var(--font-family-mono);color:var(--color-text-primary)}.log-comparison__stat-value.positive{color:var(--color-success-600)}.log-comparison__stat-value.negative{color:var(--color-danger-600)}.log-comparison__stat-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.log-comparison__logs{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--space-3);align-items:center;margin-bottom:var(--space-4)}.log-comparison__log{padding:var(--space-3);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);background:var(--color-neutral-50)}.log-comparison__log--a{border-left:3px solid var(--color-info-500)}.log-comparison__log--b{border-left:3px solid var(--color-primary-500)}.log-comparison__log-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.log-comparison__log-label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.log-comparison__log-date{font-size:var(--font-size-xs);color:var(--color-text-muted)}.log-comparison__log-info{display:flex;align-items:center;gap:var(--space-2)}.log-comparison__log-icon{font-size:var(--font-size-xl)}.log-comparison__log-rating{color:var(--color-warning-500);font-size:var(--font-size-sm)}.log-comparison__vs{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-muted);padding:var(--space-2) var(--space-3);background:#fff;border-radius:var(--radius-full);border:1px solid var(--color-neutral-200)}.log-comparison__table{border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);overflow:hidden;margin-bottom:var(--space-4)}.log-comparison__table-header{display:grid;grid-template-columns:2fr 1fr 1fr .5fr;background:var(--color-neutral-100);padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.log-comparison__row{display:grid;grid-template-columns:2fr 1fr 1fr .5fr;padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-neutral-100);font-size:var(--font-size-sm);transition:background-color var(--transition-fast)}.log-comparison__row:hover{background:var(--color-neutral-50)}.log-comparison__row.different{background:var(--color-warning-50)}.log-comparison__row.different:hover{background:var(--color-warning-100)}.log-comparison__td{font-family:var(--font-family-mono);color:var(--color-text-secondary)}.log-comparison__td--label{font-family:var(--font-family-sans);font-weight:500;color:var(--color-text-primary)}.log-comparison__td--change{text-align:center;font-weight:600}.log-comparison__td--change.positive{color:var(--color-success-600)}.log-comparison__td--change.negative{color:var(--color-danger-600)}.log-comparison__td--change.neutral{color:var(--color-info-600)}.log-comparison__insights{background:var(--color-info-50);border:1px solid var(--color-info-200);border-radius:var(--radius-md);padding:var(--space-4)}.log-comparison__insights-title{font-size:var(--font-size-base);font-weight:600;color:var(--color-info-800);margin:0 0 var(--space-2) 0}.log-comparison__insights-list{list-style:none;margin:0;padding:0}.log-comparison__insight{padding:var(--space-1) 0;font-size:var(--font-size-sm);color:var(--color-info-700)}.log-comparison__insight strong{color:var(--color-info-800)}.log-comparison__correlation{margin:var(--space-3) 0 0 0;padding-top:var(--space-3);border-top:1px solid var(--color-info-200);font-size:var(--font-size-sm);font-weight:500;color:var(--color-info-700)}@media (max-width: 480px){.log-comparison__logs{grid-template-columns:1fr;gap:var(--space-2)}.log-comparison__vs{text-align:center}.log-comparison__table-header,.log-comparison__row{grid-template-columns:1.5fr 1fr 1fr .5fr}.log-comparison__th,.log-comparison__td{font-size:var(--font-size-xs)}}.brew-sessions-page{padding:var(--space-4);max-width:800px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);flex-wrap:wrap;gap:var(--space-3)}.page-header h1{font-size:var(--font-size-2xl);color:var(--color-text-primary);margin:0}.header-actions{display:flex;gap:var(--space-2)}.btn-primary{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-weight:600;cursor:pointer;min-height:44px}.btn-secondary{background:var(--color-neutral-100);color:var(--color-text-primary);border:1px solid var(--color-neutral-300);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-weight:500;cursor:pointer;min-height:44px}.btn-secondary:hover{background:var(--color-neutral-200)}.auth-required{text-align:center;padding:var(--space-8)}.auth-required p{color:var(--color-text-muted)}.stats-section{margin-bottom:var(--space-6)}.stats-section h2{font-size:var(--font-size-lg);margin-bottom:var(--space-3);color:var(--color-text-primary)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3)}.stat-card{background:var(--color-neutral-50);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);padding:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.stat-icon{font-size:var(--font-size-2xl)}.stat-content{display:flex;flex-direction:column}.stat-method{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary)}.stat-count{font-size:var(--font-size-xs);color:var(--color-text-muted)}.stat-rating{font-size:var(--font-size-xs);color:var(--color-primary-500)}.btn-compare-icon{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:var(--space-2);border-radius:var(--radius-md);min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.btn-compare-icon:hover{background:var(--color-neutral-100)}.btn-compare-icon.active{background:var(--color-primary-100);color:var(--color-primary-700)}.day-navigation{display:flex;align-items:center;justify-content:center;gap:var(--space-4);margin-bottom:var(--space-4);padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.day-navigation .btn-compare-icon{margin-left:auto}.day-nav-btn{background:var(--color-primary-500);color:#fff;border:none;width:44px;height:44px;border-radius:50%;font-size:var(--font-size-lg);font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center}.day-nav-btn:hover:not(:disabled){background:var(--color-primary-600)}.day-nav-btn:disabled{background:var(--color-neutral-300);cursor:not-allowed}.day-label{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);min-width:120px;text-align:center}.godshots-section{margin-bottom:var(--space-6)}.godshots-section h2{font-size:var(--font-size-lg);margin-bottom:var(--space-3);color:var(--color-text-primary)}.godshots-scroll{display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-2);-webkit-overflow-scrolling:touch}.godshot-card{flex-shrink:0;background:linear-gradient(135deg,var(--color-warning-100) 0%,var(--color-warning-50) 100%);border:1px solid var(--color-warning-300);border-radius:var(--radius-md);padding:var(--space-3);display:flex;align-items:center;gap:var(--space-2);cursor:pointer;min-width:160px}.godshot-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.godshot-icon{font-size:var(--font-size-xl)}.godshot-info{display:flex;flex-direction:column}.godshot-coffee{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.godshot-rating{font-size:var(--font-size-xs);color:var(--color-warning-700);font-weight:600}.filters-section{display:flex;gap:var(--space-4);align-items:center;margin-bottom:var(--space-4);flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:var(--space-2)}.filter-group label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.filter-group select{padding:var(--space-2);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);background:transparent;min-height:40px}.filter-checkbox{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer}.filter-checkbox input{width:18px;height:18px}.sessions-section h2{font-size:var(--font-size-lg);margin-bottom:var(--space-3);color:var(--color-text-primary)}.loading,.error{text-align:center;padding:var(--space-6);color:var(--color-text-muted)}.error{color:var(--color-danger-500)}.empty-state{text-align:center;padding:var(--space-8);background:var(--color-neutral-50);border-radius:var(--radius-lg)}.empty-state p{color:var(--color-text-muted);margin-bottom:var(--space-4)}.sessions-list{display:flex;flex-direction:column;gap:var(--space-3)}.session-card{background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);padding:var(--space-4);cursor:pointer;transition:all .2s ease}.session-card:hover{border-color:var(--color-primary-300);box-shadow:var(--shadow-sm)}.session-card.godshot{border-left:4px solid var(--color-warning-500);background:linear-gradient(to right,var(--color-warning-50),white)}.session-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.session-method{font-weight:600;color:var(--color-primary-600)}.session-coffee{margin-bottom:var(--space-2)}.session-coffee strong{color:var(--color-text-primary)}.session-coffee .roaster{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-left:var(--space-1)}.session-params{display:flex;gap:var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-2)}.session-rating{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.rating-value{font-weight:700;font-size:var(--font-size-lg);color:var(--color-primary-500)}.godshot-badge{background:var(--color-warning-100);color:var(--color-warning-700);font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:600}.session-flavors{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-2)}.flavor-tag{background:var(--color-primary-50);color:var(--color-primary-700);font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.session-recipe{font-size:var(--font-size-sm);color:var(--color-text-muted)}@media (max-width: 480px){.page-header{flex-direction:column;align-items:stretch}.header-actions{flex-direction:column}.session-params{flex-wrap:wrap;gap:var(--space-2)}}.bags-section{margin-bottom:var(--space-6)}.bags-section .section-header-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.bags-section h2{font-size:var(--font-size-lg);color:var(--color-text-primary);margin:0}.btn-add-bag{background:var(--color-neutral-100);color:var(--color-text-primary);border:1px solid var(--color-neutral-300);padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer}.btn-add-bag:hover{background:var(--color-neutral-200)}.bags-scroll{display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-2);-webkit-overflow-scrolling:touch}.bag-card{flex-shrink:0;background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-md);padding:var(--space-3);display:flex;align-items:center;gap:var(--space-3);cursor:pointer;min-width:180px;transition:all .2s ease}.bag-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary-400)}.bag-icon{font-size:var(--font-size-xl)}.bag-info{display:flex;flex-direction:column;flex:1;min-width:0}.bag-name{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bag-roaster{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bag-remaining{font-size:var(--font-size-xs);color:var(--color-primary-600);font-weight:500}.bag-arrow{color:var(--color-primary-400);font-size:var(--font-size-lg)}.bags-empty{background:var(--color-neutral-50);border-radius:var(--radius-lg);padding:var(--space-4);text-align:center}.bags-empty p{color:var(--color-text-muted);margin:var(--space-2) 0 var(--space-3)}.bags-primary{background:linear-gradient(135deg,var(--color-primary-50),var(--color-primary-100));border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-6);border:1px solid var(--color-primary-200)}.bags-hint{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0 0 var(--space-3)}.page-header-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.btn-analytics,.btn-compare{padding:var(--space-2) var(--space-3);background:var(--color-neutral-100);color:var(--color-text-secondary);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:all .2s ease;min-height:40px}.btn-analytics:hover,.btn-compare:hover{background:var(--color-neutral-200)}.btn-analytics.active,.btn-compare.active{background:var(--color-primary-100);color:var(--color-primary-700);border-color:var(--color-primary-300)}.compare-banner{background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.compare-banner p{margin:0;color:var(--color-text-primary);font-size:var(--font-size-sm)}.btn-start-compare{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:background .2s ease}.btn-start-compare:hover{background:var(--color-primary-600)}.analytics-section{margin-bottom:var(--space-6)}.comparison-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4)}.comparison-modal{background:#fff;border-radius:var(--radius-lg);max-width:900px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-xl)}.session-card.compare-mode{cursor:pointer;position:relative}.session-card.compare-mode:hover{border-color:var(--color-primary-400)}.session-card.selected-for-compare{border-color:var(--color-primary-500);background:var(--color-primary-50)}.compare-checkbox{position:absolute;top:var(--space-3);right:var(--space-3)}.compare-checkbox input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--color-primary-500)}.session-tds{background:var(--color-info-100);color:var(--color-info-700);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:600}@media (max-width: 480px){.page-header{flex-direction:column;align-items:flex-start}.page-header-actions{width:100%}.btn-analytics,.btn-compare{flex:1;justify-content:center}.compare-banner{flex-direction:column;text-align:center}.btn-start-compare{width:100%}}.bag-card-wrapper{display:flex;gap:var(--space-2);align-items:stretch}.bag-card-wrapper .bag-card{flex:1}.btn-dial-in{width:48px;min-height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-warning-100);border:1px solid var(--color-warning-300);border-radius:var(--radius-md);font-size:1.25rem;cursor:pointer;transition:all .2s ease;flex-shrink:0}.btn-dial-in:hover{background:var(--color-warning-200);border-color:var(--color-warning-400);transform:scale(1.05)}.dial-in-section{margin-bottom:var(--space-6)}.dial-in-locked{position:relative;padding:var(--space-4);background:var(--color-neutral-50);border-radius:var(--radius-lg);border:1px solid var(--color-neutral-200)}.close-dial-in-btn{position:absolute;top:var(--space-2);right:var(--space-2);background:none;border:none;font-size:var(--font-size-xl);cursor:pointer;color:var(--color-text-muted);padding:var(--space-2);min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center}.close-dial-in-btn:hover{color:var(--color-text-primary)}.technique-tip-card{background:var(--color-info-50);border:1px solid var(--color-info-200);border-radius:var(--radius-lg);padding:var(--space-3);margin-bottom:var(--space-4)}.technique-tip-card__header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.technique-tip-card__header-icon{font-size:1.25rem}.technique-tip-card__header-title{flex:1;margin:0;font-size:var(--font-size-sm);font-weight:600;color:var(--color-info-700);text-transform:uppercase;letter-spacing:.05em}.technique-tip-card__dismiss{background:none;border:none;font-size:1.25rem;color:var(--color-info-400);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all var(--transition-fast)}.technique-tip-card__dismiss:hover{background:var(--color-info-100);color:var(--color-info-600)}.technique-tip-card__tips{display:flex;flex-direction:column;gap:var(--space-2)}.technique-tip-card__tip{background:#fff;border-radius:var(--radius-md);overflow:hidden;transition:box-shadow var(--transition-fast)}.technique-tip-card__tip:hover{box-shadow:0 2px 8px #3b82f626}.technique-tip-card__tip-header{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3);cursor:pointer}.technique-tip-card__tip-emoji{font-size:1.5rem;flex-shrink:0}.technique-tip-card__tip-content{flex:1}.technique-tip-card__tip-title{margin:0 0 var(--space-1);font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary)}.technique-tip-card__tip-text{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5}.technique-tip-card__tip-expand{color:var(--color-info-400);font-size:.75rem;transition:transform var(--transition-fast);margin-top:var(--space-1)}.technique-tip-card__tip-expand.expanded{transform:rotate(180deg)}.technique-tip-card__tip-details{padding:0 var(--space-3) var(--space-3);padding-left:calc(var(--space-3) + 1.5rem + var(--space-3));animation:fadeIn .2s ease}.technique-tip-card__pro-tip,.technique-tip-card__mistake{padding:var(--space-2);border-radius:var(--radius-sm);margin-bottom:var(--space-2);font-size:var(--font-size-sm)}.technique-tip-card__pro-tip:last-child,.technique-tip-card__mistake:last-child{margin-bottom:0}.technique-tip-card__pro-tip{background:var(--color-success-50);border-left:3px solid var(--color-success-400)}.technique-tip-card__mistake{background:var(--color-warning-50);border-left:3px solid var(--color-warning-400)}.technique-tip-card__detail-label{display:block;font-weight:600;font-size:var(--font-size-xs);margin-bottom:var(--space-1)}.technique-tip-card__pro-tip .technique-tip-card__detail-label{color:var(--color-success-700)}.technique-tip-card__mistake .technique-tip-card__detail-label{color:var(--color-warning-700)}.technique-tip-card__detail-text{color:var(--color-text-secondary);line-height:1.4}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.brew-start-page{max-width:600px;margin:0 auto;padding:var(--space-4);padding-bottom:calc(var(--space-8) + 70px)}.brew-start-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-neutral-200)}.brew-start-page .back-btn{background:none;border:none;font-size:var(--font-size-xl);cursor:pointer;padding:var(--space-2);color:var(--color-text-secondary);border-radius:var(--radius-md)}.brew-start-page .back-btn:hover{background:var(--color-neutral-100)}.brew-start-header .header-content{flex:1}.brew-start-header h1{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0}.brew-start-header p{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.brew-modes{display:flex;flex-direction:column;gap:var(--space-3)}.brew-mode-card{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--color-neutral-50);border:2px solid var(--color-neutral-200);border-radius:var(--radius-lg);cursor:pointer;transition:all .2s ease;text-align:left;min-height:80px}.brew-mode-card:hover{border-color:var(--color-primary-500);background:var(--color-primary-50);transform:translate(4px)}.brew-mode-card:active{transform:scale(.98)}.brew-mode-card.quick-log{border-color:var(--color-success-200);background:linear-gradient(135deg,var(--color-success-50) 0%,var(--color-neutral-50) 100%)}.brew-mode-card.quick-log:hover{border-color:var(--color-success-500);background:var(--color-success-50)}.brew-mode-card.follow-recipe{border-color:var(--color-info-200);background:linear-gradient(135deg,var(--color-info-50) 0%,var(--color-neutral-50) 100%)}.brew-mode-card.follow-recipe:hover{border-color:var(--color-info-500);background:var(--color-info-50)}.brew-mode-card.dial-in{border-color:var(--color-warning-200);background:linear-gradient(135deg,var(--color-warning-50) 0%,var(--color-neutral-50) 100%)}.brew-mode-card.dial-in:hover{border-color:var(--color-warning-500);background:var(--color-warning-50)}.brew-mode-card.experiment{border-color:var(--color-primary-200);background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-neutral-50) 100%)}.brew-mode-card.experiment:hover{border-color:var(--color-primary-500);background:var(--color-primary-50)}.brew-mode-card:disabled{opacity:.6;cursor:not-allowed;transform:none}.brew-mode-card:disabled:hover{transform:none;border-color:var(--color-neutral-200);background:var(--color-neutral-50)}.brew-mode-card.locked{cursor:default;opacity:.95}.brew-mode-card.locked:hover{transform:none}.brew-mode-card.quick-log:disabled{background:var(--color-neutral-100);border-color:var(--color-neutral-200)}.brew-mode-card.quick-log:disabled:hover{background:var(--color-neutral-100)}.mode-preview.muted{opacity:.6;font-style:italic}.mode-preview .new-badge{display:inline-block;padding:2px 6px;background:var(--color-warning-500);color:#fff;border-radius:var(--radius-full);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.brew-mode-card.dial-in.highlighted{border-color:var(--color-warning-400);border-width:3px;background:linear-gradient(135deg,var(--color-warning-100) 0%,var(--color-warning-50) 100%);box-shadow:0 4px 12px #f59e0b33;animation:pulse-glow 2s ease-in-out infinite}.brew-mode-card.dial-in.highlighted:hover{border-color:var(--color-warning-500);background:var(--color-warning-100)}@keyframes pulse-glow{0%,to{box-shadow:0 4px 12px #f59e0b33}50%{box-shadow:0 4px 20px #f59e0b66}}.smart-suggestion-section{margin-bottom:var(--space-4)}.smart-suggestion-card{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);background:linear-gradient(135deg,var(--color-primary-100) 0%,var(--color-primary-50) 100%);border:2px solid var(--color-primary-300);border-radius:var(--radius-lg);cursor:pointer;transition:all .2s ease;text-align:left;min-height:72px;box-shadow:0 2px 8px #8b5a2b1a;position:relative;overflow:hidden}.smart-suggestion-card:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,rgba(255,255,255,.1) 0%,transparent 50%);pointer-events:none}.smart-suggestion-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #8b5a2b33;border-color:var(--color-primary-500);background:linear-gradient(135deg,var(--color-primary-150, var(--color-primary-100)) 0%,var(--color-primary-100) 100%)}.smart-suggestion-card:active{transform:scale(.98)}.smart-suggestion-icon{font-size:1.75rem;width:44px;height:44px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--color-primary-200);border-radius:var(--radius-md)}.smart-suggestion-content{flex:1;min-width:0;position:relative;z-index:1}.smart-suggestion-badge{display:inline-block;padding:2px var(--space-2);background:var(--color-primary-500);border-radius:var(--radius-full);font-size:10px;font-weight:600;color:#fff;text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-1)}.smart-suggestion-content h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0 0 2px}.smart-suggestion-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}.smart-suggestion-reason{font-size:var(--font-size-xs);color:var(--color-text-muted);margin:0;font-style:italic;display:none}.smart-suggestion-arrow{font-size:var(--font-size-lg);color:var(--color-primary-500);flex-shrink:0}.brew-modes-divider{display:flex;align-items:center;margin:var(--space-4) 0;color:var(--color-text-muted);font-size:var(--font-size-sm)}.brew-modes-divider:before,.brew-modes-divider:after{content:"";flex:1;height:1px;background:var(--color-neutral-200)}.brew-modes-divider span{padding:0 var(--space-3)}.mode-icon{font-size:2rem;width:48px;height:48px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mode-content{flex:1;min-width:0}.mode-content h2{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-1) 0}.mode-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0;line-height:1.4}.mode-preview{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.mode-preview span{background:#0000000d;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.mode-preview-method{font-weight:600;color:var(--color-primary-700);background:var(--color-primary-100)!important}.mode-arrow{font-size:var(--font-size-xl);color:var(--color-text-muted);flex-shrink:0}.active-bags-section{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-neutral-200)}.active-bags-section h3{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-bottom:var(--space-3)}.active-bags-list{display:flex;flex-direction:column;gap:var(--space-2)}.active-bag-card{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3);background:var(--color-neutral-50);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease}.active-bag-card:hover{border-color:var(--color-primary-300);background:#fff}.bag-info{display:flex;flex-direction:column;gap:var(--space-1)}.bag-name{font-weight:500;color:var(--color-text-primary)}.bag-meta{font-size:var(--font-size-xs);color:var(--color-text-muted)}.freshness-badge{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:500}.freshness-badge.fresh{background:var(--color-success-100);color:var(--color-success-700)}.freshness-badge.peak{background:var(--color-info-100);color:var(--color-info-700)}.freshness-badge.aging{background:var(--color-warning-100);color:var(--color-warning-700)}.brew-start-footer{margin-top:var(--space-6);text-align:center}.btn-secondary{padding:var(--space-3) var(--space-6);background:transparent;border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all .2s ease}.btn-secondary:hover{border-color:var(--color-primary-500);color:var(--color-primary-600)}.loading-state{text-align:center;padding:var(--space-8);color:var(--color-text-muted)}@media (min-width: 640px){.brew-start-page{padding:var(--space-8)}.brew-start-header h1{font-size:var(--font-size-3xl)}.brew-mode-card{padding:var(--space-5)}.mode-icon{font-size:2.5rem;width:56px;height:56px}}.brew-method-selector{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);width:100%}@media (min-width: 640px){.brew-method-selector{grid-template-columns:repeat(5,1fr)}}@media (min-width: 1024px){.brew-method-selector{grid-template-columns:repeat(5,1fr)}}.brew-method-option{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-2) var(--space-2);min-height:56px;background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.brew-method-option:hover:not(:disabled){border-color:var(--color-neutral-400)}.brew-method-option:focus{outline:none;border-color:var(--color-primary-400);box-shadow:0 0 0 3px #8b5a2b26}.brew-method-option:focus-visible{outline:3px solid var(--color-info-500);outline-offset:2px}.brew-method-option:focus:not(.selected){background:var(--color-neutral-50)}.brew-method-option.selected{background:#fff;border-color:var(--color-primary-500);border-width:2px;color:var(--color-primary-700);box-shadow:0 0 0 2px #8b5a2b26}.brew-method-option.selected:hover{background:var(--color-neutral-50)}.brew-method-option.selected .brew-method-name{color:var(--color-primary-700);font-weight:600}.brew-method-option:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.brew-method-icon{font-size:1.5rem;line-height:1;transition:filter .2s ease}.brew-method-name{font-size:.7rem;font-weight:500;line-height:1.2;text-align:center;color:var(--color-text-secondary);word-break:break-word;-webkit-hyphens:auto;hyphens:auto}.brew-method-selector.compact .brew-method-option{min-height:48px;padding:var(--space-1) var(--space-1)}.brew-method-selector.compact .brew-method-icon{font-size:1.1rem}.brew-method-selector.compact .brew-method-name{font-size:.6rem}@media (max-width: 400px){.brew-method-selector{gap:var(--space-1)}.brew-method-option{min-height:64px;padding:var(--space-2) var(--space-1)}.brew-method-icon{font-size:1.3rem}.brew-method-name{font-size:.6rem}}.brew-method-option:active:not(:disabled){transform:translateY(0) scale(.98)}.brew-method-option.selected:active{transform:translateY(-1px) scale(.98)}.brew-method-selector-v2{display:flex;flex-direction:column;gap:var(--space-2)}.brew-method-chips{display:flex;flex-wrap:wrap;gap:var(--space-1)}.brew-method-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-full);cursor:pointer;transition:all .15s ease;font-size:var(--font-size-sm);white-space:nowrap;-webkit-tap-highlight-color:transparent}.brew-method-chip:hover:not(:disabled){border-color:var(--color-neutral-400, #a3a3a3);background:var(--color-neutral-50, #fafafa)}.brew-method-chip.selected{background:#fff;border-color:var(--color-primary-500, #8b5a2b);border-width:2px;color:var(--color-primary-700, #5c3d1e);box-shadow:0 0 0 2px #8b5a2b26}.brew-method-chip:disabled{opacity:.5;cursor:not-allowed}.brew-method-chip-icon{font-size:1rem;line-height:1}.brew-method-chip-name{font-weight:500}.brew-method-chip.selected .brew-method-chip-name{font-weight:600}.brew-method-more{background:var(--color-neutral-100);border-style:dashed}.brew-method-more:hover{background:var(--color-neutral-200);border-color:var(--color-neutral-400)}.brew-method-more.expanded{background:var(--color-neutral-200)}.brew-method-more-list{padding-top:var(--space-1);border-top:1px dashed var(--color-neutral-200)}.brew-method-chip.in-more{background:var(--color-neutral-100)}.brew-method-selector-v2.compact .brew-method-chip{padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs)}.brew-method-selector-v2.compact .brew-method-chip-icon{font-size:.85rem}.recipe-picker-simple{width:100%}.selected-recipe-compact{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#fff;border:1px solid var(--color-neutral-300);border-radius:var(--radius-md)}.selected-recipe-compact .recipe-method-icon{font-size:1.2rem;flex-shrink:0}.selected-recipe-compact .recipe-name{flex:1;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--font-size-sm)}.selected-recipe-compact .recipe-ratio{font-size:var(--font-size-xs);color:var(--color-text-muted);padding:var(--space-1) var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-sm)}.selected-recipe-compact .btn-change,.selected-recipe-compact .btn-clear{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:.9rem;background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;transition:all .15s ease}.selected-recipe-compact .btn-change:hover{border-color:var(--color-primary-400);color:var(--color-primary-600)}.selected-recipe-compact .btn-clear{border:none;font-size:1.2rem}.selected-recipe-compact .btn-clear:hover{color:var(--color-danger-500)}.btn-select-recipe{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);background:transparent;border:1px dashed var(--color-neutral-300);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;transition:all .15s ease}.btn-select-recipe:hover{border-color:var(--color-primary-400);color:var(--color-primary-600)}.btn-select-recipe .pick-icon{font-size:1rem}.recipe-picker-dropdown-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:flex-end;justify-content:center;z-index:10000}.recipe-picker-dropdown{width:100%;max-width:480px;max-height:60vh;background:#fff;border-radius:var(--radius-lg) var(--radius-lg) 0 0;display:flex;flex-direction:column;overflow:hidden}.dropdown-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-neutral-100)}.dropdown-header h4{margin:0;font-size:var(--font-size-base);color:var(--color-text-primary)}.dropdown-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;background:transparent;border:none;color:var(--color-text-muted);cursor:pointer}.dropdown-close:hover{color:var(--color-text-primary)}.dropdown-list{flex:1;overflow-y:auto;padding:var(--space-2)}.dropdown-loading,.dropdown-empty{padding:var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}.dropdown-item{width:100%;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:transparent;border:1px solid transparent;border-radius:var(--radius-md);text-align:left;cursor:pointer;transition:all .15s ease}.dropdown-item:hover{background:var(--color-neutral-50)}.dropdown-item.selected{background:var(--color-primary-50);border-color:var(--color-primary-200)}.dropdown-item .item-icon{font-size:1.25rem;flex-shrink:0}.dropdown-item .item-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.dropdown-item .item-name{font-weight:500;color:var(--color-text-primary);font-size:var(--font-size-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown-item .item-name .fav-star{color:var(--color-warning-500)}.dropdown-item .item-meta{font-size:var(--font-size-xs);color:var(--color-text-muted)}@media (min-width: 640px){.recipe-picker-dropdown-overlay{align-items:center}.recipe-picker-dropdown{border-radius:var(--radius-lg);max-height:50vh}}.recipe-picker{width:100%}.btn-pick-recipe{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);background:transparent;border:1px dashed var(--color-neutral-300);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer}.selected-recipe{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3);background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-md);min-width:0}.selected-recipe-info{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0}.selected-recipe .recipe-method-icon{font-size:1.5rem;flex-shrink:0}.selected-recipe .recipe-details{display:flex;flex-direction:column;min-width:0}.selected-recipe .recipe-name{font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.selected-recipe .recipe-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.selected-recipe-actions{display:flex;gap:var(--space-1);flex-shrink:0}.btn-icon-action{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1rem;background:#fff;border:1px solid var(--color-neutral-300);border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer}.btn-icon-action:hover{border-color:var(--color-primary-400);background:var(--color-primary-50)}.btn-icon-action.btn-clear{font-size:1.2rem;border:none;background:transparent}.btn-icon-action.btn-clear:hover{color:var(--color-danger-500);background:transparent}.recipe-picker-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:10000;padding:0}.recipe-picker-content{width:100%;max-width:100vw;max-height:85vh;background:#fff;border-radius:var(--radius-lg) var(--radius-lg) 0 0;display:flex;flex-direction:column;overflow:hidden}.picker-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-neutral-200)}.picker-header h3{margin:0;font-size:var(--font-size-lg);color:var(--color-text-primary)}.picker-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;background:none;border:none;color:var(--color-text-muted);cursor:pointer}.picker-tabs{display:flex;border-bottom:1px solid var(--color-neutral-200)}.picker-tab{flex:1;padding:var(--space-3) var(--space-4);background:none;border:none;border-bottom:2px solid transparent;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-muted);cursor:pointer;transition:all .2s ease}.picker-tab.active{color:var(--color-primary-600);border-bottom-color:var(--color-primary-500)}.picker-search{display:none}.picker-list{flex:1;overflow-y:auto;padding:var(--space-2)}.picker-loading,.picker-empty{padding:var(--space-6);text-align:center;color:var(--color-text-muted)}.picker-recipe-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3);background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);margin-bottom:var(--space-2);text-align:left;cursor:pointer;transition:all .2s ease}.picker-recipe-item:hover{background:var(--color-neutral-50);border-color:var(--color-primary-300)}.picker-recipe-item.selected{background:var(--color-primary-50);border-color:var(--color-primary-500)}.picker-recipe-item .item-method-icon{font-size:1.5rem;flex-shrink:0}.picker-recipe-item .item-info{flex:1;min-width:0;display:flex;flex-direction:column}.picker-recipe-item .item-name{font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picker-recipe-item .item-meta{font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picker-recipe-item .item-rating{font-size:var(--font-size-sm);color:var(--color-warning-600);font-weight:600;flex-shrink:0}.recipe-dose-section{margin-top:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--color-neutral-200)}.dose-header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-3);background:var(--color-primary-50);border:none;cursor:pointer;text-align:left}.dose-header:hover{background:var(--color-primary-100)}.dose-header-left{display:flex;align-items:center;gap:var(--space-3)}.dose-icon{font-size:1.25rem}.dose-header-info{display:flex;flex-direction:column;gap:var(--space-1)}.dose-label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.dose-summary{font-size:var(--font-size-xs);color:var(--color-text-muted)}.dose-toggle{font-size:var(--font-size-xs);color:var(--color-text-muted);transition:transform .2s ease}.dose-toggle.expanded{transform:rotate(180deg)}.dose-content{padding:var(--space-3);border-top:1px solid var(--color-neutral-200)}.dose-row{display:grid;grid-template-columns:1fr 1fr auto;gap:var(--space-3);align-items:end}.dose-row.brew-params-row{grid-template-columns:1fr 1fr;margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--color-neutral-300)}.dose-field{display:flex;flex-direction:column;gap:var(--space-1)}.dose-field label{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary)}.dose-input{padding:var(--space-2) var(--space-3);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-base);min-height:44px;width:100%;box-sizing:border-box}.dose-input:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px #8b5a2b1a}.dose-input-readonly{background:var(--color-neutral-100);color:var(--color-text-secondary);cursor:not-allowed}.dose-ratio{min-width:60px}.ratio-badge{display:flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-3);background:var(--color-primary-900);color:#fff;border-radius:var(--radius-md);font-weight:700;font-size:var(--font-size-base);min-height:44px}.scaled-stages-preview{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-neutral-200)}.scaled-stages-preview h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-2)}.stages-list-preview{display:flex;flex-direction:column;gap:var(--space-1)}.stage-preview-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.stage-num{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--color-primary-100);color:var(--color-primary-700);border-radius:50%;font-weight:600;font-size:var(--font-size-xs);flex-shrink:0}.stage-name-preview{flex:1;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stage-water-preview{font-weight:600;color:var(--color-info-600);flex-shrink:0}.stages-total{margin-top:var(--space-2);padding:var(--space-2);background:var(--color-primary-100);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary-800);text-align:center}@media (max-width: 480px){.dose-row{grid-template-columns:1fr 1fr}.dose-ratio{grid-column:span 2}.ratio-badge{width:100%}}@media (min-width: 640px){.recipe-picker-modal{align-items:center;padding:var(--space-4)}.recipe-picker-content{max-width:500px;border-radius:var(--radius-lg)}}.recipe-picker.compact .selected-recipe{padding:var(--space-2)}.recipe-picker.compact .selected-recipe .recipe-method-icon{font-size:1.25rem}.recipe-picker.compact .btn-pick-recipe{padding:var(--space-3);font-size:var(--font-size-sm)}.recipe-picker.compact .btn-pick-recipe .pick-icon{font-size:1rem}.item-favorite-star{color:var(--color-warning-500);font-size:var(--font-size-sm);flex-shrink:0;margin-left:auto}.picker-recipe-item .item-header{display:flex;align-items:center;gap:var(--space-2);width:100%}.picker-recipe-item .item-name-row{display:flex;align-items:center;gap:var(--space-2)}.picker-recipe-item .item-name-row .item-name{flex:1;min-width:0}.picker-filter-info{padding:var(--space-2) var(--space-4);background:var(--color-primary-50);font-size:var(--font-size-sm);color:var(--color-text-muted);border-bottom:1px solid var(--color-neutral-200)}.picker-filter-info span{font-weight:600;color:var(--color-primary-700)}.brewing-guide{background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);overflow:hidden;margin-top:var(--space-2);width:100%;max-width:100%;box-sizing:border-box;overflow-x:hidden;transition:all .2s ease}.brewing-guide.fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;margin:0;border-radius:0;display:flex;flex-direction:column;background:var(--color-neutral-900)}.brewing-guide.fullscreen .brewing-guide-header{flex-shrink:0;background:var(--color-neutral-800);border-bottom-color:var(--color-neutral-700)}.brewing-guide.fullscreen .recipe-title,.brewing-guide.fullscreen .recipe-subtitle{color:var(--color-neutral-100)}.brewing-guide.fullscreen .brewing-active{flex:1;display:flex;flex-direction:column;overflow:hidden}.brewing-guide.method-espresso{--method-accent: #6F4E37}.brewing-guide.method-pour-over{--method-accent: #8FBC8F}.brewing-guide.method-french-press{--method-accent: #D2691E}.brewing-guide.method-aeropress{--method-accent: #4682B4}.brewing-guide.method-moka-pot{--method-accent: #B22222}.brewing-guide.method-cold-brew{--method-accent: #87CEEB}.brewing-guide.method-siphon{--method-accent: #9370DB}.brewing-guide.method-turkish{--method-accent: #8B4513}.brewing-guide-header{background:transparent;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-neutral-100);box-sizing:border-box}.recipe-info-row{display:flex;align-items:center;gap:var(--space-2);min-width:0}.recipe-icon{font-size:1.25rem;flex-shrink:0}.recipe-info-text{flex:1;min-width:0;overflow:hidden}.recipe-title{margin:0;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recipe-subtitle{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-actions{display:flex;align-items:center;gap:var(--space-1);flex-shrink:0}.btn-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1rem;background:transparent;border:1px solid var(--color-neutral-200);color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all .15s ease}.btn-icon:hover{border-color:var(--color-neutral-400);color:var(--color-text-primary)}.btn-close-guide{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm)}.btn-close-guide:hover{color:var(--color-text-primary)}.total-progress{margin-top:var(--space-2);display:flex;align-items:center;gap:var(--space-2)}.progress-bar-container{flex:1;height:4px;background:var(--color-neutral-200);border-radius:2px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--color-primary-500);border-radius:2px;transition:width .2s ease}.progress-time{font-size:var(--font-size-xs);font-weight:600;color:var(--color-primary-700);white-space:nowrap}.brewing-guide.fullscreen .progress-time{color:var(--color-neutral-300)}.brewing-guide.fullscreen .progress-bar-container{background:var(--color-neutral-700)}.brewing-preview{padding:var(--space-3);text-align:center}.preview-hero{padding:var(--space-2) 0}.preview-icon{font-size:2.5rem;margin-bottom:var(--space-1)}.preview-title{margin:0;font-size:var(--font-size-lg);font-weight:700;color:var(--color-text-primary)}.preview-method{margin:0;font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:capitalize}.preview-description{margin:var(--space-2) 0;color:var(--color-text-secondary);font-size:var(--font-size-xs);line-height:1.4}.preview-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-1);margin:var(--space-3) 0}.stat-card{padding:var(--space-2);background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);display:flex;flex-direction:column;align-items:center}.stat-value{font-size:var(--font-size-base);font-weight:700;color:var(--color-primary-700)}.stat-label{font-size:.6rem;color:var(--color-text-muted);text-transform:uppercase;margin-top:0}.preview-stages{margin:var(--space-3) 0;text-align:left}.preview-stages h4{margin:0 0 var(--space-2);font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase}.stages-list{display:flex;flex-direction:column;gap:var(--space-1)}.preview-stage-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:transparent;border-radius:var(--radius-sm);border:1px solid var(--color-neutral-100)}.preview-stage-number{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--color-neutral-200);border-radius:50%;font-size:.65rem;font-weight:600;color:var(--color-text-muted)}.preview-stage-name{flex:1;font-size:var(--font-size-xs);color:var(--color-text-primary)}.preview-stage-time{font-size:var(--font-size-xs);font-family:var(--font-family-mono);color:var(--color-text-muted)}.brewing-ready{padding:var(--space-3);text-align:center}.ready-checklist{text-align:left;padding:var(--space-2);background:transparent;border:1px solid var(--color-success-200);border-radius:var(--radius-sm);margin-bottom:var(--space-3)}.ready-checklist h4{margin:0 0 var(--space-1);font-size:var(--font-size-xs);font-weight:600;color:var(--color-success-700)}.checklist-items{list-style:none;margin:0;padding:0}.checklist-items li{padding:var(--space-1) 0;font-size:var(--font-size-xs);color:var(--color-text-secondary)}.ready-first-stage{padding:var(--space-2);background:transparent;border:1px solid var(--color-primary-200);border-radius:var(--radius-sm);margin-bottom:var(--space-3)}.ready-first-stage h4{margin:0 0 var(--space-1);font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary-700)}.first-stage-water,.first-stage-notes{margin:0;font-size:var(--font-size-xs);color:var(--color-text-secondary)}.btn-start-brew{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all .15s ease}.btn-start-brew:hover{background:var(--color-primary-600)}.btn-start-brew:active{transform:scale(.98)}.btn-start-brew.large{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base)}.btn-start-brew.pulse{animation:pulse 1.5s infinite}@keyframes pulse{0%,to{box-shadow:0 0 #8b5a2b66}50%{box-shadow:0 0 0 12px #8b5a2b00}}.btn-back{display:block;margin:var(--space-3) auto 0;padding:var(--space-2) var(--space-4);background:transparent;border:1px solid var(--color-neutral-300);color:var(--color-text-muted);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer}.btn-back:hover{background:var(--color-neutral-100)}.brewing-stages{padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3);max-height:400px;overflow-y:auto;overflow-x:hidden;box-sizing:border-box}.brewing-guide.fullscreen .brewing-stages{flex:1;max-height:none;padding:var(--space-2)}.fullscreen-timer{text-align:center;padding:var(--space-4);flex-shrink:0}.big-timer{font-size:5rem;font-weight:700;font-family:var(--font-family-mono);color:var(--color-neutral-100);line-height:1;transition:color .3s ease}.big-timer.warning{color:var(--color-warning-400);animation:timerPulse .5s infinite}@keyframes timerPulse{0%,to{opacity:1}50%{opacity:.7}}.stage-indicator{margin-top:var(--space-2);font-size:var(--font-size-lg);color:var(--color-neutral-400)}.water-target{margin-top:var(--space-2);font-size:var(--font-size-xl);color:var(--color-info-400);font-weight:600}.brew-controls{display:flex;justify-content:center;gap:var(--space-1);padding:var(--space-2);flex-wrap:wrap}.brewing-guide.fullscreen .brew-controls{background:var(--color-neutral-800);border-bottom:1px solid var(--color-neutral-700)}.btn-control{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:transparent;border:1px solid var(--color-neutral-300);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-primary);cursor:pointer;transition:all .15s ease}.btn-control:hover:not(:disabled){border-color:var(--color-neutral-400)}.btn-control:disabled{opacity:.5;cursor:not-allowed}.btn-control.pause{background:transparent;border-color:var(--color-warning-300);color:var(--color-warning-700)}.btn-control.pause:hover{border-color:var(--color-warning-400)}.btn-control.resume{background:transparent;border-color:var(--color-success-300);color:var(--color-success-700)}.btn-control.resume:hover{border-color:var(--color-success-400)}.brewing-guide.fullscreen .btn-control{padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm)}.stage-card{background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);padding:var(--space-2);transition:all .2s ease;opacity:.5;box-sizing:border-box;overflow:hidden;word-wrap:break-word;min-width:0}.stage-card.active{opacity:1;border-color:var(--color-primary-400);background:var(--color-primary-50)}.stage-card.paused{border-color:var(--color-warning-400)}.brewing-guide.fullscreen .stage-card{background:var(--color-neutral-800);border-color:var(--color-neutral-700)}.brewing-guide.fullscreen .stage-card.active{background:var(--color-neutral-700);border-color:var(--color-primary-500)}.brewing-guide.fullscreen .stage-name{color:var(--color-neutral-100)}.stage-card.completed{opacity:.6;background:transparent;border-color:var(--color-success-200)}.stage-header{display:flex;align-items:center;gap:var(--space-2)}.stage-number{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--color-neutral-200);border-radius:50%;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);flex-shrink:0}.stage-card.active .stage-number{background:var(--color-primary-500);border-color:var(--color-primary-500);color:#fff}.stage-card.completed .stage-number{background:transparent;border-color:var(--color-success-400);color:var(--color-success-600)}.stage-title-row{flex:1;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-width:0;overflow:hidden}.stage-name{margin:0;font-size:var(--font-size-base);font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.stage-timer{display:flex;align-items:baseline;gap:2px;font-family:var(--font-family-mono)}.timer-current{font-size:var(--font-size-lg);font-weight:700;color:var(--color-primary-600)}.timer-current.warning{color:var(--color-warning-500)}.timer-separator{color:var(--color-text-muted)}.timer-total,.stage-duration{font-size:var(--font-size-sm);color:var(--color-text-muted)}.stage-progress{margin-top:var(--space-2);height:4px;background:var(--color-primary-100);border-radius:2px;overflow:hidden}.stage-progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary-400),var(--color-primary-600));border-radius:2px;transition:width .3s linear}.stage-details{margin-top:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--color-neutral-100);word-wrap:break-word;overflow-wrap:break-word}.stage-water{display:flex;align-items:center;gap:var(--space-3);font-size:var(--font-size-sm);flex-wrap:wrap}.water-amount{font-weight:600;color:var(--color-info-600)}.water-rate{color:var(--color-text-muted);text-transform:capitalize}.water-cumulative{font-weight:500;color:var(--color-success-600)}.stage-notes{margin:var(--space-2) 0 0;font-size:var(--font-size-sm);color:var(--color-text-secondary);font-style:italic;word-wrap:break-word;overflow-wrap:break-word;white-space:pre-wrap}.lap-marker{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);margin-top:var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-sm);font-size:var(--font-size-xs)}.lap-marker.issue{background:var(--color-warning-100)}.lap-marker.stage-complete{background:var(--color-success-100)}.lap-time{font-family:var(--font-family-mono);font-weight:600;color:var(--color-text-primary)}.lap-note{flex:1;color:var(--color-text-muted)}.lap-type{flex-shrink:0}.brewing-complete{padding:var(--space-6);text-align:center;background:linear-gradient(135deg,var(--color-success-50),var(--color-primary-50))}.complete-icon{font-size:3rem;margin-bottom:var(--space-2)}.brewing-complete h4{margin:0 0 var(--space-2);font-size:var(--font-size-xl);color:var(--color-text-primary)}.complete-stats{margin:var(--space-3) 0}.complete-stats p{margin:var(--space-1) 0;color:var(--color-text-secondary)}.btn-log-brew{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:600;cursor:pointer;margin-bottom:var(--space-2)}.btn-close{display:block;margin:0 auto;padding:var(--space-2) var(--space-4);background:transparent;border:1px solid var(--color-neutral-300);color:var(--color-text-muted);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer}.btn-close:hover{background:var(--color-neutral-100)}.post-brew-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;padding:var(--space-4)}.post-brew-log{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);max-width:400px;width:100%;max-height:90vh;overflow-y:auto}.post-brew-log h4{margin:0 0 var(--space-3);font-size:var(--font-size-lg);color:var(--color-text-primary);text-align:center}.log-summary{padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md);text-align:center;margin-bottom:var(--space-3)}.log-summary p{margin:var(--space-1) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.log-rating{margin-bottom:var(--space-3)}.log-rating label{display:block;font-size:var(--font-size-sm);font-weight:500;margin-bottom:var(--space-2);color:var(--color-text-primary)}.star-rating{display:flex;justify-content:center;gap:var(--space-1)}.star{font-size:2rem;background:none;border:none;cursor:pointer;color:var(--color-neutral-300);transition:color .2s ease,transform .1s ease}.star:hover{transform:scale(1.1)}.star.filled{color:var(--color-warning-400)}.log-notes{margin-bottom:var(--space-3)}.log-notes label{display:block;font-size:var(--font-size-sm);font-weight:500;margin-bottom:var(--space-2);color:var(--color-text-primary)}.log-notes textarea{width:100%;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-family:inherit;resize:vertical;box-sizing:border-box}.log-notes textarea:focus{outline:none;border-color:var(--color-primary-400)}.log-laps{margin-bottom:var(--space-3)}.log-laps label{display:block;font-size:var(--font-size-sm);font-weight:500;margin-bottom:var(--space-2);color:var(--color-text-primary)}.lap-list{display:flex;flex-direction:column;gap:var(--space-1);max-height:120px;overflow-y:auto}.lap-item{display:flex;gap:var(--space-2);font-size:var(--font-size-xs);padding:var(--space-1);background:var(--color-neutral-50);border-radius:var(--radius-sm)}.lap-item .lap-note{color:var(--color-text-muted);font-style:italic}.log-actions{display:flex;flex-direction:column;gap:var(--space-2)}.btn-save-log{width:100%;padding:var(--space-3);background:var(--color-success-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:600;cursor:pointer}.btn-save-log:hover{background:var(--color-success-600)}.btn-skip-log{width:100%;padding:var(--space-2);background:transparent;border:1px solid var(--color-neutral-300);color:var(--color-text-muted);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer}.btn-skip-log:hover{background:var(--color-neutral-100)}.lap-input-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;padding:var(--space-4)}.lap-input-modal{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);max-width:300px;width:100%;text-align:center}.lap-input-modal h4{margin:0 0 var(--space-2);font-size:var(--font-size-base);color:var(--color-text-primary)}.lap-time-display{font-size:var(--font-size-2xl);font-family:var(--font-family-mono);font-weight:700;color:var(--color-primary-600);margin-bottom:var(--space-3)}.lap-type-buttons{display:flex;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-3)}.btn-lap-type{padding:var(--space-2) var(--space-3);background:var(--color-neutral-100);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer}.btn-lap-type:hover{background:var(--color-neutral-200)}.btn-lap-type.issue{background:var(--color-warning-100);border-color:var(--color-warning-300)}.btn-lap-type.issue:hover{background:var(--color-warning-200)}.lap-note-input{width:100%;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--space-3);box-sizing:border-box}.btn-cancel-lap{padding:var(--space-2) var(--space-4);background:transparent;border:1px solid var(--color-neutral-300);color:var(--color-text-muted);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer}.btn-cancel-lap:hover{background:var(--color-neutral-100)}.settings-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;padding:var(--space-4)}.settings-panel{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);max-width:300px;width:100%}.settings-panel h4{margin:0 0 var(--space-3);font-size:var(--font-size-base);color:var(--color-text-primary);text-align:center}.setting-item{padding:var(--space-2) 0;border-bottom:1px solid var(--color-neutral-100)}.setting-item:last-of-type{border-bottom:none}.setting-item label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-primary);cursor:pointer}.setting-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-primary-500)}.setting-item input[type=range]{width:100%;margin-top:var(--space-1);accent-color:var(--color-primary-500)}.btn-close-settings{width:100%;margin-top:var(--space-3);padding:var(--space-2);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer}.btn-close-settings:hover{background:var(--color-primary-600)}@media (max-width: 480px){.preview-stats{grid-template-columns:repeat(2,1fr)}.brewing-stages{max-height:350px;padding:var(--space-2)}.stage-card{padding:var(--space-2)}.stage-timer{flex-shrink:0}.stage-header{flex-wrap:wrap}.stage-title-row{flex-wrap:nowrap}.stage-name{font-size:var(--font-size-sm)}.brew-controls{padding:var(--space-2);gap:var(--space-1)}.btn-control{padding:var(--space-2);font-size:var(--font-size-xs)}.big-timer{font-size:4rem}.post-brew-log,.lap-input-modal,.settings-panel{margin:var(--space-2)}}.brewing-guide-readonly{background:transparent;margin:0;padding:0}.readonly-recipe-summary{padding:var(--space-3);background:var(--color-neutral-50);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md)}.readonly-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.readonly-header .recipe-icon{font-size:1.5rem}.readonly-info{flex:1}.readonly-title{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0}.readonly-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.readonly-params{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}.readonly-time-info{display:flex;flex-wrap:wrap;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-neutral-200)}.readonly-stages{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-neutral-200)}.readonly-stages-header{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin-bottom:var(--space-2)}.readonly-stage-item .stage-content{flex:1;display:flex;flex-direction:column;gap:2px}.readonly-stage-item .stage-notes{font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic}.readonly-stage-item .stage-details{display:flex;align-items:center;gap:var(--space-2)}.readonly-stats{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.readonly-stat{display:flex;align-items:center;gap:4px;font-size:var(--font-size-sm);color:var(--color-text-secondary);padding:4px 8px;background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm)}.readonly-stat .stat-icon{font-size:.9rem}.readonly-stages-details{margin-top:var(--space-2);border-top:1px solid var(--color-neutral-200);padding-top:var(--space-2)}.readonly-stages-toggle{cursor:pointer;font-size:var(--font-size-sm);color:var(--color-primary-600);font-weight:500;padding:var(--space-1) 0}.readonly-stages-toggle:hover{color:var(--color-primary-700)}.readonly-stages-list{margin-top:var(--space-2);display:flex;flex-direction:column;gap:var(--space-1)}.readonly-stage-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.readonly-stage-item .stage-num{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--color-neutral-200);border-radius:50%;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary)}.readonly-stage-item .stage-name{flex:1;color:var(--color-text-primary)}.readonly-stage-item .stage-water{color:var(--color-primary-600);font-weight:500}.readonly-stage-item .stage-time{color:var(--color-text-muted)}.brewing-guide-readonly.edit-mode{background:transparent}.brewing-guide-readonly.edit-mode .readonly-recipe-summary{background:var(--color-primary-50);border-color:var(--color-primary-200)}.edit-mode-params{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-3)}.edit-row{display:flex;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap}.edit-field{display:flex;flex-direction:column;gap:var(--space-1);flex:1;min-width:80px}.edit-field.narrow{flex:0 0 auto;min-width:60px}.edit-label{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-muted)}.edit-label .field-icon{font-size:.85rem}.edit-input-group{display:flex;align-items:center;gap:4px}.edit-input{width:100%;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:inherit;background:var(--color-surface);color:var(--color-text-primary);transition:border-color .2s,box-shadow .2s}.edit-input:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 2px var(--color-primary-100)}.edit-input.narrow{width:70px}.edit-input-group .unit{font-size:var(--font-size-sm);color:var(--color-text-muted);min-width:20px}.edit-row .dose-arrow{color:var(--color-text-muted);font-size:1.25rem;padding-bottom:var(--space-2)}.edit-row .ratio-display{font-size:var(--font-size-base);font-weight:600;color:var(--color-primary-600);padding:var(--space-2) 0}.brewing-streak-card{background:linear-gradient(135deg,#fef3c7,#fde68a,#fcd34d);border-radius:var(--radius-xl);padding:var(--space-4);box-shadow:0 4px 16px #fbbf244d}.brewing-streak-card--compact{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:var(--radius-full);font-size:var(--font-size-sm)}.brewing-streak-card__compact-emoji{font-size:1rem}.brewing-streak-card__compact-count{font-weight:700;color:var(--color-warning-700)}.brewing-streak-card__compact-label{color:var(--color-warning-600)}.brewing-streak-card__main{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-4)}.brewing-streak-card__streak-circle{display:flex;flex-direction:column;align-items:center;justify-content:center;width:90px;height:90px;background:#fff;border-radius:50%;box-shadow:0 4px 12px #0000001a;flex-shrink:0}.brewing-streak-card__streak-emoji{font-size:1.5rem;line-height:1}.brewing-streak-card__streak-number{font-size:var(--font-size-2xl);font-weight:800;color:var(--color-warning-700);line-height:1;margin:var(--space-1) 0}.brewing-streak-card__streak-unit{font-size:var(--font-size-xs);color:var(--color-warning-600);text-transform:uppercase;font-weight:600}.brewing-streak-card__streak-info{flex:1}.brewing-streak-card__title{margin:0 0 var(--space-1);font-size:var(--font-size-lg);font-weight:700;color:var(--color-warning-900)}.brewing-streak-card__message{margin:0;font-size:var(--font-size-sm);color:var(--color-warning-700)}.brewing-streak-card__best{margin:var(--space-2) 0 0;font-size:var(--font-size-xs);color:var(--color-warning-600)}.brewing-streak-card__progress{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);padding:var(--space-3);background:#fffc;border-radius:var(--radius-lg)}.brewing-streak-card__stat{display:flex;flex-direction:column;align-items:center;text-align:center}.brewing-streak-card__stat-value{font-size:var(--font-size-lg);font-weight:700;color:var(--color-warning-800)}.brewing-streak-card__stat-label{font-size:var(--font-size-xs);color:var(--color-warning-600);white-space:nowrap}.brewing-streak-card__insight{margin-top:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);text-align:center}.brewing-streak-card__insight--positive{background:#10b98133;color:var(--color-success-700)}@media (max-width: 400px){.brewing-streak-card__progress{grid-template-columns:repeat(2,1fr)}.brewing-streak-card__streak-circle{width:72px;height:72px}.brewing-streak-card__streak-number{font-size:var(--font-size-xl)}}.brew-coach-card{background:var(--color-primary-50);border:2px solid var(--color-primary-200);border-radius:var(--radius-xl);padding:var(--space-5);margin:var(--space-3) 0;max-width:100%;box-sizing:border-box;overflow:hidden;box-shadow:0 4px 20px #8b5a2b14,0 1px 4px #8b5a2b0a;position:relative}.brew-coach-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary-400),var(--color-primary-600));border-radius:var(--radius-xl) var(--radius-xl) 0 0}.brew-coach-card__generate-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-4) var(--space-5);background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-600) 100%);color:#fff;border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all .3s ease;box-sizing:border-box;box-shadow:0 4px 12px #8b5a2b40;text-shadow:0 1px 2px rgba(0,0,0,.15)}.brew-coach-card__generate-btn:hover{background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-700) 100%);transform:translateY(-2px);box-shadow:0 6px 16px #8b5a2b59}.brew-coach-card__generate-btn:active{transform:translateY(0);box-shadow:0 2px 8px #8b5a2b40}.brew-coach-card__header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.brew-coach-card__icon{font-size:2.25rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));animation:gentle-pulse 3s ease-in-out infinite}@keyframes gentle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.brew-coach-card__title{font-family:var(--font-family-serif);font-size:var(--font-size-xl);font-weight:600;color:var(--color-primary-800);margin:0}.brew-coach-card__subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:var(--space-1) 0 0 0;line-height:1.4;opacity:.85}.brew-coach-card__diagnosis{background:var(--color-neutral-50);border-left:4px solid var(--color-primary-500);padding:var(--space-3) var(--space-4);border-radius:0 var(--radius-md) var(--radius-md) 0;margin-bottom:var(--space-4)}.brew-coach-card__diagnosis-label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-1)}.brew-coach-card__diagnosis-text{font-size:var(--font-size-base);color:#1a1a1a;margin:0;line-height:1.6;font-weight:500}.brew-coach-card__adjustment{background:var(--color-info-50);border:1px solid var(--color-info-200);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4)}.brew-coach-card__adjustment-header{display:flex;align-items:flex-start;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.brew-coach-card__adjustment-icon{font-size:1.25rem}.brew-coach-card__adjustment-title{font-size:var(--font-size-base);font-weight:700;color:#0a0a0a;margin:0;text-transform:capitalize;flex:1;min-width:0;word-wrap:break-word}.brew-coach-card__specific{font-size:var(--font-size-base);color:#1a1a1a;line-height:1.6;margin:var(--space-2) 0;font-weight:600;background:var(--color-primary-100);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md)}.brew-coach-card__adjustment-badge{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);white-space:nowrap}.brew-coach-card__adjustment-badge--high{background:var(--color-success-100);color:var(--color-success-700)}.brew-coach-card__adjustment-badge--medium{background:var(--color-warning-100);color:var(--color-warning-700)}.brew-coach-card__adjustment-badge--low{background:var(--color-neutral-200);color:var(--color-text-muted)}.brew-coach-card__change-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.brew-coach-card__change-from,.brew-coach-card__change-to{flex:1;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);text-align:center}.brew-coach-card__change-from{background:var(--color-neutral-100);text-decoration:line-through;color:var(--color-text-muted)}.brew-coach-card__change-to{background:var(--color-success-100);font-weight:600;color:var(--color-success-700)}.brew-coach-card__change-arrow{color:var(--color-info-500);font-size:1.25rem}.brew-coach-card__reasoning{font-size:var(--font-size-base);color:#1a1a1a;line-height:1.7;margin:var(--space-3) 0 0 0;font-weight:500;background:#fff;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border-left:4px solid var(--color-primary-500);box-shadow:0 1px 3px #00000014}.brew-coach-card__encouragement{background:var(--color-success-50);border-left:4px solid var(--color-success-500);padding:var(--space-3) var(--space-4);border-radius:0 var(--radius-md) var(--radius-md) 0;margin-bottom:var(--space-4)}.brew-coach-card__encouragement-text{font-size:var(--font-size-sm);color:var(--color-success-700);font-style:italic;margin:0}.brew-coach-card__encouragement-text:before{content:'"'}.brew-coach-card__encouragement-text:after{content:'"'}.brew-coach-card__articles{background:var(--color-info-50);border-left:4px solid var(--color-info-500);padding:var(--space-3) var(--space-4);border-radius:0 var(--radius-md) var(--radius-md) 0;margin-bottom:var(--space-4)}.brew-coach-card__articles-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.brew-coach-card__articles-icon{font-size:1.25rem}.brew-coach-card__articles-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-info-700);margin:0;text-transform:uppercase;letter-spacing:.5px}.brew-coach-card__articles-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-2)}.brew-coach-card__article-item{background:#fff;border-radius:var(--radius-md);overflow:hidden;transition:all .2s ease;box-shadow:0 1px 3px #00000014}.brew-coach-card__article-item:hover{box-shadow:0 3px 8px #0000001f;transform:translate(4px)}.brew-coach-card__article-link{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2) var(--space-3);text-decoration:none;color:inherit}.brew-coach-card__article-category{font-size:var(--font-size-xs);color:var(--color-primary-600);text-transform:uppercase;letter-spacing:.5px;font-weight:500}.brew-coach-card__article-title{font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:500;line-height:1.3}.brew-coach-card__article-link:hover .brew-coach-card__article-title{color:var(--color-info-600)}.brew-coach-card__feedback{display:flex;align-items:center;justify-content:space-between;padding-top:var(--space-4);border-top:1px solid var(--color-primary-200)}.brew-coach-card__feedback-question{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.brew-coach-card__feedback-buttons{display:flex;gap:var(--space-2)}.brew-coach-card__feedback-btn{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);background:var(--color-neutral-50);cursor:pointer;transition:all .2s ease;font-size:var(--font-size-sm)}.brew-coach-card__feedback-btn:hover{background:var(--color-primary-100);border-color:var(--color-primary-300)}.brew-coach-card__feedback-btn--selected{background:var(--color-primary-500);border-color:var(--color-primary-500);color:#fff}.brew-coach-card__feedback-btn--helpful{color:var(--color-success-600)}.brew-coach-card__feedback-btn--helpful.brew-coach-card__feedback-btn--selected{background:var(--color-success-500);border-color:var(--color-success-500);color:#fff}.brew-coach-card__feedback-btn--not-helpful{color:var(--color-danger-600)}.brew-coach-card__feedback-btn--not-helpful.brew-coach-card__feedback-btn--selected{background:var(--color-danger-500);border-color:var(--color-danger-500);color:#fff}.brew-coach-card__thanks{font-size:var(--font-size-sm);color:var(--color-success-600);font-weight:500}.brew-coach-card--loading{min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3)}.brew-coach-card__loading-spinner{width:48px;height:48px;border:4px solid var(--color-primary-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite}.brew-coach-card__loading-text{font-size:var(--font-size-sm);color:var(--color-text-muted)}.brew-coach-card--error{background:var(--color-danger-50);border-color:var(--color-danger-200);text-align:center;padding:var(--space-6)}.brew-coach-card__error-icon{font-size:2.5rem;margin-bottom:var(--space-3)}.brew-coach-card__error-text{font-size:var(--font-size-base);color:var(--color-danger-700);margin-bottom:var(--space-4)}.brew-coach-card__retry-btn{padding:var(--space-2) var(--space-4);background:var(--color-danger-500);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-weight:500;transition:background .2s ease}.brew-coach-card__retry-btn:hover{background:var(--color-danger-600)}@media (max-width: 480px){.brew-coach-card{padding:var(--space-3);margin:var(--space-2) 0;border-radius:var(--radius-lg)}.brew-coach-card__header{gap:var(--space-2);margin-bottom:var(--space-3)}.brew-coach-card__icon{font-size:1.5rem}.brew-coach-card__title{font-size:var(--font-size-base)}.brew-coach-card__diagnosis,.brew-coach-card__adjustment,.brew-coach-card__encouragement{padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3)}.brew-coach-card__change-row{flex-direction:column;gap:var(--space-2)}.brew-coach-card__change-from,.brew-coach-card__change-to{padding:var(--space-2);font-size:var(--font-size-sm)}.brew-coach-card__change-arrow{transform:rotate(90deg)}.brew-coach-card__feedback{flex-direction:column;gap:var(--space-2);text-align:center}.brew-coach-card__reasoning{font-size:var(--font-size-xs)}.brew-coach-card__generate-btn{padding:var(--space-3)!important;font-size:var(--font-size-sm)!important}}.brew-coach-card--compact{padding:var(--space-3);margin:var(--space-3) 0}.brew-coach-card--compact .brew-coach-card__header{margin-bottom:var(--space-3)}.brew-coach-card--compact .brew-coach-card__icon{font-size:1.5rem}.brew-coach-card--compact .brew-coach-card__title{font-size:var(--font-size-base)}.brew-coach-card--compact .brew-coach-card__diagnosis{padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3)}.brew-coach-card--compact .brew-coach-card__adjustment{padding:var(--space-2) var(--space-3)}.brew-coach-card--compact .brew-coach-card__encouragement{padding:var(--space-2) var(--space-3);margin:var(--space-2) 0}.taste-balance-slider{margin-bottom:var(--space-4)}.taste-balance-slider__label{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.taste-balance-slider__title{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.taste-balance-slider__value{font-size:var(--font-size-xs);color:var(--color-text-muted);padding:var(--space-1) var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-sm)}.taste-balance-slider__container{display:flex;align-items:center;gap:var(--space-3)}.taste-balance-slider__end-label{font-size:var(--font-size-xs);color:var(--color-text-muted);min-width:60px;text-align:center}.taste-balance-slider__end-label--left{text-align:right}.taste-balance-slider__end-label--right{text-align:left}.taste-balance-slider__track{flex:1;position:relative;height:40px;display:flex;align-items:center}.taste-balance-slider__range{width:100%;height:8px;border-radius:var(--radius-full);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,var(--color-danger-300) 0%,var(--color-neutral-200) 50%,var(--color-info-300) 100%);cursor:pointer}.taste-balance-slider__range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:24px;height:24px;border-radius:50%;background:var(--color-primary-500);border:3px solid white;box-shadow:0 2px 6px #00000026;cursor:grab;transition:transform .1s ease}.taste-balance-slider__range::-webkit-slider-thumb:hover{transform:scale(1.1)}.taste-balance-slider__range::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.15)}.taste-balance-slider__range::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--color-primary-500);border:3px solid white;box-shadow:0 2px 6px #00000026;cursor:grab}.taste-balance-slider__center-mark{position:absolute;left:50%;transform:translate(-50%);width:2px;height:16px;background:var(--color-neutral-400);pointer-events:none}.taste-balance-slider__description{font-size:var(--font-size-xs);color:var(--color-text-muted);text-align:center;margin-top:var(--space-2);font-style:italic}.perception-selector{margin-bottom:var(--space-4)}.perception-selector__label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--space-2);display:block}.perception-selector__options{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.perception-selector__option{padding:var(--space-3);border:2px solid var(--color-neutral-200);border-radius:var(--radius-md);background:#fff;cursor:pointer;transition:all .2s ease;text-align:center}.perception-selector__option:hover{border-color:var(--color-neutral-400);background:var(--color-neutral-50)}.perception-selector__option--selected{border-color:var(--color-primary-700);background:var(--color-primary-200);box-shadow:0 0 0 3px #8b5a2b4d}.perception-selector__option-icon{font-size:1.5rem;display:block;margin-bottom:var(--space-1)}.perception-selector__option-text{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.perception-selector__option--selected .perception-selector__option-text{color:var(--color-primary-800);font-weight:600}@media (max-width: 480px){.taste-balance-slider__end-label{font-size:.65rem;min-width:50px}.perception-selector__option{padding:var(--space-2)}.perception-selector__option-icon{font-size:1.25rem}}.quick-brew-log{padding:var(--space-4);max-width:480px;margin:0 auto;padding-bottom:calc(var(--nav-height, 64px) + var(--space-6))}.quick-log-header{text-align:center;margin-bottom:var(--space-4)}.quick-log-header h1{font-size:var(--font-size-2xl);color:var(--color-text-primary);margin:0 0 var(--space-1) 0}.quick-log-header p{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.auth-required{text-align:center;padding:var(--space-8) var(--space-4)}.auth-required h2{color:var(--color-text-primary);margin-bottom:var(--space-2)}.auth-required p{color:var(--color-text-muted);margin-bottom:var(--space-4)}.auth-required button{background:var(--color-primary-500);color:#fff;padding:var(--space-3) var(--space-6);border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);cursor:pointer}.loading{text-align:center;padding:var(--space-8);color:var(--color-text-muted)}.success-state{text-align:center;padding:var(--space-6) var(--space-4);animation:fadeIn .3s ease}.success-icon{font-size:4rem;margin-bottom:var(--space-4)}.success-state h2{color:var(--color-success-500);margin-bottom:var(--space-2)}.streak-message{font-size:var(--font-size-lg);color:var(--color-warning-500);font-weight:600}.coach-section{margin-top:var(--space-4);text-align:left}.coach-section .btn-done{width:100%;margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:600;cursor:pointer}.coach-section .btn-done:hover{background:var(--color-primary-600)}.quick-log-form{display:flex;flex-direction:column;gap:var(--space-5)}.form-section{display:flex;flex-direction:column;gap:var(--space-2)}.form-section label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary)}.coffee-select{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-300, #d4d4d4);border-radius:var(--radius-lg);background:#fff;font-size:var(--font-size-base);color:var(--color-text-primary);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.coffee-select:focus{outline:none;border-color:var(--color-primary-500, #8b5a2b);background-color:#fff;box-shadow:0 0 0 2px #8b5a2b33}.coffee-select:focus-visible{outline:3px solid var(--color-primary-500, #8b5a2b);outline-offset:2px}.no-bags-message{background:var(--color-neutral-50);padding:var(--space-4);border-radius:var(--radius-lg);text-align:center}.no-bags-message p{color:var(--color-text-muted);margin:0 0 var(--space-3) 0}.no-bags-message button{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer}.recipe-select{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-300, #d4d4d4);border-radius:var(--radius-lg);background:#fff;font-size:var(--font-size-sm);color:var(--color-text-primary);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.recipe-select:focus{outline:none;border-color:var(--color-primary-500, #8b5a2b);background-color:#fff;box-shadow:0 0 0 2px #8b5a2b33}.method-compact-select{display:flex;flex-wrap:wrap;gap:var(--space-1)}.method-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-full);cursor:pointer;transition:all .15s ease;font-size:var(--font-size-xs);white-space:nowrap}.method-chip:hover{border-color:var(--color-neutral-400)}.method-chip.active{background:#fff;border-color:var(--color-primary-500);border-width:2px;color:var(--color-primary-700)}.method-icon-sm{font-size:.9rem}.method-label{font-weight:500}.method-chip.active .method-label{font-weight:600}.method-quick-select{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}.method-btn{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-1);background:transparent;border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease}.method-btn:hover{border-color:var(--color-neutral-400)}.method-btn.active{background:#fff;border-color:var(--color-primary-500);border-width:2px}.method-icon{font-size:1.5rem}.method-name{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center}.method-btn.active .method-name{color:var(--color-primary-700);font-weight:600}.dose-quick-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.dose-field{display:flex;flex-direction:column;gap:var(--space-1);flex:1;min-width:80px}.dose-field label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.dose-field input{width:100%;padding:var(--space-2);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-lg);text-align:center}.dose-field input:focus{outline:none;border-color:var(--color-primary-500)}.dose-field .unit{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap}.dose-arrow{color:var(--color-text-muted);font-size:var(--font-size-lg)}.ratio-badge{background:var(--color-neutral-100);color:var(--color-text-primary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:600}.rating-slider{width:100%;height:8px;border-radius:var(--radius-full);background:var(--color-neutral-200);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.rating-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;border-radius:50%;background:var(--color-primary-500);cursor:grab;box-shadow:0 2px 6px #0003}.rating-slider::-moz-range-thumb{width:28px;height:28px;border-radius:50%;background:var(--color-primary-500);border:none;cursor:grab}.rating-labels{display:flex;justify-content:space-between;font-size:1.25rem}.quick-notes{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-family:inherit;resize:vertical;min-height:60px}.quick-notes:focus{outline:none;border-color:var(--color-primary-500)}.quick-notes::placeholder{color:var(--color-text-muted)}.error-message{background:var(--color-danger-50);color:var(--color-danger-700);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);text-align:center}.form-actions{display:flex;gap:var(--space-3);margin-top:var(--space-2)}.btn-primary,.btn-secondary{flex:1;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all .15s ease;min-height:48px}.btn-secondary:hover{background:var(--color-neutral-50)}.link-to-full{text-align:center;margin-top:var(--space-2)}.btn-link{background:none;border:none;color:var(--color-primary-500);font-size:var(--font-size-sm);cursor:pointer;text-decoration:underline}.btn-link:hover{color:var(--color-primary-700)}.collapsible-section{border:1px solid var(--color-neutral-200, #e5e5e5);border-radius:var(--radius-lg);overflow:hidden;background:#fff}.collapsible-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-3) var(--space-4);background:#fff;border:none;cursor:pointer;text-align:left;gap:var(--space-2);transition:background-color .15s ease}.collapsible-header:hover{background:var(--color-neutral-50, #fafafa)}.collapsible-header.expanded{border-bottom:1px solid var(--color-neutral-200, #e5e5e5);background:var(--color-neutral-50, #fafafa)}.collapsible-title{display:flex;align-items:center;gap:var(--space-2);font-weight:600;color:var(--color-text-primary);font-size:var(--font-size-sm);white-space:nowrap}.collapsible-values{flex:1;color:var(--color-text-muted);font-size:var(--font-size-sm);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collapsible-arrow{color:var(--color-primary-500, #8b5a2b);font-size:var(--font-size-xs);flex-shrink:0}.params-row{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.param-field{flex:1}.param-field label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:2px}.param-field input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-neutral-300, #d4d4d4);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:#fff}.param-field input:focus{outline:none;border-color:var(--color-primary-500, #8b5a2b);background-color:#fff;box-shadow:0 0 0 2px #8b5a2b33}.temp-input-group{display:flex;align-items:center;gap:var(--space-1)}.temp-input-group input,.dose-input-group input{flex:1;width:100%;padding:var(--space-1) var(--space-2);border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);font-size:var(--font-size-sm);background:transparent}.dose-input-group{display:flex;align-items:center;gap:var(--space-1)}.temp-input-group .unit,.dose-input-group .unit{color:var(--color-text-muted);font-size:var(--font-size-xs)}.recipe-guide-content{padding:0}.recipe-guide-content .brewing-guide{border:none;border-radius:0;box-shadow:none}@media (min-width: 640px){.quick-brew-log{padding:var(--space-6);padding-bottom:calc(var(--nav-height, 64px) + var(--space-8))}.method-quick-select{grid-template-columns:repeat(4,1fr)}.dose-quick-row{flex-wrap:nowrap}.params-row{gap:var(--space-4)}}.upgrade-prompt{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-4);border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-neutral-50) 100%);border:1px solid var(--color-primary-100)}.upgrade-prompt--small{padding:var(--space-3);gap:var(--space-2)}.upgrade-prompt--small .upgrade-prompt__icon-container{font-size:1.5rem}.upgrade-prompt--small .upgrade-prompt__title{font-size:var(--font-size-sm)}.upgrade-prompt--small .upgrade-prompt__message{font-size:var(--font-size-xs)}.upgrade-prompt--small .upgrade-prompt__button{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs)}.upgrade-prompt--medium{padding:var(--space-5);gap:var(--space-3)}.upgrade-prompt--medium .upgrade-prompt__icon-container{font-size:2.5rem}.upgrade-prompt--medium .upgrade-prompt__title{font-size:var(--font-size-lg)}.upgrade-prompt--medium .upgrade-prompt__message{font-size:var(--font-size-sm)}.upgrade-prompt--large{padding:var(--space-6) var(--space-5);gap:var(--space-4)}.upgrade-prompt--large .upgrade-prompt__icon-container{font-size:3.5rem}.upgrade-prompt--large .upgrade-prompt__title{font-size:var(--font-size-xl)}.upgrade-prompt--large .upgrade-prompt__message{font-size:var(--font-size-base);max-width:500px}.upgrade-prompt--inline{flex-direction:row;text-align:left;padding:var(--space-3);gap:var(--space-3)}.upgrade-prompt--inline .upgrade-prompt__icon-container{flex-shrink:0}.upgrade-prompt--inline .upgrade-prompt__content{flex:1}.upgrade-prompt--inline .upgrade-prompt__actions{flex-shrink:0}.upgrade-prompt--card{box-shadow:0 4px 12px #8b5a2b1a}.upgrade-prompt--fullscreen{min-height:70vh;justify-content:center;border-radius:0;border:none;background:linear-gradient(180deg,var(--color-primary-50) 0%,white 50%,var(--color-primary-50) 100%)}.upgrade-prompt__icon-container{position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-2)}.upgrade-prompt__icon{display:flex;align-items:center;justify-content:center;width:1.8em;height:1.8em;background:linear-gradient(135deg,var(--color-primary-100) 0%,var(--color-primary-200) 100%);border-radius:50%;filter:grayscale(.3)}.upgrade-prompt__lock{position:absolute;bottom:-4px;right:-4px;font-size:.4em;background:var(--color-neutral-700);border-radius:50%;padding:4px}.upgrade-prompt__content{display:flex;flex-direction:column;gap:var(--space-2)}.upgrade-prompt__title{margin:0;font-weight:600;color:var(--color-text-primary)}.upgrade-prompt__message{margin:0;color:var(--color-text-secondary);line-height:1.5}.upgrade-prompt__benefits{list-style:none;padding:0;margin:var(--space-4) 0;text-align:left;display:flex;flex-direction:column;gap:var(--space-2)}.upgrade-prompt__benefits li{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-primary)}.benefit-check{color:var(--color-success-500);font-weight:700}.upgrade-prompt__plans{display:grid;grid-template-columns:1fr;gap:var(--space-3);width:100%;max-width:600px;margin:var(--space-4) auto}@media (min-width: 640px){.upgrade-prompt__plans{grid-template-columns:repeat(2,1fr)}}.plan-card{position:relative;padding:var(--space-4);background:#fff;border:2px solid var(--color-neutral-200);border-radius:var(--radius-lg);text-align:left}.plan-card--highlighted{border-color:var(--color-primary-500);box-shadow:0 8px 24px #8b5a2b26}.plan-card--current{opacity:.7}.plan-card__badge{position:absolute;top:-10px;right:var(--space-3);padding:var(--space-1) var(--space-3);background:var(--color-primary-500);color:#fff;font-size:var(--font-size-xs);font-weight:600;border-radius:var(--radius-full)}.plan-card__name{margin:0 0 var(--space-1) 0;font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.plan-card__price{margin:0 0 var(--space-3) 0;font-size:var(--font-size-xl);font-weight:700;color:var(--color-primary-600)}.plan-card__features{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-1)}.plan-card__features li{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.plan-card__features li:before{content:"✓ ";color:var(--color-success-500)}.plan-card__current-label{display:block;margin-top:var(--space-3);font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic}.upgrade-prompt__actions{margin-top:var(--space-3)}.upgrade-prompt__button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);background:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-600) 100%);color:#fff;border:none;border-radius:var(--radius-full);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;box-shadow:0 4px 12px #8b5a2b33}.upgrade-prompt__button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #8b5a2b4d}.upgrade-prompt__button:active{transform:translateY(0)}@media (min-width: 640px){.upgrade-prompt--large{padding:var(--space-8)}}@media (min-width: 1024px){.upgrade-prompt--fullscreen{min-height:80vh}}.quick-brew-edit{max-width:600px;margin:0 auto;padding:var(--space-4);padding-bottom:calc(var(--space-8) + 80px);min-height:100vh}.quick-edit-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-neutral-200)}.quick-edit-header h1{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0}.quick-edit-header .session-date{font-size:var(--font-size-sm);color:var(--color-text-muted)}.quick-edit-form{display:flex;flex-direction:column;gap:var(--space-4)}.form-section{background:var(--color-neutral-50);border-radius:var(--radius-lg);padding:var(--space-4)}.view-card-section{margin-bottom:var(--space-4)}.view-card{border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);background:#fff;overflow:hidden}.view-card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-primary-50);border-bottom:1px solid var(--color-neutral-200)}.view-card-title{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary)}.edit-icon-btn{background:#fff;border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);padding:var(--space-2);cursor:pointer;font-size:var(--font-size-base);line-height:1;transition:all .2s ease}.edit-icon-btn:hover{background:var(--color-neutral-50);border-color:var(--color-primary-500)}.view-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:var(--space-3);padding:var(--space-4)}.view-card-item{display:flex;flex-direction:column;align-items:center;text-align:center}.view-card-label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-1)}.view-card-value{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.view-card-recipe{padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.recipe-name{font-size:var(--font-size-base);font-weight:500;color:var(--color-text-primary)}.recipe-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.recipe-details{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-2)}.recipe-detail{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-text-secondary);background:var(--color-neutral-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md)}.detail-icon{font-size:var(--font-size-xs)}.recipe-description{margin:var(--space-3) 0 0 0;font-size:var(--font-size-sm);color:var(--color-text-muted);line-height:1.4;max-height:3.6em;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.view-card-empty{padding:var(--space-4)}.empty-text{color:var(--color-text-muted);font-size:var(--font-size-sm);font-style:italic}.edit-card{border:1px solid var(--color-primary-300);border-radius:var(--radius-lg);background:#fff;overflow:hidden}.edit-card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-primary-100);border-bottom:1px solid var(--color-primary-200)}.edit-card-title{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary)}.done-btn{background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background-color .2s ease}.done-btn:hover{background:var(--color-primary-600)}.edit-card-content{padding:var(--space-4)}.collapsible-section{border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);overflow:hidden;background:#fff;padding:0}.collapsible-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-4);background:var(--color-neutral-50);border:none;cursor:pointer;text-align:left;gap:var(--space-3);transition:all .2s ease;min-height:56px}.collapsible-header:hover{background:var(--color-neutral-100)}.collapsible-header.expanded{border-bottom:1px solid var(--color-neutral-200);background:var(--color-primary-50)}.collapsible-title{display:flex;align-items:center;gap:var(--space-2);font-weight:600;color:var(--color-text-primary);font-size:var(--font-size-base);white-space:nowrap}.field-icon{font-size:1.125rem}.collapsible-values{flex:1;color:var(--color-text-secondary);font-size:var(--font-size-sm);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collapsible-arrow{color:var(--color-primary-600);font-size:var(--font-size-sm);flex-shrink:0;transition:transform .2s ease}.collapsible-header.expanded .collapsible-arrow{transform:rotate(90deg)}.collapsible-content{padding:var(--space-4);background:#fff;animation:slideDown .15s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3);gap:var(--space-2);flex-wrap:nowrap;min-height:44px}.section-header h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.edit-toggle{background:transparent;border:none;border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);font-size:var(--font-size-sm);cursor:pointer;transition:all .2s ease;color:var(--color-text-secondary);flex-shrink:0;min-width:32px;min-height:32px;display:flex;align-items:center;justify-content:center}.edit-toggle:hover{background:var(--color-neutral-100)}.edit-toggle.active{background:transparent;color:var(--color-primary-500)}.view-params{display:flex;flex-direction:column;gap:var(--space-3)}.param-summary{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.method-badge{display:inline-flex;align-items:center;gap:var(--space-1);background:var(--color-neutral-100);color:var(--color-text-primary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500}.coffee-name{font-weight:600;color:var(--color-text-primary);font-size:var(--font-size-base)}.param-stats{display:flex;flex-wrap:wrap;gap:var(--space-3)}.param-stats .stat{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.stat-icon{font-size:var(--font-size-base)}.ratio{color:var(--color-text-muted);font-size:var(--font-size-xs);margin-left:var(--space-1)}.recipe-badge{display:inline-flex;align-items:center;gap:var(--space-1);background:var(--color-neutral-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.edit-params{display:flex;flex-direction:column;gap:var(--space-3)}.param-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.param-row:first-child{grid-template-columns:1fr}.param-field{display:flex;flex-direction:column;gap:var(--space-1)}.param-field label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500}.param-field input,.param-field select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:#fff}.param-field input:focus,.param-field select:focus{outline:none;border-color:var(--color-primary-400);box-shadow:0 0 0 2px var(--color-primary-100)}.input-with-unit{display:flex;align-items:center;gap:var(--space-1)}.input-with-unit input{flex:1;min-width:0}.input-with-unit .unit{font-size:var(--font-size-sm);color:var(--color-text-muted)}.section-divider{display:flex;align-items:center;gap:var(--space-3);margin:var(--space-2) 0}.section-divider:before,.section-divider:after{content:"";flex:1;height:1px;background:var(--color-neutral-200)}.section-divider span{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:500}.post-brew-section{background:#fff;border:1px solid var(--color-neutral-200)}.rating-section{margin-bottom:var(--space-4)}.rating-section label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--space-2)}.rating-slider{width:100%;height:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--radius-full);background:linear-gradient(to right,var(--color-neutral-300),var(--color-warning-400),var(--color-success-400));outline:none}.rating-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:24px;height:24px;border-radius:50%;background:#fff;border:2px solid var(--color-primary-500);cursor:pointer;box-shadow:0 2px 4px #00000026}.rating-slider::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#fff;border:2px solid var(--color-primary-500);cursor:pointer;box-shadow:0 2px 4px #00000026}.rating-labels{display:flex;justify-content:space-between;font-size:var(--font-size-lg);margin-top:var(--space-1)}.god-shot-toggle{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-3);margin-top:var(--space-3);background:transparent;border:2px dashed var(--color-neutral-300);border-radius:var(--radius-lg);color:var(--color-text-muted);font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:all .2s ease}.god-shot-toggle:hover{border-color:var(--color-warning-400);color:var(--color-warning-600)}.god-shot-toggle.active{background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid var(--color-warning-500);color:var(--color-warning-800)}.god-shot-toggle .god-shot-icon{font-size:1.25rem}.god-shot-toggle.active .god-shot-icon{animation:trophy-bounce .3s ease}@keyframes trophy-bounce{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.perception-section,.flavors-section{margin-bottom:var(--space-4)}.flavors-section label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--space-2)}.flavor-chip{padding:var(--space-3);border:2px solid var(--color-neutral-200);border-radius:var(--radius-md);background:#fff;font-size:var(--font-size-xs);color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease;text-align:center;text-transform:capitalize}.flavor-chip:hover{border-color:var(--color-neutral-400);background:var(--color-neutral-50)}.notes-section{margin-bottom:var(--space-2)}.notes-section label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--space-2)}.quick-notes{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-sm);resize:vertical;font-family:inherit}.quick-notes:focus{outline:none;border-color:var(--color-primary-400);box-shadow:0 0 0 2px var(--color-primary-100)}.error-message{padding:var(--space-3);background:var(--color-danger-50);border:1px solid var(--color-danger-200);border-radius:var(--radius-md);color:var(--color-danger-700);font-size:var(--font-size-sm);text-align:center}.form-actions{display:flex;flex-direction:row;gap:var(--space-3);margin-top:var(--space-4)}.btn-secondary,.btn-primary{flex:1;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all .2s ease}.btn-secondary{background:#fff;border:1px solid var(--color-neutral-300);color:var(--color-text-secondary)}.btn-secondary:hover{background:var(--color-neutral-50);border-color:var(--color-neutral-400)}.btn-primary{background:var(--color-primary-500);border:none;color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-600)}.link-to-full{text-align:center;margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-neutral-200)}.btn-link{background:none;border:none;color:var(--color-primary-500);font-size:var(--font-size-sm);cursor:pointer;text-decoration:underline;padding:var(--space-2)}.btn-link:hover{color:var(--color-primary-600)}.loading,.auth-required,.error-state,.success-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-8);min-height:300px;gap:var(--space-4)}.success-state{animation:fadeIn .3s ease}.success-icon{font-size:48px;color:var(--color-success-500);animation:scaleIn .3s ease}@keyframes scaleIn{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.success-state h2{font-size:var(--font-size-xl);color:var(--color-text-primary);margin:0}.coach-section{display:flex;flex-direction:column;gap:var(--space-4);margin-top:var(--space-4);width:100%;max-width:400px}.btn-done{padding:var(--space-3) var(--space-6);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:600;cursor:pointer}.btn-done:hover{background:var(--color-primary-600)}@media (min-width: 640px){.quick-brew-edit{padding:var(--space-6)}.param-row{grid-template-columns:repeat(2,1fr)}.param-row:first-child{grid-template-columns:1fr}}@media (min-width: 1024px){.quick-brew-edit{max-width:700px}}.recipe-info-card{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg)}.recipe-info-content{flex:1;min-width:0}.recipe-info-main{display:flex;flex-direction:column;gap:var(--space-1)}.recipe-info-name{font-weight:600;color:var(--color-text-primary);font-size:var(--font-size-base)}.recipe-info-description{font-size:var(--font-size-sm);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-info-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.recipe-info-meta span{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-md);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.recipe-edit-btn{flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-neutral-100);border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-base);transition:background .15s ease}.recipe-edit-btn:hover{background:var(--color-neutral-200)}.recipe-empty-state{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-2) 0}.recipe-empty-text{color:var(--color-text-muted);font-style:italic;font-size:var(--font-size-sm)}.recipe-add-btn{padding:var(--space-2) var(--space-3);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background .15s ease}.recipe-add-btn:hover{background:var(--color-primary-600)}.recipe-picker-container{display:flex;flex-direction:column;gap:var(--space-3)}.cancel-edit-btn{align-self:flex-start;padding:var(--space-2) var(--space-3);background:transparent;color:var(--color-text-muted);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:all .15s ease}.cancel-edit-btn:hover{background:var(--color-neutral-100);color:var(--color-text-secondary)}.brew-session-view{min-height:100vh;padding-bottom:calc(var(--space-8) + 80px);background:var(--color-neutral-50)}.session-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);padding:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-neutral-200);background:var(--color-neutral-50)}.header-content{flex:1}.session-header h1{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0;display:flex;align-items:center;gap:var(--space-2)}.brew-method-icon{font-size:1.25rem}.edit-btn{background:none;border:none;font-size:1rem;cursor:pointer;padding:var(--space-2);color:var(--color-text-secondary);border-radius:var(--radius-md)}.edit-btn:hover{background:var(--color-neutral-100)}.session-meta{padding:var(--space-2) var(--space-4);background:var(--color-primary-50)}.session-date{font-size:var(--font-size-sm);color:var(--color-text-muted)}.session-badges{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3) var(--space-4)}.badge{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:500}.badge.god-shot{background:linear-gradient(135deg,gold,#ffec80);color:#7c5c00}.badge.dial-in{background:var(--color-primary-100);color:var(--color-primary-700)}.badge.quick-log{background:var(--color-info-100);color:var(--color-info-700)}.badge.recipe{background:var(--color-success-100);color:var(--color-success-700)}.session-section{background:#fff;margin:var(--space-3) var(--space-4);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm)}.session-section h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-neutral-100)}.coffee-info{display:flex;flex-direction:column;gap:var(--space-1)}.coffee-name{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.coffee-details{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.coffee-roast,.coffee-roast-date{font-size:var(--font-size-sm);color:var(--color-text-muted)}.brew-setup-content{display:flex;flex-direction:column;gap:var(--space-3)}.method-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-full);width:fit-content}.method-badge .method-icon{font-size:1.1rem}.method-badge .method-name{font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary-700);text-transform:capitalize}.dosing-summary{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.dosing-stat{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.dosing-stat .stat-icon{font-size:.9rem}.dosing-stat .ratio{color:var(--color-text-muted);font-size:var(--font-size-xs)}.recipe-section-compact{background:#fff;margin:var(--space-3) var(--space-4);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-sm)}.recipe-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.recipe-header h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0;border-bottom:none;padding-bottom:0}.recipe-link-btn{background:transparent;border:1px solid var(--color-primary-300);border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs);color:var(--color-primary-600);cursor:pointer;transition:all .2s}.recipe-link-btn:hover{background:var(--color-primary-50);border-color:var(--color-primary-400)}.recipe-name-display{font-size:var(--font-size-base);font-weight:500;color:var(--color-text-primary)}.recipe-stages-compact{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--space-1)}.recipe-link{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--space-3);background:var(--color-primary-50);border:1px solid var(--color-primary-100);border-radius:var(--radius-md);cursor:pointer;font-family:inherit}.recipe-name{font-weight:500;color:var(--color-primary-700)}.recipe-arrow{color:var(--color-primary-500)}.recipe-guide-section{padding:var(--space-4);background:var(--color-surface)}.recipe-guide-section .brewing-guide-readonly{margin-bottom:var(--space-3)}.recipe-link-button{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-md);color:var(--color-primary-700);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;text-align:center;transition:background .2s}.recipe-link-button:hover{background:var(--color-primary-100)}.dosing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);text-align:center}.dosing-item{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.dosing-value{font-size:var(--font-size-xl);font-weight:700;color:var(--color-primary-600)}.dosing-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.parameters-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.param-item{display:flex;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.param-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.param-value{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.equipment-list{display:flex;flex-direction:column;gap:var(--space-2)}.equipment-item{display:flex;justify-content:space-between;padding:var(--space-2) 0;border-bottom:1px solid var(--color-neutral-100)}.equipment-item:last-child{border-bottom:none}.equipment-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.equipment-value{font-size:var(--font-size-sm);color:var(--color-text-primary)}.stages-timeline{display:flex;flex-direction:column;gap:var(--space-2)}.stage-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-2) 0}.stage-number{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--color-primary-100);color:var(--color-primary-700);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;flex-shrink:0}.stage-content{flex:1}.stage-name{font-weight:500;color:var(--color-text-primary);font-size:var(--font-size-sm)}.stage-details{font-size:var(--font-size-xs);color:var(--color-text-muted)}.extraction-grid{display:flex;gap:var(--space-6);justify-content:center}.extraction-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.extraction-value{font-size:var(--font-size-2xl);font-weight:700;color:var(--color-success-600)}.extraction-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.assessment-content{display:flex;flex-direction:column;gap:var(--space-4)}.overall-rating{display:flex;align-items:center;gap:var(--space-3)}.star-rating{font-size:1.5rem;letter-spacing:2px}.star{color:var(--color-neutral-300)}.star.filled{color:#ffc107}.rating-value{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.perception-badges{display:flex;flex-wrap:wrap;gap:var(--space-2)}.perception-badge{font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-weight:500}.perception-badge.extraction.under-extracted{background:#fef3c7;color:#92400e}.perception-badge.extraction.balanced{background:#d1fae5;color:#065f46}.perception-badge.extraction.over-extracted{background:#fee2e2;color:#991b1b}.perception-badge.strength.too-weak{background:#e0f2fe;color:#075985}.perception-badge.strength.perfect{background:#d1fae5;color:#065f46}.perception-badge.strength.too-strong{background:#fce7f3;color:#9d174d}.flavor-notes h3{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-muted);margin:0 0 var(--space-2)}.flavor-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.flavor-tag{font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-weight:500;border:1px solid var(--color-primary-200);background:transparent;color:var(--color-primary-700)}.quick-flavors{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.flavor-chip{padding:var(--space-3);border:2px solid var(--color-neutral-200);border-radius:var(--radius-md);background:#fff;font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center;text-transform:capitalize}.flavor-chip.active{border-color:var(--color-primary-700);background:var(--color-primary-200);color:var(--color-primary-800);font-weight:600;box-shadow:0 0 0 3px #8b5a2b4d}.issues-section{margin-top:var(--space-4)}.issues-section h3{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-muted);margin:0 0 var(--space-2)}.issue-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.issue-tag{font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-weight:500;border:1px solid var(--color-warning-500);background:var(--color-warning-50);color:var(--color-warning-700)}.tasting-details{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.tasting-item{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.tasting-label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.tasting-value{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.session-notes{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.6;margin:0;white-space:pre-wrap}.comparison-content{display:flex;flex-direction:column;gap:var(--space-3)}.comparison-item{display:flex;flex-direction:column;gap:var(--space-2)}.comparison-label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-muted)}.variable-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.variable-tag{font-size:var(--font-size-sm);padding:var(--space-1) var(--space-2);background:var(--color-warning-100);color:var(--color-warning-700);border-radius:var(--radius-md)}.comparison-item p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}.session-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.session-tag{font-size:var(--font-size-sm);padding:var(--space-1) var(--space-3);background:var(--color-neutral-100);color:var(--color-text-secondary);border-radius:var(--radius-full)}.session-actions{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);padding-bottom:var(--space-8)}.action-button{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-4);border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:600;cursor:pointer;font-family:inherit}.action-button.primary{background:var(--color-primary-500);color:#fff}.action-button.secondary{background:#fff;color:var(--color-primary-600);border:1px solid var(--color-primary-200)}.loading,.error-state,.auth-required{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:var(--space-4);padding:var(--space-4);text-align:center}.error-state button,.auth-required button{padding:var(--space-3) var(--space-6);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-lg);font-weight:500;cursor:pointer}.capitalize{text-transform:capitalize}.coach-section{background:transparent;box-shadow:none;padding:0;margin:var(--space-3) 0}.coach-section h2{display:none}.coach-section .brew-coach-card{max-width:100%;margin:0}.puck-prep-view{background:var(--color-warning-50);border:1px solid var(--color-warning-200)}.puck-prep-badges{display:flex;flex-wrap:wrap;gap:var(--space-2)}.prep-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:#fff;border:1px solid var(--color-warning-200);border-radius:var(--radius-full);font-size:var(--font-size-xs);color:var(--color-warning-700)}@media (min-width: 640px){.session-section{margin:var(--space-4) auto;max-width:600px}.session-header{padding:var(--space-4) var(--space-6)}.session-badges{max-width:600px;margin:0 auto}.session-actions{max-width:600px;margin:0 auto;flex-direction:row}.action-button{flex:1}}.dial-in-session{background:var(--color-neutral-50);border-radius:var(--radius-lg);overflow:hidden}.dial-in-session__bag-section{padding:var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-neutral-200)}.dial-in-session__bag-card{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-primary-100) 100%);border:1px solid var(--color-primary-200);border-radius:var(--radius-lg)}.dial-in-session__bag-info{flex:1;min-width:0}.dial-in-session__bag-header{display:flex;align-items:flex-start;gap:var(--space-2);margin-bottom:var(--space-2)}.dial-in-session__bag-icon{font-size:1.5rem;flex-shrink:0}.dial-in-session__bag-details{flex:1;min-width:0}.dial-in-session__bag-name{margin:0;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dial-in-session__bag-roaster{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.dial-in-session__bag-new-badge{flex-shrink:0;padding:2px 8px;background:var(--color-success-100);color:var(--color-success-700);font-size:var(--font-size-xs);font-weight:600;border-radius:var(--radius-full)}.dial-in-session__bag-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);font-size:var(--font-size-xs);color:var(--color-text-muted)}.dial-in-session__bag-origin,.dial-in-session__bag-roast,.dial-in-session__bag-remaining{display:flex;align-items:center;gap:2px}.dial-in-session__bag-change{flex-shrink:0;padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);cursor:pointer;transition:all var(--transition-fast);min-height:var(--touch-target-min)}.dial-in-session__bag-change:hover{background:var(--color-neutral-100);border-color:var(--color-primary-400)}.dial-in-session__bag-change:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:2px}.dial-in-session__bag-selector{margin-top:var(--space-3);background:var(--color-surface);border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.dial-in-session__bag-selector-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3);background:var(--color-neutral-100);border-bottom:1px solid var(--color-neutral-200);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.dial-in-session__bag-selector-close{background:transparent;border:none;padding:var(--space-1);cursor:pointer;color:var(--color-text-muted);font-size:var(--font-size-base)}.dial-in-session__bag-list{max-height:200px;overflow-y:auto}.dial-in-session__bag-option{display:flex;flex-direction:column;width:100%;padding:var(--space-3);background:transparent;border:none;border-bottom:1px solid var(--color-neutral-100);text-align:left;cursor:pointer;transition:background-color var(--transition-fast)}.dial-in-session__bag-option:last-child{border-bottom:none}.dial-in-session__bag-option:hover{background:var(--color-neutral-50)}.dial-in-session__bag-option.active{background:var(--color-primary-50)}.dial-in-session__bag-option.new{border-left:3px solid var(--color-success-500)}.dial-in-session__bag-option-name{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.dial-in-session__new-tag{font-size:var(--font-size-xs);color:var(--color-success-600)}.dial-in-session__bag-option-meta{display:flex;gap:var(--space-2);font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.dial-in-session__header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3);background:var(--color-primary-100);border-bottom:1px solid var(--color-primary-200)}.dial-in-session__title-area{display:flex;flex-direction:column;gap:var(--space-1)}.dial-in-session__title{margin:0;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary)}.dial-in-session__coffee{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.dial-in-session__close{background:var(--color-neutral-200);border:none;color:var(--color-text-primary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);font-size:var(--font-size-xs);cursor:pointer;transition:background-color var(--transition-fast)}.dial-in-session__close:hover{background:var(--color-neutral-300)}.dial-in-session__content{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3)}@media (min-width: 768px){.dial-in-session__content{display:grid;grid-template-columns:1fr 240px;gap:var(--space-3)}}.dial-in-session__form{display:flex;flex-direction:column;gap:var(--space-4)}.dial-in-session__timer-section{background:#fff;border-radius:var(--radius-md);padding:var(--space-3);position:relative;z-index:1}.dial-in-session__timer-section .brew-timer__display{min-height:100px}.dial-in-session__timer-section .brew-timer__time-large{font-size:2.5rem}.dial-in-session__params{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}@media (max-width: 400px){.dial-in-session__params{grid-template-columns:1fr}}.dial-in-session__param{background:#fff;border-radius:var(--radius-md);padding:var(--space-2);border:1px solid var(--color-neutral-100)}.dial-in-session__param label{display:block;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.dial-in-session__param-input{display:flex;align-items:center;gap:var(--space-1)}.dial-in-session__adj-btn{width:28px;height:28px;border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);background:var(--color-neutral-50);font-size:var(--font-size-base);font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;flex-shrink:0}.dial-in-session__adj-btn:hover{background:var(--color-primary-50);border-color:var(--color-primary-300)}.dial-in-session__adj-btn:active{transform:scale(.95)}.dial-in-session__input{flex:1;padding:var(--space-1) var(--space-2);border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);font-size:var(--font-size-base);font-family:var(--font-family-mono);text-align:center;width:100%;min-width:0;color:var(--color-text-primary)}.dial-in-session__input:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 2px #8b5a2b33}.dial-in-session__input:focus-visible{outline:3px solid var(--color-info-500);outline-offset:2px}.dial-in-session__ratio{text-align:center;font-size:var(--font-size-base);color:var(--color-text-primary);padding:var(--space-2);background:#fff;border-radius:var(--radius-md)}.dial-in-session__ratio strong{color:var(--color-primary-600);font-family:var(--font-family-mono)}.dial-in-session__section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);border:1px solid var(--color-neutral-100)}.dial-in-session__section-title{margin:0 0 var(--space-3) 0;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.dial-in-session__input-section{display:flex;flex-direction:column;gap:var(--space-3)}.dial-in-session__output-section{background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-primary-100) 100%);border:1px solid var(--color-primary-200)}.dial-in-session__brew-method{display:flex;flex-direction:column;gap:var(--space-2)}.dial-in-session__brew-method label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.dial-in-session__select{width:100%;padding:var(--space-2) var(--space-3);font-size:var(--font-size-base);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);background:transparent;color:var(--color-text-primary);cursor:pointer;transition:border-color var(--transition-fast)}.dial-in-session__select:focus{outline:none;border-color:var(--color-primary-400);background-color:var(--color-primary-50)}.dial-in-session__ratio-section{display:flex;flex-direction:column;gap:var(--space-2)}.dial-in-session__ratio-section>label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.dial-in-session__ratio-buttons{display:flex;flex-wrap:wrap;gap:var(--space-2)}.dial-in-session__ratio-btn{flex:1 1 calc(50% - var(--space-1));min-width:120px;padding:var(--space-2) var(--space-3);border:2px solid var(--color-neutral-200);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast);text-align:center}.dial-in-session__ratio-btn:hover{border-color:var(--color-primary-300);background:var(--color-primary-50)}.dial-in-session__ratio-btn.active{border-color:var(--color-primary-500);background:var(--color-primary-100);color:var(--color-primary-700);font-weight:600}.dial-in-session__param--full{background:transparent;border:none;padding:0}.dial-in-session__param--full .dial-in-session__param-input{background:var(--color-surface);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);padding:var(--space-2)}.dial-in-session__yield-display{text-align:center;padding:var(--space-4)}.dial-in-session__yield-label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.dial-in-session__yield-value{display:flex;align-items:baseline;justify-content:center;gap:var(--space-1)}.dial-in-session__yield-number{font-size:3rem;font-weight:700;font-family:var(--font-family-mono);color:var(--color-primary-700);line-height:1}.dial-in-session__yield-unit{font-size:var(--font-size-xl);font-weight:500;color:var(--color-text-secondary)}.dial-in-session__yield-formula{margin-top:var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-muted);font-family:var(--font-family-mono);display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;justify-content:center}.dial-in-session__yield-slider{width:100%;height:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--color-neutral-200);border-radius:4px;outline:none;cursor:pointer;margin-top:var(--space-3)}.dial-in-session__yield-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;background:var(--color-success-500);border-radius:50%;cursor:pointer;box-shadow:0 2px 4px #0003}.dial-in-session__yield-slider::-moz-range-thumb{width:28px;height:28px;background:var(--color-success-500);border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 4px #0003}.dial-in-session__yield-range{display:flex;justify-content:space-between;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.dial-in-session__yield-adjusted{font-size:var(--font-size-xs);color:var(--color-success-600);font-weight:500}.dial-in-session__yield-reset{background:var(--color-neutral-100);border:none;border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs);color:var(--color-text-muted);cursor:pointer;transition:all .2s ease}.dial-in-session__yield-reset:hover{background:var(--color-neutral-200);color:var(--color-text-primary)}.dial-in-session__dose-section{background:#fff;border-radius:var(--radius-md);padding:var(--space-3);border:1px solid var(--color-neutral-100)}.dial-in-session__dose-section label{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.dial-in-session__dose-value{font-size:var(--font-size-lg);font-weight:700;font-family:var(--font-family-mono);color:var(--color-primary-600);text-transform:none;letter-spacing:0}.dial-in-session__dose-slider{width:100%;height:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--color-neutral-200);border-radius:4px;outline:none;cursor:pointer}.dial-in-session__dose-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:24px;height:24px;background:var(--color-primary-500);border-radius:50%;cursor:pointer;box-shadow:0 2px 4px #0003}.dial-in-session__dose-slider::-moz-range-thumb{width:24px;height:24px;background:var(--color-primary-500);border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 4px #0003}.dial-in-session__dose-range{display:flex;justify-content:space-between;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.dial-in-session__rating{background:#fff;border-radius:var(--radius-md);padding:var(--space-3)}.dial-in-session__rating label{display:block;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.dial-in-session__stars{display:flex;justify-content:center;gap:var(--space-1)}.dial-in-session__star{width:36px;height:36px;border:none;background:none;font-size:1.5rem;color:var(--color-neutral-300);cursor:pointer;transition:all var(--transition-fast);padding:0}.dial-in-session__star:hover{transform:scale(1.1)}.dial-in-session__star.active{color:var(--color-warning-500)}.dial-in-session__notes{background:#fff;border-radius:var(--radius-md);padding:var(--space-3)}.dial-in-session__notes label{display:block;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.dial-in-session__note-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.dial-in-session__note-btn{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-2);border:2px solid var(--color-neutral-200);border-radius:var(--radius-md);background:#fff;cursor:pointer;transition:all var(--transition-fast)}.dial-in-session__note-btn:hover{border-color:var(--color-primary-300);background:var(--color-primary-50)}.dial-in-session__note-btn.active{border-color:var(--color-primary-500);background:var(--color-primary-100)}.dial-in-session__note-emoji{font-size:var(--font-size-xl)}.dial-in-session__note-label{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-muted)}.dial-in-session__suggestion{margin-top:var(--space-2);padding:var(--space-2);background:var(--color-info-50);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-info-700);text-align:center}.dial-in-session__save-btn{padding:var(--space-3);background:var(--color-success-500);border:none;border-radius:var(--radius-md);color:#fff;font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.dial-in-session__save-btn:hover{background:var(--color-success-600);transform:translateY(-1px)}.dial-in-session__save-btn:active{transform:translateY(0)}.dial-in-session__attempts{background:var(--color-primary-50);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.dial-in-session__attempts-header{display:flex;justify-content:space-between;align-items:center}.dial-in-session__attempts-header h3{margin:0;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.dial-in-session__count{background:var(--color-primary-100);color:var(--color-primary-700);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600}.dial-in-session__empty{text-align:center;padding:var(--space-4);background:var(--color-primary-50);border-radius:var(--radius-md)}.dial-in-session__empty span{font-size:2rem;display:block;margin-bottom:var(--space-2);color:var(--color-text-primary)}.dial-in-session__empty p{margin:0;font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:500}.dial-in-session__attempts-list{display:flex;flex-direction:column;gap:var(--space-2);max-height:300px;overflow-y:auto}.dial-in-session__attempt{display:grid;grid-template-columns:auto 1fr auto auto;gap:var(--space-2);align-items:center;padding:var(--space-2);background:var(--color-neutral-50);border-radius:var(--radius-md);border-left:3px solid var(--color-neutral-300);font-size:var(--font-size-xs)}.dial-in-session__attempt.good{border-left-color:var(--color-success-500);background:var(--color-success-50)}.dial-in-session__attempt.bad{border-left-color:var(--color-danger-500);background:var(--color-danger-50)}.dial-in-session__attempt-num{font-weight:700;color:var(--color-text-muted)}.dial-in-session__attempt-params{display:flex;gap:var(--space-2);font-family:var(--font-family-mono);color:var(--color-text-secondary)}.dial-in-session__attempt-rating{color:var(--color-warning-500);font-size:var(--font-size-sm)}.dial-in-session__attempt-note{font-size:var(--font-size-base)}.dial-in-session__lock-btn{width:100%;padding:var(--space-3);background:var(--color-warning-500);border:none;border-radius:var(--radius-md);color:#fff;font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.dial-in-session__lock-btn:hover{background:var(--color-warning-600)}.dial-in-session__tips{background:var(--color-neutral-50);border-radius:var(--radius-md);padding:var(--space-3)}.dial-in-session__tips h4{margin:0 0 var(--space-2) 0;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted)}.dial-in-session__tips ul{margin:0;padding:0 0 0 var(--space-4);font-size:var(--font-size-xs);color:var(--color-text-muted)}.dial-in-session__tips li{margin-bottom:var(--space-1)}@media (max-width: 767px){.dial-in-session__attempts{order:-1;max-height:none}.dial-in-session__attempts-list{flex-direction:row;overflow-x:auto;max-height:100px;gap:var(--space-2)}.dial-in-session__attempt{flex-shrink:0;width:auto;min-width:120px;display:flex;flex-direction:column;gap:var(--space-1);text-align:center}}.dial-in-page{padding:var(--space-4);max-width:800px;margin:0 auto;min-height:100vh;background:var(--color-neutral-50)}.dial-in-page .page-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.dial-in-page .page-header h1{font-family:var(--font-family-serif);font-size:var(--font-size-xl);color:var(--color-text-primary);margin:0}.dial-in-page .back-btn{padding:var(--space-2) var(--space-3);border:1px solid var(--color-neutral-300);background:#fff;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);color:var(--color-text-secondary);min-height:44px}.dial-in-page .back-btn:hover{background:var(--color-neutral-100)}.dial-in-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);gap:var(--space-4)}.dial-in-page .empty-state{text-align:center;padding:var(--space-8);color:var(--color-text-muted)}.dial-in-page .empty-state p{margin-bottom:var(--space-4)}.dial-in-page .btn-primary{padding:var(--space-3) var(--space-6);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-base);font-weight:600;min-height:48px}.dial-in-page .btn-primary:hover{background:var(--color-primary-600)}.dial-in-page .auth-required{text-align:center;padding:var(--space-8)}.dial-in-page .auth-required h2{font-family:var(--font-family-serif);margin-bottom:var(--space-2)}.dial-in-page .auth-required p{color:var(--color-text-muted)}.recipes-page{min-height:100vh;background:var(--color-neutral-50);padding:var(--space-4);padding-bottom:calc(70px + var(--space-8));max-width:800px;margin:0 auto;box-sizing:border-box}.recipes-header{margin-bottom:var(--space-4)}.header-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.recipes-header h1{font-size:var(--font-size-2xl);font-weight:700;color:var(--color-text-primary);margin:0}.btn-create{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);min-height:44px}.btn-create:hover{background:var(--color-primary-600);transform:translateY(-1px)}.view-tabs{display:flex;gap:var(--space-2);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.view-tabs::-webkit-scrollbar{display:none}.tab-btn{background:#fff;border:1px solid var(--color-neutral-300);color:var(--color-text-secondary);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);min-height:44px}.tab-btn:hover{background:var(--color-neutral-100);border-color:var(--color-neutral-400)}.tab-btn.active{background:var(--color-primary-500);color:#fff;border-color:var(--color-primary-500);font-weight:600}.filters-section{background:#fff;padding:var(--space-3);border-radius:var(--radius-lg);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.search-box{display:none;position:relative;margin-bottom:var(--space-3)}.search-icon{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);font-size:var(--font-size-base);color:var(--color-text-muted)}.search-input{width:100%;padding:var(--space-3) var(--space-3) var(--space-3) var(--space-10);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-base);background:var(--color-neutral-50);transition:all var(--transition-fast);min-height:48px}.search-input:focus{outline:none;border-color:var(--color-primary-500);background:#fff;box-shadow:0 0 0 3px #8b5a2b1a}.filter-row{display:flex;gap:var(--space-2);flex-wrap:wrap}.filter-select,.filter-input{flex:1;min-width:120px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:transparent;min-height:44px}.filter-select:focus,.filter-input:focus{outline:none;border-color:var(--color-primary-400);background-color:var(--color-primary-50)}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);color:var(--color-text-muted)}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8) var(--space-4);text-align:center;color:var(--color-danger-500)}.error-state button{margin-top:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-danger-500);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);text-align:center}.empty-icon{font-size:3rem;margin-bottom:var(--space-3)}.empty-state h3{font-size:var(--font-size-lg);color:var(--color-text-primary);margin:0 0 var(--space-2)}.empty-state p{color:var(--color-text-muted);margin:0 0 var(--space-4)}.btn-primary{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:all var(--transition-fast);min-height:48px}.recipes-grid{display:grid;grid-template-columns:1fr;gap:var(--space-4);padding:var(--space-4);box-sizing:border-box;width:100%}@media (min-width: 640px){.recipes-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.recipes-grid{grid-template-columns:repeat(3,1fr);max-width:1200px;margin:0 auto}}.recipe-card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm);cursor:pointer;transition:all var(--transition-fast);display:flex;flex-direction:column;gap:var(--space-2);box-sizing:border-box;min-width:0}.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.recipe-card-header{display:flex;align-items:center;gap:var(--space-2)}.brew-method-icon{font-size:1.5rem}.brew-method-name{font-size:var(--font-size-sm);color:var(--color-primary-500);font-weight:500}.difficulty-badge{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-full)}.favorite-star-btn{margin-left:auto;background:none;border:none;font-size:1.4rem;color:var(--color-neutral-400);cursor:pointer;padding:var(--space-1);line-height:1;transition:all var(--transition-fast);border-radius:var(--radius-full)}.favorite-star-btn:hover{color:var(--color-warning-500);background:var(--color-warning-50, rgba(245, 158, 11, .1));transform:scale(1.1)}.favorite-star-btn.favorited{color:var(--color-warning-500)}.favorite-star-btn:disabled{opacity:.5;cursor:not-allowed}.recipe-name{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0;line-height:1.3}.recipe-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-meta{display:flex;flex-direction:column;gap:var(--space-1)}.meta-row{display:flex;gap:var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.meta-item{display:flex;align-items:center;gap:var(--space-1)}.meta-icon{font-size:.9em}.recipe-rating{display:flex;align-items:center;gap:var(--space-2)}.stars{display:flex;gap:2px}.star{color:var(--color-neutral-300);font-size:var(--font-size-sm)}.star.filled{color:var(--color-warning-500)}.star.half{background:linear-gradient(90deg,var(--color-warning-500) 50%,var(--color-neutral-300) 50%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.rating-text{font-size:var(--font-size-sm);color:var(--color-text-muted)}.rating-count{color:var(--color-text-muted);margin-left:var(--space-1)}.recipe-footer{display:flex;justify-content:space-between;align-items:center;padding-top:var(--space-2);border-top:1px solid var(--color-neutral-100);font-size:var(--font-size-xs);color:var(--color-text-muted)}.creator{font-weight:500}.pagination{display:flex;justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-4)}.pagination-btn{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--transition-fast);min-height:44px}.pagination-btn:disabled{background:var(--color-neutral-300);cursor:not-allowed}.pagination-info{font-size:var(--font-size-sm);color:var(--color-text-muted)}.quick-rating{background:#fff;border-radius:var(--radius-xl);padding:var(--space-5);box-shadow:var(--shadow-md)}.quick-rating__title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);text-align:center;margin:0 0 var(--space-4) 0}.quick-rating__emoji-grid{display:flex;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-4)}.quick-rating__emoji-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3);background:var(--color-neutral-50);border:2px solid var(--color-neutral-200);border-radius:var(--radius-lg);cursor:pointer;transition:all .2s ease;min-width:60px;touch-action:manipulation}.quick-rating__emoji-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}.quick-rating__emoji-card:active{transform:scale(.95)}.quick-rating__emoji-card.selected{border-width:3px;transform:scale(1.05);box-shadow:var(--shadow-md)}.quick-rating__emoji-card--danger.selected{border-color:var(--color-danger-500);background:var(--color-danger-50)}.quick-rating__emoji-card--warning.selected{border-color:var(--color-warning-500);background:var(--color-warning-50)}.quick-rating__emoji-card--neutral.selected{border-color:var(--color-neutral-500);background:var(--color-neutral-100)}.quick-rating__emoji-card--success.selected{border-color:var(--color-success-500);background:var(--color-success-50)}.quick-rating__emoji-card--premium.selected{border-color:var(--color-premium-500);background:var(--color-premium-50)}.quick-rating__emoji{font-size:2rem}.quick-rating__emoji-label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500}.quick-rating__notes-section{margin-bottom:var(--space-4);animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.quick-rating__notes-label,.quick-rating__repeat-label{display:block;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-2);font-weight:500}.quick-rating__note-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.quick-rating__note-chip{padding:var(--space-2) var(--space-3);background:var(--color-neutral-100);border:1px solid var(--color-neutral-200);border-radius:var(--radius-full);font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease}.quick-rating__note-chip:hover{background:var(--color-primary-50);border-color:var(--color-primary-200)}.quick-rating__note-chip.selected{background:var(--color-primary-100);border-color:var(--color-primary-500);color:var(--color-primary-700);font-weight:500}.quick-rating__repeat-section{margin-bottom:var(--space-4)}.quick-rating__repeat-btns{display:flex;gap:var(--space-2)}.quick-rating__repeat-btn{flex:1;padding:var(--space-3);background:var(--color-neutral-50);border:2px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-base);cursor:pointer;transition:all .15s ease;min-height:48px}.quick-rating__repeat-btn:hover{background:var(--color-neutral-100)}.quick-rating__repeat-btn.selected.yes{background:var(--color-success-50);border-color:var(--color-success-500);color:var(--color-success-700)}.quick-rating__repeat-btn.selected.no{background:var(--color-danger-50);border-color:var(--color-danger-500);color:var(--color-danger-700)}.quick-rating__details-section{margin-bottom:var(--space-4)}.quick-rating__expand-btn{width:100%;padding:var(--space-3);background:transparent;border:1px dashed var(--color-neutral-300);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;transition:all .15s ease}.quick-rating__expand-btn:hover{border-color:var(--color-primary-400);color:var(--color-primary-600)}.quick-rating__textarea{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:inherit;resize:vertical;min-height:80px}.quick-rating__textarea:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-100)}.quick-rating__actions{display:flex;gap:var(--space-3)}.quick-rating__skip-btn{flex:1;padding:var(--space-3) var(--space-4);background:transparent;border:1px solid var(--color-neutral-300);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-base);cursor:pointer;transition:all .15s ease;min-height:48px}.quick-rating__skip-btn:hover{border-color:var(--color-neutral-400);color:var(--color-text-secondary)}.quick-rating__submit-btn{flex:2;padding:var(--space-3) var(--space-4);background:var(--color-primary-500);border:none;border-radius:var(--radius-md);color:#fff;font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all .15s ease;min-height:48px}.quick-rating__submit-btn:hover:not(:disabled){background:var(--color-primary-600)}.quick-rating__submit-btn:disabled{opacity:.5;cursor:not-allowed}.quick-rating--compact{display:flex;align-items:center;gap:var(--space-3);background:var(--color-neutral-50);border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);padding:var(--space-3);box-shadow:none}.quick-rating--compact .quick-rating__label{font-size:var(--font-size-sm);color:var(--color-text-secondary);white-space:nowrap}.quick-rating__emoji-row{display:flex;gap:var(--space-1)}.quick-rating__emoji-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:transparent;border:2px solid transparent;border-radius:var(--radius-md);font-size:1.25rem;cursor:pointer;transition:all .15s ease}.quick-rating__emoji-btn:hover{background:var(--color-neutral-100);transform:scale(1.1)}.quick-rating__emoji-btn.selected{background:var(--color-primary-100);border-color:var(--color-primary-500);transform:scale(1.15)}@media (max-width: 480px){.quick-rating__emoji-card{min-width:52px;padding:var(--space-2)}.quick-rating__emoji{font-size:1.75rem}.quick-rating__emoji-label{display:none}}.recipe-step-mode{position:fixed;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#1a1005,#2d1f12);color:#fff;display:flex;flex-direction:column;z-index:1000;overflow:hidden}.step-mode-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);background:#0000004d}.exit-btn,.reset-btn{width:44px;height:44px;border-radius:var(--radius-full);background:#ffffff1a;border:none;color:#fff;font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast)}.exit-btn:hover,.reset-btn:hover{background:#fff3}.recipe-info{text-align:center}.recipe-name{display:block;font-size:var(--font-size-base);font-weight:600;color:#ffffffe6}.dose-info{display:block;font-size:var(--font-size-sm);color:#fff9;font-family:var(--font-family-mono)}.overall-progress{padding:var(--space-2) var(--space-4);display:flex;align-items:center;gap:var(--space-3)}.overall-progress .progress-bar{flex:1;height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden}.overall-progress .progress-fill{height:100%;background:var(--color-primary-400);transition:width .3s ease}.time-display{font-size:var(--font-size-sm);color:#fff9;font-family:var(--font-family-mono);min-width:100px;text-align:right}.current-step{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6);text-align:center}.step-number{font-size:var(--font-size-sm);color:#ffffff80;text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-2)}.step-name{font-size:clamp(1.5rem,5vw,2.5rem);font-weight:700;color:#fff;margin:0 0 var(--space-6)}.step-instruction{margin-bottom:var(--space-6)}.water-target{display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin-bottom:var(--space-4)}.target-emoji{font-size:2rem}.target-amount{font-size:clamp(3rem,12vw,6rem);font-weight:700;font-family:var(--font-family-mono);color:var(--color-info-300)}.instruction-text{font-size:var(--font-size-lg);color:#fffc;max-width:400px;line-height:1.6}.stage-timer{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-4)}.timer-display{font-size:clamp(2.5rem,10vw,5rem);font-weight:700;font-family:var(--font-family-mono);color:#fff}.timer-target{font-size:var(--font-size-xl);color:#fff6;font-family:var(--font-family-mono)}.stage-progress{width:100%;max-width:300px;height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden}.stage-progress-fill{height:100%;background:var(--color-success-500);transition:width .3s ease,background .3s ease}.stage-progress-fill.warning{background:var(--color-warning-500)}.step-controls{display:flex;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-6)}.control-btn{width:64px;height:64px;border-radius:var(--radius-full);border:2px solid rgba(255,255,255,.2);background:#ffffff1a;color:#fff;font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.control-btn:hover:not(:disabled){background:#fff3;border-color:#ffffff4d}.control-btn:disabled{opacity:.3;cursor:not-allowed}.control-btn.main{width:88px;height:88px;font-size:2rem;background:var(--color-primary-500);border-color:var(--color-primary-400)}.control-btn.main:hover{background:var(--color-primary-600)}.control-btn.main.running{background:var(--color-warning-600);border-color:var(--color-warning-500)}.upcoming-step{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);background:#ffffff0d;border-top:1px solid rgba(255,255,255,.1)}.upcoming-label{font-size:var(--font-size-sm);color:#fff6}.upcoming-name{font-size:var(--font-size-sm);color:#ffffffb3;font-weight:500}@media (min-width: 768px){.current-step{padding:var(--space-8)}.control-btn{width:72px;height:72px}.control-btn.main{width:100px;height:100px}}@supports (padding: env(safe-area-inset-top)){.step-mode-header{padding-top:calc(var(--space-4) + env(safe-area-inset-top))}.step-controls{padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom))}}.completion-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1001;padding:var(--space-4)}.completion-modal{background:#fff;border-radius:var(--radius-xl);padding:var(--space-6);max-width:320px;width:100%;text-align:center;animation:modalSlideUp .3s ease}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.completion-icon{font-size:3rem;margin-bottom:var(--space-3)}.completion-modal h2{font-size:var(--font-size-xl);color:var(--color-text-primary);margin:0 0 var(--space-2)}.completion-time{font-size:var(--font-size-lg);font-weight:600;color:var(--color-primary-600);margin:0 0 var(--space-2)}.completion-message{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0 0 var(--space-4)}.completion-actions{display:flex;flex-direction:column;gap:var(--space-3)}.btn-rate-brew{padding:var(--space-3) var(--space-4);background:linear-gradient(135deg,var(--color-premium-400) 0%,var(--color-premium-600) 100%);color:#fff;border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all .2s;min-height:48px}.btn-rate-brew:hover{transform:translateY(-1px);box-shadow:0 4px 12px #c4a45c66}.btn-log-brew{padding:var(--space-3) var(--space-4);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:background .2s;min-height:48px}.btn-log-brew:hover{background:var(--color-primary-600)}.btn-done{padding:var(--space-3) var(--space-4);background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-neutral-300);border-radius:var(--radius-lg);font-size:var(--font-size-base);cursor:pointer;transition:all .2s}.btn-done:hover{background:var(--color-neutral-100)}.completion-rating{animation:fadeIn .3s ease}.completion-rating .quick-rating{box-shadow:none;padding:0}.recipe-detail-page{min-height:100vh;background:var(--color-neutral-50)}.detail-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:#fff;border-bottom:1px solid var(--color-neutral-200);position:sticky;top:0;z-index:100}.back-btn{background:none;border:none;font-size:var(--font-size-xl);cursor:pointer;padding:var(--space-2);color:var(--color-text-secondary);border-radius:var(--radius-md)}.back-btn:hover{background:var(--color-neutral-100)}.detail-header .header-content{flex:1}.detail-header .header-content h1{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0}.header-actions{display:flex;flex-direction:row;flex-wrap:nowrap;gap:var(--space-2);align-items:center}.btn-favorite-star{background:none;border:none;font-size:1.5rem;color:var(--color-neutral-400);cursor:pointer;padding:var(--space-2);line-height:1;transition:all var(--transition-fast);border-radius:var(--radius-full);min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.btn-favorite-star:hover{color:var(--color-warning-500);background:var(--color-warning-50, rgba(245, 158, 11, .1));transform:scale(1.1)}.btn-favorite-star.active{color:var(--color-warning-500)}.btn-favorite-star:disabled{opacity:.5;cursor:not-allowed}.edit-delete-row{display:flex;gap:var(--space-2);align-items:center}.btn-favorite{background:#fff;border:1px solid var(--color-warning-500);color:var(--color-warning-600);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast);min-height:44px}.btn-favorite.active{background:var(--color-warning-500);color:#fff}.btn-edit{background:var(--color-primary-500);border:none;color:#fff;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;min-height:44px;flex-shrink:0;white-space:nowrap}.btn-delete{background:#fff;border:1px solid var(--color-danger-500);color:var(--color-danger-500);padding:var(--space-2);border-radius:var(--radius-md);cursor:pointer;min-height:44px;min-width:44px;flex-shrink:0}.delete-confirm{display:flex;gap:var(--space-2);align-items:center;background:var(--color-danger-50, #fef2f2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md)}.delete-confirm span{font-size:var(--font-size-sm);color:var(--color-danger-600);font-weight:500}.btn-confirm-yes{background:var(--color-danger-500);color:#fff;border:none;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;min-height:32px}.btn-confirm-no{background:#fff;color:var(--color-neutral-600);border:1px solid var(--color-neutral-300);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;min-height:32px}.loading-state,.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);text-align:center}.spinner{width:40px;height:40px;border:3px solid var(--color-neutral-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--space-3)}.error-state span{font-size:2rem;margin-bottom:var(--space-2)}.error-state button{margin-top:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4)}.modal-content{background:#fff;border-radius:var(--radius-lg);padding:var(--space-6);max-width:400px;width:100%}.modal-content h3{margin:0 0 var(--space-2);font-size:var(--font-size-lg)}.modal-content p{color:var(--color-text-secondary);margin:0 0 var(--space-4)}.modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end}.btn-cancel{background:var(--color-neutral-200);color:var(--color-text-primary);border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);cursor:pointer}.btn-danger{background:var(--color-danger-500);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);cursor:pointer}.detail-content{padding:var(--space-4);max-width:800px;margin:0 auto}.recipe-hero{background:#fff;border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.brew-method-badge{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-primary-50);color:var(--color-primary-600);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500;margin-bottom:var(--space-3)}.method-icon{font-size:1.2em}.recipe-hero h1{font-size:var(--font-size-2xl);font-weight:700;color:var(--color-text-primary);margin:0 0 var(--space-2)}.recipe-hero .recipe-description{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0 0 var(--space-4);line-height:1.6}.recipe-creator{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-4)}.difficulty{background:var(--color-neutral-100);color:var(--color-text-primary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:500}.visibility{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.visibility.public{background:var(--color-success-50);color:var(--color-success-700)}.visibility.private{background:var(--color-neutral-100);color:var(--color-text-muted)}.rating-section{border-top:1px solid var(--color-neutral-200);padding-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.rating-display{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.rating-value{font-size:var(--font-size-xl);font-weight:700;color:var(--color-warning-600)}.rating-count{font-size:var(--font-size-sm);color:var(--color-text-muted)}.rate-action{display:flex;flex-direction:column;gap:var(--space-2)}.rate-label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.rating-stars.interactive{display:flex;gap:var(--space-1)}.star-btn{background:none;border:none;font-size:2rem;color:var(--color-neutral-300);cursor:pointer;padding:var(--space-2);transition:all var(--transition-fast);min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.star-btn:hover{transform:scale(1.15)}.star-btn.active{color:var(--color-warning-500)}@media (min-width: 640px){.rating-section{flex-direction:row;justify-content:space-between;align-items:center}.rate-action{flex-direction:row;align-items:center}.rating-value{font-size:var(--font-size-2xl)}.star-btn{font-size:1.5rem;padding:var(--space-1)}}.quick-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);margin-bottom:var(--space-4)}.stat{background:#fff;border-radius:var(--radius-md);padding:var(--space-3);text-align:center;box-shadow:var(--shadow-sm)}.stat-value{display:block;font-size:var(--font-size-lg);font-weight:700;color:var(--color-primary-500)}.stat-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.stages-section{margin-bottom:var(--space-4)}.stages-section h2{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-3)}.stages-timeline{display:flex;flex-direction:column;gap:var(--space-3)}.stage-card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm);border-left:4px solid var(--color-primary-500)}.stage-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.stage-header h3{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0;flex:1}.stage-duration{font-size:var(--font-size-sm);color:var(--color-text-muted);background:var(--color-neutral-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.stage-parameters{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--space-2);margin-bottom:var(--space-2)}.parameter{background:var(--color-neutral-50);padding:var(--space-2);border-radius:var(--radius-sm);display:flex;flex-direction:column}.param-name{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.param-value{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary)}.stage-notes{font-size:var(--font-size-sm);color:var(--color-text-primary);font-style:italic;margin:0;padding:var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-sm);border-left:3px solid var(--color-warning-500)}.tags-section{margin-bottom:var(--space-4)}.tags-section h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-2)}.tag{background:var(--color-primary-50);color:var(--color-primary-700);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500}.btn-use-recipe{width:100%;background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-4);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:600;cursor:pointer;margin-bottom:var(--space-4);transition:all var(--transition-fast);min-height:56px}.btn-use-recipe:hover{background:var(--color-primary-600)}.recipe-meta-section{display:flex;justify-content:space-around;padding:var(--space-4);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.recipe-meta-section .meta-item{display:flex;flex-direction:column;align-items:center;text-align:center}.recipe-meta-section .meta-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase}.recipe-meta-section .meta-value{font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:500}@media (max-width: 640px){.quick-stats{grid-template-columns:repeat(2,1fr)}}.equipment-display-section{background:#fff;border-radius:var(--radius-lg);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm);overflow:hidden}.section-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-4);background:#fff;border:none;cursor:pointer;text-align:left}.section-toggle:hover{background:var(--color-neutral-50)}.toggle-left{display:flex;align-items:center;gap:var(--space-3)}.equipment-display-section .section-icon{font-size:1.5rem}.equipment-display-section h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0}.toggle-arrow{font-size:var(--font-size-sm);color:var(--color-text-muted);transition:transform var(--transition-fast)}.toggle-arrow.expanded{transform:rotate(180deg)}.equipment-list{padding:0 var(--space-4) var(--space-4);border-top:1px solid var(--color-neutral-100)}.equipment-item-display{background:var(--color-neutral-50);border-radius:var(--radius-md);padding:var(--space-3);margin-top:var(--space-3)}.equipment-header-display{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.equipment-type{font-weight:600;color:var(--color-text-primary)}.equipment-model{font-size:var(--font-size-sm);color:var(--color-text-muted)}.equipment-params-display{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--space-2)}.equipment-param{background:#fff;padding:var(--space-2);border-radius:var(--radius-sm);display:flex;flex-direction:column}.equipment-param .param-name{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.equipment-param .param-value{font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary-500)}.stage-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--space-3);line-height:1.5}.param-desc{font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic;display:block;margin-top:var(--space-1)}.base-dose-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.base-dose-section h2{font-size:var(--font-size-base);font-weight:600;margin:0 0 var(--space-4)}.dose-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.dose-stat{text-align:center;padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.dose-stat.highlight{background:var(--color-primary-50);border:2px solid var(--color-primary-200)}.dose-value{display:block;font-size:var(--font-size-2xl);font-weight:700;color:var(--color-text-primary)}.dose-stat.highlight .dose-value{color:var(--color-primary-600)}.dose-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:var(--space-1)}.brew-params-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.brew-params-section h2{font-size:var(--font-size-base);font-weight:600;margin:0 0 var(--space-4)}.params-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}@media (min-width: 480px){.params-grid{grid-template-columns:repeat(4,1fr)}}.param-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--color-neutral-50);border-radius:var(--radius-md)}.param-icon{font-size:1.25rem}.param-item .param-value{display:block;font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary)}.param-item .param-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted)}.brew-notes{margin-top:var(--space-3);padding:var(--space-3);background:var(--color-neutral-100);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-primary);border-left:3px solid var(--color-primary-500)}.applicability-section{background:#fff;border-radius:var(--radius-lg);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm);overflow:hidden}.applicability-summary{font-size:var(--font-size-sm);color:var(--color-text-muted);display:block;margin-top:var(--space-1)}.applicability-group{margin-bottom:var(--space-3)}.applicability-group:last-child{margin-bottom:0}.applicability-group h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin:0 0 var(--space-2)}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.applicability-tag{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm)}.applicability-tag.roast{background:var(--color-warning-50);color:var(--color-warning-700)}.applicability-tag.processing{background:var(--color-success-50);color:var(--color-success-700)}.freshness-range{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}.stages-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.stages-summary{font-size:var(--font-size-sm);color:var(--color-text-muted);background:var(--color-neutral-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.stage-detail-group{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-3)}.stage-detail{display:flex;align-items:center;gap:var(--space-2);background:var(--color-neutral-50);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md)}.detail-icon{font-size:1rem}.detail-value{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary)}.detail-label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.stage-timing{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.timing-badge{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.timing-badge.delay{background:var(--color-warning-100);color:var(--color-warning-700)}.timing-badge.duration{background:var(--color-info-100);color:var(--color-info-700)}.stage-optional{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.optional-tag{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-sm);color:var(--color-text-secondary)}.stages-section .stage-notes{font-size:var(--font-size-sm);color:var(--color-text-primary);font-style:italic;margin:var(--space-2) 0 0 0;padding:var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-sm);border-left:3px solid var(--color-warning-500);border-top:none}.notes-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.notes-section h2{font-size:var(--font-size-base);font-weight:600;margin:0 0 var(--space-3)}.notes-section p{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.6;margin:0}.media-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.media-section h2{font-size:var(--font-size-base);font-weight:600;margin:0 0 var(--space-4);color:var(--color-text-primary)}.video-container{position:relative;width:100%;padding-bottom:56.25%;background:var(--color-neutral-900);border-radius:var(--radius-md);overflow:hidden}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.video-list{display:flex;flex-direction:column;gap:var(--space-4)}.video-item{border-radius:var(--radius-md);overflow:hidden}.video-thumbnail-btn{position:relative;width:100%;padding:0;border:none;cursor:pointer;background:none}.video-thumbnail{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius-md)}.play-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:64px;height:64px;background:#000000b3;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;transition:all var(--transition-fast)}.video-thumbnail-btn:hover .play-overlay{background:var(--color-primary-500);transform:translate(-50%,-50%) scale(1.1)}.video-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin:var(--space-2) 0 0 0}.video-description{font-size:var(--font-size-xs);color:var(--color-text-muted);margin:var(--space-1) 0 0 0}.images-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.images-section h2{font-size:var(--font-size-base);font-weight:600;margin:0 0 var(--space-4)}.image-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}@media (min-width: 640px){.image-gallery{grid-template-columns:repeat(3,1fr)}}.gallery-item img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-md)}.image-caption{font-size:var(--font-size-xs);color:var(--color-text-muted);margin:var(--space-1) 0 0 0;text-align:center}.parent-recipe-info{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--color-info-50);border-radius:var(--radius-md)}.fork-icon{font-size:1rem}.parent-link{background:none;border:none;color:var(--color-primary-500);font-weight:500;cursor:pointer;padding:0;text-decoration:underline}.parent-link:hover{color:var(--color-primary-600)}.parent-creator{color:var(--color-text-muted)}.recipe-actions-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}.btn-brew-recipe{background:var(--color-success-500);color:#fff;border:none;padding:var(--space-3) var(--space-5);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;min-height:48px;transition:all var(--transition-fast);display:flex;align-items:center;gap:var(--space-2);box-shadow:var(--shadow-md)}.btn-brew-recipe:hover{background:var(--color-success-600);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn-brew-recipe.primary{background:linear-gradient(135deg,var(--color-primary-500),var(--color-primary-600))}.btn-brew-recipe.primary:hover{background:linear-gradient(135deg,var(--color-primary-600),var(--color-primary-700))}.btn-fork{background:var(--color-info-500);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;min-height:44px;transition:all var(--transition-fast)}.btn-fork:hover{background:var(--color-info-600)}.btn-fork:disabled{opacity:.6;cursor:not-allowed}.fork-count{font-size:var(--font-size-sm);color:var(--color-text-muted)}.equipment-guidance-section{background:#fff;border-radius:var(--radius-lg);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm);overflow:hidden}.equipment-guidance-section h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0}.equipment-content{padding:var(--space-4);border-top:1px solid var(--color-neutral-100)}.equipment-group{margin-bottom:var(--space-4)}.equipment-group:last-child{margin-bottom:0}.equipment-group h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin:0 0 var(--space-3)}.grinder-presets-grid{display:grid;grid-template-columns:1fr;gap:var(--space-2)}@media (min-width: 480px){.grinder-presets-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 768px){.grinder-presets-grid{grid-template-columns:repeat(3,1fr)}}.grinder-preset-card{display:flex;flex-direction:column;background:var(--color-neutral-50);padding:var(--space-3);border-radius:var(--radius-md);border-left:3px solid var(--color-primary-500)}.grinder-brand{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.grinder-model{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-1)}.grinder-setting{font-size:var(--font-size-base);font-weight:700;color:var(--color-primary-600)}.grinder-notes{font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic;margin-top:var(--space-1)}.machine-presets-grid{display:grid;gap:var(--space-2)}.machine-preset-card{display:flex;flex-direction:column;background:var(--color-neutral-50);padding:var(--space-3);border-radius:var(--radius-md)}.machine-brand{font-weight:600;color:var(--color-text-primary)}.machine-profile{font-size:var(--font-size-sm);color:var(--color-text-muted)}.required-equipment-list{display:flex;flex-direction:column;gap:var(--space-2)}.required-equipment-item{background:var(--color-neutral-50);padding:var(--space-3);border-radius:var(--radius-md)}.equip-type{display:block;font-weight:600;color:var(--color-text-primary);text-transform:capitalize;margin-bottom:var(--space-1)}.equip-features{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-2)}.equip-options{display:flex;flex-wrap:wrap;gap:var(--space-2)}.budget-option,.premium-option{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.budget-option{background:var(--color-success-50);color:var(--color-success-700)}.premium-option{background:var(--color-warning-50);color:var(--color-warning-700)}.extras-list{display:flex;flex-direction:column;gap:var(--space-2)}.extra-item{display:flex;flex-direction:column;background:var(--color-neutral-50);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md)}.extra-name{font-weight:500;color:var(--color-text-primary)}.extra-benefit{font-size:var(--font-size-xs);color:var(--color-text-muted)}.espresso-profile-section{background:#fff;border-radius:var(--radius-lg);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm);overflow:hidden}.espresso-profile-section h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0}.profile-type-badge{font-size:var(--font-size-xs);color:var(--color-primary-600);background:var(--color-primary-50);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);display:inline-block;margin-top:var(--space-1)}.espresso-profile-content{padding:var(--space-4);border-top:1px solid var(--color-neutral-100)}.profile-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--space-4);line-height:1.6}.profile-phase{margin-bottom:var(--space-4)}.profile-phase h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin:0 0 var(--space-2)}.phase-details{display:flex;flex-wrap:wrap;gap:var(--space-2)}.phase-details span{background:var(--color-neutral-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text-primary)}.flow-limited{background:var(--color-info-50)!important;color:var(--color-info-700)!important}.pressure-curve-chart{margin-bottom:var(--space-3)}.chart-container{position:relative;height:150px;background:var(--color-neutral-50);border-radius:var(--radius-md);padding:var(--space-4);overflow:hidden}@media (min-width: 640px){.chart-container{height:200px}}.chart-point{position:absolute;width:12px;height:12px;background:var(--color-primary-500);border-radius:50%;transform:translate(-50%,50%);z-index:2}.point-label{position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;margin-bottom:var(--space-1)}.curve-line{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.chart-labels{display:flex;justify-content:space-between;margin-top:var(--space-2)}.y-label,.x-label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.pressure-points-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.pressure-point-tag{font-size:var(--font-size-xs);background:var(--color-neutral-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--color-text-primary)}.phase-name{color:var(--color-text-muted)}.profile-targets{display:flex;flex-wrap:wrap;gap:var(--space-2)}.target-badge{font-size:var(--font-size-sm);background:var(--color-success-50);color:var(--color-success-700);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full)}.extraction-targets-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.extraction-targets-section h2{font-size:var(--font-size-base);font-weight:600;margin:0 0 var(--space-4)}.targets-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}@media (min-width: 480px){.targets-grid{grid-template-columns:repeat(3,1fr)}}.target-item{text-align:center;padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.target-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-1)}.target-value{font-size:var(--font-size-base);font-weight:700;color:var(--color-primary-600)}.stage-beginner-tips{margin-top:var(--space-3);padding:var(--space-3);background:var(--color-info-50);border-radius:var(--radius-md);border-left:3px solid var(--color-info-500)}.stage-beginner-tips h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-info-700);margin:0 0 var(--space-2)}.tip-item{display:flex;gap:var(--space-2);margin-bottom:var(--space-2)}.tip-item:last-child{margin-bottom:0}.tip-icon{flex-shrink:0}.tip-text{font-size:var(--font-size-sm);color:var(--color-text-primary)}.mistakes-list{font-size:var(--font-size-sm)}.mistakes-label{color:var(--color-warning-700);font-weight:500}.mistakes-list ul{margin:var(--space-1) 0 0 0;padding-left:var(--space-4)}.mistakes-list li{color:var(--color-text-secondary);margin-bottom:var(--space-1)}.community-links-section{background:#fff;border-radius:var(--radius-lg);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm);overflow:hidden}.community-links-section h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0}.links-summary{font-size:var(--font-size-sm);color:var(--color-text-muted);display:block;margin-top:var(--space-1)}.community-links-content{padding:var(--space-4);border-top:1px solid var(--color-neutral-100)}.links-list{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.community-link-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md);text-decoration:none;transition:all var(--transition-fast)}.community-link-item:hover{background:var(--color-neutral-100)}.link-type-icon{font-size:1.25rem;flex-shrink:0}.link-info{flex:1;min-width:0}.link-title{display:block;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-1)}.link-description{display:block;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.link-meta{font-size:var(--font-size-xs);color:var(--color-text-muted)}.link-votes{display:flex;align-items:center;gap:var(--space-1)}.upvotes{font-size:var(--font-size-xs);color:var(--color-text-muted)}.no-links{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center;padding:var(--space-4)}.btn-add-link{width:100%;background:var(--color-primary-50);color:var(--color-primary-600);border:1px dashed var(--color-primary-300);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-add-link:hover{background:var(--color-primary-100);border-color:var(--color-primary-500)}.source-attribution{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--color-neutral-100);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--font-size-sm)}.source-label{color:var(--color-text-muted)}.source-link{color:var(--color-primary-500);text-decoration:none;font-weight:500}.source-link:hover{text-decoration:underline}.source-name{color:var(--color-text-primary);font-weight:500}.add-link-modal{max-width:450px}.add-link-modal .form-group{margin-bottom:var(--space-4)}.add-link-modal label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--space-1)}.add-link-modal select,.add-link-modal input{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--color-text-primary);background:transparent}.add-link-modal select:focus,.add-link-modal input:focus{outline:none;border-color:var(--color-primary-400);background-color:var(--color-primary-50)}.btn-primary{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);cursor:pointer;font-weight:500}.btn-primary:hover{background:var(--color-primary-600)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.user-history-section{background:#fff;border-radius:var(--radius-lg);margin:var(--space-4);overflow:hidden;box-shadow:var(--shadow-sm);border:2px solid var(--color-success-100)}.user-history-section .section-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-4);background:linear-gradient(135deg,var(--color-success-50) 0%,white 100%);border:none;cursor:pointer;text-align:left}.user-history-section .toggle-left{display:flex;align-items:center;gap:var(--space-3)}.user-history-section .section-icon{font-size:1.5rem}.user-history-section .toggle-left h2{font-size:var(--font-size-lg);margin:0;color:var(--color-text-primary)}.history-summary{font-size:var(--font-size-sm);color:var(--color-success-700);font-weight:500}.history-content{padding:var(--space-4);background:#fff}.history-sessions{display:flex;flex-direction:column;gap:var(--space-3)}.history-session-card{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-2) var(--space-3);padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast)}.history-session-card:hover{background:var(--color-neutral-100)}.session-date{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:500}.session-rating{font-size:var(--font-size-base);color:var(--color-warning-600);font-weight:600;text-align:right}.session-details{grid-column:1 / -1;font-size:var(--font-size-sm);color:var(--color-text-muted);font-family:var(--font-family-mono)}.session-notes{grid-column:1 / -1;font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic}.view-all-sessions{display:block;width:100%;margin-top:var(--space-3);padding:var(--space-3);background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-md);color:var(--color-primary-700);font-weight:500;text-align:center;cursor:pointer;transition:all var(--transition-fast)}.view-all-sessions:hover{background:var(--color-primary-100)}.btn-step-mode{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:linear-gradient(135deg,var(--color-info-500) 0%,var(--color-info-600) 100%);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-sm)}.btn-step-mode:hover{background:linear-gradient(135deg,var(--color-info-600) 0%,var(--color-info-700) 100%);transform:translateY(-1px);box-shadow:var(--shadow-md)}.recipe-editor-page{min-height:100vh;background:var(--color-neutral-50);padding-bottom:var(--space-8)}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);background:#fff;border-bottom:1px solid var(--color-neutral-200);position:sticky;top:0;z-index:100}.editor-header h1{font-size:var(--font-size-lg);font-weight:600;margin:0}.btn-back{background:none;border:none;color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;padding:var(--space-2)}.btn-save{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;min-height:44px}.btn-save:disabled{opacity:.6;cursor:not-allowed}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12)}.spinner{width:40px;height:40px;border:3px solid var(--color-neutral-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite}.editor-form{padding:var(--space-4);max-width:800px;margin:0 auto}.form-error{background:var(--color-danger-50);border:1px solid var(--color-danger-200);color:var(--color-danger-700);padding:var(--space-3);border-radius:var(--radius-md);margin-bottom:var(--space-4);display:flex;align-items:center;gap:var(--space-2)}.form-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.form-section h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-neutral-100)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-neutral-100)}.section-header h2{margin:0;padding:0;border:none}.form-field{margin-bottom:var(--space-4)}.form-field:last-child{margin-bottom:0}.form-field label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--space-2)}.form-input,.form-textarea,.form-select{width:100%;padding:var(--space-3);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-size:var(--font-size-base);background:transparent;transition:all var(--transition-fast);min-height:48px}.form-textarea{min-height:100px;resize:vertical}.form-input:focus,.form-textarea:focus,.form-select:focus{outline:none;border-color:var(--color-primary-400);background-color:var(--color-primary-50)}.form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.form-row.thirds{grid-template-columns:repeat(3,1fr)}@media (max-width: 640px){.form-row,.form-row.thirds{grid-template-columns:1fr}}.method-buttons{display:flex;gap:var(--space-2);flex-wrap:wrap}.method-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--color-neutral-50);border:2px solid var(--color-neutral-200);border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease;min-height:44px}.method-btn:hover{border-color:var(--color-primary-300);background:var(--color-primary-50)}.method-btn.active{border-color:var(--color-primary-600);background:var(--color-primary-500);color:#fff;box-shadow:0 3px 8px #8b5a2b4d}.method-icon{font-size:1.2rem}.method-name{font-size:var(--font-size-sm);font-weight:500}.method-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);margin-bottom:var(--space-2)}.method-btn-large{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6) var(--space-4);background:var(--color-neutral-100);border:2px solid var(--color-neutral-300);border-radius:var(--radius-lg);cursor:pointer;transition:all .2s ease;min-height:140px}.method-btn-large:hover{background:var(--color-primary-50);border-color:var(--color-primary-300)}.method-btn-large.active{background:var(--color-primary-500);border-color:var(--color-primary-500);color:#fff;box-shadow:0 4px 12px #8b5a2b4d;transform:translateY(-2px)}.method-btn-large.active .method-label,.method-btn-large.active .method-desc{color:#fff}.method-btn-large .method-icon{font-size:2.5rem;margin-bottom:var(--space-2)}.method-btn-large .method-label{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-1)}.method-btn-large .method-desc{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center}@media (max-width: 480px){.method-grid-2{grid-template-columns:1fr}.method-btn-large{min-height:100px;padding:var(--space-4)}}.toggle-group{display:flex;gap:var(--space-2)}.toggle-btn{flex:1;padding:var(--space-2) var(--space-3);background:#fff;border:2px solid var(--color-neutral-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);min-height:44px}.toggle-btn:hover{border-color:var(--color-primary-300)}.toggle-btn.active{border-color:var(--color-primary-500);background:var(--color-primary-50);font-weight:500}.btn-add-stage{background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer}.empty-stages{text-align:center;padding:var(--space-6);color:var(--color-text-muted)}.empty-stages .hint{font-size:var(--font-size-sm);margin-top:var(--space-2)}.stages-list{display:flex;flex-direction:column;gap:var(--space-4)}.stage-editor{background:var(--color-neutral-50);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);padding:var(--space-3)}.stage-editor-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.stage-number{width:28px;height:28px;background:var(--color-primary-500);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--font-size-sm);flex-shrink:0}.stage-name-input{flex:1;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.stage-duration-input{width:100px;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);text-align:right}.btn-remove-stage{width:32px;height:32px;background:var(--color-danger-100);color:var(--color-danger-500);border:none;border-radius:var(--radius-sm);font-size:var(--font-size-lg);cursor:pointer;display:flex;align-items:center;justify-content:center}.stage-parameters{margin-bottom:var(--space-3)}.parameter-row{display:flex;gap:var(--space-2);align-items:center;margin-bottom:var(--space-2)}.param-name-input{flex:2;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.param-value-input{width:80px;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);text-align:right}.param-unit-input{width:60px;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.btn-remove-param{width:28px;height:28px;background:var(--color-neutral-200);color:var(--color-text-muted);border:none;border-radius:var(--radius-sm);font-size:var(--font-size-base);cursor:pointer;display:flex;align-items:center;justify-content:center}.btn-add-param{background:none;border:1px dashed var(--color-neutral-400);color:var(--color-text-muted);padding:var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;width:100%;margin-top:var(--space-2)}.btn-add-param:hover{border-color:var(--color-primary-500);color:var(--color-primary-500)}.stage-notes-field{margin-top:var(--space-2)}.stage-notes-field .form-input{min-height:40px;padding:var(--space-2);font-size:var(--font-size-sm)}.tags-input-container{display:flex;flex-direction:column;gap:var(--space-2)}.tags-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag{display:inline-flex;align-items:center;gap:var(--space-1);background:var(--color-primary-100);color:var(--color-primary-700);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm)}.tag button{background:none;border:none;color:var(--color-primary-500);cursor:pointer;padding:0;font-size:var(--font-size-base);line-height:1}.tag-input-row{display:flex;gap:var(--space-2)}.tag-input-row .form-input{flex:1;min-height:44px}.btn-add-tag{background:var(--color-neutral-200);border:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer}.form-actions{display:flex;gap:var(--space-3);padding-top:var(--space-4)}.btn-cancel{flex:1;background:var(--color-neutral-200);color:var(--color-text-primary);border:none;padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:500;cursor:pointer;min-height:56px}.btn-submit{flex:2;background:var(--color-primary-500);color:#fff;border:none;padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:600;cursor:pointer;min-height:56px}.btn-submit:disabled{opacity:.6;cursor:not-allowed}.equipment-section{padding:0;overflow:hidden}.section-header-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-4);background:#fff;border:none;cursor:pointer;text-align:left}.section-header-toggle:hover{background:var(--color-neutral-50)}.section-header-left{display:flex;align-items:center;gap:var(--space-3)}.section-icon{font-size:1.5rem}.section-header-info h2{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0;padding:0;border:none}.equipment-summary{font-size:var(--font-size-sm);color:var(--color-text-muted);display:block;margin-top:var(--space-1)}.toggle-icon{font-size:var(--font-size-sm);color:var(--color-text-muted);transition:transform var(--transition-fast)}.toggle-icon.expanded{transform:rotate(180deg)}.equipment-content{padding:0 var(--space-4) var(--space-4);border-top:1px solid var(--color-neutral-100)}.section-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:var(--space-3) 0}.equipment-buttons{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.equipment-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#fff;border:2px solid var(--color-neutral-300);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);font-size:var(--font-size-sm);min-height:44px}.equipment-btn:hover{border-color:var(--color-primary-300)}.equipment-btn.selected{border-color:var(--color-success-500);background:var(--color-success-50)}.equipment-btn .check{color:var(--color-success-500);font-weight:700}.equipment-parameters-section{background:var(--color-neutral-50);border-radius:var(--radius-md);padding:var(--space-3)}.equipment-parameters-section h3{font-size:var(--font-size-sm);font-weight:600;margin:0 0 var(--space-2);color:var(--color-text-secondary)}.equipment-item{background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-3)}.equipment-item:last-child{margin-bottom:0}.equipment-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.equipment-label{font-weight:600;color:var(--color-text-primary)}.btn-remove-small{width:28px;height:28px;background:var(--color-danger-100);color:var(--color-danger-500);border:none;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-lg)}.equipment-details .form-row{margin-bottom:var(--space-3)}.parameters-list{display:flex;flex-direction:column;gap:var(--space-2)}.param-desc-input{flex:2;padding:var(--space-2);border:1px solid var(--color-neutral-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.stage-description-field{margin-bottom:var(--space-3)}.stage-description{min-height:60px;padding:var(--space-2);font-size:var(--font-size-sm)}.param-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-2);text-transform:uppercase;letter-spacing:.5px}@media (max-width: 640px){.parameter-row{flex-wrap:wrap}.param-name-input{flex:1 1 100%;order:1}.param-unit-input,.param-desc-input{flex:1;order:2}.btn-remove-param{order:1;position:absolute;right:0}.parameter-row{position:relative;padding-right:36px}}.ratio-display{display:flex;align-items:center;justify-content:center;height:44px;background:var(--color-primary-900);border:2px solid var(--color-primary-700);border-radius:var(--radius-md);font-weight:700;font-size:var(--font-size-xl);color:#fff}.ratio-warning{background:var(--color-warning-50);border:1px solid var(--color-warning-200);color:var(--color-warning-700);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-top:var(--space-3)}.form-row.thirds{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}@media (max-width: 640px){.form-row.thirds{grid-template-columns:1fr 1fr}.form-row.thirds>.form-field:last-child{grid-column:span 2}}.section-subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:400}.applicability-content{padding:var(--space-4);border-top:1px solid var(--color-neutral-100)}.checkbox-group{display:flex;flex-wrap:wrap;gap:var(--space-3)}.checkbox-label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);cursor:pointer}.checkbox-label input[type=checkbox]{width:20px;height:20px;cursor:pointer}.freshness-inputs{display:flex;align-items:center;gap:var(--space-2)}.freshness-inputs span{color:var(--color-text-muted);font-size:var(--font-size-sm)}.form-input.small{width:80px}.stage-summary{font-size:var(--font-size-sm);color:var(--color-text-muted);background:var(--color-neutral-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.btn-load-defaults{background:var(--color-primary-100);color:var(--color-primary-700);border:1px solid var(--color-primary-300);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;margin-top:var(--space-2);min-height:44px}.btn-load-defaults:hover{background:var(--color-primary-200)}.stage-editor{background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);margin-bottom:var(--space-2);overflow:hidden}.stage-editor.expanded{border-color:var(--color-primary-300)}.stage-editor-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);cursor:pointer;background:var(--color-neutral-50)}.stage-editor.expanded .stage-editor-header{background:var(--color-primary-50)}.stage-name-preview{font-weight:600;flex:1}.stage-summary-preview{font-size:var(--font-size-sm);color:var(--color-text-muted)}.expand-icon{font-size:var(--font-size-xs);color:var(--color-text-muted);transition:transform var(--transition-fast)}.expand-icon.expanded{transform:rotate(180deg)}.stage-content{padding:var(--space-4);border-top:1px solid var(--color-neutral-200)}.stage-group{margin-bottom:var(--space-4);padding:var(--space-3);background:var(--color-neutral-50);border-radius:var(--radius-md)}.stage-group h4{font-size:var(--font-size-sm);font-weight:600;margin:0 0 var(--space-3);color:var(--color-text-primary)}.stage-group .form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-3)}.stage-group .form-field{margin-bottom:0}.stage-group.optional-params{background:var(--color-primary-900);color:#fff}.stage-group.optional-params h4{color:#fff}.stage-group.optional-params .form-field label{color:#ffffffe6}.stage-group.optional-params .form-select,.stage-group.optional-params .form-input{background:#fffffff2;color:var(--color-text-primary);border-color:#ffffff4d}.stage-content .form-textarea{background:var(--color-neutral-100);border:2px solid var(--color-neutral-400);color:var(--color-text-primary)}@media (max-width: 480px){.stage-group .form-row{grid-template-columns:1fr 1fr}}.section-header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.section-header h2{flex:1}@media (max-width: 640px){.section-header{flex-direction:column;align-items:flex-start}.section-header .stage-summary{order:3;width:100%;text-align:center}.section-header .btn-add-stage{order:2}}.enhanced-fields-section .form-group{margin-bottom:var(--space-4)}.field-hint{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.section-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0 0 var(--space-4)}.video-preview{margin-top:var(--space-2)}.thumbnail-preview{width:100%;max-width:200px;border-radius:var(--radius-md);border:1px solid var(--color-neutral-200)}.grinder-presets-editor{display:flex;flex-direction:column;gap:var(--space-3)}.grinder-preset-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:var(--space-2);align-items:center}@media (max-width: 640px){.grinder-preset-row{grid-template-columns:1fr 1fr}.preset-setting{grid-column:1 / -2}.btn-remove-preset{grid-row:1;grid-column:-1}}.preset-brand,.preset-model,.preset-setting{min-width:0}.btn-remove-preset{background:var(--color-danger-50);color:var(--color-danger-500);border:none;width:36px;height:36px;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);flex-shrink:0;display:flex;align-items:center;justify-content:center}.btn-remove-preset:hover{background:var(--color-danger-100)}.btn-add-preset{background:var(--color-primary-50);color:var(--color-primary-600);border:1px dashed var(--color-primary-300);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-add-preset:hover{background:var(--color-primary-100);border-color:var(--color-primary-500)}.machine-presets-editor{display:flex;flex-direction:column;gap:var(--space-3)}.machine-preset-row{display:grid;grid-template-columns:1fr 1fr 80px auto;gap:var(--space-2);align-items:center}@media (max-width: 640px){.machine-preset-row{grid-template-columns:1fr 1fr}.preset-preheat{grid-column:1 / -2}}.required-equipment-editor{display:flex;flex-direction:column;gap:var(--space-3)}.equipment-row{background:var(--color-neutral-50);border-radius:var(--radius-md);padding:var(--space-3)}.equipment-row-main{display:flex;gap:var(--space-2);align-items:center;margin-bottom:var(--space-2)}.equipment-type{flex:1}.equipment-row-details{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}@media (max-width: 480px){.equipment-row-details{grid-template-columns:1fr}}.recommended-extras-editor{display:flex;flex-direction:column;gap:var(--space-3)}.extras-row{display:grid;grid-template-columns:1fr 1fr auto;gap:var(--space-2);align-items:center}@media (max-width: 640px){.extras-row{grid-template-columns:1fr auto}.extras-benefit{grid-column:1;grid-row:2}}.extras-item,.extras-benefit{min-width:0}.extraction-targets-content{padding-top:var(--space-4)}.range-inputs{display:flex;align-items:center;gap:var(--space-2)}.range-inputs .form-input.small{width:80px}.range-inputs span{color:var(--color-text-muted);font-size:var(--font-size-sm)}.espresso-profile-content{padding-top:var(--space-4)}.espresso-profile-content h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin:var(--space-4) 0 var(--space-2) 0;padding-top:var(--space-2);border-top:1px solid var(--color-neutral-100)}.espresso-profile-content h4:first-of-type{border-top:none;margin-top:var(--space-2)}.beginner-tips-editor{background:var(--color-info-50);border-radius:var(--radius-md);padding:var(--space-3);margin-top:var(--space-3)}.beginner-tips-editor h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-info-700);margin:0 0 var(--space-2) 0}.beginner-tips-editor .form-field{margin-bottom:var(--space-2)}.beginner-tips-editor .form-field:last-child{margin-bottom:0}.beginner-tips-editor label{font-size:var(--font-size-xs);color:var(--color-info-600)}.beginner-tips-editor .form-textarea{background:#fff;font-size:var(--font-size-sm)}.auth-error-boundary{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:var(--space-6);background:var(--color-primary-50)}.auth-error-content{max-width:480px;text-align:center;padding:var(--space-8);background:var(--color-neutral-50);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg)}.auth-error-icon{font-size:4rem;margin-bottom:var(--space-4)}.auth-error-title{font-family:var(--font-family-serif);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--space-4) 0}.auth-error-message{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin:0 0 var(--space-6) 0}.auth-error-actions{display:flex;flex-direction:column;gap:var(--space-3)}@media (min-width: 480px){.auth-error-actions{flex-direction:row;justify-content:center}}.auth-error-button{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);border-radius:var(--radius-lg);border:none;cursor:pointer;transition:all .2s ease;min-height:48px}.auth-error-button.primary{background:var(--color-primary-500);color:#fff}.auth-error-button.primary:hover{background:var(--color-primary-600)}.auth-error-button.secondary{background:var(--color-neutral-100);color:var(--color-text-primary);border:1px solid var(--color-neutral-300)}.auth-error-button.secondary:hover{background:var(--color-neutral-200)}.auth-error-details{margin-top:var(--space-6);padding:var(--space-4);background:var(--color-neutral-100);border-radius:var(--radius-md);text-align:left;font-size:var(--font-size-sm)}.auth-error-details summary{cursor:pointer;font-weight:var(--font-weight-medium);color:var(--color-text-muted);margin-bottom:var(--space-2)}.auth-error-details pre{font-family:var(--font-family-mono);font-size:var(--font-size-xs);white-space:pre-wrap;word-break:break-word;margin:var(--space-2) 0 0 0;color:var(--color-danger-600)}select{background:transparent!important;border:1px solid var(--color-neutral-200)!important;border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--font-size-base);min-height:40px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%237A6450' d='M6 8L2 4h8z'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 12px center!important;padding-right:32px}.navigation-wrapper{position:sticky;top:0;z-index:var(--z-sticky);box-shadow:var(--shadow-md)}.nav-top{background:var(--color-primary-900);padding:0 var(--space-4)}.nav-container{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:56px;gap:var(--space-4)}.nav-logo{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-neutral-50);text-decoration:none;display:flex;align-items:center;gap:var(--space-2);white-space:nowrap;transition:color var(--transition-fast)}.nav-logo:hover{color:var(--color-primary-300)}.nav-main{display:flex;align-items:center;gap:var(--space-1);flex:1;justify-content:center}.nav-menu-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:transparent;border:none;color:#ffffffd9;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent}.nav-menu-btn:hover{background:#ffffff1a;color:#fff}.nav-menu-btn.active{background:#ffffff26;color:#fff}.nav-btn-icon{font-size:1rem}.nav-btn-label{display:inline}.nav-vision-link{display:flex;align-items:center;padding:var(--space-2) var(--space-4);color:#ffffffd9;text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);transition:all var(--transition-fast);white-space:nowrap;margin-right:var(--space-3)}.nav-vision-link:hover{background:#ffffff1a;color:#fff}.nav-auth{display:flex;align-items:center}.nav-loading{color:#fff9;font-size:var(--font-size-sm)}.nav-dropdown{position:relative}.user-dropdown{margin-left:auto}.nav-user-trigger{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#ffffff1a;border:none;color:#fff;font-size:var(--font-size-lg);cursor:pointer;border-radius:50%;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent}.nav-user-trigger:hover,.nav-user-trigger.active{background:#fff3}.user-icon{font-size:1.25rem}.user-name{font-size:var(--font-size-sm);font-weight:500;color:#fff;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 480px){.user-name{display:none}}.nav-dropdown-menu{position:absolute;top:calc(100% + var(--space-2));right:0;min-width:200px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-2);z-index:var(--z-dropdown);animation:dropdownFadeIn .15s ease-out}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.dropdown-header{padding:var(--space-2) var(--space-3)}.dropdown-user-name{display:block;font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.dropdown-role{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:capitalize}.dropdown-divider{height:1px;background:var(--color-neutral-200);margin:var(--space-2) 0}.dropdown-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);color:var(--color-text-primary);text-decoration:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:all var(--transition-fast);background:none;border:none;width:100%;text-align:left;cursor:pointer}.dropdown-item:hover{background:var(--color-primary-50);color:var(--color-primary-700)}.dropdown-item-danger:hover{background:var(--color-danger-50);color:var(--color-danger-600)}.dropdown-icon{font-size:1rem;width:20px;text-align:center}.auth-buttons{display:flex;gap:var(--space-2)}.nav-btn{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);text-decoration:none;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent}.nav-btn-ghost{background:transparent;color:#ffffffe6;border:1px solid rgba(255,255,255,.3)}.nav-btn-ghost:hover{background:#ffffff1a;border-color:#ffffff80}.nav-btn-primary{background:var(--color-primary-500);color:#fff;border:1px solid transparent}.nav-btn-primary:hover{background:var(--color-primary-400)}.nav-sub{background:var(--color-primary-100);border-bottom:1px solid var(--color-primary-200);padding:0 var(--space-4)}.nav-sub .nav-container{height:44px;justify-content:flex-start}.sub-menu-items{display:flex;align-items:center;gap:var(--space-1)}.sub-menu-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);color:var(--color-primary-700);text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent}.sub-menu-item:hover{background:var(--color-primary-200);color:var(--color-primary-900)}.sub-menu-item.active{background:var(--color-primary-500);color:#fff}.sub-menu-item--locked{color:var(--color-neutral-400);position:relative}.sub-menu-item--locked:hover{background:var(--color-neutral-100);color:var(--color-neutral-500)}.sub-menu-item--locked .sub-menu-icon{filter:grayscale(.6);opacity:.6}.sub-menu-lock{font-size:.7rem;margin-left:auto}.sub-menu-icon{font-size:1rem}.sub-menu-label{display:inline}@media (max-width: 768px){.navigation-wrapper{display:none!important}}@media (min-width: 769px) and (max-width: 1024px){.nav-container{height:52px;gap:var(--space-2)}.nav-logo{font-size:var(--font-size-base)}.nav-menu-btn{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs)}.nav-btn-label,.user-name,.role-badge{display:none}.nav-user-trigger{padding:var(--space-1)}.dropdown-arrow{display:none}.nav-sub .nav-container{height:40px}.sub-menu-item{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs)}.sub-menu-label{display:none}.nav-btn{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}}.global-search-trigger{position:fixed;top:var(--space-3);right:var(--space-3);width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-full);font-size:var(--font-size-lg);cursor:pointer;box-shadow:0 2px 8px #0000001a;z-index:var(--z-sticky);transition:all .2s;-webkit-tap-highlight-color:transparent}.global-search-trigger:hover{background:var(--color-neutral-50);transform:scale(1.05)}.global-search-trigger:active{transform:scale(.95)}.coffee-product-page .global-search-trigger,.admin-page .global-search-trigger{display:none}.mobile-bottom-nav{position:fixed!important;bottom:0!important;left:0!important;right:0!important;top:auto!important;background:var(--color-neutral-50);border-top:1px solid var(--color-neutral-200);padding-bottom:env(safe-area-inset-bottom,0);z-index:9999!important;display:none;transform:translateZ(0);-webkit-transform:translate3d(0,0,0);backface-visibility:hidden;-webkit-backface-visibility:hidden;isolation:isolate;contain:none;will-change:transform}@media (max-width: 768px){.mobile-bottom-nav{display:block}}@supports (-webkit-touch-callout: none){.mobile-bottom-nav{position:-webkit-sticky;position:fixed!important;bottom:0!important;-webkit-overflow-scrolling:auto}}.bottom-nav-items{display:flex;justify-content:space-around;align-items:center;height:60px;max-width:500px;margin:0 auto}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:var(--space-2) var(--space-3);color:var(--color-text-muted);text-decoration:none;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;border:none;background:transparent;cursor:pointer;min-width:64px;min-height:48px;border-radius:var(--radius-md)}.bottom-nav-item:hover,.bottom-nav-item:focus{color:var(--color-primary-600);background:var(--color-primary-50)}.bottom-nav-item.active{color:var(--color-primary-700)}.bottom-nav-icon{font-size:1.5rem;line-height:1;transition:transform var(--transition-fast)}.bottom-nav-item.active .bottom-nav-icon{transform:scale(1.1)}.bottom-nav-label{font-size:.65rem;letter-spacing:.01em;white-space:nowrap}.bottom-nav-login{color:var(--color-primary-600);font-weight:var(--font-weight-semibold)}.bottom-nav-login:hover,.bottom-nav-login:focus{color:var(--color-primary-700);background:var(--color-primary-100)}.bottom-nav-login .bottom-nav-icon{color:var(--color-primary-600)}.bottom-nav-item--locked{color:var(--color-neutral-400);position:relative}.bottom-nav-item--locked:hover,.bottom-nav-item--locked:focus{color:var(--color-neutral-500);background:var(--color-neutral-100)}.bottom-nav-item--locked .bottom-nav-icon{filter:grayscale(.6);opacity:.6}.bottom-nav-lock{position:absolute;top:4px;right:8px;font-size:.6rem}.fab-container{position:fixed;bottom:80px;right:var(--space-4);z-index:calc(var(--z-sticky) + 10);display:none}@media (max-width: 768px){.fab-container{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-3)}}.fab-main{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-700) 100%);border:none;color:#fff;font-size:1.5rem;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #8b5a2b66;transition:all var(--transition-normal);-webkit-tap-highlight-color:transparent}.fab-main:hover{transform:scale(1.05);box-shadow:0 6px 16px #8b5a2b80}.fab-main:active{transform:scale(.95)}.fab-main.active{background:var(--color-neutral-700);transform:rotate(45deg)}.fab-icon{display:flex;align-items:center;justify-content:center;transition:transform var(--transition-fast)}.fab-main.active .fab-icon{transform:rotate(-45deg)}.fab-options{display:flex;flex-direction:column;gap:var(--space-2);animation:fabSlideUp .2s ease-out}@keyframes fabSlideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fab-option{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:#fff;border:none;border-radius:var(--radius-full);box-shadow:var(--shadow-md);cursor:pointer;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;min-height:48px}.fab-option:hover{background:var(--color-primary-50);transform:scale(1.02)}.fab-option:active{transform:scale(.98)}.fab-option-icon{font-size:1.25rem}.fab-option-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap}.more-menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:10000;animation:fadeIn .15s ease-out;display:flex;align-items:flex-end;justify-content:center}.more-menu{background:#fff;border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:500px;max-height:85vh;padding-bottom:env(safe-area-inset-bottom,var(--space-4));animation:slideUp .2s ease-out;overflow-y:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.more-menu-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-neutral-200);position:sticky;top:0;background:#fff}.more-menu-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.more-menu-close{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--color-neutral-100);border:none;border-radius:50%;cursor:pointer;font-size:1rem;color:var(--color-text-muted);transition:all var(--transition-fast)}.more-menu-close:hover{background:var(--color-neutral-200);color:var(--color-text-primary)}.more-menu-items{padding:var(--space-2)}.more-menu-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);color:var(--color-text-primary);text-decoration:none;border-radius:var(--radius-lg);transition:all var(--transition-fast);min-height:56px}.more-menu-item:hover,.more-menu-item:focus{background:var(--color-primary-50)}.more-menu-item.active{background:var(--color-primary-100);color:var(--color-primary-800)}.more-menu-icon{font-size:1.5rem;width:32px;text-align:center}.more-menu-label{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);flex:1}.more-menu-active-indicator{color:var(--color-primary-600);font-size:1.5rem}.more-menu-section{padding:0}.more-menu-section-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4) var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.more-menu-section-icon{font-size:var(--font-size-sm)}.more-menu-section-title{flex:1}.more-menu-divider{height:1px;background:var(--color-neutral-200);margin:var(--space-3) var(--space-4)}.more-menu-item.standalone{background:linear-gradient(135deg,var(--color-primary-50),var(--color-primary-100));margin-bottom:var(--space-2);border:1px solid var(--color-primary-200)}.more-menu-item.standalone:hover,.more-menu-item.standalone:focus{background:linear-gradient(135deg,var(--color-primary-100),var(--color-primary-200))}.more-menu-item.standalone.active{background:var(--color-primary-200);border-color:var(--color-primary-300)}.more-menu-item-danger{color:var(--color-danger-600);background:none;border:none;width:100%;cursor:pointer;font-family:inherit}.more-menu-item-danger:hover,.more-menu-item-danger:focus{background:var(--color-danger-50);color:var(--color-danger-700)}.more-menu-item--locked{color:var(--color-neutral-400);position:relative}.more-menu-item--locked:hover,.more-menu-item--locked:focus{background:var(--color-neutral-100);color:var(--color-neutral-500)}.more-menu-item--locked .more-menu-icon{filter:grayscale(.6);opacity:.6}.more-menu-lock{font-size:.7rem;margin-left:auto}.more-menu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);padding:var(--space-4)}.more-menu-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4);background:var(--color-neutral-50);border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);text-decoration:none;color:var(--color-text-primary);min-height:90px;transition:all var(--transition-fast);cursor:pointer;font-family:inherit}.more-menu-card:hover,.more-menu-card:focus{background:var(--color-primary-50);border-color:var(--color-primary-300);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.more-menu-card.active{background:var(--color-primary-100);border-color:var(--color-primary-400)}.more-menu-card-icon{font-size:1.75rem}.more-menu-card-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);text-align:center;line-height:1.2}.more-menu-card--locked{opacity:.6;position:relative}.more-menu-card--locked .more-menu-card-icon{filter:grayscale(.6)}.more-menu-card-lock{position:absolute;top:var(--space-2);right:var(--space-2);font-size:.65rem}.more-menu-card--danger{background:var(--color-danger-50);border-color:var(--color-danger-200);color:var(--color-danger-600)}.more-menu-card--danger:hover,.more-menu-card--danger:focus{background:var(--color-danger-100);border-color:var(--color-danger-300);color:var(--color-danger-700)}@media (min-width: 769px){.mobile-bottom-nav,.fab-container,.more-menu-overlay{display:none!important}}.auth-loading-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background:#faf5f0;background:linear-gradient(135deg,var(--color-primary-50, #faf5f0) 0%,var(--color-neutral-50, #fafafa) 100%);z-index:9999;animation:fadeIn .3s ease-out;transition:opacity .3s ease-out}.auth-loading-screen.fade-out{opacity:0;pointer-events:none}.auth-loading-content{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-6, 1.5rem);max-width:400px}.coffee-animation{margin-bottom:var(--space-6)}.coffee-cup{position:relative;width:80px;height:90px;background:linear-gradient(135deg,#d4a574,#8b5a2b);border-radius:0 0 40px 40px;border:4px solid var(--color-primary-700);overflow:hidden;animation:gentleBob 2s ease-in-out infinite}@keyframes gentleBob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.coffee-cup-handle{position:absolute;right:-20px;top:15px;width:20px;height:40px;border:4px solid var(--color-primary-700);border-left:none;border-radius:0 20px 20px 0}.coffee-liquid{position:absolute;bottom:0;left:0;right:0;height:60%;background:linear-gradient(180deg,#6f4e37,#3d2817);overflow:hidden}.coffee-wave{position:absolute;top:-5px;left:-10%;width:120%;height:20px;background:radial-gradient(ellipse at 50% 100%,transparent 40%,#6f4e37 41%);animation:wave 2s ease-in-out infinite}@keyframes wave{0%,to{transform:translate(0)}50%{transform:translate(-10%)}}.coffee-steam{position:absolute;top:-30px;left:50%;transform:translate(-50%);display:flex;gap:8px}.steam{width:8px;height:30px;background:linear-gradient(to top,rgba(255,255,255,.6),transparent);border-radius:50%;animation:steam 2s ease-out infinite}.steam-1{animation-delay:0s}.steam-2{animation-delay:.5s;height:25px}.steam-3{animation-delay:1s}@keyframes steam{0%{opacity:0;transform:translateY(0) scaleX(1)}50%{opacity:.8}to{opacity:0;transform:translateY(-30px) scaleX(2)}}.loading-title{font-family:var(--font-family-serif);font-size:var(--font-size-2xl);font-weight:600;color:var(--color-primary-800);margin:0 0 var(--space-2) 0;min-width:280px}.loading-subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0 0 var(--space-6) 0}.loading-steps{display:flex;flex-direction:column;gap:var(--space-2);width:100%;max-width:280px;margin-bottom:var(--space-4)}.loading-step{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#fff;border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:all .3s ease;animation:slideIn .3s ease-out;box-shadow:0 1px 3px #0000001a}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.loading-step.active{background:var(--color-primary-100);border:1px solid var(--color-primary-300)}.loading-step.completed{opacity:.6}.step-emoji{font-size:1.2rem}.step-label{flex:1;text-align:left;color:var(--color-text-secondary)}.loading-step.active .step-label{color:var(--color-primary-800);font-weight:500}.step-check{color:var(--color-success-500);font-weight:700}.current-action{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-primary-100);border-radius:var(--radius-full);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #8b5a2b66}50%{box-shadow:0 0 0 10px #8b5a2b00}}.action-emoji{font-size:1.2rem;animation:bounce 1s ease-in-out infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.action-text{font-size:var(--font-size-sm);font-weight:500;color:var(--color-primary-800)}@media (max-width: 480px){.auth-loading-content{padding:var(--space-4)}.coffee-cup{width:60px;height:70px;border-radius:0 0 30px 30px}.coffee-cup-handle{right:-15px;width:15px;height:30px}.loading-title{font-size:var(--font-size-xl);min-width:auto}.loading-steps{max-width:100%}}.toast-container{position:fixed;bottom:var(--space-4);right:var(--space-4);z-index:var(--z-toast, 800);display:flex;flex-direction:column;gap:var(--space-2);max-width:400px;width:calc(100% - var(--space-8))}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);background:var(--color-neutral-50);box-shadow:var(--shadow-lg);animation:toast-slide-in .3s ease-out}.toast.toast-exit{animation:toast-slide-out .2s ease-in forwards}@keyframes toast-slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes toast-slide-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.toast-success{background:var(--color-success-50);border:1px solid var(--color-success-200)}.toast-error{background:var(--color-danger-50);border:1px solid var(--color-danger-200)}.toast-warning{background:var(--color-warning-50);border:1px solid var(--color-warning-200)}.toast-info{background:var(--color-info-50);border:1px solid var(--color-info-200)}.toast-icon{font-size:var(--font-size-lg);flex-shrink:0}.toast-message{flex:1;font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:1.4}.toast-close{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-full);color:var(--color-text-muted);font-size:var(--font-size-lg);cursor:pointer;transition:background-color .2s}.toast-close:hover{background:#0000001a}@media (max-width: 480px){.toast-container{left:var(--space-4);right:var(--space-4);max-width:none;width:auto}}.protected-route-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:var(--space-8);text-align:center}.protected-route-loading .loading-spinner{width:48px;height:48px;border:4px solid var(--color-neutral-200);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite}.protected-route-loading p{margin-top:var(--space-4);color:var(--color-text-muted);font-size:var(--font-size-base)}.protected-route-unauthorized{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:var(--space-8);text-align:center}.unauthorized-card{background:#fff;padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);max-width:400px;width:100%}.unauthorized-icon{font-size:4rem;margin-bottom:var(--space-4)}.unauthorized-card h2{margin:0 0 var(--space-3);color:var(--color-text-primary);font-size:var(--font-size-2xl);font-weight:600}.unauthorized-message{margin:0 0 var(--space-6);color:var(--color-text-secondary);font-size:var(--font-size-base);line-height:1.5}.upgrade-button{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-3) var(--space-6);background:var(--color-primary-500);color:#fff;border-radius:var(--radius-md);text-decoration:none;font-weight:600;font-size:var(--font-size-base);transition:background-color .2s ease;margin-bottom:var(--space-4)}.upgrade-button:hover{background:var(--color-primary-600)}.protected-route-unauthorized .back-home-link{display:inline-flex;color:var(--color-text-muted);background:none;padding:var(--space-2);font-size:var(--font-size-sm)}.protected-route-unauthorized .back-home-link:hover{color:var(--color-text-primary);background:none}.issue-reporter{position:fixed;z-index:9999;font-family:var(--font-family-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif)}.issue-reporter-fab{position:fixed;top:4.5rem;right:var(--space-4, 1rem);bottom:auto;display:flex;align-items:center;justify-content:center;padding:var(--space-2, .5rem);width:40px;height:40px;background:var(--color-primary-600, #6b4423);color:#fff;border:none;border-radius:var(--radius-full, 9999px);font-size:var(--font-size-base, 1rem);cursor:pointer;box-shadow:var(--shadow-md, 0 4px 6px -1px rgba(0, 0, 0, .1));transition:all .2s ease}.issue-reporter-fab:hover{background:var(--color-primary-700, #5a3a1d);transform:translateY(-2px);box-shadow:var(--shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .1))}.issue-reporter-fab:active{transform:translateY(0)}.fab-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;background:var(--color-danger-500, #ef4444);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center;border-radius:9999px;border:2px solid white;box-shadow:0 2px 4px #0003;animation:fab-badge-pulse 2s ease-in-out infinite}@keyframes fab-badge-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.fab-page-indicator{display:none;position:absolute;right:100%;margin-right:var(--space-2, .5rem);padding:var(--space-1, .25rem) var(--space-2, .5rem);background:var(--color-neutral-900, #171717);color:#fff;font-size:var(--font-size-xs, .75rem);white-space:nowrap;border-radius:var(--radius-md, .375rem);font-family:var(--font-family-mono, monospace);max-width:150px;overflow:hidden;text-overflow:ellipsis}.issue-reporter-fab:hover .fab-page-indicator{display:block}.issue-reporter-fab.minimized{padding:var(--space-3, .75rem);width:48px;height:48px;justify-content:center}.issue-reporter-menu{position:fixed;top:7.5rem;right:var(--space-4, 1rem);bottom:auto;width:280px;background:var(--color-neutral-50, #fafafa);border-radius:var(--radius-lg, .5rem);box-shadow:var(--shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .1));overflow:hidden}.issue-menu-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--color-primary-600, #6b4423);color:#fff}.issue-menu-header h3{margin:0;font-size:var(--font-size-base, 1rem);font-weight:600}.issue-menu-header .btn-close{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;line-height:1;opacity:.8}.issue-menu-header .btn-close:hover{opacity:1}.issue-menu-options{padding:var(--space-2, .5rem)}.issue-menu-option{display:flex;align-items:center;gap:var(--space-3, .75rem);width:100%;padding:var(--space-3, .75rem);background:#fff;border:1px solid var(--color-neutral-200, #e5e5e5);border-radius:var(--radius-md, .375rem);cursor:pointer;transition:all .15s ease;text-align:left;margin-bottom:var(--space-2, .5rem)}.issue-menu-option:last-child{margin-bottom:0}.issue-menu-option:hover{background:var(--color-primary-50, #faf5f0);border-color:var(--color-primary-300, #c9a876)}.option-icon{font-size:1.5rem}.option-text{display:flex;flex-direction:column}.option-text strong{font-size:var(--font-size-sm, .875rem);color:var(--color-text-primary, #0a0a0a)}.option-text small{font-size:var(--font-size-xs, .75rem);color:var(--color-text-muted, #666)}.issue-menu-section{border-top:1px solid var(--color-neutral-200, #e5e5e5);padding:var(--space-2, .5rem)}.issue-menu-section-header{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-2, .5rem);font-size:var(--font-size-sm, .875rem);font-weight:600;color:var(--color-text-secondary, #1a1a1a)}.section-icon{font-size:1rem}.issue-menu-issues-list{max-height:200px;overflow-y:auto}.issue-menu-issue-item{display:flex;align-items:flex-start;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem);background:#fff;border:1px solid var(--color-neutral-200, #e5e5e5);border-radius:var(--radius-sm, .25rem);margin-bottom:var(--space-1, .25rem)}.issue-menu-issue-item:last-child{margin-bottom:0}.issue-priority-dot{flex-shrink:0;width:8px;height:8px;border-radius:50%;margin-top:5px}.issue-priority-dot.priority-critical{background:var(--color-danger-500, #ef4444)}.issue-priority-dot.priority-high{background:var(--color-warning-500, #f59e0b)}.issue-priority-dot.priority-medium{background:var(--color-info-500, #3b82f6)}.issue-priority-dot.priority-low{background:var(--color-neutral-400, #a3a3a3)}.issue-item-content{flex:1;min-width:0}.issue-item-title{display:block;font-size:var(--font-size-xs, .75rem);color:var(--color-text-primary, #0a0a0a);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.issue-item-meta{display:flex;gap:var(--space-2, .5rem);margin-top:2px}.issue-status{font-size:10px;padding:1px 4px;border-radius:var(--radius-sm, .25rem);font-weight:500;text-transform:capitalize}.issue-status.status-new{background:var(--color-info-100, #dbeafe);color:var(--color-info-700, #1d4ed8)}.issue-status.status-in-progress{background:var(--color-warning-100, #fef3c7);color:var(--color-warning-700, #b45309)}.issue-status.status-acknowledged{background:var(--color-neutral-100, #f5f5f5);color:var(--color-neutral-700, #404040)}.issue-status.status-resolved{background:var(--color-success-100, #dcfce7);color:var(--color-success-700, #15803d)}.issue-status.status-closed{background:var(--color-neutral-200, #e5e5e5);color:var(--color-neutral-500, #737373)}.issue-menu-issue-item.resolved{opacity:.7;background:var(--color-success-50, #f0fdf4)}.issue-menu-issue-item.resolved:hover{opacity:1}.issue-category{font-size:10px;color:var(--color-text-muted, #666)}.issue-menu-footer{padding:var(--space-2, .5rem) var(--space-4, 1rem);border-top:1px solid var(--color-neutral-200, #e5e5e5)}.btn-minimize{background:transparent;border:none;color:var(--color-text-muted, #666);font-size:var(--font-size-xs, .75rem);cursor:pointer}.btn-minimize:hover{color:var(--color-text-primary, #0a0a0a)}.issue-reporter-recording{position:fixed;top:var(--space-4, 1rem);left:50%;transform:translate(-50%);background:var(--color-danger-600, #dc2626);color:#fff;padding:var(--space-3, .75rem) var(--space-4, 1rem);border-radius:var(--radius-lg, .5rem);box-shadow:var(--shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, .1));display:flex;flex-direction:column;gap:var(--space-2, .5rem);align-items:center}.recording-indicator{display:flex;align-items:center;gap:var(--space-2, .5rem);font-weight:600}.recording-dot{width:12px;height:12px;background:#fff;border-radius:50%;animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.recording-actions{display:flex;gap:var(--space-2, .5rem)}.recording-actions button{padding:var(--space-2, .5rem) var(--space-3, .75rem);border:none;border-radius:var(--radius-md, .375rem);font-size:var(--font-size-sm, .875rem);cursor:pointer;transition:all .15s ease}.btn-capture{background:#fff;color:var(--color-danger-600, #dc2626)}.btn-capture:hover{background:var(--color-neutral-100, #f5f5f5)}.btn-stop{background:var(--color-success-500, #22c55e);color:#fff}.btn-stop:hover{background:var(--color-success-600, #16a34a)}.btn-cancel{background:transparent;border:1px solid rgba(255,255,255,.5)!important;color:#fff}.btn-cancel:hover{background:#ffffff1a}.btn-minimize-recording{background:#fff3;color:#fff}.btn-minimize-recording:hover{background:#ffffff4d}.issue-reporter-recording.minimized{padding:var(--space-2, .5rem) var(--space-3, .75rem);flex-direction:row;gap:var(--space-2, .5rem);cursor:pointer;transition:transform .2s ease}.issue-reporter-recording.minimized:hover{transform:translate(-50%) scale(1.05)}.issue-reporter-recording.minimized .recording-indicator{flex:1}.issue-reporter-recording.minimized .expand-hint{font-size:var(--font-size-xs, .75rem);opacity:.8;margin-left:var(--space-2, .5rem)}.issue-reporter-form{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;max-width:500px;max-height:90vh;background:var(--color-neutral-50, #fafafa);border-radius:var(--radius-lg, .5rem);box-shadow:var(--shadow-2xl, 0 25px 50px -12px rgba(0, 0, 0, .25));overflow:hidden;display:flex;flex-direction:column}.issue-form-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--color-primary-600, #6b4423);color:#fff}.issue-form-header h3{margin:0;font-size:var(--font-size-base, 1rem);font-weight:600}.issue-form-header .btn-close{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;line-height:1}.issue-form-preview{padding:var(--space-3, .75rem);background:var(--color-neutral-100, #f5f5f5);overflow-x:auto}.screenshot-preview{max-width:100%;max-height:200px;border-radius:var(--radius-md, .375rem);border:1px solid var(--color-neutral-300, #d4d4d4)}.recording-preview{display:flex;gap:var(--space-2, .5rem);overflow-x:auto;padding-bottom:var(--space-2, .5rem)}.recording-thumbnail{position:relative;flex-shrink:0}.recording-thumbnail img{width:120px;height:80px;object-fit:cover;border-radius:var(--radius-sm, .25rem);border:1px solid var(--color-neutral-300, #d4d4d4)}.screen-number{position:absolute;top:var(--space-1, .25rem);left:var(--space-1, .25rem);background:var(--color-primary-600, #6b4423);color:#fff;font-size:var(--font-size-xs, .75rem);font-weight:600;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center}.issue-form-fields{padding:var(--space-4, 1rem);overflow-y:auto;flex:1}.form-group{margin-bottom:var(--space-3, .75rem)}.form-group label{display:block;font-size:var(--font-size-sm, .875rem);font-weight:500;color:var(--color-text-primary, #0a0a0a);margin-bottom:var(--space-1, .25rem)}.form-group input,.form-group textarea,.form-group select{width:100%;padding:var(--space-2, .5rem) var(--space-3, .75rem);border:1px solid var(--color-neutral-300, #d4d4d4);border-radius:var(--radius-md, .375rem);font-size:var(--font-size-sm, .875rem);background:#fff}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--color-primary-500, #8b5a2b);box-shadow:0 0 0 2px var(--color-primary-100, #f0e6d9)}.form-group textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3, .75rem)}.form-error{background:var(--color-danger-100, #fee2e2);color:var(--color-danger-700, #b91c1c);padding:var(--space-2, .5rem) var(--space-3, .75rem);border-radius:var(--radius-md, .375rem);font-size:var(--font-size-sm, .875rem);margin-top:var(--space-2, .5rem)}.issue-form-actions{display:flex;justify-content:flex-end;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);border-top:1px solid var(--color-neutral-200, #e5e5e5);background:#fff}.issue-form-actions .btn-cancel{padding:var(--space-2, .5rem) var(--space-4, 1rem);background:transparent;border:1px solid var(--color-neutral-300, #d4d4d4);color:var(--color-text-primary, #0a0a0a);border-radius:var(--radius-md, .375rem);cursor:pointer}.issue-form-actions .btn-cancel:hover{background:var(--color-neutral-100, #f5f5f5)}.issue-form-actions .btn-submit{padding:var(--space-2, .5rem) var(--space-4, 1rem);background:var(--color-primary-600, #6b4423);color:#fff;border:none;border-radius:var(--radius-md, .375rem);font-weight:500;cursor:pointer}.issue-form-actions .btn-submit:hover:not(:disabled){background:var(--color-primary-700, #5a3a1d)}.issue-form-actions .btn-submit:disabled{opacity:.6;cursor:not-allowed}.issue-reporter-capturing,.issue-reporter-success,.issue-reporter-error{position:fixed;bottom:var(--space-6, 1.5rem);right:var(--space-6, 1.5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);border-radius:var(--radius-lg, .5rem);box-shadow:var(--shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, .1));display:flex;align-items:center;gap:var(--space-2, .5rem)}.issue-reporter-capturing{background:#fff;color:var(--color-text-primary, #0a0a0a)}.capturing-spinner{width:20px;height:20px;border:2px solid var(--color-neutral-300, #d4d4d4);border-top-color:var(--color-primary-600, #6b4423);border-radius:50%;animation:spin 1s linear infinite}.issue-reporter-success{background:var(--color-success-500, #22c55e);color:#fff}.success-icon,.error-icon{font-size:1.25rem}.issue-reporter-error{background:var(--color-danger-500, #ef4444);color:#fff;flex-wrap:wrap}.issue-reporter-error button{background:#fff;color:var(--color-danger-600, #dc2626);border:none;padding:var(--space-1, .25rem) var(--space-3, .75rem);border-radius:var(--radius-md, .375rem);cursor:pointer;margin-left:var(--space-2, .5rem)}.issue-reporter-form:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:-1}@media (max-width: 480px){.issue-reporter-fab{bottom:var(--space-4, 1rem);right:var(--space-4, 1rem)}.issue-reporter-menu{bottom:var(--space-4, 1rem);right:var(--space-4, 1rem);left:var(--space-4, 1rem);width:auto}.issue-reporter-form{width:95%;max-height:95vh}.form-row{grid-template-columns:1fr}.issue-reporter-recording{left:var(--space-4, 1rem);right:var(--space-4, 1rem);transform:none}.recording-actions{flex-wrap:wrap;justify-content:center}}.issue-reporter-detail{position:fixed;top:7.5rem;right:var(--space-4, 1rem);width:320px;max-height:calc(100vh - 9rem);background:var(--color-neutral-50, #fafafa);border-radius:var(--radius-lg, .5rem);box-shadow:var(--shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .1));display:flex;flex-direction:column;overflow:hidden}.issue-detail-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--color-primary-600, #6b4423);color:#fff}.issue-detail-header .btn-back{background:transparent;border:none;color:#fff;font-size:var(--font-size-sm, .875rem);cursor:pointer;padding:var(--space-1, .25rem) var(--space-2, .5rem);border-radius:var(--radius-sm, .25rem)}.issue-detail-header .btn-back:hover{background:#ffffff1a}.issue-detail-header .btn-close{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;line-height:1;opacity:.8}.issue-detail-header .btn-close:hover{opacity:1}.issue-detail-content{flex:1;overflow-y:auto;padding:var(--space-3, .75rem)}.issue-detail-title-section{margin-bottom:var(--space-3, .75rem)}.issue-detail-title-section h3{margin:0 0 var(--space-2, .5rem) 0;font-size:var(--font-size-base, 1rem);color:var(--color-text-primary, #0a0a0a);line-height:1.3}.issue-detail-badges{display:flex;flex-wrap:wrap;gap:var(--space-1, .25rem)}.issue-detail-badges .priority-badge,.issue-detail-badges .status-badge,.issue-detail-badges .category-badge{font-size:10px;padding:2px 6px;border-radius:var(--radius-sm, .25rem);font-weight:500;text-transform:capitalize}.issue-detail-badges .priority-badge.priority-critical{background:var(--color-danger-100, #fee2e2);color:var(--color-danger-700, #b91c1c)}.issue-detail-badges .priority-badge.priority-high{background:var(--color-warning-100, #fef3c7);color:var(--color-warning-700, #b45309)}.issue-detail-badges .priority-badge.priority-medium{background:var(--color-info-100, #dbeafe);color:var(--color-info-700, #1d4ed8)}.issue-detail-badges .priority-badge.priority-low,.issue-detail-badges .status-badge{background:var(--color-neutral-100, #f5f5f5);color:var(--color-neutral-700, #404040)}.issue-detail-badges .status-badge.status-resolved{background:var(--color-success-100, #dcfce7);color:var(--color-success-700, #15803d)}.issue-detail-badges .status-badge.status-in-progress{background:var(--color-warning-100, #fef3c7);color:var(--color-warning-700, #b45309)}.issue-detail-badges .category-badge{background:var(--color-primary-100, #f0e6d9);color:var(--color-primary-700, #5a3a1d)}.issue-detail-section{margin-bottom:var(--space-3, .75rem);padding-bottom:var(--space-3, .75rem);border-bottom:1px solid var(--color-neutral-200, #e5e5e5)}.issue-detail-section:last-child{border-bottom:none}.issue-detail-section h4{margin:0 0 var(--space-2, .5rem) 0;font-size:var(--font-size-sm, .875rem);color:var(--color-text-secondary, #1a1a1a)}.issue-detail-description,.issue-detail-fix{margin:0;font-size:var(--font-size-sm, .875rem);color:var(--color-text-primary, #0a0a0a);line-height:1.5;white-space:pre-wrap}.issue-detail-section.fix-section{background:var(--color-success-50, #f0fdf4);padding:var(--space-3, .75rem);border-radius:var(--radius-md, .375rem);border:1px solid var(--color-success-200, #bbf7d0)}.fix-date{display:block;margin-top:var(--space-2, .5rem);font-size:var(--font-size-xs, .75rem);color:var(--color-text-muted, #666)}.issue-pages-list{display:flex;flex-wrap:wrap;gap:var(--space-1, .25rem)}.page-tag{font-size:var(--font-size-xs, .75rem);padding:2px 6px;background:var(--color-neutral-100, #f5f5f5);border-radius:var(--radius-sm, .25rem);color:var(--color-text-secondary, #1a1a1a);font-family:var(--font-family-mono, monospace)}.issue-detail-meta{font-size:var(--font-size-xs, .75rem);color:var(--color-text-muted, #666);display:flex;flex-direction:column;gap:var(--space-1, .25rem)}.issue-detail-actions{padding:var(--space-3, .75rem);border-top:1px solid var(--color-neutral-200, #e5e5e5);display:flex;flex-direction:column;gap:var(--space-2, .5rem)}.btn-close-issue,.btn-reopen-issue{width:100%;padding:var(--space-3, .75rem);border:none;border-radius:var(--radius-md, .375rem);font-size:var(--font-size-sm, .875rem);font-weight:500;cursor:pointer;transition:all .15s ease}.btn-close-issue{background:var(--color-success-500, #22c55e);color:#fff}.btn-close-issue:hover:not(:disabled){background:var(--color-success-600, #16a34a)}.btn-close-issue.secondary{background:var(--color-neutral-200, #e5e5e5);color:var(--color-text-primary, #0a0a0a)}.btn-close-issue.secondary:hover:not(:disabled){background:var(--color-neutral-300, #d4d4d4)}.btn-reopen-issue{background:var(--color-warning-100, #fef3c7);color:var(--color-warning-800, #92400e);border:1px solid var(--color-warning-300, #fcd34d)}.btn-reopen-issue:hover:not(:disabled){background:var(--color-warning-200, #fde68a)}.btn-close-issue:disabled,.btn-reopen-issue:disabled{opacity:.6;cursor:not-allowed}.close-confirm-section{padding:var(--space-3, .75rem);background:var(--color-danger-50, #fef2f2);border-radius:var(--radius-md, .375rem);border:1px solid var(--color-danger-200, #fecaca)}.close-confirm-text{margin:0 0 var(--space-2, .5rem) 0;font-size:var(--font-size-sm, .875rem);color:var(--color-danger-700, #b91c1c);text-align:center}.close-confirm-buttons{display:flex;gap:var(--space-2, .5rem)}.btn-cancel-close,.btn-confirm-close{flex:1;padding:var(--space-2, .5rem) var(--space-3, .75rem);border:none;border-radius:var(--radius-md, .375rem);font-size:var(--font-size-sm, .875rem);font-weight:500;cursor:pointer}.btn-cancel-close{background:var(--color-neutral-200, #e5e5e5);color:var(--color-text-primary, #0a0a0a)}.btn-confirm-close{background:var(--color-danger-500, #ef4444);color:#fff}.btn-confirm-close:hover:not(:disabled){background:var(--color-danger-600, #dc2626)}.issue-reopen-input{padding:var(--space-3, .75rem);background:var(--color-warning-50, #fffbeb);border-top:1px solid var(--color-warning-200, #fde68a)}.issue-reopen-input h4{margin:0 0 var(--space-2, .5rem) 0;font-size:var(--font-size-sm, .875rem);color:var(--color-warning-800, #92400e)}.issue-reopen-input textarea{width:100%;padding:var(--space-2, .5rem);border:1px solid var(--color-warning-300, #fcd34d);border-radius:var(--radius-md, .375rem);font-size:var(--font-size-sm, .875rem);resize:vertical;font-family:inherit}.issue-reopen-input textarea:focus{outline:none;border-color:var(--color-warning-500, #f59e0b);box-shadow:0 0 0 2px #f59e0b33}.reopen-actions{display:flex;gap:var(--space-2, .5rem);margin-top:var(--space-2, .5rem)}.btn-cancel-reopen,.btn-submit-reopen{flex:1;padding:var(--space-2, .5rem);border:none;border-radius:var(--radius-md, .375rem);font-size:var(--font-size-sm, .875rem);cursor:pointer;transition:all .15s ease}.btn-cancel-reopen{background:var(--color-neutral-200, #e5e5e5);color:var(--color-text-primary, #0a0a0a)}.btn-cancel-reopen:hover{background:var(--color-neutral-300, #d4d4d4)}.btn-submit-reopen{background:var(--color-warning-500, #f59e0b);color:#fff}.btn-submit-reopen:hover:not(:disabled){background:var(--color-warning-600, #d97706)}.btn-submit-reopen:disabled{opacity:.6;cursor:not-allowed}.issue-menu-issue-item.clickable{cursor:pointer;transition:all .15s ease;text-align:left;background:#fff}.issue-menu-issue-item.clickable:hover{background:var(--color-primary-50, #faf5f0);border-color:var(--color-primary-300, #c9a876)}.issue-item-arrow{color:var(--color-text-muted, #666);font-size:1.2rem;margin-left:auto}@media (max-width: 480px){.issue-reporter-detail{top:auto;bottom:0;left:0;right:0;width:100%;max-height:80vh;border-radius:var(--radius-lg, .5rem) var(--radius-lg, .5rem) 0 0}}.maintenance-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-primary-50) 0%,var(--color-primary-100) 50%,var(--color-primary-200) 100%);padding:var(--space-6);position:relative;overflow:hidden}.maintenance-content{text-align:center;max-width:500px;position:relative;z-index:10;animation:fadeIn .8s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.maintenance-icon{margin-bottom:var(--space-6)}.coffee-cup{position:relative;display:inline-block}.cup-body{font-size:5rem;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.steam{position:absolute;top:-20px;left:50%;transform:translate(-50%);display:flex;gap:8px}.steam span{display:block;width:8px;height:8px;background:var(--color-primary-300);border-radius:50%;opacity:0;animation:steam 2s ease-in-out infinite}.steam span:nth-child(1){animation-delay:0s}.steam span:nth-child(2){animation-delay:.3s}.steam span:nth-child(3){animation-delay:.6s}@keyframes steam{0%{transform:translateY(0) scale(1);opacity:.8}50%{opacity:.4}to{transform:translateY(-30px) scale(.5);opacity:0}}.maintenance-title{font-family:var(--font-family-serif);font-size:var(--font-size-3xl);color:var(--color-primary-900);margin:0 0 var(--space-3);font-weight:600}.maintenance-subtitle{font-size:var(--font-size-lg);color:var(--color-text-secondary);margin:0 0 var(--space-6);line-height:1.6}.maintenance-status{margin-bottom:var(--space-6)}.status-badge{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-warning-50);border:1px solid var(--color-warning-200);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full)}.status-dot{width:10px;height:10px;background:var(--color-warning-500);border-radius:50%;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}.status-text{font-size:var(--font-size-sm);font-weight:500;color:var(--color-warning-700)}.maintenance-description{font-size:var(--font-size-base);color:var(--color-text-muted);margin:0 0 var(--space-8);line-height:1.7}.maintenance-facts{background:#ffffffb3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--color-primary-200);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-8)}.maintenance-facts h3{font-size:var(--font-size-base);color:var(--color-primary-700);margin:0 0 var(--space-2);font-weight:600}.coffee-fact{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;line-height:1.6;font-style:italic}.maintenance-footer{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.maintenance-footer p{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.refresh-button{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-primary-600);color:#fff;border:none;padding:var(--space-3) var(--space-6);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px #a660204d}.refresh-button:hover{background:var(--color-primary-700);transform:translateY(-2px);box-shadow:0 6px 16px #a6602066}.refresh-button:active{transform:translateY(0)}.coffee-beans-bg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.bean{position:absolute;font-size:2rem;opacity:.15;animation:floatBean 20s ease-in-out infinite}.bean-1{top:10%;left:10%;animation-delay:0s}.bean-2{top:20%;right:15%;animation-delay:-3s;font-size:1.5rem}.bean-3{bottom:30%;left:5%;animation-delay:-6s}.bean-4{bottom:15%;right:10%;animation-delay:-9s;font-size:2.5rem}.bean-5{top:50%;right:5%;animation-delay:-12s;font-size:1.8rem}@keyframes floatBean{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-20px) rotate(10deg)}50%{transform:translateY(-10px) rotate(-5deg)}75%{transform:translateY(-30px) rotate(5deg)}}@media (min-width: 640px){.maintenance-title{font-size:var(--font-size-4xl)}.cup-body{font-size:6rem}}@media (min-width: 1024px){.maintenance-title{font-size:var(--font-size-5xl)}.maintenance-content{max-width:600px}}:root{--color-primary-50: #FFF9F0;--color-primary-100: #FCEFD8;--color-primary-200: #F5DFC0;--color-primary-300: #E8C8A0;--color-primary-400: #D4A06A;--color-primary-500: #C07830;--color-primary-600: #A66020;--color-primary-700: #8A4A15;--color-primary-800: #6B3510;--color-primary-900: #4A2008;--color-neutral-50: #FFFCF7;--color-neutral-100: #FAF4EB;--color-neutral-200: #F0E5D8;--color-neutral-300: #DFD0C0;--color-neutral-400: #B5A08A;--color-neutral-500: #8A7560;--color-neutral-600: #5F5045;--color-neutral-700: #453830;--color-neutral-800: #2E241E;--color-neutral-900: #1A1410;--color-text-primary: #2E1A0A;--color-text-secondary: #4A2810;--color-text-muted: #7A6450;--color-text-subtle: #A89580;--color-success-50: #F0FBF0;--color-success-100: #D8F5D8;--color-success-200: #B0E8B0;--color-success-300: #78D878;--color-success-400: #50C850;--color-success-500: #2EAD2E;--color-success-600: #259025;--color-success-700: #1C701C;--color-success-800: #145014;--color-warning-50: #FFFAEB;--color-warning-100: #FEF0C8;--color-warning-200: #FDE290;--color-warning-300: #FCD050;--color-warning-400: #F5B820;--color-warning-500: #E89D00;--color-warning-600: #C88200;--color-warning-700: #A06500;--color-warning-800: #784A00;--color-danger-50: #FFF5F2;--color-danger-100: #FFE5DE;--color-danger-200: #FFCABC;--color-danger-300: #FFA590;--color-danger-400: #F87860;--color-danger-500: #E85035;--color-danger-600: #C83820;--color-danger-700: #A02818;--color-danger-800: #781C10;--color-error-50: var(--color-danger-50);--color-error-100: var(--color-danger-100);--color-error-200: var(--color-danger-200);--color-error-500: var(--color-danger-500);--color-error-600: var(--color-danger-600);--color-error-700: var(--color-danger-700);--color-error-800: var(--color-danger-800);--color-info-50: #F0F7FF;--color-info-100: #DCEAFF;--color-info-200: #B8D5FF;--color-info-300: #90BCFF;--color-info-400: #60A0F8;--color-info-500: #3080E8;--color-info-600: #2068C8;--color-info-700: #1850A0;--color-info-800: #103878;--color-cta-darkest: #6B3510;--color-cta-dark: #8A4A18;--color-cta: #A85820;--color-cta-light: #C87030;--color-cta-lighter: #F5DFC0;--color-premium-dark: #5A3545;--color-premium: #7A4560;--color-premium-light: #A87090;--color-premium-lighter: #F0E0E8;--color-primary-darkest: #4A2008;--color-primary-dark: #6B3510;--color-primary-lighter: #E8C8A0;--color-surface: #FFFEFA;--color-surface-elevated: #FFFCF5;--color-background: #FFF9F0;--color-background-subtle: #FAF4EB;--gradient-cream: linear-gradient(135deg, #FFF9F0 0%, #FCEFD8 100%);--gradient-latte: linear-gradient(135deg, #FCEFD8 0%, #F5DFC0 100%);--gradient-caramel: linear-gradient(135deg, #F5DFC0 0%, #E8C8A0 100%);--gradient-warm-highlight: linear-gradient(135deg, #FFF9F0 0%, #FCEFD8 50%, #FFF9F0 100%);--gradient-coffee-card: linear-gradient(180deg, #FFFCF5 0%, #FAF4EB 100%);--gradient-cta: linear-gradient(135deg, #FFFFFF 0%, #FDF8F3 100%);--gradient-cta-selected: linear-gradient(135deg, #F5E6D3 0%, #EDD9C4 100%);--font-family-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-family-serif: "Merriweather", Georgia, "Times New Roman", serif;--font-family-mono: "JetBrains Mono", "Fira Code", Consolas, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--container-xs: 320px;--container-sm: 384px;--container-md: 448px;--container-lg: 512px;--container-xl: 576px;--container-2xl: 672px;--safe-area-inset-top: env(safe-area-inset-top, 0px);--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);--safe-area-inset-left: env(safe-area-inset-left, 0px);--safe-area-inset-right: env(safe-area-inset-right, 0px);--page-padding-x: var(--space-4);--page-padding-y: var(--space-4);--border-width-thin: 1px;--border-width-medium: 2px;--border-width-thick: 4px;--radius-none: 0;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.5rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--duration-instant: .1s;--duration-quick: .2s;--duration-normal: .3s;--duration-slow: .5s;--duration-slower: .8s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--touch-target-min: 44px;--touch-target-comfortable: 48px;--touch-target-spacious: 56px;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800}@media (min-width: 640px){:root{--page-padding-x: var(--space-6);--page-padding-y: var(--space-6)}}@media (min-width: 1024px){:root{--page-padding-x: var(--space-8);--page-padding-y: var(--space-8)}}input,textarea,select{color:#000!important}input::placeholder,textarea::placeholder{color:#666!important}select{background:transparent!important;border:1px solid var(--color-neutral-200)!important;border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--font-size-base);min-height:40px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%237A6450' d='M6 8L2 4h8z'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 12px center!important;padding-right:32px}select:hover{border-color:var(--color-neutral-400)!important}select:focus{outline:none;border-color:var(--color-primary-400)!important;background-color:var(--color-primary-50)!important}select option{background:#fff;color:#000}select option:checked,select option:hover{background:var(--color-primary-100)}h1,h2,h3,h4,h5,h6{color:#0a0a0a}p{color:#1a1a1a}label{color:#0a0a0a}.ds-container{width:100%;max-width:var(--container-lg);margin:0 auto;padding-left:var(--page-padding-x);padding-right:var(--page-padding-x)}.ds-card{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-4);border:var(--border-width-thin) solid var(--color-neutral-200)}.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);font-family:var(--font-family-sans);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);border-radius:var(--radius-md);border:none;cursor:pointer;transition:all var(--transition-fast);text-decoration:none;min-height:44px;min-width:44px}.ds-btn:disabled{opacity:.5;cursor:not-allowed}.ds-btn-primary{background:var(--color-primary-500);color:#fff}.ds-btn-primary:hover:not(:disabled){background:var(--color-primary-600)}.ds-btn-secondary{background:var(--color-neutral-100);color:var(--color-neutral-800);border:var(--border-width-thin) solid var(--color-neutral-300)}.ds-btn-secondary:hover:not(:disabled){background:var(--color-neutral-200)}.ds-btn-ghost{background:transparent;color:var(--color-primary-600)}.ds-btn-ghost:hover:not(:disabled){background:var(--color-primary-50)}.ds-btn-sm{padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);min-height:36px}.ds-btn-lg{padding:var(--space-4) var(--space-6);font-size:var(--font-size-lg);min-height:52px}.ds-btn-full{width:100%}.ds-input{width:100%;padding:var(--space-3) var(--space-4);font-family:var(--font-family-sans);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:#000;background:#fff;border:var(--border-width-thin) solid var(--color-neutral-300);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);min-height:44px}.ds-input:focus,.ds-input:focus-visible{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-100)}.ds-input:disabled{background:var(--color-neutral-100);cursor:not-allowed}.ds-input-error{border-color:var(--color-error-500)}.ds-input-error:focus{box-shadow:0 0 0 3px var(--color-error-50)}.ds-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:#0a0a0a;margin-bottom:var(--space-2)}.ds-form-group{margin-bottom:var(--space-4)}.ds-text-xs{font-size:var(--font-size-xs)}.ds-text-sm{font-size:var(--font-size-sm)}.ds-text-base{font-size:var(--font-size-base)}.ds-text-lg{font-size:var(--font-size-lg)}.ds-text-xl{font-size:var(--font-size-xl)}.ds-text-2xl{font-size:var(--font-size-2xl)}.ds-text-3xl{font-size:var(--font-size-3xl)}.ds-text-muted{color:#333}.ds-text-primary{color:#1a1005}.ds-text-success{color:var(--color-success-700)}.ds-text-error{color:var(--color-error-700)}.ds-heading{font-family:var(--font-family-sans);font-weight:var(--font-weight-bold);color:#000;line-height:var(--line-height-tight)}.ds-h1{font-size:var(--font-size-3xl);margin-bottom:var(--space-4)}.ds-h2{font-size:var(--font-size-2xl);margin-bottom:var(--space-3)}.ds-h3{font-size:var(--font-size-xl);margin-bottom:var(--space-2)}.ds-h4{font-size:var(--font-size-lg);margin-bottom:var(--space-2)}.ds-page{min-height:100vh;padding:var(--page-padding-y) var(--page-padding-x);padding-top:calc(var(--page-padding-y) + var(--safe-area-inset-top));padding-bottom:calc(var(--page-padding-y) + var(--safe-area-inset-bottom));background:var(--color-neutral-50)}.ds-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--page-padding-x);background:#fff;border-bottom:var(--border-width-thin) solid var(--color-neutral-200);position:sticky;top:0;z-index:var(--z-sticky)}.ds-spinner{width:24px;height:24px;border:3px solid var(--color-neutral-200);border-top-color:var(--color-primary-500);border-radius:var(--radius-full);animation:ds-spin .8s linear infinite}@keyframes ds-spin{to{transform:rotate(360deg)}}.ds-alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);display:flex;align-items:flex-start;gap:var(--space-2)}.ds-alert-success{background:var(--color-success-50);color:var(--color-success-700);border:var(--border-width-thin) solid var(--color-success-500)}.ds-alert-error{background:var(--color-error-50);color:var(--color-error-700);border:var(--border-width-thin) solid var(--color-error-500)}.ds-alert-warning{background:var(--color-warning-50);color:var(--color-warning-700);border:var(--border-width-thin) solid var(--color-warning-500)}.ds-alert-info{background:var(--color-info-50);color:var(--color-info-700);border:var(--border-width-thin) solid var(--color-info-500)}.ds-stack>*+*{margin-top:var(--space-4)}.ds-stack-sm>*+*{margin-top:var(--space-2)}.ds-stack-lg>*+*{margin-top:var(--space-6)}.ds-flex{display:flex}.ds-flex-col{flex-direction:column}.ds-flex-center{align-items:center;justify-content:center}.ds-flex-between{justify-content:space-between}.ds-gap-2{gap:var(--space-2)}.ds-gap-4{gap:var(--space-4)}.ds-img-responsive{max-width:100%;height:auto;border-radius:var(--radius-md)}.ds-divider{height:var(--border-width-thin);background:var(--color-neutral-200);border:none;margin:var(--space-4) 0}.ds-badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-full);background:var(--color-neutral-100);color:var(--color-neutral-700)}.ds-badge-primary{background:var(--color-primary-100);color:var(--color-primary-700)}.ds-badge-success{background:var(--color-success-50);color:var(--color-success-700)}.ds-empty-state{text-align:center;padding:var(--space-8) var(--space-4);color:var(--color-neutral-500)}.ds-empty-state-icon{font-size:3rem;margin-bottom:var(--space-4)}.ds-skeleton{background:linear-gradient(90deg,var(--color-neutral-200) 25%,var(--color-neutral-100) 50%,var(--color-neutral-200) 75%);background-size:200% 100%;animation:ds-skeleton-loading 1.5s ease-in-out infinite;border-radius:var(--radius-md)}@keyframes ds-skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.ds-bottom-sheet{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl);padding:var(--space-4);padding-bottom:calc(var(--space-4) + var(--safe-area-inset-bottom));box-shadow:var(--shadow-xl);z-index:var(--z-modal)}.ds-bottom-sheet-handle{width:40px;height:4px;background:var(--color-neutral-300);border-radius:var(--radius-full);margin:0 auto var(--space-4)}@media (max-width: 639px){.ds-hide-mobile{display:none!important}}@media (min-width: 640px){.ds-hide-tablet{display:none!important}}@media (min-width: 1024px){.ds-hide-desktop{display:none!important}}.ds-barcode,.barcode,.card-barcode,.barcode-info,.meta-value.barcode{background:#f0e8e2!important;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text-secondary)!important;width:fit-content;display:inline-block}h1,h2,h3,h4,h5,h6,.form-header h1,.form-section h2,.preview-title,.card-title{color:#0a0a0a!important}.theme-transition,.theme-transition *,.theme-transition *:before,.theme-transition *:after{transition:background-color .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease!important}#goog-gt-tt,.goog-te-banner-frame,.goog-te-menu-frame,.goog-te-gadget,.goog-te-spinner-pos,.goog-te-balloon-frame,div#goog-gt-tt,div.goog-te-spinner-pos,div.skiptranslate{display:none!important;visibility:hidden!important}body.translated-ltr,body.translated-rtl{margin-top:0!important}[class*=translate-],[id*=translate-]{display:none!important}:root{--font-family-heading: "Playfair Display", var(--font-family-serif);--font-family-body: var(--font-family-sans);--font-size-display: 3rem;--font-weight-display: 800;--line-height-display: 1.2;--font-size-h1: 2.25rem;--font-weight-h1: 700;--line-height-h1: 1.3;--font-size-h2: 1.875rem;--font-weight-h2: 700;--line-height-h2: 1.3;--font-size-h3: 1.5rem;--font-weight-h3: 600;--line-height-h3: 1.4;--font-weight-lg: 400;--line-height-lg: 1.6;--font-weight-base: 400;--line-height-base: 1.6;--font-weight-sm: 400;--line-height-sm: 1.5;--font-weight-xs: 500;--line-height-xs: 1.4;--spacing-xs: var(--space-1);--spacing-sm: var(--space-2);--spacing-md: var(--space-4);--spacing-lg: var(--space-6);--spacing-xl: var(--space-8);--spacing-2xl: var(--space-12);--spacing-3xl: var(--space-16);--duration-instant: .1s;--duration-quick: .2s;--duration-normal: .3s;--duration-slow: .5s;--duration-slower: .8s;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .05);--shadow-2xl: 0 25px 50px rgba(0, 0, 0, .15);--transition-colors: color var(--duration-quick) var(--ease-out), background-color var(--duration-quick) var(--ease-out), border-color var(--duration-quick) var(--ease-out);--transition-transform: transform var(--duration-quick) var(--ease-out);--transition-all: all var(--duration-normal) var(--ease-in-out);--touch-target-min: 48px;--touch-target-comfortable: 56px;--touch-target-spacious: 64px;--z-negative: -1;--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-modal: 300;--z-tooltip: 400;--z-notification: 500}@media (prefers-reduced-motion: reduce){:root{--duration-instant: 0ms;--duration-quick: 0ms;--duration-normal: 0ms;--duration-slow: 0ms;--duration-slower: 0ms;--ease-spring: linear}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}html{font-size:16px;scroll-behavior:smooth}h1{font-size:var(--font-size-h1);font-weight:var(--font-weight-h1);line-height:var(--line-height-h1);color:var(--color-primary-dark);margin-bottom:var(--spacing-md)}h2{font-size:var(--font-size-h2);font-weight:var(--font-weight-h2);line-height:var(--line-height-h2);color:var(--color-primary-dark);margin-bottom:var(--spacing-md)}h3{font-size:var(--font-size-h3);font-weight:var(--font-weight-h3);line-height:var(--line-height-h3);color:var(--color-primary);margin-bottom:var(--spacing-sm)}p{font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-neutral-700);margin-bottom:var(--spacing-md)}.btn-primary,[type=submit]:not([class*=secondary]),[type=button]:not([class*=secondary]){display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-target-min);padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;background:var(--gradient-cta);color:#5c4033;border:2px solid #C4956A;border-radius:var(--radius-md);box-shadow:0 2px 8px #c4956a33;transition:var(--transition-all);cursor:pointer;position:relative;overflow:hidden}.btn-primary:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:#ffffff26;transition:left var(--duration-normal) var(--ease-out);z-index:-1}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#d48838,#b86828);transform:translateY(-2px);box-shadow:0 6px 20px #a8582059}.btn-primary:before:hover{left:100%}.btn-primary:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 8px #a858204d}.btn-primary:focus-visible{outline:3px solid var(--color-primary-400);outline-offset:2px}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-target-min);padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-base);font-weight:600;background:var(--color-neutral-100);color:var(--color-primary-dark);border:2px solid var(--color-primary-light);border-radius:var(--radius-md);transition:var(--transition-all);cursor:pointer}.btn-secondary:hover:not(:disabled){background:var(--color-primary-lighter);border-color:var(--color-primary)}.btn-secondary:active:not(:disabled){transform:scale(.98)}.btn-secondary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn-tertiary,.btn-link{background:none;border:none;color:var(--color-cta);text-decoration:underline;font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:color var(--duration-quick) var(--ease-out)}.btn-tertiary:hover:not(:disabled),.btn-link:hover:not(:disabled){color:var(--color-cta-dark)}.card{display:flex;flex-direction:column;padding:var(--spacing-lg);background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:var(--transition-all)}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary-lighter)}.card.elevated{box-shadow:var(--shadow-lg)}.card.interactive{cursor:pointer}.card.interactive:active{transform:translateY(-1px)}input,textarea,select{width:100%;padding:var(--spacing-md);min-height:var(--touch-target-min);font-size:var(--font-size-base);font-family:inherit;line-height:var(--line-height-base);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);background:transparent;color:var(--color-neutral-900);transition:var(--transition-colors)}input::placeholder,textarea::placeholder{color:var(--color-neutral-500)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-cta);box-shadow:0 0 0 3px var(--color-cta-lighter)}.feedback-success{background:linear-gradient(135deg,var(--color-success-lighter) 0%,#e8fef1 100%);border-left:4px solid var(--color-success);color:var(--color-success-dark)}.feedback-error{background:linear-gradient(135deg,var(--color-error-lighter) 0%,#fef3f0 100%);border-left:4px solid var(--color-error);color:var(--color-error-dark)}.feedback-warning{background:linear-gradient(135deg,var(--color-cta-lighter) 0%,#fff7ed 100%);border-left:4px solid var(--color-cta);color:var(--color-cta-dark)}.feedback-info{background:linear-gradient(135deg,var(--color-info-lighter) 0%,#f0f9ff 100%);border-left:4px solid var(--color-info);color:var(--color-info-dark)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.animate-fade-in{animation:fadeIn var(--duration-normal) var(--ease-out)}.animate-slide-up{animation:slideUp var(--duration-normal) var(--ease-out)}.animate-slide-down{animation:slideDown var(--duration-normal) var(--ease-out)}.animate-pulse{animation:pulse var(--duration-slow) infinite}.animate-bounce{animation:bounce var(--duration-quick) infinite}.badge{display:inline-block;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);font-weight:600;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.5px}.badge-primary{background:var(--color-primary-lighter);color:var(--color-primary-dark)}.badge-success{background:var(--color-success-lighter);color:var(--color-success-dark)}.badge-error{background:var(--color-error-lighter);color:var(--color-error-dark)}.badge-premium{background:var(--color-premium-lighter);color:var(--color-premium-dark)}hr{border:none;height:1px;background:linear-gradient(90deg,transparent,var(--color-neutral-300),transparent);margin:var(--spacing-xl) 0}a{color:var(--color-cta);text-decoration:none;transition:color var(--duration-quick) var(--ease-out);position:relative}a:hover{color:var(--color-cta-dark);text-decoration:underline}a:focus-visible{outline:2px solid var(--color-cta);outline-offset:2px;border-radius:2px}@media (max-width: 640px){html{font-size:14px}h1{font-size:var(--font-size-h2)}h2{font-size:var(--font-size-h3)}h3{font-size:var(--font-size-lg)}}:focus-visible{outline:2px solid var(--color-cta);outline-offset:2px}::selection{background:var(--color-cta);color:#fff}.loading-carousel{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,var(--color-primary-darkest) 0%,var(--color-primary-dark) 100%);padding:var(--spacing-lg)}.carousel-container{width:100%;max-width:900px;background:#fff;border-radius:var(--radius-2xl);overflow:hidden;box-shadow:var(--shadow-2xl);display:grid;grid-template-columns:1fr 1fr;min-height:500px}.carousel-image-wrapper{position:relative;width:100%;height:100%;min-height:400px;overflow:hidden;background:linear-gradient(135deg,#f5e6d3,#e8d4b8)}.carousel-image{width:100%;height:100%;max-width:100%;object-fit:cover;object-position:center;opacity:0;transition:opacity .5s ease-in-out}.carousel-image.fade-in{opacity:1}.carousel-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,#2c18104d,#3d281733);pointer-events:none}.carousel-content{display:flex;flex-direction:column;justify-content:space-between;padding:48px 40px;background:#fff}.carousel-text{flex:1;display:flex;flex-direction:column;justify-content:center}.carousel-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--radius-lg, 12px);background:linear-gradient(135deg,var(--color-premium-lighter, #ede9fe) 0%,var(--color-premium-light, #c4b5fd) 100%);color:var(--color-premium-dark, #6d28d9);margin-bottom:16px;opacity:0;animation:slideUp .6s ease-out .1s forwards}.carousel-icon.slide-up{opacity:1}.carousel-centered{display:flex;flex-direction:column;align-items:center;justify-content:center;grid-template-columns:1fr;text-align:center}.carousel-centered .carousel-content{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px;width:100%}.carousel-centered .carousel-text{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:600px}.carousel-icon-large{width:80px;height:80px;margin-bottom:24px}.carousel-icon-large svg{width:48px;height:48px}.carousel-title{font-family:var(--font-family-heading, "Playfair Display", Georgia, serif);font-size:32px;font-weight:600;color:var(--color-primary-darkest, #2c1810);margin:0 0 16px;line-height:1.3;letter-spacing:-.02em;opacity:0;animation:slideUp .6s ease-out .2s forwards}.carousel-title.slide-up{opacity:1}.carousel-description{font-family:var(--font-family-body, "Inter", sans-serif);font-size:16px;color:var(--color-neutral-700, #374151);line-height:1.8;margin:0 0 24px;opacity:0;animation:slideUp .6s ease-out .4s forwards}.carousel-description.slide-up{opacity:1}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.carousel-dots{display:flex;gap:8px;margin-top:24px}.dot{width:12px;height:12px;border-radius:50%;background:#e0e0e0;border:none;cursor:pointer;transition:all .3s ease;padding:0}.dot.active{background:#8b5cf6;transform:scale(1.2)}.dot:hover{background:#d0d0d0}.dot.active:hover{background:#8b5cf6}.loading-indicator{position:absolute;bottom:32px;left:40px;right:40px;display:flex;align-items:center;justify-content:center;gap:16px;font-size:16px;font-weight:600;color:var(--color-premium, #8b5cf6);background:#fffffff2;padding:16px 24px;border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-lg, 0 10px 15px rgba(0, 0, 0, .1));border:2px solid var(--color-premium-light, #c4b5fd)}.spinner{width:28px;height:28px;border:4px solid rgba(139,92,246,.2);border-top:4px solid var(--color-premium, #8b5cf6);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 768px){.carousel-container{grid-template-columns:1fr;min-height:auto;max-height:90vh}.carousel-image-wrapper{min-height:250px;order:-1}.carousel-content{padding:32px 24px}.carousel-title{font-size:24px}.carousel-description{font-size:14px}.carousel-icon{width:48px;height:48px}.loading-indicator{position:relative;bottom:auto;left:auto;right:auto;margin-top:16px;padding:12px 16px;font-size:14px}.spinner{width:20px;height:20px}}.ad-display{margin:24px 0;padding:16px 0;border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0;background:#fafafa}.ad-display-before-story{margin-top:0;border-top:none}.ad-display-after-story{margin-bottom:0;border-bottom:none}.ad-container{max-width:800px;margin:0 auto;padding:12px;display:flex;justify-content:center}.ad-label{text-align:center;margin-bottom:12px;font-size:12px;color:#999;text-transform:uppercase;letter-spacing:1px;font-weight:600}.adsbygoogle{display:block}@media (max-width: 640px){.ad-display{margin:20px 0;padding:12px 0}.ad-container{padding:8px}.ad-label{font-size:11px}ins.adsbygoogle{display:block!important}}.story-disclaimer{background:linear-gradient(135deg,#f5f3ff,#f9f5ff);border-left:4px solid #8b5cf6;padding:24px;margin-bottom:32px;border-radius:8px}.disclaimer-container{max-width:800px;margin:0 auto}.disclaimer-container h2{color:#5b21b6;margin-bottom:16px;font-size:1.3rem}.disclaimer-container p{color:#1a1a1a;line-height:1.6;margin-bottom:12px;font-size:.95rem}.vision-section{background:#fff;padding:20px;border-radius:6px;margin:20px 0;border:1px solid #e5e1ff}.vision-section h3{color:#5b21b6;margin-bottom:12px}.enjoy-note{font-style:italic;color:#1a1a1a;margin-top:16px}.support-section{background:linear-gradient(135deg,#fff5f3,#fffaf7);border:2px solid #f59e0b;border-radius:12px;padding:32px;margin-top:40px;margin-bottom:32px}.support-container{max-width:800px;margin:0 auto}.feedback-question{text-align:center}.feedback-question h2{color:#d97706;margin-bottom:16px;font-size:1.5rem}.feedback-question p{color:#1a1a1a;margin-bottom:24px;font-size:1rem}.feedback-buttons{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}.support-options h2{color:#d97706;margin-bottom:16px;font-size:1.5rem;text-align:center}.support-options p{color:#1a1a1a;margin-bottom:20px;line-height:1.6;text-align:center}.benefits-list{list-style:none;margin:24px 0;background:#fff;padding:20px;border-radius:8px;border-left:4px solid #f59e0b}.benefits-list li{color:#1a1a1a;padding:8px 0 8px 24px;position:relative}.benefits-list li:before{content:"✓";position:absolute;left:0;color:var(--color-cta);font-weight:700}.payment-options{margin-top:var(--spacing-2xl)}.payment-options h3{text-align:center;color:var(--color-text-secondary);margin-bottom:var(--spacing-xl)}.payment-choice{background:#fff;padding:var(--spacing-xl);border-radius:var(--radius-lg);margin-bottom:var(--spacing-lg);border:2px solid var(--color-cta-lighter);transition:var(--transition-all);cursor:pointer}.payment-choice:hover{border-color:var(--color-cta);box-shadow:0 4px 12px var(--color-cta-lighter);transform:translateY(-2px)}.payment-choice h4{color:var(--color-cta-dark);margin-bottom:var(--spacing-sm);font-size:var(--font-size-lg)}.payment-choice p{color:var(--color-text-secondary);margin-bottom:var(--spacing-md);font-size:var(--font-size-sm)}.subscription-badge{display:inline-block;background:var(--color-info-lighter);color:var(--color-info-dark);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);font-size:var(--font-size-xs);margin-bottom:12px!important}.donation-amounts{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.subscription-benefits{list-style:none;padding:0;margin:12px 0}.subscription-benefits li{color:#1a1a1a;padding:8px 0 8px 20px;position:relative;font-size:.9rem}.subscription-benefits li:before{content:"⭐";position:absolute;left:0}.btn{padding:var(--spacing-md) var(--spacing-lg);min-height:var(--touch-target-min);border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:var(--transition-all);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--color-cta-dark) 0%,var(--color-cta) 100%);color:#fff;box-shadow:var(--shadow-md)}.btn-primary:hover:not(:disabled){transform:translateY(-3px);box-shadow:var(--shadow-xl);background:linear-gradient(135deg,var(--color-cta) 0%,var(--color-cta-light) 100%)}.btn-secondary{background:#fff;color:var(--color-primary-dark);border:2px solid var(--color-cta)}.btn-secondary:hover:not(:disabled){background:var(--color-cta-lighter)}.btn-outline{background:#fff;color:var(--color-text-secondary);border:1px solid var(--color-neutral-300)}.btn-outline:hover:not(:disabled){background:var(--color-neutral-100);border-color:var(--color-cta)}.btn-accent{background:linear-gradient(135deg,var(--color-info) 0%,var(--color-info-dark) 100%);color:#fff;width:100%;margin-top:var(--spacing-md);box-shadow:var(--shadow-md)}.btn-accent:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn-link{background:none;color:#5b21b6;padding:8px 0;text-decoration:underline;margin-top:16px}.btn-link:hover:not(:disabled){color:#5b21b6}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-content{background:#fff;border-radius:12px;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 20px 60px #0000004d}.modal-close{position:absolute;top:12px;right:12px;background:none;border:none;font-size:28px;color:#1a1a1a;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease}.modal-close:hover{background:#f3f4f6;color:#1f2937}.payment-form{padding:32px 24px}.payment-form h2{color:#1f2937;margin-bottom:24px;font-size:1.3rem;text-align:center}.form-group{margin-bottom:20px}.form-group label{display:block;color:#1a1a1a;font-weight:600;margin-bottom:8px;font-size:.9rem}.form-group input[type=email],.form-group input[type=text]{width:100%;padding:12px;border:1px solid #d1d5db;border-radius:6px;font-size:1rem;transition:border-color .2s ease}.form-group input[type=email]:focus,.form-group input[type=text]:focus{outline:none;border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b1a}.form-group.checkbox{display:flex;align-items:center;gap:8px}.form-group.checkbox input[type=checkbox]{width:auto;margin:0}.form-group.checkbox label{margin:0;font-weight:400}.StripeElement{padding:12px;border:1px solid #d1d5db;border-radius:6px;background-color:#fff}.StripeElement--focus{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b1a}.StripeElement--invalid{border-color:#ef4444}.donation-form,.subscription-form{margin-bottom:24px}.donation-buttons{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-bottom:24px}.donation-btn{padding:12px 24px;border:2px solid #f59e0b;background:#fff;color:#d97706;border-radius:6px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .3s ease;flex:1;min-width:100px}.donation-btn:hover{background:#fef3c7}.donation-btn.selected{background:#f59e0b;color:#fff}.donation-btn:disabled{opacity:.6;cursor:not-allowed}.error-message{background:#fee2e2;border-left:4px solid #ef4444;color:#991b1b;padding:12px 16px;border-radius:4px;margin-bottom:16px;font-size:.9rem}.button-group{display:flex;gap:12px;margin-bottom:16px}.button-group .btn{flex:1}.security-note{color:#1a1a1a;font-size:.8rem;text-align:center;margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb}.payment-success{padding:40px 24px;text-align:center}.payment-success h2{color:#10b981;margin-bottom:16px;font-size:1.5rem}.payment-success p{color:#1a1a1a;margin-bottom:8px;line-height:1.6}.success-message{color:#5b21b6;font-weight:600;margin-top:16px}@media (max-width: 640px){.story-disclaimer{padding:16px;margin-bottom:24px}.support-section{padding:20px;margin-top:24px}.feedback-buttons{flex-direction:column}.feedback-buttons .btn{width:100%}.payment-choice{padding:16px}.donation-amounts{margin-bottom:12px}.donation-btn{flex:0 1 calc(50% - 6px)}.modal-content{border-radius:12px 12px 0 0;max-height:calc(100vh - 20px)}.payment-form{padding:20px 16px}.button-group{flex-direction:column}.btn-accent{width:100%}}.share-section{background:linear-gradient(135deg,#fef3f0,#fef9f7);border:2px solid #ea580c;border-radius:12px;padding:28px;max-width:800px;margin:32px auto}.share-container{text-align:center}.share-title{color:#3d2812;font-size:1.8rem;margin-bottom:12px;font-weight:700}.share-subtitle{color:#1a1a1a;margin-bottom:24px;font-size:.95rem;line-height:1.6}.share-btn-native{background:linear-gradient(135deg,#059669,#047857);color:#fff;border:none;padding:14px 24px;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:8px;margin-bottom:20px;width:100%;max-width:300px;justify-content:center}.share-btn-native:active{background:linear-gradient(135deg,#047857,#065f46);transform:scale(.98)}.share-buttons-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:28px}.share-btn{background:#fff;border:2px solid #e5e5e5;border-radius:8px;padding:12px 8px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;flex-direction:column;align-items:center;gap:6px;color:#1a1a1a}.share-btn:active{background:#f5f5f5;transform:scale(.98)}.share-icon{font-size:1.5rem;display:block}.share-text{font-size:.7rem;display:block;word-break:break-word}.share-btn-twitter{border-color:#1d9bf0;color:#1d9bf0}.share-btn-twitter:active{background:#e7f5ff}.share-btn-facebook{border-color:#1877f2;color:#1877f2}.share-btn-facebook:active{background:#e7f5ff}.share-btn-whatsapp{border-color:#25d366;color:#25d366}.share-btn-whatsapp:active{background:#e7ffed}.share-btn-telegram{border-color:#08c;color:#08c}.share-btn-telegram:active{background:#e7f5ff}.share-btn-linkedin{border-color:#0a66c2;color:#0a66c2}.share-btn-linkedin:active{background:#e7f5ff}.share-btn-email{border-color:#ea4335;color:#ea4335}.share-btn-email:active{background:#ffe7e7}.share-link-section{background:#fff;border:1px solid #e5e5e5;border-radius:8px;padding:20px;margin-bottom:28px}.share-link-container{display:flex;gap:8px;margin-bottom:12px}.share-link-input{flex:1;border:1px solid #ddd;border-radius:6px;padding:10px 12px;font-size:.85rem;font-family:Courier New,monospace;color:#1a1a1a;background:#f9f9f9;word-break:break-all}.share-link-input:focus{outline:none;border-color:#3d2812;background:#fff}.share-link-copy{background:#8b6f47;color:#fff;border:none;border-radius:6px;padding:10px 16px;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:.85rem;min-width:80px}.share-link-copy:active{background:#6d5737;transform:scale(.98)}.share-link-copy.copied{background:#059669}.share-link-hint{font-size:.8rem;color:#999;text-align:center}.share-qr-section{background:#fff;border:1px solid #e5e5e5;border-radius:8px;padding:20px;margin-bottom:24px}.share-qr-hint{font-size:.9rem;color:#1a1a1a;margin-bottom:16px;font-weight:600}.share-qr-placeholder{background:linear-gradient(135deg,#f5e6d3,#e8d4c0);border:2px dashed #D4A574;border-radius:8px;width:150px;height:150px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;color:#3d2812;font-weight:600;font-size:1rem}.qr-generating{text-align:center;font-size:1.5rem}.share-qr-subtitle{font-size:.8rem;color:#999;text-align:center}.share-footer{background:linear-gradient(135deg,#fef3f0,#fff0e6);border-left:4px solid #ea580c;padding:16px;border-radius:6px;margin-top:24px}.share-footer-text{color:#3d2812;font-size:.95rem;font-weight:600;margin-bottom:8px}.share-footer-subtitle{color:#1a1a1a;font-size:.85rem;line-height:1.5}@media (min-width: 641px){.share-buttons-grid{grid-template-columns:repeat(6,1fr);gap:10px}.share-btn{padding:14px 10px}.share-icon{font-size:1.8rem}.share-text{font-size:.75rem}}@media (max-width: 640px){.share-section{padding:20px;margin:24px 0}.share-title{font-size:1.5rem}.share-subtitle{font-size:.9rem}.share-buttons-grid{grid-template-columns:repeat(2,1fr);gap:10px}.share-btn{padding:10px 6px;font-size:.7rem}.share-icon{font-size:1.2rem}.share-link-container{flex-direction:column;gap:8px}.share-link-input{font-size:.75rem;padding:8px 10px}.share-link-copy{width:100%}.share-qr-placeholder{width:120px;height:120px;font-size:.9rem}}.pwa-install-prompt{background:linear-gradient(135deg,#059669,#047857);color:#fff;padding:16px;border-radius:8px;margin-bottom:16px;display:flex;align-items:center;gap:12px;justify-content:space-between}.pwa-install-prompt-content{flex:1}.pwa-install-prompt-title{font-weight:600;margin-bottom:4px}.pwa-install-prompt-description{font-size:.9rem;opacity:.9}.pwa-install-btn{background:#fff;color:#047857;border:none;padding:8px 16px;border-radius:6px;font-weight:600;cursor:pointer;transition:all .3s ease;white-space:nowrap}.pwa-install-btn:active{transform:scale(.98)}.quick-donation-section{text-align:center;margin-top:var(--spacing-lg)}.quick-donation-section h3{font-size:var(--font-size-lg);margin-bottom:var(--spacing-md);color:var(--color-text-primary)}.quick-donation-buttons{display:flex;justify-content:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.btn-donation{min-width:80px;padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-xl);font-weight:700;background:var(--color-primary-100);color:var(--color-primary-700);border:2px solid var(--color-primary-300);border-radius:var(--radius-lg);cursor:pointer;transition:all .2s ease;position:relative}.btn-donation:hover{background:var(--color-primary-200);border-color:var(--color-primary-500);transform:translateY(-2px);box-shadow:0 4px 12px #8b5a2b33}.btn-donation-popular{background:var(--color-primary-500);color:#fff;border-color:var(--color-primary-600);transform:scale(1.1)}.btn-donation-popular:hover{background:var(--color-primary-600);transform:scale(1.1) translateY(-2px)}.popular-badge{display:block;font-size:var(--font-size-xs);font-weight:500;margin-top:var(--spacing-xs);opacity:.9}.donation-note{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--spacing-sm)}.thank-you-banner{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:2px solid #10b981;border-radius:var(--radius-lg);padding:var(--spacing-xl);margin-bottom:var(--spacing-xl);text-align:center}.thank-you-icon{font-size:3rem;margin-bottom:var(--spacing-md)}.thank-you-banner h2{color:#059669;margin-bottom:var(--spacing-sm)}.thank-you-banner p{color:var(--color-text-secondary)}.support-section h2{color:var(--color-text-primary);margin-bottom:var(--spacing-md);font-size:var(--font-size-xl);text-align:center}.support-description{color:var(--color-text-secondary);margin-bottom:var(--spacing-xl);line-height:1.6;text-align:center}.donation-options{text-align:center}.donation-options h3{color:var(--color-text-secondary);font-size:var(--font-size-lg);margin-bottom:var(--spacing-lg)}.donation-buttons{display:flex;gap:var(--spacing-md);justify-content:center;flex-wrap:wrap;margin-bottom:var(--spacing-lg)}.custom-amount-toggle{color:var(--color-text-muted);font-size:var(--font-size-sm);text-decoration:underline;cursor:pointer}.custom-amount-input{display:flex;gap:var(--spacing-md);justify-content:center;align-items:center;margin-bottom:var(--spacing-lg)}.custom-amount-input .input-wrapper{display:flex;align-items:center;background:#fff;border:2px solid var(--color-neutral-300);border-radius:var(--radius-md);padding:0 var(--spacing-sm);transition:border-color .2s}.custom-amount-input .input-wrapper:focus-within{border-color:var(--color-primary-500)}.custom-amount-input .currency-symbol{color:var(--color-text-muted);font-size:var(--font-size-lg);font-weight:500}.custom-amount-input input{border:none;outline:none;padding:var(--spacing-sm);font-size:var(--font-size-lg);width:120px;color:var(--color-text-primary)}.custom-amount-input input::placeholder{color:var(--color-text-muted)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.02)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes slideInBottom{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes confettiFall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translateY(100vh) rotate(720deg)}}@keyframes steamRise{0%{opacity:0;transform:translateY(0) scale(.8)}50%{opacity:.6;transform:translateY(-20px) scale(1)}to{opacity:0;transform:translateY(-40px) scale(1.2)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes heartBeat{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}@keyframes pour{0%{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-bounce{animation:bounce 1s ease-in-out}.animate-shake{animation:shake .5s ease-in-out}.animate-fade-in-up{animation:fadeInUp .4s ease-out forwards}.animate-fade-in-scale{animation:fadeInScale .3s ease-out forwards}.animate-slide-in-right{animation:slideInRight .4s ease-out forwards}.animate-slide-in-bottom{animation:slideInBottom .4s ease-out forwards}.animate-float{animation:float 3s ease-in-out infinite}.animate-spin{animation:spin 1s linear infinite}.animate-shimmer{background:linear-gradient(90deg,var(--color-neutral-100) 0%,var(--color-neutral-200) 50%,var(--color-neutral-100) 100%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}.animate-heart-beat{animation:heartBeat 1s ease-in-out}.btn-interactive{position:relative;overflow:hidden;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.btn-interactive:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#fff3;border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.btn-interactive:active:before{width:200%;height:200%}.btn-interactive:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-interactive:active{transform:translateY(0) scale(.98)}.card-interactive{transition:transform var(--transition-normal),box-shadow var(--transition-normal);will-change:transform}.card-interactive:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.card-interactive:active{transform:translateY(-2px) scale(.99)}.card-tappable{transition:transform .1s ease,background-color .1s ease;-webkit-tap-highlight-color:transparent}.card-tappable:active{transform:scale(.98);background-color:var(--color-neutral-100)}.stagger-children>*{opacity:0;animation:fadeInUp .4s ease-out forwards}.stagger-children>*:nth-child(1){animation-delay:.05s}.stagger-children>*:nth-child(2){animation-delay:.1s}.stagger-children>*:nth-child(3){animation-delay:.15s}.stagger-children>*:nth-child(4){animation-delay:.2s}.stagger-children>*:nth-child(5){animation-delay:.25s}.stagger-children>*:nth-child(6){animation-delay:.3s}.stagger-children>*:nth-child(7){animation-delay:.35s}.stagger-children>*:nth-child(8){animation-delay:.4s}.stagger-children>*:nth-child(9){animation-delay:.45s}.stagger-children>*:nth-child(10){animation-delay:.5s}.success-glow{position:relative}.success-glow:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:var(--color-success-500);border-radius:inherit;opacity:0;z-index:-1;animation:glowPulse .6s ease-out}@keyframes glowPulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.1)}}.error-shake{animation:shake .5s ease-in-out}.error-border{border-color:var(--color-danger-500)!important;animation:errorPulse .3s ease-out}@keyframes errorPulse{0%,to{border-color:var(--color-danger-500)}50%{border-color:var(--color-danger-300)}}@media (prefers-reduced-motion: reduce){.animate-pulse,.animate-bounce,.animate-shake,.animate-fade-in-up,.animate-fade-in-scale,.animate-slide-in-right,.animate-slide-in-bottom,.animate-float,.animate-spin,.animate-shimmer,.animate-heart-beat,.stagger-children>*{animation:none!important;opacity:1!important;transform:none!important}.btn-interactive,.card-interactive,.card-tappable{transform:none!important;transition:none!important}}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;overflow-x:hidden;height:100%;overscroll-behavior-x:none}body{font-family:var(--font-family-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--gradient-cream);min-height:100vh;min-height:100dvh;color:var(--color-text-primary);line-height:var(--line-height-normal);overflow-x:hidden;overscroll-behavior-x:none;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}#root{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}@media (max-width: 768px){#root{padding-bottom:calc(60px + env(safe-area-inset-bottom,0))}}.home{display:flex;flex-direction:column;flex:1;padding:var(--space-4);max-width:var(--container-2xl);margin:0 auto;width:100%}.app-header{text-align:center;padding:var(--space-8) var(--space-4);color:var(--color-primary-900)}.app-header h1{font-family:var(--font-family-serif);font-size:var(--font-size-4xl);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2);letter-spacing:-.02em}.app-header p{font-size:var(--font-size-lg);color:var(--color-neutral-700);font-weight:var(--font-weight-normal)}.app-main{display:flex;flex-direction:column;gap:var(--space-8);flex:1;justify-content:flex-start}.barcode-scanner{display:flex;justify-content:center;padding:var(--space-4)}.scan-button{padding:var(--space-4) var(--space-8);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);border:none;border-radius:var(--radius-md);background:var(--color-primary-500);color:#fff;cursor:pointer;transition:all var(--transition-normal);box-shadow:var(--shadow-lg);min-width:200px}.scan-button:hover:not(:disabled){background:var(--color-primary-600);transform:translateY(-2px);box-shadow:var(--shadow-xl)}.scan-button:active:not(:disabled){transform:translateY(0)}.scan-button:disabled{opacity:.7;cursor:not-allowed}.story-container{background:#fff;border-radius:var(--radius-xl, 1.5rem);padding:0;box-shadow:0 4px 20px #8b5a2b14,0 1px 3px #0000000d;animation:storyFadeIn .4s ease-out;overflow:hidden}@keyframes storyFadeIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.story-hero{background:linear-gradient(135deg,var(--color-primary-600, #6b4423) 0%,var(--color-primary-800, #4a2c12) 100%);padding:var(--space-8) var(--space-6);text-align:center;position:relative;overflow:hidden}.story-hero:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 5c-13.807 0-25 11.193-25 25s11.193 25 25 25 25-11.193 25-25S43.807 5 30 5zm0 48c-12.703 0-23-10.297-23-23S17.297 7 30 7s23 10.297 23 23-10.297 23-23 23z' fill='%23ffffff' fill-opacity='0.03'/%3E%3C/svg%3E");pointer-events:none}.story-hero h1{font-family:var(--font-family-serif);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold, 700);color:#fff!important;margin:0 0 var(--space-3);letter-spacing:-.02em;text-shadow:0 2px 4px rgba(0,0,0,.2);position:relative}.story-hero .origin-badge{display:inline-flex;align-items:center;gap:var(--space-2);background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full, 50px);color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium, 500);margin-top:var(--space-2)}.story-hero .origin-badge:before{content:"📍"}.story-content-wrapper{padding:var(--space-6)}.story-container.empty,.story-container.loading{text-align:center;color:var(--color-neutral-700);font-size:var(--font-size-lg);padding:var(--space-12) var(--space-8)}.story-container.error{background-color:var(--color-error-50);color:var(--color-error-700);text-align:center;padding:var(--space-6);border-left:var(--border-width-thick) solid var(--color-error-500)}.story-image{width:100%;max-height:400px;overflow:hidden;border-radius:var(--radius-md);margin-bottom:var(--space-6);background:var(--color-primary-50)}.story-image img{width:100%;height:100%;object-fit:cover}.story-container h1{font-family:var(--font-family-serif);font-size:var(--font-size-3xl);font-weight:var(--font-weight-semibold);color:var(--color-primary-900);margin-bottom:var(--space-6);letter-spacing:-.02em}.story-details{display:flex;flex-direction:column;gap:var(--space-6);padding:var(--space-6)}.story-details section{background:var(--color-primary-50);border-radius:var(--radius-lg);padding:var(--space-5);border:none;transition:transform .2s ease,box-shadow .2s ease}.story-details section:hover{transform:translateY(-2px);box-shadow:0 4px 12px #8b5a2b1a}.story-details section:last-child{border-bottom:none}.story-details h2{font-family:var(--font-family-serif);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-primary-800, #5a3921);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.story-details h2:before{font-size:var(--font-size-lg)}.story-details section:has(h2:contains("Origin")) h2:before{content:"🌍"}.story-details p{color:var(--color-text-primary, #1a1a1a);line-height:var(--line-height-relaxed);font-size:var(--font-size-base)}.journey{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-4)}.stage{background:#fff;padding:var(--space-5);border-radius:var(--radius-lg);border-left:4px solid var(--color-primary-500);box-shadow:0 2px 8px #8b5a2b14;transition:transform .2s ease,box-shadow .2s ease}.stage:hover{transform:translateY(-2px);box-shadow:0 6px 16px #8b5a2b1f}.stage-image{margin:var(--space-3) 0;border-radius:var(--radius-sm);overflow:hidden}.stage-image img{width:100%;height:auto;max-height:150px;object-fit:cover;display:block}.story-photo{margin:var(--space-4) 0;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md);background:var(--color-primary-100)}.story-photo img{width:100%;height:auto;max-height:300px;object-fit:cover;display:block;transition:transform .3s ease}.story-photo:hover img{transform:scale(1.02)}.story-photo-caption{padding:var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-muted);font-style:italic;text-align:center;background:var(--color-primary-50);margin:0}.stage h3{font-family:var(--font-family-serif);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-primary-800, #5a3921);margin-bottom:var(--space-2)}.stage p{font-size:var(--font-size-sm);color:var(--color-text-primary, #1a1a1a);line-height:var(--line-height-relaxed)}.story-narrative{background:linear-gradient(135deg,var(--color-primary-100) 0%,var(--color-primary-50) 100%);border-radius:var(--radius-xl, 1.5rem);padding:var(--space-6);margin:var(--space-4) 0;border:1px solid var(--color-primary-200);position:relative}.story-narrative:before{content:'"';position:absolute;top:var(--space-4);left:var(--space-4);font-size:4rem;font-family:var(--font-family-serif);color:var(--color-primary-300);line-height:1;opacity:.5}.story-content{font-size:var(--font-size-base);line-height:1.8;color:var(--color-text-primary, #1a1a1a);padding-left:var(--space-6)}.story-content section{margin-bottom:var(--space-6);border-bottom:none;padding-bottom:0}.story-content .story-intro{font-size:var(--font-size-lg);color:var(--color-text-primary, #1a1a1a)}.story-content .story-intro .lead{font-style:italic;font-size:var(--font-size-lg);color:var(--color-primary-800, #5a3921);border-left:4px solid var(--color-primary-500);padding-left:var(--space-4);margin-bottom:var(--space-6);background:#8b5a2b0d;padding:var(--space-4);border-radius:0 var(--radius-md) var(--radius-md) 0}.story-content .story-chapter{margin-bottom:var(--space-8)}.story-content .story-chapter h3{font-family:var(--font-family-serif);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-primary-900);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:2px solid var(--color-primary-200)}.story-content .story-chapter p{margin-bottom:var(--space-4);text-align:justify}.story-content .story-finale{background:linear-gradient(135deg,var(--color-primary-200) 0%,var(--color-primary-100) 100%);border-radius:var(--radius-lg);padding:var(--space-6);margin-top:var(--space-8);text-align:center;border:1px solid var(--color-primary-300)}.story-content .story-finale h3{color:var(--color-primary-800);border-bottom:none}.story-quick-info{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.story-info-badge{display:inline-flex;align-items:center;gap:var(--space-1);background:#fff;padding:var(--space-2) var(--space-3);border-radius:var(--radius-full, 50px);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium, 500);color:var(--color-primary-700);border:1px solid var(--color-primary-200);box-shadow:0 1px 3px #8b5a2b0d}@media (max-width: 768px){.app-header h1{font-size:var(--font-size-3xl)}.app-header{padding:var(--space-6) var(--space-4)}.story-container{border-radius:var(--radius-lg)}.story-hero{padding:var(--space-6) var(--space-4)}.story-hero h1{font-size:var(--font-size-2xl)}.story-details{padding:var(--space-4);gap:var(--space-4)}.story-details h2{font-size:var(--font-size-lg)}.journey{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.scan-button{width:100%;padding:var(--space-3) var(--space-6)}}@media (max-width: 480px){.home{padding:var(--space-2)}.app-header h1{font-size:var(--font-size-2xl)}.story-container{border-radius:var(--radius-md)}.story-hero{padding:var(--space-5) var(--space-3)}.story-hero h1{font-size:var(--font-size-xl)}.story-details{padding:var(--space-3)}.story-details h2{font-size:var(--font-size-base)}.journey{grid-template-columns:1fr}.stage,.story-narrative{padding:var(--space-4)}.story-narrative:before{font-size:2.5rem;top:var(--space-2);left:var(--space-2)}.story-content{padding-left:var(--space-4)}}.skip-link{position:absolute;top:-100px;left:50%;transform:translate(-50%);background:var(--color-primary-600);color:#fff;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);text-decoration:none;z-index:10000;box-shadow:var(--shadow-lg);transition:top .3s ease}.skip-link:focus{top:var(--space-4);outline:3px solid var(--color-info-500);outline-offset:2px}:focus-visible{outline:3px solid var(--color-info-500);outline-offset:2px}:focus:not(:focus-visible){outline:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role=button]:focus-visible{outline:3px solid var(--color-info-500);outline-offset:2px;box-shadow:0 0 0 4px #3b82f633}.ds-btn-primary:focus-visible,.primary-button:focus-visible,.cta-button:focus-visible{outline-color:#fff;box-shadow:0 0 0 4px #fff6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.focus-trap-active{position:relative}.focus-trap-active:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:var(--z-modal-backdrop)}.pull-to-refresh-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);overflow:hidden;background:var(--color-background);transition:height .2s ease-out}.pull-to-refresh-spinner{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--color-primary-500)}.ptr-icon{width:24px;height:24px;transition:transform .1s ease-out}.ptr-icon--spinning{animation:spin 1s linear infinite}.pull-to-refresh-text{font-size:var(--font-size-sm);color:var(--color-text-muted)}@media (prefers-reduced-motion: reduce){.ptr-icon--spinning{animation:none}.pull-to-refresh-indicator{transition:none}}@media (prefers-color-scheme: dark){.pull-to-refresh-indicator{background:var(--color-background)}}:root{color-scheme:light only}html{color-scheme:light}html,body{overflow-x:hidden;max-width:100vw}a{color:inherit;text-decoration:none}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--color-primary-500, #8b5a2b);color:#fff;cursor:pointer;transition:border-color .25s,background-color .25s,transform .15s;min-height:44px;min-width:44px}button:hover{border-color:var(--color-primary-600, #5c3d1e)}button:focus,button:focus-visible{outline:3px solid var(--color-primary-300, #c9a87a);outline-offset:2px}button:active{transform:scale(.98)}
