.wpab-calendar-root { max-width: 720px; margin: 0 auto 1rem; font-family: sans-serif; }
.wpab-cal-header { display:flex; justify-content:space-between; align-items:center; gap:14px; margin-bottom:0.85rem; }
.wpab-cal-header .wpab-title { font-weight:700; font-size:clamp(1.6rem, 3vw, 2.1rem); letter-spacing:.02em; }
.wpab-cal-header .wpab-prev,
.wpab-cal-header .wpab-next { display:inline-flex; align-items:center; justify-content:center; min-width:46px; min-height:46px; padding:0 12px; border:1px solid #cfd8de; border-radius:999px; background:#fff; color:#18343f; font-size:1.5rem; font-weight:700; line-height:1; box-shadow:0 2px 8px rgba(24, 52, 63, 0.08); cursor:pointer; }
.wpab-cal-header .wpab-prev:hover,
.wpab-cal-header .wpab-next:hover,
.wpab-cal-header .wpab-prev:focus-visible,
.wpab-cal-header .wpab-next:focus-visible { border-color:#18343f; box-shadow:0 0 0 3px rgba(24, 52, 63, 0.12); outline:none; }
.wpab-calendar-table { width:100%; border-collapse:collapse; }
.wpab-calendar-table th, .wpab-calendar-table td { border:1px solid #eee; padding:8px; vertical-align:top; height:90px; position:relative; }
.wpab-empty { background:#fafafa; }
.wpab-day { cursor:pointer; position:relative; }
.wpab-day .wpab-day-number { font-size:0.95rem; font-weight:600; }
.wpab-badge { position:absolute; right:6px; bottom:6px; background:#ff5d5d; color:#fff; padding:4px 8px; border-radius:12px; font-size:0.95rem; font-weight:700; }
.wpab-badge.wpab-badge-high { background:#1f9d55; color:#fff; }
.wpab-badge.wpab-badge-mid { background:#ffd24d; color:#222; }
.wpab-badge.wpab-badge-low { background:#d93025; color:#fff; }
.wpab-day.wpab-full-day .wpab-badge { background:#999; }
.wpab-day.wpab-holiday-day { background:#ececec; color:#777; cursor:default; }
.wpab-day.wpab-holiday-day .wpab-badge { background:#7a7a7a; }
.wpab-day.wpab-has-booking { background:#fff7e6; }
.wpab-day.wpab-past { background:#f5f5f5; color:#999; cursor:default; }
.wpab-overlay { position:fixed; left:0; top:0; right:0; bottom:0; background: rgba(0,0,0,0.5); display:flex; justify-content:center; align-items:flex-start; padding:24px 16px; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; z-index:9999; }
.wpab-modal { background:#fff; padding:14px; border-radius:6px; width:min(760px, calc(100vw - 32px)); max-height:calc(100vh - 48px); overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; box-sizing:border-box; box-shadow:0 8px 24px rgba(0,0,0,0.2); }
.wpab-slots { margin-bottom:8px; }
.wpab-slot-btn { margin:4px; padding:6px 8px; }
.wpab-slot-btn { min-height:40px; font-size:.94rem; }
.wpab-slot-btn.wpab-booked { background:#eee; color:#999; }
.wpab-close { display:inline-flex; align-items:center; justify-content:center; min-height:38px; min-width:108px; margin-top:8px; padding:7px 14px; border:1px solid #cfd8de; border-radius:10px; background:#fff; color:#324550; font-size:.9rem; font-weight:700; cursor:pointer; }
.wpab-close:hover, .wpab-close:focus-visible { border-color:#18343f; color:#18343f; }
.wpab-modal-intro { margin:0 0 10px; line-height:1.7; font-size:.95rem; }
.wpab-booking-picker { display:grid; gap:16px; align-items:start; }
.wpab-step-progress { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:8px; }
.wpab-step-progress span { display:flex; align-items:center; justify-content:center; min-height:38px; padding:7px 9px; border-radius:999px; border:1px solid #dbe4ea; background:#f5f8fa; color:#5b6670; font-size:.84rem; font-weight:700; text-align:center; }
.wpab-step-progress span.is-active { background:#18343f; border-color:#18343f; color:#fff; }
.wpab-step-progress span.is-done { background:#e9f6ef; border-color:#b9e0c6; color:#22673c; }
.wpab-step-summary { display:flex; flex-wrap:wrap; gap:8px; padding:9px 11px; border:1px solid #e3e7ea; border-radius:12px; background:#fafcfd; color:#324550; font-size:.92rem; }
.wpab-step-summary span { display:inline-flex; align-items:center; min-height:30px; padding:4px 9px; border-radius:999px; background:#fff; border:1px solid #e7edf1; }
.wpab-step-panels { position:relative; min-height:280px; }
.wpab-step-panel { display:none; }
.wpab-step-panel.is-active { display:block; }
.wpab-step-head { margin-bottom:10px; }
.wpab-step-count { display:inline-block; margin-bottom:5px; color:#5b6670; font-size:.78rem; font-weight:700; letter-spacing:.06em; }
.wpab-menu-group { border:1px solid #e3e7ea; border-radius:12px; padding:10px; }
.wpab-menu-group h4, .wpab-time-title { margin:0 0 8px; font-size:.96rem; }
.wpab-menu-options { display:grid; gap:8px; }
.wpab-menu-option { display:flex; align-items:flex-start; gap:8px; padding:7px 9px; border-radius:10px; border:1px solid #edf0f2; cursor:pointer; font-size:.94rem; line-height:1.45; }
.wpab-menu-option input { margin-top:2px; }
.wpab-menu-option.is-disabled { opacity:.45; cursor:not-allowed; }
.wpab-menu-note, .wpab-menu-empty, .wpab-remaining { margin:0; color:#5b6670; font-size:.9rem; }
.wpab-booking-picker-times { border:1px solid #e3e7ea; border-radius:12px; padding:10px; background:#fafcfd; }
.wpab-slots { display:flex; flex-wrap:wrap; gap:8px; }
.wpab-slot-btn { margin:0; }
.wpab-step-actions { position:sticky; bottom:0; display:flex; justify-content:space-between; gap:10px; padding-top:10px; margin-top:4px; background:linear-gradient(to bottom, rgba(255,255,255,0), #fff 32%); }
.wpab-step-btn { min-height:42px; min-width:124px; padding:8px 14px; border:1px solid #18343f; border-radius:10px; background:#18343f; color:#fff; font-size:.94rem; font-weight:700; cursor:pointer; }
.wpab-step-btn.is-secondary { background:#fff; color:#18343f; }
.wpab-step-btn:disabled { opacity:.45; cursor:default; }
.wpab-success, .wpab-full, .wpab-taken { padding:10px; background:#e6ffed; border:1px solid #c8f7d6; margin-bottom:10px; }
.wpab-full, .wpab-taken { background:#fff0f0; border-color:#f5c2c2; }
.wpab-action-btn { min-height:44px; padding:10px 18px; font-size:1rem; border-radius:6px; }
.wpab-book-btn { min-width:160px; font-weight:700; }
.wpab-logout-btn { min-width:120px; }
.wpab-confirm-btn { min-height:44px; min-width:120px; padding:10px 18px; font-size:1rem; border-radius:6px; }
.wpab-customer-mypage-card { margin:18px 0 0; border:1px solid #dde6eb; border-radius:14px; background:linear-gradient(180deg, #fcfeff 0%, #f8fbfd 100%); box-shadow:0 6px 16px rgba(24, 52, 63, 0.04); }
.wpab-customer-mypage-summary { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:12px 14px; cursor:pointer; list-style:none; }
.wpab-customer-mypage-summary::-webkit-details-marker { display:none; }
.wpab-customer-mypage-controls { display:flex; flex-direction:column; gap:8px; width:120px; flex-shrink:0; }
.wpab-customer-mypage-toggle { display:inline-flex; align-items:center; justify-content:center; width:100%; min-height:34px; padding:0 12px; border:1px solid #d0dbe1; border-radius:999px; background:#fff; color:#324550; font-size:.84rem; font-weight:700; flex-shrink:0; }
.wpab-customer-mypage-toggle-close { display:none; }
.wpab-customer-mypage-card[open] .wpab-customer-mypage-toggle-open { display:none; }
.wpab-customer-mypage-card[open] .wpab-customer-mypage-toggle-close { display:inline; }
.wpab-customer-mypage-body { padding:0 14px 14px; }
.wpab-customer-session-copy { flex:1; min-width:0; }
.wpab-customer-session-kicker,
.wpab-password-change-kicker { margin:0 0 5px; color:#5d7280; font-size:.72rem; font-weight:700; letter-spacing:.12em; }
.wpab-customer-session-title,
.wpab-password-change-head h3 { margin:0; color:#18343f; line-height:1.3; font-size:1.55rem; }
.wpab-customer-session-text,
.wpab-password-change-text { margin:6px 0 0; color:#5b6670; line-height:1.65; font-size:.9rem; }
.wpab-inline-logout-form { flex-shrink:0; margin:0; }
.wpab-inline-logout-form-summary { width:100%; }
.wpab-inline-logout-form-summary .wpab-logout-btn { width:100%; min-width:0; min-height:38px; padding:8px 10px; font-size:.9rem; }
.wpab-password-notice { margin:0 0 12px; padding:10px 12px; border-radius:10px; border:1px solid #d4e1e8; font-size:.88rem; line-height:1.6; }
.wpab-password-notice.is-success { background:#edf8f1; border-color:#cde8d5; color:#22553a; }
.wpab-password-notice.is-error { background:#fff5f5; border-color:#f0d0d0; color:#9c2f2f; }
.wpab-password-change-card { padding:14px; border:1px solid #e2e9ed; border-radius:12px; background:#fff; }
.wpab-password-change-head { margin-bottom:12px; }
.wpab-password-change-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px; }
.wpab-password-change-field { margin:0; }
.wpab-password-change-field label { display:block; color:#324550; font-size:.88rem; font-weight:700; line-height:1.55; }
.wpab-password-change-field input { width:100%; min-height:40px; margin-top:5px; padding:8px 10px; border:1px solid #ccd8df; border-radius:9px; box-sizing:border-box; font-size:.95rem; background:#fbfdff; }
.wpab-password-change-field input:focus { outline:none; border-color:#18343f; box-shadow:0 0 0 3px rgba(24, 52, 63, 0.12); background:#fff; }
.wpab-password-change-help { margin:10px 0 0; color:#607482; font-size:.8rem; line-height:1.55; }
.wpab-password-change-actions { margin:12px 0 0; }
.wpab-password-change-actions .wpab-confirm-btn { min-height:40px; min-width:0; padding:8px 14px; font-size:.92rem; }

@media (max-width: 700px) {
    .wpab-overlay { padding:12px; }
    .wpab-modal { width:calc(100vw - 24px); max-height:calc(100vh - 24px); padding:12px; }
    .wpab-step-progress { grid-template-columns:1fr 1fr; }
    .wpab-step-actions { flex-direction:column; }
    .wpab-step-btn { width:100%; }
    .wpab-close { min-width:100px; }
    .wpab-cal-header { gap:10px; }
    .wpab-cal-header .wpab-prev,
    .wpab-cal-header .wpab-next { min-width:42px; min-height:42px; font-size:1.35rem; }
    .wpab-customer-mypage-card { margin-top:16px; }
    .wpab-customer-mypage-summary { padding:12px; flex-direction:column; align-items:flex-start; }
    .wpab-customer-mypage-controls { width:100%; }
    .wpab-customer-mypage-body { padding:0 12px 12px; }
    .wpab-inline-logout-form { width:100%; }
    .wpab-inline-logout-form .wpab-logout-btn { width:100%; }
    .wpab-password-change-grid { grid-template-columns:1fr; }
    .wpab-password-change-actions .wpab-confirm-btn { width:100%; }
}

.wpab-clinic-page {
    --wpab-ink: #1b2a2f;
    --wpab-accent: #146c6e;
    --wpab-accent-soft: #dff4f1;
    --wpab-sand: #f6f1ea;
    --wpab-line: rgba(20, 108, 110, 0.15);
    --wpab-white: #ffffff;
    color: var(--wpab-ink);
    max-width: 1120px;
    margin: 0 auto;
    padding: 24px 16px 56px;
}

.wpab-clinic-hero {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(260px, 0.9fr);
    gap: 24px;
    padding: 32px;
    border-radius: 28px;
    background:
        radial-gradient(circle at top right, rgba(20, 108, 110, 0.16), transparent 34%),
        linear-gradient(135deg, #fffdf8, #eef8f7);
    border: 1px solid var(--wpab-line);
    box-shadow: 0 24px 60px rgba(27, 42, 47, 0.08);
}

.wpab-clinic-kicker,
.wpab-clinic-section-head p {
    margin: 0 0 10px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    color: var(--wpab-accent);
}

.wpab-clinic-hero h1,
.wpab-clinic-section h2 {
    margin: 0;
    line-height: 1.15;
    letter-spacing: -0.03em;
}

.wpab-clinic-hero h1 {
    font-size: clamp(2rem, 4vw, 3.6rem);
}

.wpab-clinic-subtitle {
    margin: 18px 0 10px;
    font-size: clamp(1.1rem, 2vw, 1.4rem);
    font-weight: 700;
}

.wpab-clinic-lead,
.wpab-clinic-panel p,
.wpab-clinic-steps div {
    line-height: 1.9;
}

.wpab-clinic-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 22px;
}

.wpab-clinic-primary,
.wpab-clinic-secondary,
.wpab-clinic-nav a,
.wpab-clinic-text-link {
    text-decoration: none;
}

.wpab-clinic-primary,
.wpab-clinic-secondary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0 18px;
    border-radius: 999px;
    font-weight: 700;
}

.wpab-clinic-primary {
    color: var(--wpab-white);
    background: var(--wpab-accent);
}

.wpab-clinic-primary-large {
    min-width: min(100%, 320px);
    min-height: 58px;
    font-size: 1.05rem;
}

.wpab-clinic-secondary {
    color: var(--wpab-accent);
    background: var(--wpab-white);
    border: 1px solid var(--wpab-line);
}

.wpab-clinic-hero-card,
.wpab-clinic-panel {
    background: rgba(255, 255, 255, 0.82);
    border: 1px solid var(--wpab-line);
    border-radius: 24px;
    padding: 24px;
    backdrop-filter: blur(6px);
}

.wpab-clinic-hero-card h2,
.wpab-clinic-panel h3 {
    margin-top: 0;
}

.wpab-clinic-menu-card {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.wpab-clinic-menu-head {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.wpab-clinic-menu-price {
    margin: 0;
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--wpab-accent);
    letter-spacing: 0.01em;
}

.wpab-clinic-menu-description {
    margin: 0;
    color: rgba(27, 42, 47, 0.78);
    line-height: 1.75;
}

.wpab-clinic-hero-card ul {
    margin: 0;
    padding-left: 18px;
    line-height: 1.9;
}

.wpab-clinic-hero-card a,
.wpab-clinic-text-link {
    color: var(--wpab-accent);
    font-weight: 700;
}

.wpab-clinic-nav {
    position: sticky;
    top: 18px;
    z-index: 20;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 20px 0 28px;
    padding: 14px;
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid var(--wpab-line);
    box-shadow: 0 16px 36px rgba(27, 42, 47, 0.08);
    backdrop-filter: blur(10px);
}

.wpab-clinic-nav a {
    color: var(--wpab-ink);
    padding: 10px 14px;
    border-radius: 999px;
    background: var(--wpab-sand);
    font-weight: 700;
}

.wpab-clinic-section {
    margin-top: 28px;
}

.wpab-clinic-section-head {
    margin-bottom: 16px;
}

.wpab-clinic-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}

.wpab-clinic-panel-wide {
    padding: 28px;
}

.wpab-clinic-steps {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.wpab-clinic-steps li {
    position: relative;
    display: grid;
    grid-template-columns: 64px 1fr;
    gap: 14px;
    align-items: start;
    padding: 22px;
    border-radius: 24px;
    background: var(--wpab-white);
    border: 1px solid var(--wpab-line);
}

.wpab-clinic-steps span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 20px;
    background: var(--wpab-accent-soft);
    color: var(--wpab-accent);
    font-size: 1.1rem;
    font-weight: 700;
}

.wpab-clinic-step-arrow {
    position: absolute;
    right: -18px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--wpab-accent);
    font-size: 1.8rem;
    line-height: 1;
    font-style: normal;
    font-weight: 700;
    z-index: 2;
}

.wpab-clinic-booking .wpab-calendar-root {
    max-width: 100%;
    margin-top: 20px;
}

.wpab-clinic-booking-note {
    margin-bottom: 0;
    color: rgba(27, 42, 47, 0.78);
}

@media (max-width: 900px) {
    .wpab-clinic-hero,
    .wpab-clinic-grid,
    .wpab-clinic-steps {
        grid-template-columns: 1fr;
    }

    .wpab-clinic-step-arrow {
        right: auto;
        left: 50%;
        top: auto;
        bottom: -18px;
        transform: translateX(-50%) rotate(90deg);
    }
}

@media (max-width: 640px) {
    .wpab-clinic-page {
        padding-left: 12px;
        padding-right: 12px;
    }

    .wpab-clinic-hero,
    .wpab-clinic-panel,
    .wpab-clinic-panel-wide,
    .wpab-clinic-steps li {
        padding: 20px;
    }

    .wpab-clinic-nav {
        top: 10px;
    }

    .wpab-clinic-steps li {
        grid-template-columns: 1fr;
    }
}
