:root{--bg: #FAF7F2;--surface: #FFFFFF;--border: #ECE6DC;--text: #2B2520;--text-muted: #7A6F65;--accent: #D97757;--accent-soft: #FBE9DF;--success: #5C8A5A;--warning: #D9A04C;--star: #E8A93C;--shadow: 0 2px 8px rgba(43, 37, 32, .08);--shadow-card: 0 4px 12px rgba(43, 37, 32, .06);--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: 16px;--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: dark){:root{--bg: #1A1612;--surface: #26201B;--border: #3A322C;--text: #F4EDE4;--text-muted: #A89C90;--accent: #E89072;--accent-soft: #3D2A22;--success: #7BAE78;--warning: #E8B564;--star: #F4BC54;--shadow: 0 2px 8px rgba(0, 0, 0, .3);--shadow-card: 0 4px 12px rgba(0, 0, 0, .4)}}*{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],textarea{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{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(4,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 #d9775766;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:wrap}.chip{min-height:var(--tap-min);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}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.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}.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)}.modal-header .title{font-size:17px;font-weight:600}.modal-body{flex:1;overflow-y:auto;padding:var(--sp-4)}.photo-preview{width:100%;aspect-ratio:4/3;border-radius:var(--r-lg);background:var(--accent-soft);display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:var(--sp-4)}.photo-preview img{width:100%;height:100%;object-fit:cover}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2)}.photo-grid .tile{aspect-ratio:1/1;background:var(--accent-soft);border-radius:var(--r-md);overflow:hidden}.photo-grid .tile img{width:100%;height:100%;object-fit:cover}.segmented{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:2px}.segmented button{min-height:36px;padding:0 var(--sp-3);font-size:14px;font-weight:500;color:var(--text-muted);border-radius:var(--r-sm)}.segmented button[aria-pressed=true]{background:var(--accent);color:#fff}.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)}.card-tappable{width:100%;text-align:left;cursor:pointer;padding:var(--sp-4)}.card-tappable:active{transform:scale(.99)}.option-backdrop{position:fixed;inset:0;background:#00000073;z-index:400;display:flex;align-items:flex-end;justify-content:center;animation:fade-in .18s ease-out}.option-backdrop.closing{animation:fade-out .18s ease-in forwards}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.option-sheet{background:var(--bg);width:100%;max-width:560px;border-top-left-radius:18px;border-top-right-radius:18px;padding:var(--sp-3) var(--sp-3) calc(env(safe-area-inset-bottom,0px) + var(--sp-3));box-shadow:0 -6px 20px #0000004d;display:flex;flex-direction:column;gap:6px;animation:sheet-up .22s ease-out}.option-sheet.closing{animation:sheet-down .18s ease-in forwards}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheet-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}.option-sheet:before{content:"";display:block;width:36px;height:4px;background:var(--border);border-radius:999px;margin:4px auto 8px}.option-title{padding:4px var(--sp-4) var(--sp-3);border-bottom:1px solid var(--border);margin-bottom:6px}.option-title strong{display:block;font-size:16px;font-weight:600}.option-subtitle{font-size:13px;color:var(--text-muted);margin-top:2px}.option-item{width:100%;min-height:52px;padding:0 var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);font-size:16px;font-weight:500;color:var(--text);display:flex;align-items:center;justify-content:flex-start;gap:12px}.option-item:active{background:var(--accent-soft)}.option-icon{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;flex-shrink:0;color:var(--text)}.option-label{flex:1;text-align:left}.option-item-danger,.option-item-danger .option-icon{color:#d43f3f}.option-item-cancel{margin-top:8px;background:transparent;border:1px solid var(--border);color:var(--text-muted);justify-content:center}.confirm-sheet .option-title strong{color:#d43f3f}.confirm-note{padding:0 var(--sp-4) var(--sp-3);font-size:14px;color:var(--text-muted);line-height:1.5}.confirm-danger-btn{background:#d43f3f;color:#fff;border:1px solid #D43F3F;justify-content:center;font-weight:600}.confirm-danger-btn:active{background:#b83333;border-color:#b83333}.confirm-danger-btn[disabled]{opacity:.6}.recommend-card{position:relative}.recommend-clickable{cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease;-webkit-tap-highlight-color:transparent;padding-right:32px}.recommend-clickable:hover{transform:translateY(-1px);box-shadow:0 6px 14px #2b25201a}.recommend-clickable:active{transform:scale(.97);background:var(--accent-soft)}.recommend-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.recommend-card .rec-chev{position:absolute;top:var(--sp-3);right:var(--sp-3);width:18px;height:18px;color:var(--text-muted);pointer-events:none;opacity:.85}.recommend-card .rec-chev svg{width:18px;height:18px}.recommend-card .recommend-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.recipes-group-head{font-size:15px;color:var(--text-muted);font-weight:600}.daily-card:active{transform:scale(.98);background:var(--accent-soft)}.detail-section{padding:16px}.detail-section h2{font-size:18px}.detail-section .subsec-title{font-size:14px;color:var(--text-muted);font-weight:600;margin:0 0 4px}.detail-section .subsec{margin-top:8px}.detail-list{margin:0;padding-left:20px}.detail-list li{font-size:16px;line-height:1.55;margin-bottom:4px}.detail-pre{white-space:pre-wrap;font-family:inherit;font-size:16px;line-height:1.55;margin:0;color:var(--text)}.detail-table{width:100%;border-collapse:collapse;font-size:15px}.detail-table th,.detail-table td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--border);vertical-align:top}.detail-table th{font-weight:600;color:var(--text-muted);font-size:13px;text-transform:none;background:var(--accent-soft)}.detail-table tr:last-child td{border-bottom:none}.cook-steps{margin:0;padding-left:28px;counter-reset:step}.cook-steps li{font-size:16px;line-height:1.6;margin-bottom:12px;padding-left:4px}.cook-steps li::marker{font-weight:700;color:var(--accent)}.pairing-section{border-left:4px solid var(--success);padding-left:16px}.pairing-wine-name{font-size:20px;font-weight:700;color:var(--accent);margin:0 0 4px}.pairing-headline{margin:0 0 8px}.pairing-notes{margin:0;padding-left:20px}.pairing-notes li{font-size:15px;line-height:1.5;color:var(--text-muted);margin-bottom:4px}.timeline-section .detail-table td:first-child{font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums;white-space:nowrap;width:70px}
