*{box-sizing:border-box}html{width:100%;max-width:100%;overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}:root{--wine:#7a153f;--deep:#4b0928;--paper:#faf7f2;--ink:#211b1d;--muted:#776f72;--line:#e7ddda;--green:#16724b}body{margin:0;width:100%;max-width:100%;overflow-x:hidden;background:#eee9e3;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.hidden{display:none!important}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{width:100%;max-width:760px;min-height:100vh;min-height:100dvh;overflow-x:hidden;margin:auto;background:var(--paper);padding-bottom:88px}header{position:sticky;top:0;z-index:8;display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:#faf7f2ed;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:9px;border:0;background:none;font-size:24px;text-align:left}.brand b,.brand small{display:block}.brand b{font-size:18px}.brand small{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em}.round{border:0;border-radius:50%;width:40px;height:40px;background:var(--ink);color:white}.plain{border:0;background:none;color:var(--wine);font-weight:750}.view{display:none;padding:22px 18px}.view.active{display:block}.view>h1{margin:0 0 8px;font-size:34px}.hero{padding:24px;border-radius:28px;color:#fff;background:linear-gradient(135deg,var(--deep),#a42c59)}.hero p,.eyebrow{font-size:11px;font-weight:850;letter-spacing:.15em;color:var(--wine);margin:0 0 6px}.hero p{color:#ffd4e1}.hero h1{font-size:31px;margin:6px 0 24px}.stats{display:grid;grid-template-columns:repeat(3,1fr)}.stats b,.stats span{display:block}.stats b{font-size:25px}.stats span{font-size:11px;color:#ffd4e1}.quick{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0 28px}.quick button{border:0;border-radius:20px;background:#fff;padding:18px;text-align:left;box-shadow:0 4px 18px #321e260d;font-size:25px}.quick b,.quick small{display:block;font-size:15px;margin-top:9px}.quick small{font-size:11px;color:var(--muted);margin-top:3px}.heading{display:flex;justify-content:space-between;align-items:end;margin:24px 0 12px}.heading h2{margin:0}.list{display:grid;gap:12px}.wine-card,.shop-card,.activity,.panel,.rec{border:1px solid #3920290a;border-radius:20px;background:#fff;padding:14px;box-shadow:0 4px 16px #321e260d}.wine-card{display:grid;grid-template-columns:58px 1fr auto;gap:12px;align-items:center;border:0;text-align:left;width:100%}.thumb{width:58px;height:76px;border-radius:13px;object-fit:cover;background:#f0e7e5;display:grid;place-items:center;font-size:27px}.wine-card h3,.shop-card h3,.rec h3{margin:2px 0}.wine-card p,.shop-card p,.rec p{font-size:13px;color:var(--muted);margin:3px 0}.badge{padding:5px 8px;border-radius:999px;background:#edf7f1;color:var(--green);font-size:11px;font-weight:800}.stars{color:#e6a329}.filters{display:grid;grid-template-columns:1fr 125px;gap:8px;margin:18px 0}input,select,textarea{width:100%;padding:12px;border:1px solid #ddd2d0;border-radius:13px;background:#fff;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--wine);box-shadow:0 0 0 3px #7a153f16}label{display:grid;gap:6px;font-size:13px;font-weight:700;color:#51484b}.primary,.secondary,.danger{border:0;border-radius:14px;padding:13px 17px;font-weight:800}.primary{background:var(--wine);color:#fff}.secondary{background:#f0eae8}.danger{background:#fff0ef;color:#b42318}.wide{width:100%}.muted{color:var(--muted);line-height:1.5}.fine{font-size:12px;color:var(--muted)}.auth{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at top,#963458,var(--deep) 72%)}.auth-card{width:min(440px,100%);padding:32px;border-radius:30px;background:var(--paper);text-align:center}.logo{font-size:45px}.auth-card h1{font-size:39px;margin:5px}.auth-card form{display:grid;gap:14px;text-align:left;margin:24px 0}.alert{padding:12px;border-radius:12px;background:#fff1cf;color:#725500}nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:9;width:min(760px,100%);display:flex;justify-content:space-around;align-items:end;padding:8px 7px calc(10px + env(safe-area-inset-bottom));background:#ffffffee;border-top:1px solid var(--line);backdrop-filter:blur(12px)}nav button{border:0;background:none;color:#91878a;font-size:20px;min-width:54px}nav span{display:block;font-size:10px;font-weight:750;margin-top:3px}nav button.active{color:var(--wine)}nav .scan{margin-top:-27px}nav .scan:first-letter{background:var(--wine);color:#fff;border-radius:50%;padding:13px;border:5px solid var(--paper)}dialog{width:100%;max-width:660px;max-height:92vh;max-height:92dvh;margin:auto 0 0;padding:20px;border:0;border-radius:28px 28px 0 0;background:var(--paper);overflow:auto}dialog::backdrop{background:#181015aa}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.dialog-head h2{margin:0}.dialog-head button{width:40px;height:40px;border:0;border-radius:50%;font-size:24px}.scanner-wrap{width:100%;max-width:100%;position:relative;background:#111;border-radius:20px;overflow:hidden;aspect-ratio:3/4}.scanner-wrap video{width:100%;height:100%;object-fit:cover}.scan-box{position:absolute;left:8%;right:8%;top:35%;height:25%;border:3px solid white;border-radius:12px;box-shadow:0 0 0 999px #0004}.center{text-align:center}.manual{display:grid;grid-template-columns:1fr auto;gap:8px;margin:14px 0}.preview{width:100%;max-height:350px;object-fit:contain;border-radius:18px;margin:12px 0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.full{grid-column:span 2}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.actions .danger{margin-right:auto}.detail-hero{padding:21px;border-radius:20px;background:linear-gradient(135deg,var(--deep),#a42c59);color:#fff}.detail-hero h2{margin:3px 0}.detail-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:13px 0}.detail-stats div{padding:12px;background:#fff;border-radius:14px;text-align:center}.detail-stats b,.detail-stats span{display:block}.detail-stats span{font-size:10px;color:var(--muted)}.detail-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.toast{position:fixed;z-index:100;left:50%;bottom:100px;transform:translate(-50%,20px);opacity:0;background:#211b1d;color:#fff;padding:12px 18px;border-radius:999px;font-size:13px;transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}code{word-break:break-all}.rec-score{float:right;background:#f7e8ee;color:var(--wine);border-radius:999px;padding:5px 8px;font-size:11px;font-weight:800}@media(min-width:700px){.app{margin:18px auto;border-radius:30px;overflow:hidden;min-height:calc(100vh - 36px)}nav{bottom:18px;border-radius:0 0 30px 30px}dialog{margin:auto;border-radius:28px}.view{padding:28px 30px}}@media(max-width:520px){.grid{grid-template-columns:1fr}.full{grid-column:span 1}.filters{grid-template-columns:1fr}.wine-card{grid-template-columns:52px 1fr}.wine-card .side{grid-column:2}.actions{flex-wrap:wrap}.actions button{flex:1}}
/* V3 mobile layout and accessible scanner icons */
main,.view,header,nav,dialog,.grid,.quick,.filters{min-width:0;max-width:100%}
img,video,canvas{max-width:100%}.view{overflow-x:hidden}
.scan-icon{display:inline-block;width:23px;height:18px;position:relative;border:2px solid currentColor;border-radius:3px;background:linear-gradient(90deg,transparent 0 12%,currentColor 12% 17%,transparent 17% 27%,currentColor 27% 34%,transparent 34% 48%,currentColor 48% 53%,transparent 53% 65%,currentColor 65% 73%,transparent 73% 84%,currentColor 84% 89%,transparent 89%);color:inherit}
.scan-icon:before,.scan-icon:after{content:"";position:absolute;left:-5px;right:-5px;height:5px;border-left:2px solid currentColor;border-right:2px solid currentColor}.scan-icon:before{top:-6px;border-top:2px solid currentColor}.scan-icon:after{bottom:-6px;border-bottom:2px solid currentColor}.scan-icon.large{display:block;width:30px;height:23px;margin:4px 0 14px;color:var(--wine)}
.round .scan-icon{color:#fff}.nav-scan{width:26px;height:20px;color:#fff}.scan.nav-scan:first-letter,nav .scan:first-letter{background:none;border:0;padding:0}.scan{display:flex;flex-direction:column;align-items:center}.scan .nav-scan{box-sizing:content-box;background:var(--wine);border:13px solid var(--wine);border-radius:50%;outline:5px solid var(--paper);box-shadow:0 5px 16px #4b092855;margin-top:-20px;margin-bottom:7px}
.photo-section{display:grid;gap:10px;margin-bottom:14px}.bottle-photo-frame{width:100%;height:230px;border:1px dashed #cbbdb9;border-radius:18px;background:#f3ece9;display:grid;place-items:center;overflow:hidden}.bottle-photo-frame>span{font-size:52px}.bottle-photo-frame img{width:100%;height:100%;object-fit:contain;background:#eee7e4}.photo-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.photo-button{display:flex;align-items:center;justify-content:center;text-align:center;padding:12px;border-radius:13px;background:var(--wine);color:#fff;font-weight:800;font-size:13px}.photo-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.secondary-photo{background:#f0eae8;color:var(--ink)}
@media(max-width:520px){body{background:var(--paper)}.auth{padding:12px;align-items:start;padding-top:max(12px,env(safe-area-inset-top))}.auth-card{padding:24px 18px;border-radius:24px}.auth-card h1{font-size:34px}.view{padding:18px 14px}.hero{padding:20px}.hero h1{font-size:27px}.quick{gap:8px}.quick button{padding:14px}.wine-card{width:100%;overflow:hidden}.wine-card>div:nth-child(2){min-width:0}.wine-card h3,.wine-card p{overflow:hidden;text-overflow:ellipsis}.scanner-wrap{aspect-ratio:3/4;max-height:58dvh}.manual{grid-template-columns:minmax(0,1fr) auto}.manual input{min-width:0}.photo-buttons{grid-template-columns:1fr}dialog{padding:16px;padding-bottom:max(18px,env(safe-area-inset-bottom))}}
