:root {
  font-family: "Yu Gothic", "Hiragino Kaku Gothic ProN", "Noto Sans JP", Meiryo, sans-serif;
  color: #19344b; background: #f5f8fb; line-height: 1.65;
  font-synthesis: none; -webkit-font-smoothing: antialiased;
}
* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; }
button, input, textarea, select { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor:not-allowed; opacity: .45; }
a { color: #186c9f; }
.site-shell { min-height: 100vh; display: flex; flex-direction: column; }
.site-header { background: #fff; border-bottom: 1px solid #e0e9f1; }
.header-inner { max-width: 1060px; min-height: 78px; margin: auto; padding: 14px 24px; display: flex; justify-content: space-between; align-items: center; gap: 15px; }
.brand { color: inherit; display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.brand-mark { width: 44px; height: 44px; background: #193c60; color: white; border-radius: 13px; font-family: serif; font-size: 26px; display: grid; place-items: center; box-shadow: 0 5px 12px #153a5a24; }
.brand-copy { display:flex; flex-direction:column; line-height: 1.4; }
.brand-copy strong { font-size: 16px; letter-spacing: .03em; }
.brand-copy small { font-size: 11px; color: #668196; margin-top: 3px; }
nav { display: flex; align-items: center; gap: 22px; }
.header-link { text-decoration:none; color: #557086; font-size: 13px; font-weight: 700; }
.header-link:hover { color: #16679b; }
.main { flex: 1; width: 100%; max-width: 1060px; padding: 34px 24px 68px; margin: auto; }
.site-footer { font-size: 11px; text-align:center; padding: 28px 16px; color: #7c91a2; border-top: 1px solid #e0e9f1; }
.page-kicker { font-size: 12px; font-weight: 800; color: #358ab8; letter-spacing: .14em; margin:0 0 6px; }
.page-title { color:#173b5c; font-size: clamp(25px, 4vw, 33px); margin:0 0 10px; letter-spacing: .025em; line-height:1.4; }
.page-intro { color: #647b8e; margin: 0 0 28px; font-size:14px; }
.layout { display:grid; grid-template-columns: minmax(0, 1.8fr) minmax(245px, .9fr); gap: 23px; align-items:start; }
.panel { background: #fff; border: 1px solid #e4edf4; border-radius: 16px; padding: 25px; box-shadow: 0 8px 26px #1b415912; }
.panel + .panel { margin-top: 18px; }
.panel h2 { margin:0 0 18px; font-size:19px; color:#163d60; }
.panel h3 { margin:22px 0 12px; font-size:15px; color:#234c6b; }
.panel-head {display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom: 16px;}
.panel-head h2 {margin:0;}
.step { display: inline-grid; place-items:center; width:29px; height:29px; border-radius:50%; background:#e6f4fb; color:#136c9d; font-size:13px; font-weight:800; margin-right:8px; }
.muted { color:#6e8291; font-size:13px; }
.small {font-size:12px;}
.notice { border-left: 3px solid #6ab0d6; background: #edf7fc; color:#315c75; padding:11px 13px; border-radius: 4px 10px 10px 4px; font-size:13px; margin-bottom:17px; }
.notice.warning { border-color:#d7a34d; background:#fff7e8; color:#765522; }
.notice.error { border-color:#d87676; background:#fff2f2; color:#842f2f; }
.notice.success { border-color:#4aaf86; background:#effaf4; color:#27684e; }
.month-nav { display:flex; align-items:center; justify-content:space-between; gap:10px; margin: 10px 0 16px; }
.month-title {font-size:18px; font-weight:800; color:#244a67;}
.icon-button {border:1px solid #d8e6ee; background:white; color:#28516d; padding:6px 12px; border-radius:9px; font-weight:700;}
.calendar { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:7px; }
.weekday {text-align:center; font-size:12px; color:#8ba0ae; font-weight:800; margin-bottom:4px;}
.weekday.sun { color:#d77776; }.weekday.sat { color:#398fbc; }
.day { width:100%; border:1px solid #e3ebf0; border-radius:9px; background:#fff; min-height:57px; padding:6px 2px; color:#9aacb8; display:flex; flex-direction:column; align-items:center; justify-content:center; line-height:1.3; }
.day.active { color:#1e4968; border-color:#b9d9eb; background:#f7fbfd; font-weight:700; }
.day.selected { color:white; background:#206e9f; border-color:#206e9f; box-shadow: 0 4px 10px #206e9f2e; }
.day small {font-size:10px; opacity:.85; margin-top:3px;}
.day.empty {visibility:hidden;}
.slot-list { display:grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap:10px; }
.slot { background: #fff; border:1px solid #b8d7e8; color:#206389; font-weight:800; border-radius:10px; padding:11px 6px; }
.slot:hover:not(:disabled) { background:#eff8fd; }
.slot.selected { background:#216f9f; color:white; border-color:#216f9f; }
.slot:disabled {background:#f1f3f5; border-color:#e4e8eb; color:#9eaab3;}
.field { margin: 0 0 16px; }
.field label, .field-label { display:block; font-size:13px; font-weight:800; color:#34536a; margin-bottom:6px; }
.field input:not([type=checkbox]), .field textarea, .field select { outline:none; width:100%; border:1px solid #ccdce6; border-radius:9px; background:#fff; padding:10px 11px; font-size:14px; color:#1c3f58; }
.field input:focus, .field textarea:focus { border-color:#3082b0; box-shadow:0 0 0 3px #dff1f9; }
.field textarea { min-height:94px; resize:vertical; }
.field em {font-style:normal; color:#d25353;}
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 16px; }
.check-label { display:flex; align-items:flex-start; gap:9px; font-size:13px; color:#46647a; cursor:pointer; }
.check-label input { margin-top:5px; accent-color:#2074a5; }
.button {border:1px solid transparent; border-radius:10px; padding:11px 17px; font-weight:800; display:inline-flex; align-items:center; justify-content:center; gap:7px; font-size:14px; text-decoration:none;}
.button.primary { background:#1e6f9d; color:white; }
.button.primary:hover:not(:disabled) { background:#155a83; }
.button.light { background:#eef6fa; color:#20658e; border-color:#d6e8f2; }
.button.danger { background:#fff2f2; color:#a54242; border-color:#f2caca; }
.button.secondary { background:white; color:#345f7d; border-color:#cfdfeb; }
.button.full {width:100%;}
.summary-date {font-size:22px; font-weight:800; color:#1d5c85; margin:12px 0 4px;}
.info-row {display:flex; align-items:flex-start; justify-content:space-between; gap:10px; padding:11px 0; border-bottom:1px solid #edf2f6; font-size:13px; }
.info-row span:first-child {color:#8193a1;}
.info-row strong { text-align:right; color:#2d526e; }
.side-list { padding:0 0 0 17px; color:#607c8e; font-size:13px; }
.side-list li {margin:7px 0;}
.pill {border-radius:999px; padding:3px 9px; background:#eaf6ed; color:#378253; font-weight:800; font-size:11px; display:inline-block; }
.pill.cancelled {color:#8a7a7a;background:#f2f1f1;}
.pill.failed {color:#af6320;background:#fff4e7;}
.panel-action { margin-top:21px; }
.admin-grid {display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start;}
.admin-grid .panel {margin:0;}
.stats {display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin: 4px 0 20px;}
.stat {background:#fff;padding:14px 16px;border:1px solid #e5edf3;border-radius:12px;}
.stat strong {display:block;font-size:25px;color:#1f658c;}.stat small{font-size:12px;color:#738b9e;}
.weekday-checks {display:flex;flex-wrap:wrap;gap:8px;}
.weekday-checks label {font-size:12px;padding:6px 10px;border-radius:8px;background:#eff5f8;cursor:pointer;}
.weekday-checks input {accent-color:#1c6b97;}
.table-wrap{overflow:auto;border:1px solid #e6edf3;border-radius:10px;}
table {border-collapse:collapse;width:100%;font-size:12px;}
th,td {padding:11px 10px;text-align:left;border-bottom:1px solid #eaf0f4;white-space:nowrap;}
th {background:#f5f9fb;color:#42657d;}td {color:#34536a;}
td.wrap {white-space:normal;min-width:180px;max-width:320px;word-break:break-word;}
.action-row {display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.inline-list {padding:0;margin:0;list-style:none;max-height:360px;overflow:auto;}
.inline-list li {display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #edf2f5;padding:9px 0;font-size:13px;}
.inline-list li:last-child {border-bottom:0;}
.empty-state {text-align:center;padding:24px 10px;color:#879ba9;font-size:13px;}
.center-card {max-width:520px;margin:0 auto;}
.loader {width:32px;height:32px;border:3px solid #d3e8f3;border-top-color:#1973a5;border-radius:50%;animation:spin .8s linear infinite;margin:50px auto;}
@keyframes spin {to{transform:rotate(360deg)}}
@media(max-width:780px) {
 .layout,.admin-grid {grid-template-columns:1fr;}
 .admin-grid .panel + .panel {margin:0;}
 .main{padding:24px 15px 50px;}
 .header-inner{padding:12px 15px;}
 .panel{padding:19px;}
 .stats{grid-template-columns:repeat(3,1fr);}
}
@media(max-width:440px) {
 .brand-copy strong{font-size:13px;}.header-link{font-size:12px;}nav{gap:12px;}
 .brand-mark{width:38px;height:38px;font-size:23px;}
 .calendar{gap:4px;}.day{min-height:52px;}
 .slot-list{gap:7px;}
 .form-grid{grid-template-columns:1fr;}
 .stats{gap:6px;}.stat{padding:9px;}.stat strong{font-size:20px;}
}
