:root{--bg: #1A1D24;--surface: #252830;--surface-up: #2E323B;--border: #3A3F4A;--text: #F0EDE8;--text-muted: #A8A39B;--accent: #B87333;--accent-soft: #3A2A1C;--accent-secondary: #5C8A5A;--success: #5C8A5A;--warning: #D9A04C;--danger: #C25450;--star: #E8A93C;--shadow: 0 2px 8px rgba(0, 0, 0, .3);--shadow-card: 0 4px 12px rgba(0, 0, 0, .4);--cat-wine: #8B2942;--cat-whisky: #B87333;--cat-beer: #D9A04C;--cat-other: #7A8C7E;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--sp-8: 32px;--sp-12: 48px;--r-sm: 8px;--r-md: 12px;--r-lg: 14px;--font-system: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "SF Pro Text", system-ui, sans-serif;--tap-min: 48px;--tabbar-h: 56px}@media (prefers-color-scheme: light){:root{--bg: #F5F0E8;--surface: #FFFFFF;--surface-up: #FAF6EE;--border: #E2DACB;--text: #2A2520;--text-muted: #7A6F60;--accent: #A0631E;--accent-soft: #F3E4D0;--accent-secondary: #4A7349;--shadow: 0 2px 8px rgba(42, 37, 32, .08);--shadow-card: 0 4px 12px rgba(42, 37, 32, .06);--cat-wine: #7A2438;--cat-whisky: #A0631E;--cat-beer: #C68C36;--cat-other: #6A7C6E}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-system);font-size:17px;line-height:1.55;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;overscroll-behavior:none}#app{min-height:100vh;padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));padding-top:env(safe-area-inset-top,0px)}h1{font-size:26px;font-weight:600;line-height:1.25;margin:0 0 var(--sp-2)}h2{font-size:20px;font-weight:600;line-height:1.3;margin:var(--sp-6) 0 var(--sp-3)}p,li{font-size:17px;line-height:1.55;margin:0 0 var(--sp-2)}small,.caption{font-size:14px;color:var(--text-muted)}button{font-family:inherit;font-size:17px;font-weight:600;min-height:var(--tap-min);min-width:var(--tap-min);border:none;background:transparent;color:var(--text);cursor:pointer;padding:0 var(--sp-4);border-radius:var(--r-md)}button:active{transform:scale(.98)}button.primary{background:var(--accent);color:#fff}button.ghost{background:var(--surface);color:var(--text);border:1px solid var(--border)}input[type=text],input[type=search],input[type=number],input[type=date],textarea,select{font-family:inherit;font-size:17px;line-height:1.55;width:100%;padding:var(--sp-3) var(--sp-4);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--r-md);min-height:var(--tap-min)}textarea{min-height:96px;resize:vertical}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-4);box-shadow:var(--shadow-card);margin-bottom:var(--sp-3)}.tabbar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(2,1fr);z-index:100}.tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;font-weight:500;color:var(--text-muted);border-radius:0}.tabbar button[aria-current=page]{color:var(--accent)}.tabbar button svg{width:24px;height:24px}.fab{position:fixed;right:var(--sp-4);bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + var(--sp-4));width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;box-shadow:0 6px 16px #b8733373;display:flex;align-items:center;justify-content:center;z-index:99}.fab svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.8}.view{padding:var(--sp-6) var(--sp-4)}.chip-row{display:flex;gap:var(--sp-2);flex-wrap:nowrap;overflow-x:auto}.chip{min-height:40px;padding:0 var(--sp-4);border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:15px;font-weight:500;display:inline-flex;align-items:center;white-space:nowrap;flex-shrink:0}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.chip.cat-wine[aria-pressed=true]{background:var(--cat-wine);border-color:var(--cat-wine);color:#fff}.chip.cat-whisky[aria-pressed=true]{background:var(--cat-whisky);border-color:var(--cat-whisky);color:#fff}.chip.cat-beer[aria-pressed=true]{background:var(--cat-beer);border-color:var(--cat-beer);color:#2a2520}.chip.cat-other[aria-pressed=true]{background:var(--cat-other);border-color:var(--cat-other);color:#fff}.stars{display:flex;gap:var(--sp-2)}.stars button{width:var(--tap-min);height:var(--tap-min);padding:0;display:flex;align-items:center;justify-content:center}.stars svg{width:32px;height:32px}.stars .on{fill:var(--star);stroke:var(--star)}.stars .off{fill:none;stroke:var(--border);stroke-width:1.5}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + 80px);background:var(--text);color:var(--bg);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:15px;font-weight:500;box-shadow:var(--shadow);z-index:200;opacity:0;transition:opacity .2s;pointer-events:none;max-width:92vw;text-align:center}.toast.show{opacity:1}.banner{background:var(--accent-soft);color:var(--text);padding:var(--sp-2) var(--sp-4);font-size:14px;text-align:center}.banner.warning{background:#d9a04c2e;color:var(--warning)}.modal-sheet{position:fixed;inset:0;background:var(--bg);z-index:300;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);animation:slide-up .25s ease-out}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:5}.modal-header .title{font-size:17px;font-weight:600}.modal-body{flex:1;overflow-y:auto;padding:var(--sp-4)}.photo-preview{width:100%;border-radius:var(--r-lg);background:var(--surface-up);display:flex;flex-direction:column;padding:var(--sp-3);margin-bottom:var(--sp-4)}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.photo-grid .tile{aspect-ratio:4/5;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;position:relative;display:flex;flex-direction:column}.photo-grid .tile img{width:100%;height:60%;object-fit:cover;display:block}.photo-grid .tile .body{padding:var(--sp-2) var(--sp-3);flex:1}.photo-grid .tile .body .name{font-weight:600;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-grid .tile .body .meta{color:var(--text-muted);font-size:12px;margin-top:2px}.segmented{display:flex;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:2px;position:sticky;top:0;z-index:4}.segmented button{flex:1;min-height:40px;padding:0 var(--sp-3);font-size:15px;font-weight:500;color:var(--text-muted);border-radius:var(--r-sm)}.segmented button[aria-pressed=true]{background:var(--accent);color:#fff}.segmented[data-cat=wine] button[aria-pressed=true]{background:var(--cat-wine)}.segmented[data-cat=whisky] button[aria-pressed=true]{background:var(--cat-whisky)}.segmented[data-cat=beer] button[aria-pressed=true]{background:var(--cat-beer);color:#2a2520}.segmented[data-cat=other] button[aria-pressed=true]{background:var(--cat-other)}.skeleton{background:var(--border);border-radius:var(--r-md);height:64px;margin-bottom:var(--sp-3);animation:pulse 1.4s infinite}@keyframes pulse{0%,to{opacity:.6}50%{opacity:.3}}.empty{text-align:center;padding:var(--sp-12) var(--sp-4);color:var(--text-muted)}.empty p{margin-bottom:var(--sp-4)}.cellar-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.drink-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;position:relative;cursor:pointer;display:flex;flex-direction:column;box-shadow:var(--shadow-card)}.drink-card[data-cat=wine]{border-left:4px solid var(--cat-wine)}.drink-card[data-cat=whisky]{border-left:4px solid var(--cat-whisky)}.drink-card[data-cat=beer]{border-left:4px solid var(--cat-beer)}.drink-card[data-cat=other]{border-left:4px solid var(--cat-other)}.drink-card .card-photo{width:100%;aspect-ratio:4/5;background:var(--surface-up);overflow:hidden;position:relative}.drink-card .card-photo img{width:100%;height:100%;object-fit:cover;display:block}.drink-card .card-photo .no-photo{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:32px;opacity:.5}.drink-card .card-photo .mini-icon{position:absolute;top:6px;right:6px;width:26px;height:26px;background:#0000008c;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.drink-card .card-photo .mini-icon svg{width:16px;height:16px}.drink-card .card-body{padding:var(--sp-3);display:flex;flex-direction:column;gap:4px}.drink-card .card-body .name{font-weight:600;font-size:15px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drink-card .card-body .sub{color:var(--text-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drink-card .card-body .row{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.drink-card .card-body .qty{font-weight:700;color:var(--accent);font-size:14px}.drink-card .card-body .qty.zero{color:var(--text-muted)}.drink-card .card-body .rating{color:var(--star);font-size:13px}.bottle-badge{display:inline-block;padding:2px 8px;font-size:11px;font-weight:600;border-radius:4px;background:var(--accent-soft);color:var(--accent);margin-top:4px}.bottle-badge.opened{background:#b873332e;color:var(--accent)}.bottle-badge.sealed{background:#5c8a5a2e;color:var(--success)}.bottle-badge.finished{background:#a8a39b26;color:var(--text-muted)}.summary-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3);margin-top:var(--sp-3)}.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:4px}.summary-card .label{display:flex;align-items:center;gap:var(--sp-2);color:var(--text-muted);font-size:13px}.summary-card .label .dot{width:8px;height:8px;border-radius:50%}.summary-card .count{font-size:28px;font-weight:700;color:var(--text);line-height:1.1}.summary-card .count .unit{font-size:14px;font-weight:500;color:var(--text-muted);margin-left:4px}.detail-sheet{background:var(--bg)}.detail-sheet.closing{animation:slide-down .2s ease-in forwards}@keyframes slide-down{to{transform:translateY(100%);opacity:0}}.detail-header{background:var(--surface)}.detail-header .icon-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--border);background:var(--surface)}.detail-header .icon-btn svg{width:20px;height:20px}.detail-body{padding:var(--sp-4)}.detail-photo{width:100%;aspect-ratio:1.5/1;background:var(--surface-up);border-radius:var(--r-lg);overflow:hidden;margin-bottom:var(--sp-4)}.detail-photo img{width:100%;height:100%;object-fit:cover;display:block}.detail-photo .no-photo{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);opacity:.5}.detail-photo .no-photo svg{width:64px;height:64px}.detail-title{font-size:26px;font-weight:600;line-height:1.25;margin:0 0 4px}.detail-meta{margin:0 0 var(--sp-4)}.detail-rating-row{display:flex;flex-wrap:wrap;gap:var(--sp-4);padding:var(--sp-3) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:var(--sp-4)}.detail-rating-row>span{display:flex;align-items:center;gap:var(--sp-2);font-size:15px}.detail-rating-row .label{color:var(--text-muted);font-size:13px}.detail-rating-row .value{font-weight:600}.detail-rating-row .stars{color:var(--star);letter-spacing:1px}.detail-rating-row .vivino .value{color:var(--accent)}.detail-section{margin-bottom:var(--sp-6)}.detail-section h2{font-size:18px;font-weight:600;margin:0 0 var(--sp-2);color:var(--text)}.detail-section .note-text{font-size:16px;line-height:1.6;color:var(--text);margin:0;white-space:pre-wrap}.kv-box{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.kv-row{display:flex;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);font-size:15px}.kv-row:last-child{border-bottom:none}.kv-row .kv-label{color:var(--text-muted)}.kv-row .kv-value{color:var(--text);font-weight:500;text-align:right}.pair-list{margin:0;padding:0 0 0 20px;font-size:16px;line-height:1.6}.pair-list li{margin-bottom:4px}.stock-big{font-size:32px;font-weight:700;color:var(--accent);line-height:1.1;margin-bottom:var(--sp-2)}.stock-big.zero{color:var(--text-muted)}.stock-big .stock-status{color:var(--accent)}.stock-big .stock-pct{font-size:24px;font-weight:600;color:var(--text)}.stock-last{margin:0}.recent-item{display:flex;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);align-items:center}.recent-item:last-child{border-bottom:none}.recent-item .name{font-weight:600}.recent-item .meta{color:var(--text-muted);font-size:13px;margin-top:2px}.recent-item .date{color:var(--text-muted);font-size:13px;white-space:nowrap}
