:root{--font-display: "Outfit", "Plus Jakarta Sans", system-ui, sans-serif;--font-body: "Plus Jakarta Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--bg-main: #060607;--bg-surface: #101012;--bg-surface-elevated: #161619;--bg-glass: rgba(16, 16, 18, .7);--border-glass: rgba(255, 255, 255, .055);--border-focus: rgba(217, 119, 6, .5);--color-primary: #fafafa;--color-secondary: #8e8e93;--color-muted: #4e4e52;--accent-crema: #c68a4c;--accent-crema-hover: #dca265;--accent-copper: #d97706;--accent-copper-glow: rgba(217, 119, 6, .25);--accent-success: #10b981;--accent-warning: #f59e0b;--accent-danger: #ef4444;--accent-gold: #eab308;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 8px 30px rgba(0, 0, 0, .5);--shadow-lg: 0 16px 48px rgba(0, 0, 0, .7);--shadow-led: 0 0 12px var(--accent-copper);--blur-glass: 20px;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 20px;--radius-pill: 9999px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-main);background-image:radial-gradient(circle at 50% 0%,rgba(217,119,6,.04) 0%,transparent 50%),radial-gradient(circle at 100% 100%,rgba(255,255,255,.015) 0%,transparent 35%);color:var(--color-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden;letter-spacing:-.01em}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-main)}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:var(--accent-crema)}.app-container{max-width:1200px;margin:0 auto;padding:2.5rem 1.5rem 6rem}.app-header{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:3.5rem;padding:1.25rem 1.5rem;background:var(--bg-surface);border:1px solid var(--border-glass);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}@media (min-width: 768px){.app-header{flex-direction:row;justify-content:space-between;align-items:center}}.brand-section{display:flex;align-items:center;gap:1rem}.brand-logo{font-size:2.25rem;display:flex;align-items:center;justify-content:center;animation:float 4s ease-in-out infinite;filter:drop-shadow(0 4px 6px rgba(0,0,0,.3))}.brand-title{font-size:1.75rem;font-weight:800;background:linear-gradient(135deg,#ffffff 40%,var(--accent-crema) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-.03em}.brand-subtitle{font-size:.7rem;color:var(--color-secondary);text-transform:uppercase;letter-spacing:.25em;margin-top:.15rem;font-weight:700}.tab-navigation{display:flex;background:var(--bg-main);border:1px solid var(--border-glass);padding:.25rem;border-radius:var(--radius-md);box-shadow:inset 0 2px 4px #0006;gap:.15rem}.tab-btn{background:transparent;border:none;color:var(--color-secondary);font-family:var(--font-display);font-weight:600;font-size:.85rem;padding:.6rem 1.25rem;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .2s ease-in-out}.tab-btn:hover{color:var(--color-primary)}.tab-btn.active{color:var(--color-primary);background:var(--bg-surface-elevated);border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 12px #0000004d,inset 0 1px #ffffff0d;position:relative}.tab-btn.active:after{content:"";position:absolute;bottom:4px;left:50%;transform:translate(-50%);width:12px;height:2px;background:var(--accent-copper);border-radius:var(--radius-pill);box-shadow:0 0 6px var(--accent-copper)}.quick-shot-container{display:flex;align-items:center}.quick-shot-widget{display:flex;align-items:center;gap:.75rem;padding:.4rem .75rem;border-radius:var(--radius-md);background:#0d0d0e;border:1px solid #1c1c1f;box-shadow:inset 0 1px 3px #000c;position:relative}.quick-shot-widget:before{content:"";position:absolute;left:8px;top:50%;transform:translateY(-50%);width:5px;height:5px;border-radius:var(--radius-pill);background-color:var(--accent-success);box-shadow:0 0 8px var(--accent-success)}.quick-shot-label{font-family:var(--font-mono);font-size:.75rem;color:#3b82f6;text-transform:uppercase;margin-left:.6rem;text-shadow:0 0 4px rgba(59,130,246,.4)}.quick-shot-select{background:transparent;color:var(--color-primary);border:none;font-family:var(--font-display);font-size:.85rem;font-weight:500;cursor:pointer;outline:none;max-width:150px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quick-shot-select option{background:var(--bg-surface-elevated);color:var(--color-primary)}.btn-quick-shot{display:flex;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.75rem;font-weight:700;font-family:var(--font-mono);border-radius:5px;background:#d9770626;color:var(--accent-copper);border:1px solid rgba(217,119,6,.3);cursor:pointer;transition:all .2s ease-in-out;text-shadow:0 0 4px rgba(217,119,6,.3)}.btn-quick-shot:hover:not(:disabled){background:var(--accent-copper);color:#000;border-color:var(--accent-copper);box-shadow:0 0 10px var(--accent-copper-glow)}.btn-quick-shot:active:not(:disabled){transform:scale(.97)}.btn-quick-shot:disabled{opacity:.4;cursor:not-allowed}.quick-shot-success-toast{position:fixed;bottom:2rem;right:2rem;background:#09090b;color:var(--accent-success);border:1px solid var(--accent-success);padding:.85rem 1.35rem;border-radius:var(--radius-md);font-weight:600;font-size:.85rem;font-family:var(--font-mono);box-shadow:0 10px 30px #0009,0 0 15px #10b98133;display:flex;align-items:center;gap:.6rem;z-index:1000;animation:slideInUp .3s cubic-bezier(.16,1,.3,1);text-shadow:0 0 5px rgba(16,185,129,.3)}.card{background:var(--bg-surface);border:1px solid var(--border-glass);border-radius:var(--radius-lg);padding:1.75rem;box-shadow:var(--shadow-md);transition:all .3s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}.card:hover{border-color:#ffffff26;transform:translateY(-2px);box-shadow:var(--shadow-lg)}.card-title{font-size:1.15rem;font-weight:700;color:var(--color-primary);margin-bottom:1.5rem;display:flex;align-items:center;gap:.6rem;letter-spacing:-.01em;text-transform:uppercase;font-size:.85rem;letter-spacing:.08em;color:var(--color-secondary)}.dashboard-grid{display:grid;grid-template-columns:1fr;gap:2rem}@media (min-width: 900px){.dashboard-grid{grid-template-columns:2fr 1fr}}.beans-header-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.beans-header-actions h2{font-size:1.5rem;font-weight:800;letter-spacing:-.03em}.beans-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.bean-card{padding:0;cursor:pointer;display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border-glass)}.bean-card:hover{border-color:var(--accent-crema)}.bean-image-wrapper{width:100%;height:180px;background:#0b0b0c;position:relative;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border-glass);overflow:hidden}.bean-card-img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.16,1,.3,1)}.bean-card:hover .bean-card-img{transform:scale(1.05)}.bean-image-placeholder{font-size:2.5rem;opacity:.2}.bean-card-badge{position:absolute;top:.75rem;right:.75rem;padding:.25rem .65rem;border-radius:var(--radius-sm);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1)}.bean-card-badge.active{color:var(--accent-crema);border-color:#c68a4c4d}.bean-card-badge.finished{color:var(--color-secondary)}.bean-card-badge.wishlist{color:#3b82f6;border-color:#3b82f64d}.bean-card-details{padding:1.35rem;display:flex;flex-direction:column;flex-grow:1}.bean-card-roaster{font-size:.75rem;text-transform:uppercase;color:var(--accent-crema);letter-spacing:.08em;font-weight:700;margin-bottom:.35rem}.bean-card-name{font-size:1.15rem;font-weight:700;margin-bottom:1rem;color:var(--color-primary)}.bean-card-meta-row{display:flex;justify-content:space-between;align-items:center;margin-top:auto;font-family:var(--font-mono);font-size:.75rem;color:var(--color-secondary)}.bean-detail-hero{display:grid;grid-template-columns:1fr;gap:2rem}@media (min-width: 600px){.bean-detail-hero{grid-template-columns:1.2fr 2fr}}.bean-detail-img-box{height:250px;background:#09090a;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border-glass);display:flex;align-items:center;justify-content:center;box-shadow:inset 0 2px 10px #000c}.bean-detail-img{width:100%;height:100%;object-fit:cover}.bean-detail-info{display:flex;flex-direction:column;justify-content:center}.bean-metadata-pills{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}.pill{padding:.3rem .75rem;border-radius:var(--radius-sm);font-size:.75rem;font-family:var(--font-mono);background:var(--bg-surface-elevated);border:1px solid var(--border-glass);color:var(--color-secondary);font-weight:500}.pill-accent{background:#c68a4c1a;border-color:#c68a4c40;color:var(--accent-crema);font-weight:600}.tasting-notes-title{font-size:.7rem!important;font-family:var(--font-mono);letter-spacing:.1em;color:var(--color-secondary);margin-bottom:.35rem}.shot-logs-section{margin-top:2rem}.shot-log-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.shot-log-table-wrapper{overflow-x:auto;border:1px solid var(--border-glass);border-radius:var(--radius-md);background:#09090b}.shot-table{width:100%;border-collapse:collapse;text-align:left;font-size:.85rem;font-family:var(--font-mono)}.shot-table th,.shot-table td{padding:.9rem 1rem;border-bottom:1px solid rgba(255,255,255,.03)}.shot-table th{background:#101012;font-family:var(--font-display);font-weight:700;color:var(--color-secondary);text-transform:uppercase;font-size:.7rem;letter-spacing:.08em;border-bottom:1px solid var(--border-glass)}.shot-table tbody tr:hover{background:#ffffff04}.shot-table tr:last-child td{border-bottom:none}.maintenance-container{display:flex;flex-direction:column;gap:2.5rem}.machine-hero{display:grid;grid-template-columns:1fr;align-items:center;gap:2rem;padding:2rem;background:linear-gradient(135deg,#101012,#060607);border:1px solid var(--border-glass);border-radius:var(--radius-lg);position:relative;overflow:hidden;box-shadow:var(--shadow-md)}@media (min-width: 768px){.machine-hero{grid-template-columns:80px 1fr}}.machine-illustration{font-size:3.5rem;display:flex;justify-content:center;align-items:center;background:#161619;width:80px;height:80px;border-radius:var(--radius-md);border:1px solid var(--border-glass);box-shadow:inset 0 2px 5px #00000080}.machine-info h2{font-size:1.35rem;margin-bottom:.35rem;font-weight:700;letter-spacing:-.02em}.machine-info p{color:var(--color-secondary);font-size:.85rem;font-weight:500}.maintenance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.task-card{display:flex;flex-direction:column;gap:1.25rem;background:var(--bg-surface);border:1px solid var(--border-glass);border-radius:var(--radius-lg);padding:1.5rem}.task-header{display:flex;justify-content:space-between;align-items:flex-start}.task-meta h3{font-size:1.1rem;font-weight:700;margin-bottom:.15rem;letter-spacing:-.01em}.task-interval{font-family:var(--font-mono);font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-secondary)}.task-status-badge{padding:.25rem .5rem;border-radius:var(--radius-sm);font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;background:#09090b}.task-status-badge.clean{color:var(--accent-success);border:1px solid rgba(16,185,129,.3);text-shadow:0 0 4px rgba(16,185,129,.2)}.task-status-badge.due{color:var(--accent-warning);border:1px solid rgba(245,158,11,.3);text-shadow:0 0 4px rgba(245,158,11,.2)}.task-status-badge.overdue{color:var(--accent-danger);border:1px solid rgba(239,68,68,.3);text-shadow:0 0 4px rgba(239,68,68,.2)}.task-gauge-container{display:flex;align-items:center;justify-content:center;padding:1.25rem 0;border-bottom:1px solid rgba(255,255,255,.03)}.circular-gauge{position:relative;width:140px;height:140px;background:radial-gradient(circle,#0e0e10,#060607);border-radius:var(--radius-pill);box-shadow:0 4px 10px #00000080,inset 0 2px 6px #000c,inset 0 0 0 1px #ffffff0d}.circular-gauge svg{transform:rotate(-90deg);width:100%;height:100%}.circular-gauge circle{fill:none;stroke-width:6px}.circular-gauge .bg-circle{stroke:#ffffff08}.circular-gauge .progress-circle{stroke-linecap:round;transition:stroke-dashoffset .8s cubic-bezier(.16,1,.3,1);filter:drop-shadow(0 0 3px var(--accent-color))}.gauge-center-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.gauge-percentage{font-family:var(--font-mono);font-weight:800;font-size:1.5rem;color:var(--color-primary);letter-spacing:-.03em}.gauge-label{font-family:var(--font-mono);font-size:.6rem;color:var(--color-secondary);text-transform:uppercase;letter-spacing:.05em}.task-progress-bars{display:flex;flex-direction:column;gap:.75rem;width:100%;padding-top:.5rem}.progress-bar-row{display:flex;flex-direction:column;gap:.35rem}.progress-bar-label-row{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:.7rem;color:var(--color-secondary);font-weight:500}.progress-bar-track{height:4px;width:100%;background:#0006;border-radius:var(--radius-pill);overflow:hidden;border:1px solid rgba(255,255,255,.02)}.progress-bar-fill{height:100%;border-radius:var(--radius-pill);transition:width .6s cubic-bezier(.16,1,.3,1);background-color:var(--accent-color);box-shadow:0 0 6px var(--accent-color)}.history-list{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem;max-height:250px;overflow-y:auto;padding-right:.25rem}.history-item{display:flex;justify-content:space-between;align-items:center;padding:.65rem .85rem;background:#09090b;border:1px solid rgba(255,255,255,.03);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.75rem}.history-item:hover{border-color:#ffffff14}.history-item-meta{display:flex;flex-direction:column;gap:.15rem}.history-item-date{font-size:.7rem;color:var(--color-secondary)}.history-empty{text-align:center;color:var(--color-muted);font-family:var(--font-mono);font-size:.75rem;padding:3rem 0}.form-group{margin-bottom:1.25rem}.form-label{display:block;font-family:var(--font-mono);font-size:.7rem;font-weight:700;color:var(--color-secondary);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.08em}.form-input,.form-textarea,.form-select{width:100%;padding:.7rem .85rem;background:#09090b;border:1px solid var(--border-glass);border-radius:var(--radius-sm);color:var(--color-primary);font-family:var(--font-body);font-size:.9rem;transition:all .2s cubic-bezier(.16,1,.3,1);outline:none}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--accent-crema);box-shadow:0 0 0 3px #c68a4c26}.form-textarea{min-height:90px;resize:vertical}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.image-upload-zone{border:1px dashed var(--border-glass);border-radius:var(--radius-md);padding:1.5rem;text-align:center;cursor:pointer;transition:all .2s ease-in-out;background:#09090b;display:flex;flex-direction:column;align-items:center;gap:.5rem}.image-upload-zone:hover{border-color:var(--accent-crema);background:#c68a4c05}.image-upload-preview{width:100%;max-height:180px;object-fit:contain;border-radius:var(--radius-sm);margin-top:.5rem;border:1px solid var(--border-glass)}.upload-icon{font-size:1.75rem;color:var(--color-secondary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.65rem 1.25rem;border-radius:var(--radius-sm);font-family:var(--font-display);font-weight:700;font-size:.85rem;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);border:1px solid transparent;outline:none;text-transform:uppercase;letter-spacing:.05em}.btn-primary{background:var(--accent-crema);color:#050505;box-shadow:0 2px 8px #c68a4c33}.btn-primary:hover{background:var(--accent-crema-hover);transform:translateY(-1px);box-shadow:0 4px 15px #c68a4c4d}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:transparent;color:var(--color-primary);border-color:var(--border-glass)}.btn-secondary:hover{background:#ffffff08;border-color:#ffffff26}.btn-danger{background:#ef444414;color:var(--accent-danger);border:1px solid rgba(239,68,68,.2)}.btn-danger:hover{background:var(--accent-danger);color:#fff;border-color:var(--accent-danger);box-shadow:0 4px 15px #ef444433;transform:translateY(-1px)}.btn-icon-only{padding:.45rem;border-radius:var(--radius-sm);background:transparent;border:1px solid transparent;color:var(--color-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease-in-out}.btn-icon-only:hover{color:var(--color-primary);background:#ffffff0a}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s cubic-bezier(.16,1,.3,1)}.modal-content{background:#101012;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);width:90%;max-width:520px;max-height:90vh;overflow-y:auto;padding:2rem;box-shadow:0 24px 60px #000c,0 0 0 1px #ffffff05;animation:slideUp .3s cubic-bezier(.16,1,.3,1);position:relative}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.modal-header h2{font-size:1.35rem;font-weight:700;letter-spacing:-.02em}.modal-close{background:transparent;border:none;color:var(--color-secondary);font-size:1.5rem;cursor:pointer;transition:color .15s ease;line-height:1}.modal-close:hover{color:var(--color-primary)}.star-rating{display:flex;align-items:center;gap:2px}.star{color:#ffffff1a;display:inline-block;font-size:.8rem}.star.filled{color:var(--accent-gold);text-shadow:0 0 6px rgba(234,179,8,.3)}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-5px)}to{transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(15px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tab-btn.lang-toggle{margin-left:auto;padding:.5rem .7rem;gap:.35rem;font-size:.75rem;opacity:.7}.tab-btn.lang-toggle:hover{opacity:1;background:#ffffff0f}
