: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-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:24px 18px calc(52px + env(safe-area-inset-bottom))}
.gallery-collection-intro{position:relative;max-width:720px;margin:0 auto 42px;padding:28px 24px 22px;border:1px solid var(--gallery-line);background:rgba(255,255,255,.22);overflow:hidden}
.gallery-collection-intro:after{content:"";position:absolute;right:-42px;top:-52px;width:150px;height:150px;border:1px solid rgba(185,58,32,.13);border-radius:50%;box-shadow:0 0 0 24px rgba(185,58,32,.025),0 0 0 48px rgba(185,58,32,.018);pointer-events:none}
.gallery-collection-count{display:flex;align-items:baseline;gap:7px;margin-bottom:24px}.gallery-collection-count strong{font:600 48px/.9 "Bodoni Moda",Georgia,serif;letter-spacing:-.04em}.gallery-collection-count span{color:var(--gallery-muted);font:500 15px/1 "Avenir Next",sans-serif}
.gallery-collection-copy{position:relative;z-index:1}.gallery-collection-copy>span{display:block;margin-bottom:8px;color:var(--gallery-red);font:700 8px/1 "Avenir Next",sans-serif;letter-spacing:.22em}.gallery-collection-copy h2{margin:0;color:var(--gallery-ink);font:500 22px/1.25 "Bodoni Moda",Georgia,serif;letter-spacing:-.015em}
.gallery-progress-track{height:2px!important;margin:24px 0 0;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-section{max-width:720px;margin:0 auto 42px}.gallery-section-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid var(--gallery-line)}.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 10px "Avenir Next",sans-serif;letter-spacing:.05em;text-transform:uppercase}
.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 14px;align-items:start}.gallery-art-card{min-width:0;padding:0;border:0;background:transparent;text-align:left;color:inherit;cursor:pointer}.gallery-art-frame{position:relative;display:block;aspect-ratio:1080/1536;padding:7px;box-sizing:border-box;background:#d7cdbb;border:1px solid rgba(23,23,20,.16);box-shadow:0 8px 20px rgba(37,29,19,.1),0 1px 2px rgba(37,29,19,.12);transition:transform .28s ease,box-shadow .28s ease}.gallery-art-mat{width:100%;height:100%;padding:6px;box-sizing:border-box;display:grid;place-items:center;background:#f8f5ed;border:1px solid rgba(23,23,20,.08)}.gallery-art-mat img{width:100%;height:100%;display:block;object-fit:contain;background:#e3dac9}.gallery-art-card:active .gallery-art-frame{transform:scale(.985);box-shadow:0 4px 10px rgba(37,29,19,.09)}
.gallery-art-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;align-items:baseline;padding:11px 1px 0}.gallery-catalog-number{grid-column:1/-1;display:block;margin-bottom:5px;color:var(--gallery-red);font:700 7px/1 "Avenir Next",sans-serif;letter-spacing:.2em}.gallery-art-copy strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 15px/1.2 "Bodoni Moda",serif}.gallery-art-copy small{color:var(--gallery-muted);white-space:nowrap;font:500 8px/1 "Avenir Next",sans-serif;text-transform:uppercase;letter-spacing:.03em}
.gallery-empty{max-width:720px;margin:8px auto 44px;padding:48px 24px;text-align:center;border:1px solid var(--gallery-line);background:rgba(255,255,255,.16)}.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,.67);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-frame{padding:9px;background:#d7cdbb;border:1px solid rgba(23,23,20,.15);box-shadow:0 12px 28px rgba(37,29,19,.14)}.gallery-detail-image{padding:8px;background:#f8f5ed;border:1px solid rgba(23,23,20,.08)}.gallery-detail-image img{width:100%;max-height:58vh;display:block;object-fit:contain;background:#e3dac9}.gallery-detail-meta{display:flex;justify-content:space-between;padding:14px 1px;color:var(--gallery-muted);font:500 9px "Avenir Next",sans-serif;text-transform:uppercase;letter-spacing:.03em}.gallery-detail-meta p{margin:0}.gallery-detail-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.gallery-detail-actions button{min-height:54px;border:1px solid var(--gallery-line);background:transparent;color:var(--gallery-ink);display:flex;align-items:center;justify-content:center;gap:8px;padding:0 17px;font:700 9px "Avenir Next",sans-serif;letter-spacing:.03em}.gallery-detail-actions .share-primary{background:var(--signal,#e94727);border-color:var(--signal,#e94727);color:#fff}.gallery-detail-actions .share-primary:active{background:var(--signal-dark,#b92f18);border-color:var(--signal-dark,#b92f18)}.gallery-detail-actions .danger{color:#8e2f20;padding-left:14px;padding-right:14px}.gallery-detail-actions .danger span{display:none}
@media(hover:hover){.gallery-art-card:hover .gallery-art-frame{transform:translateY(-3px);box-shadow:0 13px 28px rgba(37,29,19,.14),0 1px 2px rgba(37,29,19,.12)}}
@media(min-width:760px){.gallery-scroll{padding-left:28px;padding-right:28px}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:34px 22px}.gallery-topbar{padding-left:max(28px,calc((100vw - 760px)/2));padding-right:max(28px,calc((100vw - 760px)/2))}.gallery-collection-intro{padding:34px 30px 26px}.gallery-collection-copy h2{font-size:26px}}
@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:18px 14px calc(44px + env(safe-area-inset-bottom))}.gallery-collection-intro{margin-bottom:34px;padding:23px 18px 19px}.gallery-collection-count{margin-bottom:20px}.gallery-collection-count strong{font-size:42px}.gallery-collection-copy h2{font-size:20px}.gallery-grid{gap:24px 10px}.gallery-art-frame{padding:5px}.gallery-art-mat{padding:4px}.gallery-art-copy{grid-template-columns:1fr;padding-top:9px}.gallery-art-copy small{margin-top:4px}.gallery-detail article{border-radius:18px 18px 0 0}.gallery-detail-actions{grid-template-columns:minmax(0,1fr) 50px}.gallery-detail-actions .danger{padding:0}}

/* V66 — simple map heading, quiet empty gallery and clear copy confirmation. */
html.capture-page-open,
body.capture-page-open{overflow:hidden!important}

/* Home: one short heading followed by the Kyoto viewpoint map. */
#root .locations-section,
#root .site-footer{display:none!important}
.overview-map-section{
  width:min(100%,980px)!important;
  min-height:0!important;
  margin:0 auto!important;
  padding:clamp(38px,5vw,62px) clamp(18px,4vw,42px) calc(112px + env(safe-area-inset-bottom))!important;
  display:block!important;
  color:var(--gallery-ink)!important;
  background:#f3eee3!important;
  border:0!important;
}
.overview-map-copy{display:block!important;min-width:0!important;padding:0!important;margin:0 0 18px!important}
.overview-map-copy h2{margin:0!important;font:600 clamp(29px,4vw,46px)/1 "Bodoni Moda",Georgia,serif!important;letter-spacing:-.035em!important}
.overview-map-wrap{width:100%!important;min-width:0!important;padding:9px!important;background:#d7cdbb!important;border:1px solid rgba(23,23,20,.16)!important;box-shadow:0 16px 36px rgba(37,29,19,.13)!important}
#overview-map{width:100%!important;min-height:clamp(340px,50dvh,500px)!important;border:6px solid #f8f5ed!important;background:#ded5c5!important}

/* Copying a recovery code confirms success directly on the button. */
.recovery-card .paywall-buy.is-copied{background:#236b49!important}
.recovery-card .paywall-buy.copy-failed{background:#9b3025!important}

/* Two-action navigation: Capture and Gallery. */
.ukiyoe-bottom-nav-two{
  width:min(330px,calc(100vw - 34px));
  grid-template-columns:1fr 1fr;
}
.ukiyoe-bottom-nav-two b{right:22%}

/* Dedicated capture selection page. */
.ukiyoe-capture-page{
  position:fixed;
  z-index:190;
  inset:0;
  overflow:hidden;
  color:var(--gallery-ink);
  background:var(--gallery-paper);
}
.capture-page-shell{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}
.capture-page-header{
  min-height:76px;
  padding:calc(10px + env(safe-area-inset-top)) 16px 10px;
  display:grid;
  grid-template-columns:48px minmax(0,1fr) 48px;
  align-items:end;
  gap:10px;
  border-bottom:1px solid var(--gallery-line);
  background:rgba(243,238,227,.96);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}
.capture-page-header>button{
  width:44px;
  height:44px;
  border:1px solid var(--gallery-line);
  border-radius:50%;
  background:transparent;
  display:grid;
  place-items:center;
}
.capture-page-header>div{text-align:center;min-width:0}
.capture-page-header span{
  display:block;
  margin-bottom:5px;
  color:var(--gallery-red);
  font:700 8px/1 "Avenir Next","Helvetica Neue",sans-serif;
  letter-spacing:.22em;
}
.capture-page-header h1{
  margin:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font:600 clamp(24px,6vw,32px)/1 "Bodoni Moda",Georgia,serif;
  letter-spacing:-.025em;
}
.capture-page-header>i{display:block;width:44px;height:44px}
.capture-page-scroll{
  overflow:auto;
  -webkit-overflow-scrolling:touch;
  padding:22px 16px calc(36px + env(safe-area-inset-bottom));
}
.capture-page-intro{
  max-width:920px;
  margin:0 auto 20px;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:20px;
  padding-bottom:14px;
  border-bottom:1px solid var(--gallery-line);
}
.capture-page-intro p{margin:0;color:var(--gallery-muted);font:500 13px/1.5 "Avenir Next","Helvetica Neue",sans-serif}
.capture-page-intro small{flex:none;color:var(--gallery-red);font:700 8px/1 "Avenir Next","Helvetica Neue",sans-serif;letter-spacing:.18em}
.capture-location-grid{
  max-width:920px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.capture-location-card{
  min-width:0;
  padding:0;
  overflow:hidden;
  border:1px solid rgba(23,23,20,.13);
  background:#fffaf0;
  text-align:left;
  cursor:pointer;
  box-shadow:0 7px 20px rgba(37,29,19,.08);
}
.capture-location-card .location-card-image{
  position:relative;
  aspect-ratio:1.38;
  overflow:hidden;
  background:#d5cbbc;
}
.capture-location-card .location-card-image>span,
.capture-location-card .location-card-image img{
  width:100%!important;
  height:100%!important;
}
.capture-location-card .location-card-image img{object-fit:cover!important;transition:transform .35s ease}
.capture-location-card:active .location-card-image img{transform:scale(1.025)}
.capture-location-card .location-card-copy{min-height:0!important;padding:15px!important}
.capture-location-card .location-card-copy>div{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:14px}
.capture-location-card .location-card-copy>div>span{color:var(--gallery-red);font:800 8px/1 "Avenir Next","Helvetica Neue",sans-serif;letter-spacing:.16em}
.capture-location-card .location-card-copy>div>small{color:#164b82;font:700 9px/1 "Avenir Next","Helvetica Neue",sans-serif}
.capture-location-card .location-card-copy h3{margin:9px 0 0!important;font:600 clamp(20px,4.8vw,28px)/1.05 "Bodoni Moda",Georgia,serif!important;letter-spacing:-.035em!important}
.capture-location-card .location-card-copy h3 small{display:block;margin-top:5px;color:#767067;font:400 11px/1.2 "Bodoni Moda",Georgia,serif;letter-spacing:.03em}
.capture-location-card.is-locked .location-card-image img{filter:saturate(.45) brightness(.67)}
.capture-location-card .location-lock{position:absolute!important;inset:0!important;z-index:2!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;color:#fff!important;text-shadow:0 1px 14px rgba(0,0,0,.55)!important;font:800 9px/1 "Avenir Next","Helvetica Neue",sans-serif!important;letter-spacing:.12em!important}

/* Each location becomes its own gallery chapter. */
.gallery-location-group{margin-bottom:52px}
.gallery-location-group .gallery-section-heading h2{max-width:70vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gallery-location-group+.gallery-location-group{padding-top:4px}

@media(hover:hover){
  .capture-location-card:hover .location-card-image img{transform:scale(1.035)}
}

@media(min-width:760px){
  .capture-page-header{padding-left:max(24px,calc((100vw - 980px)/2));padding-right:max(24px,calc((100vw - 980px)/2))}
  .capture-page-scroll{padding-left:28px;padding-right:28px}
  .capture-location-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
  .capture-location-card .location-card-copy{padding:18px!important}
}

@media(max-width:430px){
  body:not(.camera-mode):not(.detail-mode):not(.gallery-open):not(.capture-page-open){padding-bottom:92px}
  .overview-map-section{padding:34px 16px calc(104px + env(safe-area-inset-bottom))!important}
  .overview-map-copy{margin-bottom:14px!important;text-align:left!important}
  .overview-map-copy h2{font-size:clamp(28px,8.5vw,38px)!important}
  .overview-map-wrap{padding:7px!important}
  #overview-map{min-height:330px!important;border-width:5px!important}
  .capture-page-header{min-height:68px;padding-left:12px;padding-right:12px}
  .capture-page-scroll{padding:17px 12px calc(30px + env(safe-area-inset-bottom))}
  .capture-page-intro{align-items:flex-start;flex-direction:column;gap:7px;margin-bottom:14px;padding:0 2px 12px}
  .capture-location-grid{gap:10px}
  .capture-location-card .location-card-copy{padding:12px!important}
  .capture-location-card .location-card-copy h3{font-size:19px!important}
  .capture-location-card .location-card-copy h3 small{font-size:10px}
  .gallery-location-group{margin-bottom:42px}
}
#root~.site-legal-footer{display:none!important}


/* V68 — balanced map frame and restored Camera / Map choice flow. */
.overview-map-wrap{
  min-height:0!important;
  height:auto!important;
  padding:8px!important;
}
#overview-map{
  display:block!important;
  height:clamp(330px,48vw,470px)!important;
  min-height:0!important;
}
@media(max-width:430px){
  .overview-map-section{
    padding-top:30px!important;
    padding-left:16px!important;
    padding-right:16px!important;
  }
  .overview-map-copy{margin-bottom:15px!important}
  .overview-map-wrap{padding:7px!important}
  #overview-map{
    height:clamp(320px,82vw,370px)!important;
    min-height:0!important;
  }
}


/* V69 — one free artwork, quiet saving, concise capture UI. */
.gallery-saved-note{display:none!important}
.capture-page-intro{justify-content:flex-start!important;border-bottom:0!important;padding-bottom:2px!important;margin-bottom:14px!important}
.capture-page-intro p,.capture-page-intro small{display:none!important}
.capture-page-intro strong{display:inline-flex;align-items:center;min-height:28px;padding:0 11px;border-radius:999px;background:#fffaf0;border:1px solid rgba(23,23,20,.14);color:#e94727;font:800 9px/1 "Avenir Next","Helvetica Neue",sans-serif;letter-spacing:.12em;text-transform:uppercase}
.camera-controls-minimal,.capture-preview-actions{position:relative!important}
.camera-gallery-shortcut{position:absolute!important;right:12px!important;bottom:calc(9px + env(safe-area-inset-bottom))!important;z-index:12!important;width:54px!important;height:50px!important;padding:4px 2px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:3px!important;border:0!important;border-radius:13px!important;background:rgba(20,19,16,.88)!important;color:#fff!important;box-shadow:0 5px 16px rgba(0,0,0,.24)!important;backdrop-filter:blur(8px)!important;-webkit-backdrop-filter:blur(8px)!important;font:700 8px/1 "Avenir Next","Helvetica Neue",sans-serif!important;letter-spacing:.02em!important}
.camera-gallery-shortcut svg{display:block!important}
.paywall-card>p:not(.eyebrow){max-width:290px!important;margin-left:auto!important;margin-right:auto!important}


/* V70 — concise gallery and reliable camera-to-gallery transition. */
.ukiyoe-gallery-overlay{z-index:1200!important}
.gallery-collection-intro{padding:22px 22px 18px!important;margin-bottom:34px!important}
.gallery-collection-count{margin-bottom:16px!important}
.gallery-collection-copy{display:none!important}
@media(max-width:430px){
  .gallery-collection-intro{padding:19px 18px 16px!important;margin-bottom:28px!important}
  .gallery-collection-count{margin-bottom:14px!important}
}
