/* CSS Document // 04.02 */

@charset "UTF-8";
@import url("pretendard-gov.css");

/*******  Base  ********/
:root{
    --aside-w:180px;
    --aside-w-min:56px;
    --rail-w:296px;
    --header-h:48px;
    --footer-h:48px;
    --gap:16px;
    --grid-height:calc(100vh - 400px);
}
html,body{width:100%;height:100%;margin:0;padding:0;}
body{font-size:14px;overflow:hidden;background:var(--bs-bg);}
body.dark{font-size:14px;background:var(--bs-primary)}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.wrap{max-width:100%;min-height:100vh;margin:0 auto;background:var(--bs-white);color:var(--bs-dark);display:flex;flex-direction:column;overflow:auto;}

/*******  Login  ********/
.dark .wrap{background:var(--bs-primary);color:var(--bs-white)}
.login-section{display:flex;align-items:center;flex-direction:column;justify-content:center;margin:auto;width:300px;}
.login-section .logo{width:230px;height:91px;background:url("../img/logo-parkya.svg") no-repeat center center/contain;margin:0 auto;}
.login-section .slogan{width:219px;height:30px;background:url("../img/slogan.svg") no-repeat center center/contain;margin:5px auto;}
.login-section .login-container{width:100%;margin-top:24px;}
.login-section .form-control{height:54px;line-height:54px;font-size:18px;font-weight:600;border-radius:8px;width:100%;background:var(--bs-white-200);margin-bottom:12px;color:var(--bs-white)}
.login-section .form-control::placeholder{color:var(--bs-white-400)}
.login-section #login-btn.btn{height:54px!important;line-height:54px!important;font-size:18px;font-weight:600;border-radius:8px;padding:0;width:100%}
.login-section .btn-primary{color:var(--bs-primary);background:var(--bs-white);transition:var(--bs-transition)}
.login-section .btn-primary[disabled]{color:var(--bs-white);background:var(--bs-white-400);transition:var(--bs-transition)}
#loginErrorModal .modal-body{padding:32px 48px;}
#loginErrorModal .modal-body p{font-size:17px;text-align:center;color:var(--bs-danger)}

/*******  Dashboard  ********/
.app{position:relative;width:100%;height:100%;padding-top:var(--header-h);padding-bottom:var(--footer-h);}
.app-header{position:fixed;inset:0 0 auto 0;height:var(--header-h);display:flex;align-items:center;gap:12px;padding:0 16px;background:#fff;border-bottom:var(--bs-border);z-index:1020;min-width:1240px;}
.header-start,.header-start > nav > ul{display:flex;align-items:center;}
.header-start > nav > ul{list-style:none;padding:0;gap:24px;margin:0 24px;}
.header-start > nav > ul > li{display:flex;align-items:center}
.header-start > nav > ul > li > a{line-height:48px;font-size:18px;color:var(--bs-gray-500);text-decoration:none;font-weight:600;transition:var(--bs-transition)}
.header-start > nav > ul > li > a:hover,.header-start > nav > ul > li > a.active{color:var(--bs-primary);transition:var(--bs-transition)}
/* 2026-08-17 설정 상단 메뉴 범위: 준비 중인 메뉴는 현재 위치를 알리되 클릭·호버 동작을 막는다. */
.header-start > nav > ul > li > a.is-disabled{color:var(--bs-gray-300);cursor:default;pointer-events:none}
.brand{display:flex;align-items:center;gap:8px;height:var(--header-h);border-right:var(--bs-border);width:calc(var(--aside-w) - var(--gap));opacity:1;transition:var(--bs-transition);white-space:nowrap}
.brand-logo{display:inline-block;width:95px;height:24px;background:url("../img/logo-parkya-lg.svg") no-repeat 0 0;margin-top:-6px;}
.brand-sm{display:flex;align-items:center;transition:var(--bs-transition);opacity:0;width:1px;height:var(--header-h);margin-left:-1px}
.brand-logo-sm{width:40px;height:24px;background:url("../img/logo-parkya-sm.svg") no-repeat 0 0;margin-left:-8px}
.brand-name{font-weight:700;font-size:15px;margin-top:6px;color:var(--bs-primary);margin-left:-4px}
.aside-toggle.btn{width:var(--header-h);height:var(--header-h);border-right:var(--bs-border);border-radius:0;transition:var(--bs-transition)}
.aside-toggle.btn:hover{color:var(--bs-primary);transition:var(--bs-transition)}
.header-end{margin-left:auto;display:flex;align-items:center;gap:12px}
.header-end .today-time{font-weight:600;font-size:18px}
.header-end .condition{line-height:36px;border-radius:4px;border:var(--bs-border);display:flex;align-items:center;}
.header-end .condition .label{font-weight:500;font-size:13px;margin-left:12px;width:25px;display:inline-block;}
.header-end .condition .value{font-weight:700;font-size:17px;display:inline-block;padding-right:12px;width:30px;text-align:right;}
.header-end .condition .value:not(:last-child){border-right:var(--bs-border);}
.header-end .btn{height:36px;line-height:34px;padding:0 16px 0 12px;}
/* 2026-08-17 store 공통 헤더: 대시보드와 동일하게 예약·사용자 정보가 한 줄로 유지되게 한다. */
.header-end .btn-reserve,.header-end .user-dropdown .dropdown-toggle{white-space:nowrap;flex-shrink:0}
.header-end .btn-outline-primary{border:1px solid var(--bs-primary);color:var(--bs-primary);font-weight:600;}
.header-end .btn-outline-primary:hover{background-color:var(--bs-primary);color:var(--bs-white);}
.header-end .btn .mi{font-size:20px;margin-top:-2px;}
.user-dropdown .btn{display:flex;align-items:center;gap:6px;padding:0!important;background:transparent!important;border:none!important}
.dropdown-toggle::after{display:none!important}
.dropdown-toggle .dropdown-chevron{font-size:20px;margin-left:4px;vertical-align:middle;transition:transform .25s ease}
.dropdown-toggle.show .dropdown-chevron{transform:rotate(180deg)}
.dropdown-menu{padding:0;}
.dropdown-menu li:first-child .dropdown-item{border-radius:var(--bs-dropdown-border-radius) var(--bs-dropdown-border-radius) 0 0}
.dropdown-menu li:last-child .dropdown-item{border-radius:0 0 var(--bs-dropdown-border-radius) var(--bs-dropdown-border-radius)}
.dropdown-menu .dropdown-item{font-size:13px;line-height:36px;height:36px;padding:0 12px;font-weight:600}
.dropdown-menu .dropdown-item .mi{color:var(--bs-gray-500);}
.aside{position:fixed;inset:var(--header-h) auto 0 0;width:var(--aside-w);background:#fff;border-right:var(--bs-border);display:flex;flex-direction:column;z-index:1020;transition:var(--bs-transition);overflow:hidden}
.aside ul{list-style:none;padding:0;margin:0;}
.aside-head{display:flex;align-items:center;padding:12px;gap:8px;}
.header-end .avatar,.aside-head .avatar{display:inline-block;flex-basis:32px;min-width:32px;height:32px;line-height:32px;text-align:center;border-radius:var(--gap);background:var(--bs-gray-300);color:var(--bs-white)}
.aside-head .label{font-weight:700;font-size:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.nav-primary{display:flex;flex-direction:column}
.nav-primary .item{display:flex;align-items:center;gap:12px;padding:6px 16px;color:var(--bs-dark);text-decoration:none;transition:var(--bs-transition)}
.nav-primary .item:hover{background:#f2f2ff;transition:var(--bs-transition)}
.nav-primary .item .mi{font-weight:300;color:var(--bs-gray-500);transition:var(--bs-transition)}
.nav-primary .item .label{white-space:nowrap;color:var(--bs-gray-600);font-weight:600;transition:var(--bs-transition)}
.nav-primary .item.active .mi,.nav-primary .item.active .label,.nav-primary .item:hover .mi,.nav-primary .item:hover .label{color:var(--bs-primary);transition:var(--bs-transition)}
.aside-tail{margin-top:auto;padding:8px 12px 12px;color:var(--bs-gray-600);font-size:12px;}
.aside-tail *{white-space:nowrap;text-decoration:none}
.aside-tail .rounded{border:var(--bs-border)}
.aside-tail .fw-bold{font-size:24px;color:var(--bs-primary)}
.aside-tail .rounded a{color:var(--bs-gray-600);transition:var(--bs-transition)}
.aside-tail .rounded a:hover{color:var(--bs-primary);transition:var(--bs-transition)}
.content-rail{position:fixed;inset:var(--header-h) 0 0 auto;width:var(--rail-w);background:#fff;border-left:var(--bs-border);z-index:1010;display:flex;flex-direction:column;overflow:auto}
.content-rail .ss-wrapper{position:relative;overflow:hidden;height:100%;width:100%;}
.content-rail .ss-content{box-sizing:border-box;width:100%;height:100%;overflow:auto;padding:0;-ms-overflow-style:none;scrollbar-width:none}
.content-rail:hover .ss-scroll{opacity:1;}
.ss-content::-webkit-scrollbar{width:0;height:0}
.ss-scroll{position:absolute;top:0;right:2px;width:6px;height:100%;background:rgba(0, 0, 0, .1);border-radius:3px;cursor:pointer;opacity:0;transition:var(--bs-transition);z-index:2}
.ss-containerr:hover .ss-scroll{opacity:1;transition:var(--bs-transition)}
.ss-grabbed .ss-scroll{background:#0003;transition:var(--bs-transition)}
.content-wrap{padding:24px;border-bottom:var(--bs-border);}
.content-head{font-weight:700;display:flex;justify-content:space-between}
.content-head h3{font-size:15px;}
.content-head a{color:var(--bs-gray-400);transition:var(--bs-transition)}
.content-head a:hover{color:var(--bs-primary);transition:var(--bs-transition)}
.content-body .value{font-size:30px;font-weight:700;color:var(--bs-primary)}
.content-body .content-group{display:flex;justify-content:space-between;margin-top:12px}
.content-body .content-data{display:flex;flex-direction:column;align-items:center}
.content-body .content-data .material-symbols-outlined{color:var(--bs-gray-600)}
.content-body .content-data .title{font-size:13px;font-weight:600;color:var(--bs-gray-500);margin-top:4px}
.content-body .content-data .unit{font-size:13px;font-weight:600;color:var(--bs-gray-500);margin-top:4px;margin-left:4px;}
.content-body .content-data .value{font-size:18px;font-weight:700;color:var(--bs-dark)}
.ranking-nav{list-style:none;gap:12px;display:flex;padding:0;margin:0;margin-left:24px;}
.ranking-nav a{text-decoration:none;color:var(--bs-dark);font-size:13px;font-weight:700}
.ranking-nav a:hover,.ranking-nav a.active{color:var(--bs-primary)}
.ranking{list-style:none;gap:12px;display:flex;flex-direction:column;padding:0;margin:0;margin-top:12px;}
.ranking-header{font-size:12px;font-weight:400;color:var(--bs-gray-400);display:flex;}
.ranking-row{display:flex;}
.ranking-header .rank,.ranking-row .rank{width:32px;text-align:center;}
.ranking-header .player,.ranking-row .player{width:calc(100% - 72px);}
.ranking-header .score,.ranking-row .score{width:40px;text-align:center;}
.ranking-row .rank{font-size:12px;line-height:38px;}
.ranking-row .player{display:flex;align-items:center}
.ranking-row .player .avatar{width:38px;height:38px;border-radius:19px;display:inline-block;background:var(--bs-gray-100) url("../img/avatar.png") no-repeat center center/cover;}
.ranking-row .player .nickname{font-size:15px;font-weight:700;margin-left:12px;}
.ranking-row .score{font-size:20px;font-weight:700;color:var(--bs-primary);line-height:38px;}
.content-wrap .btn-group{width:100%;margin-top:12px;}
.content-wrap .btn-outline{border:var(--bs-border);background:var(--bs-white);color:var(--bs-dark);font-size:13px;font-weight:700;line-height:36px;border-radius:4px;display:block;transition:var(--bs-transition);padding:0}
.content-wrap .btn-outline:hover{border-color:var(--bs-primary);color:var(--bs-primary);transition:var(--bs-transition)}
.app-main{position:relative;margin-left:var(--aside-w);margin-right:var(--rail-w);transition:var(--bs-transition);background:var(--bs-bg)}
.app-main .ss-wrapper{position:relative;overflow:hidden;height:calc(100vh - var(--header-h) - var(--footer-h));}
.app-main .ss-content{box-sizing:border-box;width:100%;height:100%;overflow:auto;padding:24px 12px;-ms-overflow-style:none;scrollbar-width:none}
.app-main .ss-content .container-fluid{min-width:1080px;}
.app-main .ss-scroll{width:6px;background:#0000002b;border-radius:3px;opacity:0;transition:opacity .2s ease}
.app-main:hover .ss-scroll{opacity:1;}
.app-footer{position:fixed;inset:auto 0 0 0;height:var(--footer-h);background:#fff;border-top:var(--bs-border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;z-index:1010;margin-left:var(--aside-w);margin-right:var(--rail-w);transition:var(--bs-transition)}
/* 2026-08-17 미할당 예약 토스트: 기존 primary 색상과 카드 곡률을 유지하면서 반투명 배경·그림자로 주목도를 높인다. */
.dashboard-booking-toast-wrap{position:fixed;left:var(--aside-w);right:var(--rail-w);bottom:calc(var(--footer-h) + 16px);z-index:1050;display:flex;justify-content:center;padding:0 16px;pointer-events:none;transition:var(--bs-transition)}
.dashboard-booking-toast{width:min(460px,100%);min-height:72px;display:flex;align-items:center;gap:14px;padding:12px 16px;border:1px solid #ffffff66;border-radius:12px;background:rgba(var(--bs-primary-rgb),.94);color:var(--bs-white);box-shadow:0 14px 36px #11182740;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);text-decoration:none;pointer-events:auto;transition:var(--bs-transition)}
.dashboard-booking-toast:hover,.dashboard-booking-toast:focus-visible{background:rgba(var(--bs-primary-rgb),.99);color:var(--bs-white);box-shadow:0 18px 42px #11182759;transform:translateY(-2px)}
.dashboard-booking-toast:focus-visible{outline:3px solid #ffffffb3;outline-offset:2px}
.dashboard-booking-toast-icon{flex:0 0 44px;width:44px;height:44px;line-height:44px!important;border-radius:22px;background:#ffffff29;text-align:center;font-size:27px!important}
.dashboard-booking-toast-copy{min-width:0;display:flex;flex-direction:column;gap:2px;font-size:14px}
.dashboard-booking-toast-copy strong{display:flex;align-items:center;gap:8px;font-size:17px;line-height:1.3}
.dashboard-booking-toast-count{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:11px;background:var(--bs-white);color:var(--bs-primary);font-size:12px;font-weight:800}
.dashboard-booking-toast-arrow{margin-left:auto;flex:0 0 auto;font-size:24px!important;opacity:.88}
#roomCardRow .card{position:relative;}
.card{background:var(--bs-white);border:var(--bs-border);border-radius:12px;padding:0;min-height:270px;min-width:234px;transition:var(--bs-transition)}
.card:hover{box-shadow:rgba(0, 0, 0, 0.2) 0px 18px 50px -10px;transition:var(--bs-transition)}
.card .card-header,.card .card-footer{background:var(--bs-white);padding:0 12px;display:flex;justify-content:space-between;align-items:center;white-space:nowrap}
.card .card-header.alert-danger{background:var(--bs-danger-light)}
.card .card-header{border-radius:12px 12px 0 0}
.card .card-footer{border-radius:0 0 12px 12px}
.card .card-header-start,.card .card-header-end{display:flex;gap:12px;height:var(--header-h);line-height:var(--header-h);align-items:center;}
.card .card-header-start h3{font-size:17px;font-weight:700;color:var(--bs-dark);margin-bottom:0;line-height:var(--header-h)}
.card .card-header.alert-danger h3,.card .card-header.alert-danger .card-header-start span{color:var(--bs-danger);}
.card .card-header-start span{margin-top:2px;color:var(--bs-gray-500);}
.card .card-header-end span{align-self:center}
.card .card-body{padding:0;display:flex;justify-content:space-between;align-items:stretch}
.card .card-body .split{padding:8px 12px;width:calc(100% - 65px);display:flex;flex-direction:column;}
.card .card-body .split:last-child{width:64px;border-left:var(--bs-border);gap:8px;}
.card .card-body .split .iot{width:100%;font-size:12px;font-weight:600;background:var(--bs-gray-300);color:var(--bs-gray-600);line-height:20px;border-radius:10px;text-align:center;}
.card .card-body .split .iot.active{background:var(--bs-primary);color:var(--bs-white)}
.card .card-body .split .iot:first-child{display:none;}
.card .card-body .info{text-align:center;margin:0 auto 12px;display:flex;flex-direction:column;margin-bottom:auto !important;height:120px;}
.card .card-body .info .btn-outline{border:var(--bs-border);background:var(--bs-white);color:var(--bs-dark);width:100%;font-size:17px;font-weight:700;line-height:44px;border-radius:4px;display:block;transition:var(--bs-transition);padding:0}
.card .card-body .info .btn-outline:hover{border-color:var(--bs-primary);color:var(--bs-primary);transition:var(--bs-transition)}
.card .card-body .info:has(.btn-outline){width:100%}
.card .card-body .info .btn-outline:first-child{margin-bottom:8px}
.card .card-body .time{font-size:15px;font-weight:600;color:var(--bs-dark);margin-bottom:-5px}
.card .card-body .remain{font-size:32px;font-weight:700;color:var(--bs-primary)}
/* 2026-08-16: 운영과 동일한 이용종료/미마감 표시와 잔여시간 점멸 효과를 사용한다. */
.card .card-body .remain.remain-ended{font-size:21px;color:var(--bs-danger);animation:remainEndedPulse 1.6s ease-in-out infinite;margin-top:10px}
.remain-ended .ended-tag{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:999px;background:#fee2e2;color:#dc2626;font-size:12px;font-weight:700;vertical-align:2px}
@keyframes remainEndedPulse{0%,100%{opacity:1}50%{opacity:.55}}
.card.card-ended{border-color:#f0b4b4}
.card .card-body .game{font-size:15px;font-weight:600;color:var(--bs-dark)}
.card .card-body .cc{font-size:13px;font-weight:600;color:var(--bs-success)}
.card .entry-info,.card .fee-info{display:flex;justify-content:space-between;align-items:stretch}
.card .value{font-size:18px;font-weight:600;color:var(--bs-dark)}
.card .label{padding-top:6px;}
.card .label,.card .unit{font-size:13px;font-weight:600;color:var(--bs-gray-500)}
.card .card-footer{align-items:flex-start;padding:8px 12px}
.card .card-footer-start span{display:block}
.card .card-footer-start .note{font-size:11px;}
#roomCardRow .room-menu{position:absolute;right:4px;top:40px!important;}
.split.seat-open {cursor:pointer;}
.split.seat-open:hover{background:rgba(0,0,0,.02);}
body.seat-view-compact .card{height:auto!important;min-height:0!important}
body.seat-view-compact .card .card-body{height:auto!important;min-height:0!important;transition:all .25s ease;}
body.seat-view-compact .card .card-body .info{height:60px!important;transition:all .25s ease;}
body.seat-view-compact .card .card-body .info-split{width:100%!important;transition:all .25s ease;}
body.seat-view-compact .card .iot-split{display:none!important;transition:all .25s ease;}
body.seat-view-compact .card .entry-info,body.seat-view-compact .card .fee-info,body.seat-view-compact .card .info .game,body.seat-view-compact .card .info .cc{display:none!important;transition:all .25s ease;}
body.seat-view-compact .card[data-status="wait"] .btn-reserve,body.seat-view-compact .card[data-status="fault"] .btn-reserve{display:none!important;transition:all .25s ease;}
body.seat-view-compact .card .card-footer{display:none!important;transition:all .25s ease;}
.card-body .info .btn-outline:first-child{margin-top:7px;}
.seat-collapse{overflow:hidden;max-height:300px;opacity:1;transition:all .25s ease;}
body.seat-view-compact .seat-collapse{max-height:0;opacity:0;pointer-events:none;transition:all .25s ease;}
@media (max-width: 1810px) {
    body:not(.is-collapsed) .card{min-width:auto!important;min-height:241px;}
    body:not(.is-collapsed) .card .iot-split,body:not(.is-collapsed) .card:not(.booking) .card-footer{display:none!important;transition:all .25s ease}
    body:not(.is-collapsed) .card .card-body{height:auto!important;min-height:0!important;transition:all .25s ease}
    body:not(.is-collapsed) .card .card-body .info-split{width:100%!important;transition:all .25s ease}
}
@media (max-width: 1685px) {
    body.is-collapsed .card{min-width:auto!important;min-height:241px;}
    body.is-collapsed .card .iot-split,body.is-collapsed .card .card-footer{display:none!important;transition:all .25s ease}
    body.is-collapsed .card .card-body{height:auto!important;min-height:0!important;transition:all .25s ease}
    body.is-collapsed .card .card-body .info-split{width:100%!important;transition:all .25s ease}
}
.card .iot-split,.card .card-footer{max-height:200px;opacity:1;overflow:hidden;transition:max-height .25s ease,opacity .2s ease}
body:not(.is-collapsed) @media (max-width:1810px),body.is-collapsed @media (max-width:1685px){
    .card .iot-split,.card .card-footer{max-height:0;opacity:0;pointer-events:none}
}
/*******  Scheduler  ********/
:root{--timecol-width:88px;--room-width:200px;--px-per-minute:2;--row-height:64px;--head-height:44px;--line-color:#e7e7ee;--line-strong:#e7e7ee;--now-color:#ff2a55}
.scheduler{padding:24px;}
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 0 12px}
.toolbar .toolbar-start,.toolbar .toolbar-end{display:flex;align-items:center;gap:12px;}
.toolbar .date{font-size:17px;font-weight:700;display:flex;align-items:center;gap:12px;}
.toolbar .btn{padding:6px 10px;border:var(--bs-border);border-radius:8px;background:#fafafa;cursor:pointer}
.toolbar .btn-icon-only,.toolbar .btn-text-only{border:none;padding:0;background:none!important;color:var(--bs-gray-600)}
.toolbar .btn-icon-only:hover{color:var(--bs-primary)}
.toolbar .btn-text-only{font-size:13px;font-weight:600;color:var(--bs-primary);text-align:center;}
.toolbar .date:has(.disabled) .btn-text-only{font-weight:400;color:var(--bs-gray-600)}
.toolbar .date a{color:var(--bs-gray-600)}
.toolbar .date a:hover{color:var(--bs-primary)}
.toolbar .time-guide{border:var(--bs-border);border-radius:8px;display:flex;align-items:center;background:var(--bs-white);line-height:36px;height:36px;padding:0 0 0 12px;}
.toolbar .time-guide .form-label{padding-right:12px;color:var(--bs-gray-600);line-height:36px;margin-bottom:0}
.toolbar .time-guide input{border:none;border-radius:0;background:transparent;font-weight:600;line-height:34px;}
.toolbar .time-guide input:focus,.toolbar .time-guide select:focus{outline:0;}
.toolbar .time-guide input+.form-label{padding-left:12px;}
.toolbar .time-guide select{line-height:34px;height:34px;border:none;}
.toolbar .time-guide #applyConfig{margin-left:12px;border:none;border-radius:0 8px 8px 0;border-left:var(--bs-border);line-height:34px;padding:0 12px;font-size:14px;font-weight:600;}
.toolbar .btn-group .form-label{padding:0 12px;color:var(--bs-gray-600);line-height:34px;border:var(--bs-border);margin-bottom:0;background:var(--bs-white);border-radius:8px 0 0 8px}
.toolbar .btn-group .btn{line-height:34px;height:36px;padding:0;width:36px;background:var(--bs-white)}
.grid-wrap{border:var(--bs-border);border-radius:12px 12px 0 0;overflow:hidden;background:var(--bs-white);box-shadow:0 4px 16px #0000000a}
.grid-head{display:flex;position:sticky;top:0;z-index:10;background:var(--bs-white);border-bottom:1px solid #eee;height:var(--head-height)}
.timecol-head{width:var(--timecol-width);flex:0 0 var(--timecol-width);display:flex;align-items:center;justify-content:center;font-weight:600;border-right:1px solid #eee}
.rooms-head{position:relative;flex:1 1 auto;overflow:hidden}
.rooms-head .rooms-track{position:relative;height:100%;white-space:nowrap}
.rooms-head .room-cell{display:inline-flex;align-items:center;justify-content:space-between;width:var(--room-width);height:100%;border-right:1px solid #f0f0f3;font-weight:600}
.rooms-head .room-cell:last-child{border-right:none;}
.grid-body{position:relative;height:calc(100vh - 353px)}
.timecol{position:absolute;left:0;top:0;bottom:0;width:var(--timecol-width);border-right:1px solid #eee;background:var(--bs-white);overflow:hidden;z-index:3}
.timecol-track{position:relative;will-change:transform}
.timecol .time-tick{position:absolute;z-index:1;left:0;width:100%;height:0;border-top:1px solid var(--line-color);padding-left:8px;font-size:12px;color:#555;transform:translateY(-.5px);display:flex;align-items:center;margin-top:-.5px;}
.timecol .time-tick:nth-child(2),.timecol .timecol-track .time-tick:not(:has(+ .time-tick)){border-top:0}
.timecol .time-tick strong{font-size:12px;font-weight:600;margin-top:24px;}
.grid-body .scroll-area{position:absolute;left:var(--timecol-width);right:0;top:0;bottom:0;overflow:auto;z-index:1} /*edit*/
.grid-lines{background:var(--bs-white);margin:-1px 0 0 -1px;position:absolute;inset:0;left:0;top:0;pointer-events:none;z-index:10} /*edit*/
.grid-lines .hline{position:absolute;left:0;right:0;height:0;border-top:1px solid var(--line-color)}
.grid-lines .hline.hour{border-color:var(--line-strong)}
.now-line{position:absolute;left:calc(var(--timecol-width) - 5px);right:0;height:0;border-top:1px solid var(--now-color);z-index:19;pointer-events:none;}
.now-marker{position:absolute;right:4px;padding:2px 10px;background:var(--now-color,#ff2a55);color:var(--bs-white);font-size:12px;font-weight:700;border-radius:999px;white-space:nowrap;pointer-events:none;z-index:10;margin-top:-11px;}
.after-hours{position:absolute;left:0;right:0;pointer-events:none;background:#00000006}
.timecol .after-hours-tc{position:absolute;left:0;right:0;background:#00000006;pointer-events:none;z-index:0}
.grid-wrap.has-hscroll .rooms-head .room-cell:last-child{border-right-color:transparent!important}
.grid-wrap.no-hscroll .rooms-head .room-cell:last-child{border-right:1px solid var(--line-color)!important}
.grid-wrap.no-vscroll .grid-lines{border-bottom:1px solid var(--line-color)}
.grid-wrap.has-vscroll .grid-lines{border-bottom:none}
.rooms-head .room-cell{position:relative;padding:0 8px;text-align:center}
.net-signal{width:12px;height:12px;border-radius:50%;}
.net-green{background:#22c55e}
.net-orange{background:#f59e0b}
.net-red{background:#ef4444}
.room-more{width:26px;height:26px;border:1px solid #e5e7eb;border-radius:8px;background:var(--bs-white);text-align:center;padding:0;}
.room-more:hover{background:#f8fafc}
.rooms-head .room-cell.fault{background:repeating-linear-gradient(-45deg,#ef44441f 0,#ef44441f 8px,#ef44442e 8px,#ef44442e 16px)}
.fault-layer{position:absolute;inset:0;left:0;top:0;pointer-events:none;z-index:5} /*edit*/
.fault-col{position:absolute;top:0;background:repeating-linear-gradient(-45deg,#ef44441f 0,#ef44441f 8px,#ef44442e 8px,#ef44442e 16px);opacity:.5}
.grid-lines{position:relative;z-index:1}
.book-layer{position:absolute;inset:0;z-index:15;pointer-events:auto;}
.room-menu{position:fixed;min-width:150px;background:var(--bs-white);border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 8px 24px #00000014;padding:6px 12px;z-index:9999}
.room-menu .title{font-weight:700;margin:4px 6px 8px;font-size:13px}
.room-menu .row{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-radius:8px}
.room-menu .row > span{width:auto;padding:0}
.room-menu .row > .switch{padding:0}
.room-menu .row:first-child{border-bottom:var(--bs-border);border-radius:0;padding-bottom:12px;margin-bottom:6px;}
.room-menu .row:last-child{border-top:var(--bs-border);border-radius:0;padding-top:12px;}
.switch{position:relative;width:36px;height:20px;border-radius:999px;background:#e5e7eb;transition:.2s}
.switch input{appearance:none;-webkit-appearance:none;width:0;height:0;opacity:0}
.switch .knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--bs-white);transition:.2s}
.switch:has(input:checked){background:#22c55e}
.switch-danger:has(input:checked){background:var(--bs-danger)}
.switch:has(input:checked) .knob{left:18px}
.booking-wrap{height:164px;padding:8px;gap:16px;border:var(--bs-border);margin-top:-1px;border-radius:0 0 12px 12px;background:var(--bs-white);display:flex;overflow:auto}
.booking-wrap .booking{width:100%;max-width:184px;min-width:184px;min-height:146px!important;border-radius:8px}
.booking-wrap .booking .card-header,.booking-wrap .booking .card-footer{line-height:36px;height:36px;display:flex!important;justify-content:space-between;background:var(--bs-bg);padding:0 12px;}
.booking-wrap .booking .card-body{gap:1px;display:flex;flex-direction:column;padding:6px 12px 10px;min-height:72px!important;}
.booking-wrap .booking .card-body>*{font-size:13px!important;font-weight:600!important;color:var(--bs-dark);}
.booking .book-no{font-size:15px;font-weight:700;color:var(--bs-primary)}
.booking .type{font-size:13px;font-weight:600;color:var(--bs-primary)}
.booking .payment{font-size:13px;font-weight:600;color:var(--bs-gray-500)}
.time-pop{position:fixed;min-width:140px;background:var(--bs-white);border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 10px 28px #0000001f;padding:10px 12px;z-index:10000;display:flex;margin-top:24px;margin-left:-88px;}
.time-pop .row-times{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:6px 2px 0;font-weight:600}
.time-pop .base{color:var(--bs-primary);display:flex;align-items:flex-start;gap:6px;margin-right:12px;padding-top:6px;font-weight:700}
.time-pop .row-times .text-center{width:36px;}
.time-pop .row-times .muted{opacity:.5;font-weight:700}
.time-pop .row-nums{display:flex;flex-wrap:wrap;gap:16px;padding:6px 0 2px}
.time-pop .num{min-width:36px;line-height:36px;text-align:center;border:var(--bs-border);border-radius:4px;font-weight:700;color:var(--bs-primary);background:var(--bs-bg);margin:auto;font-size:20px;}
.book-card{cursor:pointer;position:absolute;background:var(--bs-white);border:1px solid #e5e7eb;border-radius:8px;display:flex;flex-direction:column;overflow:hidden;min-height:104px;min-width:184px;box-shadow:rgba(0, 0, 0, 0.2) 0px 6px 20px -10px;pointer-events:auto;}
.book-card:hover{box-shadow:rgba(0, 0, 0, 0.2) 0px 18px 50px -10px!important;border:1px solid var(--bs-primary)}
.book-card .card-header{padding:8px 12px 6px;font-weight:700;font-size:15px;border-bottom:var(--bs-border);color:var(--bs-dark);background:var(--bs-bg)}
.book-card .card-body{padding:8px 12px;font-size:13px;line-height:1.35;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-start}
.book-card .nickname{font-weight:600;margin-bottom:2px;font-size:14px;}
.book-card .card-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:700;background:var(--bs-bg);border-top:var(--bs-border)}
.badge-using{color:#10b981}
.badge-waiting{color:#10b981}
.badge-closing{color:#dc2626;font-weight:800}
.badge-done{color:#9ca3af}
.badge-paid{color:#9ca3af}
.badge-unpaid{color:#ef4444}
.book-card.using .card-header{color:var(--bs-primary)}
.timer-lg{font-size:28px;font-weight:800;text-align:center;color:var(--bs-primary);letter-spacing:1px;padding:12px 0 0;margin:12px -12px 0;border-top:var(--bs-border)}
.timer-sub{text-align:center;font-size:13px;opacity:.7}
.game-course{text-align:center;font-size:14px;color:#059669;font-weight:700;margin-top:4px}
.after-hours,.after-hours-tc,.fault-layer,.fault-layer * {pointer-events:none;}
.time-input{width:56px;height:34px;padding:0 6px;border:1px solid #e5e7eb;border-radius:8px;text-align:center;letter-spacing:1px;font-size:15px;font-weight:700;margin-left:0;}
.time-input:first-child{margin-left:-6px;}
.time-input:focus{outline:0;}
.min-timepkr{position:fixed;z-index:99999;background:var(--bs-white);border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 12px 30px #00000024;padding:8px;display:grid;grid-template-columns:1fr 1fr;gap:8px;font-weight:600;font-size:14px;user-select:none}
.min-timepkr .col{width:48px;font-size:15px;max-height:220px;overflow:auto;-webkit-overflow-scrolling:touch}
.min-timepkr .title{font-size:12px;color:#6b7280;margin:2px 4px 6px;font-weight:700;text-align:center}
.min-timepkr .opt{padding:8px 0;margin:2px;border-radius:4px;text-align:center;cursor:pointer}
.min-timepkr .opt:hover{background:#f3f4f6}
.min-timepkr .opt.active{background:var(--bs-primary);color:var(--bs-white)}
.min-timepkr .opt.disabled{opacity:.35;pointer-events:none}
:root{--reserve-width:324px;--history-width:344px;--offcanavas-width:400px;}
.offcanvas.offcanvas-end{z-index:1060;box-shadow:rgba(0, 0, 0, 0.1) -10px 0px 50px;border-radius:12px 0 0 12px;width:var(--offcanavas-width)}
#ocReserve.offcanvas-end{--bs-offcanvas-width:var(--reserve-width);width:var(--bs-offcanvas-width);}
/* 멤버십 상세: 오프캔버스 폭은 전역(400px) 그대로, 내용만 전체 폭 채우기 (기본 oc-body 300px 고정 해제) */
#ocMsDetail .oc-body{width:100%;padding:0;position:relative;overflow-y:auto!important;overflow-x:hidden!important;}
.offcanvas-header{justify-content:space-between;border-bottom:var(--bs-border);padding:12px 16px 12px 24px;border-radius:12px 0 0 0}
.offcanvas-header .offcanvas-title{font-size:18px;font-weight:700;color:var(--bs-primary);}
#ocHistory{--bs-offcanvas-width:var(--history-width);z-index:1055;box-shadow:rgba(0, 0, 0, 0.1) -10px 0px 50px;border-radius:12px 0 0 12px;padding:0 20px 0 0;margin-right:-20px;}
#ocHistory.offcanvas-end{right:var(--reserve-width)!important;}
/* 드로워 내부 레이아웃: flex 컬럼 — 헤더/프로필/탭(flex-shrink-0)은 고정, oc-body가 남은 높이를 채우며 스크롤, oc-footer는 하단 고정.
   (기존 position:fixed + 100vh 계산은 offcanvas transform 해제 시 푸터가 뷰포트로 이탈하고 body가 드로워를 넘치는 문제가 있었음) */
.oc-wrap,.oc-form{height:100%;position:relative;}
.oc-form{display:flex;flex-direction:column;}
#ocReserve .offcanvas-body{overflow-x:hidden!important;}
.oc-body{width:100%;position:relative;overflow-y:auto!important;overflow-x:hidden!important;height:auto;flex:1 1 auto;min-height:0;}
.oc-footer{background:var(--bs-white);padding:12px 24px;display:flex;justify-content:space-between;border-top:var(--bs-border);flex-shrink:0;width:100%;border-radius:0 0 0 12px;gap:4px;}
/* 푸터가 있는 드로워는 offcanvas-body 패딩 제거(푸터가 하단·좌우에 밀착), 내부 여백은 oc-body가 담당 */
.offcanvas-body:has(.oc-footer){padding:0;}
#ocReserve .oc-body{padding:24px 24px 12px;} /* 기존 offcanvas-body 12px + oc-body 12px 여백 유지 */
.oc-footer .btn{line-height:36px;height:36px;padding:0;}
.oc-footer .btn-outline-danger:not(:has(.material-symbols-outlined)),.oc-footer .btn-outline-primary:not(:has(.material-symbols-outlined)),.oc-footer .btn-outline-secondary:not(:has(.material-symbols-outlined)){padding:0 12px!important;}
.oc-grid-7{grid-template-columns:repeat(7,1fr)}
.offcanvas-header .btn-icon-only,.card-header .btn-icon-only,#customerModal .btn-icon-only{padding:0;position:static;}
.offcanvas-body .form-control,.offcanvas-body .form-control+.btn.#customerModal .form-control,#customerModal .form-control+.btn{border:var(--bs-border);background:var(--bs-white);}
.offcanvas-body .form-control+.btn,#customerModal .form-control+.btn{width:36px;padding:0;color:var(--bs-dark)}
.offcanvas-body .form-control+.btn:hover,#customerModal .form-control+.btn:hover{color:var(--bs-primary)}
.offcanvas-body .form-check,#customerModal .form-check{white-space:nowrap}
.offcanvas-footer{padding:12px 24px;display:flex;justify-content:flex-end;border-top:var(--bs-border);position:fixed;bottom:0;border-radius:0 0 0 12px;width:var(--offcanavas-width)}
#ocReserve .form-label{font-weight:700;font-size:14px;}
.open-history{margin-right:-6px;color:var(--bs-primary);font-size:12.5px;}
.open-history .icon-xs{margin-top:-1px!important;}
#ocPhoneWrap{position:relative}
#ocPhoneWrap .input-group{padding-right:12px;}
#ocPhoneLayer{position:absolute;top:100%;left:0;right:0;z-index:1061;overflow:auto;border-radius:4px;margin-top:2px;max-height:280px;width:276px;}
#ocPhoneLayer .list-group-item span:not(.badge),#ocPhoneLayer .list-group-item small{font-size:13px!important;font-weight:700;color:var(--bs-dark)}
.offcanvas .badge,#customerModal .badge{padding:0 4px;line-height:18px;height:18px;font-size:11px;border:none;font-weight:500;border-radius:4px;min-width:18px;}
#ocGuestLayer{position:absolute;top:100%;left:0;right:0;z-index:1062;border-radius:4px;width:276px;}
#ocGuestLayer.show-inline{display:flex!important}
#ocGuestLayer.card{min-height:auto!important;}
#ocGuestLayer .card-header{padding:8px 8px 8px 12px}
#ocGuestLayer .card-body{flex-direction:column;padding:12px;gap:12px;}
/* 2026-08-23 미등록 고객 등록: 반응형 카드 접힘 규칙보다 우선해 취소·적용 버튼을 항상 노출한다. */
#ocGuestLayer .card-footer{display:flex!important;justify-content:space-between;}
#ocGuestLayer .card-footer .btn{width:60px!important;}
#ocGuestLayer .card-body .guest-item .form-label{font-weight:500;font-size:12px;margin-bottom:4px;color:var(--bs-gray-600)}
.form-check-input{background-color:var(--bs-white);border-color:var(--bs-gray-300);width:18px;height:18px;margin-top:1px;}
.form-check-input:checked{background-color:var(--bs-primary);border-color:var(--bs-primary)}
#ocReserve .btn,#customerModal .btn{font-size:13px;font-weight:600;}
#ocReserve .btn-outline-secondary:hover,#customerModal .btn-outline-secondary:hover{background:var(--bs-white);color:var(--bs-primary);border-color:var(--bs-primary)}
#ocMemo{height:76px;border:var(--bs-border);border-radius:4px;}
.oc-scroll-x{overflow-x:auto;overflow-y:hidden}
#ocSummary.card{min-width:100%;min-height:72px;border:none;border-radius:4px;padding:10px 12px;margin-bottom:12px;background-color:var(--bs-primary);color:var(--bs-white);}
#ocResultCard.card{min-width:100%;min-height:108px;border:none;border-radius:4px;padding:10px 12px;margin-bottom:12px;background-color:var(--bs-primary);color:var(--bs-white);}
#ocResultCard.card.bg-danger{background-color:var(--bs-danger);}
#ocSummary .card-body,#ocResultCard .card-body{display:flex;flex-direction:column;gap:8px}
#ocSummary .item-row,#ocResultCard .item-row{display:flex;justify-content:space-between}
#ocSummary .item-title,#ocResultCard .item-title{opacity:.5}
#ocHourRow,#ocMinRow{display:flex;overflow-x:auto!important;overscroll-behavior-x:contain;overflow-y:hidden!important;gap:4px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;white-space:normal;}
#ocMinRow{justify-content:center}
#ocHourPrev,#ocHourNext{padding:6px;}
#ocRoomRow{display:flex;gap:4px;flex-wrap:wrap}
.oc-item{position:relative;margin-bottom:12px;}
.oc-item .item-header,#customerModal .oc-item .form-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}
.list-group-item{display:flex;align-items:center;justify-content:space-between;padding:12px;}
.list-group-item .badge{margin-left:4px;}
#histTabs{display:flex;gap:4px;}
#histTabs .btn{text-align:left;flex:1 1 auto !important;border:var(--bs-border);font-weight:500;height:70px;white-space:nowrap;}
#histTabs .btn span{width:100%;text-align:right;font-weight:700;font-size:20px;margin-top:4px;padding:0;color:var(--bs-dark)}
#histList .list-group-item{display:flex;padding:12px 0;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:2px;padding:12px 0;border:0;border-bottom:var(--bs-border)}
#histList .list-group-item .list-item{display:flex;align-items:center;}
#histList .list-group-item .badge{margin-left:0;margin-right:8px;border-radius:4px;width:28px;padding:0;line-height:18px;height:18px;}
#histList .list-item:first-child .badge:first-child{background-color:var(--bs-primary)!important;color:var(--bs-white)!important}
#histList .item-no{font-size:20px;font-weight:700;margin-right:8px;color:var(--bs-dark)}
#histList .item-store,#histList .item-use{font-size:13px;font-weight:500;color:var(--bs-gray-500);padding-top:5px;}
#histList .item-booking{font-size:15px;font-weight:600;color:var(--bs-dark);}
#histList .item-pay{font-size:20px;font-weight:700;margin-right:8px;color:var(--bs-primary);margin-left:36px;}
#histList .item-date{font-size:13px;font-weight:500;margin-left:36px;}
.personnel,.holes{height:36px;padding:0;gap:4px;display:flex;margin-bottom:12px;}
.oc-hour-item{display:flex;scroll-snap-align:start;width:36px;height:36px;padding:0;gap:4px;scroll-margin-inline:0;}
.oc-hour-item .btn,.personnel .btn,.holes .btn,.oc-day .btn,.oc-hour-item .btn,.oc-min-item .btn,.rooms .btn{width:36px;height:36px;line-height:36px;padding:0;border:var(--bs-border);border-radius:4px;font-weight:700;font-size:14px;background:var(--bs-white);color:var(--bs-dark)}
.rooms .btn{width:64px;height:64px;line-height:62px;}
/* 2026-08-16 예약 게임 상품: 상품명 길이에 맞춰 버튼을 늘리고 좁은 화면에서는 다음 줄로 배치한다. */
.holes{height:auto;min-height:36px;flex-wrap:wrap;}
.holes .btn{width:auto;min-width:36px;padding:0 10px;white-space:nowrap;}
.oc-hour-item .btn.disabled,.personnel .btn.disabled,.holes .btn.disabled,.oc-day.disabled .btn,.oc-hour-item .btn.disabled,.oc-min-item .btn.disabled,.rooms .btn.disabled{color:var(--bs-gray-300)}
.btn-check:checked + .btn,:not(.btn-check) + .btn:active,.btn.active, .btn.show{border-color:var(--bs-primary)!important;color:var(--bs-primary)!important;background:var(--bs-white)!important}
.customer-info{display:flex;align-items:center;justify-content:space-between;border:var(--bs-border);border-radius:4px;height:36px;line-height:36px;padding:0 12px;}
.customer-info span:not(.badge){font-size:13px;}
.customer-info>div{display:flex;align-items:center;gap:4px;}
.oc-grid-7{display:flex;margin-bottom:12px;position:relative;padding:0;gap:4px;}
.oc-day{position:relative}
.oc-day .badge-dot{position:absolute;width:6px;height:6px;border-radius:50%;right:6px;top:6px;background:currentColor}
.oc-day.sun > label{color:#e03131}
.oc-day.sat > label{color:#1c7ed6}
.oc-day.holiday > label{color:#845ef7}
.oc-day.disabled > label,.btn.disabled{opacity:.45;pointer-events:none}
#ocHistory:not(.show) .offcanvas-header .btn-icon-only{display:none!important;}
#ocHistory.show .offcanvas-header .btn-icon-only{display:inline-flex;}
#ocCustTag.badge{font-weight:600}
#ocHistoryOpen.disabled{pointer-events:none;opacity:.5}
.badge-vip{background:#FFD700;color:#111;border:1px solid #0000001a}
.badge-excellent{background:var(--bs-success);color:#fff}
.badge-black{background:#000;color:#fff}
.modal-header{display:flex;justify-content:space-between;padding:12px 8px 12px 12px;align-items:center;}
.modal-header h3{font-size:17px;color:var(--bs-primary);font-weight:700;margin:0;line-height:26px;}
.modal-header .btn{padding:0;}
.add-time{display:flex;gap:4px;}
.add-time .btn{min-width:48px;height:48px;line-height:48px;padding:0;font-weight:700;font-size:20px;color:var(--bs-dark);border:var(--bs-border)}
.add-time .btn:hover{color:var(--bs-primary);border-color:var(--bs-primary)}
.ocflex{display:flex;justify-content:space-between;align-items:center;line-height:28px;font-size:15px;padding-bottom:8px;}
.table-responsive .table tbody tr:last-child td,.border .table tbody tr:last-child td{border-bottom:none;}
#pmPlanned,#cardPayAmount,#cashPayAmount,#simplePayAmount{line-height:50px;height:50px;font-size:30px!important;font-weight:700}
#pmAmount{padding:0 32px 0 12px;line-height:50px;height:50px;font-size:30px!important;color:var(--bs-primary);background-color:var(--bs-gray-100);border-color:var(--bs-primary);outline:0;border-radius:8px;}
.ocunit{position:absolute;right:8px;top:44px;}
.add-pay{margin-top:12px;display:flex;justify-content:flex-end}
#pmAmount+.small,#cashRecv+.small,#pmPlanned .small,#cardPayAmount .small,#cashPayAmount .small,#simplePayAmount .small,#cashChange .small{font-size:18px!important;font-weight:500!important;}
#paymentModal .col-6{min-height:568px;}
#paymentModal .btn-outline-secondary,.modal-footer .btn-outline-secondary{font-size:15px;font-weight:700;border:var(--bs-border);}
#paymentModal .btn-primary,.modal-footer .btn-primary{font-size:15px;font-weight:700;}
#paymentModal .btn-outline-secondary:hover,.modal-footer .btn-outline-secondary:hover{background:var(--bs-white);color:var(--bs-primary);border-color:var(--bs-primary);}
#paymentModal .payment-type{display:flex;align-items:center;gap:4px;margin-bottom:24px;}
.table .btn-icon-only{padding:0;}
.pay-panel{position:absolute;padding-right:12px;margin-top:-20px;}
.pay-panel .card{border-radius:8px;width:545px!important;}
.pay-panel .card-header{padding:12px;font-size;15px;color:var(--bs-primary);font-weight:700;}
.pay-panel .card-body{flex-direction:column;padding:12px;gap:10px;}
body:not(.is-collapsed) .pay-panel .card-footer.d-flex{display:flex!important;}
.pay-panel .input-group-text{font-size:13px;}
.pay-panel .input-group input{border:var(--bs-border);font-size:15px;}
#cashRecv,#cashChange{color:var(--bs-primary);font-size:24px;font-weight:700;padding-right:32px;}
#cashRecv+.small,#cashChange+.small{position:absolute;top:8px;right:20px;font-size:13px!important;}
.modal .text-body-secondary{font-weight:600;font-size:13px!important;color:var(--bs-gray-500)!important}
#cashRecv:disabled{background:var(--bs-white);opacity:1;}
#cashRcptNumber:disabled{background:var(--bs-gray-100);}

/**** Off Canvas *****/
.item-detail{padding:12px;}
.item-row label{font-size:13px;font-weight:600;color:var(--bs-gray-500)}
.item-row p{font-size:17px;font-weight:700;color:var(--bs-dark);margin-bottom:12px;}

/*******  Grid Table  ********/
:root{--panel-bottom-gap:24px;--row-height:44px;--empty-bg:#fff;--header-bg:#f9fafb;--header-shadow:0 1px 0 #0000000f;--border-color:#e5e7eb}
.grid-wrapper{padding:24px;}
.grid-header{margin-bottom:12px;display:flex;align-items:flex-end;justify-content:space-between;padding:12px;border:var(--bs-border);background:var(--bs-white);border-radius:8px;}
.grid-header .grid-header-start,.grid-header .grid-header-end{display:flex;align-items:center;gap:4px;}
.grid-header, .grid-header-start{overflow:visible;gap:18px;white-space:nowrap;}
.grid-header .item{position:relative;overflow:visible;}
.grid-header .item label{display:block;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--bs-gray-500)}
.grid-header .item .item-inline{display:flex;align-items:center;gap:4px;}
.grid-header .item .form-control{background:var(--bs-white)}
.grid-header .item .datepicker{width:124px;}
.gridjs-container{padding:0;}
.gridjs-wrapper{border:1px solid #e5e7eb;box-shadow:none;}
.gridjs-footer{border-top:none;padding:6px 12px;}
th.gridjs-th,td.gridjs-td{padding:8px;text-align:center;white-space:nowrap;}
tr:hover td.gridjs-td{background:var(--bs-primary-bg-subtle)}
.gridjs-pagination .gridjs-pages button{padding:9px 0px;width:36px;white-space:nowrap;border-color:var(--bs-border-color);}
.gridjs-pagination .gridjs-pages button:first-child,.gridjs-pagination .gridjs-pages button:last-child{padding:9px 14px;width:auto;}
.gridjs-pagination{display:flex;align-items:center;justify-content:flex-end;}
.gridjs-pagination .gridjs-summary{display:none;}
button.gridjs-sort-neutral{background-image:url('../img/icon-sort.svg');background-size:cover;}
button.gridjs-sort-desc{background-image:url('../img/icon-desc.svg');background-position-y:0%;background-size:cover;ransform:rotateX(0deg);transition:var(--bs-transition);}
button.gridjs-sort-asc {background-image:url('../img/icon-desc.svg');background-position-y:0%;transform:rotateX(180deg);background-size:cover;transition:var(--bs-transition);}
.grid-wrapper .btn-outline-secondary:not(label),.offcanvas .btn-outline-secondary:not(label),#customerModal .btn-outline-secondary:not(label){font-size:14px;padding:0 12px 0 12px;font-weight:600;background:var(--bs-white);border:var(--bs-border);height:36px;line-height:36px;}
/*.btn-excel{margin-left:4px;}*/
/*.grid-wrapper .btn-outline-secondary .material-symbols-outlined,.offcanvas .btn-outline-secondary .material-symbols-outlined,#customerModal .btn-outline-secondary .material-symbols-outlined{margin-top:-4px;margin-right:2px;}*/
.grid-wrapper .btn-outline-secondary:hover,.offcanvas .btn-outline-secondary:hover{color:var(--bs-primary);border-color:var(--bs-primary);}
.grid-wrapper .btn-outline-secondary.btn-excel:hover,.offcanvas .btn-outline-secondary.btn-excel:hover{color:var(--bs-green);border-color:var(--bs-green);}
.grid-panel{position:relative;display:flex;flex-direction:column;min-height:320px;border:1px solid var(--border-color);background:var(--bs-white);border-radius:12px}
.grid-host{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;border-radius:12px}
.grid-host > .gridjs-container{height:100%;display:flex;flex-direction:column;min-height:0;border-radius:12px;}
.grid-host .gridjs-wrapper{flex:1 1 auto;min-height:0;overflow:auto;background:var(--empty-bg);max-height:none!important;border:none;border-radius:12px 12px 0 0}
.grid-host .gridjs-footer{margin-top:auto;border-top:1px solid var(--border-color);background:var(--bs-white)}
.grid-host thead th{position:sticky;top:0;z-index:2;background:var(--header-bg);/*box-shadow:var(--header-shadow)*/}
.grid-host .gridjs-tr{height:var(--row-height)}
.grid-host .gridjs-td,.grid-host .gridjs-th{vertical-align:middle;white-space:nowrap}
.grid-host .gridjs-tr{cursor:pointer}
.grid-host .gridjs-tbody .gridjs-tr:last-child .gridjs-td{border-bottom:var(--bs-border)!important;}
.grid-host .gridjs-container.is-last-page .gridjs-tbody .gridjs-tr:last-child .gridjs-td{border-bottom: 1px solid var(--grid-border-color, var(--bs-border-color, #dee2e6)) !important;}

/*******  Layout Toggle  ********/
body:not(.has-content-rail) .app-main{margin-right:0;}
body:not(.has-content-rail) .app-main .scheduler,body:not(.has-content-rail) .app-main .grid-wrapper{height:calc(100vh - var(--header-h))}
body.is-collapsed .brand{opacity:0;width:1px;height:var(--header-h);transition:var(--bs-transition);}
body.is-collapsed .brand-sm{opacity:1;width:40px;display:flex;align-items:center;gap:8px;height:var(--header-h);border-right:var(--bs-border);transition:var(--bs-transition);}
body.is-collapsed .aside{width:var(--aside-w-min);transition:var(--bs-transition)}
body.is-collapsed .app-main,body.is-collapsed .app-footer{margin-left:var(--aside-w-min);transition:var(--bs-transition);}
body.is-collapsed .dashboard-booking-toast-wrap{left:var(--aside-w-min);transition:var(--bs-transition)}
body.is-collapsed .aside-head .label,body.is-collapsed .nav-primary .label,body.is-collapsed .aside-tail{display:none;opacity:0;width:1px;transition:var(--bs-transition)}
body.is-collapsed .aside:hover{width:var(--aside-w);box-shadow:0 6px 24px #00000014}
body.is-collapsed .aside:hover .label,body.is-collapsed .aside:hover .nav-primary .label,body.is-collapsed .aside:hover .aside-tail{display:block;opacity:1;width:auto;transition:var(--bs-transition)}
html.fonts-ready .mi,html.fonts-ready .material-symbols-outlined{visibility:visible}

/*******  Icon Font  ********/
.material-symbols-outlined{font-variation-settings:'FILL' 0,'wght' 300,'GRAD' 0,'opsz' 24;display:inline-block; width:1em; line-height:1em; font-size:24px; vertical-align:middle;}
.icons-ready .material-symbols-outlined{ visibility:visible; }
.icon-xs{font-size:20px!important;width:20px!important;line-height:20px!important;}
.icon-sm{font-size:24px!important;width:24px!important;line-height:24px!important;}
.icon-md{font-size:36px!important;width:36px!important;line-height:36px!important;}
.icon-lg{font-size:72px!important;width:72px!important;line-height:72px!important;}
.icon-xl{font-size:96px!important;width:96px!important;line-height:96px!important;}

/******* Scrollbars  ********/
.scroll-area,.col,#ocHourRow,.oc-body{overflow:auto;scrollbar-width:none!important;-ms-overflow-style:none!important;scrollbar-gutter:stable both-edges;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.scroll-area::-webkit-scrollbar,.col::-webkit-scrollbar,#ocHourRow::-webkit-scrollbar,.oc-body::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}
.scroll-area::-webkit-scrollbar-thumb,.scroll-area::-webkit-scrollbar-track,.col::-webkit-scrollbar-thumb,.col::-webkit-scrollbar-track,.oc-body::-webkit-scrollbar-thumb,.oc-body::-webkit-scrollbar-track,#ocHourRow::-webkit-scrollbar-thumb,#ocHourRow::-webkit-scrollbar-track{background:transparent!important}
.grid-hostt .gridjs-wrapper{position:relative;-webkit-overflow-scrolling:auto!important}
.grid-host .gridjs-wrapper::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}
.nicescroll-rails-vr{width:6px!important;border-radius:6px}
.nicescroll-rails-vr .nicescroll-cursors{width:6px!important;border-radius:6px}

/******* Width/Height Class  ********/
.w10{width:10px}
.w20{width:20px}
.w30{width:30px}
.w40{width:40px}
.w50{width:50px}
.w60{width:60px}
.w70{width:70px}
.w80{width:80px}
.w90{width:90px}
.w100{width:100px}
.w110{width:110px}
.w120{width:120px}
.w130{width:130px}
.w140{width:140px}
.w150{width:150px}
.w160{width:160px}
.w170{width:170px}
.w180{width:180px}
.w190{width:190px}
.w200{width:200px}
.w250{width:250px}
.w630{max-width:630px!important}

/******* SELECT  ********/
select.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:14px;line-height:1.5;color:var(--bs-dark);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-bg);background:url('../img/icon-select-down.svg') no-repeat center right;background-size:32px 24px;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:all .15s ease-in-out;height:36px;font-family:var(--bs-font-family);font-weight:500;}
select.form-select:disabled{border:1px solid var(--bs-border-color-disabled);color:rgba(30,33,3,.5);background-color:var(--bs-disabled-bg);}
select.form-select:focus{color:var(--bs-body-color);background-color:var(--bs-bg);border-color:var(--bs-primary);outline:0;box-shadow:0 0 0 var(--bs-border-radius) rgba(var(--bs-primary-rgb),.25);outline:0;}
select.form-select:read-only:focus{background-color:var(--bs-disabled-bg);outline:0;}
select.form-select.error{border:1px solid var(--bs-danger);}
select.form-select.error:focus{border:1px solid var(--bs-danger);box-shadow:0 0 0 var(--bs-border-radius) rgba(var(--bs-danger-rgb),.25);outline:0;}
/* Custom Select */
.custom-container{display:block!important;position:relative;width:100%!important;vertical-align:middle;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
.custom-container.input-group{display:flex!important;}
.custom-container *{-webkit-box-sizing:border-box;box-sizing:border-box}
.custom-container .custom-search-input{font-weight:500;font-size:14px!important;color:rgba(30,33,3,.5)!important;}
.custom-container .custom-drop{position:absolute;top:100%;z-index:1010;width:100%;border:0;border-radius:4px;background:#fff;-webkit-box-shadow:0 4px 5px #00000026;box-shadow:0 4px 5px #00000026;opacity:0;height:1px;transition:var(--bs-transition);overflow:hidden;margin-top:-4px;z-index:1056;}
.custom-container.custom-up .custom-drop{top:auto;bottom:100%;margin-top:0;margin-bottom:4px;}
.custom-container.custom-with-drop .custom-drop{opacity:1;height:auto;margin-top:4px;border:var(--bs-border);transition:var(--bs-transition);}
.custom-container a,.custom-container a:hover{cursor:pointer;color:var(--bs-dark);}
.custom-container .search-choice .group-name,.custom-container .custom-single .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}
.custom-container .search-choice .group-name:after,.custom-container .custom-single .group-name:after{content:":";padding-left:2px;vertical-align:top}
.custom-container-single .custom-single{position:relative;display:block;overflow:hidden;padding:0 0 0 10px;height:36px;border:var(--bs-border);border-radius:4px;background-color:#fff;text-decoration:none;white-space:nowrap;line-height:34px;font-size:14px;transition:var(--bs-transition);}/*edit*/
.custom-container-single .custom-default{color:var(--bs-dark)}/*edit*/
.custom-container-single .custom-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}
.custom-container-single .custom-single-with-deselect span{margin-right:38px}
.custom-container-single .custom-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(custom-sprite.png) -42px 1px no-repeat;font-size:1px}
.custom-container-single .custom-single abbr:hover{background-position:-42px -10px}
.custom-container-single.custom-disabled .custom-single abbr:hover{background-position:-42px -10px}
.custom-container-single .custom-single div{position:absolute;top:0;right:0;display:block;width:32px;height:100%}
.custom-container-single .custom-single div b{display:block;width:100%;height:100%;background:url('../img/icon-select-down.svg') no-repeat center center;transition:var(--bs-transition);}
.custom-container-single.custom-up .custom-single div b{background:url('../img/icon-select-down.svg') no-repeat center center;margin-top:1px;transition:var(--bs-transition);-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}
.custom-container-single .custom-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}
.custom-container-single .custom-search input[type="text"]{margin:1px 0;padding:0 20px 0 5px;width:100%;height:auto;outline:0;border:1px solid #dee2e6;background:url('../img/icon-search.svg') no-repeat calc(100% - 5px) center;font-size:1rem;line-height:32px;border-radius:4px}
.custom-container-single .custom-drop{margin-top:4px;border-radius:4px;background-clip:padding-box}
.custom-container-single.custom-container-single-nosearch .custom-search{position:absolute;clip:rect(0,0,0,0);-webkit-clip-path:inset(100% 100%);clip-path:inset(100% 100%)}
.custom-container .custom-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:200px;-webkit-overflow-scrolling:touch;}
.custom-container .custom-results li{display:none;margin:0;padding:0 6px;list-style:none;line-height:36px;word-wrap:break-word;-webkit-touch-callout:none}
.custom-container .custom-results li.active-result{display:list-item;cursor:pointer}
.custom-container .custom-results li.disabled-result{display:list-item;color:#ccc;cursor:default}
.custom-container .custom-results li.highlighted{background-color:#e9ecef;color:var(--bs-dark);border-radius:4px;}
.custom-container .custom-results li.no-results{color:#6D7882;display:list-item;background:#e9ecef;border-radius:4px;}
.custom-container .custom-results li.group-result{display:list-item;font-weight:700;cursor:default}
.custom-container .custom-results li.group-option{padding-left:15px}
.custom-container .custom-results li em{font-style:normal;text-decoration:underline}
.custom-container-single.custom-container-single-nosearch .custom-results{margin-top:4px;}
.custom-container-multi .custom-choices{position:relative;overflow:hidden;margin:0;padding:0 3px 1px;width:100%;height:auto;line-height:33px;border:var(--bs-border);background-color:#fff;cursor:text;border-radius:4px;}
.custom-container-multi.input-group .custom-choices{width:1%;}
.custom-container-multi .custom-choices li{float:left;list-style:none}
.custom-container-multi .custom-choices li.search-field{margin:0;padding:0;white-space:nowrap}
.custom-container-multi .custom-choices li.search-field input[type="text"]{margin:1px 0;padding:0 0 0 7px;height:25px;outline:0;border:0!important;background:transparent!important;-webkit-box-shadow:none;box-shadow:none;color:var(--bs-dark);font-size:1rem;line-height:36px;border-radius:0;width:25px}
.custom-container-multi .custom-choices li.search-choice{position:relative;margin:3px 3px 0 0;padding:0 20px 0 5px;border:1px solid #dee2e6;max-width:100%;border-radius:3px;background-color:#f8f9fa;color:var(--bs-dark);line-height:26px;cursor:default}
.custom-container-multi.input-group .custom-choices li.search-choice,.custom-container-multi .custom-choices.readonly li.search-choice{margin:3px 3px 2px 0;}
.custom-container-multi .custom-choices.readonly{background-color: var(--bs-disabled-bg);}
.custom-container-multi .custom-choices.readonly li.search-choice{padding:0 5px;}
.custom-container-multi .custom-choices li.search-choice span{word-wrap:break-word}
.custom-container-multi .custom-choices li.search-choice .search-choice-close{position:absolute;top:5px;right:3px;display:block;width:16px;height:16px;background:url('../img/icon-cancel-sm.svg') no-repeat center center;transition:var(--bs-transition);}
.custom-container-multi .custom-choices li.search-choice .search-choice-close:hover{background:url('../img/icon-cancel-sm-hover.svg');transition:var(--bs-transition);}
.custom-container-multi .custom-choices li.search-choice-disabled{padding-right:5px;border:var(--bs-border);background-color:#e4e4e4;olor:#666}
.custom-container-multi .custom-choices li.search-choice-focus{background:#d4d4d4;outline:0;}
.custom-container-multi .custom-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}
.custom-container-multi .custom-results{margin:0;padding:0}
.custom-container-multi .custom-drop{margin-top:4px;border-radius:4px;background-clip:padding-box}
.custom-container-multi .custom-drop .result-selected{display:list-item;color:#ccc;cursor:default}
.custom-container-multi .custom-results{margin:4px;}
.custom-container-active .custom-single{border-color:var(--bs-primary);}
.custom-container-active.custom-with-drop .custom-single{border-color:var(--bs-primary);color:var(--bs-dark);background-color:#FFF;outline:0;transition:var(--bs-transition);}
.custom-container-active.custom-with-drop .custom-single div{border-left:none;background:transparent}
.custom-container-active.custom-with-drop .custom-single div b{margin-top:1px;transition:var(--bs-transition);-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}
.custom-container-active.custom-with-drop.custom-up .custom-single div b{margin:0;transition:var(--bs-transition);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0)}
.custom-container-active .custom-choices{border-color:var(--bs-primary);}
.custom-container-active.custom-with-drop .custom-choices{border-color:var(--bs-primary);color:var(--bs-dark);background-color:#FFF;outline:0;transition:var(--bs-transition);}
.custom-container-active .custom-choices li.search-field input[type="text"]{color:#222!important}
.custom-disabled{cursor:default}
input[type="number"]{padding-right:0!important;}
.custom-disabled .custom-single,.custom-disabled .custom-choices{cursor:default;border:1px solid var(--bs-border-color-disabled);color:rgba(30,33,3,.5);background-color:var(--bs-disabled-bg);}
.custom-disabled .custom-choices .search-choice{cursor:default;opacity:.5;}
.custom-disabled .custom-choices .search-choice .search-choice-close{cursor:default;}
.custom-disabled .custom-choices .search-choice .search-choice-close:hover{cursor:default;background:url('../img/icon-cancel-sm.svg') no-repeat center center!important;}
select.readonly+.custom-container a+.custom-drop{display:none}
select.readonly+.custom-container-active.custom-with-drop .custom-single div b{transform:rotate(0deg)!important;margin-top:0;}
.nicescroll-rails-vr{width:5px!important;border-left:0;border-radius:var(--bs-border-radius);}
.nicescroll-rails-hr{height:5px!important;border-top:0;border-radius:var(--bs-border-radius);}
.nicescroll-rails-vr .nicescroll-cursors{width:5px!important;border-radius:var(--bs-border-radius);background:#ced4da!important;}
.nicescroll-rails-hr .nicescroll-cursors{height:5px!important;border-radius:var(--bs-border-radius);background:#ced4da!important;}
.custom-results+.nicescroll-rails-vr{left:calc(100% - 8px)!important;}
.mini-layer+.nicescroll-rails-vr{left:calc(100% - 8px)!important;}
.disable-search+.custom-container .custom-search{display:none;}
#guideStep_custom .custom-single{border-radius:0;border-width:1px 0 1px 0;border-color:#DFDFE5!important}

/*** 아이프레임 **/
.seat-modal-content{width:1140px;height:674px;}
.seat-modal-body{padding:0;width:1140px;height:674px;}
.seat-iframe{border:none!important;width:1140px;height:674px;display:block;border-radius:var(--bs-modal-border-radius);}
.iframe-content{position:relative;display:flex;flex-direction:column;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:none;border-radius:var(--bs-modal-border-radius);outline:0;height:100%;width:1140px;height:674px;}
.iframe-header{display:flex;flex-shrink:0;border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius);justify-content:space-between;padding:12px 8px 12px 12px;align-items:center}
.iframe-header h3{font-size:20px;color:var(--bs-primary);font-weight:700;margin:0;line-height:36px}
.iframe-header h3 span{font-weight:600;font-size:13px!important;color:var(--bs-gray-500)!important;}
.iframe-header .col-6:first-child{display:flex;align-items:center;line-height:36px;gap:12px;}
.iframe-header .col-6:first-child .btn{line-height:36px;height:36px;padding:0 12px;}
.iframe-header .col-6:last-child{display:flex;justify-content:space-between;align-items:center;}
.iframe-header ul{list-style:none;display:flex;gap:40px;margin:0;padding:0 0 0 12px;}
.iframe-header ul li{list-style:none;margin:0;padding:0;}
.iframe-header ul a{line-height:46px;font-size:20px;color:var(--bs-dark);font-weight:700;margin:0;transition:var(--bs-transition);}
.iframe-header ul a:hover,.iframe-header ul a.active{color:var(--bs-primary);transition:var(--bs-transition);}
.iframe-header .btn{padding:0;height:26px;}
.iframe-body{position:relative;flex:0 1 auto;padding:var(--bs-modal-padding)}
.iframe-body .col-6{min-height:541px;}
.iframe-content .btn-outline-secondary,.iframe-body .btn-outline-secondary,.modal-footer .btn-outline-secondary{font-size:15px;font-weight:700;border:var(--bs-border);}
.iframe-body .btn-primary,.modal-footer .btn-primary{font-size:15px;font-weight:700;display:flex;gap:4px;align-items:center}
.iframe-content .btn-outline-secondary:hover,.iframe-body .btn-outline-secondary:hover,.modal-footer .btn-outline-secondary:hover{background:var(--bs-white);color:var(--bs-primary);border-color:var(--bs-primary);}
.iframe-body .payment-type{display:flex;align-items:center;gap:4px;margin-bottom:24px;}
.iframe-footer{border-top:var(--bs-border);padding:12px;}
.ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:break-all;display:inline-block;width:100%;vertical-align:bottom;text-align:}

.item-panel{position:absolute;margin-top:-8px;width:546px;}
.item-panel .card{border-radius:8px;min-height:auto;overflow:hidden;}
.game-slot-grid{display:flex;flex-direction:column;gap:12px;margin:12px;}
.slot-group{display:flex;align-items:center;gap:4px}
.item_header{width:30px;min-width:30px;text-align:center;font-size:13px;line-height:1.2;color:#808080;}
/*  Start : 상품명 (mnu_full_name) 추가를 위한 스타일 변경 // 26.06.04 // 김형희 */
.game-slot{width:110px;height:100px;padding:16px 8px;border:1px solid #C3C3C8;border-radius:4px;background:#fff;cursor:pointer;text-align:center;transition:var(--bs-transition);}
.game-slot .menu-name{display:block;font-size:15px!important;font-weight:700!important;color:var(--bs-primary)!important;margin-top:0;white-space:nowrap;overflow: hidden;text-overflow:ellipsis;}
.game-slot:hover .menu-name{color:var(--bs-white)!important;}
/*  End : 상품명 (mnu_full_name) 추가를 위한 스타일 변경 // 26.06.04 // 김형희 */
.game-slot .time{display:block;font-size:13px!important;font-weight:400!important;color:var(--bs-gray-50)!important;margin-top:10px;}
.game-slot .price{display:block;font-size:15px;font-weight:700;color:var(--bs-dark);margin-top:10px;}
.game-slot .fullname{display:block;font-size:16px;font-weight:700;color:var(--bs-dark);}
.game-slot.is-current{border-color:var(--bs-primary);background:var(--bs-white);transition:var(--bs-transition);}
.game-slot:not(:disabled):hover{border-color:var(--bs-primary);background:var(--bs-primary);color:#fff;transition:var(--bs-transition);}
.game-slot:not(:disabled):hover .time,.game-slot:not(:disabled):hover .price{color:var(--bs-white)!important;transition:var(--bs-transition);}
.game-slot:disabled,.game-slot.is-disabled{background:#f5f5f5;border-color:#e0e0e0;color:#aaa;cursor:not-allowed}
.game-slot:disabled .time,.game-slot:disabled .price{color:#aaa}
.item-panel .btn-icon-only{width:26px;height:26px;padding:0;border:none!important;}
.item-panel .table-responsive,.item-panel .table{width:100%}
.iframe-content .form-control-sm{padding:0 8px;}

#customerModal .modal-content{border-radius:12px}
#customerModal .list-group-item{cursor:pointer}
#customerModal .list-group-item:hover{background-color:#f5f7fa}
#ocPhoneLayer .list-group-item{cursor:pointer}
#ocGuestLayer{font-size:13px}
.customer-info{font-size:14px}

.seat-modal-content{position:relative;overflow:visible}
:root{--history-panel-w:360px;--history-panel-gap:12px}
.history-panel{position:absolute;top:0;left:calc(-1 * (var(--history-panel-w) + var(--history-panel-gap)));width:var(--history-panel-w);height:674px;background:#fff;border-radius:8px;box-shadow:0 10px 30px #0000002e;border:1px solid #00000014;display:flex;flex-direction:column;opacity:0;pointer-events:none;transform:translateX(40px);transition:transform .22s ease,opacity .22s ease;z-index:3}
.history-panel.is-open{opacity:1;pointer-events:auto;transform:translateX(0)}
.history-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #00000014}
.history-head h3{font-size:20px;color:var(--bs-primary);font-weight:700;margin:0;line-height:36px}
.history-body{padding:12px 14px;overflow:auto;flex:1}
#openHistory.active{border-color:var(--bs-primary);color:var(--bs-primary);box-shadow:0 0 0 .15rem #0d6efd26}
.history-panel table td{text-align:center;padding:8px 4px;}

.seat-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.seat-tile{border:1px solid var(--bs-border-color,#dee2e6);border-radius:4px;padding:10px 8px;text-align:center;cursor:pointer;user-select:none;background:#fff}
.seat-tile .no{font-weight:700}
.seat-tile .badge{display:inline-block;margin-top:6px;padding:4px 8px;border-radius:999px;font-size:12px}
.seat-tile.is-current{outline:2px solid #6f42c159;border-color:#6f42c159}
.seat-tile.is-current .badge{background:#6f42c1ff;color:#fff}
.seat-tile.is-using{opacity:1}
.seat-tile.is-using .badge{background:#0A9F60ff;color:#fff}
.seat-tile.is-using{cursor:not-allowed;opacity:.65}
.seat-tile.is-available .badge{background:#6c757d26;color:#6c757d}
.seat-tile.is-selected{outline:2px solid #0A9F6059;border-color:#0A9F6059}
.seat-tile.is-selected .badge{background:#0A9F60ff;color:#fff}
#controlRight .btn{padding:6px 12px;min-width:70px;}
#moveWrap{display:flex;flex-direction:column;position:relative}
#seatGrid{overflow:auto;min-height:0;max-height:219px;position:relative;margin:-2px;padding:2px;}
#seatGrid.seat-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
#seatGrid::-webkit-scrollbar{width:3px}
#seatGrid::-webkit-scrollbar-thumb{background:#00000026;border-radius:999px;border:3px solid transparent;background-clip:content-box}
#receiptGridPanel{height:calc(50vh - 150px)!important;min-height:240px}
#productGridPanel{height:22vh!important;min-height:120px;margin-top:12px;}
#paymentGridPanel{height:calc(21vh - 7px)!important;min-height:120px;margin-top:12px;}

/**** Grid.js *****/
#receiptGridHost .gridjs-thead{position:sticky;top:0;z-index:10;}
/*#receiptGridHost .gridjs-thead th{border-bottom:var(--bs-border)!important;}*/
th.gridjs-th,td.gridjs-td{border:none}
th.gridjs-th:last-child,td.gridjs-td:last-child{border-right:none!important}
:root{--grid-line:#DFDFE5;--grid-head-bg:#f9fafb;--grid-head-text:gray;--grid-summary-bg:#f9fafb;--grid-summary-text:var(--bs-primary,#6366f1);--grid-summary-line:var(--bs-primary,#6366f1);--grid-header-height:44px}
.gridjs-table{border-collapse:separate!important;border-spacing:0!important;width:100%}
.gridjs-footer{box-shadow:none!important}
.gridjs-thead{position:sticky!important;top:0!important;z-index:100!important;background-color:#fff!important}
.gridjs-thead .gridjs-tr{top:0!important}
.gridjs-th,.gridjs-td{box-sizing:border-box!important;position:relative;border-right:1px solid var(--grid-line)!important;border-bottom:1px solid var(--grid-line)!important;text-align:center!important;vertical-align:middle!important;background-color:#fff!important;background-clip:padding-box}
.gridjs-th{background-color:var(--grid-head-bg)!important;color:var(--grid-head-text)!important;font-weight:600!important;position:sticky!important;top:0!important;z-index:110!important;border-bottom:none!important;box-shadow:inset 0 -1px 0 var(--grid-line)}
.gridjs-tr.is-summary-row{cursor:default!important;pointer-events:none!important}
.gridjs-tr.is-summary-row > .gridjs-td,.gridjs-tr.is-summary-row > td.is-summary-cell{position:sticky!important;top:var(--grid-header-height)!important;z-index:90!important;background-color:var(--grid-summary-bg)!important;color:var(--grid-summary-text)!important;font-weight:800!important;border-top:none!important;border-bottom:none!important;box-shadow:none!important}
.gridjs-tr.is-summary-row > td.is-summary-cell{border-right:1px solid var(--grid-line)!important}
.gridjs-tr.is-summary-row > .gridjs-td::after,.gridjs-tr.is-summary-row > td.is-summary-cell::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--grid-summary-line);pointer-events:none;z-index:2}
.gridjs-tr.is-summary-row > .gridjs-td::before,.gridjs-tr.is-summary-row > td.is-summary-cell::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:transparent;pointer-events:none;z-index:1}
.gridjs-tr:not(.is-summary-row){cursor:pointer}
.gridjs-td.merge-hidden{border-bottom:none!important}
.gridjs-td.merge-last{border-bottom:1px solid var(--grid-line)!important}
.gridjs-td .btn{height:26px!important;line-height:24px!important;font-size:13px!important;padding:0 4px!important;margin:auto;}

nav > ul.main-menu{display:flex;list-style:none;}
nav > ul.main-menu > li{position:relative}
.submenu{display:none;position:absolute;top:calc(100% - 1px);left:0;min-width:160px;background:#fff;box-shadow:0 4px 12px #0000001a;border:var(--bs-border);border-radius:4px;padding:0;z-index:1000;list-style:none}
.has-submenu:hover .submenu{display:block}
.submenu li a{display:block;padding:8px 16px;color:#333;text-decoration:none;font-size:15px!important;transition:background .2s}
.submenu li:first-child a{border-top-left-radius:4px;border-top-right-radius:4px}
.submenu li:last-child a{border-bottom-left-radius:4px;border-bottom-right-radius:4px}
.submenu li a:hover{background:#f8f9fa;color:var(--bs-primary)}
.has-submenu > a::after{content:'expand_more';font-family:'Material Symbols Outlined';font-size:16px;vertical-align:middle;margin-left:4px}
/* 2026-08-17 레퍼런스 병합: 신규 관리 화면 스타일을 통합하되 기존 예약·룸 보완 규칙은 유지한다. */
.btn-outline-primary,.btn-outline-secondary,.btn-outline-danger{background:var(--bs-white);padding:0 12px;line-height:34px;height:36px;}
.btn-outline-secondary.btn-icon-only{padding:0!important;min-width:36px;}
.btn-outline-secondary.btn-icon-only .material-symbols-outlined{margin:0 auto!important;}
.btn-outline-primary:has(.material-symbols-outlined),.btn-outline-secondary:has(.material-symbols-outlined):not(.btn-icon-only),.btn-outline-danger:has(.material-symbols-outlined){padding:0 16px 0 12px}
.btn-primary:not(:has(.material-symbols-outlined)){padding:0 12px!important;height:36px;line-height:34px;}
.btn-primary:has(.material-symbols-outlined){padding:0 12px 0 8px!important;height:36px;line-height:34px;}
.btn-outline-primary:hover{background:var(--bs-primary)}
.header-end .btn-outline-primary,.btn-outline-primary{border:1px solid var(--bs-primary)!important;color:var(--bs-primary);font-weight:600;height:36px;line-height:34px;display:flex;align-items:center;gap:4px}
.btn-outline-secondary,.iframe-content .btn-outline-secondary,.iframe-body .btn-outline-secondary,.modal-footer .btn-outline-secondary{font-size:14px;font-weight:700;height:36px;line-height:34px;border:var(--bs-border);background:var(--bs-white)!important;display:flex;align-items:center;gap:4px;justify-content:center}
.btn-danger,.btn-success,.btn-warning{font-size:14px;font-weight:700;padding:0 12px;height:36px;line-height:34px;display:flex;align-items:center;gap:4px;justify-content:center}
.btn-outline-secondary:hover,.iframe-content .btn-outline-secondary:hover,.iframe-body .btn-outline-secondary:hover,.modal-footer .btn-outline-secondary:hover{background:var(--bs-white)!important;color:var(--bs-primary);border-color:var(--bs-primary)}
#tab-product,#tab-bay,#tab-device,#tab-manager,#tab-unmanned,#tab-account,#tab-alcoin{height:100%;padding:0}
#tab-product.active,#tab-bay.active,#tab-device.active,#tab-manager.active,#tab-unmanned.active,#tab-account.active,#tab-alcoin.active{display:flex;flex-direction:column}
.item-inline{display:flex;gap:4px}
.item-inline button{justify-content:center}
.badge-use,.badge-approved,.badge-status-done,.nt-flag-on,.alcoin-type-charge,.badge-excellent,.badge-match,.ev-state-on{background:#dcfce7!important;color:#15803d!important;border:0!important;border-radius:9999px!important}
.badge-status-cancel,.alcoin-type-use,.alcoin-badge-use,.fb-noreply-tag,.badge-foursome{background:#fee2e2!important;color:#b91c1c!important;border:0!important;border-radius:9999px!important}
.badge-pending,.badge-status-partial,.badge-franchise,.nt-pin-tag,.nt-flag-soon,.badge-skins,.ev-state-soon{background:#fef3c7!important;color:#b45309!important;border:0!important;border-radius:9999px!important}
.badge-national,.badge-member-membership,.badge-stroke{background:#dbeafe!important;color:#1d4ed8!important;border:0!important;border-radius:9999px!important}
.badge-member-store,.badge-tourney{background:#ede9fe!important;color:#6d28d9!important;border:0!important;border-radius:9999px!important}
.badge-member-parkya{background:#ccfbf1!important;color:#0f766e!important;border:0!important;border-radius:9999px!important}
.badge-vip,.badge-member-vip{background:#fef9c3!important;color:#a16207!important;border:0!important;border-radius:9999px!important}
.badge-nouse,.badge-complete,.badge-method,.nt-flag-off,.nt-badge-shop,.badge-member-none,.badge-normal,.ev-state-end{background:#f1f5f9!important;color:#475569!important;border:0!important;border-radius:9999px!important}
.nt-badge-hq{background:#e0e7ff!important;color:#4338ca!important;border:0!important;border-radius:9999px!important}
.badge-black{border-radius:9999px!important}
.gd-cat-badge{border-radius:9999px!important}

/* ============================================================
   [통합] customer.css · store.css · pos.css · stats.css 를
   plex.css 로 통합. (개별 파일 및 <link> 제거)
   ============================================================ */

/* ---- 공용: 그리드 본문 flex-fill (customer/store 등 단일 그리드) ---- */
.grid-wrapper{display:flex;flex-direction:column;}
.grid-panel{flex:1 1 auto;min-height:0;}
.grid-host .gridjs-wrapper{height:auto!important;}
/* 결제현황은 3개 grid-panel 을 JS(fitPanelHeight)로 관리 → flex 채움 예외 */
#receiptGridPanel,#productGridPanel,#paymentGridPanel{flex:0 0 auto;}
/* 탭형 페이지(휴면·블랙리스트 등) flex-fill */
.grid-wrapper .tab-content{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}
.grid-wrapper .tab-content > .tab-pane.active{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}

/* ======================== [customer] ======================== */
/* ── 본문 레이아웃: 그리드가 래퍼를 flex-fill 하도록 ───────────
   참조 원본 그리드의 하드코딩된 height(calc(100vh - 420px) 등)가
   web 레이아웃에서 하단 여백을 어긋나게 하므로, 그리드를 컨테이너에
   맞춰 채워 상·하·좌·우 24px 여백을 동일하게 유지한다. (하단만 보정) */

/* 탭형 페이지(휴면·블랙리스트)도 동일하게 flex-fill */

/* ── 폭 유틸 ─────────────────────────────────── */
.w124{width:124px!important}
.w240{width:240px!important}

/* ── 아이콘 / 폰트 유틸 ──────────────────────── */
.icon-40{font-size:40px!important;width:40px!important;line-height:40px!important;}
.icon-va-sm{font-size:13px;vertical-align:-2px;}
.fs-18{font-size:18px}
.mw-400{max-width:400px!important}

/* ── 날짜 빠른선택 버튼 ──────────────────────── */
.date-quick-btns{display:flex;gap:4px;align-items:center;}
.date-quick-btns .badge{font-size:13px;padding:6px 12px;background:var(--bs-white);border:var(--bs-border);color:var(--bs-dark);transition:var(--bs-transition)}
.date-quick-btns .badge.active{background:var(--bs-white);color:var(--bs-primary);border-color:var(--bs-primary);transition:var(--bs-transition)}

/* ── 탭 하단 필터 헤더 ──────────────────────── */
.grid-header-tab{border-top:none!important;border-radius:0 0 8px 8px!important;}

/* ── 그리드 소형 버튼 ───────────────────────── */
.btn-grid-sm{height:28px!important;line-height:26px!important;padding:0 8px!important;font-size:12px!important;margin:auto;}

/* ── 오프캔버스·모달 프로필 배지 ─────────────── */
.badge-auto{height:auto!important;}

/* ── 오프캔버스 공용 44px 원형 아바타 ────────── */
.avatar-oc{width:44px;height:44px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px;flex-shrink:0}
.avatar-oc.bg-warning{color:rgba(0,0,0,.75)!important}

/* ── 오프캔버스 섹션 레이블 ─────────────────── */
.oc-section-label{font-weight:700;font-size:14px;color:var(--bs-body-color);margin-bottom:8px;display:block}

/* ── 통계 카드 단위 텍스트 (회·원·일 등) ─────── */
.stat-unit{font-size:11px;}

/* ── 행 컨텍스트 메뉴 ───────────────────────── */
.ctx-menu{position:fixed;background:var(--bs-white);border:1px solid #dee2e6;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.14);min-width:164px;z-index:9900;padding:4px 0;display:none;}
.ctx-menu.is-open{display:block;}
.ctx-menu-item{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:14px;color:var(--bs-dark);cursor:pointer;white-space:nowrap;user-select:none;transition:background .1s,color .1s;font-weight:600;}
.ctx-menu-item:hover{background:#eef1ff;color:var(--bs-primary);}
.ctx-menu-item .mi{font-size:16px!important;width:16px!important;line-height:16px!important;color:var(--bs-gray-400);flex-shrink:0;}
.ctx-menu-item:hover .mi{color:var(--bs-primary);}
.ctx-menu-divider{height:1px;background:#dee2e6;margin:4px 0;}
.row-action-btn{width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid #dee2e6;background:transparent;cursor:pointer;transition:background .1s,border-color .1s;}
.row-action-btn:hover{background:#f8f9fa;border-color:#adb5bd;}

/* ── 파크야 회원 페이지 (KPI 채널 / SNS 필터) ── */
.kpi-divider{width:1px;height:70%;background:var(--bs-border-color);}
.kpi-ch-card{min-width:120px;}
.kpi-ch-icon{width:22px;height:22px;flex-shrink:0;}
.kpi-ch-label{font-size:11px;font-weight:600;}
.kpi-ch-count{font-size:17px;line-height:1.3;}
.sns-filter{height:36px;}
.sns-filter-img{width:34px;height:34px;vertical-align:middle;margin-top:-1px;display:block}
.gridjs-sns-icon{width:28px;height:28px;vertical-align:middle;margin:-2px 4px 0 -6px;}
.push-date{font-size:11px;color:#aaa;margin-top:1px;}

/* ======================== [store] ======================== */
/* store-info(매장정보) 전용: app-main 높이 고정 → 내부만 스크롤
   (store-info.html 인라인 <style> 통합, .is-shop-detail 마커로 스코프) */
.app-main.is-shop-detail{height:calc(100vh - var(--header-h, 56px));display:flex;flex-direction:column;overflow:hidden;}
/* 툴바 버튼 높이 36px 정렬 — 옆 셀렉트/입력(36px)과 맞춤
   (btn-sm 기본 39px → padding-y 제거하고 height/line-height 고정) */
.prod-toolbar .btn{height:36px;line-height:34px;padding-top:0;padding-bottom:0;}

.nav-primary .nav-divider{display:flex;align-items:center;gap:12px;padding:10px 18px 0;height:26px;margin:6px 0;border-top:1px solid var(--bs-border-color);cursor:default;font-size:10px;font-weight:700;color:var(--bs-gray-500)}
.is-collapsed .nav-primary .nav-divider{overflow:hidden}
.form-item.datepicker input, .course-date{text-align:center;padding:0;}
.date-quick-btns{display:flex;gap:4px;align-items:center;}
.date-quick-btns .badge{font-size:13px;padding:6px 12px;background:var(--bs-white);border:var(--bs-border);color:var(--bs-dark);transition:var(--bs-transition)}
.date-quick-btns .badge.active{background:var(--bs-white);color:var(--bs-primary);border-color:var(--bs-primary);transition:var(--bs-transition)}
.auto-row .custom-container{display:block!important;position:relative;vertical-align:middle;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:90px!important;}
.date-picker-row .form-item.datepicker{flex:1}
.date-picker-row .form-item.datepicker input{font-size:12px;height:28px;padding:2px 6px;text-align:center}
.badge-method{font-size:10px;padding:2px 8px;border-radius:20px;background:#6b7280;color:#fff}
.floor-tabs{display:flex;align-items:center;gap:0;padding:0;border-bottom:2px solid #e8eaf0;margin-top:12px;margin-bottom:8px;}
.floor-tabs .ft-tab{position:relative;display:flex;align-items:center;gap:6px;padding:16px 18px 12px;font-size:16px;font-weight:500;color:#8892a4;cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s;white-space:nowrap;}
.floor-tabs .ft-tab:hover{color:#4a5568;}
.floor-tabs .ft-tab.active{color:var(--bs-primary);border-bottom-color:var(--bs-primary);font-weight:600;}
.floor-tabs .ft-tab .ft-count{font-size:12px;font-weight:600;background:#f0f1f5;color:#8892a4;border-radius:20px;padding:3px 7px;transition:background .15s,color .15s;}
.floor-tabs .ft-tab.active .ft-count{background:#eeecfd;color:var(--bs-primary);}
.bay-tabs-row .floor-tabs{border-bottom:none;margin:0;padding:0;flex:1;}
.badge-use{display:inline-block;background:#16a34a;color:#fff;font-size:12px;font-weight:600;padding:2px 8px;border-radius:20px;}
.tour-section-title{font-size:16px;font-weight:700;color:var(--bs-dark);display:flex;align-items:center;gap:6px;margin:18px 0 6px;}
.tour-section-title:first-child{margin-top:0px;}
.tour-section-title::before{content:'';width:10px;height:10px;border-radius:50%;border:2px solid var(--bs-primary);flex-shrink:0;}
.tour-table{width:100%;border-collapse:separate;border-spacing:0;border-radius:8px;border:1px solid #dee2e6;font-size:13px;margin-bottom:0;}
.tour-table th,.tour-table td{border-right:1px solid #dee2e6;border-bottom:1px solid #dee2e6;padding:4px 8px;vertical-align:middle;}
.tour-table tr>*:last-child{border-right:none;}
.tour-table tr:last-child>*{border-bottom:none;}
.tour-table td.holes{display:table-cell;margin-bottom:0;}
.tour-table th{background:var(--bs-gray-100);font-weight:600;color:var(--bs-gray-600);white-space:nowrap;width:125px;}
.tour-table tr:first-child th:first-child{border-top-left-radius:8px;}
.tour-table thead th:last-child{border-top-right-radius:8px;}
.tour-table thead th{border-bottom:var(--bs-border)!important;padding:10px 0;}
.tour-table tbody tr:last-child th:first-child{border-bottom-left-radius:8px;}
.tour-table .form-control,.tour-table .form-select{font-size:14px;}
.req{color:#dc3545;margin-left:2px;font-weight:700;}
.tour-table .form-check:has(.checkbox){min-height:auto;padding-left:8px;margin:0;height:20px;}
.tour-table .form-text{margin-top:0;margin-left:8px;}
.img-preview-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.img-preview-list:empty{margin-top:0;}
.page-op-mode .app-main{overflow-y: auto; height: calc(100vh - var(--header-h));}
.op-mode-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:18px 12px;border-radius:12px;border:2px solid var(--bs-border-color);background:var(--bs-white);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;flex:1;min-width:0;font-size:14px;font-weight:600;color:var(--bs-gray-600);user-select:none}
.op-mode-btn .op-icon{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;transition:background .15s}
.op-mode-btn:hover{border-color: var(--bs-gray-400);}
.op-mode-btn.active{box-shadow: 0 0 0 3px color-mix(in srgb, var(--op-color) 20%, transparent); border-color: var(--op-color); color: var(--op-color);}
.op-mode-btn.active .op-icon{background: color-mix(in srgb, var(--op-color) 12%, transparent); color: var(--op-color);}
.op-mode-btn[data-mode="normal"]{--op-color: #1a8f52;}
.op-mode-btn[data-mode="reserve"]{--op-color: #1971c2;}
.op-mode-btn[data-mode="temp-close"]{--op-color: #c07010;}
.op-mode-btn[data-mode="inspect"]{--op-color: #c92a2a;}
.current-mode-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 14px;border-radius:999px;font-size:13px;font-weight:700}
.current-mode-badge::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
.bay-op-grid{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start}
.bay-op-card{border:1px solid var(--bs-border-color);border-radius:10px;padding:12px;background:var(--bs-white);display:flex;flex-direction:column;gap:8px;transition:border-color .15s;min-width:calc(25% - 6px);max-height:93px}
.bay-op-card.st-closed{border-color:#e9ecef;background:#f8f9fa}
.bay-op-card.st-inspect{border-color:#ffd08a;background:#fffcf5}
.bay-op-card.st-reserve{border-color:#a5d8ff;background:#f5faff}
.bay-op-no{font-size:15px;font-weight:800;color:#1a2236}
.bay-op-floor{font-size:11px;color:#8892a4;font-weight:500}
.biz-day-row{display:grid;grid-template-columns:30px 36px 1fr 1fr;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #f1f3f7}
.biz-day-row:last-child{border-bottom:none}
.biz-day-label{font-size:13px;font-weight:700;color:#3a4468}
.biz-day-row.holiday .biz-day-label{color:#c92a2a}
.biz-day-row.saturday .biz-day-label{color:#1971c2}
.biz-day-row.closed-day .biz-time{pointer-events:none;opacity:.35}
.tp-field{position:relative;display:block;width:100%}
.tp-trigger{display:flex;align-items:center;justify-content:space-between;height:36px;padding:0 8px;border:1px solid var(--bs-border-color);border-radius:4px;background:#fff;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.tp-trigger:hover{border-color:var(--bs-primary)}
.tp-field.tp-open .tp-trigger{border-color:var(--bs-primary);box-shadow:0 0 0 3px #4f89fb26}
.tp-display{font-size:14px;font-weight:500;color:#1a2236;white-space:nowrap}
.tp-icon{font-size:15px;color:#aab0be;flex-shrink:0}
.biz-day-row.closed-day .tp-trigger{opacity:.35;pointer-events:none}
.tp-popup{display:none;position:absolute;top:calc(100% + 5px);left:50%;transform:translateX(-50%);z-index:200;background:#fff;border:1.5px solid var(--bs-primary);border-radius:4px;box-shadow:0 6px 20px #4f89fb38;padding:12px 14px;white-space:nowrap}
.tp-field.tp-open .tp-popup{display:block}
.tp-wrap{display:inline-flex;align-items:center;gap:2px;user-select:none}
.tp-btn{background:none;border:none;padding:0;cursor:pointer;color:#c9c9c9;display:flex;align-items:center;justify-content:center;width:24px;height:16px;border-radius:4px;transition:color .12s,background .12s;line-height:1}
.tp-btn:hover{color:var(--bs-primary);background:#4f89fb1a}
.tp-btn .material-symbols-outlined{font-size:18px}
.tp-val{font-size:18px;font-weight:700;color:#1a2236;min-width:28px;text-align:center;line-height:1.4}
.tp-col-ap .tp-val{color:var(--bs-primary);font-size:13px;font-weight:700;min-width:28px}
.tp-colon{font-size:20px;font-weight:700;color:#1a2236;align-self:center;padding:0 2px;line-height:1;margin-bottom:2px}
.auto-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid #f1f3f7;gap:10px}
.auto-row:last-child{border-bottom:none}
.auto-row-label{font-size:14px;font-weight:600;color:#3a4368;flex:1}
.auto-row-sub{font-size:12px;color:#8892a4;margin-top:2px}
.section-header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.op-sec-title{font-size:20px;font-weight:700;color:var(--bs-primary)}
.section-header .small{font-size:14px}
.section-header-end{display:flex;align-items:center;gap:8px;font-size:14px;height:30px}
.save-bar{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;background:var(--bs-white);border-top:var(--bs-border);position:sticky;bottom:0;z-index:10;width:calc(100% + 48px);margin:0 -24px -24px}
.emergency-bar-title{font-size:20px;font-weight:700;color:#c92a2a}
.emergency-bar-desc{font-size:14px;color:#a33;line-height:1.5}
.op-main-wrap{padding:24px}
.op-mode-card{min-height: 198px;}
.op-mode-left{border-right: 1px solid var(--bs-border-color);}
.op-emergency-panel{background: #fff5f5; border-radius: 0 12px 12px 0;}
.emergency-icon{font-size: 24px !important; vertical-align: middle;}
.op-content-row{margin-bottom: 24px; min-height: calc(100vh - 363px);}
.op-bay-body{gap: 0 !important; justify-content: flex-start;}
.op-section-card{min-height: calc(100vh - 387px);}
.op-section-body{gap: 12px; display: flex; flex-direction: column; justify-content: flex-start;}
.biz-hours-header{display: grid; grid-template-columns: 30px 36px 1fr 1fr; gap: 8px; padding-bottom: 6px; border-bottom: 2px solid #e8eaf0; margin-bottom: 4px;}
.biz-col-label{font-size: 12px; color: #8892a4;}
.op-toast-wrap{z-index: 9999;}
.auto-row .custom-select-no-single{width: 110px;}
.bay-op-card .custom-container{width: 100% !important;}
.op-bay-body{justify-content:flex-start!important;}
.op-mode-card{min-height: 198px!important;}
.op-section-card{min-height: calc(100vh - 387px)!important;}
.op-section-card .op-section-body{justify-content:flex-start!important;}
.w36{width:36px!important}
.w220{width:220px!important}
.w423{width:423px!important}
.w300{width:300px!important}
.w100p{width:100%!important}
.prod-split-wrap{display:flex;flex-direction:column;height:100%;min-height:0;}
.dev-use-on{color:var(--bs-success);font-size:14px;}
.dev-use-off{color:var(--bs-gray-400);font-size:14px;}
.dev-no-cell{font-size:12px;color:var(--bs-gray-500);}
.dev-shop-cell{font-size:12px;color:var(--bs-gray-600);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px;}
.dev-empty-row{font-size:13px;}
.nt-pin-on{font-size:16px;color:var(--bs-primary);}
.nt-pin-tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;background:#f59e0b;color:#3d2c00;margin-right:2px;vertical-align:middle;line-height:20px;}
.nt-title-cell{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:1px;}
.nt-flag-on{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:#16a34a;color:#fff;line-height:20px;}
.nt-flag-off{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:#6b7280;color:#fff;line-height:20px;}
.nt-flag-soon{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:#f59e0b;color:#3d2c00;line-height:20px;}
.notice-view{padding:20px 0;overflow-y:auto;}
.notice-view-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.notice-view-date{font-size:12px;color:var(--bs-gray-500);}
.notice-view-flags{display:flex;gap:6px;margin-left:auto;}
.notice-view-title{font-size:18px;font-weight:700;color:var(--bs-dark);margin:0 0 14px;padding-bottom:14px;border-bottom:1px solid var(--bs-border-color);line-height:1.4;}
.notice-view-body{font-size:14px;line-height:1.7;color:var(--bs-gray-700);min-height:160px;}
.notice-view-body img{max-width:100%;}
.notice-view-files{margin-top:20px;padding-top:14px;border-top:1px solid var(--bs-border-color);}
.notice-view-files-title{font-size:12px;font-weight:600;color:var(--bs-gray-600);margin-bottom:8px;}
.notice-view-file{display:flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--bs-border-color);border-radius:6px;margin-bottom:6px;text-decoration:none;color:var(--bs-gray-700);font-size:13px;transition:all .15s;}
.notice-view-file:hover{border-color:var(--bs-primary);color:var(--bs-primary);background:#f8f9ff;}
.notice-file-list{margin-top:8px;display:flex;flex-direction:column;gap:6px;}
.notice-file-item{display:flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--bs-border-color);border-radius:6px;font-size:13px;background:var(--bs-white);}
.notice-file-ico{font-size:16px;color:var(--bs-gray-500);}
.notice-file-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--bs-gray-700);}
.notice-file-size{font-size:11px;color:var(--bs-gray-400);}
.notice-file-del{background:none;border:none;cursor:pointer;color:var(--bs-gray-400);padding:0;display:flex;}
.notice-file-del:hover{color:var(--bs-danger);}
.notice-file-del .material-symbols-outlined{font-size:16px;}
.upload-drop.is-dragover{border-color:var(--bs-primary);color:var(--bs-primary);background:#f8f9ff;}
.ev-state-on{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:#d1e7dd;color:#0f5132;}
.ev-state-soon{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:#cfe2ff;color:#084298;}
.ev-state-end{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:#f0f1f5;color:var(--bs-gray-500);}
.notice-view-period{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--bs-gray-600);background:#f8f9fa;border:1px solid var(--bs-border-color);border-radius:6px;padding:8px 12px;margin-bottom:16px;}
.notice-view-period strong{color:var(--bs-dark);}
.ev-period-ico{font-size:18px;color:var(--bs-primary);}
.ev-publish-info{font-size:12px;color:var(--bs-gray-500);font-weight:400;}
.star-btn.on .star-icon{color:#ffc107;font-variation-settings:'FILL' 1;}
.upload-drop{flex:1;border:2px dashed #dee2e6;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px;cursor:pointer;transition:border-color .2s;color:#888;}
.upload-drop:hover{border-color:var(--bs-primary);color:var(--bs-primary);}
.upload-drop .mi-upload{font-size:28px;}
.upload-hint{font-size:11px;color:#aaa;}
.icon-action-btn{background:none;border:none;cursor:pointer;padding:4px;border-radius:6px;color:var(--bs-gray-500);transition:all .2s;line-height:1;}
.icon-action-btn .material-symbols-outlined{font-size:18px;display:block;}
.icon-action-btn:hover{background:#f0f0ff;color:var(--bs-primary);}
.icon-action-btn.del:hover{background:#fff0f0;color:var(--bs-danger);}
.shop-pay-methods{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 0;}
.pay-method-group{display:flex;align-items:center;gap:6px;flex-wrap:wrap;border-left:2px solid #e5e7eb;padding-left:12px;margin-left:12px;}
.pay-method-group-label{font-size:11px;font-weight:700;color:#9ca3af;white-space:nowrap;margin:0 12px 0 0}
.shop-warn-msg{display:flex;align-items:center;gap:6px;margin-top:0;padding:10px 14px;background:#fef3c7;border-radius:8px;font-size:13px;color:#92400e;}
.shop-warn-msg .material-symbols-outlined{font-size:16px;color:#d97706;}
.req{color:var(--bs-danger);margin-left:2px;}
.checkboxItem{display:inline-flex;align-items:center;column-gap:4px;font-size:14px;line-height:20px;cursor:pointer}
.checkboxItem:not(:last-of-type){margin-right:16px}
.checkbox{appearance:none;position:relative;width:20px;height:20px;border:1px solid #d9d9d9;border-radius:4px;cursor:pointer;background-color:var(--bs-white)}
.checkbox:checked{border:1px solid var(--bs-primary);background-color:var(--bs-primary)}
.checkbox:checked::after{content:"";position:absolute;top:5px;left:3px;width:12px;height:6px;border-bottom:2px solid var(--bs-white);border-left:2px solid var(--bs-white);transform:rotate(-45deg)}
.shop-detail-wrap{display:flex;gap:0;height:100%;min-height:0;overflow:hidden}
.shop-detail-nav{width:168px;flex-shrink:0;border-right:1px solid var(--bs-border-color);background:var(--bs-white);padding:0;overflow-y:auto}
.shop-detail-nav .nav-item{display:block}
.shop-detail-nav .nav-link{display:flex;align-items:center;gap:8px;padding:10px 20px;font-size:13px;color:var(--bs-gray-700);text-decoration:none;border-left:3px solid transparent;transition:background .15s,color .15s;white-space:nowrap}
.shop-detail-nav .nav-link .material-symbols-outlined{font-size:18px;color:var(--bs-gray-500);flex-shrink:0}
.shop-detail-nav .nav-link:hover{background:var(--bs-primary-bg-subtle);color:var(--bs-primary)}
.shop-detail-nav .nav-link:hover .material-symbols-outlined{color:var(--bs-primary)}
.shop-detail-nav .nav-link.active{background:var(--bs-primary-bg-subtle);color:var(--bs-primary);font-weight:600;border-left-color:var(--bs-primary)}
.shop-detail-nav .nav-link.active .material-symbols-outlined{color:var(--bs-primary)}
.shop-detail-content{flex:1;overflow-y:auto;background:var(--bs-gray-100,#f8f9fa);padding:0;}
.shop-tab-pane{display:none}
.shop-tab-pane.active{display:block}
.shop-detail-content .p24{padding:24px;}
.shop-detail-head{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:var(--bs-white);border-bottom:1px solid var(--bs-border-color);flex-shrink:0}
.shop-detail-head-left{display:flex;align-items:center;gap:12px}
.shop-head-title{display:flex;align-items:center;gap:10px}
.shop-head-code{display:inline-flex;align-items:center;padding:3px 10px;border-radius:4px;background:#1e2535;color:#fff;font-size:12px;font-weight:700;letter-spacing:.5px}
.shop-head-name{font-size:18px;font-weight:700;color:var(--bs-gray-900)}
.shop-head-shop-code,.shop-code-inline{font-size:12px;font-weight:600;color:var(--bs-gray-500)}
.shop-head-right{display:flex;align-items:center;gap:8px}
/* 2026-08-17 Parkya 기준정보 비교: 불일치 항목과 동기화 예정값을 한눈에 구분한다. */
.shop-sync-summary{display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:10px 12px;border:1px solid;border-radius:7px;font-size:13px}
.shop-sync-summary .material-symbols-outlined{font-size:18px}
.shop-sync-summary.is-changed{background:#fff7ed;border-color:#fdba74;color:#9a3412}
.shop-sync-summary.is-synced{background:#ecfdf5;border-color:#86efac;color:#166534}
.shop-sync-summary.is-error{background:#fef2f2;border-color:#fca5a5;color:#991b1b}
.view-table td.is-sync-diff{background:#fff7ed;box-shadow:inset 3px 0 #f97316}
.shop-sync-next{display:flex;align-items:center;gap:3px;margin-top:4px;color:#c2410c;font-size:11px;font-weight:600}
.shop-sync-next .material-symbols-outlined{font-size:13px}
.shop-sync-confirm-list{overflow:hidden;border:1px solid var(--bs-border-color);border-radius:7px}
.shop-sync-confirm-item{display:grid;grid-template-columns:120px minmax(0,1fr) 18px minmax(0,1fr);align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--bs-border-color);font-size:13px}
.shop-sync-confirm-item:last-child{border-bottom:0}
.shop-sync-confirm-item>.material-symbols-outlined{font-size:16px;color:var(--bs-gray-400)}
.shop-sync-confirm-item .is-source{color:#c2410c;font-weight:600}
.sync-rotating{animation:shop-sync-rotate .8s linear infinite}
@keyframes shop-sync-rotate{to{transform:rotate(360deg)}}
.view-table-wrap{border-radius:8px;overflow:hidden;border:1px solid var(--bs-border-color)}
.view-table{width:100%;border-collapse:collapse;background:var(--bs-white);font-size:13px}
.view-table th{width:130px;background:var(--bs-gray-100);padding:10px 14px;font-weight:600;color:var(--bs-gray-700);border:1px solid var(--bs-border-color);white-space:nowrap;vertical-align:middle;text-align:left}
.view-table td{padding:10px 14px;color:var(--bs-gray-900);border:1px solid var(--bs-border-color);vertical-align:middle;font-size:14px;}
.view-table td:has(.btn-icon-only){padding:4px 14px;}
.view-table td.empty{color:var(--bs-gray-400);font-style:italic}
.view-table tr:first-child th,.view-table tr:first-child td{border-top:none}
.view-table tr:last-child th,.view-table tr:last-child td{border-bottom:none}
.view-table th:first-child,.view-table td:first-child{border-left:none}
.view-table th:last-child,.view-table td:last-child{border-right:none}
.view-section-title{font-size:16px;font-weight:700;color:var(--bs-gray-700);padding:0 0 0 10px;border-left:3px solid var(--bs-primary);margin-bottom:8px;margin-top:20px;line-height:16px}
.view-section-title:first-child{margin-top:0}
.shop-img-gallery{display:flex;flex-wrap:wrap;gap:8px;padding:12px}
.shop-img-thumb{width:100px;height:76px;object-fit:cover;border-radius:6px;border:1px solid var(--bs-border-color)}
.pay-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;background:#eff6ff;color:#1d4ed8;margin:2px 3px 2px 0}
.sw-dot.on{background:#22c55e}
.tab-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:320px;color:var(--bs-gray-400);gap:10px}
.tab-placeholder .material-symbols-outlined{font-size:48px;color:var(--bs-gray-300)}
.tab-placeholder p{font-size:14px;margin:0}
.shop-map-view{width:100%;height:260px;border-radius:6px;background:#e8e8e8;border:1px solid var(--bs-border-color)}
.shop-detail-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.shop-detail-wrap{flex:1;min-height:0}
.reservation-usage-setup{margin:16px 20px 0;flex-wrap:wrap}
.reservation-usage-copy{display:flex;flex:1;min-width:240px;flex-direction:column;gap:2px;line-height:1.4}
.reservation-usage-copy strong{font-size:13px}
.reservation-usage-setup .btn{margin-left:auto;flex-shrink:0}
.prod-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 20px 10px;flex-wrap:wrap;flex-shrink:0}
.prod-search{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.prod-toolbar-title{font-size:15px;color:var(--bs-gray-800);margin-right:6px;white-space:nowrap}
.prod-actions{display:flex;gap:6px}
.prod-split{flex:1;min-height:0;display:flex;gap:0;border-top:1px solid var(--bs-border-color);overflow:hidden}
.prod-left{width:50%;border-right:1px solid var(--bs-border-color);overflow-y:auto;display:flex;flex-direction:column;background:var(--bs-white)}
.prod-right{width:50%;overflow-y:auto;display:flex;flex-direction:column;background:var(--bs-white)}
.prod-grid{width:100%;border-collapse:collapse;font-size:13px}
.prod-grid thead th{background:var(--bs-gray-100);padding:8px 10px;font-weight:600;font-size:12px;border-bottom:2px solid var(--bs-border-color);position:sticky;top:0;z-index:1;white-space:nowrap;text-align:center}
.prod-grid tbody td{padding:7px 10px;border-bottom:1px solid var(--bs-border-color);font-size:13px;vertical-align:middle}
.prod-grid tbody tr{cursor:pointer;transition:background .12s}
.prod-grid tbody tr:hover td{background:#f0f7ff}
.prod-grid tbody tr.selected td{background:#dbeafe;color:var(--bs-primary,#0d6efd);font-weight:600}
.prod-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-height:200px;color:var(--bs-gray-400);gap:12px;padding:32px}
.prod-empty .material-symbols-outlined{font-size:48px}
.prod-empty p{margin:0;font-size:14px;text-align:center;line-height:1.7}
.prod-form-wrap{padding:16px 20px;flex:1}
.prod-form-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:10px;}
.prod-form-title{font-size:14px;font-weight:700;color:var(--bs-gray-800)}
.prod-form-btns{display:flex;gap:6px}
.prod-form-table{width:100%;border-collapse:collapse;font-size:13px}
.prod-form-table th{width:88px;background:var(--bs-gray-100);padding:7px 10px;font-weight:600;color:var(--bs-gray-700);border:1px solid var(--bs-border-color);white-space:nowrap;font-size:12px;vertical-align:middle}
.prod-form-table td{padding:5px 8px;border:1px solid var(--bs-border-color);vertical-align:middle}
.prod-addon-group .input-group-text{min-width:46px;justify-content:center;font-size:13px;background:var(--bs-gray-100);color:var(--bs-gray-700)}
.prod-addon-group .form-control:disabled{background:var(--bs-gray-100);color:var(--bs-gray-500)}
.cat-layout{display:flex;gap:24px;align-items:flex-start}
.cat-layout.is-two .cat-col{flex-basis:50%}
.cat-col{flex:1;min-width:0}
.cat-section-title{font-size:14px;font-weight:700;color:var(--bs-gray-700);padding:0 0 0 8px;border-left:3px solid var(--bs-primary,#0d6efd);margin-bottom:8px;line-height:1.4}
.cat-grid-wrap{border:1px solid var(--bs-border-color);border-radius:6px;overflow:hidden;margin-bottom:10px;max-height:180px;overflow-y:auto}
.cat-grid-wrap-lg{max-height:280px}
.cat-grid{width:100%;border-collapse:collapse;font-size:13px}
.cat-grid thead th{background:var(--bs-gray-100);padding:7px 10px;font-weight:600;font-size:12px;border-bottom:2px solid var(--bs-border-color);position:sticky;top:0;z-index:1;text-align:center}
.cat-grid tbody td{padding:6px 10px;border-bottom:1px solid var(--bs-border-color);font-size:13px;text-align:center;vertical-align:middle}
.cat-grid tbody td:nth-child(3){text-align:left}
.cat-grid tbody tr:last-child td{border-bottom:none}
.cat-grid tbody tr{cursor:pointer;transition:background .12s}
.cat-grid tbody tr:hover td{background:#f0f7ff}
.cat-grid tbody tr.selected td{background:#dbeafe;color:var(--bs-primary,#0d6efd);font-weight:600}
.cat-form-table{width:100%;border-collapse:collapse;font-size:13px}
.cat-form-table th{width:100px;background:var(--bs-gray-100);padding:7px 10px;font-weight:600;color:var(--bs-gray-700);border:1px solid var(--bs-border-color);white-space:nowrap;font-size:12px;vertical-align:middle}
.cat-form-table td{padding:5px 8px;border:1px solid var(--bs-border-color);vertical-align:middle}
.cat-form-foot{display:flex;justify-content:flex-end;gap:6px;margin-top:8px}
.prod-form-table td .custom-container{font-size:13px}
.prod-form-table td .custom-container-single .custom-single{height:36px;line-height:34px;font-size:14px}
.dev-form-table th{width:96px}
.dev-form-table td{width:auto}
.dev-form-table .dev-radio-lbl{font-size:13px;cursor:pointer;gap:4px}
.dev-form-table td .custom-container-single .custom-single{height:36px;line-height:34px;font-size:14px}
.alcoin-grid{width:100%;border-collapse:collapse;font-size:13px}
.alcoin-grid thead th{background:var(--bs-gray-100);padding:8px 10px;font-weight:600;font-size:12px;border-bottom:2px solid var(--bs-border-color);position:sticky;top:0;z-index:1;white-space:nowrap;text-align:center}
.alcoin-grid tbody td{padding:8px 10px;border-bottom:1px solid var(--bs-border-color);vertical-align:middle}
.alcoin-grid tbody tr{cursor:pointer;transition:background .12s}
.alcoin-grid tbody tr:hover td{background:#f0f7ff}
.alcoin-grid tbody tr.selected td{background:#dbeafe}
.alcoin-type-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:700;white-space:nowrap}
.alcoin-type-charge{background:#16a34a;color:#fff}
.alcoin-type-use{background:#dc2626;color:#fff}
.alcoin-method-cell{line-height:1}
.alcoin-method-name{display:block;font-size:13px;color:var(--bs-gray-800)}
.alcoin-method-date{display:block;font-size:11px;color:var(--bs-gray-400);margin-top:3px}
.alcoin-amount-cell{text-align:right;line-height:1}
.alcoin-amount{display:block;font-size:14px;font-weight:700}
.alcoin-amount.plus{color:#15803d}
.alcoin-amount.minus{color:#dc2626}
.alcoin-balance{display:block;font-size:11px;color:var(--bs-gray-400);margin-top:3px}
.alcoin-summary-bar{display:flex;gap:20px;padding:10px 16px;background:var(--bs-gray-50);border-bottom:1px solid var(--bs-border-color);flex-shrink:0;font-size:13px}
.alcoin-summary-item{display:flex;align-items:center;gap:6px}
.alcoin-summary-label{color:var(--bs-gray-500);font-size:12px}
.alcoin-summary-value{font-weight:700}
.alcoin-summary-value.total{color:var(--bs-primary,#0d6efd);font-size:15px}
.alcoin-summary-value.charge{color:#15803d}
.alcoin-summary-value.use{color:#dc2626}
.alcoin-form-section{padding:16px 20px}
.alcoin-form-section .form-label-req::after{content:" *";color:#dc2626}
.alcoin-form-table{width:100%;border-collapse:collapse;font-size:13px}
.alcoin-form-table th{background:var(--bs-gray-100);padding:9px 12px;font-weight:600;color:var(--bs-gray-700);border:1px solid var(--bs-border-color);white-space:nowrap;font-size:12px;vertical-align:middle;width:90px}
.alcoin-form-table td{padding:6px 8px;border:1px solid var(--bs-border-color);vertical-align:middle}
.alcoin-form-table td.readonly-cell{background:var(--bs-gray-50);color:var(--bs-gray-700);padding:9px 12px;font-size:13px}
.policy-doc,#termsEditModal .fr-view{font-size:14px;line-height:1.7;color:#333;}
.policy-doc h2,#termsEditModal .fr-view h2{font-size:1.25em;font-weight:700;margin:0 0 6px;color:#111;}
.policy-doc h3,#termsEditModal .fr-view h3{font-size:1.08em;font-weight:700;margin:18px 0 6px;color:#1a2236;}
.policy-doc p,#termsEditModal .fr-view p{margin:0 0 10px;}
.policy-doc ul,.policy-doc ol,#termsEditModal .fr-view ul,#termsEditModal .fr-view ol{margin:0 0 10px;padding-left:20px;}
.policy-doc li,#termsEditModal .fr-view li{margin-bottom:4px;}
.policy-doc table,#termsEditModal .fr-view table{width:100%;border-collapse:collapse;margin:0 0 12px;font-size:.92em;}
.policy-doc th,.policy-doc td,#termsEditModal .fr-view th,#termsEditModal .fr-view td{border:1px solid #dee2e6;padding:6px 8px;text-align:left;}
.policy-doc th,#termsEditModal .fr-view th{background:#f6f7f9;font-weight:600;}
.policy-doc .doc-meta,#termsEditModal .fr-view .doc-meta{font-size:.9em;color:#888;margin-bottom:16px;}
.edit-meta-row .form-item{display:flex;flex-direction:column;gap:4px;}
.fb-summary{display:flex;align-items:center;gap:28px;background:#fff;border:1px solid var(--bs-border-color);border-radius:12px;padding:18px 24px;margin-bottom:12px;flex-shrink:0;flex-wrap:wrap;}
.fb-rating-box{text-align:center;min-width:120px;}
.fb-rating-num{font-size:38px;font-weight:800;color:var(--bs-dark);line-height:1;}
.fb-rating-stars{margin:4px 0 2px;}
.fb-rating-count{font-size:12px;color:var(--bs-gray-500);}
.fb-bars{flex:1;min-width:220px;max-width:420px;display:flex;flex-direction:column;gap:4px;}
.fb-bar-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--bs-gray-600);}
.fb-bar-label{width:12px;text-align:center;color:var(--bs-gray-500);}
.fb-bar-track{flex:1;height:8px;border-radius:6px;background:var(--bs-gray-100);overflow:hidden;}
.fb-bar-fill{height:100%;background:#10b981;border-radius:6px;}
.fb-bar-cnt{width:42px;text-align:right;color:var(--bs-gray-500);}
.fb-kpis{display:flex;gap:20px;padding-left:12px;border-left:1px solid var(--bs-border-color);}
.fb-kpi{display:flex;flex-direction:column;align-items:center;gap:2px;}
.fb-kpi-label{font-size:12px;color:var(--bs-gray-500);}
.fb-kpi-val{font-size:20px;font-weight:700;color:var(--bs-dark);}
.fb-star{font-size:16px;color:#e0e0e0;font-variation-settings:'FILL' 1;margin:0 -2px;}
.fb-star.on{color:#ffc107;}
#tab-fb .fb-summary{margin:0;border:none;border-bottom:1px solid var(--bs-border-color);border-radius:12px 12px 0 0;}
.fb-grid-stars{display:inline-flex;align-items:center;}
.fb-grid-stars .fb-star{font-size:13px;}
.fb-reply-badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;}
.fb-reply-badge.done{background:#d1e7dd;color:#0f5132;}
.fb-reply-badge.wait{background:#f8d7da;color:#842029;}
.fb-detail{flex:1;min-height:0;overflow-y:auto;padding:16px;width:100%;}
.fb-detail .fb-card{border:none;padding:0;}
.fb-reply-section{margin-top:14px;padding-top:14px;border-top:1px solid var(--bs-border-color);}
.fb-card{border:1px solid var(--bs-border-color);border-radius:12px;padding:16px 18px;background:#fff;}
.fb-card-head{display:flex;align-items:center;gap:10px;}
.fb-avatar{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;flex-shrink:0;}
.fb-meta{display:flex;flex-direction:column;gap:2px;}
.fb-name{font-weight:700;font-size:14px;color:var(--bs-dark);}
.fb-stars{display:flex;align-items:center;gap:0;}
.fb-time{font-size:12px;color:var(--bs-gray-400);margin-left:8px;}
.fb-photos{display:flex;gap:8px;margin:12px 0 0;flex-wrap:wrap;}
.fb-photo{width:84px;height:84px;border-radius:8px;background:var(--bs-gray-100);display:flex;align-items:center;justify-content:center;color:var(--bs-gray-400);overflow:hidden;cursor:zoom-in;transition:transform .15s;}
.fb-photo:hover{transform:scale(1.04);}
.fb-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.fb-photo .material-symbols-outlined{font-size:28px;}
.fb-body{margin:12px 0 0;font-size:14px;line-height:1.6;color:#333;}
.fb-foot{margin-top:10px;}
.fb-like{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--bs-gray-500);border:1px solid var(--bs-border-color);border-radius:20px;padding:3px 12px;}
.fb-like .material-symbols-outlined{font-size:15px;}
.fb-reply{margin-top:12px;background:var(--bs-gray-50,#f8f9fa);border-radius:10px;padding:12px 14px;border:1px solid var(--bs-border-color);}
.fb-reply-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.fb-reply-owner{font-weight:700;font-size:13px;color:var(--bs-primary);}
.fb-reply-date{font-size:12px;color:var(--bs-gray-400);}
.fb-reply-actions{margin-left:auto;display:flex;gap:2px;}
.fb-reply-actions .btn-icon{border:none;background:none;cursor:pointer;color:var(--bs-gray-400);padding:2px;border-radius:4px;display:inline-flex;}
.fb-reply-actions .btn-icon:hover{color:var(--bs-primary);background:var(--bs-gray-100);}
.fb-reply-actions .btn-icon .material-symbols-outlined{font-size:16px;}
.fb-reply-body{font-size:13px;line-height:1.6;color:#444;white-space:pre-wrap;}
.fb-reply-empty{margin-top:12px;display:flex;align-items:center;gap:10px;}
.fb-noreply-tag{font-size:11px;font-weight:700;color:#fff;background:#dc2626;border-radius:20px;padding:3px 10px;}
.fb-reply-edit{margin-top:12px;}
.fb-reply-input{font-size:13px;resize:vertical;}
.fb-reply-edit-btns{display:flex;justify-content:flex-end;gap:6px;margin-top:8px;}
.badge-use,.badge-approved,.badge-status-done,.nt-flag-on,.alcoin-type-charge,.badge-excellent,.badge-match,.ev-state-on{background:#dcfce7!important;color:#15803d!important;border:0!important;border-radius:9999px!important;}
.badge-status-cancel,.alcoin-type-use,.alcoin-badge-use,.fb-noreply-tag,.badge-foursome{background:#fee2e2!important;color:#b91c1c!important;border:0!important;border-radius:9999px!important;}
.badge-pending,.badge-status-partial,.badge-franchise,.nt-pin-tag,.nt-flag-soon,.badge-skins,.ev-state-soon{background:#fef3c7!important;color:#b45309!important;border:0!important;border-radius:9999px!important;}
.badge-nouse,.badge-complete,.badge-method,.nt-flag-off,.nt-badge-shop,.badge-member-none,.badge-normal,.ev-state-end{background:#f1f5f9!important;color:#475569!important;border:0!important;border-radius:9999px!important;}
.code-top-item.selected{background:var(--bs-primary);}
.code-top-item.selected .code-top-name{color:#fff;}
.code-top-item.selected .code-top-code{color:rgba(255,255,255,.8);}
.code-top-item.selected .icon-action-btn{color:rgba(255,255,255,.85);}
.code-top-item.selected .icon-action-btn:hover{background:rgba(255,255,255,.2);color:#fff;}
.admin-perm-grid .checkboxItem{margin:0;}
@media print {
  body.report-page .app-header,body.report-page .aside,body.report-page .grid-header,body.report-page .prod-left,body.report-page .rpt-detail-actions,body.report-page .rpt-tabs{display:none!important;}
  body.report-page,body.report-page .app,body.report-page .app-main,body.report-page .grid-wrapper,body.report-page .grid-panel,body.report-page .prod-split-wrap,body.report-page .prod-split,body.report-page .prod-right,body.report-page .rpt-detail{display:block!important;height:auto!important;min-height:0!important;overflow:visible!important;border:none!important;padding:0!important;background:#fff!important;}
}

/* ======================== [pos] ======================== */
.nav-primary .nav-divider{display:flex;align-items:center;gap:12px;padding:10px 18px 0;height:26px;margin:6px 0;border-top:1px solid var(--bs-border-color);cursor:default;font-size:10px;font-weight:700;color:var(--bs-gray-500)}
.is-collapsed .nav-primary .nav-divider{overflow:hidden}
.page-nav{display:flex;gap:4px;align-items:center;}
.item-type{display:flex;align-items:center;gap:4px;}
.form-item.datepicker input, .course-date{text-align:center;padding:0;}
.date-quick-btns{display:flex;gap:4px;align-items:center;}
.date-quick-btns .badge{font-size:13px;padding:6px 12px;background:var(--bs-white);border:var(--bs-border);color:var(--bs-dark);transition:var(--bs-transition)}
.date-quick-btns .badge.active{background:var(--bs-white);color:var(--bs-primary);border-color:var(--bs-primary);transition:var(--bs-transition)}
.grid-wrapper .btn-outline-secondary:not(label),.pos-layout .btn-outline-secondary:not(label),.offcanvas .btn-outline-secondary:not(label),#customerModal .btn-outline-secondary:not(label){font-size:14px;padding:0 12px 0 12px;font-weight:600;background:var(--bs-white);border:var(--bs-border);height:36px;line-height:34px;}
.grid-wrapper .btn-outline-secondary:hover,.pos-layout .btn-outline-secondary:hover,.offcanvas .btn-outline-secondary:hover{color:var(--bs-primary);border-color:var(--bs-primary);}
.btn-pay-close{padding:0 12px!important;}
.game-slot .item-name{display:block;font-size:14px!important;font-weight:600!important;color:var(--bs-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.game-slot:not(:disabled):hover .time,.game-slot:not(:disabled):hover .price,.game-slot:not(:disabled):hover .item-name{color:var(--bs-white)!important;transition:var(--bs-transition);}
.pos-layout{display:flex;height:calc(100vh - var(--header-h));overflow:hidden;background:var(--bs-body-bg,#f5f6fa)}
.pos-left{width:380px;min-width:320px;max-width:420px;display:flex;flex-direction:column;border-right:var(--bs-border);background:var(--bs-white);flex-shrink:0}
.pos-right{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bs-body-bg,#f5f6fa)}
.pos-left-header{padding:14px 16px 0;border-bottom:var(--bs-border)}
.pos-left-header .pos-title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.pos-left-header .pos-title{font-size:20px;font-weight:700;color:var(--bs-primary)}
.date-picker-row .form-item.datepicker{flex:1}
.date-picker-row .form-item.datepicker input{font-size:12px;height:28px;padding:2px 6px;text-align:center}
.pos-search-area{padding:10px 16px;border-bottom:var(--bs-border);background:var(--bs-gray-100)}
.pos-search-area .search-row{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.pos-search-area .search-row:last-child{margin-bottom:0}
.pos-search-area .form-control,.pos-search-area .form-select{font-size:14px;padding:4px 8px;height:36px;background:var(--bs-white);}
.pos-search-area label{font-size:13px;color:var(--bs-gray-600);white-space:nowrap;margin-bottom:0;font-weight:400;width:80px!important;}
.search-toggle-btn{font-size:14px;font-weight:600;color:var(--bs-gray-600);cursor:pointer;display:flex;align-items:center;gap:2px;background:none;border:none;padding:0}
.pos-list{flex:1;overflow-y:auto;padding:0}
.pos-list-item{padding:10px 16px;border-bottom:var(--bs-border);cursor:pointer;transition:background .12s;display:flex;align-items:flex-start;gap:10px}
.pos-list-item:hover{background:var(--bs-primary-bg-subtle,#f5f7ff)}
.pos-list-item.active{background:var(--bs-primary-bg-subtle,#eef1ff);border-left:3px solid var(--bs-primary)}
.pos-list-item .item-main{flex:1;min-width:0}
.pos-list-item .item-row1{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.pos-list-item .item-name{font-size:16px;font-weight:600;color:var(--bs-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}
.pos-list-item .item-amount{font-size:16px;font-weight:700;color:var(--bs-dark);white-space:nowrap}
.pos-list-item .item-row2{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--bs-gray-600)}
.pos-list-item .receipt-no{font-size:12px;color:var(--bs-gray-500);white-space:nowrap}
.badge-method{font-size:10px;padding:2px 8px;border-radius:20px;background:#6b7280;color:#fff}
.badge-member{display:inline-block;font-size:10px;padding:1px 6px;border-radius:20px;font-weight:600;white-space:nowrap;vertical-align:middle}
.pos-right-inner{flex:1;overflow-y:auto;padding:20px 24px}
.detail-header,.new-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.detail-title,.new-title{font-size:20px;font-weight:700;color:var(--bs-primary)}
.detail-card{background:var(--bs-white);border-radius:12px;border:var(--bs-border);margin-bottom:14px;min-height:unset;min-width:unset}
.detail-card .dc-title{font-size:16px;font-weight:600;padding:16px 24px;color:var(--bs-dark);padding-bottom:12px;border-bottom:var(--bs-border)}
.detail-card .dc-costomer{padding:16px 20px;}
.detail-card .table-responsive{border-radius:0 0 12px 12px;}
.detail-card .table-responsive tfoot td{border-top:var(--bs-border);border-bottom:none!important;}
.detail-card .table-sm > :not(caption) > * > *{line-height:30px;}
.detail-card:has(.refund-row) .table-responsive{border-top:var(--bs-border);}
.detail-info-grid{display:grid;grid-template-columns:84px 1fr;gap:6px 12px;font-size:14px;margin: 24px;}
.detail-info-grid .di-label{color:var(--bs-gray-500);font-weight:400}
.detail-info-grid .di-value{font-weight:600;color:var(--bs-dark);font-size:16px;}
.detail-cols{display:flex;gap:14px;align-items:flex-start}
.detail-col-left{flex:1;min-width:0}
.detail-col-right{width:50%;flex-shrink:0}
.detail-col-right .detail-card{position:sticky;top:0}
.new-cols{display:flex;gap:14px;align-items:flex-start}
.new-col-left{flex:1;min-width:0}
.new-col-right{width:46%;flex-shrink:0;position:sticky;top:0;padding:20px 24px;}
.new-col-right .payment-type{display:flex;align-items:center;gap:4px;flex-wrap:wrap;}
#stateNew .new-cols{display:flex;gap:0;align-items:flex-start}
#stateNew .item-panel{position:relative;margin:0;width:auto}
.grid-products{border-radius:12px;overflow:auto;height:300px;}
.grid-products thead th{position:sticky;top:0;z-index:2;background:var(--header-bg);}
.payment-sum{display:flex;justify-content:flex-end;gap:12px;padding:8px 16px;margin-top:12px;background:var(--bs-gray-200);border-radius:8px;}
.pos-right-inner.state-new{overflow:hidden;padding:0;}
.pos-right-inner.state-new #stateNew{height:100%;display:flex!important;flex-direction:column;}
.pos-right-inner.state-new .new-header{flex-shrink:0;padding:8px 24px;border-bottom:var(--bs-border);margin-bottom:0;}
.pos-right-inner.state-new .new-cols{flex:1;min-height:0;align-items:stretch!important;}
.pos-right-inner.state-new .new-col-left{display:flex;flex-direction:column;position:static;overflow:hidden;padding:20px 24px;border-right:var(--bs-border)}
.pos-right-inner.state-new .new-col-left .ncl-top-type{flex-shrink:0;}
.pos-right-inner.state-new .new-col-left .ncl-top-panels{flex-shrink:0;}
.pos-right-inner.state-new .new-col-left .ncl-bottom-items{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;}
.pos-right-inner.state-new .new-col-left .ncl-bottom-items .table-responsive{flex:1;overflow-y:auto;}
.pos-right-inner.state-new .new-col-right{overflow-y:auto;position:static;}
.refund-row{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:10px 14px;margin:8px;display:flex;align-items:center;justify-content:space-between;font-size:13px}
.refund-row .rf-left{display:flex;align-items:center;gap:8px}
.refund-row .rf-amount{font-weight:700;color:#c2410c}
.bar{font-weight:100!important;color:#CCC}
.auto-row .custom-select-no-single{width: 110px;}
.w32{width:32px!important}
.w36{width:36px!important}
.w44{width:44px!important}
.w52{width:52px!important}
.w56{width:56px!important}
.w64{width:64px!important}
.w68{width:68px!important}
.w72{width:72px!important}
.w76{width:76px!important}
.w84{width:84px!important}
.icon-va-mid{vertical-align:middle;}
.edit-meta-row .form-item{display:flex;flex-direction:column;gap:4px;}
.badge-nouse,.badge-complete,.badge-method,.nt-flag-off,.nt-badge-shop,.badge-member-none,.badge-normal,.ev-state-end{background:#f1f5f9!important;color:#475569!important;border:0!important;border-radius:9999px!important;}
.cash-rcpt-num{max-width:220px;}


/* ======================== [stats] ======================== */
body.stats-page .grid-wrapper { height: auto !important; overflow: visible; }

/* ── KPI 카드 행 ── */
.stats-kpi-row{display:flex;gap:12px;margin-bottom:12px}
.stats-kpi-card{flex:1;min-width:0;background:var(--bs-white);border:var(--bs-border);border-radius:8px;padding:16px 20px 14px;display:flex;flex-direction:column}
.stats-kpi-card .kpi-label{font-size:12px;font-weight:600;color:var(--bs-gray-500);white-space:nowrap;margin-bottom:6px}
.stats-kpi-card .kpi-value{font-size:26px;font-weight:700;color:var(--bs-dark);line-height:1.1}
.stats-kpi-card .kpi-unit{font-size:15px;font-weight:600;color:var(--bs-gray-500);margin-left:4px}
.stats-kpi-card .kpi-badge-row{display:flex;align-items:center;gap:8px;margin-top:8px}
.stats-kpi-card .kpi-badge{display:inline-flex;align-items:center;gap:2px;font-size:12px;font-weight:700;padding:2px 8px;border-radius:20px;width:fit-content;flex-shrink:0}
.stats-kpi-card .kpi-badge-row .kpi-badge{margin-top:0}
.stats-kpi-card .kpi-badge:not(.kpi-badge-row .kpi-badge){margin-top:8px}
.stats-kpi-card .kpi-badge.up{background:#ecfdf5;color:#059669}
.stats-kpi-card .kpi-badge.down{background:#fef2f2;color:#dc2626}
.stats-kpi-card .kpi-badge.neutral{background:#f3f4f6;color:#6b7280}
.stats-kpi-card .kpi-sub{font-size:12px;color:var(--bs-gray-500)}
.stats-kpi-card .kpi-sub:not(.kpi-badge-row .kpi-sub){margin-top:4px}
/* ── 차트 패널 ── */
.chart-panel{background:var(--bs-white);border:var(--bs-border);border-radius:8px;padding:16px 20px;margin-bottom:12px}
.chart-panel .chart-title{font-size:12px;font-weight:700;color:var(--bs-gray-500);margin-bottom:12px;text-transform:uppercase;letter-spacing:.04em}
.chart-host{height:260px}
.chart-host-sm{height:200px}
.chart-host-lg{height:320px}
/* ── 2컬럼 차트 행 ── */
.stats-chart-row { display: flex; gap: 12px; margin-bottom: 12px; }
.stats-chart-row .chart-panel { flex: 1; margin-bottom: 0; min-width: 0; }
.stats-chart-row .chart-panel.col-4 { flex: 0 0 38%; }
.stats-chart-row .chart-panel.col-6 { flex: 0 0 calc(50% - 6px); }
/* ── 통계 그리드 패널: 높이는 인라인 calc로, .grid-host가 내부 채움 ── */
.stats-grid-panel{min-height:200px;display:flex;flex-direction:column;overflow:hidden;margin-bottom:24px;border:var(--bs-border);border-radius:8px}
/* gridjs-head 검색바 갭 제거 */
.stats-grid-panel .gridjs-head{padding:0!important;margin:0!important}
/* ── 전기비교 증감 셀 ── */
.cell-up   { color: #059669; font-weight: 700; }
.cell-down { color: #dc2626; font-weight: 700; }


/* ---- [pos] POS 섹션 보완 (JS 추가 클래스 · #stateNew 스코프 규칙) ---- */
.date-picker-row .sep{font-size:12px;color:var(--bs-gray-400);flex-shrink:0}
.date-tabs{display:flex;gap:4px;margin-bottom:8px}
.date-tabs .btn{font-size:12px;padding:2px 9px;border-radius:20px;height:auto;line-height:20px}
#stateEmpty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--bs-gray-400)}
#stateEmpty .material-symbols-outlined{font-size:56px;opacity:.25}
#stateEmpty p{margin-top:12px;font-size:14px}
.cart-section{background:var(--bs-white);border-radius:12px;border:var(--bs-border);margin-bottom:12px;overflow:hidden;min-height:unset;min-width:unset}
.cart-section .cart-head{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:var(--bs-border);background:var(--bs-gray-100,#f9fafb)}
.cart-section .cart-head-title{font-size:13px;font-weight:700;color:var(--bs-gray-500)}
.pay-section{background:var(--bs-white);border-radius:12px;border:var(--bs-border);margin-bottom:12px;overflow:hidden;min-height:unset;min-width:unset}
.pay-section-head{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:var(--bs-border);background:var(--bs-gray-100,#f9fafb)}
.pay-section-head-title{font-size:13px;font-weight:700;color:var(--bs-gray-500)}
.pay-section-body{padding:14px 16px}
.amount-summary{background:var(--bs-white);border-radius:12px;border:var(--bs-border);padding:12px 20px;display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;min-height:unset;min-width:unset}
.amount-summary .as-item{display:flex;flex-direction:column;align-items:center}
.amount-summary .as-label{font-size:11px;color:var(--bs-gray-500);font-weight:600;margin-bottom:2px}
.amount-summary .as-value{font-size:18px;font-weight:700;color:var(--bs-dark)}
#stateNew .pay-panel{position:relative!important;padding:0!important;margin-top:0!important}
#stateNew .pay-panel .card{width:100%!important;min-height:unset!important;min-width:unset!important;border-radius:8px!important;border:var(--bs-border)!important;box-shadow:none!important}
#stateNew .item-panel{position:relative;margin:0;width:auto;}
.table-responsive .btn-icon-only{line-height:24px;}
#productGrid .card{min-height:unset!important;min-width:unset!important;cursor:pointer}
.customer-select-box{display:flex;align-items:center;gap:10px;background:var(--bs-gray-100);border:var(--bs-border);border-radius:8px;padding:8px 12px;margin-bottom:10px}
.customer-select-box .cs-name{font-size:16px;font-weight:600;color:var(--bs-dark)}
.customer-select-box .cs-info{font-size:14px;color:var(--bs-gray-600)}
.qty-ctrl{display:flex;align-items:center;gap:4px}
.qty-ctrl .btn{padding:2px 7px;font-size:13px;line-height:1;height:auto}
.qty-ctrl .qty-val{min-width:24px;text-align:center;font-size:13px;font-weight:600}
.new-pay-hist-title{font-size:13px;font-weight:700;color:var(--bs-gray-500);margin-bottom:8px;padding-bottom:6px;border-bottom:var(--bs-border)}
#modalRefund .form-label,#modalRefund .form-select,#modalRefund .form-control,#modalRefund .alert,#modalRefund .d-flex.justify-content-between{font-size:13px}
/* ======================== [froala] 빠른삽입(quick insert) ======================== */
/* '+' 가 원래(좌측) 위치에서 잘리지 않고 온전히 보이도록 좌측 여백 확보 */
.fr-box .fr-element.fr-view{padding-left:24px;}
.fr-box .fr-quick-insert{left:-24px!important;}
.fr-box .fr-qi-helper{left:-24px!important;padding-left:0!important;}
/* 각 기능 아이콘을 원형 버튼 정중앙에 배치 ('+' 토글과 동일하게 svg 24px + margin 8px) */
.fr-qi-helper a.fr-btn.fr-floating-btn{padding:0!important;}
.fr-qi-helper a.fr-btn.fr-floating-btn svg{width:24px;height:24px;margin:8px;}

/* ======================== [booking] 예약등록 상품 선택 카드 ======================== */
#ocProducts{padding-bottom:4px;}
.oc-product-card{flex:0 0 auto;width:112px;border:1.5px solid var(--bs-border-color);border-radius:12px;padding:14px 8px;text-align:center;cursor:pointer;background:#fff;transition:all .15s;user-select:none;}
.oc-product-card:hover{border-color:var(--bs-primary);}
.oc-product-card .opc-cat{font-size:13px;color:var(--bs-gray-500);margin-bottom:4px;}
.oc-product-card .opc-hole{font-size:22px;font-weight:800;color:var(--bs-dark);line-height:1.1;}
.oc-product-card .opc-price{font-size:12px;color:var(--bs-gray-500);margin-top:8px;}
.oc-product-card.active{background:var(--bs-primary);border-color:var(--bs-primary);}
.oc-product-card.active .opc-cat,.oc-product-card.active .opc-hole,.oc-product-card.active .opc-price{color:#fff;}
#ocSummary.oc-summary-hl{background:var(--bs-primary);border:0;}
#ocSummary.oc-summary-hl .item-title{color:rgba(255,255,255,.82);}
#ocSummary.oc-summary-hl strong{color:#fff;}

/* [booking] 예약등록 — 인원/날짜/시간/분 버튼 텍스트 가운데 정렬 */
#ocPax .btn, #ocWeekGrid .btn, #ocHourRow .btn, #ocMinRow .btn{justify-content:center!important;text-align:center!important;align-items:center!important;}

/* ============================================================
   [customer] 회원 조회 통합 — 등급 타일 / 회원자산 타일 / 회원정보 인라인 편집 / 조회 결과
   ============================================================ */
/* 등급 선택 타일 (customer-store / customer-search 공용) */
.grade-tile{border:1px solid var(--bs-border-color,#dee2e6);border-radius:.5rem;padding:.75rem .5rem;text-align:center;cursor:pointer;background:#fff;transition:border-color .12s,box-shadow .12s,background .12s;}
.grade-tile:hover{border-color:#adb5bd;}
.grade-tile.active{border-color:var(--bs-primary,#6f42f5);box-shadow:0 0 0 2px rgba(111,66,245,.15);background:rgba(111,66,245,.04);}

/* 회원자산 KPI 타일 (클릭 선택) */
.asset-tile{flex:1 1 0;border:1px solid var(--bs-border-color,#dee2e6);border-radius:.5rem;padding:.75rem .5rem;text-align:center;cursor:pointer;background:#fff;transition:border-color .12s,box-shadow .12s,background .12s;}
.asset-tile:hover{border-color:#adb5bd;}
.asset-tile.active{border-color:var(--bs-primary,#6f42f5);box-shadow:0 0 0 2px rgba(111,66,245,.15);background:rgba(111,66,245,.04);}
.asset-tile .asset-label{font-size:12px;color:#6c757d;margin-bottom:.25rem;}
.asset-tile .asset-value{font-weight:700;font-size:18px;line-height:1.1;}

/* 회원정보 인라인 편집 토글 */
.mi-edit{display:none;}
.oc-body.is-editing .mi-edit{display:block;}
.oc-body.is-editing .mi-view{display:none;}

/* 회원유형(앱/스크린) 조회 결과 패널 */
.lookup-result{border:1px solid var(--bs-border-color,#dee2e6);border-radius:.5rem;padding:.75rem;background:#f8f9fa;font-size:13px;}
.lookup-result.is-none{background:#fff8f0;border-color:#f0d9b5;}

/* 회원정보 값 행 (라벨 + 값) */
.mi-row{display:flex;align-items:center;padding:.5rem .75rem;}
.mi-row + .mi-row{border-top:1px solid var(--bs-border-color,#eef0f2);}
.mi-row .mi-label{width:88px;flex-shrink:0;color:#6c757d;font-size:13px;}
.mi-row .mi-val{font-weight:600;font-size:14px;}

/* 모달은 항상 오프캔버스(z-index:1060)보다 위 — 드로워 위에서 열리는 모달(포인트 적립 등)이 가려지지 않도록 */
.modal{z-index:1080;}
.modal-backdrop{z-index:1070;}

/* ============================================================
   [customer] 회수권/정기권 발급 모달(바로결제) 레이아웃 복원
   - 전역 .card .card-body(flex, padding:0) / .grid-products(height:300px) /
     .game-slot(94px 고정) 오버라이드를 모달 범위에서 원복
   ============================================================ */
#modalTicketGrant .modal-dialog{max-width:min(1100px,calc(100vw - 48px));width:min(1100px,calc(100vw - 48px));} /* 트림된 bootstrap에 .modal-xl 없음 → 직접 정의 */
#modalTicketGrant .card{min-height:0;height:auto;} /* 전역 .card min-height(241px) 해제 — 내용에 맞게 */
#modalTicketGrant .card .card-body{display:block;padding:0;} /* 그리드 외부 여백 0 — 테이블이 카드에 밀착 */
#modalTicketGrant .tg-pay-panel .card-body{padding:16px;}
#tgProducts{padding:16px;}
#modalTicketGrant .card .card-header{height:auto;line-height:1.5;padding:10px 16px;font-weight:600;border-bottom:var(--bs-border);justify-content:flex-start;}
#modalTicketGrant .card .card-footer{padding:10px 12px;display:flex;gap:8px;justify-content:flex-end;border-top:var(--bs-border);}
#modalTicketGrant .grid-products{height:auto;max-height:240px;}
#tgProducts .game-slot{width:calc((100% - 40px)/6);min-width:106px;height:auto;padding:14px 8px;}
#tgProducts .game-slot .time{margin-top:6px;white-space:nowrap;}
#tgProducts .game-slot .price{margin-top:6px;white-space:nowrap;}
#modalTicketGrant .tg-row{display:flex;align-items:center;gap:10px;}
#modalTicketGrant .tg-row + .tg-row{margin-top:10px;}
#modalTicketGrant .tg-label{width:80px;flex-shrink:0;color:#6c757d;font-size:13px;}
#modalTicketGrant .new-cols{align-items:stretch;gap:0;} /* 좌우 컬럼 전체영역 구분선 */
#modalTicketGrant .new-col-left{padding-right:24px;}
#modalTicketGrant .new-col-right{position:static;border-left:var(--bs-border);padding:24px 0 24px 24px;margin:-24px 0;} /* 구분선이 헤더/푸터 보더에 맞닿도록 본문 패딩만큼 확장 */
#modalTicketGrant .modal-body{padding:24px;} /* 드로워 p-4 표준과 동일 */
#modalTicketGrant .tg-row + .tg-row{margin-top:12px;}
#modalTicketGrant .modal-footer{padding:12px 24px;border-top:var(--bs-border);}
#modalTicketGrant .tg-pay-panel .btn-sm{white-space:nowrap;}
#modalTicketGrant .tg-modal-header{border-bottom:var(--bs-border);padding:12px 16px 12px 24px;justify-content:space-between;align-items:center;}
#modalTicketGrant .tg-modal-header .modal-title{font-size:18px;font-weight:700;color:var(--bs-primary);}

/* [store] 상품등록 기간단위 — 옵션이 많아 하단이 잘리므로 드롭다운을 항상 위쪽으로 오픈 */
#pfDurUnit + .custom-container .custom-drop{top:auto;bottom:100%;margin-bottom:4px;}
#pfDurUnit + .custom-container.custom-with-drop .custom-drop{margin-top:0;margin-bottom:4px;}

/* ============================================================
   [tournament] 참가비 결제 모달 — 회수권/정기권 모달과 동일한 정렬 체계
   ============================================================ */
#modalFeePay .fp-modal-header{border-bottom:var(--bs-border);padding:12px 16px 12px 24px;justify-content:space-between;align-items:center;}
#modalFeePay .fp-modal-header .modal-title{font-size:18px;font-weight:700;color:var(--bs-primary);}
#modalFeePay .modal-body{padding:24px;}
#modalFeePay .modal-footer{padding:12px 24px;border-top:var(--bs-border);}
#modalFeePay .card{min-height:0;height:auto;}
#modalFeePay .card .card-body{display:block;padding:16px;}
#modalFeePay .card .card-header{height:auto;line-height:1.5;padding:10px 16px;font-weight:600;border-bottom:var(--bs-border);justify-content:flex-start;}
#modalFeePay .card .card-footer{padding:10px 12px;display:flex;gap:8px;justify-content:flex-end;border-top:var(--bs-border);}
#modalFeePay .fp-row{display:flex;align-items:center;gap:10px;}
#modalFeePay .fp-row + .fp-row{margin-top:12px;}
#modalFeePay .fp-label{width:88px;flex-shrink:0;color:#6c757d;font-size:13px;}
#modalFeePay .fp-pay-panel .btn-sm{white-space:nowrap;}

/* [operation] 발주 등록 모달 — 여백 표준 적용
   (전역 .card min-height 241px 해제 → 섹션이 내용 높이에 밀착, 본문 24px/섹션 16px/푸터 12px) */
#orderModal .card{min-height:0;height:auto;}
#orderModal .card .card-body{display:block;padding:0;}
#orderModal .modal-header{padding:12px 16px 12px 24px;border-bottom:var(--bs-border);}
#orderModal .modal-title{font-size:18px;font-weight:700;color:var(--bs-primary);}
#orderModal .modal-body{padding:24px;}
#orderModal .modal-footer{padding:12px 24px;border-top:var(--bs-border);}
#orderModal .card-body .row + .row{padding-top:0;} /* 섹션 내 연속 행의 이중 패딩 제거 */


/* ============================================================
   [tournament] select2 다중 태그(가맹점 선택) 스타일 — 00.PLEX plex.css 이식
   ============================================================ */
/*******  Select2 — Plex 디자인 통합  ********/
.select2-container--default .select2-selection--multiple{padding:2px 0!important;min-height:30px!important;line-height:30px!important;border:var(--bs-border)!important;background:var(--bs-white);}
.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:var(--bs-primary);outline:0;padding:0;display:flex;}
.select2-container--default .select2-selection--multiple .select2-selection__rendered{display:flex!important;flex-wrap:wrap;gap:2px;padding:0;margin:0 0 0 6px;}
.select2-container--default .select2-selection--multiple .select2-selection__choice{background:var(--bs-gray-100)!important;border:var(--bs-border)!important;color:var(--bs-dark);border-radius:4px!important;padding:0 6px 0 24px!important;font-size:13px;font-weight:600;margin:2px 0!important;line-height:28px;display:inline-flex!important;align-items:center;gap:4px;}
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:var(--bs-primary);font-size:15px!important;line-height:28px;border:none;background:none;padding:0;margin:0;order:-1;font-weight:100!important;}
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:var(--bs-danger);}
.select2-container--default .select2-search--inline .select2-search__field{font-size:13px;font-family:var(--bs-font-family);color:var(--bs-dark);margin-top:4px;min-width:160px;}
.select2-dropdown{border:var(--bs-border);border-radius:4px;box-shadow:0 4px 12px rgba(0,0,0,.1);font-size:13px;font-family:var(--bs-font-family);}
.select2-search--dropdown .select2-search__field{border:var(--bs-border);border-radius:4px;padding:6px 10px;font-size:13px;font-family:var(--bs-font-family);}
.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable{background:var(--bs-primary);}
.select2-container--default .select2-results__option--selected{background:var(--bs-gray-100)!important;color:var(--bs-primary);font-weight:600;}
.select2-results__option{padding:7px 12px;}
.select2-container--default .select2-results__option[aria-disabled=true]{color:var(--bs-gray-400);}
.select2-container{z-index:1060;}
/* multiple: 기존 min-height 유지 */
.select2-container--default .select2-selection--multiple{min-height:34px!important;}
/* single: 36px 고정 */
.select2-container:has(.select2-selection--single){height:36px;}
.select2-container .select2-search--inline .select2-search__field{margin:2px 0 2px 8px!important;height:30px!important;line-height:30px!important;font-family:var(--bs-font-family);!important}
/*******  Select2 단일 선택 (골프장 드롭다운)  ********/
.select2-container--default .select2-selection--single{height:36px!important;border:1px solid #dee2e6!important;border-radius:4px!important;background-color:var(--bs-white)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")!important;background-repeat:no-repeat!important;background-position:right .5rem center!important;background-size:12px 9px!important;display:flex!important;align-items:center!important;}
.select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:8px!important;padding-right:22px!important;color:var(--bs-dark)!important;font-size:13px!important;line-height:36px!important;width:100%!important;}
.select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--bs-gray-400)!important;}
.select2-container--default .select2-selection--single .select2-selection__clear{margin-right:0!important;color:var(--bs-gray-400)!important;font-weight:400!important;font-size:16px!important;line-height:36px!important;}
.select2-container--default .select2-selection--single .select2-selection__arrow{display:none;}
.select2-container--default.select2-container--focus .select2-selection--single,.select2-container--default.select2-container--open .select2-selection--single{border-color:var(--bs-primary);outline:0;box-shadow:0 0 0 .2rem rgba(101,89,232,.15);}
.select2-results__group{font-size:11px;font-weight:700;color:var(--bs-gray-500);text-transform:uppercase;letter-spacing:.05em;padding:5px 12px 3px;background:var(--bs-gray-100);border-top:1px solid #dee2e6;}

/* 2026-08-17 [store] 기존 룸 등록 폼을 유지한 타석정보 비교·수정 화면 */
.room-info-content{display:flex;flex-direction:column;min-width:0;overflow:hidden;}
.room-info-summary{padding:16px 20px 10px;flex-shrink:0;}
.room-info-summary .shop-sync-summary{margin-bottom:8px;}
.room-info-note{display:flex;align-items:center;gap:6px;padding:5px 2px;color:var(--bs-gray-600);font-size:12px;}
.room-info-note .material-symbols-outlined{font-size:16px;color:var(--bs-primary);}
.room-info-note.is-error{color:#991b1b;}
.room-info-note.is-error .material-symbols-outlined{color:#dc2626;}
.room-info-split{display:grid;grid-template-columns:minmax(480px,1.2fr) minmax(390px,.8fr);gap:12px;padding:0 20px 20px;min-height:0;flex:1;}
.room-list-panel,.room-form-panel{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bs-white);border:1px solid var(--bs-border-color);border-radius:8px;overflow:hidden;}
.room-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;background:var(--bs-white);border-bottom:1px solid var(--bs-border-color);flex-shrink:0;}
.room-panel-head>div:first-child{display:flex;align-items:baseline;gap:8px;min-width:0;}
.room-panel-head strong{font-size:14px;color:var(--bs-gray-800);}
.room-panel-head>div:first-child span{font-size:11px;color:var(--bs-gray-500);}
.room-panel-help{font-size:11px;color:var(--bs-gray-500);white-space:nowrap;}
.room-grid-wrap{overflow:auto;min-height:0;flex:1;}
.room-grid{width:100%;border-collapse:collapse;font-size:13px;}
.room-grid thead th{position:sticky;top:0;z-index:1;padding:9px 10px;background:var(--bs-gray-100);border-bottom:2px solid var(--bs-border-color);font-size:12px;font-weight:600;color:var(--bs-gray-700);text-align:center;white-space:nowrap;}
.room-grid thead th:nth-child(2){text-align:left;}
.room-grid tbody td{padding:9px 10px;border-bottom:1px solid var(--bs-border-color);color:var(--bs-gray-800);vertical-align:middle;}
.room-grid tbody tr[data-row-index]{cursor:pointer;transition:background .12s;outline:none;}
.room-grid tbody tr[data-row-index]:hover td,.room-grid tbody tr[data-row-index]:focus td{background:#f0f7ff;}
.room-grid tbody tr[data-row-index].selected td{background:#dbeafe;color:var(--bs-primary);}
.room-grid tbody tr.has-sync-state td:first-child{box-shadow:inset 3px 0 #f97316;}
.room-grid-empty td{text-align:center!important;color:var(--bs-gray-400)!important;padding:44px 10px!important;}
.room-grid-next{display:block;margin-top:2px;font-size:11px;font-weight:600;color:#c2410c;}
.room-use-badge,.room-sync-badge{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:2px 7px;border-radius:12px;font-size:11px;font-weight:700;line-height:18px;white-space:nowrap;}
.room-use-badge.is-use{background:#dcfce7;color:#166534;}
.room-use-badge.is-fault{background:#fee2e2;color:#991b1b;}
.room-use-badge.is-limited{background:#fef3c7;color:#92400e;}
.room-use-badge.is-unused{background:#f1f5f9;color:#64748b;}
.room-sync-badge.is-insert{background:#dbeafe;color:#1d4ed8;}
.room-sync-badge.is-update{background:#ffedd5;color:#c2410c;}
.room-sync-badge.is-current_only{background:#f1f5f9;color:#475569;}
.room-sync-badge.is-same{background:#dcfce7;color:#166534;}
.room-form-actions{display:flex;gap:6px;flex-shrink:0;}
.room-form-panel .room-panel-head>div:first-child{flex-direction:column;align-items:flex-start;gap:2px;}
.room-form-actions .btn{white-space:nowrap;}
.room-form-empty{display:flex;flex:1;min-height:240px;align-items:center;justify-content:center;flex-direction:column;gap:8px;color:var(--bs-gray-400);}
.room-form-empty .material-symbols-outlined{font-size:42px;}
.room-form-empty p{margin:0;font-size:13px;}
.room-form{padding:14px;overflow:auto;}
.room-form-notice{margin-bottom:10px;padding:9px 11px;border-radius:6px;background:#ecfdf5;color:#166534;font-size:12px;}
.room-form-notice.is-update,.room-form-notice.is-insert{background:#fff7ed;color:#9a3412;}
.room-form-notice.is-current_only{background:#f1f5f9;color:#475569;}
.room-form-table{width:100%;border-collapse:collapse;font-size:13px;}
.room-form-table th{width:104px;padding:8px 10px;background:var(--bs-gray-100);border:1px solid var(--bs-border-color);color:var(--bs-gray-700);font-size:12px;font-weight:600;white-space:nowrap;text-align:left;vertical-align:middle;}
.room-form-table td{padding:6px 8px;border:1px solid var(--bs-border-color);vertical-align:middle;}
.room-form-table input[readonly]{background:var(--bs-gray-100);color:var(--bs-gray-600);}
.room-form-table .form-text{margin-top:4px;font-size:10px;color:var(--bs-gray-500);}
.room-use-options{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.room-use-options label{display:inline-flex;align-items:center;gap:3px;font-size:12px;cursor:pointer;white-space:nowrap;}
.room-sync-guide{margin:0 0 12px;color:var(--bs-gray-600);font-size:13px;}
.room-sync-confirm-item{display:grid;grid-template-columns:minmax(160px,1fr) 76px minmax(180px,1.5fr);align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--bs-border-color);font-size:12px;}
.room-sync-confirm-item:last-child{border-bottom:0;}

@media (max-width:1200px){
    .room-info-split{grid-template-columns:1fr;overflow:auto;}
    .room-list-panel{min-height:300px;}
    .room-form-panel{min-height:390px;}
}

/* ============================================================
   [dashboard] 우측 현황 패널(content-rail) — 드로워 전환
   ============================================================ */
.content-rail.rail-drawer{transform:translateX(100%);transition:transform .25s ease, box-shadow .25s ease;box-shadow:none;z-index:1056;}
body.rail-open .content-rail.rail-drawer{transform:none;box-shadow:rgba(0,0,0,.1) -10px 0 50px;}
.rail-drawer-head{position:sticky;top:0;z-index:2;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:10px 12px 10px 16px;border-bottom:var(--bs-border);flex-shrink:0;}
.rail-drawer-head strong{font-size:16px;font-weight:700;color:var(--bs-primary);}

/* [scheduler] 예약등록 드로워 '예약가능' 셀렉트 — 아래 시간 버튼을 가리지 않도록 위쪽으로 오픈 */
#ocReserveLeadMin + .custom-container .custom-drop{top:auto;bottom:100%;margin-bottom:4px;}
#ocReserveLeadMin + .custom-container.custom-with-drop .custom-drop{margin-top:0;margin-bottom:4px;}

/* [scheduler] 짧은 이용시간 카드 — hover 시 전체 정보가 보이도록 자연 높이로 확장 */
.book-card:hover{height:auto!important;overflow:visible;z-index:120;}
.book-card:hover .card-body{overflow:visible;}
/* overflow:visible 상태에서도 카드 라운드 유지 (헤더/푸터 배경이 모서리를 덮는 것 방지) */
.book-card:hover .card-header{border-radius:8px 8px 0 0;}
.book-card:hover .card-footer{border-radius:0 0 8px 8px;}

/* [dashboard] 현황 드로워 핸들 — 드로워 타이틀 왼쪽 바깥에 고정, 열림 상태를 따라 이동 */
.rail-handle{position:fixed;top:calc(var(--header-h) + 10px);right:0;z-index:1057;width:40px;height:44px;padding:0;border:var(--bs-border);border-right:0;border-radius:4px 0 0 4px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;cursor:pointer;color:var(--bs-primary);box-shadow:none;transition:right .25s ease, box-shadow .25s ease;}
.rail-handle .material-symbols-outlined{font-size:18px;line-height:1;}
.rail-handle .rail-handle-chev{font-size:14px;color:var(--bs-gray-500);transition:transform .25s ease;}
body.rail-open .rail-handle{right:var(--rail-w);box-shadow:rgba(0,0,0,.08) -6px 4px 16px;}
body.rail-open .rail-handle .rail-handle-chev{transform:rotate(180deg);}

/* [dashboard] 푸터 폭 — 드로워 상태에 따라 상대적으로 변동 (닫힘: 전체 폭, 열림: 드로워만큼 축소) */
body.rail-drawer-page .app-footer{margin-right:0;}
body.rail-drawer-page.rail-open .app-footer{margin-right:var(--rail-w);}

/* [scheduler] 예약 카드 드래그 이동 */
.book-card[data-status="waiting"].ui-draggable{cursor:grab;}
.book-card.dragging{cursor:grabbing;opacity:.88;box-shadow:rgba(0,0,0,.28) 0 18px 40px -8px!important;border-color:var(--bs-primary)!important;}

/* [scheduler] 타석 선택 모달 — 기존 modal-sm(300px)의 1.5배 */
#selectBayModal .modal-dialog{max-width:450px;width:min(450px,calc(100vw - 32px));}
#selectBayModal .modal-body{min-height:300px;}
#selectBayModal label.btn{white-space:normal;padding-top:8px;padding-bottom:8px;}
#bayPickWrap .btn{width:84px;height:64px;line-height:16px;}
#bayPickWrap .btn-check[disabled] + .btn,#bayPickWrap .btn-check:disabled + .btn{font-size:12px;font-weight:500;}
#bookingUsageModal .item-title{opacity:.6;min-width:70px;display:inline-block}

/* [scheduler] 시간 팝오버 — 구간 내 예약·이용중 건수 강조 */
.time-pop .num.has{color:var(--bs-danger);font-weight:700;}

/* ==========================================================================
   2026-08-24 [dashboard] 우측 현황 드로워 — 좌우 스크롤 차단
   내용(4열 지표, 금액 행)이 드로워 폭을 넘길 때 가로 스크롤이 생기던 문제.
   ========================================================================== */
.content-rail{overflow-x:hidden;}
.content-rail .ss-wrapper,.content-rail .ss-content{overflow-x:hidden;}
.content-rail .content-wrap,.content-rail .content-head,.content-rail .content-body,
.content-rail .content-group,.content-rail .content-data{min-width:0;max-width:100%;}
.content-rail .content-body .content-group{gap:8px;flex-wrap:wrap;}
.content-rail .content-body .content-data{flex:1 1 0;min-width:0;}
.content-rail .content-body .content-group.flex-column .content-data{flex:0 0 auto;width:100%;}
.content-rail .content-body .content-data .title{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.content-rail .content-head h3{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.content-rail .btn-group{max-width:100%;flex-wrap:wrap;}

/* ==========================================================================
   2026-08-24 [scheduler_pivot.php] 그리드 피봇 레이아웃 — 세로축=타석, 가로축=시간.
   scheduler.php 원본 CSS는 절대 건드리지 않고 .scheduler.pivot 스코프에만 덮어쓴다.
   ========================================================================== */
:root{--roomcol-width:180px;--roomrow-height:150px;}

.scheduler.pivot .timecol-head{width:var(--roomcol-width);flex:0 0 var(--roomcol-width);}
.scheduler.pivot .timecol{width:var(--roomcol-width);}
.scheduler.pivot .grid-body .scroll-area{left:var(--roomcol-width);}

/* 좌측(타석) 트랙: timecol-track을 세로 목록 컨테이너로 재사용 */
.scheduler.pivot #timeCol .timecol-track{position:relative;}
.scheduler.pivot #timeCol .room-cell{
    position:absolute;left:0;right:0;top:0;height:var(--roomrow-height);
    display:flex;align-items:center;justify-content:space-between;gap:8px;
    padding:0 10px;border-bottom:1px solid #f0f0f3;font-weight:600;
    box-sizing:border-box;
}
.scheduler.pivot #timeCol .room-cell .room-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* 상단(시간) 트랙: rooms-track을 가로 눈금 컨테이너로 재사용 */
.scheduler.pivot .rooms-head .rooms-track{white-space:normal;}
.scheduler.pivot .rooms-head .time-tick{
    position:absolute;top:0;height:100%;left:0;
    display:flex;align-items:center;padding-left:8px;
    border-left:1px solid var(--line-color);
    font-size:12px;color:#555;box-sizing:border-box;
}
/* 첫 눈금은 타석열 경계선과 겹치고, 마지막 눈금은 본문에 대응 세로선이 없으므로 보더 제거 */
.scheduler.pivot .rooms-head .time-tick.first-tick,
.scheduler.pivot .rooms-head .time-tick.last-tick{border-left:none;}
/* 원본의 margin-left:-1px는 헤더 border-right 기준 보정이라, border-left를 쓰는 피봇에서는 세로선이 1px 어긋난다 */
.scheduler.pivot .grid-lines{margin-left:0;}
.scheduler.pivot .rooms-head .time-tick strong{font-size:12px;font-weight:600;}

/* 현재시각 라인: 가로선(top) → 세로선(left)으로 전환. #gridBody 안이므로 top은 0 */
.scheduler.pivot .now-line{
    left:0;right:auto;top:0;bottom:0;
    width:0;height:auto;border-top:none;border-left:1px solid var(--now-color);
}
/* 2026-09-02 현재시각 표시: 기준선의 자식으로 두고 90도 회전해 선 위에 세로로 정렬 */
.scheduler.pivot .now-line .now-marker{
    position:absolute;top:8px;left:0;right:auto;
    margin:0 0 0 -11px;                 /* 회전 후 폭(≈22px)의 절반만큼 당겨 선 중앙에 맞춤 (타석열 위로 그려져 가려지지 않음) */
    transform:rotate(90deg) translateY(-100%);
    transform-origin:0 0;
    white-space:nowrap;
}
/* 기준선/마커가 타석열 위로 그려지도록 타석열 z-index는 원본(3) 유지. 스크롤로 원점을 넘어가면 JS(adjustNowPositions)가 선을 숨긴다 */

/* 마감 이후 마스킹: 상단 시간축 트랙에서는 세로 밴드로 */
.scheduler.pivot .rooms-head .after-hours-tc{
    position:absolute;top:0;bottom:0;left:0;background:#00000006;pointer-events:none;z-index:0;
}

/* 고장 타석 마스킹은 가로 밴드(fault-col에 top/height/width가 인라인으로 들어옴) — 별도 규칙 불필요 */

/* 예약 카드: 세로=타석 슬롯 고정 높이, 가로=시간 길이에 따라 가변 폭이므로 최소폭만 보장 */
.scheduler.pivot .book-card{min-width:90px;min-height:0;}
/* 2026-09-02 피봇 카드 본문: 세로 나열 대신 가로 한 줄로 흐르게(고정 행 높이 안에 정보가 들어오도록) */
.scheduler.pivot .book-card .card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.scheduler.pivot .book-card .card-body{flex-direction:row;flex-wrap:wrap;align-items:center;column-gap:12px;row-gap:2px;padding:6px 12px;}
.scheduler.pivot .book-card .card-body > *{white-space:nowrap;}
.scheduler.pivot .book-card .card-footer{overflow:hidden;}
.scheduler.pivot .book-card .card-footer > *{white-space:nowrap;}
.scheduler.pivot .book-card .nickname{margin:0;}
.scheduler.pivot .book-card .timer-lg{font-size:18px;padding:0;margin:0;border-top:none;text-align:left;letter-spacing:0;}
.scheduler.pivot .book-card .timer-sub,
.scheduler.pivot .book-card .game-course{text-align:left;margin:0;}
/* 2026-09-02 이용중 카드 본문 3열: [닉네임/인원] [타이머(크게)] [게임모드/코스] */
.scheduler.pivot .book-card.using .card-body{
    display:grid;grid-template-columns:max-content max-content max-content;grid-template-rows:auto auto;
    column-gap:22px;row-gap:0;align-items:center;justify-content:start;
}
.scheduler.pivot .book-card.using .nickname{grid-column:1;grid-row:1;align-self:end;}
.scheduler.pivot .book-card.using .meta{grid-column:1;grid-row:2;align-self:start;}
.scheduler.pivot .book-card.using .timer-lg{grid-column:2;grid-row:1 / 3;font-size:28px;letter-spacing:1px;line-height:1.1;}
.scheduler.pivot .book-card.using .timer-sub{grid-column:3;grid-row:1;align-self:end;text-align:center;}
.scheduler.pivot .book-card.using .game-course{grid-column:3;grid-row:2;align-self:start;text-align:center;}
/* 호버: 높이는 행 높이로 고정(원본용 height:auto!important 무력화), 폭만 내용 길이만큼 넓혀 전체가 보이게 */
.scheduler.pivot .book-card:hover{
    height:calc(var(--roomrow-height) - 16px)!important;
    min-width:max-content;
    overflow:visible;z-index:120;
}
.scheduler.pivot .book-card:hover .card-header{overflow:visible;text-overflow:clip;}
.scheduler.pivot .book-card:hover .card-body{overflow:visible;flex-wrap:nowrap;}


/* ==========================================================================
   2026-09-09 윈도우 환경: 이용현황 그리드(.grid-body .scroll-area)에 얇은 스크롤바 노출
   — 맥은 트랙패드 가로 제스처로 충분하지만 윈도우 마우스는 가로 이동 수단이 없었다. (body.os-windows 는 scheduler JS가 부여)
   ========================================================================== */
body.os-windows .grid-body .scroll-area{scrollbar-width:thin!important;scrollbar-color:#c4c6d0 transparent;scrollbar-gutter:auto;}
body.os-windows .grid-body .scroll-area::-webkit-scrollbar{width:10px!important;height:10px!important;display:block!important}
body.os-windows .grid-body .scroll-area::-webkit-scrollbar-thumb{background:#c4c6d0!important;border-radius:999px;border:2px solid transparent;background-clip:content-box}
body.os-windows .grid-body .scroll-area::-webkit-scrollbar-track{background:transparent!important}


/* ==========================================================================
   2026-09-09 [dashboard] 타석 카드 그리드 반응형 — 카드 행(#roomCardRow)의 실제 폭 기준으로 한 줄 카드 수를 줄여
   좁아지면 아래로 내려가게 한다(사이드바 접힘·우측 드로워 열림에도 자동 대응). 기본 .col-20 = 20%(5장).
   ========================================================================== */
#roomCardRow{container-type:inline-size;}
@container (max-width: 1499px){ #roomCardRow > .col-20{width:25%;} }      /* 4장 */
@container (max-width: 1199px){ #roomCardRow > .col-20{width:33.3333%;} } /* 3장 */
@container (max-width: 899px) { #roomCardRow > .col-20{width:50%;} }      /* 2장 */
@container (max-width: 599px) { #roomCardRow > .col-20{width:100%;} }     /* 1장 */
