:root{--gallery-paper:#f3eee3;--gallery-ink:#171714;--gallery-muted:#69645b;--gallery-red:#b93a20;--gallery-line:rgba(23,23,20,.14)}
html.gallery-open,body.gallery-open{overflow:hidden!important}
.ukiyoe-bottom-nav{position:fixed;z-index:85;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(360px,calc(100vw - 28px));height:64px;padding:6px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;border:1px solid rgba(255,255,255,.15);border-radius:22px;background:rgba(10,11,10,.93);box-shadow:0 16px 40px rgba(0,0,0,.34);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:opacity .2s ease,transform .2s ease}
.ukiyoe-bottom-nav.is-hidden{opacity:0;pointer-events:none;transform:translate(-50%,20px)}
.ukiyoe-bottom-nav button{position:relative;border:0;background:transparent;color:rgba(255,255,255,.72);border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font:600 10px/1.1 "Avenir Next","Helvetica Neue",sans-serif;letter-spacing:.04em}
.ukiyoe-bottom-nav button:active{background:rgba(255,255,255,.08)}
.ukiyoe-bottom-nav .nav-capture{background:#f3eee3;color:#171714;box-shadow:0 4px 16px rgba(0,0,0,.22)}
.ukiyoe-bottom-nav b{position:absolute;top:3px;right:20%;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--gallery-red);color:#fff;font:700 9px/17px sans-serif}
.gallery-saved-note{margin:3px 0 0!important;display:flex;align-items:center;justify-content:center;gap:6px;color:#d8d1c5!important;font:600 11px/1.2 "Avenir Next",sans-serif!important;letter-spacing:.03em}
.ukiyoe-gallery-overlay{position:fixed;z-index:200;inset:0;background:var(--gallery-paper);color:var(--gallery-ink);overflow:hidden}
.gallery-shell{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}
.gallery-topbar{height:88px;padding:calc(14px + env(safe-area-inset-top)) 20px 12px;box-sizing:content-box;display:flex;align-items:flex-end;justify-content:space-between;border-bottom:1px solid var(--gallery-line);background:rgba(243,238,227,.94);backdrop-filter:blur(14px)}
.gallery-eyebrow,.gallery-section-heading span,.gallery-latest-heading span,.gallery-empty>span{display:block;margin-bottom:6px;color:var(--gallery-red);font:700 9px/1 "Avenir Next",sans-serif;letter-spacing:.22em}
.gallery-topbar h1{margin:0;font-family:"Bodoni Moda",Georgia,serif;font-size:29px;line-height:1;font-weight:600;letter-spacing:-.02em}
.gallery-close,.gallery-detail header button{width:44px;height:44px;border:1px solid var(--gallery-line);border-radius:50%;background:transparent;color:var(--gallery-ink);display:grid;place-items:center}
.gallery-scroll{overflow:auto;-webkit-overflow-scrolling:touch;padding:20px 18px calc(50px + env(safe-area-inset-bottom))}
.gallery-progress-card{max-width:720px;margin:0 auto 26px;padding:20px;border:1px solid var(--gallery-line);background:rgba(255,255,255,.28)}
.gallery-progress-card>div:first-child{display:flex;align-items:baseline;gap:8px}.gallery-progress-card strong{font:600 31px/1 "Bodoni Moda",serif}.gallery-progress-card span{color:var(--gallery-muted);font:600 13px/1 "Avenir Next",sans-serif}
.gallery-progress-track{height:3px!important;margin:15px 0 12px;background:rgba(23,23,20,.12);overflow:hidden}.gallery-progress-track i{display:block;height:100%;background:var(--gallery-red);transition:width .5s ease}.gallery-progress-card p{margin:0;color:var(--gallery-muted);font:400 12px/1.55 "Avenir Next",sans-serif}
.gallery-latest{max-width:720px;margin:0 auto 34px}.gallery-latest-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.gallery-latest-heading span{margin:0}.gallery-latest-heading time{color:var(--gallery-muted);font:500 11px "Avenir Next",sans-serif}
.gallery-latest-image{width:100%;padding:0;border:0;background:#ded5c5;display:block;box-shadow:0 16px 34px rgba(37,29,19,.16)}.gallery-latest-image img{width:100%;max-height:64vh;aspect-ratio:1080/1536;display:block;object-fit:contain}
.gallery-latest-copy{display:flex;justify-content:space-between;align-items:center;padding:15px 2px}.gallery-latest-copy h2{margin:0 0 3px;font:600 21px/1.1 "Bodoni Moda",serif}.gallery-latest-copy p{margin:0;color:var(--gallery-muted);font:500 11px "Avenir Next",sans-serif}.gallery-latest-copy button{border:1px solid var(--gallery-ink);background:transparent;border-radius:999px;padding:10px 15px;display:flex;align-items:center;gap:7px;color:var(--gallery-ink);font:700 11px "Avenir Next",sans-serif}
.gallery-section{max-width:720px;margin:0 auto 38px}.gallery-section-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:14px}.gallery-section-heading span{margin-bottom:5px}.gallery-section-heading h2{margin:0;font:600 24px/1 "Bodoni Moda",serif}.gallery-section-heading small{color:var(--gallery-muted);font:500 11px "Avenir Next",sans-serif}
.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 11px}.gallery-art-card{padding:0;border:0;background:transparent;text-align:left;color:inherit}.gallery-art-image{position:relative;display:block;background:#ded5c5;overflow:hidden}.gallery-art-image img{width:100%;aspect-ratio:1080/1536;display:block;object-fit:cover;transition:transform .35s ease}.gallery-art-card:active img{transform:scale(.985)}.gallery-art-image i{position:absolute;left:8px;bottom:8px;padding:5px 7px;background:rgba(10,10,9,.78);color:#fff;font:700 8px/1 "Avenir Next",sans-serif;letter-spacing:.14em;font-style:normal}.gallery-art-copy{display:block;padding:9px 2px}.gallery-art-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 15px/1.2 "Bodoni Moda",serif}.gallery-art-copy small{display:block;margin-top:4px;color:var(--gallery-muted);font:500 10px "Avenir Next",sans-serif}
.gallery-suggestions{display:grid;gap:10px}.gallery-suggestion,.gallery-explore-card{min-height:102px;width:100%;padding:18px;border:0;background:#26231e;color:#fff;background-size:cover;background-position:center;display:flex;align-items:flex-end;justify-content:space-between;text-align:left}.gallery-suggestion small,.gallery-explore-card small{display:block;margin-bottom:7px;color:rgba(255,255,255,.7);font:700 8px "Avenir Next",sans-serif;letter-spacing:.18em}.gallery-suggestion strong,.gallery-explore-card strong{font:600 19px/1.1 "Bodoni Moda",serif}.gallery-empty{max-width:720px;margin:8px auto 42px;padding:42px 24px;text-align:center;border:1px solid var(--gallery-line)}.gallery-empty-frame{width:72px;height:72px;margin:0 auto 22px;border:1px solid var(--gallery-line);border-radius:50%;display:grid;place-items:center}.gallery-empty h2{margin:0 0 10px;font:600 28px/1.1 "Bodoni Moda",serif}.gallery-empty p{max-width:340px;margin:0 auto 22px;color:var(--gallery-muted);font:400 13px/1.6 "Avenir Next",sans-serif}.gallery-empty button{border:0;border-bottom:1px solid var(--gallery-ink);padding:8px 0;background:transparent;display:inline-flex;align-items:center;gap:8px;font:700 11px "Avenir Next",sans-serif;letter-spacing:.04em}
.gallery-footer-note{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--gallery-muted)}.gallery-footer-note .hero-brand-mark{position:static!important;width:13px!important;height:13px!important;display:block!important}.gallery-footer-note p{margin:0;font:500 10px "Avenir Next",sans-serif}
.gallery-loading{height:100%;display:grid;place-content:center;text-align:center;gap:12px}.gallery-loading span{width:28px;height:28px;margin:auto;border:2px solid rgba(23,23,20,.18);border-top-color:var(--gallery-red);border-radius:50%;animation:gallery-spin .8s linear infinite}.gallery-loading p{font:500 11px "Avenir Next",sans-serif;color:var(--gallery-muted)}@keyframes gallery-spin{to{transform:rotate(360deg)}}
.gallery-detail{position:absolute;z-index:10;inset:0;display:grid;place-items:end center;pointer-events:none}.gallery-detail.is-open{pointer-events:auto}.gallery-detail-backdrop{position:absolute;inset:0;background:rgba(8,8,7,.64);opacity:0;transition:opacity .24s}.gallery-detail.is-open .gallery-detail-backdrop{opacity:1}.gallery-detail article{position:relative;width:min(100%,620px);max-height:94%;padding:16px 18px calc(18px + env(safe-area-inset-bottom));box-sizing:border-box;background:var(--gallery-paper);transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.7,.2,1);overflow:auto}.gallery-detail.is-open article{transform:translateY(0)}.gallery-detail header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.gallery-detail header span{color:var(--gallery-red);font:700 8px "Avenir Next",sans-serif;letter-spacing:.2em}.gallery-detail header h2{margin:3px 0 0;font:600 24px "Bodoni Moda",serif}.gallery-detail-image{background:#ded5c5}.gallery-detail-image img{width:100%;max-height:61vh;display:block;object-fit:contain}.gallery-detail-meta{display:flex;justify-content:space-between;padding:13px 1px;color:var(--gallery-muted);font:500 10px "Avenir Next",sans-serif}.gallery-detail-meta p{margin:0}.gallery-detail-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.gallery-detail-actions button{min-height:58px;border:1px solid var(--gallery-line);background:transparent;color:var(--gallery-ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font:700 9px "Avenir Next",sans-serif}.gallery-detail-actions .danger{color:#8e2f20}
@media(min-width:760px){.gallery-scroll{padding-left:28px;padding-right:28px}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.gallery-latest-image img{max-height:720px}.gallery-topbar{padding-left:max(28px,calc((100vw - 760px)/2));padding-right:max(28px,calc((100vw - 760px)/2))}}
@media(max-width:430px){body:not(.camera-mode):not(.detail-mode):not(.gallery-open){padding-bottom:92px}.gallery-topbar{height:68px;padding-left:17px;padding-right:15px}.gallery-topbar h1{font-size:25px}.gallery-scroll{padding-left:14px;padding-right:14px}.gallery-progress-card{padding:17px}.gallery-latest{margin-bottom:29px}.gallery-latest-image img{max-height:57vh}.gallery-detail article{border-radius:18px 18px 0 0}}
