:root{color-scheme:light dark;--bg: #f7f4f1;--surface: #ffffff;--surface2: #efe9e6;--text: #2a2224;--text-sub: #6f6267;--border: #e0d8d6;--primary: #7a2e3b;--on-primary: #ffffff;--danger: #b3261e;--on-danger: #ffffff;--danger-bg: #fdeceb;--ok-bg: #e6f0e6;--ok-text: #24613a;--star: #b8860b;--star-off: #d6ccc9;--heart: #c0394f;--focus: #9a4a58;--shadow: 0 1px 3px rgba(42, 34, 36, .1)}@media(prefers-color-scheme:dark){:root{--bg: #171314;--surface: #221c1e;--surface2: #2c2527;--text: #efe8e6;--text-sub: #b3a6a8;--border: #40363a;--primary: #c9788a;--on-primary: #1e0f13;--danger: #f2827a;--on-danger: #2b0f0d;--danger-bg: #3a2321;--ok-bg: #1f3326;--ok-text: #8ecb9f;--star: #e0b44c;--star-off: #4a3f43;--heart: #e8798c;--focus: #e3a3b0;--shadow: 0 1px 3px rgba(0, 0, 0, .4)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Hiragino Kaku Gothic ProN,Hiragino Sans,BIZ UDPGothic,Meiryo,system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-tap-highlight-color:transparent}#root{min-height:100dvh}button,a,label{touch-action:manipulation}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.app{max-width:640px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:20;background:var(--bg);padding:calc(env(safe-area-inset-top,0px) + 6px) 8px 6px 16px;display:flex;align-items:center;gap:4px;min-height:56px}.app-header h1{font-size:18px;margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-btn,.header-text-btn{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;background:none;border:none;border-radius:10px;color:var(--text);font:inherit;text-decoration:none;cursor:pointer}.app-header>.header-btn:first-child{margin-left:-12px}.header-text-btn{padding:0 10px;color:var(--primary);font-weight:700}main.app-main{flex:1;padding:4px 16px calc(env(safe-area-inset-bottom,0px) + 112px)}main.app-main.app-main-plain{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 24px)}.bottom-bar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--bg);border-top:1px solid var(--border);padding:10px 16px calc(env(safe-area-inset-bottom,0px) + 10px)}.bottom-bar-inner{max-width:608px;margin:0 auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:8px 16px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-weight:700;cursor:pointer;text-decoration:none}.btn:disabled,.btn.is-disabled{opacity:.5;cursor:default;pointer-events:none}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--on-danger)}.btn-block{display:flex;width:100%}.btn-large{min-height:54px;font-size:17px;border-radius:14px}.btn-row{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.btn-row .btn{flex:1}.btn-col{display:flex;flex-direction:column;gap:8px}.link-btn{background:none;border:none;padding:0 4px;min-height:44px;font:inherit;font-size:14px;color:var(--text-sub);text-decoration:underline;cursor:pointer}.link-danger{color:var(--danger)}.btn:focus-visible,.link-btn:focus-visible,.header-btn:focus-visible,.header-text-btn:focus-visible,.heart-btn:focus-visible,.toggle-btn:focus-visible,.chips button:focus-visible,.star-input button:focus-visible,.field input:focus-visible,.field textarea:focus-visible,.search-input:focus-visible,.photo-picker:focus-within,a:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.search-input{width:100%;font:inherit;font-size:16px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 12px;min-height:46px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips button{display:inline-flex;align-items:center;gap:4px;font:inherit;font-size:14px;padding:6px 14px;min-height:44px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-sub);white-space:nowrap;cursor:pointer}.chips button[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:var(--on-primary);font-weight:700}.chips-scroll{flex-wrap:nowrap;overflow-x:auto;margin:10px -16px 0;padding:0 16px 6px;scrollbar-width:none}.chips-scroll::-webkit-scrollbar{display:none}.list-count{margin:6px 0 0;font-size:12.5px;color:var(--text-sub)}.wine-list,.tasting-list{list-style:none;margin:0;padding:0}.wine-row{display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--border)}.wine-link{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:10px 0;color:inherit;text-decoration:none}.thumb{flex:none;width:60px;height:76px;border-radius:8px;overflow:hidden;background:var(--surface2);color:var(--text-sub);display:flex;align-items:center;justify-content:center}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.wine-body{min-width:0;flex:1}.wine-name{font-weight:700;font-size:15.5px;line-height:1.4;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.wine-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px 8px;margin-top:2px;font-size:12.5px;color:var(--text-sub)}.wine-sub{font-size:12.5px;color:var(--text-sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stars{display:inline-flex;align-items:center;gap:1px}.stars>span{display:inline-flex}.star-on{color:var(--star)}.star-off{color:var(--star-off)}.heart-btn{flex:none;width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;border-radius:50%;color:var(--text-sub);cursor:pointer}.heart-btn.is-on{color:var(--heart)}.empty-state{text-align:center;color:var(--text-sub);padding:32px 12px;font-size:14.5px}.empty-state p{margin:0 0 12px}.banner{border-radius:12px;padding:10px 12px;margin:0 0 12px;font-size:13.5px}.banner-info{background:var(--surface2);border:1px solid var(--border)}.banner-ok{background:var(--ok-bg);color:var(--ok-text)}.banner-link{display:block;color:var(--text);text-decoration:none}.banner-link span{color:var(--primary);font-weight:700;white-space:nowrap}.field{margin-bottom:18px}.field-label{display:block;font-size:13px;font-weight:700;color:var(--text-sub);margin-bottom:6px}.field input[type=text],.field input[type=date],.field textarea{width:100%;font:inherit;font-size:16px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;min-height:46px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.field input[type=date]{display:block;text-align:left}.field input[type=date]::-webkit-date-and-time-value{text-align:left}.field textarea{resize:vertical;min-height:84px;display:block}.field-hint{color:var(--text-sub);font-size:12px;margin-top:4px}.form-error{color:var(--danger);font-size:13.5px;font-weight:700;margin:0 0 8px}.form-target{margin:4px 0 16px;font-weight:700;font-size:16px;overflow-wrap:anywhere}.photo-picker{display:block;position:relative;border-radius:14px;overflow:hidden;background:var(--surface);border:1.5px dashed var(--border);cursor:pointer}.photo-picker.has-photo{border:none;background:var(--surface2)}.photo-picker img{display:block;width:100%;max-height:44vh;object-fit:contain}.photo-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:150px;color:var(--text-sub);font-weight:700}.photo-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.star-input{display:flex;gap:2px;margin-left:-8px}.star-input button{width:58px;height:56px;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;border-radius:12px;padding:0;cursor:pointer}.toggle-btn{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:8px 18px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-sub);font:inherit;font-weight:700;cursor:pointer}.toggle-btn.is-on{border-color:var(--heart);color:var(--heart)}details.collapse{border:1px solid var(--border);border-radius:12px;padding:0 12px;margin-bottom:18px;background:var(--surface)}details.collapse summary{padding:13px 0;font-weight:700;font-size:14px;color:var(--text-sub);cursor:pointer}details.collapse[open] summary{border-bottom:1px solid var(--border);margin-bottom:14px}.danger-zone{margin-top:28px;text-align:center}.detail-photo{border-radius:14px;overflow:hidden;background:var(--surface2);min-height:180px;margin-bottom:12px}.detail-photo img{display:block;width:100%;max-height:62vh;object-fit:contain}.detail-head{display:flex;align-items:flex-start;gap:4px;margin-bottom:8px}.detail-head h2{flex:1;min-width:0;margin:8px 0 0;font-size:19px;line-height:1.45;overflow-wrap:anywhere}.kv{margin:0 0 8px;font-size:14.5px}.kv-row{display:flex;gap:12px;padding:6px 0;border-bottom:1px solid var(--border)}.kv dt{flex:none;width:6.5em;color:var(--text-sub);font-size:13px}.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}.section-title{margin:22px 0 4px;font-size:14px;color:var(--text-sub)}.tasting-item{display:block;padding:12px 0;border-bottom:1px solid var(--border);color:inherit;text-decoration:none}.tasting-top{display:flex;align-items:center;gap:10px}.tasting-date{flex:1;font-size:13.5px;color:var(--text-sub)}.tasting-edit{font-size:12.5px;color:var(--text-sub);white-space:nowrap}.tasting-place{margin-top:4px;font-size:13px;color:var(--text-sub);overflow-wrap:anywhere}.tasting-note{margin-top:4px;font-size:14.5px;white-space:pre-wrap;overflow-wrap:anywhere}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow)}.card h2{font-size:16px;margin:0 0 6px}.card .banner,.card .form-error{margin:10px 0 0}.section-note{font-size:13px;color:var(--text-sub);margin:0 0 10px}.kv-line{font-size:14px;margin:0 0 10px}.backup-ready .btn-col{margin-top:10px}.note-list{margin:0;padding-left:1.2em;font-size:13px;color:var(--text-sub)}.note-list li+li{margin-top:4px}.text-sub{color:var(--text-sub);font-size:13px}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}.dialog{background:var(--surface);color:var(--text);border-radius:14px;padding:16px;width:100%;max-width:400px;box-shadow:var(--shadow)}.dialog h3{margin:0 0 8px;font-size:16px}.dialog p{margin:0 0 14px;font-size:14px;white-space:pre-wrap}.dialog .btn-row{margin:0}
