*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,sans-serif;background:radial-gradient(circle at top,#1a1f2b,#0f1115);color:#eee;margin:0;padding:16px;min-height:100vh}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}.app-header{font-size:22px;font-weight:600;color:#eee;margin-bottom:12px}.app-header small{opacity:.4;font-size:12px;font-weight:400;margin-left:4px}.topbar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}.btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px 4px;border-radius:12px;border:none;background:#1f2430;color:#fff;font-size:11px;font-family:Inter,sans-serif;text-align:center;cursor:pointer;min-height:52px;transition:.2s}.btn:hover{background:#2f3545;transform:scale(1.03)}.btn .nav-icon{font-size:16px;line-height:1}.btn .nav-label{font-size:10px;line-height:1;opacity:.9}.btn-active{background:#2f3545!important;border-bottom:2px solid #2ecc71}.btn-overflow{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:#999}.btn-overflow .nav-icon{font-size:18px;letter-spacing:2px}.btn-overflow .nav-label{opacity:.6}.topbar-secondary{display:flex;gap:6px;margin-bottom:16px;align-items:center}.btn-sm{padding:6px 10px;border-radius:8px;border:none;background:#ffffff0d;color:#888;font-size:11px;font-family:Inter,sans-serif;cursor:pointer;transition:.2s}.btn-sm:hover{background:#ffffff1a}.card{background:#ffffff08;border:1px solid rgba(255,255,255,.05);padding:14px;border-radius:16px;margin-top:10px;box-shadow:0 4px 20px #0000004d}.section-title{margin-top:18px;font-weight:600;font-size:14px;opacity:.8;color:#eee}.cat-header{display:flex;align-items:center;gap:8px;margin-top:18px;margin-bottom:6px}.cat-header .icon{font-size:20px}.cat-header .name{font-weight:600;font-size:15px;color:#eee}.cat-header .count{font-size:12px;color:#888;margin-left:auto}.badge{font-size:11px;padding:4px 8px;border-radius:999px;background:#2ecc71;color:#fff;display:inline-block;margin-top:6px;font-weight:600}.badge.missing{background:#e74c3c}.small-text{color:#aaa;font-size:13px;margin:6px 0}.btn-action{display:inline-block;padding:10px 16px;border-radius:12px;border:none;background:#1f2430;color:#fff;font-size:13px;font-family:Inter,sans-serif;margin-top:8px;margin-right:6px;cursor:pointer;transition:.2s}.btn-action:hover{background:#2f3545}.btn-primary{background:#2ecc71;color:#fff;font-weight:600}.btn-primary:hover{background:#27ae60}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-outline{background:transparent;border:1px solid rgba(255,255,255,.2);color:#ccc}.btn-outline:hover{background:#ffffff0d}.input{width:100%;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff0d;color:#eee;font-size:14px;font-family:Inter,sans-serif;margin-top:8px;outline:none}.input::placeholder{color:#ffffff4d}.input.error{border-color:#e74c3c}.label{font-size:12px;font-weight:600;color:#aaa;margin-top:12px;display:block}.overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#1a1f2b;padding:20px;border-radius:12px;width:280px;position:relative}.modal-lg{width:340px}.modal h3{font-size:18px;font-weight:600;color:#eee;margin-bottom:12px}.close{position:absolute;top:12px;right:14px;background:none;border:none;color:#aaa;font-size:20px;cursor:pointer;line-height:1}.close:hover{color:#eee}.msg-error{font-size:12px;color:#e74c3c;margin-top:6px}.msg-success{font-size:12px;color:#2ecc71;margin-top:6px}.divider{border:none;border-top:1px solid rgba(255,255,255,.08);margin:14px 0}.toggle{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:#aaa;cursor:pointer}.toggle-track{width:36px;height:20px;border-radius:10px;background:#333;position:relative;display:inline-block;transition:.2s}.toggle-track.on{background:#2ecc71}.toggle-knob{width:16px;height:16px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px;transition:.2s}.toggle-track.on .toggle-knob{left:18px}.search{width:100%;padding:10px 12px 10px 34px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#ffffff0d;color:#eee;font-size:13px;font-family:Inter,sans-serif;outline:none}.search::placeholder{color:#ffffff4d}.search-wrap{position:relative;margin-bottom:12px}.search-wrap:before{content:"\1f50d";position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:13px}.fab{position:fixed;bottom:20px;right:20px;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#2ecc71,#27ae60);color:#fff;font-size:22px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #2ecc7166;border:none;cursor:pointer;z-index:50;transition:.2s}.fab:hover{transform:scale(1.1)}.skeleton{background:linear-gradient(90deg,#ffffff0a 25%,#ffffff14,#ffffff0a 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:8px;height:16px;margin-bottom:10px}.skeleton.lg{height:120px;border-radius:12px}.skeleton.md{height:40px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.stat-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:16px;text-align:center;margin-bottom:12px}.stat-card .number{font-size:28px;font-weight:700;color:#2ecc71}.stat-card .label{font-size:12px;color:#888;margin-top:2px}.chart-placeholder{width:100%;height:160px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:12px;display:flex;align-items:flex-end;justify-content:center;gap:6px;padding:12px;margin-top:12px}.chart-bar{width:24px;border-radius:4px 4px 0 0;background:#ffffff26}.chart-bar.amber{background:#f0a500}.chart-bar.green{background:#2ecc71}.chart-bar.orange{background:#e67e22}.chart-bar.yellow{background:#f1c40f}.chart-bar.brown{background:#8b5e3c}.chart-bar.purple{background:#9b59b6}.steps{list-style:none;counter-reset:step;padding:0}.steps li{counter-increment:step;padding:8px 0 8px 32px;position:relative;font-size:13px;color:#ccc;border-bottom:1px solid rgba(255,255,255,.05)}.steps li:last-child{border-bottom:none}.steps li:before{content:counter(step);position:absolute;left:0;top:8px;width:22px;height:22px;border-radius:50%;background:#ffffff14;color:#2ecc71;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center}.steps li strong{color:#2ecc71;font-weight:600}.suggestion-card{background:linear-gradient(135deg,#2ecc711a,#27ae600d);border:1px solid rgba(46,204,113,.2);border-radius:16px;padding:20px;text-align:center}.suggestion-card .drink-icon{font-size:36px;margin-bottom:4px}.suggestion-card .drink-name{font-size:20px;font-weight:700;color:#eee;margin:8px 0 4px}.suggestion-card .drink-cat{font-size:12px;color:#888}.suggestion-card .reason{font-size:11px;color:#2ecc71;margin-top:10px;padding:6px 10px;background:#2ecc711a;border-radius:8px;display:inline-block}.ingredient-tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.ingredient-tag{font-size:12px;padding:4px 10px;border-radius:8px;background:#ffffff0f;color:#ccc}.inv-item{display:flex;align-items:center;padding:10px 14px;background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:12px;margin-top:8px}.inv-item .name{flex:1;font-size:14px;color:#eee}.inv-item .qty{font-size:14px;font-weight:600;color:#2ecc71;margin-right:12px}.inv-item .remove{background:none;border:none;color:#e74c3c;font-size:16px;cursor:pointer;opacity:.6;transition:.2s}.inv-item .remove:hover{opacity:1}.inv-form{border:1px solid rgba(46,204,113,.3);border-radius:16px;padding:14px;margin-bottom:12px;background:#2ecc7108}.empty{text-align:center;padding:40px 20px;color:#666}.empty .icon{font-size:40px;margin-bottom:12px;opacity:.5}.empty .text{font-size:14px;color:#888}.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}.offline-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:#f0a500;background:#f0a5001a;padding:4px 10px;border-radius:8px;margin-top:8px}.password-toggle{position:absolute;right:10px;top:50%;transform:translateY(-50%);cursor:pointer;font-size:16px;-webkit-user-select:none;user-select:none}.rate-limit-msg{font-size:12px;color:#f0a500;background:#f0a5001a;padding:6px 10px;border-radius:8px;margin-top:8px;text-align:center}.recipe-category{font-size:12px;color:#888;margin-bottom:8px}.recipe-steps-label{font-size:11px;font-weight:700;letter-spacing:1px;color:#888;margin-bottom:8px}.confirm-row{display:flex;align-items:center;gap:8px;font-size:13px;color:#eee}.confirm-row .btn-confirm-yes{padding:4px 12px;border-radius:8px;border:none;background:#e74c3c;color:#fff;font-size:12px;cursor:pointer}.confirm-row .btn-confirm-no{padding:4px 12px;border-radius:8px;border:none;background:#ffffff1a;color:#ccc;font-size:12px;cursor:pointer}.drink-title-row{display:flex;align-items:center;gap:8px}.drink-title-row b{flex:1}.chart-legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;justify-content:center}.chart-legend-item{display:flex;align-items:center;gap:4px;font-size:11px;color:#aaa}.chart-legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.top-drink-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:16px;text-align:center;margin-bottom:12px}.top-drink-card .fire-icon{font-size:28px}.top-drink-card .drink-name{font-size:16px;font-weight:700;color:#eee;margin:4px 0}.top-drink-card .drink-count{font-size:13px;color:#2ecc71}.chart-container{margin-top:12px;border-radius:12px;overflow:hidden}.chart-container canvas{width:100%!important}.view{min-height:100px}#output{max-height:100px;overflow:hidden}#output>div{padding:4px 0;font-size:13px;transition:opacity .3s}.more-actions{display:none;margin-bottom:12px;padding:10px;background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:12px}.more-actions.visible{display:block}.field-error{font-size:11px;color:#e74c3c;margin-top:2px}@media (max-width: 400px){body{padding:12px 8px}.topbar-grid{gap:4px}.btn{min-height:44px;padding:8px 2px}.modal{width:260px;padding:16px}.modal-lg{width:300px}}
