.gyme-booking-start{cursor:pointer}.gyme-booking-panel{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:999999;display:flex;align-items:center;justify-content:center;padding:16px}.gyme-booking-box{width:min(620px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:18px;padding:22px;position:relative}.gyme-booking-x{position:absolute;right:12px;top:8px;border:0;background:none;font-size:28px;cursor:pointer}.gyme-booking-video{width:100%;aspect-ratio:4/3;background:#111;border-radius:12px;object-fit:cover}.gyme-booking-status{margin:10px 0;padding:12px;background:#f2f2f2;border-radius:10px}.gyme-booking-status.ok{background:#e8f7ed}.gyme-booking-month{display:flex;justify-content:space-between;align-items:center;margin:14px 0}.gyme-booking-month button,.gyme-booking-days button,.gyme-booking-slots button{border:1px solid #ccc;background:#fff;border-radius:8px;padding:9px 12px;cursor:pointer}.gyme-booking-days{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.gyme-booking-days button.sel,.gyme-booking-slots button:hover{background:#111;color:#fff}.gyme-booking-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.gyme-booking-result{margin:12px 0;padding:10px;border-radius:8px;background:#f4f4f4}.gyme-booking-cancel,.gyme-booking-retry{padding:10px 14px;border:1px solid #ccc;border-radius:8px;background:#fff;cursor:pointer}@media(max-width:600px){.gyme-booking-days{grid-template-columns:repeat(5,1fr)}.gyme-booking-slots{grid-template-columns:repeat(2,1fr)}}
/* GYME 3.3.6: preserve the native hidden state of the booking modal/steps.
   The previous display:flex rule could visually override the HTML hidden
   attribute, making the camera panel appear before the user clicked the
   appointment button. */
.gyme-booking-panel[hidden],
.gyme-booking-step[hidden] {
    display: none !important;
}
.gyme-booking-video {
    display: block;
    width: 100%;
    max-width: 420px;
    margin: 0 auto;
    aspect-ratio: 4 / 3;
    background: #111;
    border-radius: 12px;
    object-fit: cover;
}

/* GYME 3.3.9 – Ukiyo-e booking calendar */
.gyme-booking-panel{
    align-items:center !important;
    justify-content:center !important;
    padding:clamp(18px,4vh,42px) 16px !important;
    box-sizing:border-box;
}
.gyme-booking-box{
    width:min(720px,calc(100vw - 32px)) !important;
    max-height:min(82vh,760px) !important;
    overflow-y:auto;
    overscroll-behavior:contain;
    background:#f4ead5 url('../assets/japan-zen-pattern.svg') right 18px top 18px / 180px 180px no-repeat !important;
    color:#242018;
    border:2px solid #2d4059;
    border-radius:4px 18px 4px 18px !important;
    box-shadow:0 18px 55px rgba(20,24,28,.38), inset 0 0 0 5px rgba(171,42,42,.08);
    padding:26px !important;
}
.gyme-booking-x{
    color:#2d4059 !important;
    right:13px !important;
    top:12px !important;
    width:38px;height:38px;
    border:1px solid rgba(45,64,89,.25) !important;
    border-radius:50% !important;
    background:#f4ead5 !important;
    line-height:32px;
    z-index:2;
}
.gyme-booking-step h2{
    font-family:Georgia,"Times New Roman",serif;
    color:#2d4059;
    letter-spacing:.02em;
    margin-top:2px;
}
.gyme-booking-step>p{
    color:#594f42;
}
.gyme-booking-month{
    margin:18px 0 12px !important;
    padding:12px 10px;
    border-top:1px solid rgba(45,64,89,.22);
    border-bottom:1px solid rgba(45,64,89,.22);
}
.gyme-booking-month strong{
    font-family:Georgia,"Times New Roman",serif;
    font-size:20px;
    color:#2d4059;
}
.gyme-booking-month button,
.gyme-booking-days button,
.gyme-booking-slots button{
    border:1px solid rgba(45,64,89,.30) !important;
    background:#fbf4e4 !important;
    color:#2d4059 !important;
    border-radius:3px 10px 3px 10px !important;
    box-shadow:0 2px 0 rgba(45,64,89,.08);
    transition:transform .12s ease,background .12s ease,color .12s ease;
}
.gyme-booking-month button:hover,
.gyme-booking-days button:hover,
.gyme-booking-slots button:hover{
    background:#2d4059 !important;
    color:#fff !important;
    transform:translateY(-1px);
}
.gyme-booking-days{
    grid-template-columns:repeat(7,minmax(0,1fr)) !important;
    gap:8px !important;
}
.gyme-booking-days button{
    min-height:55px;
    padding:7px 4px !important;
    font-size:13px;
    line-height:1.25;
    white-space:normal;
}
.gyme-booking-days button .gyme-day-number{
    display:block;
    font-size:16px;
    font-weight:700;
}
.gyme-booking-days button .gyme-day-weekday{
    display:block;
    margin-top:2px;
    font-size:11px;
    opacity:.78;
}
.gyme-booking-days button.sel{
    background:#a82f35 !important;
    color:#fff !important;
    border-color:#8f252b !important;
}
.gyme-booking-slots{
    margin-top:16px !important;
}
.gyme-booking-slots button{
    min-height:42px;
}
.gyme-booking-result{
    background:#eee1c8 !important;
    border-left:4px solid #a82f35;
}
.gyme-booking-cancel,.gyme-booking-retry{
    border:1px solid rgba(45,64,89,.30) !important;
    background:#fbf4e4 !important;
    color:#2d4059 !important;
    border-radius:3px 10px 3px 10px !important;
}
.gyme-booking-video{
    width:min(420px,100%) !important;
    max-height:42vh;
    margin:10px auto 14px !important;
}
@media(max-width:600px){
    .gyme-booking-panel{padding:12px !important;}
    .gyme-booking-box{
        width:calc(100vw - 24px) !important;
        max-height:88vh !important;
        padding:18px !important;
        border-radius:4px 14px 4px 14px !important;
    }
        .gyme-booking-days{grid-template-columns:repeat(4,1fr) !important;}
}

/* GYME 3.3.17 – date states */
.gyme-booking-days button:disabled{opacity:.42;cursor:not-allowed;transform:none!important;background:#e5dcc8!important;color:#7b7468!important;}
.gyme-booking-days button:disabled:hover{background:#e5dcc8!important;color:#7b7468!important;}


/* GYME 3.3.20 — public booking: header + genuine Japanese Zen motifs */
.gyme-booking-panel{background:rgba(22,29,29,.78)!important;backdrop-filter:blur(3px);}
.gyme-booking-box{background:
 linear-gradient(rgba(247,237,218,.95),rgba(247,237,218,.95)),url('../assets/japan-zen-pattern.svg') center/480px 480px repeat !important;
 border:2px solid #b8893c!important;box-shadow:0 24px 80px rgba(0,0,0,.46),0 0 0 5px rgba(255,255,255,.08)!important;}
.gyme-booking-box:after{content:"";position:absolute;inset:0;pointer-events:none;background:url('../assets/japan-zen-pattern.svg') right bottom/300px 300px no-repeat;opacity:.18;z-index:0;}
.gyme-booking-step{position:relative;z-index:1;}
.gyme-booking-step h2{font-size:25px!important;color:#294b57!important;text-align:center;}
.gyme-booking-step>p{text-align:center;color:#625848!important;}
.gyme-booking-month{background:rgba(255,255,255,.5);border-radius:3px 12px 3px 12px;}
.gyme-booking-month strong{font-size:21px!important;}
.gyme-booking-month button,.gyme-booking-days button,.gyme-booking-slots button{border-color:rgba(41,75,87,.28)!important;background:rgba(255,250,240,.88)!important;color:#294b57!important;border-radius:3px 11px 3px 11px!important;}
.gyme-booking-days button{min-height:64px!important;box-shadow:0 3px 0 rgba(41,75,87,.06);}
.gyme-booking-days button .gyme-day-number{font-size:18px!important;}.gyme-booking-days button .gyme-day-weekday{text-transform:capitalize;font-size:11px!important;color:#6b6254;}
.gyme-booking-days button.sel{background:linear-gradient(145deg,#a63a32,#7e2428)!important;border-color:#6e1e22!important;box-shadow:0 6px 15px rgba(126,36,40,.2);}
.gyme-booking-slots button:hover,.gyme-booking-month button:hover,.gyme-booking-days button:hover{background:#294b57!important;color:#fff!important;}
.gyme-booking-result{background:rgba(238,225,200,.9)!important;border-left-color:#a63a32!important;}
.gyme-booking-cancel,.gyme-booking-retry{border-color:rgba(41,75,87,.3)!important;background:#fffaf0!important;color:#294b57!important;}
.gyme-booking-video{border:3px solid #b8893c;box-shadow:0 10px 30px rgba(0,0,0,.18);}
@media(max-width:600px){.gyme-booking-box{padding:18px!important;}}
/* GYME 3.3.21 — show the complete association header without cropping */

/* GYME 3.3.22 — explicit booking confirmation; clicking a slot never books immediately. */
.gyme-booking-confirm{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(35,43,39,.58);backdrop-filter:blur(4px);border-radius:inherit;}
.gyme-booking-confirm[hidden]{display:none!important;}
.gyme-booking-confirm-card{width:min(470px,100%);box-sizing:border-box;padding:30px 28px;background:#fbf4e4;color:#2d2921;border:1px solid #b8893c;border-radius:4px 18px 4px 18px;box-shadow:0 18px 60px rgba(0,0,0,.35);text-align:center;background-image:linear-gradient(rgba(251,244,228,.94),rgba(251,244,228,.94)),url('../assets/japan-zen-pattern.svg');background-size:auto,360px 360px;background-position:center,center;}
.gyme-confirm-mark{font-size:30px;margin-bottom:5px;}
.gyme-booking-confirm-card h3{margin:4px 0 12px;font:600 25px/1.25 Georgia,'Times New Roman',serif;color:#294b57;}
.gyme-confirm-details{font-size:19px;font-weight:700;color:#8a302d;margin:12px 0;}
.gyme-confirm-note{font-size:14px;line-height:1.55;color:#625848;}
.gyme-confirm-actions{display:flex;justify-content:center;gap:12px;margin-top:22px;}
.gyme-confirm-actions button{min-width:150px;padding:12px 16px;border-radius:3px 11px 3px 11px;border:1px solid rgba(41,75,87,.3);cursor:pointer;font-weight:700;}
.gyme-confirm-no{background:#fffaf0;color:#294b57;}
.gyme-confirm-yes{background:#a63a32;color:#fff;border-color:#7e2428!important;}
.gyme-confirm-yes:disabled{opacity:.55;cursor:wait;}


/* GYME 3.3.23 — compact desktop booking dialog; full header visible without cropping. */
.gyme-booking-panel{padding:12px 16px!important;}
.gyme-booking-box{width:min(560px,calc(100vw - 32px))!important;max-height:min(76vh,620px)!important;padding:18px!important;border-radius:4px 16px 4px 16px!important;}
.gyme-booking-box:after{background-size:220px 220px!important;opacity:.13!important;}
.gyme-booking-days{gap:6px!important;}.gyme-booking-days button{min-height:50px!important;padding:5px 3px!important;}.gyme-booking-days button .gyme-day-number{font-size:16px!important;}.gyme-booking-slots{gap:6px!important;margin-top:12px!important;}.gyme-booking-slots button{min-height:38px!important;padding:7px 8px!important;}
@media(max-width:600px){
  .gyme-booking-panel{padding:0!important;align-items:stretch!important;}
  .gyme-booking-box{width:100vw!important;max-width:none!important;max-height:100vh!important;height:100vh!important;border:0!important;border-radius:0!important;padding:18px!important;box-sizing:border-box!important;}
}

/* GYME 3.3.25 — compact desktop booking modal, full association header */
.gyme-booking-box{width:min(560px,calc(100vw - 32px))!important;max-height:min(80vh,720px)!important;padding:18px!important;}
.gyme-booking-box:after{opacity:.12!important;}
@media(max-width:600px){
  .gyme-booking-box{width:calc(100vw - 12px)!important;max-height:calc(100vh - 12px)!important;padding:14px!important;border-radius:8px 16px 8px 16px!important;}
}
/* GYME blocked booking dates: visibly unavailable in the public calendar. */
.gyme-booking-days button.is-blocked,
.gyme-booking-days button.is-blocked:hover,
.gyme-booking-days button.is-blocked:disabled{
    opacity:1!important;
    cursor:not-allowed!important;
    background:#f1e5df!important;
    color:#7e2428!important;
    border-color:#a63a32!important;
    box-shadow:none!important;
    transform:none!important;
}
.gyme-booking-days button.is-blocked .gyme-day-weekday{color:#7e2428!important;}
.gyme-booking-days .gyme-day-status{display:block;font-size:9px;line-height:1.15;margin-top:4px;font-weight:700;text-align:center;color:#7e2428;}

/* Admin calendar: blocked dates are unavailable but existing confirmed appointments remain visible. */
.gyme-calendar-day.is-blocked{outline:2px solid rgba(166,58,50,.45);outline-offset:-2px;}
.gyme-calendar-blocked{display:block;margin:7px 0;padding:5px 7px;border-radius:7px;background:#a63a32;color:#fff;font-size:11px;font-weight:700;line-height:1.2;text-align:center;}

/* GYME 3.3.104 – separate desktop/mobile booking button paths.
   Both buttons use the exact same generated inline style/configuration.
   Only one wrapper is visible at a time, so theme mobile rules cannot
   substitute one button implementation for the other. */
.gyme-booking-start-mobile-wrap{display:none!important}
.gyme-booking-start-desktop-wrap{display:block!important}
@media(max-width:600px){
  .gyme-booking-start-desktop-wrap{display:none!important}
  .gyme-booking-start-mobile-wrap{display:block!important}
}
