@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap');
:root{--paper:#f8f6f1;--wine:#602c3d;--ink:#302d2b;--muted:#8c8980;--line:#e6e2d9}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px 'DM Sans',sans-serif}button,input,select,textarea{font:inherit}button,a,label.import{cursor:pointer}button{border:0;background:none;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #bd8d51;outline-offset:3px}aside{position:fixed;inset:0 auto 0 0;width:240px;background:#efede6;border-right:1px solid var(--line);padding:40px 24px;display:flex;flex-direction:column}.brand{display:flex;gap:10px;font-size:30px;color:var(--wine);text-decoration:none;font-family:'Libre Caslon Display',Georgia,serif}.brand small{display:block;letter-spacing:2px;font:8px 'DM Sans';margin-top:8px}aside nav{margin-top:65px;display:grid;gap:10px}aside nav button{text-align:left;padding:14px 18px;color:#79756c;border-radius:8px}aside nav button.active{background:#e6dfe0;color:var(--wine);font-weight:700}.aside-bottom{margin-top:auto;font-size:11px;color:#706e65}.aside-bottom p{color:var(--muted);font-size:10px}.aside-bottom button,.import{display:block;margin-top:17px;padding:0}.status-dot{display:inline-block;width:6px;height:6px;background:#6e8060;border-radius:50%;margin-right:4px}main{margin-left:240px;padding:32px 6vw 65px;max-width:1680px}header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:25px}header>span,.eyebrow{font-size:10px;letter-spacing:2px;color:var(--muted);font-weight:600}.primary{background:var(--wine);color:#fff;border-radius:6px;padding:13px 19px;font-weight:500}.primary:hover{background:#783e51}.intro{display:flex;justify-content:space-between;align-items:center;min-height:250px}h1{font:68px/1.1 'Libre Caslon Display',Georgia,serif;margin:16px 0}h1 span{color:var(--wine)}.intro p:not(.eyebrow),section>p:not(.eyebrow){color:#8a857d;font-size:14px}h2{font:28px 'Libre Caslon Display',Georgia,serif;margin:0}.hero-art{width:240px;height:190px;position:relative;opacity:.85;display:flex;justify-content:center;align-items:end;gap:14px;padding-bottom:28px;border-bottom:1px solid #d6cdc0}.bottle{width:39px;height:112px;background:#343e31;border-radius:16px 16px 8px 8px;position:relative;transform:rotate(-10deg);box-shadow:inset 7px 0 7px #ffffff17}.bottle:before{content:'';position:absolute;width:14px;height:48px;background:inherit;top:-36px;left:12px;border-radius:3px 3px 0 0;border-top:13px solid #602c3d}.bottle:after{content:'MK';position:absolute;inset:46px 4px 23px;background:#f0e9da;color:#705647;font:14px Georgia;text-align:center;padding-top:8px}.b2{height:127px;transform:rotate(6deg);background:#99976a}.b2:before{border-color:#cebb8f}.b3{height:99px;transform:rotate(16deg);background:#6e3e3d}.hero-art>span{position:absolute;bottom:-20px;font:italic 12px Georgia;color:#9e9381}.stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:9px;margin:5px 0 35px;background:#fffefa}.stat{padding:23px 28px;border-right:1px solid var(--line)}.stat:last-child{border:0}.stat small{display:block;color:var(--muted);font-size:11px}.stat strong{display:block;font:38px 'Libre Caslon Display',Georgia;margin:7px 0}.stat span{font-size:10px;color:#9a958c}.toolbar{display:flex;gap:15px;justify-content:space-between;align-items:center;padding-bottom:22px;border-bottom:1px solid var(--line)}.tabs{display:flex;gap:5px;flex-wrap:wrap}.tabs button{padding:9px 12px;font-size:12px;color:#7b766e;border-radius:5px}.tabs .selected{background:var(--wine);color:white}input,select,textarea{width:100%;padding:11px 12px;background:#fffefa;border:1px solid var(--line);border-radius:5px;color:var(--ink)}#search{max-width:235px;font-size:11px}.list-heading{display:flex;justify-content:space-between;align-items:center;margin:28px 0 20px}.list-heading h2{font-size:24px}.list-heading h2 span{font:11px 'DM Sans';color:var(--muted);margin-left:8px}.list-heading select{width:auto;border:0;background:none;font-size:11px;color:#827b71}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.wine-card{background:#fffefa;border:1px solid var(--line);border-radius:9px;overflow:hidden}.wine-visual{height:140px;background:#eee7e3;display:flex;justify-content:center;align-items:end;padding-bottom:14px;position:relative}.wine-visual .bottle{transform:rotate(8deg);height:83px;width:30px}.wine-visual .bottle:before{width:11px;left:10px;height:33px;top:-26px;border-top-width:8px}.wine-visual .bottle:after{inset:29px 3px 17px;font-size:10px;padding-top:7px}.wine-visual.Wit{background:#ececdb}.wine-visual.Wit .bottle{background:#9b9b66}.wine-visual.Rosé{background:#f0dfd9}.wine-visual.Rosé .bottle{background:#b77d6c}.wine-visual.Bubbels{background:#e3e9df}.badge{position:absolute;left:13px;top:13px;padding:5px 8px;border-radius:4px;background:#fff9;font-size:9px;letter-spacing:.5px}.wine-info{padding:20px}.wine-info small{color:#a08d79;font-size:9px;letter-spacing:1px;text-transform:uppercase}.wine-info h3{font:25px 'Libre Caslon Display',Georgia;margin:8px 0}.wine-info p{font-size:11px;color:#8d867b;margin:7px 0}.wine-details{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:14px;margin-top:17px;font-size:11px}.wine-actions{display:flex;justify-content:space-between;margin-top:15px}.wine-actions button{font-size:11px;padding:8px 10px;border:1px solid var(--line);border-radius:4px}.wine-actions button:last-child{color:var(--wine)}.wine-actions button:disabled{opacity:.4;cursor:default}.empty{grid-column:1/-1;text-align:center;padding:55px 20px;border:1px dashed #d7cdbf;border-radius:10px}.empty p{color:var(--muted);line-height:1.8}.empty h2{font-size:34px}.footnote{text-align:center;color:#9e9589;font-size:11px;margin:30px 0}.footnote button{color:var(--wine);text-decoration:underline}dialog{border:1px solid var(--line);border-radius:12px;padding:28px;width:550px;max-width:calc(100vw - 24px);max-height:90vh;color:var(--ink);background:var(--paper)}dialog::backdrop{background:#24151b88;backdrop-filter:blur(4px)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.modal-head h2{font-size:30px}.close{font-size:28px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}form label{display:block;font-size:11px;color:#82766b;margin:13px 0}form label input,form label select,form label textarea{display:block;margin-top:6px}.full{width:100%;margin-top:15px}.scan-box{max-width:650px;background:#fffefa;border:1px solid var(--line);padding:35px;border-radius:12px;margin-top:35px;text-align:center}.scan-icon{font-size:65px;color:var(--wine)}.scan-box p{color:#93877a;line-height:1.7}.scan-manual{text-align:left;margin:25px 0}.scan-manual label{font-size:11px}.scan-manual>div{display:flex;gap:10px;margin-top:8px}.scan-box small{color:#9b9288;font-size:10px}a{color:var(--wine)}video{width:100%;max-height:260px;background:#222;border-radius:6px}.result{padding:16px;margin:12px 0;border:1px solid var(--line);border-radius:6px;text-align:left}.result button{margin-top:10px;margin-right:8px}.event{background:#fffefa;border:1px solid var(--line);padding:22px;border-radius:8px;margin:15px 0;display:flex;justify-content:space-between;gap:20px}.event h3{margin:0 0 8px;font:24px 'Libre Caslon Display',Georgia}.event p,.event time{color:#948778;font-size:12px}.event button{color:var(--wine);font-size:11px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#302d2b;color:#fff;padding:15px 23px;border-radius:7px;z-index:20}.mobile-nav{display:none}[hidden]{display:none!important}@media(min-width:1450px){.grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1100px){aside{width:200px;padding:30px 18px}main{margin-left:200px;padding:25px 4vw}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar{flex-wrap:wrap}.hero-art{width:170px}.brand{font-size:25px}}@media(max-width:680px){aside{display:none}main{margin:0;padding:20px 20px 85px}header>span{font-size:8px;letter-spacing:1px}.primary{padding:12px 14px;font-size:12px}.intro{min-height:210px}.hero-art{width:95px;transform:scale(.75);transform-origin:right center;gap:9px}.hero-art>span{display:none}h1{font-size:51px}.intro>div:first-child{min-width:220px}.intro p:not(.eyebrow){font-size:12px;max-width:200px;line-height:1.7}.eyebrow{font-size:8px;letter-spacing:1.5px}.stat{padding:18px 12px}.stat strong{font-size:30px}.stat small{font-size:10px}.stat span{font-size:8px}.stats{margin-bottom:25px}.grid{gap:12px}.wine-info{padding:13px}.wine-info h3{font-size:23px}.wine-visual{height:130px}.wine-actions{gap:5px}.wine-actions button{padding:8px 6px;font-size:10px}.tabs button{padding:8px 10px;font-size:11px}#search{max-width:100%}.list-heading h2{font-size:23px}.list-heading select{max-width:145px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:#f8f6f1f5;border-top:1px solid var(--line);justify-content:space-around;padding:9px 0 max(10px,env(safe-area-inset-bottom));z-index:10;backdrop-filter:blur(10px)}.mobile-nav button{font-size:22px;color:var(--wine);min-width:70px}.mobile-nav span{display:block;font-size:10px;margin-top:3px}.scan-box{padding:20px}.event{flex-wrap:wrap}#toast{bottom:85px;width:90%;text-align:center}.footnote{line-height:2}dialog{padding:22px}}

.catalog-search{padding:16px;border:1px solid var(--line);border-radius:8px;background:#eee9e1;margin:0 0 20px}.catalog-input{display:flex;gap:8px}.catalog-search>label{margin-top:0}.catalog-search>small{display:block;margin-top:12px;font-size:10px;color:var(--muted)}#catalog-results{max-height:240px;overflow:auto;font-size:12px;line-height:1.7;margin-top:12px}.catalog-result{display:block;width:100%;text-align:left;border:1px solid var(--line);border-radius:5px;background:var(--paper);padding:12px;margin:8px 0}.catalog-result:hover{border-color:var(--wine)}.catalog-result span,.catalog-result small{display:block;color:#84796e}.catalog-result small{color:var(--wine);font-size:10px}.catalog-source{font-size:11px;color:var(--wine)}.catalog-link{color:var(--wine);text-decoration:underline}
.wine-extra:not(:empty){border:1px solid var(--line);padding:12px 16px;border-radius:6px;font-size:12px;line-height:1.7;background:#fffefa}.wine-extra p{margin:6px 0}
/* Comfortable controls, including iOS input focus without automatic zoom. */
input,select,textarea{font-size:16px!important;min-height:48px}button,.import,.photo-upload{touch-action:manipulation}button{min-height:44px}form label{font-size:14px}form label input,form label select,form label textarea{margin-top:8px}.primary{font-size:15px;min-height:48px}.wine-photo{width:100%;height:100%;object-fit:contain;position:absolute;inset:0;padding:14px;background:#f2eee6;z-index:1}.badge{z-index:2}.photo-fallback{font-size:70px;color:#b6a591;align-self:center}.wine-photo.photo-failed{display:none}.wine-photo+.photo-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.wine-visual{overflow:hidden}.photo-editor{border:1px solid var(--line);border-radius:10px;padding:16px;background:#fffefa;margin-bottom:20px}.photo-preview{height:180px;background:#f2eee6;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#948778;overflow:hidden}.photo-preview img{width:100%;height:100%;object-fit:contain}.photo-tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.photo-tools button,.photo-upload{display:inline-flex;align-items:center;justify-content:center;padding:10px 12px;border:1px solid var(--line);border-radius:5px;font-size:13px;margin:0;min-height:44px;color:var(--wine)}#photo-status{font-size:12px;color:#8a776a;line-height:1.7}.photo-thumb{width:45px;height:65px;object-fit:contain;float:left;margin-right:10px}.external-lookup{border-top:1px solid var(--line);margin:22px 0;padding-top:18px}.external-lookup button{color:var(--wine);border:1px solid var(--line);border-radius:6px;padding:10px 18px}.external-lookup p{font-size:12px}.catalog-result{min-height:68px}.catalog-result strong{font-size:15px}.catalog-result span{font-size:13px}.catalog-result small{font-size:12px}.catalog-input{align-items:stretch}.catalog-input input{min-width:0}.catalog-input .primary{flex-shrink:0}.scan-manual>div input{min-width:0}
@media(max-width:1100px){aside{display:none}main{margin-left:0;max-width:100%;padding:20px 28px 110px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;justify-content:space-around;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#f8f6f1f5;backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:10}.mobile-nav button{min-width:88px;font-size:24px;min-height:54px;border-radius:12px;color:var(--wine)}.mobile-nav span{display:block;font-size:12px;margin-top:3px}.mobile-nav button.active{background:#eee5e6}.mobile-nav .nav-scan{background:var(--wine);color:white;min-width:100px}header{position:sticky;top:0;z-index:5;background:var(--paper);padding:12px 0 16px}.intro{min-height:205px}.tabs{gap:8px}.tabs button{font-size:14px;min-height:44px}.toolbar{gap:16px}#search{max-width:100%;width:100%}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wine-info p{font-size:14px}.wine-info small{font-size:11px}.wine-details{font-size:14px}.wine-actions button{font-size:13px;min-height:46px}.list-heading select{font-size:14px!important}.scan-box{max-width:100%}#toast{bottom:105px;max-width:90%}}
@media(max-width:680px){main{padding:0 16px 115px}header{padding-top:calc(12px + env(safe-area-inset-top));gap:10px}header>span{max-width:130px;font-size:9px;line-height:1.6}.intro{min-height:185px}.intro .hero-art{width:80px}.intro h1{font-size:56px}.intro p:not(.eyebrow){font-size:14px;max-width:230px}.stats{border-radius:12px;overflow:hidden;margin:10px 0 22px}.stat{padding:16px 10px}.stat small{font-size:11px;line-height:1.5;min-height:32px}.stat strong{font-size:30px}.stat span{font-size:8px;line-height:1.5;display:block}.toolbar{display:flex;flex-direction:column;align-items:stretch;padding-bottom:18px}.tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px}.tabs button{white-space:nowrap;padding:10px 13px;flex-shrink:0}.list-heading{margin:22px 0 15px}.list-heading h2{font-size:28px}.list-heading select{max-width:165px;padding-left:4px}.grid{grid-template-columns:1fr;gap:15px}.wine-card{display:grid;grid-template-columns:106px minmax(0,1fr);border-radius:13px;min-height:220px}.wine-visual{height:100%;min-height:220px;align-items:center;padding:26px 10px}.wine-visual .bottle{height:115px;width:40px}.wine-visual .bottle:before{left:13px;width:14px;top:-33px;height:40px}.wine-visual .bottle:after{inset:42px 4px 24px;font-size:14px}.badge{left:6px;top:10px;font-size:9px;padding:5px}.wine-photo{padding:12px 5px}.wine-info{padding:17px 14px;min-width:0}.wine-info h3{font-size:27px;line-height:1.1;overflow-wrap:anywhere}.wine-info p{font-size:13px;line-height:1.5}.wine-info small{font-size:10px;line-height:1.6}.wine-details{font-size:13px;margin-top:13px;padding-top:12px}.wine-actions{gap:6px;flex-wrap:wrap;margin-top:12px}.wine-actions button{font-size:12px;padding:9px 10px;flex:1;white-space:nowrap}.wine-actions button:last-child{background:#f3e9eb;border-color:#e2cdd3}.footnote{font-size:12px;line-height:1.8}.footnote button{font-size:13px;padding:10px 4px}dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0 20px calc(22px + env(safe-area-inset-bottom));border:0;border-radius:0;overscroll-behavior:contain}dialog form>.modal-head{position:sticky;top:0;background:var(--paper);z-index:3;padding:calc(18px + env(safe-area-inset-top)) 0 16px;border-bottom:1px solid var(--line);gap:12px}dialog .modal-head h2{font-size:30px}dialog .close{min-width:48px;min-height:48px;border-radius:50%;background:#ede7df}dialog form>.primary.full{position:sticky;bottom:0;z-index:3;box-shadow:0 0 0 10px var(--paper);font-size:16px;padding:16px}.fields{gap:0 14px}.catalog-search{padding:14px}.catalog-search>small{font-size:11px;line-height:1.7}.catalog-input{gap:7px}.catalog-input input{width:100%}.photo-tools>*{flex:1}.scan-box{padding:24px 16px;margin-top:24px}.scan-box h2{font-size:30px}.scan-box p{font-size:15px}#scan>h1,#history>h1{padding-top:18px;font-size:49px}#scan>p,#history>p{font-size:15px;line-height:1.7}.scan-manual label{font-size:14px}.scan-manual>div{gap:8px}#camera{width:100%}video{max-height:360px}.scan-box small{font-size:11px;line-height:1.7}.event{padding:20px}.event h3{font-size:28px}.event p,.event time{font-size:14px}}
@media(max-width:360px){.wine-card{grid-template-columns:85px minmax(0,1fr)}.wine-info{padding:15px 10px}.list-heading{flex-wrap:wrap;gap:8px}.stat strong{font-size:25px}.fields{grid-template-columns:1fr}.photo-tools{flex-direction:column}}
.auth-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:35px 20px;background:radial-gradient(ellipse at 20% 0,#e5d5d1,transparent 55%),var(--paper)}.auth-card{width:100%;max-width:460px;background:#fffefa;border:1px solid var(--line);border-radius:20px;padding:36px}.auth-card .brand{margin-bottom:35px}.auth-card h1{font-size:52px;line-height:1.05}.auth-card>p{color:#8c7c70;line-height:1.7}.auth-card>small{display:block;font-size:12px;line-height:1.7;color:#9a8d80;margin-top:25px}.auth-tabs{display:flex;gap:8px;background:#eee7df;border-radius:7px;padding:4px;margin:24px 0 16px}.auth-tabs button{flex:1;border-radius:5px;font-size:14px}.auth-tabs .selected{background:#fffefa;color:var(--wine);box-shadow:0 1px 5px #302d2b10}#auth-forgot{display:block;color:var(--wine);margin:10px auto;font-size:13px}#auth-message{font-size:14px;color:var(--wine);min-height:20px}#auth-loading{padding:25px 0;color:#8c7c70}#auth-retry{background:var(--wine);color:white;padding:12px 18px;border-radius:6px}.account-button{margin-left:auto;margin-right:14px;color:var(--wine);font-size:13px}.cloud-notice,.legacy-import{border:1px solid #dacdbb;background:#f2eadc;border-radius:9px;padding:16px;margin:20px 0;font-size:14px;line-height:1.6}.cloud-notice.error{background:#f6e3e4;border-color:#dfb6bc}.cloud-notice button{display:inline-block;text-decoration:underline;color:var(--wine);font-size:13px;padding:8px}.legacy-import{display:flex;align-items:center;justify-content:space-between;gap:20px}.legacy-import p{margin:5px 0;color:#857767;font-size:13px}#cloud-progress{position:fixed;inset:0;z-index:200;background:#f8f6f1d9;display:flex;align-items:center;justify-content:center;font:25px Georgia;backdrop-filter:blur(3px)}body.cloud-saving #app-shell{pointer-events:none}#logout{color:var(--wine);margin-top:20px;border:1px solid var(--line);border-radius:5px}#account-email{overflow-wrap:anywhere}#sync-status{line-height:1.7;color:#8b7b6c}@media(max-width:680px){.auth-card{padding:26px 24px;border-radius:16px}.auth-card h1{font-size:47px}.auth-screen{padding:calc(25px + env(safe-area-inset-top)) 16px}.account-button{font-size:0;min-width:44px;width:44px;margin:0}.account-button:after{content:'♙';font-size:24px}header>span{max-width:90px}.legacy-import{flex-direction:column;align-items:stretch}.legacy-import .primary{width:100%}#account-dialog{height:auto;min-height:340px;top:auto;bottom:0;padding:20px 25px calc(25px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0}}

/* Keep the filter overflow inside its own row, including narrow flex layouts. */
main,#app-shell,#cellar,.toolbar{min-width:0;max-width:100%}.toolbar{flex-wrap:wrap}.toolbar .tabs{min-width:0;max-width:100%;flex:1 1 300px;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding:4px 2px 8px;scrollbar-width:thin}.toolbar .tabs button{flex:0 0 auto;white-space:nowrap}.toolbar #search{min-width:0}.scan-viewport{position:relative;width:100%;aspect-ratio:2.5 / 1;margin:20px 0 14px;overflow:hidden;border-radius:12px;background:#222}.scan-viewport #video{display:block;width:100%;height:100%;max-height:none;object-fit:cover;border-radius:0}.barcode-guide{position:absolute;inset:22% 8%;border:2px solid #fff;border-radius:8px;box-shadow:0 0 0 100vmax #0005;pointer-events:none}.barcode-guide:after{content:"";position:absolute;left:5%;right:5%;top:50%;height:2px;background:#f4b7bf;box-shadow:0 0 8px #f4b7bf}@media(max-width:680px){.toolbar .tabs{flex:0 1 auto;width:100%}}

/* Keep long cellar content and compact header rows inside the viewport. */
.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.stat{min-width:0;overflow-wrap:anywhere}.wine-info{min-width:0;overflow-wrap:anywhere}.wine-details{flex-wrap:wrap;gap:6px}.list-heading{gap:12px;flex-wrap:wrap}.list-heading h2{min-width:0}.list-heading select{max-width:100%;min-width:0}.intro>div:first-child{min-width:0}.intro .hero-art{flex-shrink:0}#cellar{overflow-wrap:anywhere}
@media(max-width:680px){header>span{min-width:0;flex:1 1 60px}header .account-button{flex:0 0 44px}header #add{flex:0 1 auto;min-width:0}.intro>div:first-child{min-width:0;flex:1}.intro .hero-art{width:64px}.stat strong{font-size:clamp(22px,7vw,30px)}.wine-actions button{white-space:normal;min-width:0}.list-heading select{flex:0 1 165px}html{overflow-x:hidden}body{max-width:100%}@supports(overflow:clip){html{overflow-x:clip}}}
