.gtb { --gtb-accent:#14635c; box-sizing:border-box; max-width:640px; margin:24px auto; padding:20px clamp(18px,4vw,32px) clamp(18px,4vw,32px); color:#172f32; background:#fff; border:1px solid #d4e2df; border-radius:16px; font:16px/1.7 system-ui,-apple-system,"Noto Sans JP",sans-serif; }
.gtb *, .gtb *::before, .gtb *::after { box-sizing:border-box; }
/* Keep SWELL's article-heading spacing/decorations out of the form title. */
.gtb > h2.gtb-title { margin:0 0 12px !important; padding:0 !important; border:0 !important; background:none !important; box-shadow:none; font-size:1.6em; line-height:1.5; color:#172f32; }
.gtb > h2.gtb-title::before, .gtb > h2.gtb-title::after { display:none !important; }
.gtb p { margin:12px 0; }
.gtb fieldset { display:grid; gap:16px; border:0; padding:0; margin:0; min-width:0; }
.gtb legend { font-size:1.1em; font-weight:700; margin-bottom:12px; }
.gtb label { display:block; color:#172f32; }
.gtb input:not([type=checkbox]), .gtb select { display:block; width:100%; min-height:48px; margin:5px 0 0; padding:10px 12px; border:1px solid #8ca6a3; border-radius:6px; background:#fff; color:#172f32; font:inherit; }
.gtb .gtb-check { display:flex; align-items:flex-start; gap:10px; }
.gtb input[type=checkbox] { flex:0 0 auto; width:20px; height:20px; margin:5px 0 0; accent-color:var(--gtb-accent); }
.gtb button { min-height:48px; border:0; border-radius:6px; padding:12px 18px; background:var(--gtb-accent); color:#fff; font:inherit; font-weight:700; cursor:pointer; }
.gtb button:disabled { opacity:.55; cursor:wait; }
.gtb :focus-visible { outline:3px solid #d98318; outline-offset:3px; }
.gtb .gtb-message { padding:12px; background:#edf5f3; border-radius:6px; overflow-wrap:anywhere; }
.gtb .gtb-trap { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.gtb a { color:#115b72; text-decoration:underline; }
.gtb [hidden] { display:none !important; }

.gtb .gtb-trainer { display:flex; flex-direction:column; align-items:center; gap:4px; margin:20px 0; text-align:center; }
.gtb .gtb-avatar { display:block; width:96px; height:96px; border-radius:50%; object-fit:cover; margin-bottom:8px; border:2px solid #d4e2df; }
.gtb .gtb-avatar-placeholder { display:grid; place-items:center; background:#edf5f3; }

.gtb input[type=hidden] { display:none !important; }
.gtb .gtb-calendar { min-width:0; }
.gtb .gtb-week-nav { display:flex; align-items:center; justify-content:space-between; gap:4px; border-radius:8px 8px 0 0; background:var(--gtb-accent); color:white; padding:6px; }
.gtb .gtb-week-nav button { padding:0; min-width:40px; min-height:44px; font-size:30px; }
.gtb .gtb-week-nav button:disabled { cursor:default; }
.gtb .gtb-week-range { text-align:center; font-size:14px; line-height:1.5; }
.gtb .gtb-week-legend { font-size:13px; margin:10px 0 2px; }
.gtb .gtb-week-hint { font-size:12px; color:#526967; margin:0 0 8px; }
.gtb .gtb-week-grid { max-height:480px; width:100%; max-width:100%; overflow-x:hidden; overflow-y:auto; touch-action:pan-y pinch-zoom; border:1px solid #d4e2df; border-radius:4px; position:relative; isolation:isolate; overscroll-behavior-y:auto; }
.gtb .gtb-week-table { border-collapse:separate; border-spacing:2px; table-layout:fixed; width:100%; min-width:0; max-width:100%; margin:0; background:#e4ece9; font-size:14px; line-height:1.3; }
.gtb .gtb-week-table th, .gtb .gtb-week-table td { padding:3px; border:0; text-align:center; vertical-align:middle; width:auto; min-width:0; white-space:normal; overflow-wrap:anywhere; background:#fff; color:#172f32; }
.gtb .gtb-week-table thead th { position:sticky; top:0; z-index:2; height:74px; background:#edf3f1; font-weight:700; }
.gtb .gtb-week-table tr > th:first-child { position:sticky; left:0; width:64px; z-index:1; background:#edf3f1; }
.gtb .gtb-week-table thead tr > th:first-child { z-index:3; }
.gtb .gtb-week-date, .gtb .gtb-week-day, .gtb .gtb-week-day-status { display:block; }
.gtb .gtb-week-date { font-size:16px; }
.gtb .gtb-week-day-status { font-size:10px; min-height:14px; margin-top:4px; }
.gtb .gtb-week-table th.is-saturday { background:#e5f3fa; color:#246584; }
.gtb .gtb-week-table th.is-sunday, .gtb .gtb-week-table th.is-closed { background:#f9e9e8; color:#934d4a; }
.gtb .gtb-week-table td.gtb-week-closed { background:#f9eeec; color:#946b67; font-size:13px; }
.gtb .gtb-week-table td.gtb-week-error { background:#fff4da; color:#8a5b13; }
.gtb .gtb-week-slot { display:block; width:100%; min-height:44px; padding:0; border:1px solid #d9e6de; border-radius:5px; background:white; color:#3a852e; font-size:30px; line-height:1; font-weight:500; }
.gtb .gtb-week-slot:hover { background:#e7f3e5; }
.gtb .gtb-week-slot[aria-pressed=true] { background:var(--gtb-accent); color:white; border-color:var(--gtb-accent); }
.gtb .gtb-week-unavailable { display:grid; place-items:center; min-height:44px; color:#87918f; font-size:25px; }
.gtb .gtb-week-refresh { min-height:40px; padding:6px 12px; margin-top:12px; background:white; color:var(--gtb-accent); border:1px solid #8ca6a3; font-size:13px; }
.gtb .gtb-week-selection { padding:12px; border-radius:6px; background:#edf5f3; font-size:14px; font-weight:700; }
.gtb .gtb-week-loading { padding:24px 12px; }
.gtb .gtb-sr-only { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
@media(max-width:420px) { .gtb .gtb-week-range { font-size:12px; } .gtb .gtb-week-nav button { min-width:32px; } }

/* Seven dates always fit the form width, including narrow embedded LPs. */
.gtb .gtb-note, .gtb .gtb-note a { color:#687374; }
.gtb .gtb-week-slot { min-width:0; }
@media(max-width:600px) {
  .gtb .gtb-week-table { border-spacing:1px; font-size:11px; }
  .gtb .gtb-week-table th, .gtb .gtb-week-table td { padding:1px; }
  .gtb .gtb-week-table tr > th:first-child { width:42px; white-space:nowrap; font-size:11px; }
  .gtb .gtb-week-table thead th { height:70px; }
  .gtb .gtb-week-date { font-size:10px; white-space:nowrap; }
  .gtb .gtb-week-day { font-size:10px; white-space:nowrap; }
  .gtb .gtb-week-day-status { font-size:9px; line-height:1.3; }
  .gtb .gtb-week-slot { font-size:24px; border-radius:4px; }
  .gtb .gtb-week-unavailable { font-size:22px; }
  .gtb .gtb-week-table td.gtb-week-closed { font-size:11px; }
}

.gtb .gtb-lesson { margin:0 0 24px; color:#687374; font-size:15px; }
.gtb .gtb-lesson p { margin:0 0 4px; color:inherit; }
.gtb .gtb-lesson ul { margin:0; padding:0; list-style:none; color:inherit; }
.gtb .gtb-lesson li { position:static; margin:0; padding:0; color:inherit; }
.gtb .gtb-lesson li::before { content:"- "; position:static; display:inline; background:none; border:0; box-shadow:none; }
