
:root{--primary:#00897b;--primary-dark:#00695c;--bg:#f4f6f5;--border:#d8e3e0;--muted:#7a8c99;--danger:#c62828;}
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:-apple-system,BlinkMacSystemFont,'Hiragino Sans','Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif;background:var(--bg);color:#2c3e50;font-size:15px;line-height:1.7;}
.site-header{background:linear-gradient(135deg,var(--primary-dark),var(--primary));color:#fff;}
.header-inner{max-width:860px;margin:0 auto;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;}
.site-title{color:#fff;text-decoration:none;font-size:19px;font-weight:800;}
.site-title small{display:block;font-size:11px;font-weight:400;opacity:.85;}
.header-link{color:#fff;text-decoration:none;font-size:13px;border:1px solid rgba(255,255,255,.6);border-radius:8px;padding:7px 12px;background:rgba(255,255,255,.08);}
main{max-width:860px;margin:0 auto;padding:18px 12px 60px;}
.card{background:#fff;border-radius:12px;padding:20px 18px;margin-bottom:16px;box-shadow:0 1px 4px rgba(0,0,0,.06);}
h2{font-size:18px;color:var(--primary-dark);margin-bottom:12px;}
h3{font-size:15.5px;color:var(--primary-dark);margin:14px 0 8px;}
footer{text-align:center;font-size:12.5px;color:var(--muted);padding:24px 12px 40px;}
footer a{color:var(--muted);}
.btn{display:inline-block;border:none;border-radius:10px;padding:12px 18px;font-size:15px;font-weight:700;cursor:pointer;text-decoration:none;text-align:center;font-family:inherit;}
.btn-primary{background:var(--primary);color:#fff;}
.btn-secondary{background:#eceff1;color:#37474f;}
.btn-danger{background:var(--danger);color:#fff;}
.btn-block{display:block;width:100%;}
.btn-large{padding:15px 18px;font-size:16px;}
.btn-sm{padding:7px 12px;font-size:13px;border-radius:8px;}
.form-group{margin-bottom:16px;}
.form-group label{display:block;font-weight:700;font-size:14px;margin-bottom:6px;}
.required{color:var(--danger);font-size:11px;border:1px solid var(--danger);border-radius:4px;padding:0 4px;margin-left:6px;font-weight:400;}
input[type=text],input[type=tel],input[type=number],select{width:100%;padding:11px 12px;border:1.5px solid var(--border);border-radius:10px;font-size:16px;font-family:inherit;background:#fff;}
input:focus,select:focus{outline:none;border-color:var(--primary);}
.help{font-size:12.5px;color:var(--muted);margin-top:5px;}
.checkbox-group{display:flex;align-items:center;gap:9px;background:#f5f7f6;border-radius:10px;padding:12px;}
.checkbox-group input{width:20px;height:20px;}
.checkbox-group label{font-size:14.5px;}
.pay-options{display:flex;gap:10px;flex-wrap:wrap;}
.pay-option{flex:1;min-width:130px;display:flex;align-items:center;gap:9px;background:#f5f7f6;border:1.5px solid var(--border);border-radius:10px;padding:13px 14px;font-size:15px;font-weight:700;cursor:pointer;}
.pay-option input{width:20px;height:20px;}
.pay-option:has(input:checked){border-color:var(--primary);background:#e0f2f1;}
.notice{border-radius:8px;padding:11px 14px;font-size:13.5px;margin:12px 0;}
.notice.info{background:#e3f2fd;border-left:4px solid #1976d2;color:#0d47a1;}
.notice.warning{background:#fff8e1;border-left:4px solid #f39c12;color:#6d4c00;}
.info-list{list-style:none;}
.info-list li{display:flex;justify-content:space-between;gap:10px;padding:9px 2px;border-bottom:1px solid #eef3f2;font-size:14.5px;}
.info-list .label{color:var(--muted);flex-shrink:0;}
.info-list .value{font-weight:700;text-align:right;}
/* ===== 月カレンダー ===== */
.bcal{width:100%;border-collapse:collapse;table-layout:fixed;background:#fff;}
.bcal th{border:1px solid #ddd;padding:7px 2px;font-size:13px;background:#fff;}
.bcal th.sun{background:#fbeaea;color:#c62828;}
.bcal th.sat{background:#eaeafb;color:#1565c0;}
.bcal td{border:1px solid #ddd;padding:6px 2px 8px;text-align:center;vertical-align:top;height:64px;background:#fff;}
.bcal td.sun .bcal-date{color:#c62828;}
.bcal td.sat .bcal-date{color:#1565c0;}
.bcal td.out{background:#f3f4f4;}
.bcal td.out .bcal-date{color:#b6bfc4;}
.bcal-date{display:block;font-size:13px;margin-bottom:3px;}
.bcal-mark{display:block;font-size:22px;line-height:1.2;font-weight:700;text-decoration:none;}
.mark-none{color:#2e7d32;}
.mark-some{color:#ef6c00;}
.mark-full{color:#c62828;}
.bcal a{text-decoration:none;display:block;}
.bcal a:active{background:#e0f2f1;}
.bcal-legend{display:flex;gap:18px;justify-content:center;margin-top:12px;font-size:13.5px;flex-wrap:wrap;}
.bcal-legend .mark{font-weight:700;margin-right:4px;}
.cal-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.cal-nav .title{font-size:18px;font-weight:800;}
.cal-nav a,.cal-nav span.disabled{font-size:13.5px;border:1px solid var(--border);border-radius:8px;padding:7px 12px;text-decoration:none;color:var(--primary-dark);font-weight:700;background:#fff;}
.cal-nav span.disabled{color:#c5cdd2;}
.view-toggle-row{display:flex;justify-content:flex-end;margin-bottom:8px;}
.view-toggle{font-size:13px;border:1.5px solid var(--primary);border-radius:8px;padding:6px 14px;text-decoration:none;color:var(--primary-dark);font-weight:700;background:#e0f2f1;}
/* ===== 週表示 ===== */
.week-table{width:100%;min-width:720px;border-collapse:collapse;table-layout:fixed;}
.week-table th{border:1px solid var(--border);background:#fff;font-size:12.5px;padding:6px 2px;}
.week-table th.sun{background:#fbeaea;color:#c62828;}
.week-table th.sat{background:#eaeafb;color:#1565c0;}
.week-table th a{color:inherit;text-decoration:none;display:block;}
.week-table td{border:1px solid var(--border);padding:1px;vertical-align:top;height:34px;}
.week-table .time-label{background:#f5f7f6;font-size:11.5px;color:#555;width:74px;text-align:center;vertical-align:middle;padding:2px;}
.week-table td.past{background:#f3f4f4;}
.week-table a.wcell{display:block;min-height:30px;height:100%;text-decoration:none;}
.chip{display:block;font-size:10.5px;border-radius:4px;padding:1px 4px;margin:1px 0;line-height:1.35;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left;font-weight:700;}
.chip.r1{background:#e0f2f1;color:#00695c;border-left:3px solid #00897b;}
.chip.r2{background:#e3f2fd;color:#0d47a1;border-left:3px solid #1976d2;}
.chip.r3{background:#fff3e0;color:#e65100;border-left:3px solid #ef6c00;}
.week-legend{display:flex;gap:14px;justify-content:center;margin-top:12px;font-size:12.5px;flex-wrap:wrap;}
.week-legend .chip{display:inline-block;min-width:64px;text-align:center;}
/* ===== 日詳細グリッド ===== */
.hour-table-wrap{overflow-x:auto;}
.hour-table{width:100%;border-collapse:collapse;table-layout:fixed;}
.hour-table th{border:1px solid var(--border);background:#e0f2f1;color:var(--primary-dark);font-size:13px;padding:7px 3px;}
.hour-table th small{display:block;font-weight:400;opacity:.75;font-size:10.5px;}
.hour-table td{border:1px solid var(--border);text-align:center;padding:0;height:38px;font-size:15px;}
.hour-table td.time-label{background:#f5f7f6;font-size:12px;color:#555;width:88px;padding:2px;}
.hour-table td.vacant a{display:block;padding:8px 2px;color:#2e7d32;font-weight:700;text-decoration:none;}
.hour-table td.vacant a:active{background:#e0f2f1;}
.hour-table td.booked{background:#fdecea;}
.hour-table td.past{background:#f3f4f4;color:#b6bfc4;}
.slot-status{color:#c62828;font-weight:700;display:block;font-size:14px;}
.slot-group{display:block;font-size:11.5px;color:#444;line-height:1.3;word-break:break-all;padding:0 2px;}
.slot-time{display:block;font-size:10.5px;color:var(--muted);}
/* スマホでは横スクロールなしで1画面に収める(料金表と同方針) */
@media (max-width:480px){
  .hour-table td.time-label{width:70px;font-size:10.5px;}
  .hour-table th{font-size:11.5px;padding:5px 1px;}
  .hour-table th small{font-size:9.5px;}
  .hour-table td{font-size:14px;}
  .slot-status{font-size:12px;}
  .slot-group{font-size:10px;padding:0 1px;}
  .slot-time{font-size:9px;}
}
@media (max-width:360px){
  .hour-table td.time-label{width:60px;font-size:9.5px;}
  .hour-table th{font-size:10.5px;}
  .hour-table td{font-size:13px;}
  .slot-group{font-size:9px;}
}
/* ===== 管理 ===== */
.fee-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px;border:2px solid #80b3ab;}
.fee-table th{background:#cfe9e5;color:var(--primary-dark);border:1px solid #80b3ab;padding:9px 6px;text-align:center;font-weight:700;line-height:1.3;}
.fee-table td{border:1px solid #b6cfca;padding:9px 8px;text-align:center;}
.fee-table tbody tr:hover{background:#f5fbfa;}
/* スマホでは文字・余白を縮めて横スクロールなしで1画面に収める */
@media (max-width:560px){
  .fee-table{font-size:11px;}
  .fee-table th{padding:5px 1px;font-size:10.5px;line-height:1.25;letter-spacing:-0.5px;}
  .fee-table td{padding:6px 1px;letter-spacing:-0.5px;}
}
@media (max-width:380px){
  .fee-table{font-size:10px;}
  .fee-table th{font-size:9.5px;padding:4px 1px;}
  .fee-table td{padding:5px 0;}
}
.data-table{width:100%;border-collapse:collapse;font-size:13px;}
.data-table th{background:#e0f2f1;color:var(--primary-dark);border:1px solid var(--border);padding:7px 8px;text-align:left;white-space:nowrap;}
.data-table td{border:1px solid var(--border);padding:7px 8px;vertical-align:top;}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:16px;}
.stat-card{background:#fff;border-radius:12px;padding:14px;box-shadow:0 1px 4px rgba(0,0,0,.06);text-align:center;}
.stat-label{font-size:12px;color:var(--muted);}
.stat-value{font-size:26px;font-weight:800;color:var(--primary-dark);}
.admin-bar{background:#263238;color:#fff;font-size:13px;padding:8px 12px;text-align:center;}
.admin-bar a{color:#80cbc4;margin:0 8px;text-decoration:none;}
.badge-cancel{display:inline-block;background:#eceff1;color:#90a4ae;border-radius:6px;font-size:11px;padding:1px 7px;}
.receipt-box{background:#f5f7f6;border:2px dashed var(--primary);border-radius:12px;padding:16px;text-align:center;margin:14px 0;}
.receipt-label{font-size:12.5px;color:var(--muted);}
.receipt-number{font-size:26px;font-weight:800;font-family:ui-monospace,Menlo,monospace;color:var(--primary-dark);letter-spacing:1px;}
.complete-icon{font-size:44px;text-align:center;}
.complete-message{font-size:19px;font-weight:800;text-align:center;color:var(--primary-dark);margin:6px 0 4px;}
