/* ☠ 지어진 파일 — 원본: _templates/_공통부품/예약데모/(engine.css · 짓기.py) */
:root{--ebk-bg:#EAEFDF;--ebk-surface:#FFFFFF;--ebk-soft:#DCE3CF;--ebk-ink:#1E221C;--ebk-sub:#454C42;--ebk-line:#CDD3C2;--ebk-line-strong:#9EA793;--ebk-accent:#3F5545;--ebk-accent-hover:#33473A;--ebk-accent-ink:#FFFFFF;--ebk-accent-text:#3F5545;--ebk-focus:#3F5545;--ebk-ok:#2A4331;--ebk-ok-bg:#DCE3CF;--ebk-no:#8A3324;--ebk-no-bg:#F6E3DE;--ebk-warn:#634709;--ebk-warn-bg:#F3E7C6;--ebk-r:24px;--ebk-r2:16px;--ebk-rb:999px;--ebk-rbar:8px;--ebk-hw:700;--ebk-head-line:#3F5545;--ebk-head-ink:#3F5545;--ebk-head-hover:#DCE3CF;}
/* ★ 대표 #313·#318(2026-09-26 19:35): 「가독성이 많이 떨어져」 — 두 판 같이. 본문 17px · 보조 14px 이상 ·
   시간·수업명·남은 자리 크게·굵게 · 흐린 글씨 진하게(판별 변수) · 카드 여백·줄 간격 넉넉히. 대비는 contrast.js 로 잰다(대비.mjs).
   예약·회원 관리 시연 화면 — 모양. ☠ 색·모서리·굵기는 판마다 짓기.py 가 :root 변수로 넣는다(판의 결을 따른다).
   ☠ 글자는 12px 아래로 내리지 않는다(한글 하한). 글꼴은 판이 이미 싣는 것을 물려받는다.
   ★ 대표 19:00 — 「글자 크게·단추 크게(모바일 엄지)」: 본문 16px·단추 52px 이상·누르는 칸 48px 이상. */

/* ── 머리 오른쪽 「회원 예약」 단추(로그인 단추처럼 작게) ── */
.ebk-head{display:inline-flex;align-items:center;gap:6px;font-size:14.5px;font-weight:600;line-height:1;white-space:nowrap;
  padding:9px 14px;border-radius:var(--ebk-rb);border:1px solid var(--ebk-head-line);color:var(--ebk-head-ink) !important;
  background:transparent;text-decoration:none;transition:border-color 200ms ease-out,background 200ms ease-out}
.ebk-head::before{content:"";width:14px;height:14px;flex:none;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1-4 4-6 8-6s7 2 8 6'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1-4 4-6 8-6s7 2 8 6'/%3E%3C/svg%3E") center/contain no-repeat}
.ebk-head:hover{border-color:var(--ebk-head-ink);background:var(--ebk-head-hover)}
.ebk-head:focus-visible{outline:2px solid currentColor;outline-offset:2px}

/* ── 창: 앱처럼 전체 화면 ── */
html.ebk-lock,html.ebk-lock body{overflow:hidden}
.ebk[hidden],.ebk-sheet[hidden],.ebk-form[hidden],.ebk-snack[hidden],.ebk [hidden]{display:none !important}
.ebk{position:fixed;inset:0;z-index:2147483000;background:var(--ebk-bg);color:var(--ebk-ink);font-size:17px;line-height:1.55;
  -webkit-text-size-adjust:100%;--ebk-gut:max(16px,calc((100% - 960px) / 2))}
.ebk *,.ebk *::before,.ebk *::after{box-sizing:border-box}
.ebk-panel{position:relative;width:100%;height:100%;display:flex;flex-direction:column}
.ebk-top{display:flex;align-items:center;gap:10px;padding:8px var(--ebk-gut);min-height:60px;background:var(--ebk-surface);border-bottom:1px solid var(--ebk-line)}
.ebk-top h2{flex:1;min-width:0;margin:0;font-size:19px;font-weight:var(--ebk-hw);color:var(--ebk-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ebk-back{all:unset;cursor:pointer;flex:none;width:44px;height:44px;margin-left:-8px;display:grid;place-items:center;font-size:24px;line-height:1;color:var(--ebk-ink);border-radius:var(--ebk-rb)}
.ebk-back:hover{background:var(--ebk-soft)}
.ebk-demo{display:flex;align-items:center;gap:2px;flex:none}
.ebk-tag{font-size:13px;font-weight:700;padding:3px 8px;border-radius:var(--ebk-rb);background:var(--ebk-soft);color:var(--ebk-ink);white-space:nowrap}
.ebk-tag-op{background:var(--ebk-ink);color:var(--ebk-bg)}
.ebk-reset{all:unset;cursor:pointer;font-size:14px;font-weight:600;color:var(--ebk-sub);padding:10px 6px;text-decoration:underline;text-underline-offset:3px}
.ebk-reset:hover{color:var(--ebk-ink)}
.ebk-tabs{display:flex;padding:0 var(--ebk-gut);background:var(--ebk-surface);border-bottom:1px solid var(--ebk-line)}
.ebk-tabs button{all:unset;cursor:pointer;flex:1;text-align:center;font-size:17px;font-weight:700;padding:15px 4px 13px;color:var(--ebk-sub);border-bottom:3px solid transparent;white-space:nowrap}
.ebk-tabs button[aria-selected="true"]{color:var(--ebk-ink);border-bottom-color:var(--ebk-accent-text)}
.ebk-sa{flex:1;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:18px var(--ebk-gut) 120px}   /* 아래 여백 = 떠 있는 단추가 마지막 줄을 안 가리게 */
.ebk-body{display:flex;flex-direction:column;gap:18px}
.ebk-live,.ebk-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ebk button:focus-visible,.ebk input:focus-visible{outline:2px solid var(--ebk-focus);outline-offset:2px}

/* ── 단추 ── */
.ebk-btn{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:52px;padding:0 22px;
  border-radius:var(--ebk-rb);font-size:17px;font-weight:700;cursor:pointer;text-align:center;line-height:1.3;
  transition:background 150ms ease-out,color 150ms ease-out,border-color 150ms ease-out}
.ebk-btn-main{background:var(--ebk-accent);color:var(--ebk-accent-ink);border:1px solid var(--ebk-accent)}
.ebk-btn-main:hover{background:var(--ebk-accent-hover);border-color:var(--ebk-accent-hover)}
.ebk-btn-line{background:var(--ebk-surface);color:var(--ebk-ink);border:1px solid var(--ebk-line-strong)}
.ebk-btn-line:hover{border-color:var(--ebk-ink)}
.ebk-btn-s{min-height:46px;padding:0 18px;font-size:16px}
.ebk-btn-xl{min-height:58px;font-size:18px}

/* ── 손님: 첫 화면 위 현황(다음 수업 · 남은 횟수) ── */
.ebk-glance{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:12px}
.ebk-next{display:grid;grid-template-columns:1fr auto;grid-template-areas:"k k" "t b" "s b";gap:2px 12px;align-items:center;
  background:var(--ebk-accent);color:var(--ebk-accent-ink);border-radius:var(--ebk-r);padding:18px 20px}
.ebk-next small{grid-area:k;font-size:14.5px;font-weight:700}
.ebk-next strong{grid-area:t;font-size:24px;font-weight:var(--ebk-hw);line-height:1.25}
.ebk-next span{grid-area:s;font-size:16.5px}
.ebk-next .ebk-btn,.ebk-next .ebk-st{grid-area:b}
.ebk-next .ebk-btn{background:transparent;color:var(--ebk-accent-ink);border-color:currentColor;border-width:2px;min-height:50px;padding:0 16px;font-size:16px}
.ebk-next .ebk-btn:hover{background:rgba(255,255,255,.12)}
.ebk-left{list-style:none;margin:0;padding:0;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:12px}
.ebk-left li{display:flex;flex-direction:column;justify-content:center;gap:2px;background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);padding:14px 16px}
.ebk-left small{font-size:15px;color:var(--ebk-ink);font-weight:700}
.ebk-left b{font-size:36px;font-weight:var(--ebk-hw);line-height:1.1;font-variant-numeric:tabular-nums;color:var(--ebk-ink)}
.ebk-left i{font-style:normal;font-size:16px;font-weight:700;margin-left:3px}
.ebk-left span{font-size:14.5px;color:var(--ebk-sub)}
.ebk-warn{font-style:normal;font-weight:700;color:var(--ebk-warn)}

/* 날짜 · 종류 */
.ebk-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.ebk-day{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 0 9px;min-height:52px;
  border-radius:var(--ebk-r2);border:1px solid var(--ebk-line);background:var(--ebk-surface);color:var(--ebk-ink)}
.ebk-day small{font-size:14px;color:var(--ebk-sub);font-weight:700}
.ebk-day b{font-size:21px;font-weight:700;font-variant-numeric:tabular-nums}
.ebk-day[aria-pressed="true"]{background:var(--ebk-accent);border-color:var(--ebk-accent);color:var(--ebk-accent-ink)}
.ebk-day[aria-pressed="true"] small{color:var(--ebk-accent-ink)}
.ebk-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ebk-chip{all:unset;cursor:pointer;flex:none;font-size:16px;font-weight:700;padding:0 18px;min-height:46px;display:inline-flex;align-items:center;border-radius:var(--ebk-rb);
  border:1px solid var(--ebk-line-strong);background:var(--ebk-surface);color:var(--ebk-ink);white-space:nowrap}
.ebk-chip[aria-pressed="true"]{background:var(--ebk-ink);border-color:var(--ebk-ink);color:var(--ebk-bg)}
.ebk-h3{margin:8px 0 -6px;font-size:19px;font-weight:800;color:var(--ebk-ink)}
.ebk-h3 small{font-size:14.5px;font-weight:600;color:var(--ebk-sub);margin-left:6px}

/* 날짜 — 주 단위 · 이전/다음 주 · 달력(대표 #320) · 지난 날은 못 누름 */
.ebk-week{display:flex;align-items:center;gap:8px}
.ebk-wk-t{flex:1;text-align:center;font-size:16px;font-weight:800;color:var(--ebk-ink);white-space:nowrap}
.ebk-wk-btn{all:unset;cursor:pointer;flex:none;min-height:46px;padding:0 14px;display:inline-flex;align-items:center;border-radius:var(--ebk-rb);
  border:1px solid var(--ebk-line-strong);background:var(--ebk-surface);color:var(--ebk-ink);font-size:15.5px;font-weight:700;white-space:nowrap}
.ebk-wk-btn[disabled]{cursor:default;color:var(--ebk-sub);border-style:dashed;opacity:.8}
.ebk-wk-cal{all:unset;cursor:pointer;flex:none;width:46px;height:46px;border-radius:var(--ebk-rb);border:1px solid var(--ebk-line-strong);background:var(--ebk-surface);position:relative}
.ebk-wk-cal::before{content:"";position:absolute;inset:12px;background:var(--ebk-ink);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='3.5' y='5' width='17' height='15' rx='2'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='3.5' y='5' width='17' height='15' rx='2'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E") center/contain no-repeat}
.ebk-wk-cal[aria-expanded="true"]{background:var(--ebk-ink)}
.ebk-wk-cal[aria-expanded="true"]::before{background:var(--ebk-bg)}
.ebk-day[disabled]{cursor:default;opacity:.45}
.ebk-day.is-shut{border-style:dashed}
.ebk-day i{font-style:normal;font-size:12.5px;font-weight:700;color:var(--ebk-sub)}
.ebk-day .ebk-dot{width:6px;height:6px;border-radius:50%;background:var(--ebk-accent-text)}
.ebk-day[aria-pressed="true"] .ebk-dot{background:var(--ebk-accent-ink)}
.ebk-cal{background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);padding:16px;display:flex;flex-direction:column;gap:6px}
.ebk-cal-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.ebk-cal-h strong{font-size:18px;font-weight:800}
.ebk-cal-h span{font-size:14.5px;color:var(--ebk-sub)}
.ebk-cal-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.ebk-cal-wk span{text-align:center;font-size:14px;font-weight:700;color:var(--ebk-sub)}
.ebk-cal .ebk-day{min-height:50px}

/* 강사 칩은 한 줄로 밀어 넘긴다 */
.ebk-row-scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 calc(var(--ebk-gut) * -1);padding:0 var(--ebk-gut)}
.ebk-row-scroll::-webkit-scrollbar{display:none}
.ebk-chip-t small{font-size:14px;font-weight:700;margin-left:4px;opacity:.85}
.ebk-daytitle{margin:6px 0 -4px;font-size:15px;font-weight:700;color:var(--ebk-sub)}

/* 1:1 — 강사별 빈 시간(칩 누름 → 확인) */
.ebk-tcs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,430px),1fr));gap:12px}
.ebk-tc{background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);padding:18px 20px;display:flex;flex-direction:column;gap:14px}
.ebk-tc-h{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;align-items:center}
.ebk-tc-h strong{font-size:19px;font-weight:800}
.ebk-tc-h span{grid-column:1;font-size:15.5px;color:var(--ebk-sub)}
.ebk-tc-h em{grid-column:2;grid-row:1 / span 2;font-style:normal;font-size:15px;font-weight:700;color:var(--ebk-ink);white-space:nowrap}
.ebk-tc-h em b{font-size:22px;font-weight:800}
.ebk-tc-h em b.is-full{font-size:15px;color:var(--ebk-no)}
.ebk-slots{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px}
.ebk-slot{all:unset;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:100%;min-height:62px;padding:6px 4px;
  border-radius:var(--ebk-r2);border:2px solid var(--ebk-accent);background:var(--ebk-surface);color:var(--ebk-ink);cursor:pointer;text-align:center}
.ebk-slot b{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums}
.ebk-slot small{font-size:13.5px;font-weight:700;color:var(--ebk-accent-text)}
button.ebk-slot:hover{background:var(--ebk-accent);color:var(--ebk-accent-ink)}
button.ebk-slot:hover small{color:var(--ebk-accent-ink)}
.ebk-slot.is-off{cursor:default;border:1px dashed var(--ebk-line-strong);background:transparent;color:var(--ebk-sub)}
.ebk-slot.is-off small{color:var(--ebk-sub)}
.ebk-slot.is-mine{cursor:default;border-color:var(--ebk-accent);background:var(--ebk-accent);color:var(--ebk-accent-ink)}
.ebk-slot.is-mine small{color:var(--ebk-accent-ink)}

/* 수업 카드 — 카드 «전체»가 누르는 칸 */
.ebk-classes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.ebk-cl{background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);overflow:hidden}
.ebk-cl-in{display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:6px 16px;align-items:center;padding:18px 20px;width:100%;text-align:left;color:var(--ebk-ink)}
.ebk-cl-btn{all:unset;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:6px 16px;align-items:center;padding:18px 20px;width:100%;color:var(--ebk-ink)}
.ebk-cl-btn:hover{background:var(--ebk-soft)}
.ebk-cl-time{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}
.ebk-cl-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.ebk-cl-main strong{font-size:19px;font-weight:800;line-height:1.3}
.ebk-cl-main>span{font-size:15.5px;color:var(--ebk-sub)}
.ebk-cl-cap{display:flex;flex-direction:column;align-items:flex-end;font-size:14.5px;color:var(--ebk-sub);white-space:nowrap;line-height:1.3}
.ebk-cl-cap b{font-size:24px;font-weight:800;color:var(--ebk-ink)}
.ebk-cl-cap b.is-full{font-size:18px;color:var(--ebk-no)}
.ebk-cl-cap i{font-style:normal;font-weight:700;color:var(--ebk-ink)}
.ebk-cl-cap small{font-size:13.5px}
.ebk-cl-go{grid-column:1 / -1;justify-self:stretch;display:flex;align-items:center;justify-content:center;min-height:48px;margin-top:10px;
  border-radius:var(--ebk-rb);background:var(--ebk-accent);color:var(--ebk-accent-ink);font-size:17px;font-weight:800}
.ebk-cl-btn:hover .ebk-cl-go{background:var(--ebk-accent-hover)}
.ebk-cl-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 20px 16px}
.ebk-cl.is-off .ebk-cl-in{color:var(--ebk-sub)}
.ebk-cl.is-off .ebk-cl-time,.ebk-cl.is-off .ebk-cl-main strong{color:var(--ebk-sub)}
.ebk-cl.is-mine{border-color:var(--ebk-accent-text);box-shadow:inset 4px 0 0 var(--ebk-accent-text)}
.ebk-cl-why{margin:0;font-size:15px;font-weight:700;color:var(--ebk-no)}
.ebk-st{display:inline-block;font-style:normal;font-size:14.5px;font-weight:700;padding:4px 10px;border-radius:var(--ebk-rb);white-space:nowrap}
.ebk-st-ok{background:var(--ebk-ok-bg);color:var(--ebk-ok)}
.ebk-st-no{background:var(--ebk-no-bg);color:var(--ebk-no)}
.ebk-st-warn{background:var(--ebk-warn-bg);color:var(--ebk-warn)}
.ebk-st-wait{background:var(--ebk-soft);color:var(--ebk-ink)}
.ebk-empty{margin:0;padding:26px 16px;text-align:center;font-size:16.5px;color:var(--ebk-sub);background:var(--ebk-surface);border:1px dashed var(--ebk-line-strong);border-radius:var(--ebk-r)}
.ebk-fine{margin:0;font-size:14.5px;line-height:1.7;color:var(--ebk-sub)}

/* 회원권 */
.ebk-passes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px}
.ebk-pass{background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);padding:20px;display:flex;flex-direction:column;gap:12px}
.ebk-pass-h{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.ebk-pass-h strong{font-size:19px}
.ebk-big{font-size:44px;font-weight:var(--ebk-hw);color:var(--ebk-ink);font-variant-numeric:tabular-nums;line-height:1}
.ebk-big small{font-size:17px;color:var(--ebk-ink);font-weight:700;margin-left:4px}
.ebk-big-s{font-size:26px}
.ebk-pass dl{margin:0;display:flex;flex-direction:column;gap:8px;font-size:16px}
.ebk-pass dl div{display:flex;gap:12px}
.ebk-pass dt{color:var(--ebk-sub);min-width:56px}
.ebk-pass dd{margin:0;color:var(--ebk-ink)}

/* 표 꼴(출석 기록·회원) */
.ebk-total{margin:0;font-size:17px;color:var(--ebk-ink);font-weight:600}
.ebk-total b{font-size:26px;font-weight:var(--ebk-hw)}
.ebk-table{list-style:none;margin:0;padding:0;background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);overflow:hidden}
.ebk-table li{display:grid;grid-template-columns:140px minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:16px 20px;border-top:1px solid var(--ebk-line);font-size:16.5px;color:var(--ebk-ink)}
.ebk-table li:first-child{border-top:0}
.ebk-table-m li{grid-template-columns:90px minmax(0,1.5fr) minmax(0,1fr) auto}
.ebk-search{display:flex;flex:1 1 240px}
.ebk-search input{flex:1;min-width:0;height:48px;padding:0 16px;border-radius:var(--ebk-rb);border:1px solid var(--ebk-line-strong);
  background:var(--ebk-surface);color:var(--ebk-ink);font:inherit;font-size:16px}
.ebk-search input::placeholder{color:var(--ebk-sub)}
.ebk-ro{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border:1px dashed var(--ebk-line-strong);border-radius:var(--ebk-r);font-size:15.5px;color:var(--ebk-ink)}
.ebk-ro small{font-size:14px;color:var(--ebk-sub)}

/* 운영자 — 오늘 할 일 */
.ebk-kpi{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ebk-kpi li{background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ebk-kpi small{font-size:14.5px;color:var(--ebk-sub);font-weight:700}
.ebk-kpi b{font-size:30px;font-weight:var(--ebk-hw);color:var(--ebk-ink);font-variant-numeric:tabular-nums;line-height:1.15}
.ebk-kpi span{font-size:14px;color:var(--ebk-sub)}
.ebk-op{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.ebk-op-cl{background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);overflow:hidden}
.ebk-op-cl.is-open{border-color:var(--ebk-accent-text)}
.ebk-op-h{all:unset;box-sizing:border-box;cursor:pointer;width:100%;display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:6px 16px;align-items:center;padding:18px 20px;color:var(--ebk-ink)}
.ebk-op-h:hover{background:var(--ebk-soft)}
.ebk-op-n{display:flex;flex-direction:column;align-items:flex-end;font-size:15px;font-weight:600;color:var(--ebk-sub);white-space:nowrap}
.ebk-op-n b{font-size:24px;font-weight:800;color:var(--ebk-ink)}
.ebk-op-n small{font-size:13.5px}
.ebk-op-cl.is-open .ebk-op-h{border-bottom:1px solid var(--ebk-line)}
.ebk-att{list-style:none;margin:0;padding:6px 18px 14px;display:flex;flex-direction:column}
.ebk-att li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--ebk-line)}
.ebk-att li:last-child{border-bottom:0}
.ebk-att li>span{display:flex;flex-direction:column;gap:2px}
.ebk-att li strong{font-size:18px}
.ebk-att li small{font-size:14px;color:var(--ebk-sub)}
.ebk-att-btn{min-width:120px;min-height:52px}
.ebk-op-cl .ebk-empty{margin:12px 18px 16px}

/* 요약 */
.ebk-bars{list-style:none;margin:0;padding:18px 18px 14px;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:14px;align-items:end;height:220px;
  background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r)}
.ebk-bars li{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px}
.ebk-bar{width:min(52px,70%);background:var(--ebk-accent);border-radius:var(--ebk-rbar) var(--ebk-rbar) 0 0;min-height:4px}
.ebk-bars b{font-size:16px;color:var(--ebk-ink)}
.ebk-bars small{font-size:14px;color:var(--ebk-sub)}

/* 관리자 — 휴관일·수업 없는 날(일 #134) · 다른 날 명단 */
.ebk-closed{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:26px 22px;background:var(--ebk-surface);border:1px dashed var(--ebk-line-strong);border-radius:var(--ebk-r)}
.ebk-closed strong{font-size:22px;font-weight:var(--ebk-hw);color:var(--ebk-ink)}
.ebk-closed span{font-size:16px;color:var(--ebk-sub)}
.ebk-oday{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:12px 16px;background:var(--ebk-soft);border-radius:var(--ebk-r2)}
.ebk-oday strong{font-size:17px;font-weight:800;color:var(--ebk-ink)}
.ebk-oday span{flex:1 1 180px;font-size:14.5px;color:var(--ebk-sub)}

/* 관리자 — 안내 한 줄(대표 #326 ⑥) · 수업 관리 */
.ebk-opnote{margin:0;padding:9px var(--ebk-gut);background:var(--ebk-soft);color:var(--ebk-ink);font-size:14px;line-height:1.5;border-bottom:1px solid var(--ebk-line)}
.ebk-mhead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.ebk-mhead .ebk-h3{margin:0}
.ebk-mlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.ebk-mrow{all:unset;box-sizing:border-box;cursor:pointer;width:100%;display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:6px 16px;align-items:center;
  padding:16px 20px;background:var(--ebk-surface);border:1px solid var(--ebk-line);border-radius:var(--ebk-r);color:var(--ebk-ink)}
.ebk-mrow:hover{border-color:var(--ebk-accent-text)}
.ebk-form{position:fixed;inset:0;z-index:2147483001;background:rgba(10,12,10,.5);display:flex;align-items:flex-end;justify-content:center}
.ebk-form-in{width:min(560px,100%);max-height:100%;overflow:auto;background:var(--ebk-surface);color:var(--ebk-ink);border-radius:var(--ebk-r) var(--ebk-r) 0 0;
  padding:24px 20px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;box-shadow:0 -10px 40px rgba(0,0,0,.25)}
.ebk-form h3{margin:0;font-size:23px;font-weight:var(--ebk-hw)}
.ebk-fm-when{margin:0;font-size:16px;font-weight:700;color:var(--ebk-sub)}
.ebk-fm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 12px}
.ebk-fm-grid label{display:flex;flex-direction:column;gap:6px;font-size:15px;font-weight:700;color:var(--ebk-ink)}
.ebk-fm-grid label.ebk-fm-rep{grid-column:1 / -1}
.ebk-fm-grid input,.ebk-fm-grid select{box-sizing:border-box;width:100%;height:50px;padding:0 12px;border-radius:var(--ebk-r2);border:1px solid var(--ebk-line-strong);
  background:var(--ebk-bg);color:var(--ebk-ink);font:inherit;font-size:17px;font-weight:600}
.ebk-fm-grid input:disabled{opacity:.7}
.ebk-fm-err{margin:0;padding:12px 14px;border-radius:var(--ebk-r2);background:var(--ebk-no-bg);color:var(--ebk-no);font-size:15.5px;font-weight:700;line-height:1.5}
.ebk-fm-info{margin:0;font-size:15px;color:var(--ebk-sub)}
.ebk-fm-act{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.ebk-fm-act .ebk-btn{width:100%}
.ebk-fm-del{color:var(--ebk-no);border-color:var(--ebk-no)}

/* 확인 시트(예약 두 번째 누름) · 되돌리기 */
.ebk-sheet{position:fixed;inset:0;z-index:2147483001;background:rgba(10,12,10,.5);display:flex;align-items:flex-end;justify-content:center}
.ebk-sheet-in{width:min(520px,100%);background:var(--ebk-surface);color:var(--ebk-ink);border-radius:var(--ebk-r) var(--ebk-r) 0 0;padding:26px 20px calc(20px + env(safe-area-inset-bottom));
  display:flex;flex-direction:column;gap:10px;box-shadow:0 -10px 40px rgba(0,0,0,.25)}
.ebk-sheet h3{margin:0;font-size:24px;font-weight:var(--ebk-hw)}
.ebk-sheet p{margin:0 0 6px;font-size:17.5px;line-height:1.7;color:var(--ebk-sub);white-space:pre-line}
.ebk-sheet-act{display:flex;flex-direction:column;gap:8px}
.ebk-sheet-act .ebk-btn{width:100%}
.ebk-snack{position:absolute;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(560px,calc(100% - 24px));
  display:flex;align-items:center;gap:10px;padding:10px 10px 10px 18px;border-radius:var(--ebk-r2);background:var(--ebk-ink);color:var(--ebk-bg);
  font-size:16px;line-height:1.45;box-shadow:0 12px 30px rgba(0,0,0,.3)}
.ebk-snack span{flex:1}
.ebk-snack button{all:unset;cursor:pointer;flex:none;font-weight:800;font-size:16px;padding:0 14px;min-height:44px;display:inline-flex;align-items:center;border-radius:var(--ebk-rb);color:var(--ebk-bg);text-decoration:underline;text-underline-offset:3px}

/* ── 떠 있는 전환 단추(대표 결재 #72 의견) — 오른쪽 아래 · 엄지 크기 · 알림 막대가 뜨면 위로 비켜남 ── */
.ebk-fab{all:unset;box-sizing:border-box;cursor:pointer;position:absolute;z-index:3;right:max(16px,calc((100% - 960px) / 2));
  bottom:calc(20px + env(safe-area-inset-bottom) + var(--ebk-fab-lift,0px));display:inline-flex;align-items:center;gap:8px;
  min-height:54px;padding:0 20px 0 16px;border-radius:999px;background:var(--ebk-ink);color:var(--ebk-bg);font-size:16px;font-weight:800;
  box-shadow:0 10px 28px rgba(0,0,0,.28);transition:bottom 200ms ease-out,transform 150ms ease-out}
.ebk-fab:hover{transform:translateY(-1px)}
.ebk-fab:focus-visible{outline:3px solid var(--ebk-focus);outline-offset:3px}
.ebk-fab-i{width:20px;height:20px;flex:none;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='8' cy='15' r='4'/%3E%3Cpath d='M11 12l9-9M17 6l3 3M15 8l2 2'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='8' cy='15' r='4'/%3E%3Cpath d='M11 12l9-9M17 6l3 3M15 8l2 2'/%3E%3C/svg%3E") center/contain no-repeat}
.ebk.is-op .ebk-fab{background:var(--ebk-accent);color:var(--ebk-accent-ink)}
.ebk.is-op .ebk-fab-i{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1-4 4-6 8-6s7 2 8 6'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1-4 4-6 8-6s7 2 8 6'/%3E%3C/svg%3E")}
.ebk.is-op .ebk-top{box-shadow:inset 0 -3px 0 var(--ebk-ink)}
@media (prefers-reduced-motion:reduce){ .ebk-fab{transition:none} }

/* ── 넓은 화면: 확인 시트를 가운데로 ── */
@media (min-width:700px){
  .ebk-sheet,.ebk-form{align-items:center}
  .ebk-sheet-in,.ebk-form-in{border-radius:var(--ebk-r);padding:26px}
}
/* ── 좁은 화면 ── */
@media (max-width:640px){
  .ebk-glance{grid-template-columns:1fr}
  .ebk-days{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
  .ebk-day b{font-size:19px}
  .ebk-wk-t{font-size:14.5px}
  .ebk-wk-btn{padding:0 10px;font-size:14.5px}
  .ebk-cal{padding:12px}
  .ebk-cal-row{gap:4px}
  .ebk-cl-in,.ebk-cl-btn,.ebk-op-h{grid-template-columns:60px minmax(0,1fr) auto;padding:16px;gap:4px 12px}
  .ebk-tc{padding:16px}
  .ebk-slots{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ebk-cl-time{font-size:20px}
  .ebk-cl-foot{padding:0 16px 16px;flex-wrap:wrap}
  .ebk-table li{grid-template-columns:minmax(0,1fr) auto}
  .ebk-table li>span:first-child{grid-column:1 / -1;font-size:14.5px;color:var(--ebk-sub)}
  .ebk-table-m li{grid-template-columns:minmax(0,1fr) auto}
  .ebk-table-m li>span:first-child{grid-column:auto;font-size:16px;color:var(--ebk-ink)}
  .ebk-table-m li>span:nth-child(2){grid-column:1 / -1;order:3}
  .ebk-table-m li>span:nth-child(3){grid-column:1 / -1;order:4;font-size:15px;color:var(--ebk-sub)}
  .ebk-kpi b{font-size:26px}
  .ebk-att{padding:4px 16px 12px}
  .ebk-demo .ebk-reset{padding:10px 4px}
}
@media (prefers-reduced-motion:reduce){ .ebk-btn,.ebk-head{transition:none} }
