:root{--bg:#f5f7fb;--card:#fff;--text:#1f2937;--muted:#64748b;--line:#dbe3ee;--primary:#1976d2;--soft:#eaf3fb;--danger:#b42318}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP",sans-serif;background:var(--bg);color:var(--text)}header{background:#fff;border-bottom:1px solid var(--line);padding:18px 24px}.wrap{max-width:980px;margin:0 auto;padding:24px}.brand{font-weight:700;font-size:22px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;margin-bottom:18px;box-shadow:0 3px 14px rgba(15,23,42,.04)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.choice{display:block;text-decoration:none;color:inherit}.choice .card{height:100%;transition:.15s}.choice .card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(15,23,42,.08)}.btn{display:inline-block;border:none;border-radius:10px;padding:11px 16px;background:var(--primary);color:#fff;text-decoration:none;cursor:pointer;font-weight:600}.btn.secondary{background:#64748b}.btn.danger{background:#b42318}.btn.small{padding:7px 10px;font-size:13px}label{display:block;font-weight:600;margin:14px 0 6px}input,select,textarea{width:100%;padding:11px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;font-size:15px}textarea{min-height:95px}.notice{background:#fff8e6;border:1px solid #f2d18a;border-radius:10px;padding:12px 14px}.info{background:#eef6ff;border:1px solid #bcd8f5;border-radius:10px;padding:12px 14px}.muted{color:var(--muted);font-size:14px}.slot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-top:10px}.slot{padding:12px;border-radius:10px;border:1px solid var(--line);text-align:center}.slot.ok{background:#f2fbf6;border-color:#b7e3ca}.slot.ng{background:#f7f7f7;color:#94a3b8}.flash{padding:10px 14px;border-radius:9px;margin-bottom:14px}.flash.error{background:#fff1f1;color:#9f1d1d}.flash.ok{background:#eefbf3;color:#17643c}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:14px}th{background:#f8fafc}.tag{display:inline-block;padding:3px 8px;border-radius:999px;background:var(--soft);font-size:12px}.flex{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:700px){.two{grid-template-columns:1fr}.wrap{padding:14px}table{font-size:12px}}

.booking-calendar{max-width:520px;border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff;margin:10px 0 18px}
.cal-head{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;text-align:center;margin-bottom:10px}.cal-nav{height:38px;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:24px;cursor:pointer}
.cal-week,.cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center}.cal-week{font-size:13px;color:var(--muted);margin-bottom:6px}.cal-day,.cal-blank{min-height:44px;display:flex;align-items:center;justify-content:center;border-radius:9px}
.cal-day.open{background:#eef8f3;border:1px solid #b7e3ca;color:#17643c;text-decoration:none;font-weight:700;cursor:pointer}.cal-day.closed{background:#f5f5f5;color:#b5bdc8;border:1px solid #edf0f3;cursor:not-allowed}.cal-day.selected{outline:3px solid #1976d2;outline-offset:1px}


.endo-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:12px}
.endo-week{text-align:center;font-weight:700;padding:6px;background:#f3f5f7;border-radius:5px}
.endo-day{min-height:82px;border:1px solid #b9c5d0;border-radius:7px;padding:8px;text-decoration:none;color:inherit;background:#fff;display:block}
.endo-day:hover{background:#f2f8ff}.endo-day.closed{background:#f7f7f7;color:#aaa;border-color:#e5e5e5;pointer-events:none}
.endo-day.selected{outline:3px solid #5b9bd5;background:#eef7ff}.endo-date{font-weight:700;margin-bottom:7px}
.endo-table input{min-width:90px}.id-edit{display:flex;gap:5px;align-items:center}.id-edit input{margin:0;padding:7px}
@media(max-width:700px){.endo-day{min-height:68px;padding:5px;font-size:12px}.endo-week{font-size:12px}.id-edit{display:block}.id-edit button{margin-top:4px}}

@media(max-width:700px){body{font-size:16px}header{padding:12px 14px}.brand{font-size:19px}.card{border-radius:12px;padding:16px;margin-bottom:14px}.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center}input,select,textarea{font-size:16px;min-height:44px}.slot-grid{grid-template-columns:repeat(2,1fr)}.booking-calendar{max-width:none;padding:10px}.cal-day,.cal-blank{min-height:42px}.endo-cal{gap:3px}th,td{white-space:normal}.flex>.btn{flex:1 1 auto}}
@media(min-width:701px) and (max-width:1100px){.wrap{max-width:96%}}


/* v16: patient-facing scope notice */
.reservation-hero{border-top:5px solid var(--primary)}
.reservation-hero .eyebrow{display:inline-block;font-size:13px;font-weight:700;color:var(--primary);background:var(--soft);padding:5px 10px;border-radius:999px;margin-bottom:8px}
.reservation-hero h1{margin:4px 0 8px}

/* v16: staff page jump navigation */
.staff-jump{position:sticky;top:8px;z-index:20;padding:14px 16px;box-shadow:0 6px 20px rgba(15,23,42,.09)}
.staff-jump-title{font-weight:700;margin-bottom:9px}
.staff-jump-links{display:flex;gap:8px;flex-wrap:wrap}
.staff-jump-links a{display:inline-block;text-decoration:none;color:#154f86;background:#eef6ff;border:1px solid #bcd8f5;border-radius:9px;padding:8px 11px;font-weight:600;font-size:14px}
.staff-jump-links a:hover{background:#dfefff}
#search,#list,#add,#closures,#export,#automation,#audit{scroll-margin-top:115px}
@media(max-width:700px){.staff-jump{position:static}.staff-jump-links{display:grid;grid-template-columns:1fr 1fr}.staff-jump-links a{text-align:center;padding:10px 6px}.reservation-hero h1{font-size:25px}}


/* v17: reception dashboard / unconfirmed web reservations */
.unconfirmed-card{border-width:2px}
.unconfirmed-card.has-new{border-color:#f0b429;background:#fffdf6;box-shadow:0 6px 22px rgba(180,120,0,.10)}
.unconfirmed-card.all-clear{border-color:#b7e3ca;background:#fbfffc}
.unconfirmed-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.unconfirmed-head h2{margin:4px 0 10px}.unconfirmed-kicker{font-size:13px;font-weight:800;color:#9a6700;letter-spacing:.03em}
.unconfirmed-badge{display:inline-block;margin-left:6px;padding:4px 9px;border-radius:999px;background:#b42318;color:#fff;font-size:14px;vertical-align:middle}
.all-clear-message{padding:14px;border-radius:10px;background:#eefbf3;color:#17643c;font-weight:700}
#unconfirmed{scroll-margin-top:115px}
@media(max-width:700px){.unconfirmed-head .btn{width:100%}.unconfirmed-card table{min-width:650px}}

.urgent-note{padding:14px 16px;border:1px solid #f1c86a;border-radius:10px;background:#fff9e8;color:#6b4b00;line-height:1.7}

/* v19 */
.scope-red{color:#b42318;font-weight:800;font-size:1.08em}
.cancel-review{border:2px solid #f0b4ae;background:#fff8f7}
.cancel-review h2{color:#9f1d1d}
.duplicate-staff{background:#fff8e6;border:2px solid #f2b84b;border-radius:10px;padding:12px 14px;margin-top:10px}

/* v22: 職員用検索の期間ボタン */
.range-btn.range-selected {
  font-weight: 800;
  outline: 3px solid rgba(34, 94, 120, .22);
  transform: translateY(-1px);
}

/* v24: patient smartphone usability */
.time-selection{scroll-margin-top:16px}.section-title{font-size:20px;margin:0 0 12px;padding-bottom:9px;border-bottom:2px solid #dce8f5}.subsection-title{margin-top:26px}.patient-section-title{margin-top:30px}.slot-button{font:inherit;cursor:pointer;width:100%;transition:.12s}.slot-button.ok:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,23,42,.08)}.slot-button.ng{cursor:not-allowed}.slot-button.selected-slot{background:#dff3e8;border:2px solid #1976d2;box-shadow:0 0 0 2px rgba(25,118,210,.12);color:#124f32}.selected-time-message{margin-top:10px;padding:10px 12px;border-radius:9px;background:#eef6ff;color:#154f86;font-weight:700}.birth-selects{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:8px}.wareki-display{margin-top:7px;color:var(--muted);font-size:14px}.choice-cta{margin-top:12px;color:var(--primary);font-weight:800}.form-card{scroll-margin-top:16px}
@media(max-width:700px){
  .reservation-hero{padding:14px 16px}.reservation-hero .eyebrow{margin-bottom:5px}.reservation-hero h1{font-size:23px;margin:2px 0 6px}.reservation-hero p{margin:7px 0;line-height:1.5}.reservation-hero .notice,.reservation-hero .urgent-note{margin-top:9px!important;padding:10px 12px;line-height:1.55}.web-menu-heading{padding:14px 16px}.web-menu-heading h2{margin:2px 0 5px}.web-menu-heading p{margin:0}.choice .card{padding:18px}.choice .card h2{margin-top:0}.choice-cta{display:inline-block;background:#eef6ff;border-radius:8px;padding:8px 11px}.section-title{font-size:19px}.slot-grid{grid-template-columns:repeat(2,1fr);gap:9px}.slot-button{min-height:64px;font-size:16px}.birth-selects{grid-template-columns:1.45fr 1fr 1fr}.birth-selects select{padding-left:8px;padding-right:6px}.patient-section-title{margin-top:28px}
}

/* v25: device-friendly birth date, staff slot buttons, mobile reservation cards */
.birth-mobile{display:none}.birth-desktop{display:block}.staff-mobile-list{display:none}.staff-slot-grid{margin-top:0}.staff-res-card{border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:10px;background:#fff}.staff-res-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.staff-res-kind{margin-top:8px}.staff-res-name{margin-top:10px;font-size:17px}.staff-res-contact,.staff-res-detail{margin-top:8px;overflow-wrap:anywhere}.staff-res-detail{padding-top:8px;border-top:1px solid var(--line)}.staff-res-actions{margin-top:12px}.duplicate-mini{display:inline-block;margin-top:8px;padding:4px 8px;border-radius:999px;background:#fff0b8;color:#8a5a00;border:1px solid #e0b74f;font-weight:700;font-size:13px}
@media(max-width:700px){.birth-desktop{display:none}.birth-mobile{display:block}.birth-selects{grid-template-columns:1.35fr 1fr 1fr 1fr}.staff-table-list{display:none}.staff-mobile-list{display:block}.staff-slot-grid{grid-template-columns:repeat(2,1fr)}#list{padding:14px}.staff-res-actions .btn{width:100%}}


/* v26: 8-digit birth date input on all devices; reservation cards on iPad too */
@media(max-width:1100px){
  .staff-table-list{display:none!important}.staff-mobile-list{display:block!important}#list{padding:14px}.staff-res-actions .btn{width:100%}
}
#birthDateDigits,#staffBirthDigits{letter-spacing:.08em;font-variant-numeric:tabular-nums}

.past-date-warning{padding:12px 14px;border:1px solid #e0b74f;background:#fff7dc;color:#7a5200;border-radius:10px;line-height:1.6}
