:root{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text",system-ui,sans-serif;color:#23191d;background:#f7f3f4;--wine:#6f1d3f;--line:#e5dadd;--muted:#74676c}*{box-sizing:border-box}body{margin:0;min-height:100vh;padding-bottom:env(safe-area-inset-bottom)}button,input,textarea{font:inherit}.topbar{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:calc(12px + env(safe-area-inset-top)) 16px 12px;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.topbar strong{display:block;font-size:21px}.topbar small{display:block;color:var(--muted);margin-top:2px}.topbar-actions{display:flex;align-items:center;gap:6px}.pending{font-size:12px;background:#fff0bf;color:#765a00;border-radius:999px;padding:5px 8px}main{max-width:760px;margin:auto;padding:16px}.hidden{display:none!important}.card{background:white;border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 8px 30px rgba(63,22,38,.06)}h1,h2{margin:0 0 16px}label{display:block;font-size:13px;font-weight:600;margin:13px 0 5px}input,textarea{width:100%;border:1px solid #cabdc1;border-radius:11px;padding:12px;background:white;font-size:16px}textarea{resize:vertical}button{border:1px solid #cfc3c7;border-radius:11px;padding:11px 14px;background:white;font-weight:600}.primary{background:var(--wine);color:white;border-color:var(--wine)}.danger{color:#a3132a}.icon-button{border:0;background:transparent;font-size:22px;padding:7px}.toolbar{display:grid;grid-template-columns:1fr auto;gap:9px;margin-bottom:12px}.collection-summary{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:13px;margin-bottom:12px}.segmented{display:flex;background:#e9e0e3;border-radius:10px;padding:2px}.segmented button{border:0;background:transparent;padding:6px 10px;font-size:13px}.segmented .selected{background:white;box-shadow:0 1px 5px rgba(0,0,0,.1)}.wine-list{display:grid;gap:10px}.wine-card{display:block;width:100%;text-align:left;background:white;border:1px solid var(--line);border-radius:15px;padding:14px;box-shadow:0 3px 14px rgba(63,22,38,.04)}.wine-card:active{transform:scale(.992)}.wine-card-heading{display:flex;justify-content:space-between;gap:12px;font-size:18px}.wine-card .meta{display:block;color:var(--muted);margin-top:5px}.star{color:#b17400}.tag-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.tag{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:12px;background:color-mix(in srgb,var(--tag-color) 18%,white);border:1px solid color-mix(in srgb,var(--tag-color) 45%,white)}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.check{display:flex;align-items:center;gap:8px}.check input,.tag-check input{width:auto}.hint,.empty{color:var(--muted)}.empty{text-align:center;padding:50px}.banner{padding:10px 12px;border-radius:10px;background:#fff2c7;margin-bottom:12px}fieldset{border:0;padding:0;margin:16px 0}legend{font-size:13px;font-weight:600}.tag-selector{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.tag-check{margin:0}.tag-check input{position:absolute;opacity:0}.tag-check input:not(:checked)+.tag{opacity:.45}.form-actions{display:grid;grid-template-columns:auto 1fr;gap:9px;margin-top:14px}.form-actions .primary{width:100%}dialog{width:min(94vw,560px);max-height:88vh;overflow:auto;border:0;border-radius:20px;padding:20px;box-shadow:0 20px 80px rgba(20,0,8,.25)}dialog::backdrop{background:rgba(25,8,14,.38);backdrop-filter:blur(3px)}.dialog-title{display:flex;justify-content:space-between;align-items:center}.full{width:100%;margin-top:16px}#settings-dialog button{width:100%;margin-top:9px}.details-heading h2{margin-bottom:5px}.favorite-label{color:#9b6500;font-size:13px}dl{margin:16px 0;display:grid;grid-template-columns:1fr 1fr;gap:10px}dl div{background:#f8f4f5;border-radius:11px;padding:10px}dt{font-size:11px;color:var(--muted);text-transform:uppercase}dd{margin:3px 0 0;font-weight:600}.details-description{white-space:pre-wrap;line-height:1.45}#toast{position:fixed;z-index:20;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:#22191c;color:white;border-radius:12px;padding:10px 14px;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}@media(max-width:480px){.two{grid-template-columns:1fr}.toolbar{grid-template-columns:1fr}.toolbar button{width:100%}dl{grid-template-columns:1fr 1fr}}

.diagnostics-panel { margin: 16px 0; text-align: left; }
.diagnostics-panel summary { cursor: pointer; font-weight: 700; }
.diagnostics { display: grid; grid-template-columns: minmax(120px, 1fr) 2fr; gap: 8px 12px; margin: 12px 0 0; font-size: 13px; }
.diagnostics dt { color: #6f6268; }
.diagnostics dd { margin: 0; overflow-wrap: anywhere; }
.photo-editor{margin-bottom:16px}.photo-previews{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-bottom:10px}.photo-previews:empty{display:none}.photo-previews img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:#eee7e9;border-radius:14px}.photo-actions{display:flex;gap:8px}.photo-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cfc3c7;border-radius:11px;padding:11px 14px;background:white;font-weight:600;margin:0;cursor:pointer}.photo-button input{position:absolute;opacity:0;pointer-events:none}.wine-card.has-photo{display:grid;grid-template-columns:82px 1fr;gap:12px;padding:0;overflow:hidden}.wine-card-photo{width:82px;height:100%;min-height:96px;object-fit:cover;background:#eee7e9}.wine-card-body{padding:13px 13px 13px 0;min-width:0}.details-photo{display:block;width:100%;max-height:440px;object-fit:contain;border-radius:14px;background:#eee7e9;margin-bottom:16px}

.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;background:#eee7e9}.status-pill{display:inline-block;font-size:12px;padding:4px 8px;border-radius:999px;background:#fff0bf;color:#765a00}

.form-error{margin-top:14px;padding:12px 14px;border:1px solid #d98a96;border-radius:11px;background:#fff0f2;color:#82182b;font-size:14px;line-height:1.35;white-space:pre-wrap}.form-actions button:disabled{opacity:.6;cursor:wait}
.ai-panel{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:14px;background:#fbf8f9}.ai-button{width:100%;background:#fff;color:var(--wine);border-color:#b88aa0}.ai-button:disabled{opacity:.5}.ai-panel .hint{display:block;margin-top:8px;line-height:1.35}.ai-status{margin-top:10px;padding:10px 12px;border-radius:10px;background:#f1ebed;color:#4d3d43;font-size:13px;line-height:1.35}.ai-status.success{background:#edf8f0;color:#236235}.ai-status.error{background:#fff0f2;color:#82182b}.ocr-details{margin-top:10px}.ocr-details summary{cursor:pointer;font-size:13px;font-weight:700}.ocr-details pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;background:white;border:1px solid var(--line);border-radius:10px;padding:10px;max-height:180px;overflow:auto}

.ocr-language-label { display: grid; gap: .35rem; font-size: .86rem; color: var(--muted, #666); }
.ocr-language-label select { width: 100%; }
.catalog-matches{margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:11px;background:white}.catalog-matches>strong{display:block;font-size:13px;margin-bottom:7px}.catalog-match{display:block;width:100%;text-align:left;margin-top:6px;padding:9px 10px;background:#fbf8f9}.catalog-match.selected{border-color:var(--wine);box-shadow:0 0 0 1px var(--wine)}.catalog-match-heading{display:block;font-size:14px}.catalog-match small{display:block;margin-top:3px;color:var(--muted);font-weight:400}
.learning-settings { margin: 1rem 0; padding: .9rem; border: 1px solid var(--border, #ddd); border-radius: 12px; }
.learning-settings h3 { margin: 0 0 .45rem; }
.learning-actions { display: flex; flex-wrap: wrap; gap: .5rem; }

.decision-dialog{width:min(92vw,460px)}.decision-dialog h2{margin-bottom:10px}.duplicate-wine-name{white-space:pre-line;padding:12px 14px;border-radius:12px;background:#f4eef0;font-weight:700;line-height:1.35}.decision-actions{display:grid;gap:9px;margin-top:18px}.decision-actions button{width:100%}

.production-status,.developer-settings{margin:1rem 0;padding:.9rem;border:1px solid var(--line);border-radius:12px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-heading h3,.developer-settings h3{margin:0}.status-badge{display:inline-flex;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700;background:#eee}.status-badge.ok{background:#e7f6eb;color:#216235}.status-badge.warning{background:#fff2c7;color:#765a00}.check-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;background:#999}.check-dot.ok{background:#2f8b4b}.check-dot.warning{background:#c28b12}.check-dot.error{background:#b52238}.error-log-panel{margin-top:10px}.error-log-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:240px;overflow:auto;padding:10px;border-radius:10px;background:#201b1d;color:#f7eef1;font:11px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace}.developer-settings button{margin-top:8px}

.queue-panel{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:#fff}.queue-panel strong,.queue-panel small{display:block}.queue-panel small{margin-top:3px;color:var(--muted)}.queue-panel button{white-space:nowrap}.queue-panel button:disabled{opacity:.45}@media(max-width:480px){.queue-panel{align-items:stretch;flex-direction:column}.queue-panel button{width:100%}}
.queue-panel-actions{display:flex;gap:8px}.manager-dialog{width:min(95vw,680px)}.manager-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.manager-stat{padding:10px;border:1px solid var(--line);border-radius:12px;text-align:center;background:#fbf8f9}.manager-stat strong{display:block;font-size:20px}.manager-stat small{color:var(--muted)}.manager-list{display:grid;gap:9px;margin-top:12px}.manager-item{display:grid;grid-template-columns:48px 1fr auto;gap:10px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:14px;background:#fff}.manager-thumb{width:48px;height:48px;border-radius:10px;object-fit:cover;background:#eee7e9}.manager-placeholder{display:grid;place-items:center;font-size:22px}.manager-body{min-width:0}.manager-body strong,.manager-body small{display:block}.manager-body small{color:var(--muted);margin-top:3px;overflow-wrap:anywhere}.status-chip{display:inline-flex;margin-top:5px;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:700}.status-chip.sent{background:#e7f6eb;color:#216235}.status-chip.pending{background:#fff2c7;color:#765a00}.status-chip.error{background:#fff0f2;color:#82182b}.manager-actions{display:grid;gap:6px}.manager-actions button{padding:7px 9px;font-size:12px}.manager-actions .danger{border-color:#e4b3bc}@media(max-width:480px){.queue-panel-actions{display:grid}.manager-stats{grid-template-columns:1fr 1fr 1fr}.manager-item{grid-template-columns:44px 1fr}.manager-actions{grid-column:1/-1;grid-template-columns:1fr 1fr}.manager-thumb{width:44px;height:44px}}

/* v20 Camera Pro */
.camera-pro-dialog{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:#050505;color:#fff;overflow:hidden}.camera-pro-dialog::backdrop{background:#000}.camera-pro-shell{position:relative;width:100%;height:100%;overflow:hidden;background:#000}.camera-pro-shell video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.camera-pro-shade{display:none}.camera-pro-frame{--frame-aspect:1;--frame-left:50%;--frame-top:46%;--frame-width:min(66vw,420px);position:absolute;z-index:2;left:var(--frame-left);top:var(--frame-top);width:var(--frame-width);max-height:58vh;aspect-ratio:var(--frame-aspect);transform:translate(-50%,-50%);border:1px solid rgba(255,255,255,.45);border-radius:22px;box-shadow:0 0 0 9999px rgba(0,0,0,.48);pointer-events:none;transition:left .22s ease-out,top .22s ease-out,width .22s ease-out,aspect-ratio .22s ease-out,border-color .2s ease,box-shadow .2s ease}.camera-pro-frame:not(.detected)[data-mode="portrait"]{--frame-width:min(58vw,360px)}.camera-pro-frame:not(.detected)[data-mode="wide"]{--frame-width:min(74vw,470px)}.camera-pro-frame.detected{border-style:solid}.camera-pro-frame.almost{border-color:#f2ad3d;box-shadow:0 0 0 9999px rgba(0,0,0,.45),0 0 0 3px rgba(242,173,61,.22)}.camera-pro-frame.ready{border-color:#5ee58a;box-shadow:0 0 0 9999px rgba(0,0,0,.42),0 0 0 3px rgba(94,229,138,.28)}.camera-pro-frame span{position:absolute;width:34px;height:34px;border-color:#fff}.camera-pro-frame.almost span{border-color:#f2ad3d}.camera-pro-frame.ready span{border-color:#5ee58a}.camera-pro-frame span:nth-child(1){left:-2px;top:-2px;border-left:4px solid;border-top:4px solid;border-radius:16px 0 0}.camera-pro-frame span:nth-child(2){right:-2px;top:-2px;border-right:4px solid;border-top:4px solid;border-radius:0 16px 0 0}.camera-pro-frame span:nth-child(3){right:-2px;bottom:-2px;border-right:4px solid;border-bottom:4px solid;border-radius:0 0 16px}.camera-pro-frame span:nth-child(4){left:-2px;bottom:-2px;border-left:4px solid;border-bottom:4px solid;border-radius:0 0 0 16px}.camera-pro-top{position:absolute;z-index:3;left:0;right:0;top:0;display:grid;grid-template-columns:48px 1fr 48px;align-items:center;gap:10px;padding:calc(12px + env(safe-area-inset-top)) 14px 12px;background:linear-gradient(rgba(0,0,0,.65),transparent)}.camera-control{width:44px;height:44px;padding:0;border:0;border-radius:50%;background:rgba(20,20,20,.62);color:#fff;font-size:20px;backdrop-filter:blur(8px)}.camera-control.active{background:#fff;color:#111}.camera-quality{justify-self:center;min-width:118px;padding:8px 13px;border-radius:999px;font-size:13px;font-weight:800;text-align:center;background:rgba(150,35,45,.82);backdrop-filter:blur(8px);transition:none}.camera-quality.good{background:rgba(30,130,70,.82)}.camera-quality.bad{background:rgba(150,35,45,.82)}.camera-quality.pending{background:rgba(150,35,45,.82)}.camera-pro-guide{position:absolute;z-index:3;left:20px;right:20px;bottom:142px;text-align:center;text-shadow:0 1px 5px #000}.camera-pro-guide strong,.camera-pro-guide small{display:block}.camera-pro-guide strong{font-size:18px}.camera-pro-guide small{margin-top:7px;font-size:12px;color:rgba(255,255,255,.82)}.camera-pro-bottom{position:absolute;z-index:3;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr 92px 1fr;align-items:center;gap:12px;padding:16px 18px calc(18px + env(safe-area-inset-bottom));background:linear-gradient(transparent,rgba(0,0,0,.78) 35%)}.camera-shutter{justify-self:center;width:78px;height:78px;padding:6px;border:3px solid #fff;border-radius:50%;background:transparent}.camera-shutter span{display:block;width:100%;height:100%;border-radius:50%;background:#fff;transition:.15s}.camera-shutter.capturing span{transform:scale(.72);background:#cfd0d0}.camera-mode{display:flex;justify-content:center;align-items:center;gap:6px;margin:0;color:#fff;font-size:12px;text-align:center}.camera-mode input{width:auto}.camera-fallback{font-size:13px}@media(max-width:380px){.camera-pro-frame:not(.detected){--frame-width:min(72vw,320px)}.camera-pro-frame:not(.detected)[data-mode="portrait"]{--frame-width:min(62vw,280px)}.camera-pro-frame:not(.detected)[data-mode="wide"]{--frame-width:min(82vw,350px)}.camera-pro-bottom{grid-template-columns:1fr 82px 1fr;padding-left:8px;padding-right:8px}.camera-shutter{width:72px;height:72px}}

/* v21 Dynamic Guidance */
.camera-pro-direction{position:absolute;z-index:4;left:50%;top:46%;width:min(76vw,440px);transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;pointer-events:none;text-align:center;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.95)}
.camera-pro-direction strong{max-width:92%;padding:7px 12px;border-radius:14px;background:rgba(0,0,0,.46);font-size:17px;line-height:1.2;backdrop-filter:blur(5px)}
.camera-pro-arrow{display:grid;place-items:center;width:78px;height:78px;border-radius:50%;background:rgba(0,0,0,.48);font-size:58px;font-weight:700;line-height:1;filter:drop-shadow(0 2px 6px rgba(0,0,0,.8));will-change:transform}
.camera-pro-direction.ready .camera-pro-arrow{background:rgba(25,135,66,.78);color:#caffda}
.camera-pro-direction.light .camera-pro-arrow,.camera-pro-direction.glare .camera-pro-arrow,.camera-pro-direction.focus .camera-pro-arrow,.camera-pro-direction.search .camera-pro-arrow{background:rgba(173,94,16,.76)}
.camera-pro-direction.left .camera-pro-arrow{animation:guide-left .8s ease-in-out infinite}.camera-pro-direction.right .camera-pro-arrow{animation:guide-right .8s ease-in-out infinite}.camera-pro-direction.up .camera-pro-arrow{animation:guide-up .8s ease-in-out infinite}.camera-pro-direction.down .camera-pro-arrow{animation:guide-down .8s ease-in-out infinite}.camera-pro-direction.closer .camera-pro-arrow{animation:guide-grow .9s ease-in-out infinite}.camera-pro-direction.farther .camera-pro-arrow{animation:guide-shrink .9s ease-in-out infinite}.camera-pro-direction.hold .camera-pro-arrow{animation:guide-hold 1.1s ease-in-out infinite}
@keyframes guide-left{50%{transform:translateX(-12px)}}@keyframes guide-right{50%{transform:translateX(12px)}}@keyframes guide-up{50%{transform:translateY(-12px)}}@keyframes guide-down{50%{transform:translateY(12px)}}@keyframes guide-grow{50%{transform:scale(1.14)}}@keyframes guide-shrink{50%{transform:scale(.86)}}@keyframes guide-hold{50%{transform:scale(.96);opacity:.82}}
@media(prefers-reduced-motion:reduce){.camera-pro-arrow{animation:none!important}}
@media(max-width:380px){.camera-pro-direction strong{font-size:15px}.camera-pro-arrow{width:68px;height:68px;font-size:50px}}


/* v21.1 Camera UX Polish */
.camera-pro-arrow{position:relative;isolation:isolate}
.camera-pro-direction.countdown .camera-pro-arrow::before{content:"";position:absolute;inset:-8px;border-radius:50%;background:conic-gradient(#73ef9c var(--capture-progress,0turn),rgba(255,255,255,.22) 0);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 0);mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 0);animation:none}
.camera-pro-direction.countdown .camera-pro-arrow{background:rgba(25,135,66,.82);color:#d9ffe5;animation:none!important}
.camera-pro-direction.countdown strong{background:rgba(20,108,55,.72)}
.camera-quality.pending{background:rgba(173,94,16,.82)}

.camera-pro-direction.perspective .camera-pro-arrow{background:rgba(173,94,16,.76);animation:guide-hold 1.1s ease-in-out infinite}
.wine-intelligence{margin-top:10px;padding:11px;border:1px solid var(--line);border-radius:11px;background:#fff}.wine-intelligence-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.wine-intelligence-score{font-weight:800;color:var(--wine)}.wine-intelligence ul{margin:8px 0 0;padding-left:18px;font-size:13px;line-height:1.45}.wine-intelligence .wi-warning{color:#8a4b00}.wine-intelligence .wi-inferred{color:#236235}.wine-intelligence .wi-uncertain{color:#82182b}.field-confidence-low{border-color:#c23b53!important;box-shadow:0 0 0 1px rgba(194,59,83,.18)}.field-confidence-medium{border-color:#c58a22!important}.field-confidence-high{border-color:#5a9b6c!important}

/* v25: fields shared with WineLabel macOS 2.1 */
.classification-fields{margin:4px 0 10px;padding:14px;border:1px solid var(--border,#ddd);border-radius:16px;background:color-mix(in srgb,var(--surface,#fff) 94%,var(--accent,#6f1d3f) 6%)}
.classification-fields .section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}
.classification-fields h3{margin:0;font-size:1rem}.classification-fields small{color:var(--muted,#777);text-align:right}
@media(max-width:640px){.classification-fields{padding:12px}.classification-fields .section-heading{display:block}.classification-fields small{display:block;margin-top:3px;text-align:left}}

.knowledge-status{margin-top:10px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,#34c759 12%,transparent);font-size:.86rem;line-height:1.4}.knowledge-status.warning{background:color-mix(in srgb,#ff9f0a 14%,transparent)}

.knowledge-engine{margin-top:10px;padding:12px;border:1px solid color-mix(in srgb,var(--wine) 25%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--wine) 5%,#fff)}.knowledge-engine-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.knowledge-engine-score{font-weight:800;color:var(--wine)}.wine-passport{display:grid;gap:6px;margin-top:9px}.wine-passport>div{display:grid;grid-template-columns:minmax(95px,.35fr) 1fr;gap:8px}.wine-passport small{color:var(--muted)}.engine-corrections{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.engine-correction{font-size:12px;padding:6px 9px}.knowledge-engine details{margin-top:9px}.knowledge-engine ul{margin:7px 0 0;padding-left:18px;font-size:12px;line-height:1.45}
