:root{--bg:#f5f3ed;--paper:#fff;--ink:#263126;--muted:#657064;--line:#d9ddd4;--accent:#406244;--accent2:#203c27;--soft:#e9efe7;--warn:#9a5a16;--danger:#a13f37;--shadow:0 10px 30px rgba(34,55,37,.08)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP","Yu Gothic",sans-serif;line-height:1.65}.hero{position:relative;background:linear-gradient(135deg,#1f3b27,#507254);background-size:cover;background-position:center;color:#fff;padding:48px 20px 42px}.hero__inner{max-width:1040px;margin:auto}.brand-mark{font-size:12px;letter-spacing:.28em;opacity:.8}.hero h1{font-size:clamp(28px,4.2vw,44px);line-height:1.18;margin:8px 0;text-shadow:0 2px 12px rgba(0,0,0,.22)}.hero h1 span{font-weight:500;font-size:.62em}.hero p{margin:0;opacity:.9}.container{max-width:1040px;margin:24px auto 60px;padding:0 18px}.notice{background:#fff8df;border:1px solid #e9d69a;padding:13px 16px;border-radius:12px;margin-bottom:18px;box-shadow:var(--shadow)}.tabs{display:flex;gap:8px;margin-bottom:18px}.tab{flex:1;border:0;border-radius:12px;padding:14px;background:#e1e4dd;color:#425043;font-weight:700;cursor:pointer}.tab.is-active{background:var(--accent2);color:#fff}.tab-panel{display:none}.tab-panel.is-active{display:block}.step-card{background:var(--paper);border-radius:18px;padding:26px;margin:0 0 18px;box-shadow:var(--shadow)}.step-title{display:flex;gap:14px;align-items:flex-start;margin-bottom:20px}.step-title>span{display:grid;place-items:center;min-width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;font-weight:800}.step-title h2,.step-card h2{margin:0 0 3px}.step-title p,.step-card>p{margin:0;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,300px))}.guest-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:8px 0 18px}label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:650}input,select,textarea{width:100%;border:1px solid #c9d0c5;border-radius:10px;padding:11px 12px;background:#fff;font:inherit;color:inherit}input:focus,select:focus,textarea:focus{outline:2px solid #9fb69f;border-color:#779477}.required{font-size:11px;color:#fff;background:var(--danger);padding:1px 5px;border-radius:4px}.btn{border:1px solid #9da99d;border-radius:10px;background:#fff;padding:11px 18px;font:inherit;font-weight:750;cursor:pointer}.btn.primary{background:var(--accent2);border-color:var(--accent2);color:#fff}.btn.large{width:100%;font-size:18px;padding:15px}.btn:disabled{opacity:.45;cursor:not-allowed}.form-message{font-weight:700;color:var(--danger);min-height:1em}.hidden{display:none!important}.site-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.site-card{border:2px solid transparent;border-radius:16px;overflow:hidden;background:#f9faf7;cursor:pointer;transition:.15s}.site-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.site-card.is-selected{border-color:var(--accent);background:var(--soft)}.site-photo{height:190px;background:#dde4da;display:flex;align-items:center;justify-content:center;color:#657064;overflow:hidden}.site-photo img{width:100%;height:100%;object-fit:cover}.site-body{padding:15px}.site-body h3{margin:0 0 5px}.site-meta{color:var(--muted);font-size:13px}.site-price{font-size:20px;font-weight:800;margin-top:8px}.option-box{background:#f7f9f5;border:1px solid var(--line);padding:16px;border-radius:14px;margin-bottom:15px}.option-box h3{margin-top:0}.option-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.check-card{flex-direction:row;align-items:flex-start;background:#fff;border:1px solid var(--line);padding:12px;border-radius:10px}.check-card input{width:auto;margin-top:5px}.check-card span{display:flex;flex-direction:column}.check-card b{color:var(--accent2)}.check-card small{font-weight:500;color:var(--muted)}.deadline-note{border-left:4px solid var(--warn);background:#fff5e7;padding:10px 13px;margin:10px 0 18px}.item-section{margin-top:18px}.item-section h3{border-bottom:2px solid var(--soft);padding-bottom:7px}.item-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.item-card{border:1px solid var(--line);background:#fff;border-radius:12px;padding:11px}.item-card .name{font-weight:750;min-height:48px}.item-card .price{font-weight:800;color:var(--accent2)}.item-card input{margin-top:7px}.policy{background:#faf9f6;border:1px solid #d9d2c3;border-radius:14px;padding:18px;margin:20px 0}.policy h3{margin-top:0}.policy table{border-collapse:collapse;width:min(430px,100%);margin:10px 0}.policy th,.policy td{border:1px solid #ccc7bb;padding:7px 10px;text-align:left}.agree{flex-direction:row;align-items:center;font-size:15px;background:#fff;padding:12px;border-radius:9px}.agree input{width:auto}.summary-card{background:var(--accent2);color:#fff;border-radius:14px;padding:18px;margin:18px 0}.summary-card>div{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid rgba(255,255,255,.18);padding:6px 0}.summary-card .total{font-size:24px}.summary-card small{display:block;opacity:.75;margin-top:8px}.success{text-align:center;background:#fff;border-radius:18px;padding:40px 20px;box-shadow:var(--shadow)}.success-icon{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;margin:auto;font-size:32px}.booking-code{font-size:clamp(28px,6vw,44px);font-weight:900;letter-spacing:.08em;margin:16px}.success-total{font-size:20px;margin-bottom:18px}.manage-card{background:#fff;border-radius:18px;padding:24px;margin-bottom:18px;box-shadow:var(--shadow)}.manage-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.status{font-size:12px;font-weight:800;border-radius:99px;padding:4px 10px;background:var(--soft)}.status.cancelled{background:#f6dfdc;color:#7a312c}.details{display:grid;grid-template-columns:repeat(2,1fr);gap:7px 20px;margin:15px 0}.details div{display:flex;justify-content:space-between;border-bottom:1px dotted #ccc;padding:5px}.danger{background:var(--danger);border-color:var(--danger);color:#fff}footer{text-align:center;padding:28px;color:var(--muted)}footer a{color:inherit;font-size:12px}.calendar-legend{font-size:12px;color:var(--muted)}
@media(max-width:720px){.container{padding:0 10px}.step-card{padding:18px 14px}.form-grid,.guest-grid,.site-grid,.option-grid,.item-grid,.details{grid-template-columns:1fr}.form-grid.compact{grid-template-columns:1fr}.hero{padding-top:36px}.site-photo{height:170px}.tabs{position:sticky;top:0;z-index:5;background:var(--bg);padding:8px 0}}
.public-calendar-wrap{margin:14px 0 20px;padding:14px;background:#f8faf6;border:1px solid var(--line);border-radius:14px}.calendar-legend{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.legend{padding:3px 8px;border-radius:99px;border:1px solid #d2d7ce;font-weight:700}.legend.normal{background:#fff}.legend.preholiday{background:#f9f3df}.legend.sun_holiday{background:#f1eefb}.legend.special{background:#fff2eb}.legend.closed{background:#e8e8e8;color:#777}.public-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.public-weekday{text-align:center;font-size:12px;font-weight:800;color:#5e685d;padding:4px}.public-day{min-height:72px;border:1px solid #d5dbd1;border-radius:9px;padding:6px;background:#fff;text-align:left;display:flex;flex-direction:column;gap:1px;cursor:pointer}.public-day strong{font-size:15px}.public-day small{font-size:10px;color:#596458}.public-day em{font-size:9px;font-style:normal;color:#7c5524;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.public-day.preholiday{background:#f9f3df}.public-day.sun_holiday{background:#f1eefb}.public-day.special{background:#fff2eb}.public-day.closed{background:#ededed;color:#999}.public-day:disabled{cursor:not-allowed;opacity:.65}.public-day.selected{outline:3px solid #507254}.public-day.empty{border:0;background:transparent}.calendar-help{font-size:12px;color:var(--muted);margin:8px 0 0}.site-gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;background:#dde4da;height:190px}.site-gallery img{min-width:100%;height:190px;object-fit:cover;scroll-snap-align:start}.site-photo.placeholder{height:190px}.change-form{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
@media(max-width:720px){.public-calendar-grid{gap:3px}.public-day{min-height:60px;padding:5px}.public-day small{font-size:9px}.site-gallery,.site-gallery img,.site-photo.placeholder{height:170px}}
.contact-actions{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 18px}.contact-link{display:inline-flex;align-items:center;gap:8px;background:#fff;color:var(--accent2);border:1px solid #bdc9ba;border-radius:11px;padding:11px 15px;font-weight:800;text-decoration:none;box-shadow:var(--shadow)}.contact-link:hover{background:var(--soft)}
.payment-box{background:#f4f7f2;border:1px solid var(--line);border-radius:14px;padding:16px;margin:18px 0}.payment-box h3{margin:0 0 10px}.payment-options{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.small-muted{font-size:12px;color:var(--muted)}
.item-photo{width:100%;height:120px;object-fit:cover;border-radius:9px;margin-bottom:8px;background:#eef1eb}.item-card:has(.item-photo) .name{min-height:0}.item-card small{color:var(--muted)}
@media(max-width:720px){.payment-options{grid-template-columns:1fr}.contact-actions{display:grid}.contact-link{width:100%}.item-photo{height:160px}}

.lookup-actions{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 10px}.lookup-actions .btn{padding:8px 12px;font-size:13px}.lookup-message{margin:0 0 12px;min-height:1.4em;font-size:13px;font-weight:700;color:var(--muted)}.lookup-message.error{color:var(--danger)}.lookup-message.ok{color:var(--accent2)}

/* v3.2 テントサウナ */
.check-card.is-disabled{opacity:.48;background:#f2f2f2}.sauna-public-photo{margin:0 0 18px}.sauna-public-photo img{display:block;width:100%;max-height:360px;object-fit:cover;border-radius:14px}

/* v3.3 キャンプ＋テントサウナ同時予約 */
.compact-summary{margin-top:14px}.option-box h4{margin:14px 0 8px}

/* v3.4 予約画面の管理写真 */
.reservation-main-photo{width:100%;height:clamp(220px,34vw,360px);margin:0 0 18px;border-radius:16px;overflow:hidden;background:#eef1eb}.reservation-main-photo img{display:block;width:100%;height:100%;object-fit:cover}.hero.has-photo{background-position:center;background-size:cover}.admin-public-photo-preview{width:100%;max-width:420px;height:180px;object-fit:cover;border-radius:10px;background:#eef1eb;margin:6px 0 10px}
@media(max-width:720px){.reservation-main-photo{height:220px}.hero h1{font-size:clamp(26px,8vw,36px)}}

.calendar-price-mode{margin:0 0 10px;font-size:14px;color:#314538}.calendar-price-mode strong{font-weight:800}

.tebura-bbq-note{margin:12px 0 16px;padding:14px 16px;border:1px solid #d7dfd2;border-radius:12px;background:#f8faf6;line-height:1.7}
.tebura-bbq-note strong{display:block;margin-bottom:6px}
.tebura-bbq-note p{margin:0}

.public-announcements{margin:0 0 18px;padding-top:24px;min-width:0}.announcements-heading{margin:0 0 10px;font-size:22px;line-height:1.35}.public-announcement{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:16px;background:#fff;border:1px solid #d8ddd5;border-radius:16px;padding:14px;margin:12px 0;box-shadow:var(--shadow);width:100%;max-width:100%;overflow:hidden}.public-announcement img{display:block;width:100%;max-width:100%;max-height:210px;object-fit:cover;border-radius:12px}.public-announcement-body{min-width:0;max-width:100%;overflow:hidden}.public-announcement-body h3{margin:0 0 8px;font-size:21px;line-height:1.45;white-space:normal;overflow-wrap:anywhere;word-break:normal}.public-announcement-body p{margin:0;line-height:1.8;white-space:normal;overflow-wrap:anywhere;word-break:normal}.public-announcement.is-emphasis{border:2px solid #d59832;background:#fff8e8}.public-announcement.is-emphasis h3{font-size:24px;color:#8a4f09}@media(max-width:900px){.public-announcement{grid-template-columns:1fr}.public-announcement img{max-height:none;aspect-ratio:16/9}.public-announcements{padding-top:26px}}

.site-standard-note{margin:8px 0 0;font-weight:700;color:#35563e;line-height:1.6}

.site-parking-note{margin:4px 0 0;font-weight:700;color:#35563e}
.site-vehicle-note{margin:2px 0 8px;font-weight:700;color:#35563e;line-height:1.5}
.operation-nav-launch{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0 18px}.operation-nav-launch span{font-size:14px;color:var(--muted)}
.operation-nav-btn{font-weight:800;border-color:#355f43;background:#eef6ef}
.operation-nav-modal{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:18px}.operation-nav-modal.hidden{display:none}
.operation-nav-panel{position:relative;width:min(720px,100%);max-height:88vh;overflow:auto;background:#fff;border-radius:18px;padding:24px;box-shadow:0 18px 60px rgba(0,0,0,.25)}
.operation-nav-close{position:absolute;right:14px;top:10px;border:0;background:transparent;font-size:32px;cursor:pointer}.operation-nav-panel h2{margin:0 0 8px}
.operation-nav-steps{padding-left:22px}.operation-nav-steps li{margin:14px 0;padding:12px;border:1px solid #d8ddd5;border-radius:12px}.operation-nav-steps strong{display:block;font-size:17px}.operation-nav-steps span{display:block;margin:5px 0 9px;line-height:1.6;color:#5f6d62}.operation-nav-hint{font-weight:700;color:#9b5a00}
@media(max-width:700px){.operation-nav-panel{padding:20px 14px}.operation-nav-launch{align-items:flex-start;flex-direction:column}}

.operation-nav-hint-top{margin:12px 0 8px;padding:10px 12px;border-radius:10px;background:#fff4dd;color:#915300;line-height:1.6}
.nav-guided-target{outline:3px solid #d79a32;outline-offset:4px;transition:outline .2s}
.nav-guidance-message{margin:0 0 14px;padding:12px 14px;border-radius:10px;background:#fff4dd;border:1px solid #e4ba72;color:#7d4900;font-weight:800;line-height:1.6}

.operation-nav-floating{position:fixed;right:18px;bottom:18px;z-index:9999;width:min(390px,calc(100vw - 24px))}
.operation-nav-floating.hidden{display:none}
.operation-nav-floating .operation-nav-panel{position:relative;width:100%;max-height:55vh;overflow:auto;background:#fff;border:1px solid #cad6ca;border-radius:16px;padding:14px;box-shadow:0 14px 42px rgba(0,0,0,.24)}
.operation-nav-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}
.operation-nav-head>div{display:flex;flex-direction:column;gap:2px}
.operation-nav-head strong{font-size:18px}
.operation-nav-head span{font-size:14px;color:#45644d;font-weight:800}
.operation-nav-floating .operation-nav-close{position:static;flex:0 0 auto;border:0;background:#eef3ed;width:36px;height:36px;border-radius:50%;font-size:24px;line-height:1;cursor:pointer}
.operation-nav-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}
.operation-nav-actions .btn{padding:9px 10px;font-size:14px}
.operation-nav-actions .btn.is-current{background:#244f34;color:#fff;border-color:#244f34}
.operation-nav-guide{padding:10px 12px;border-radius:10px;background:#f5f7f2;line-height:1.6;font-size:14px}
@media(max-width:700px){
  .operation-nav-floating{left:12px;right:12px;bottom:12px;width:auto}
  .operation-nav-floating .operation-nav-panel{max-height:48vh}
  .operation-nav-actions{grid-template-columns:1fr 1fr}
}

.finalize-step{scroll-margin-top:18px}
.operation-nav-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
#submitReservation[aria-busy="true"]{cursor:wait;opacity:.78;pointer-events:none}
.submit-spinner{display:inline-block;width:18px;height:18px;margin-left:9px;vertical-align:-3px;border:3px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:submit-spin .8s linear infinite}
.submit-spinner.hidden{display:none}
@keyframes submit-spin{to{transform:rotate(360deg)}}

.calendar-top-controls{grid-template-columns:minmax(180px,1fr) minmax(230px,1fr) minmax(210px,1fr) auto;align-items:end}
.calendar-month-nav{display:flex;gap:8px;align-items:center;padding-bottom:2px}
.calendar-month-nav .btn{white-space:nowrap}
.lodging-tebura-note{background:#f2f7f0;border-color:#b9ccb9}
.operation-cursor-bubble{position:fixed;z-index:10050;max-width:320px;padding:10px 13px;border-radius:12px;background:#173f29;color:#fff;font-size:14px;line-height:1.55;box-shadow:0 8px 28px rgba(0,0,0,.28);pointer-events:none}
.operation-cursor-bubble::before{content:"";position:absolute;left:-7px;top:14px;border-width:7px 7px 7px 0;border-style:solid;border-color:transparent #173f29 transparent transparent}
.operation-cursor-bubble.hidden{display:none}
@media(max-width:980px){.calendar-top-controls{grid-template-columns:1fr 1fr}.calendar-month-nav{grid-column:1/-1}}
@media(max-width:620px){.calendar-top-controls{grid-template-columns:1fr}.calendar-month-nav{grid-column:auto;justify-content:space-between}}

.public-day{touch-action:none;user-select:none}
.public-day.selected-start,.public-day.selected-end{outline:3px solid #214d31;outline-offset:-3px;font-weight:900}
.public-day.in-range{box-shadow:inset 0 0 0 999px rgba(44,93,57,.13)}
.public-day.selected-start::after{content:"IN";display:block;font-size:10px;font-weight:900;color:#214d31}
.public-day.selected-end::after{content:"OUT";display:block;font-size:10px;font-weight:900;color:#214d31}

.operation-nav-floating{display:none!important}
.plan-row{margin-top:8px;grid-template-columns:minmax(220px,360px)}
.calendar-top-controls{grid-template-columns:minmax(180px,1fr) minmax(220px,1fr) minmax(210px,1fr) auto}
@media(max-width:980px){.calendar-top-controls{grid-template-columns:1fr 1fr}.plan-row{grid-template-columns:1fr}}
@media(max-width:620px){.calendar-top-controls{grid-template-columns:1fr}.plan-row{grid-template-columns:1fr}}

.booking-row{margin-bottom:12px}
.booking-row-1,.booking-row-2{grid-template-columns:minmax(240px,1fr) minmax(240px,1fr)}
.booking-row-3{grid-template-columns:minmax(240px,440px) auto;align-items:end}
.booking-row-3 .calendar-month-nav{justify-content:flex-start;padding-bottom:2px}
.operation-guide-bubble{pointer-events:auto;max-width:360px}
.operation-guide-text{font-weight:700;line-height:1.65}
.operation-guide-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}
.operation-guide-next,.operation-guide-close{border:1px solid rgba(255,255,255,.65);border-radius:8px;padding:7px 12px;font-weight:800;cursor:pointer}
.operation-guide-next{background:#fff;color:#173f29}
.operation-guide-close{background:transparent;color:#fff}
@media(max-width:760px){
  .booking-row-1,.booking-row-2,.booking-row-3{grid-template-columns:1fr}
  .booking-row-3 .calendar-month-nav{justify-content:space-between}
}

/* v3.11.4 */
#bookingWindowNotice{margin-top:8px}
.public-day:focus{outline:none}
.public-day:focus-visible{outline:2px dashed #78947f;outline-offset:2px}
/* 黒枠は選択確定後のみ */
.public-day.selected-start,.public-day.selected-end{outline:3px solid #214d31;outline-offset:-3px;font-weight:900}

/* v3.11.5 キャラクター式・自動進行操作ナビ */
.operation-character-guide{
  position:fixed;z-index:10060;width:330px;display:flex;align-items:flex-end;gap:8px;
  pointer-events:none;filter:drop-shadow(0 10px 22px rgba(0,0,0,.18));
}
.operation-character-guide.hidden{display:none}
.operation-guide-mascot{
  width:90px;height:90px;object-fit:contain;flex:0 0 90px;background:#fff;border-radius:18px;
}
.operation-guide-speech{
  position:relative;flex:1;background:#fff;border:2px solid #214d31;border-radius:18px;
  padding:14px 36px 12px 14px;color:#173f29;line-height:1.55;pointer-events:auto;
}
.operation-character-guide.guide-right .operation-guide-speech::before{
  content:"";position:absolute;left:-13px;bottom:23px;border-width:10px 13px 10px 0;
  border-style:solid;border-color:transparent #214d31 transparent transparent;
}
.operation-character-guide.guide-left{flex-direction:row-reverse}
.operation-character-guide.guide-left .operation-guide-speech::before{
  content:"";position:absolute;right:-13px;bottom:23px;border-width:10px 0 10px 13px;
  border-style:solid;border-color:transparent transparent transparent #214d31;
}
.operation-character-guide.guide-bottom{
  width:min(430px,calc(100vw - 24px));left:12px!important;
  flex-direction:row;align-items:center;
}
.operation-character-guide.guide-bottom .operation-guide-mascot{width:78px;height:78px;flex-basis:78px}
.operation-character-guide.guide-bottom .operation-guide-speech::before{
  content:"";position:absolute;left:-13px;bottom:23px;border-width:10px 13px 10px 0;
  border-style:solid;border-color:transparent #214d31 transparent transparent;
}
.operation-guide-text{font-weight:800}
.operation-guide-progress{font-size:12px;margin-top:6px;color:#66776a;font-weight:700}
.operation-guide-actions{display:flex;justify-content:flex-end;margin-top:8px}
.operation-guide-next{border:1px solid #214d31;background:#eef5ef;color:#173f29;border-radius:9px;padding:6px 11px;font-weight:800;cursor:pointer}
.operation-guide-x{
  position:absolute;right:8px;top:6px;width:27px;height:27px;border:0;border-radius:50%;
  background:#eef3ed;color:#173f29;font-size:19px;font-weight:900;cursor:pointer;
}
.operation-guide-target{outline:3px solid #d39a38!important;outline-offset:4px!important;border-radius:8px}
.operation-guide-active{padding-bottom:130px}
@media(max-width:760px){
  .operation-character-guide{width:min(430px,calc(100vw - 20px))}
  .operation-guide-active{padding-bottom:180px}
}

/* v3.11.6 */
.item-section{scroll-margin-top:18px}
.hinata-rental-wrap{margin:34px 0 14px;padding:18px;border-top:2px solid #dfe7dc;border-bottom:1px solid #e4e8e1;text-align:center;background:#fafcf9;border-radius:14px}
.hinata-rental-wrap h4{margin:0 0 14px;font-size:20px;color:#1d452c}
.hinata-a8-banner{display:flex;justify-content:center;align-items:center;min-height:60px;overflow:hidden}
.hinata-a8-banner img{max-width:100%;height:auto}
.hinata-rental-wrap small{display:block;margin-top:8px;color:#68766c}

/* v3.11.8 管理画面A8設定の視認性向上 */
.hinata-settings-highlight{
  border:2px solid #55785d!important;
  background:#f3f8f2!important;
  box-shadow:0 0 0 3px rgba(85,120,93,.08);
}
.hinata-settings-highlight h3{color:#214d31}

/* v3.11.9 hinataレンタル広告をレンタル用品見出し右側へ配置 */
.item-section-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:28px;
  border-bottom:2px solid var(--soft);
  padding-bottom:10px;
  margin-bottom:14px;
}
.item-section-head>h3{
  margin:12px 0 0;
  padding:0;
  border-bottom:0!important;
  flex:0 0 auto;
}
.item-section-head .hinata-rental-wrap{
  margin:0 0 0 auto;
  padding:0;
  border:0;
  background:transparent;
  border-radius:0;
  text-align:center;
  max-width:760px;
  flex:1 1 760px;
}
.item-section-head .hinata-rental-wrap h4{
  margin:0 0 8px;
  font-size:18px;
  line-height:1.35;
  color:#1d452c;
}
.item-section-head .hinata-a8-banner{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  min-height:0;
  overflow:visible;
}
.item-section-head .hinata-a8-banner a{
  display:inline-flex;
  max-width:100%;
}
.item-section-head .hinata-a8-banner img{
  display:block;
  max-width:100%;
  height:auto;
}
.item-section-head .hinata-rental-wrap small{
  margin-top:5px;
  font-size:11px;
}
@media(max-width:900px){
  .item-section-head{
    flex-direction:column;
    gap:12px;
  }
  .item-section-head .hinata-rental-wrap{
    width:100%;
    max-width:none;
    flex:auto;
  }
  .item-section-head .hinata-a8-banner{
    justify-content:center;
  }
}

/* v3.11.11 操作ナビをマウス／指で自由移動 */
.operation-character-guide{
  touch-action:none;
  cursor:grab;
  user-select:none;
}
.operation-character-guide.is-dragging{
  cursor:grabbing;
}
.operation-character-guide.guide-manual{
  flex-direction:row;
}
.operation-character-guide.guide-manual .operation-guide-speech::before{
  display:none!important;
}
.operation-character-guide button,
.operation-character-guide a{
  cursor:pointer;
}
.operation-guide-drag-hint{
  margin-top:6px;
  font-size:11px;
  line-height:1.35;
  font-weight:700;
  color:#718076;
}

/* v3.11.12 キャラクター初回挨拶・名称アンケート */
.operation-character-guide.is-welcome{
  width:min(650px,calc(100vw - 24px));
  align-items:flex-end;
}
.operation-character-guide.is-welcome .operation-guide-speech{
  max-height:min(76vh,680px);
  overflow:auto;
}
.operation-character-guide.is-welcome .operation-guide-text{
  white-space:pre-line;
  font-size:15px;
  line-height:1.75;
}
.mascot-name-survey{
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid #d7e0d5;
}
.mascot-name-survey label{
  display:block;
  font-weight:800;
}
.mascot-name-survey input{
  width:100%;
  margin-top:7px;
  padding:11px 12px;
  border:1px solid #aebdae;
  border-radius:10px;
  font-size:16px;
  background:#fff;
  color:#173f29;
  user-select:text;
  touch-action:auto;
}
.mascot-name-actions{
  display:flex;
  gap:9px;
  flex-wrap:wrap;
  margin-top:9px;
}
.mascot-name-message{
  min-height:1.4em;
  margin:7px 0 0;
  font-size:13px;
  font-weight:700;
  color:#8c5b19;
}
.operation-guide-progress.hidden,
.operation-guide-next.hidden,
.mascot-name-survey.hidden{
  display:none!important;
}
@media(max-width:700px){
  .operation-character-guide.is-welcome{
    width:calc(100vw - 16px);
    gap:5px;
  }
  .operation-character-guide.is-welcome .operation-guide-mascot{
    width:68px;height:68px;flex-basis:68px;
  }
  .operation-character-guide.is-welcome .operation-guide-speech{
    padding-left:12px;
  }
}

/* v3.11.12 管理画面 キャラクター名称投票 */
.mascot-vote-table td:nth-child(1){width:70px;text-align:center}
.mascot-vote-table td:nth-child(3){width:100px}

/* v3.11.13 初回挨拶だけ吹き出しをキャラクターの上へ */
.operation-character-guide.is-welcome{
  flex-direction:column-reverse;
  align-items:flex-start;
  gap:10px;
}
.operation-character-guide.is-welcome .operation-guide-speech{
  width:100%;
  flex:none;
}
.operation-character-guide.is-welcome .operation-guide-mascot{
  align-self:flex-start;
  margin-left:28px;
}
.operation-character-guide.is-welcome .operation-guide-speech::before{
  content:"";
  position:absolute;
  left:48px;
  bottom:-15px;
  width:0;
  height:0;
  border-left:13px solid transparent;
  border-right:13px solid transparent;
  border-top:15px solid #214d31;
}
.operation-character-guide.is-welcome .operation-guide-speech::after{
  content:"";
  position:absolute;
  left:51px;
  bottom:-11px;
  width:0;
  height:0;
  border-left:10px solid transparent;
  border-right:10px solid transparent;
  border-top:12px solid #fff;
}
@media(max-width:700px){
  .operation-character-guide.is-welcome .operation-guide-mascot{
    margin-left:18px;
  }
  .operation-character-guide.is-welcome .operation-guide-speech::before{
    left:34px;
  }
  .operation-character-guide.is-welcome .operation-guide-speech::after{
    left:37px;
  }
}

/* v3.11.14 初回紹介ではキャラクターを吹き出しの上へ */
.operation-character-guide.is-welcome{
  flex-direction:column!important;
  align-items:flex-start!important;
}
.operation-character-guide.is-welcome .operation-guide-mascot{
  order:1;
  align-self:flex-start;
  margin:0 0 0 28px!important;
}
.operation-character-guide.is-welcome .operation-guide-speech{
  order:2;
  width:100%;
}
.operation-character-guide.is-welcome .operation-guide-speech::before{
  top:-15px!important;
  bottom:auto!important;
  left:48px!important;
  border-left:13px solid transparent!important;
  border-right:13px solid transparent!important;
  border-top:0!important;
  border-bottom:15px solid #214d31!important;
}
.operation-character-guide.is-welcome .operation-guide-speech::after{
  top:-11px!important;
  bottom:auto!important;
  left:51px!important;
  border-left:10px solid transparent!important;
  border-right:10px solid transparent!important;
  border-top:0!important;
  border-bottom:12px solid #fff!important;
}
.admin-search-box{min-width:220px}
.admin-search-box input{min-width:210px}
.mascot-candidate-btn{
  border:0;background:transparent;color:#214d31;font:inherit;font-weight:900;
  text-decoration:underline;cursor:pointer;padding:0;
}
.mascot-voter-detail{
  margin:8px 0 14px;padding:10px 12px;border:1px solid #dce3d9;border-radius:10px;background:#f8faf7;
}
.mascot-voter-detail.hidden{display:none}

/* v3.11.18 カレンダー下へ利用日欄を移動 */
.calendar-nav-area{scroll-margin-top:18px}
.calendar-date-row{margin-top:18px;margin-bottom:0}
#publicAnnouncements{scroll-margin-top:18px}

/* v3.11.20 予約完了時のメール案内 */
.success-mail-guide{
  margin:16px auto;
  padding:14px 16px;
  max-width:760px;
  border:1px solid #cbdacb;
  border-radius:12px;
  background:#f5f9f3;
  text-align:left;
}
.success-mail-guide strong{display:block;margin-bottom:5px;color:#214d31}
.success-mail-guide p{margin:0;line-height:1.7}

/* v3.11.21 PC/スマホで各画面をきれいに先頭表示 */
.step-card,
#siteStep,
#optionStep,
#customerStep,
.payment-box,
.policy,
.success,
.item-section{
  scroll-margin-top:20px;
}
.guest-grid input[type="number"]::placeholder{
  color:#8a948b;
  opacity:1;
}
@media(max-width:1100px){
  .step-card,
  #siteStep,
  #optionStep,
  #customerStep,
  .payment-box,
  .policy,
  .success,
  .item-section{
    scroll-margin-top:14px;
  }
}
@media(max-width:700px){
  .step-card,
  #siteStep,
  #optionStep,
  #customerStep,
  .payment-box,
  .policy,
  .success,
  .item-section{
    scroll-margin-top:8px;
  }
  .guest-grid input[type="number"]{
    font-size:18px;
    min-height:54px;
  }
}

/* v3.11.22 予約済み商品・オプションの減数/取消 */
.manage-item-reduction{
  margin-top:18px;
  border:2px solid #d7e4d5;
}
.manage-item-reduction .item-card{
  background:#fbfcfa;
}
.manage-item-reduction .item-card label{
  display:block;
  margin-top:8px;
  font-weight:800;
}
.manage-item-reduction .change-item-qty{
  width:100%;
  margin-top:5px;
}

/* v3.11.23 */
.tabs.tabs-after-selection{display:none!important}
.quick-reduction-card{border:2px solid #bfd3bf}
.quick-reduction-card h3{margin-top:18px;margin-bottom:10px}
.quick-option-grid{margin-bottom:12px}
.quick-reduction-card input[type="number"]{min-height:48px}
input[type="number"]::placeholder{color:transparent!important}

/* v3.11.24 新規/変更メニューは選択後、PC・スマホ共通で完全に非表示 */
.tabs[hidden],
.tabs.tabs-after-selection{
  display:none!important;
  visibility:hidden!important;
  height:0!important;
  min-height:0!important;
  max-height:0!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
}
@media(max-width:700px){
  nav.tabs[hidden],
  nav.tabs.tabs-after-selection{
    display:none!important;
    position:static!important;
  }
}

/* v3.11.25 新規/変更を明確に選択 */
.reservation-entry-choice{
  background:#fff;
  border:2px solid #d4dfd2;
  border-radius:18px;
  padding:20px;
  margin-bottom:18px;
  text-align:center;
}
.reservation-entry-choice h2{margin:0 0 6px}
.reservation-entry-choice p{margin:0 0 14px;color:var(--muted)}
.reservation-entry-choice .tabs{margin:0}
.choice-button{
  min-height:72px;
  font-size:20px!important;
  border:2px solid var(--accent)!important;
  background:#fff!important;
  color:var(--accent)!important;
}
.choice-button:hover,.choice-button:focus{
  background:var(--soft)!important;
}
.tab-panel:not(.is-active){display:none!important}
.operation-nav-launch.hidden{display:none!important}

/* 変更画面を新規予約と同じ番号順で表示 */
.change-workspace{display:block}
.change-step{scroll-margin-top:10px}
.change-site-card{position:relative}
.change-site-card input.visually-hidden{
  position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;
}
.change-site-card.is-selected{border-color:var(--accent);background:var(--soft)}
.change-confirm-box{
  margin-top:16px;
  padding:18px;
  border:2px solid #9fb69f;
  border-radius:14px;
  background:#f7faf5;
}
.final-change-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  margin-top:16px;
}
.final-change-actions .btn:last-of-type{grid-column:1/-1}
.current-total-box{
  padding:14px;
  border-radius:12px;
  background:#f4f7f1;
  margin-bottom:14px;
  font-size:16px;
}
.current-total-box strong{font-size:22px;margin-left:8px}
@media(max-width:700px){
  .reservation-entry-choice{padding:14px 10px}
  .reservation-entry-choice .tabs{display:grid;grid-template-columns:1fr;gap:10px}
  .choice-button{width:100%;min-height:68px;font-size:18px!important}
  #optionStep{scroll-margin-top:4px}
  .final-change-actions{grid-template-columns:1fr}
  .final-change-actions .btn:last-of-type{grid-column:auto}
  .change-step{padding:18px 14px}
  .change-site-grid{grid-template-columns:1fr}
}

/* v3.11.26 */
.reservation-entry-choice.is-selected{padding:14px 18px;text-align:left}
.reservation-entry-choice.is-selected h2{margin:0}
.success{position:relative}
.success-close{position:absolute;right:14px;top:12px;width:44px;height:44px;border-radius:50%;border:1px solid #cad7c8;background:#fff;font-size:28px;line-height:1;cursor:pointer;color:#214d31}
.price-breakdown{margin-top:16px;border:1px solid #d5dfd3;border-radius:12px;overflow:hidden;background:#fff}
.price-breakdown h3{margin:0;padding:12px 14px;background:#f2f7f0}
.price-breakdown table{width:100%;border-collapse:collapse}
.price-breakdown td,.price-breakdown th{padding:10px 12px;border-top:1px solid #e5ebe3;text-align:left}
.price-breakdown td:last-child,.price-breakdown th:last-child{text-align:right;white-space:nowrap}
.price-breakdown .breakdown-total th{font-size:18px;background:#f7faf5}
.manage-choice-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}
.cancel-confirm-card{border:2px solid #dcb9b1}
.change-sauna-box{border:2px solid #c9d9c7}
.change-final-agree{margin-top:16px}
.item-price-text-note{font-size:12px;color:#68756b}
@media(max-width:700px){
  .manage-choice-actions{grid-template-columns:1fr}
  .price-breakdown td,.price-breakdown th{padding:9px 8px;font-size:14px}
  .success-close{right:8px;top:8px}
}

/* v3.11.27 変更時テントサウナを新規予約と同じ選択方式へ */
.sauna-change-slot-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:10px;
  margin-top:12px;
}
.sauna-change-slot-card{
  margin:0;
}
.sauna-change-selected-summary{
  margin-top:14px;
  padding:14px 16px;
  border:2px solid #bfd3bf;
  border-radius:12px;
  background:#f7faf5;
  line-height:1.65;
}
.sauna-change-selected-summary strong{
  display:block;
  color:#214d31;
  font-size:17px;
  margin-bottom:4px;
}
.sauna-change-selected-summary p{
  margin:3px 0;
}
.sauna-change-not-confirmed{
  font-weight:800;
  color:#8a5400;
}
.sauna-price-guide{
  display:flex;
  flex-wrap:wrap;
  gap:8px 16px;
  margin:10px 0 14px;
  padding:10px 12px;
  border-radius:10px;
  background:#f3f7f1;
}
.sauna-price-guide strong{width:100%}
.change-confirm-sauna{
  margin:12px 0 16px;
  padding:14px 16px;
  border:2px solid #bfd3bf;
  border-radius:12px;
  background:#f7faf5;
}
.change-confirm-sauna h4{margin:0 0 6px}
.change-confirm-sauna p{margin:0 0 4px}
@media(max-width:700px){
  .sauna-change-slot-list{grid-template-columns:1fr 1fr}
  .sauna-price-guide{display:block}
  .sauna-price-guide span{display:block;margin-top:4px}
}

/* v3.11.28 変更後の決済・差額請求・差額返金 */
.change-settlement-box{
  margin:18px 0;
  padding:16px;
  border:2px solid #c8d8c5;
  border-radius:14px;
  background:#f8fbf6;
}
.change-settlement-box h4{margin:0 0 12px;font-size:19px}
.change-payment-summary{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin-bottom:14px;
}
.change-payment-summary>div{
  padding:12px;
  border:1px solid #d5dfd3;
  border-radius:10px;
  background:#fff;
}
.change-payment-summary span{display:block;font-size:13px;color:#617064;margin-bottom:4px}
.change-payment-summary strong{display:block;font-size:20px}
.change-payment-summary .difference.due{background:#fff8eb;border-color:#e7c47f}
.change-payment-summary .difference.refund{background:#eef7ff;border-color:#9ec7e7}
.change-payment-summary .difference.settled{background:#eef8ef}
.change-payment-choices{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:10px;
}
.change-payment-choices .check-card{margin:0}
.retry-payment-box{margin-top:12px}
@media(max-width:700px){
  .change-payment-summary{grid-template-columns:1fr}
  .change-payment-choices{grid-template-columns:1fr}
}

/* v3.11.30 スマホ開始位置・予約確認中央寄せ・途中終了ボタン */

/* 入力途中でも常に使える × ボタン。高さを取らず画面右上に追従。 */
.workflow-exit-rail{
  position:sticky;
  top:8px;
  z-index:30;
  height:0;
  display:flex;
  justify-content:flex-end;
  pointer-events:none;
}
.workflow-exit-btn{
  pointer-events:auto;
  width:44px;
  height:44px;
  display:grid;
  place-items:center;
  margin:8px 8px 0 0;
  border:2px solid #b9cbb8;
  border-radius:50%;
  background:rgba(255,255,255,.96);
  color:#214d31;
  font-size:28px;
  font-weight:900;
  line-height:1;
  cursor:pointer;
  box-shadow:0 3px 12px rgba(0,0,0,.12);
}
.workflow-exit-btn:hover,
.workflow-exit-btn:focus{
  background:#f0f6ee;
  outline:none;
}

/* 予約確認・変更・キャンセル画面を左右均等に中央へ固定。 */
#tab-manage,
#manageResult,
#manageActionArea,
#tab-manage .step-card,
#tab-manage .manage-card{
  width:100%;
  max-width:100%;
  min-width:0;
  margin-left:auto;
  margin-right:auto;
}
#tab-manage .manage-card{
  overflow:hidden;
}
#tab-manage .manage-head,
#tab-manage .details,
#tab-manage .details>div{
  min-width:0;
}
#tab-manage .details b,
#tab-manage .details span{
  overflow-wrap:anywhere;
  word-break:break-word;
}
#tab-manage .price-breakdown{
  width:100%;
  max-width:100%;
  overflow-x:hidden;
}
#tab-manage .price-breakdown table{
  width:100%;
  max-width:100%;
  table-layout:fixed;
}
#tab-manage .price-breakdown td:first-child,
#tab-manage .price-breakdown th:first-child{
  width:auto;
  min-width:0;
  overflow-wrap:anywhere;
  word-break:break-word;
}
#tab-manage .price-breakdown td:last-child,
#tab-manage .price-breakdown th:last-child{
  width:112px;
  max-width:112px;
  white-space:nowrap;
}

@media(max-width:700px){
  /* スマホではコンテナ中央を基準に左右同じ余白にする。 */
  #tab-manage,
  #manageResult,
  #manageActionArea{
    margin-inline:auto!important;
    padding-inline:0!important;
  }
  #tab-manage .step-card,
  #tab-manage .manage-card{
    width:100%!important;
    max-width:100%!important;
    margin-inline:auto!important;
    padding-left:14px;
    padding-right:14px;
  }
  #tab-manage .price-breakdown td:last-child,
  #tab-manage .price-breakdown th:last-child{
    width:90px;
    max-width:90px;
  }
  .workflow-exit-btn{
    width:42px;
    height:42px;
    margin-right:4px;
    font-size:26px;
  }
}

/* v3.11.31 変更後日程でのテントサウナ再予約 */
.change-sauna-box .form-message{
  line-height:1.65;
}

/* v3.11.32 予約確認の「現在の予約内容」をスマホ画面内に完全収容 */
html,body{
  max-width:100%;
  overflow-x:hidden;
}
#tab-manage{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:hidden;
}
#manageResult.manage-result-fit{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:hidden;
  margin-inline:auto;
}
#manageResult.manage-result-fit .manage-current-summary,
#manageResult.manage-result-fit .manage-card{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow:hidden;
  margin-inline:auto;
}
#manageResult.manage-result-fit .manage-head{
  width:100%;
  max-width:100%;
  min-width:0;
  flex-wrap:wrap;
}
#manageResult.manage-result-fit .manage-head>div{
  min-width:0;
  max-width:100%;
}
#manageResult.manage-result-fit .manage-head h2,
#manageResult.manage-result-fit .manage-head strong{
  max-width:100%;
  overflow-wrap:anywhere;
  word-break:break-word;
}
#manageResult.manage-result-fit .details{
  width:100%;
  max-width:100%;
  min-width:0;
}
#manageResult.manage-result-fit .details>div{
  width:100%;
  max-width:100%;
  min-width:0;
  gap:10px;
}
#manageResult.manage-result-fit .details span,
#manageResult.manage-result-fit .details b{
  min-width:0;
  max-width:100%;
}
#manageResult.manage-result-fit .price-breakdown,
#manageResult.manage-result-fit .price-breakdown table{
  width:100%;
  max-width:100%;
  min-width:0;
}
#manageResult.manage-result-fit .price-breakdown{
  overflow-x:hidden;
}
#manageResult.manage-result-fit .price-breakdown table{
  table-layout:fixed;
}
#manageResult.manage-result-fit .price-breakdown th,
#manageResult.manage-result-fit .price-breakdown td{
  min-width:0;
  overflow-wrap:anywhere;
  word-break:break-word;
}
#manageResult.manage-result-fit .manage-choice-actions{
  width:100%;
  max-width:100%;
  min-width:0;
}
#manageResult.manage-result-fit .manage-choice-actions .btn{
  min-width:0;
  max-width:100%;
  white-space:normal;
}

@media(max-width:700px){
  #tab-manage{
    width:calc(100vw - 20px)!important;
    max-width:calc(100vw - 20px)!important;
    margin-inline:auto!important;
    padding-inline:0!important;
  }
  #tab-manage>.step-card,
  #manageResult.manage-result-fit,
  #manageResult.manage-result-fit .manage-card{
    width:100%!important;
    max-width:100%!important;
    margin-inline:auto!important;
  }
  #manageResult.manage-result-fit .manage-card{
    padding:16px 12px!important;
    border-radius:14px;
  }
  #manageResult.manage-result-fit .manage-head{
    align-items:flex-start;
    gap:8px;
  }
  #manageResult.manage-result-fit .manage-head .status{
    flex:0 0 auto;
  }
  #manageResult.manage-result-fit .details{
    display:block!important;
    margin:12px 0;
  }
  #manageResult.manage-result-fit .details>div{
    display:grid!important;
    grid-template-columns:minmax(72px,34%) minmax(0,1fr);
    align-items:start;
    gap:8px;
    padding:7px 2px;
  }
  #manageResult.manage-result-fit .details>div span{
    font-size:13px;
  }
  #manageResult.manage-result-fit .details>div b{
    text-align:right;
    font-size:14px;
    line-height:1.5;
  }
  #manageResult.manage-result-fit .price-breakdown{
    border-radius:10px;
  }
  #manageResult.manage-result-fit .price-breakdown h3{
    padding:10px 9px;
    font-size:16px;
  }
  #manageResult.manage-result-fit .price-breakdown th,
  #manageResult.manage-result-fit .price-breakdown td{
    padding:8px 6px!important;
    font-size:13px!important;
    line-height:1.45;
  }
  #manageResult.manage-result-fit .price-breakdown td:last-child,
  #manageResult.manage-result-fit .price-breakdown th:last-child{
    width:78px!important;
    max-width:78px!important;
    white-space:nowrap!important;
    text-align:right;
  }
  #manageResult.manage-result-fit .manage-choice-actions{
    grid-template-columns:1fr!important;
    gap:8px!important;
  }
  #manageResult.manage-result-fit .manage-choice-actions .btn{
    width:100%!important;
    font-size:16px;
    padding:12px 10px;
  }
}

@media(max-width:390px){
  #tab-manage{
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
  }
  #manageResult.manage-result-fit .manage-card{
    padding:14px 9px!important;
  }
  #manageResult.manage-result-fit .details>div{
    grid-template-columns:minmax(64px,32%) minmax(0,1fr);
    gap:6px;
  }
  #manageResult.manage-result-fit .price-breakdown td:last-child,
  #manageResult.manage-result-fit .price-breakdown th:last-child{
    width:72px!important;
    max-width:72px!important;
  }
}

/* v3.11.33 ×ボタンを全スマホで確実に追従・予約完了時は1個だけ */

/*
  sticky では機種・ブラウザによって追従が止まる場合があるため、
  viewport 基準の fixed に統一。
*/
.workflow-exit-rail{
  position:fixed!important;
  top:calc(env(safe-area-inset-top, 0px) + 8px)!important;
  right:calc(env(safe-area-inset-right, 0px) + 8px)!important;
  left:auto!important;
  bottom:auto!important;
  width:auto!important;
  height:auto!important;
  margin:0!important;
  padding:0!important;
  display:block;
  z-index:2147483000!important;
  pointer-events:none;
}

.workflow-exit-btn{
  position:relative!important;
  pointer-events:auto!important;
  margin:0!important;
  width:46px!important;
  height:46px!important;
  min-width:46px!important;
  min-height:46px!important;
  display:grid!important;
  place-items:center!important;
  border:2px solid #b9cbb8!important;
  border-radius:50%!important;
  background:rgba(255,255,255,.97)!important;
  color:#214d31!important;
  font-size:29px!important;
  font-weight:900!important;
  line-height:1!important;
  box-shadow:0 3px 14px rgba(0,0,0,.18)!important;
  cursor:pointer!important;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}

/* hidden指定時はfixedより必ず優先して消す */
.workflow-exit-rail.hidden{
  display:none!important;
}

/* 予約完了画面ではカード内の×だけを表示 */
#successBox:not(.hidden) ~ .workflow-exit-rail,
#tab-new:has(#successBox:not(.hidden)) > .workflow-exit-rail{
  display:none!important;
}

@media(max-width:700px){
  .workflow-exit-rail{
    top:calc(env(safe-area-inset-top, 0px) + 7px)!important;
    right:calc(env(safe-area-inset-right, 0px) + 7px)!important;
  }
  .workflow-exit-btn{
    width:44px!important;
    height:44px!important;
    min-width:44px!important;
    min-height:44px!important;
    font-size:27px!important;
  }
}

/* iPhoneのノッチ・Dynamic Island・横向きでも画面内に固定 */
@supports(padding:max(0px)){
  .workflow-exit-rail{
    top:max(8px, calc(env(safe-area-inset-top) + 6px))!important;
    right:max(8px, calc(env(safe-area-inset-right) + 6px))!important;
  }
}

/* v3.11.36 トップ画面 予約フォーム共有ボタン */
.hero__inner{position:relative}
.top-share-button{
  position:absolute;
  top:8px;
  right:8px;
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  border:1.5px solid rgba(255,255,255,.82);
  border-radius:14px;
  background:rgba(255,255,255,.94);
  color:#1c2b21;
  box-shadow:0 3px 14px rgba(0,0,0,.16);
  cursor:pointer;
  z-index:5;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
.top-share-button svg{
  width:29px;
  height:29px;
  fill:none;
  stroke:currentColor;
  stroke-width:2.35;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.top-share-button:hover,.top-share-button:focus{
  background:#fff;
  outline:3px solid rgba(255,255,255,.42);
  outline-offset:2px;
}
.top-share-button:active{transform:scale(.97)}

.share-dialog-backdrop{
  position:fixed;
  inset:0;
  z-index:2147483500;
  display:grid;
  place-items:center;
  padding:18px;
  background:rgba(0,0,0,.42);
}
.share-dialog-backdrop.hidden{display:none!important}
.share-dialog{
  position:relative;
  width:min(100%,430px);
  max-height:calc(100vh - 36px);
  overflow:auto;
  background:#fff;
  border-radius:18px;
  padding:22px 18px 18px;
  box-shadow:0 16px 50px rgba(0,0,0,.25);
}
.share-dialog h2{margin:0 42px 5px 0;font-size:21px}
.share-dialog>p{margin:4px 0 14px}
.share-dialog-close{
  position:absolute;
  top:9px;
  right:9px;
  width:38px;
  height:38px;
  border:0;
  border-radius:50%;
  background:#f1f4f0;
  font-size:25px;
  line-height:1;
  cursor:pointer;
}
.share-dialog-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:9px;
}
.share-option-button{
  min-height:48px;
  border:1px solid #b9cbb8;
  border-radius:11px;
  background:#f8fbf7;
  color:#214d31;
  font-weight:800;
  font-size:15px;
  cursor:pointer;
}
.share-option-button:hover,.share-option-button:focus{background:#eef5ec}
.share-dialog-message{
  min-height:1.4em;
  margin:12px 0 0!important;
  color:#214d31;
  font-weight:700;
}

@media(max-width:700px){
  .top-share-button{
    top:max(8px, env(safe-area-inset-top, 0px));
    right:max(8px, env(safe-area-inset-right, 0px));
    width:46px;
    height:46px;
    border-radius:13px;
  }
  .top-share-button svg{width:28px;height:28px}
  .share-dialog-actions{grid-template-columns:1fr}
}

/* v3.11.37 LINE直接共有 */
.share-option-button[data-share-kind="line"]{font-size:17px;font-weight:900}

/* v3.11.38 共有URLを画面・送信本文に必ず表示 */
.share-url-preview{
  margin:10px 0 14px;
  padding:10px 11px;
  border:1px solid #c8d8c5;
  border-radius:10px;
  background:#f7faf5;
}
.share-url-preview span{
  display:block;
  margin-bottom:5px;
  color:#53665a;
  font-size:12px;
  font-weight:800;
}
.share-url-preview code{
  display:block;
  color:#173c25;
  font-family:inherit;
  font-size:13px;
  line-height:1.45;
  overflow-wrap:anywhere;
  word-break:break-all;
}

/* v3.11.39 予約・変更・キャンセル完了画面の共有ボタン */
.completion-share-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:10px;
  margin-top:16px;
}
.completion-share-actions .btn{
  min-height:48px;
}
.completion-share-btn{
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  gap:8px;
}
.completion-share-btn svg{
  width:23px;
  height:23px;
  fill:none;
  stroke:currentColor;
  stroke-width:2.35;
  stroke-linecap:round;
  stroke-linejoin:round;
  flex:0 0 auto;
}
.manage-completion-card{
  max-width:720px;
  margin:0 auto;
  text-align:center;
}
.manage-completion-card .success-icon{
  margin:0 auto 10px;
}
.manage-completion-card h2{
  margin-bottom:8px;
}
@media(max-width:700px){
  .completion-share-actions{
    display:grid;
    grid-template-columns:1fr;
  }
  .completion-share-actions .btn{
    width:100%;
  }
}

/* v3.11.40 管理画面 電話/FAX予約代行 */
.admin-proxy-mode{
  background:#f6f8f4;
}
.admin-proxy-mode #publicHero,
.admin-proxy-mode #publicAnnouncements,
.admin-proxy-mode .top-share-button,
.admin-proxy-mode .completion-share-btn{
  display:none!important;
}
.admin-proxy-mode .container{
  max-width:1000px;
  padding-top:12px;
}
.admin-proxy-banner{
  position:sticky;
  top:0;
  z-index:2147482000;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 14px;
  padding:10px 14px;
  background:#214d31;
  color:#fff;
  box-shadow:0 2px 10px rgba(0,0,0,.15);
}
.admin-proxy-banner.fax{background:#6b4a2e}
.admin-proxy-banner strong{font-size:17px}
.admin-proxy-banner span{font-size:13px}

/* 管理画面側の予約代行iframe */
.proxy-source-buttons{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  margin:14px 0;
}
.proxy-source-btn{
  min-height:72px;
  font-size:20px;
  font-weight:900;
}
.proxy-source-btn.phone{border:2px solid #3f7047;background:#eef8ef}
.proxy-source-btn.fax{border:2px solid #8a633f;background:#fff5ea}
.proxy-frame-wrap{
  margin-top:14px;
  border:1px solid #cdd7ca;
  border-radius:14px;
  overflow:hidden;
  background:#fff;
}
.proxy-frame-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:10px 12px;
  border-bottom:1px solid #d8e0d6;
  background:#f5f8f3;
}
.admin-proxy-frame{
  display:block;
  width:100%;
  height:76vh;
  min-height:720px;
  border:0;
  background:#fff;
}
@media(max-width:700px){
  .proxy-source-buttons{grid-template-columns:1fr}
  .admin-proxy-frame{height:82vh;min-height:680px}
}

/* v3.11.40 管理予約台帳 受付種別・リピーター表示 */
.ledger-day-heading{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin-bottom:10px;
}
.ledger-day-heading h3{margin:0}
.ledger-source-repeat{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:6px 10px;
  margin-top:6px;
  font-size:12px;
}
.source-tag{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:3px 8px;
  border-radius:999px;
  font-weight:900;
}
.source-web{background:#e8f2fb;color:#235f8d}
.source-phone{background:#e9f6e8;color:#2e6837}
.source-fax{background:#fff0df;color:#7a4a1f}
