/* Nagano: portal narrative and readable typography, shared by home and booking. */
:root{--muted:#c0c1b5;--accent-text:#dfa480}
body{font-size:16px;line-height:1.6}
.nav{font-size:14px;gap:24px}.nav a{line-height:1.5}
.header-cta{font-size:14px;gap:22px;white-space:nowrap}
.eyebrow,.hero-top .eyebrow,.booking-intro .eyebrow,.admin-title .eyebrow{font-size:12px;letter-spacing:1.4px;line-height:1.7}
.hero-edition,.hero-kicker,.hero-top,.hero-bottom,.section-meta,.image-foot{font-size:12px;letter-spacing:1.25px;line-height:1.7}
.hero-kicker{color:var(--accent-text)}
.hero-copy>p{font-size:18px;line-height:1.8;color:var(--muted);max-width:37ch;margin:28px 0}
.hero h1{line-height:1.02}
.button,.text-link{font-size:14px;line-height:1.5}
.button{min-height:54px;padding:17px 24px}
.hero-actions .button{gap:20px}
.text-link{gap:24px;min-height:44px}
.hero-scroll{font-size:12px;letter-spacing:1px}
.photo-index,.visual-note p{font-size:12px;line-height:1.6}
.round-stamp{width:164px;height:164px;gap:6px}
.round-stamp>span,.round-stamp small{font-size:11px;letter-spacing:.7px}
.round-stamp b{font-size:19px}.round-stamp strong{font-size:32px}
.section-meta{font-size:12px}.section-meta>span{max-width:48%}
.experience-copy p,.section-intro>p,.festival-information>p:not(.cash),.agenda-content p,.delivery-item p,.vip-grid p,.visit-info>p{font-size:16px;line-height:1.8}
.experience-copy p{max-width:44ch}.section-intro>p{max-width:36ch}
.portal-emblem{display:block;width:84px;height:auto;margin-bottom:25px}
.experience h2{font-size:clamp(48px,5vw,74px)}
.experience-copy .text-link{max-width:100%;color:var(--paper)}
.festivals .section-meta,.festival-information>p:not(.cash),.section-intro>p,.cash,.fineprint{color:#55594d}
.festivals em{color:#975b3c}
.festival-information>.eyebrow{font-size:12px;color:#885235}
.festival-selector small{font-size:12px}
.festival-selector button{color:#5c6054}
.festival-selector button[aria-selected=true]{color:var(--paper)}
.price>small{font-size:12px}.cash{font-size:16px}
.festival-promo{font-size:13px;letter-spacing:.3px}
.festival-image>span{font-size:12px;line-height:1.6}
.fineprint{font-size:14px;line-height:1.8;max-width:900px}
.agenda-list summary small{font-size:12px;color:var(--accent-text)}
.agenda-content p{color:var(--muted);max-width:43ch}
.agenda-content p.small,.promo-price small{font-size:14px;line-height:1.75}
.vip-grid p.vip-note,.birthday-benefits p,.birthday-note,.delivery-note{font-size:14px;line-height:1.8;color:var(--muted)}
.birthday-benefits small{font-size:12px;letter-spacing:.6px;color:var(--accent-text)}
.vip-sign>span{font-size:11px;color:var(--accent-text);letter-spacing:1.2px}
.vip-sign>small{font-size:11px;max-width:230px;letter-spacing:.6px}
.visit-info>.eyebrow{font-size:12px;color:var(--accent-text)}
.schedule p,.visit .schedule b{font-size:15px;line-height:1.7}
.phone{font-size:16px;display:inline-block;padding-block:8px}
.footer-top>span,.booking-page .footer-top>span{font-size:12px;line-height:1.7;letter-spacing:1px}
.footer-bottom{font-size:12px;line-height:1.7;letter-spacing:.5px;flex-wrap:wrap}
.motion-toggle{font-size:12px;min-height:44px}

/* Booking and team: readable instructions, inputs and consent on every screen. */
.booking-notice{font-size:14px;letter-spacing:.3px;padding-block:16px}
.booking-intro p{font-size:18px;max-width:52ch;line-height:1.75}
.intro-portal{width:180px;flex:0 0 180px;margin-left:35px;opacity:.8}
.intro-portal img{width:100%;height:auto}
.booking-aside>p,.booking-step>p,.reservation-card p,.access-panel p{font-size:16px;line-height:1.8}
.booking-aside>p{max-width:42ch}
.booking-approved-rules{font-size:15px;line-height:1.95}
.booking-rules b{font-size:16px;font-weight:600}
.booking-rules span{font-size:14px;line-height:1.8}
.booking-rules li:before{font-size:12px;color:var(--accent-text)}
.booking-promo small{font-size:12px;color:var(--accent-text)}
.booking-promo p,.booking-aside .text-link,.booking-card-head>p{font-size:15px}
.booking-page input,.booking-page select,.booking-page textarea{font-size:16px;line-height:1.5;min-height:48px}
.booking-page input[type=checkbox]{min-height:20px;width:20px;height:20px;min-width:20px;margin-top:3px}
.booking-steps{gap:14px;padding-block:25px}
.booking-steps li{min-width:0;flex-direction:column;align-items:flex-start;gap:10px;font-size:12px;line-height:1.6;letter-spacing:.4px;color:var(--muted)}
.booking-steps b{width:32px;height:32px;font-size:12px}
.calendar-head strong{font-size:16px}.calendar-head button{min-width:44px;min-height:44px}
.calendar-week{font-size:12px;color:var(--muted)}
.booking-calendar button{font-size:16px;min-height:36px}
.booking-calendar button:disabled{opacity:.42}
.field-label{font-size:15px;line-height:1.6}.field-label small{font-size:13px}
.field-hint,.booking-slots p,.form-message,.demo-preview,.booking-summary,.demo-explanation,.booking-check,.booking-policy,.privacy-detail,.privacy-detail p{font-size:14px;line-height:1.8}
.booking-slots button{font-size:16px;min-height:48px;padding:12px 18px}
.booking-actions .button{font-size:14px;min-height:52px}
.privacy-detail summary,.mini-button{font-size:15px}
.status-badge{font-size:13px;letter-spacing:.3px}
.admin-tabs button{font-size:15px;min-height:46px}
.admin-summary{font-size:16px}
.settings-grid label,.settings-row>label{font-size:14px;line-height:1.7}
.identity-code{font-size:15px;line-height:1.8}
.admin-title .text-link{font-size:14px}

/* Switch the longer, readable navigation before it competes with the wordmark. */
@media(min-width:721px) and (max-width:1200px){
 .header-cta{margin-left:auto}
 .menu{display:flex;flex-direction:column;justify-content:center;gap:6px;padding:10px;background:none;border:0;min-width:44px;min-height:44px}
 .menu>span{height:1px;width:21px;background:var(--paper);transition:transform .25s}
 .menu[aria-expanded=true]>span:first-child{transform:translateY(3.5px) rotate(45deg)}
 .menu[aria-expanded=true]>span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
 .nav,.booking-page .nav{display:none;position:absolute;top:99px;left:0;right:0;padding:25px 6% 35px;flex-direction:column;gap:3px;background:#20221dfb;border-bottom:1px solid var(--line);font-size:16px}
 .nav.open,.booking-page .nav.open{display:flex}.nav a,.booking-page .nav a{padding:15px 0;font-size:16px}
}
@media(max-width:1000px){
 .booking-grid{grid-template-columns:.75fr 1.25fr;gap:4%}
 .booking-card{padding:28px 24px}
}
@media(max-width:720px){
 .header{gap:10px}.header-cta,.booking-page .header-cta{font-size:12px;line-height:1.5;padding:11px 10px}
 .menu{min-width:44px;min-height:44px;padding:10px;flex:0 0 44px}
 .nav a,.booking-page .nav a{font-size:16px}
 .hero-top .eyebrow{font-size:11px;letter-spacing:1px;line-height:1.75}
 .hero-kicker{font-size:12px;letter-spacing:1.5px;margin-bottom:22px}
 .hero h1{font-size:clamp(52px,14vw,94px);letter-spacing:-1.8px;line-height:1.04}
 .hero-copy>p{font-size:16px;max-width:100%;line-height:1.8}
 .hero-actions{display:grid;grid-template-columns:1fr;gap:12px}
 .hero-actions .button,.hero-copy .button{font-size:15px;padding:16px 22px;gap:20px;width:100%}
 .hero-scroll{position:static;right:auto;bottom:auto;display:inline-flex;font-size:12px;gap:12px;margin-top:22px}
 .hero-visual{margin-top:34px;margin-bottom:40px}
 .photo-index{font-size:11px;letter-spacing:.8px;top:-10px}
 .round-stamp{width:140px;height:140px;right:0;bottom:0;gap:5px}
 .round-stamp>span,.round-stamp small{font-size:10px}.round-stamp b{font-size:17px}.round-stamp strong{font-size:29px}
 .visual-note p{font-size:12px}.visual-note{bottom:-14%}
 .hero-bottom{font-size:11px;letter-spacing:.7px;flex-wrap:wrap;gap:12px}
 .section-meta{font-size:11px;letter-spacing:.8px;line-height:1.8;align-items:flex-start}
 .section-meta>span:last-child{max-width:47%;line-height:1.8}
 .image-foot{font-size:11px;line-height:1.8}
 .experience-copy p,.section-intro>p,.festival-information>p:not(.cash),.agenda-content p,.delivery-item p,.vip-grid p{font-size:16px;line-height:1.8;max-width:100%}
 .text-link{font-size:15px;gap:18px;line-height:1.6}
 .experience-copy .text-link{display:flex}
 .festival-selector button{font-size:26px;padding:20px 7px}.festival-selector small{display:none}
 .price>small{font-size:12px}.cash{font-size:16px}.festival-promo{font-size:13px;letter-spacing:0}
 .festival-image>span{font-size:11px;letter-spacing:1px;left:18px;bottom:18px}
 .fineprint,.birthday-note,.delivery-note,.vip-grid p.vip-note,.birthday-benefits p{font-size:14px}
 .agenda-list summary small,.birthday-benefits small{font-size:12px}
 .schedule p,.visit .schedule b{font-size:14px;line-height:1.7}
 .visit .schedule b{max-width:68%}
 .footer-bottom{font-size:12px;gap:16px;align-items:flex-start}
 .footer-top>span,.booking-page .footer-top>span{font-size:12px}
 .booking-intro .eyebrow,.admin-title .eyebrow{font-size:11px;letter-spacing:1px}
 .booking-intro p{font-size:16px}.intro-portal{display:none}
 .booking-card{padding:26px 18px}
 .booking-page .booking-card-head h2{font-size:38px;line-height:1.1}
 .booking-steps{gap:8px;margin-bottom:26px}.booking-steps li{font-size:11px;letter-spacing:0;line-height:1.65;gap:9px}.booking-steps b{width:30px;height:30px;font-size:12px}
 .booking-notice{font-size:13px;line-height:1.75}
 .booking-actions .button{font-size:14px;padding:15px 18px}
 .booking-check{font-size:14px}.booking-policy{font-size:14px}
 .admin-title .text-link{font-size:13px;white-space:normal;line-height:1.7}
 .admin-tabs button{font-size:14px;padding:11px 13px}
}
@media(max-width:400px){.brand--original{width:138px}.brand-logo{width:138px}.header{gap:8px}}
@media(max-width:350px){.brand--original{width:120px}.brand-logo{width:120px}.header-cta,.booking-page .header-cta{font-size:11px;padding:10px 8px}}

/* The name's Japanese inspiration, within the restaurant's story. */
.origin-note{display:grid;grid-template-columns:1fr 1.15fr;gap:9%;margin-top:100px;padding-top:56px;border-top:1px solid var(--line)}
.origin-heading .eyebrow{color:var(--accent-text);display:block;margin-bottom:22px}
.origin-heading h3{font-family:var(--serif);font-size:clamp(36px,3.7vw,52px);font-weight:400;line-height:1.13;letter-spacing:-1px;margin:0 0 25px}
.origin-place{font-size:11px;letter-spacing:1px;color:var(--muted);line-height:1.8;display:block}
.origin-copy p{font-size:16px;line-height:1.85;color:var(--muted);margin:0 0 20px;max-width:54ch}
.origin-source{display:inline-flex;gap:12px;align-items:center;min-height:44px;font-size:14px;line-height:1.7;color:var(--accent-text);text-decoration:underline;text-underline-offset:5px;text-decoration-color:#dfa48066}
.origin-source:hover{color:var(--paper)}
@media(max-width:720px){.origin-note{grid-template-columns:1fr;gap:28px;margin-top:58px;padding-top:38px}.origin-heading h3{font-size:40px}.origin-copy p{max-width:100%}.origin-source{align-items:flex-start}.origin-place{font-size:11px}}

/* Keep every festival visible instead of relying on a native select popup. */
.festival-choices{border:0;padding:0;margin:24px 0 0;min-width:0}
.festival-choices>legend{padding:0;margin:0 0 12px}
.festival-choices-list{display:grid;gap:10px}
.festival-choice{display:flex;align-items:flex-start;gap:12px;cursor:pointer;border:1px solid var(--line);padding:15px;background:#171816;border-radius:2px;min-width:0}
.booking-page .festival-choice input[type=radio]{width:19px;min-width:19px;height:19px;min-height:19px;margin:4px 0 0;padding:0;accent-color:var(--copper);flex:0 0 19px}
.festival-choice>span{min-width:0}
.festival-choice strong{display:block;font-size:16px;line-height:1.6;font-weight:600;color:var(--paper)}
.festival-choice small{display:block;font-size:14px;line-height:1.75;color:var(--muted);margin-top:3px}
.festival-choice:has(input:checked){border-color:var(--copper);background:#c17d5c12}
.festival-choice:focus-within{outline:2px solid var(--copper);outline-offset:3px}
@media(max-width:720px){.festival-choice{padding:14px 12px}.festival-choice small{font-size:14px}}

/* Original Nagano photography: an editorial montage and unretouched food details. */
.taste-gallery{margin-top:100px;padding-top:52px;border-top:1px solid var(--line)}
.taste-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-bottom:36px}
.taste-heading .eyebrow{color:var(--accent-text);margin-bottom:20px}
.taste-heading h3{font-family:var(--serif);font-size:clamp(38px,4vw,58px);font-weight:400;line-height:1.1;letter-spacing:-1.3px;margin:0}
.taste-heading>p{font-size:16px;line-height:1.8;color:var(--muted);max-width:30ch;margin:0 0 5px}
.taste-grid{display:grid;grid-template-columns:2.2fr 1fr 1fr;gap:20px;align-items:start}
.taste-grid figure{margin:0;min-width:0}
.taste-grid img{display:block;width:100%;height:auto;filter:none;border-radius:2px}
.taste-main img{aspect-ratio:3/2;object-fit:contain;background:#26221e}
.taste-detail img{aspect-ratio:11/16;object-fit:cover}
.taste-fire img{object-position:50% 66%}.taste-sweet img{object-position:50% 72%}
.taste-grid figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:14px;font-size:11px;line-height:1.8;letter-spacing:.8px;color:var(--muted)}
.taste-main figcaption>span:last-child{font-size:12px;letter-spacing:0}
.taste-note{font-size:14px;line-height:1.8;color:var(--muted);margin:24px 0 0;max-width:75ch}
@media(max-width:1000px){.taste-grid{gap:15px;grid-template-columns:2fr 1fr 1fr}.taste-detail img{aspect-ratio:2/3}.taste-main figcaption>span:last-child{display:none}}
@media(max-width:720px){.taste-gallery{margin-top:60px;padding-top:38px}.taste-heading{display:block;margin-bottom:28px}.taste-heading h3{font-size:42px}.taste-heading>p{margin-top:22px;max-width:32ch}.taste-grid{grid-template-columns:1fr 1fr;gap:26px 16px}.taste-main{grid-column:1/-1}.taste-main img{aspect-ratio:3/2}.taste-detail img{aspect-ratio:3/4}.taste-grid figcaption{font-size:11px;letter-spacing:.4px}.taste-main figcaption>span:last-child{display:block}.taste-note{font-size:14px}}


/* Large atmospheric backdrop. Fixed masks fade all four edges independently of motion. */
#booking-main:has(.reservation-atmosphere){position:relative;isolation:isolate;overflow:clip}
.reservation-atmosphere{position:absolute;z-index:-1;pointer-events:none;right:-3vw;top:65px;width:clamp(700px,70vw,1120px);height:1060px;opacity:.76}
.atmosphere-viewport{position:absolute;inset:0;overflow:hidden;mask-image:linear-gradient(90deg,transparent 0%,#000 18%,#000 73%,transparent 100%),linear-gradient(180deg,transparent 0%,#000 12%,#000 65%,transparent 98%);mask-composite:intersect;-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 18%,#000 73%,transparent 100%),linear-gradient(180deg,transparent 0%,#000 12%,#000 65%,transparent 98%);-webkit-mask-composite:source-in}
.atmosphere-photo{position:absolute;left:-40px;top:-40px;width:calc(100% + 80px);height:calc(100% + 80px);max-width:none;object-fit:cover;object-position:54% 48%;filter:saturate(.72) brightness(.82);transform:perspective(1200px) scale(1.06);transition:transform 1s cubic-bezier(.16,1,.3,1);transform-origin:55% 44%}
.reservation-atmosphere:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#171816 0%,#171816b3 22%,transparent 66%)}
.booking-intro:has(+.booking-grid){position:relative;min-height:560px;padding-top:100px;padding-bottom:105px;align-items:center}
.booking-intro>div:first-child{max-width:680px}
.booking-intro h1{max-width:14ch}
.booking-intro p{color:#d4d2c8;text-shadow:0 1px 14px #171816}
.booking-grid{position:relative}
@media(min-width:721px) and (max-width:1000px){.reservation-atmosphere{right:-200px;width:800px;opacity:.62}.booking-intro:has(+.booking-grid){min-height:510px}.booking-intro>div:first-child{max-width:600px}}
@media(max-width:720px){.reservation-atmosphere{width:640px;height:820px;right:-160px;top:80px;opacity:.47}.reservation-atmosphere:after{background:linear-gradient(90deg,#171816 0%,#17181685 32%,transparent 78%)}.booking-intro:has(+.booking-grid){display:flex;min-height:390px;padding-top:60px;padding-bottom:60px}.booking-intro>div:first-child{width:100%}.booking-intro p{color:#d4d2c8}.atmosphere-photo{transform:scale(1.06);transition:none}}
@media(prefers-reduced-motion:reduce){.atmosphere-photo{transform:scale(1.06)!important;transition:none}}

/* Edited still photograph with optional fountain sound. */
.fountain-controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:26px}
.fountain-controls button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:10px 15px;border:1px solid #d1bb9859;border-radius:2px;background:#171816b8;color:#eee9dd;font-size:13px;line-height:1.5;cursor:pointer}
.fountain-controls button:hover,.fountain-controls button[aria-pressed=true]{border-color:#dfa480;background:#382c22d9}
.booking-intro .fountain-feedback{font-size:12px;line-height:1.7;color:#d4c6b4;min-height:0;margin:10px 0 0;max-width:42ch}
.booking-intro .fountain-feedback:empty{display:none}
@media(max-width:720px){.fountain-controls{margin-top:24px;gap:6px}.fountain-controls button{font-size:12px;padding:10px 12px}.booking-intro:has(+.booking-grid){min-height:440px}}
