:root { font-family: system-ui, -apple-system, "Noto Sans JP", sans-serif; color: #17233b; background: #f4f7fb; }
* { box-sizing: border-box; }
body { margin: 0; }
button { font: inherit; }
.proxy-banner { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 10px 16px; color: white; background: #8a4b08; }
.proxy-banner a { color: white; font-weight: 700; }
.page { width: min(1100px, 100%); margin: auto; padding: 24px 16px 48px; }
.hero { padding: 30px; color: white; border-radius: 24px; background: linear-gradient(135deg, #285bd4, #6d4de3); box-shadow: 0 18px 50px #2d54b42b; }
.hero h1 { margin: 4px 0 8px; font-size: clamp(2rem, 6vw, 3.4rem); }
.hero p { margin-bottom: 0; }
.eyebrow { letter-spacing: .12em; font-size: .78rem; opacity: .8; }
.panel { margin-top: 18px; padding: 22px; border: 1px solid #dde4f0; border-radius: 20px; background: white; box-shadow: 0 8px 26px #263c6612; }
.panel h2 { margin: 0 0 16px; }
.areas { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.area-button { padding: 14px 10px; border: 1px solid #ccd7ea; border-radius: 12px; background: white; cursor: pointer; }
.area-button.active { color: white; border-color: #285bd4; background: #285bd4; }
.course-choice { display: grid; gap: 7px; max-width: 520px; font-weight: 700; }
.course-choice select { width: 100%; padding: 12px; border: 1px solid #ccd7ea; border-radius: 10px; color: #17233b; background: white; font: inherit; }
.choice-note { margin: 10px 0 0; color: #65728a; font-size: .9rem; }
.step-label { margin: 0 0 12px; color: #285bd4; font-weight: 800; }
.calendar-heading { display: flex; align-items: center; justify-content: center; gap: 20px; }
.calendar-heading h2 { min-width: 170px; margin: 0; text-align: center; }
.calendar-heading button { width: 42px; height: 42px; border: 0; border-radius: 50%; color: #285bd4; background: #edf2ff; font-size: 1.8rem; cursor: pointer; }
.status { min-height: 24px; color: #5a6780; text-align: center; }
.weekdays, .days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 7px; }
.weekdays { margin-bottom: 7px; color: #68758c; text-align: center; font-size: .83rem; }
.day { min-height: 112px; padding: 9px; border: 1px solid #e2e8f2; border-radius: 12px; background: #fbfcfe; }
.day:nth-child(7n+1) strong { color: #d74b5f; }
.slots { display: grid; gap: 5px; margin-top: 8px; }
.slot-entry { display: grid; gap: 3px; min-width: 0; }
.slot { padding: 7px 3px; border: 0; border-radius: 8px; color: #174d34; background: #dff6e9; cursor: pointer; }
.slot-guidance { color: #5f4a20; font-size: .66rem; font-weight: 700; line-height: 1.35; text-align: center; white-space: pre-line; overflow-wrap: anywhere; }
.full { display: block; margin-top: 13px; color: #9a6470; font-size: .8rem; }
.loading { opacity: .45; }
.error { grid-column: 1/-1; padding: 20px; color: #b42318; background: #fff1f0; border-radius: 12px; }
.prototype-note { color: #69758b; text-align: center; font-size: .85rem; }
.booking-dialog { width: min(760px, calc(100% - 24px)); max-height: calc(100vh - 24px); padding: 24px; overflow-y: auto; -webkit-overflow-scrolling: touch; border: 0; border-radius: 18px; box-shadow: 0 24px 80px #17233b55; }
.booking-dialog:not([open]) { display: none; }
.booking-dialog-open, .booking-dialog-open body { overflow: hidden; }
.booking-dialog-fallback { position: fixed; z-index: 1000; top: 12px; right: 12px; bottom: 12px; left: 12px; margin: auto; box-shadow: 0 0 0 100vmax #17233b99, 0 24px 80px #17233b55; }
.booking-dialog::backdrop { background: #17233b99; }
.booking-dialog form { display: grid; gap: 14px; }
.booking-dialog h2 { margin: 0; }
.booking-dialog label { display: grid; gap: 6px; font-weight: 600; }
.booking-dialog label small { color: #65728a; font-size: .78rem; font-weight: 500; }
.booking-dialog input, .booking-dialog select, .booking-dialog textarea { width: 100%; padding: 11px; border: 2px solid #7d8da8; border-radius: 9px; background: white; font: inherit; }
.booking-dialog input:focus, .booking-dialog select:focus, .booking-dialog textarea:focus { outline: 3px solid #b9d7ff; outline-offset: 1px; border-color: #285bd4; }
.booking-dialog input::placeholder, .booking-dialog textarea::placeholder { color: #a8b1c1; opacity: 1; font-weight: 400; }
.field-hint { color: #8a95a8 !important; font-weight: 400 !important; }
.date-entry, .postal-entry { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px; align-items: center; }
.date-picker-control { position: relative; display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid #ccd7ea; border-radius: 9px; background: #f5f8fd; cursor: pointer; overflow: hidden; }
.date-picker-control > span { pointer-events: none; }
.native-date-picker { position: absolute; inset: 0; width: 100% !important; height: 100%; margin: 0; padding: 0 !important; border: 0 !important; opacity: .01; cursor: pointer; }
.postal-entry .small-button { min-height: 44px; padding-inline: 12px; }
@supports (height: 100dvh) { .booking-dialog { max-height: calc(100dvh - 24px); } }
#booking-input-fields { display: grid; gap: 14px; }
.form-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.wide-field { grid-column: 1 / -1; }
.consent-field { display: grid; grid-template-columns: auto 1fr; align-items: start; gap: 9px; font-weight: 600; }
.consent-field input { width: auto; margin-top: .25em; }
.form-note { margin: 0; padding: 10px 12px; border-radius: 9px; color: #5a6780; background: #f5f8fd; font-size: .88rem; }
.warning-note { margin: 0; padding: 12px; border: 1px solid #e7b451; border-radius: 9px; color: #694500; background: #fff7df; font-weight: 700; }
.booking-review { display: grid; gap: 12px; }
.booking-review h3, .booking-review p { margin: 0; }
.booking-success { display: grid; justify-items: center; gap: 13px; padding: 24px 16px; border: 1px solid #b8dfca; border-radius: 14px; background: #f3fbf7; text-align: center; }
.booking-success h3, .booking-success p { margin: 0; }
.success-mark { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 50%; color: #fff; background: #21845a; font-size: 2rem; font-weight: 800; }
.reservation-number { padding: 8px 12px; border-radius: 8px; color: #174d34; background: #dff4e8; font-weight: 800; overflow-wrap: anywhere; }
.edit-button { padding: 11px 14px; border: 1px solid #285bd4; border-radius: 9px; color: #285bd4; background: white; font-weight: 700; cursor: pointer; }
[hidden] { display: none !important; }
.dialog-close { justify-self: end; width: 36px; height: 36px; border: 0; border-radius: 50%; font-size: 1.4rem; }
.selected-slot { margin: 0; padding: 10px; border-radius: 9px; background: #edf2ff; }
.selected-meeting-place { align-self: end; margin: 0; padding: 11px; border-radius: 9px; color: #34455f; background: #f5f8fd; }
.confirm-button { padding: 13px; border: 0; border-radius: 10px; color: white; background: #285bd4; font-weight: 700; cursor: pointer; }
.confirm-button:disabled { opacity: .55; }
#booking-message { min-height: 24px; margin: 0; color: #174d34; }
.manage-hero { background: linear-gradient(135deg, #174d73, #285bd4); }
.sales-hero { background: linear-gradient(135deg, #174d3b, #287d69); }
.consent-hero { background: linear-gradient(135deg, #6f4b1b, #aa782e); }
.consent-document { display: grid; gap: 12px; margin-top: 18px; }
.consent-document section { padding: 16px; border: 1px solid #e3d7bf; border-radius: 12px; background: #fffdf8; }
.consent-document h3 { margin: 0 0 9px; color: #513711; font-size: 1rem; }
.consent-document p { margin: 8px 0 0; line-height: 1.75; }
.consent-document pre { margin: 0; padding: 18px; border: 1px solid #e3d7bf; border-radius: 12px; background: #fffdf8; color: #30230f; font: inherit; line-height: 1.8; white-space: pre-wrap; }
.consent-license-number { gap: 8px; }
.consent-license-number-hint { color: #5a6780; font-size: .9rem; font-weight: 500; }
.consent-license-number input { min-height: 58px; padding: 9px 12px; color: #17233b; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: clamp(1.35rem, 6vw, 2rem); font-variant-numeric: tabular-nums; font-weight: 800; letter-spacing: .08em; line-height: 1.3; text-align: center; }
.signature-field { display: grid; gap: 8px; }
.signature-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.signature-clear-button { padding: 8px 11px; border: 1px solid #a3561d; border-radius: 8px; color: #6a350d; background: #fff8ef; font-weight: 800; }
#signature-canvas { width: 100%; height: 310px; touch-action: none; border: 2px solid #b9c7db; border-radius: 10px; background: #fff; }
.signature-record { display: grid; gap: 8px; max-width: 580px; }
.signature-record img { width: 100%; max-width: 580px; border: 1px solid #d5dce8; border-radius: 8px; background: #fff; }
.danger-action { display: grid; gap: 10px; margin-top: 26px; padding-top: 18px; border-top: 1px solid #e8c5c5; }
.danger-button { width: fit-content; padding: 10px 14px; border: 0; border-radius: 8px; color: #fff; background: #b42318; font-weight: 800; }
@media print { .no-print { display: none !important; } .admin-page { max-width: none; padding: 0; } .admin-section { box-shadow: none; border: 0; } }
.sales-totals { padding: 14px; border-radius: 10px; color: #174d3b; background: #e5f6ef; font-weight: 800; }
.detail-list { display: grid; gap: 8px; }
.detail-list p { margin: 0; padding: 10px; border-radius: 8px; background: #f5f8fd; }
.prewrap { white-space: pre-wrap; line-height: 1.7; }
.sales-report-page { width: min(1200px, 100%); }
.report-toolbar { display: flex; justify-content: space-between; align-items: end; gap: 20px; padding: 20px; border-radius: 16px; background: white; }
.report-toolbar h1, .report-heading h2 { margin: 3px 0; }
.report-filter { display: flex; align-items: end; gap: 10px; }
.report-filter label { display: grid; gap: 4px; font-size: .85rem; font-weight: 700; }
.report-filter input { padding: 9px; border: 1px solid #cbd7e6; border-radius: 8px; }
.report-heading { display: flex; justify-content: space-between; align-items: end; margin: 22px 0 10px; }
.sales-report-table { width: 100%; border-collapse: collapse; background: white; }
.sales-report-table th, .sales-report-table td { padding: 9px; border: 1px solid #cbd7e6; text-align: left; }
.sales-report-table th { background: #edf2f7; }
.sales-report-table tfoot { font-weight: 800; }
.reservation-details { display: grid; grid-template-columns: minmax(90px, 140px) 1fr; gap: 8px 14px; padding: 16px; border-radius: 12px; background: #f5f8fd; }
.reservation-details dt { color: #65728a; font-weight: 700; }
.reservation-details dd { margin: 0; overflow-wrap: anywhere; }
.manage-form { display: grid; gap: 14px; margin-top: 24px; padding-top: 20px; border-top: 1px solid #dde4f0; }
.manage-form label { display: grid; gap: 6px; font-weight: 600; }
.manage-form input, .manage-form select { width: 100%; padding: 11px; border: 1px solid #ccd7ea; border-radius: 9px; background: white; }
.admin-edit-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.danger-button { padding: 12px; border: 1px solid #c83245; border-radius: 10px; color: #a51d30; background: white; font-weight: 700; cursor: pointer; }
.danger-button:disabled { opacity: .55; }
.admin-body { min-height: 100vh; color: #17233b; background: #eef3f9; }
.login-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.login-card { width: min(460px, 100%); padding: 32px; border: 1px solid #dbe4ef; border-radius: 22px; background: white; box-shadow: 0 18px 60px #24395620; }
.login-card h1 { margin: 6px 0 8px; }
.muted { color: #65728a; }
.admin-eyebrow { color: #285bd4; opacity: 1; }
.admin-form { display: grid; gap: 14px; }
.admin-form label, .inline-assignment label { display: grid; gap: 6px; color: #39465e; font-size: .9rem; font-weight: 700; }
.admin-form input, .admin-form select, .inline-assignment select, .account-form input { min-width: 0; width: 100%; padding: 11px; border: 1px solid #cbd7e6; border-radius: 9px; color: #17233b; background: white; font: inherit; }
.primary-button, .small-button { padding: 11px 16px; border: 0; border-radius: 9px; color: white; background: #285bd4; font: inherit; font-weight: 750; cursor: pointer; }
.flash { margin: 16px 0; padding: 13px 15px; border-radius: 10px; font-weight: 650; }
.success-flash { color: #185a3b; background: #daf4e7; }
.error-flash { color: #9d2535; background: #fde8eb; }
.admin-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px max(20px, calc((100vw - 1240px) / 2)); color: white; background: #172b4d; }
.admin-header h1 { margin: 3px 0 0; font-size: clamp(1.45rem, 3vw, 2rem); }
.admin-account { display: flex; align-items: center; gap: 12px; }
.admin-login-identity { display: grid; gap: 2px; }
.admin-login-identity small { opacity: .82; font-size: .78em; }
.admin-account form { margin: 0; }
.link-button { padding: 8px 10px; border: 1px solid #ffffff55; border-radius: 8px; color: white; background: transparent; cursor: pointer; }
.admin-page { width: min(1240px, 100%); margin: auto; padding: 24px 16px 48px; }
.admin-section { margin-bottom: 18px; padding: 22px; border: 1px solid #dae3ee; border-radius: 16px; background: white; box-shadow: 0 7px 24px #263c6610; }
.admin-section h2 { margin: 4px 0 16px; }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.section-actions { display: flex; align-items: center; gap: 10px; }
.count-badge { padding: 5px 10px; border-radius: 999px; color: #285bd4; background: #edf2ff; font-weight: 700; }
.reservation-grid { display: grid; gap: 10px; }
.reservation-card { display: grid; grid-template-columns: minmax(250px, 1fr) minmax(430px, 1.4fr); gap: 18px; align-items: end; padding: 16px; border: 1px solid #e0e7f0; border-radius: 12px; background: #fbfcfe; }
.reservation-summary { display: grid; gap: 4px; }
.reservation-summary time { color: #285bd4; font-weight: 800; }
.reservation-summary span { color: #66738a; }
.reservation-summary .assignment-state { color: #34455f; font-weight: 650; }
.inline-assignment { display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; align-items: end; }
.small-button { white-space: nowrap; }
.admin-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.data-list { display: grid; gap: 7px; max-height: 320px; margin: 0; padding: 0; overflow: auto; list-style: none; }
.data-list li { display: flex; justify-content: space-between; gap: 12px; padding: 10px 12px; border-radius: 9px; background: #f5f8fc; }
.data-list li span { color: #65728a; text-align: right; }
.staff-edit-panel { width: 100%; }
.staff-edit-panel summary { color: #285bd4; font-weight: 700; cursor: pointer; }
.corporate-form { grid-template-columns: repeat(4,minmax(150px,1fr)); align-items: end; margin-top: 16px; }
.editor-row { display: grid; grid-template-columns: repeat(4,minmax(120px,1fr)); gap: 8px; margin: 10px 0; padding: 12px; border-radius: 10px; background: #f5f8fc; }
.editor-row label { display: grid; gap: 4px; font-size: .85rem; font-weight: 700; }
.editor-row input,.editor-row select,.corporate-form textarea { width: 100%; padding: 9px; border: 1px solid #cbd7e6; border-radius: 8px; font: inherit; }
.confirmation-box { margin-top: 18px; padding: 16px; border: 1px solid #b9d8c8; border-radius: 12px; background: #f4fbf7; }
.create-panel { margin-top: 16px; border-top: 1px solid #e1e8f1; }
.create-panel summary { padding: 14px 0 0; color: #285bd4; font-weight: 750; cursor: pointer; }
.compact-form, .horizontal-form { margin-top: 16px; }
.horizontal-form { grid-template-columns: repeat(6, minmax(110px, 1fr)) auto; align-items: end; }
.customer-mail-copy-panel { margin-top: 20px; padding: 14px; border: 1px solid #f0d68a; border-radius: 9px; background: #fffbeb; scroll-margin-top: 116px; }
.customer-mail-copy-panel h3 { margin: 0 0 8px; }
.customer-mail-copy-form { grid-template-columns: minmax(0, 1fr) auto; align-items: center; margin-top: 12px; }
.customer-mail-copy-form .checkbox-label { display: flex; align-items: center; gap: 10px; }
.customer-mail-copy-form .checkbox-label input[type="checkbox"] { flex: 0 0 auto; min-width: 18px; width: 18px; height: 18px; padding: 0; }
.unavailability-form { grid-template-columns: 1.2fr 1fr 1fr 1fr 1.2fr auto; }
.table-wrap { overflow-x: auto; }
.admin-table { width: 100%; border-collapse: collapse; }
.admin-table th, .admin-table td { padding: 10px 12px; border-bottom: 1px solid #e5ebf2; text-align: left; white-space: nowrap; }
.admin-table th { color: #65728a; font-size: .82rem; }
.schedule-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.schedule-navigation { display: flex; align-items: center; gap: 16px; }
.schedule-navigation h2 { margin: 2px 0 0; }
.schedule-navigation > div { min-width: 250px; text-align: center; }
.schedule-filter { display: flex; align-items: flex-end; gap: 8px; }
.schedule-filter label { display: grid; gap: 5px; color: #39465e; font-size: .85rem; font-weight: 700; }
.schedule-filter select { min-width: 180px; padding: 9px 11px; border: 1px solid #cbd7e6; border-radius: 9px; background: white; font: inherit; }
.schedule-week { display: grid; gap: 12px; }
.schedule-day { overflow: hidden; border: 1px solid #dbe4ef; border-radius: 14px; background: white; box-shadow: 0 5px 18px #263c660d; }
.schedule-day.is-today { border-color: #4979e8; box-shadow: 0 0 0 2px #4979e820; }
.schedule-day > header { display: flex; align-items: center; gap: 9px; padding: 11px 14px; border-bottom: 1px solid #e5ebf2; background: #f7f9fc; }
.schedule-weekday { display: grid; place-items: center; width: 29px; height: 29px; border-radius: 50%; color: white; background: #52637d; font-weight: 800; }
.weekday-5 { background: #285bd4; }
.weekday-6 { background: #c94455; }
.schedule-shifts, .schedule-unavailability { display: flex; flex-wrap: wrap; gap: 6px; padding: 9px 14px; border-bottom: 1px solid #eef2f7; color: #526079; font-size: .8rem; }
.schedule-shifts span, .schedule-unavailability span { padding: 4px 8px; border-radius: 999px; background: #edf2f8; }
.schedule-unavailability { border-top: 1px solid #eef2f7; border-bottom: 0; color: #7b4c38; }
.schedule-unavailability span { background: #fff1e9; }
.schedule-events { display: grid; gap: 8px; padding: 10px 14px; }
.schedule-event { display: grid; grid-template-columns: 110px 1fr; gap: 12px; padding: 11px; border-left: 5px solid #285bd4; border-radius: 9px; background: #f2f6ff; }
.schedule-event.corporate-event { border-color: #16846c; background: #effaf6; }
.schedule-event-time { color: #172b4d; font-size: 1rem; font-weight: 800; }
.schedule-event > div:last-child { display: grid; gap: 3px; }
.schedule-event strong { font-size: .98rem; }
.schedule-event span:not(.event-kind) { color: #526079; font-size: .84rem; }
.event-kind { width: fit-content; padding: 2px 7px; border-radius: 999px; color: #285bd4; background: white; font-size: .72rem; font-weight: 800; }
.corporate-event .event-kind { color: #11715d; }
.compact-empty { margin: 2px 0; padding: 10px; }
.account-actions { display: flex; align-items: center; gap: 8px; }
.account-form { display: flex; align-items: center; gap: 7px; margin: 0; }
.account-form label { margin: 0; }
.account-form select { min-width: 110px; padding: 8px; border: 1px solid #cbd7e6; border-radius: 8px; background: white; }
.account-create-form { grid-template-columns: repeat(5, minmax(130px, 1fr)) auto; align-items: end; margin-top: 16px; }
.status-pill { display: inline-block; padding: 4px 8px; border-radius: 999px; font-weight: 700; font-size: .82rem; }
.status-active { color: #185a3b; background: #daf4e7; }
.status-inactive { color: #9d2535; background: #fde8eb; }
.status-pending { color: #765500; background: #fff2c7; }
.availability-heading { justify-content: center; }
.availability-heading h2 { margin: 0; min-width: 150px; text-align: center; }
.availability-view-switch { display: flex; justify-content: center; gap: 7px; margin-bottom: 12px; }
.availability-view-switch .is-selected { border-color: #285bd4; color: #fff; background: #285bd4; }
.availability-calendar { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 10px; }
.availability-calendar-week { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.availability-calendar-day { grid-template-columns: minmax(0, 720px); justify-content: center; }
.shared-calendar { display: grid; gap: 9px; }
.shared-calendar-month { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0; border-top: 1px solid #dce3ef; border-left: 1px solid #dce3ef; }
.shared-calendar-week { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.shared-calendar-day { grid-template-columns: minmax(0, 760px); justify-content: center; }
.shared-calendar-day { min-width: 0; min-height: 130px; padding: 9px; border: 1px solid #dce3ef; border-radius: 10px; background: #fff; }
.shared-calendar-month .shared-calendar-day { min-height: clamp(82px, 13vh, 128px); border-top: 0; border-left: 0; border-radius: 0; overflow: hidden; }
.shared-month-weekdays { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); border: 1px solid #dce3ef; border-bottom: 0; background: #f4f6f9; }
.shared-month-weekdays div { padding: 7px 2px; border-right: 1px solid #dce3ef; color: #59677e; text-align: center; font-size: .8rem; font-weight: 800; }
.shared-month-weekdays div:last-child { border-right: 0; color: #b42338; }
.shared-calendar-day.has-all-day-off { background: #fff8f8; }
.shared-calendar-day[data-day-url] { cursor:pointer; }
.shared-calendar-day[data-day-url]:focus-visible { outline:3px solid #285bd4; outline-offset:-3px; }
.shared-calendar-day.is-outside { opacity: .48; background: #f6f7fa; }
.shared-calendar-day > header { margin-bottom: 7px; }
.shared-calendar-day > header a { display: flex; align-items: center; gap: 5px; color: #24324a; text-decoration: none; }
.shared-event { display: grid; width:100%; gap: 2px; margin: 5px 0; padding: 7px; border:0; border-left: 4px solid #8290a8; border-radius: 6px; color:inherit; background: #f4f6fa; font-size: .78rem; text-align:left; cursor:pointer; }
.shared-event.is-own { border: 2px solid #2563d9; border-left-width: 6px; background: #edf4ff; }
.shared-event-corporate { border-left-color: #8d55c7; background: #f7f0ff; }
.shared-event time { font-weight: 800; }
.shared-event strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.shared-more { color: #285bd4; font-size: .72rem; font-weight: 700; }
.shared-status { margin: 4px 0; padding: 4px 6px; border-radius: 5px; font-size: .74rem; }
.shared-status.is-shift { color: #135b38; background: #e7f7ee; }
.shared-status.is-off { color: #8b2830; background: #fff0f1; }
.shared-status.is-all-day { font-weight: 800; }
.staff-kawachi { --staff-color:#3377c4; --staff-bg:#e6f1ff; }
.staff-yasuda { --staff-color:#8a5a32; --staff-bg:#f5e8dc; }
.staff-kobayashi { --staff-color:#c43f4d; --staff-bg:#ffe7ea; }
.staff-ochiai { --staff-color:#77808c; --staff-bg:#edf0f3; }
.staff-katayanagi { --staff-color:#d77fa7; --staff-bg:#ffeaf3; }
.staff-takahashi { --staff-color:#8153bd; --staff-bg:#f0e7ff; }
.staff-unassigned { --staff-color:#e28a00; --staff-bg:#fff1c7; }
.staff-default { --staff-color:#42708f; --staff-bg:#e7f1f7; }
.shared-event[class*="staff-"],.shared-status[class*="staff-"] { border-left-color:var(--staff-color); background:var(--staff-bg); }
.shared-timeline-shell { display:grid; grid-template-columns:58px minmax(0,1fr); overflow:hidden; border:1px solid #dce3ef; border-radius:10px; background:#fff; }
.shared-time-axis { position:relative; height:1440px; border-right:1px solid #dce3ef; color:#68758a; font-size:.7rem; }
.shared-time-axis span { position:absolute; right:6px; transform:translateY(-50%); }
.shared-timeline-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); min-width:0; }
.shared-timeline-shell.is-day .shared-timeline-days { grid-template-columns:1fr; }
.shared-timeline-day { min-width:0; border-right:1px solid #dce3ef; }
.shared-timeline-day:last-child { border-right:0; }
.shared-timeline-day>header { position:sticky; top:0; z-index:4; padding:8px 3px; border-bottom:1px solid #dce3ef; background:#fff; text-align:center; font-weight:800; }
.shared-all-day { min-height:35px; padding:4px; border-bottom:2px solid #b9c5d5; }
.shared-all-day span { display:block; margin:2px; padding:3px; border-left:4px solid var(--staff-color); border-radius:4px; background:var(--staff-bg); font-size:.68rem; font-weight:800; }
.shared-all-day .shared-all-day-empty { border-left:0; color:#7b8799; background:#f7f8fa; font-weight:600; }
.shared-day-hours { position:relative; height:1440px; background:repeating-linear-gradient(to bottom,transparent 0,transparent 59px,#e6ebf2 59px,#e6ebf2 60px); }
.shared-timeline-event { position:absolute; z-index:2; top:var(--event-top); left:calc((100% / var(--event-columns)) * var(--event-column) + 2px); width:calc(100% / var(--event-columns) - 4px); height:var(--event-height); min-height:28px; padding:4px 5px; overflow:hidden; border:0; border-left:5px solid var(--staff-color); border-radius:5px; color:inherit; background:var(--staff-bg); font-size:.7rem; text-align:left; box-shadow:0 1px 3px #17233b22; cursor:pointer; }
.shared-timeline-event.is-unavailable { opacity:.82; background:repeating-linear-gradient(135deg,var(--staff-bg),var(--staff-bg) 6px,#fff 6px,#fff 10px); }
.shared-timeline-event time,.shared-timeline-event strong,.shared-timeline-event span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.shared-timeline-event.is-own { outline:2px solid #1c5ed1; }
.shared-now-line { position:absolute; z-index:3; top:var(--now-top); right:0; left:0; border-top:2px solid #d32929; pointer-events:none; }
.shared-now-line span { position:absolute; top:-5px; left:-4px; width:9px; height:9px; border-radius:50%; background:#d32929; }
.shared-add-button { position:fixed; z-index:20; right:max(18px,calc((100vw - 1240px)/2 + 18px)); bottom:22px; width:58px; height:58px; border:0; border-radius:18px; color:#172b4d; background:#dce7ff; box-shadow:0 6px 20px #17233b44; font-size:2rem; cursor:pointer; }
.shared-add-dialog details { margin-top:16px; padding-top:14px; border-top:1px solid #dce3ef; }
.shared-add-dialog summary { color:#285bd4; font-weight:800; cursor:pointer; }
.shared-add-dialog form { margin-top:12px; }
.shared-calendar-search { display:flex; align-items:center; justify-content:center; gap:6px; }
.shared-calendar-search input { min-width:240px; padding:9px 12px; border:1px solid #cbd5e1; border-radius:999px; font:inherit; }
.shared-timeline-event > summary { display:block; height:100%; list-style:none; cursor:pointer; }
.shared-timeline-event > summary::-webkit-details-marker { display:none; }
.shared-timeline-event[open] { z-index:30; overflow:visible; }
.shared-native-detail { position:fixed; z-index:100; top:118px; left:18px; width:min(360px,calc(100vw - 36px)); max-height:calc(100dvh - 140px); padding:20px; overflow:auto; border:1px solid #d7deea; border-radius:18px; color:#172033; background:#fff; box-shadow:0 18px 48px #17233b55; font-size:.92rem; }
.shared-native-detail h3 { margin:0 0 14px; font-size:1.2rem; }
.shared-native-detail p { margin:14px 0 0; color:#68758a; font-size:.78rem; }
.shared-timeline-shell.is-day { grid-template-columns:68px minmax(0,1fr); }
.shared-timeline-shell.is-day .shared-time-axis,.shared-timeline-shell.is-day .shared-day-hours { height:780px; min-height:780px; }
.shared-timeline-shell.is-day .shared-day-hours { background:repeating-linear-gradient(to bottom,transparent 0,transparent 59px,#d7dee8 59px,#d7dee8 60px); }
.shared-timeline-shell.is-day .shared-time-axis { color:#334155; font-size:.78rem; font-weight:700; }
.shared-timeline-shell.is-day .shared-all-day { min-height:56px; padding:8px; }
.shared-timeline-shell.is-day .shared-all-day span { padding:7px 9px; font-size:.78rem; }
.shared-timeline-shell.is-day .shared-timeline-event { min-height:42px; padding:5px 7px; font-size:.76rem; line-height:1.25; }
.availability-day { min-height: 145px; padding: 14px; border: 1px solid #dfe6f2; border-radius: 12px; background: #fff; }
.availability-day-empty { border-style: dashed; background: #f7f9fc; }
.availability-day h3 { margin: 0 0 12px; font-size: 1rem; }
.availability-day.is-off { border-color: #e8a8b0; background: #fff5f6; }
.availability-day.is-past { opacity: .62; }
.availability-state { min-height: 42px; margin: 0 0 10px; font-weight: 700; }
.availability-day form, .availability-day button { width: 100%; }
.availability-entry-form { display: grid; grid-template-columns: repeat(4,minmax(140px,1fr)); gap: 10px; align-items: end; }
.availability-entry-form label { display: grid; gap: 5px; color: #39465e; font-size: .88rem; font-weight: 700; }
.availability-entry-form input,.availability-entry-form select { width: 100%; min-width: 0; padding: 10px; border: 1px solid #cbd7e6; border-radius: 9px; background: #fff; font: inherit; }
.availability-item { margin: 8px 0; padding: 8px; border-radius: 8px; font-size: .82rem; line-height: 1.45; }
.availability-item form { margin-top: 7px; }
.availability-item button { padding: 7px; }
.availability-item-shift { color: #174d73; background: #e9f3ff; }
.availability-item-off { color: #8d2837; background: #fde8eb; }
.availability-item-restriction { color: #7b4c38; background: #fff1e9; }
.security-summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 16px 0; }
.security-summary-grid div { display: grid; gap: 4px; padding: 16px; border-radius: 12px; background: #f5f8fc; text-align: center; }
.security-summary-grid strong { color: #285bd4; font-size: 1.8rem; }
.security-summary-grid span { color: #65728a; font-weight: 700; }
.security-summary-grid .integrity-clean { color: #185a3b; }
.security-summary-grid .integrity-tampered { color: #b42318; }
.small-account-button { padding: 9px 12px; white-space: nowrap; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.v1-admin-nav { display: flex; gap: 8px; flex-wrap: wrap; padding: 10px; border: 1px solid #d8dde6; border-radius: 10px; background: #fff; }
.v1-admin-nav a { padding: 7px 12px; border: 1px solid #bfdbfe; border-radius: 999px; color: #1d4ed8; background: #eff6ff; font-size: .88rem; font-weight: 700; text-decoration: none; }
.v1-admin-nav a[aria-selected="true"] { border-color: #2563eb; color: #fff; background: #2563eb; box-shadow: 0 1px 3px #2563eb40; }
.admin-section[data-v1-panel] { position: relative; padding-top: 52px; scroll-margin-top: 90px; }
.admin-section[data-v1-panel]::before { content: attr(data-category); position: absolute; inset: 0 0 auto; padding: 9px 14px; border-radius: 14px 14px 0 0; font-size: .82rem; font-weight: 800; letter-spacing: .04em; }
.admin-section.v1-cat-reservation::before { color: #166534; background: #dcfce7; }
.admin-section.v1-cat-change::before { color: #1e40af; background: #dbeafe; }
.admin-section.v1-cat-settings::before { color: #92400e; background: #fef3c7; }
.admin-section.v1-cat-diagnostic::before { color: #5b21b6; background: #ede9fe; }
.admin-section[data-v1-panel][hidden] { display: none; }
.v1-reservation-calendar-box { display: grid; gap: 12px; margin-bottom: 20px; padding: 14px; border: 1px solid #d8dde6; border-radius: 10px; background: #fafbfc; }
.v1-calendar-area-form label { display: grid; gap: 4px; color: #687386; font-size: .78rem; }
.v1-calendar-area-form select { min-width: 180px; padding: 8px; border: 1px solid #d8dde6; border-radius: 6px; background: #fff; }
.v1-calendar-heading { display: flex; align-items: center; justify-content: center; gap: 14px; }
.v1-calendar-heading strong { min-width: 140px; text-align: center; font-size: 1.1rem; }
.v1-month-calendar { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); border-top: 1px solid #d8dde6; border-left: 1px solid #d8dde6; }
.v1-month-weekday,.v1-month-day { min-width: 0; border-right: 1px solid #d8dde6; border-bottom: 1px solid #d8dde6; }
.v1-month-weekday { padding: 6px; color: #687386; background: #f4f6f9; text-align: center; font-size: .78rem; }
.v1-month-day { display: grid; align-content: start; gap: 3px; min-height: 88px; padding: 7px; color: #172033; background: #fff; text-decoration: none; }
.v1-month-day:hover,.v1-month-day.is-selected { background: #eff6ff; }
.v1-month-day.is-selected { box-shadow: inset 0 0 0 3px #2563eb; }
.v1-month-day.is-empty { background: #f8fafc; }
.v1-month-day span { overflow: hidden; font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.v1-month-day .is-confirmed { color: #166534; }.v1-month-day .is-canceled { color: #b91c1c; }.v1-month-day .is-received { color: #1d4ed8; }
.v1-day-reservations { display: grid; gap: 8px; margin-top: 4px; padding: 12px; border: 1px solid #bfdbfe; border-radius: 9px; background: #f8fbff; }
.v1-selected-day-heading { display: grid; gap: 3px; padding: 3px 2px 9px; border-bottom: 2px solid #dbeafe; }
.v1-selected-day-heading strong { color: #1e3a8a; font-size: 1.05rem; }
.v1-selected-day-heading span { color: #687386; font-size: .82rem; }
.v1-day-reservation { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 1px solid #d8dde6; border-radius: 8px; background: #fff; }
.v1-day-reservation.is-canceled { border-color: #fecaca; background: #fff7f7; }
.v1-day-reservation > div { display: grid; gap: 4px; }.v1-day-reservation span { color: #687386; font-size: .82rem; }
.mfa-section { max-width: 720px; margin-inline: auto; }
.mfa-form { max-width: 480px; margin-top: 22px; }
.secret-key { padding: 16px; border-radius: 10px; background: #edf2ff; font-size: 1.2rem; letter-spacing: .12em; overflow-wrap: anywhere; }
.wrap-code { display: block; margin-top: 10px; overflow-wrap: anywhere; }
.recovery-codes { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; max-width: 420px; padding: 18px; border: 1px solid #cbd7e6; border-radius: 12px; background: #f5f8fc; }
.recovery-codes code { font-size: 1.05rem; letter-spacing: .08em; }
.inline-link { display: inline-block; text-decoration: none; }
.empty-state { padding: 24px; color: #65728a; text-align: center; background: #f5f8fc; border-radius: 10px; }
@media (max-width: 900px) { .reservation-card, .admin-columns { grid-template-columns: 1fr; } .horizontal-form, .account-create-form, .availability-entry-form { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px) { .areas { grid-template-columns: repeat(2, 1fr); } .panel { padding: 14px; } .day { min-height: 88px; padding: 5px; } .slot { font-size: .72rem; } .booking-dialog { padding: 16px; } .booking-dialog input, .booking-dialog select, .booking-dialog textarea { font-size: 16px; } .form-grid, .admin-edit-actions { grid-template-columns: 1fr; } .wide-field { grid-column: auto; } .proxy-banner, .section-actions { align-items: flex-start; flex-direction: column; gap: 4px; } .admin-header { align-items: flex-start; } .admin-account { align-items: flex-end; flex-direction: column; } .admin-section { padding: 15px; } .inline-assignment { grid-template-columns: 1fr; } .horizontal-form, .account-create-form, .availability-entry-form, .customer-mail-copy-form { grid-template-columns: 1fr; } .account-actions, .account-form { align-items: stretch; flex-direction: column; } .login-card { padding: 22px; } .availability-calendar { grid-template-columns: repeat(2, minmax(0, 1fr)); } .availability-day { min-height: 128px; padding: 10px; } .availability-heading { gap: 8px; } .availability-heading h2 { min-width: 105px; font-size: 1.15rem; } .postal-entry { grid-template-columns: 1fr; } .shared-calendar-toolbar { margin-bottom:8px; padding:10px; } .shared-calendar-toolbar .muted { display:none; } .shared-calendar-page { padding:8px 4px 12px; } .shared-calendar-month { grid-template-columns:repeat(7,minmax(0,1fr)); } .shared-calendar-month .shared-calendar-day { min-height:calc((100dvh - 235px)/6); padding:3px; } .shared-calendar-month .shared-event { margin:2px 0; padding:2px; border-left-width:3px; font-size:.56rem; } .shared-calendar-month .shared-event strong { display:none; } .shared-calendar-month .shared-status { padding:2px; font-size:.54rem; } .shared-timeline-shell { grid-template-columns:38px minmax(0,1fr); overflow:hidden; } .shared-timeline-days { min-width:0; } .shared-time-axis,.shared-day-hours { height:calc(100dvh - 235px); min-height:520px; } .shared-day-hours { background:repeating-linear-gradient(to bottom,transparent 0,transparent calc((100dvh - 235px)/24 - 1px),#e6ebf2 calc((100dvh - 235px)/24 - 1px),#e6ebf2 calc((100dvh - 235px)/24)); } .shared-time-axis { font-size:.55rem; } .shared-timeline-day>header { padding:5px 1px; font-size:.62rem; } .shared-all-day { min-height:31px; padding:2px; } .shared-all-day span { overflow:hidden; padding:2px; font-size:.52rem; text-overflow:ellipsis; white-space:nowrap; } .shared-timeline-event { min-height:13px; padding:1px 2px; border-left-width:3px; font-size:.48rem; line-height:1.1; } .shared-timeline-event span { display:none; } .shared-timeline-shell.is-day .shared-timeline-event { padding:3px 5px; font-size:.7rem; } .shared-timeline-shell.is-day .shared-timeline-event span { display:block; } }
@media (max-width: 700px) { .schedule-toolbar, .schedule-navigation, .schedule-filter { align-items: stretch; flex-direction: column; } .schedule-navigation > div { min-width: 0; text-align: left; } .schedule-navigation { display: grid; grid-template-columns: 1fr 1fr; } .schedule-navigation > div { grid-column: 1 / -1; grid-row: 1; } .schedule-event { grid-template-columns: 1fr; gap: 5px; } .schedule-event-time { font-size: .9rem; } }
@media (orientation:landscape) and (max-height:700px) {
  .shared-calendar-page { width:100%; padding:4px 8px 8px; }
  .shared-calendar-page .shared-calendar-toolbar { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:8px; margin-bottom:4px; padding:6px 10px; }
  .shared-calendar-page .availability-view-switch { margin:0; }
  .shared-calendar-page .schedule-navigation { justify-content:center; }
  .shared-calendar-page .schedule-navigation h2 { font-size:1.05rem; }
  .shared-calendar-page .shared-calendar-toolbar .muted { display:none; }
  .shared-calendar-month .shared-calendar-day { min-height:calc((100dvh - 172px)/6); padding:3px 5px; }
  .shared-calendar-month .shared-event { margin:2px 0; padding:2px 4px; font-size:.62rem; }
  .shared-time-axis,.shared-day-hours { height:calc(100dvh - 168px); min-height:390px; }
  .shared-day-hours { background:repeating-linear-gradient(to bottom,transparent 0,transparent calc((100dvh - 168px)/24 - 1px),#dfe5ed calc((100dvh - 168px)/24 - 1px),#dfe5ed calc((100dvh - 168px)/24)); }
  .shared-timeline-event { min-height:12px; padding:1px 3px; font-size:.55rem; line-height:1.1; }
  .shared-all-day { min-height:27px; padding:2px; }
  .shared-all-day span { padding:1px 3px; font-size:.56rem; }
  .shared-calendar-search input { min-width:190px; padding:7px 10px; }
  .shared-timeline-shell.is-day { grid-template-columns:68px minmax(0,1fr); }
  .shared-timeline-shell.is-day .shared-time-axis,.shared-timeline-shell.is-day .shared-day-hours { height:780px; min-height:780px; }
  .shared-timeline-shell.is-day .shared-day-hours { background:repeating-linear-gradient(to bottom,transparent 0,transparent 59px,#d7dee8 59px,#d7dee8 60px); }
  .shared-timeline-shell.is-day .shared-timeline-event { min-height:42px; padding:5px 7px; font-size:.76rem; line-height:1.25; }
  .shared-timeline-shell.is-day .shared-all-day { min-height:56px; padding:8px; }
}
@media (max-width: 700px) { .report-toolbar, .report-filter, .report-heading { align-items: stretch; flex-direction: column; } }
@media (max-width: 900px) { .corporate-form,.editor-row { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 600px) { .corporate-form,.editor-row { grid-template-columns: 1fr; } }
@media (max-width: 480px) { .availability-calendar { grid-template-columns: 1fr; } }

/* DB shared calendar: make the time scale legible on phones before adding
   richer editing. The mobile day view has its own time spine inside the
   scrolling schedule, so its labels align with the actual event positions. */
.shared-day-hours {
  background:
    repeating-linear-gradient(to bottom, transparent 0, transparent 29px, #edf1f6 29px, #edf1f6 30px),
    repeating-linear-gradient(to bottom, transparent 0, transparent 59px, #c7d1df 59px, #c7d1df 60px);
}
.shared-time-axis span:first-child,.shared-inline-time-axis span:first-child { transform:translateY(0); }
.shared-time-axis span:last-child,.shared-inline-time-axis span:last-child { transform:translateY(-100%); }
.shared-inline-time-axis { display:none; }
.shared-timeline-shell.is-day { overflow:visible; grid-template-columns:minmax(0,1fr); }
.shared-timeline-shell.is-day > .shared-time-axis { display:none; }
.shared-timeline-shell.is-day .shared-day-hours {
  padding-left:64px;
  background:
    repeating-linear-gradient(to bottom, transparent 0, transparent 29px, #e9eef5 29px, #e9eef5 30px),
    repeating-linear-gradient(to bottom, transparent 0, transparent 59px, #b8c5d5 59px, #b8c5d5 60px);
}
.shared-timeline-shell.is-day .shared-inline-time-axis {
  position:absolute;
  z-index:5;
  top:0;
  height:780px;
  left:0;
  display:block;
  width:64px;
  border-right:1px solid #b8c5d5;
  color:#334155;
  background:#f8fafc;
  font-size:.78rem;
  font-weight:800;
}
.shared-inline-time-axis span {
  position:absolute;
  right:7px;
  transform:translateY(-50%);
}
.shared-timeline-shell.is-day .shared-timeline-event {
  left:calc(64px + ((100% - 64px) / var(--event-columns)) * var(--event-column) + 2px);
  width:calc((100% - 64px) / var(--event-columns) - 4px);
  border-radius:6px;
  box-shadow:0 1px 3px #17233b33;
}
.shared-timeline-shell.is-day .shared-now-line { left:64px; }
.shared-timeline-shell.is-day .shared-all-day { border-bottom-color:#94a3b8; }

@media (max-width:700px) {
  .shared-calendar-page { padding-inline:0; }
  .shared-timeline-shell.is-day { border-right:0; border-left:0; border-radius:0; }
  .shared-timeline-shell.is-day .shared-time-axis,.shared-timeline-shell.is-day .shared-day-hours { height:780px; min-height:780px; }
  .shared-timeline-shell.is-day .shared-inline-time-axis { width:58px; font-size:.72rem; }
  .shared-timeline-shell.is-day .shared-day-hours { padding-left:58px; }
  .shared-timeline-shell.is-day .shared-timeline-event {
    left:calc(58px + ((100% - 58px) / var(--event-columns)) * var(--event-column) + 2px);
    width:calc((100% - 58px) / var(--event-columns) - 4px);
    min-height:40px;
    font-size:.75rem;
  }
  .shared-timeline-shell.is-day .shared-now-line { left:58px; }
}

/* Day view uses a real two-column time grid. Keeping the labels outside the
   event canvas prevents the all-day section or an event from moving the scale. */
.shared-timeline-shell.is-day .shared-day-grid {
  display:grid;
  grid-template-columns:64px minmax(0,1fr);
}
.shared-timeline-shell.is-day .shared-inline-time-axis {
  position:relative;
  top:auto;
  right:auto;
  bottom:auto;
  left:auto;
  display:block;
  width:auto;
  min-height:780px;
  height:780px;
  border-right:1px solid #b8c5d5;
  background:#f8fafc;
}
.shared-timeline-shell.is-day .shared-day-hours { padding-left:0; }
.shared-timeline-shell.is-day .shared-timeline-event {
  left:calc((100% / var(--event-columns)) * var(--event-column) + 2px);
  width:calc(100% / var(--event-columns) - 4px);
}
.shared-timeline-shell.is-day .shared-now-line { left:0; }

@media (max-width:700px) {
  .shared-timeline-shell.is-day .shared-day-grid { grid-template-columns:58px minmax(0,1fr); }
  .shared-timeline-shell.is-day .shared-inline-time-axis { min-height:780px; height:780px; }
  .shared-timeline-shell.is-day .shared-day-hours { padding-left:0; }
  .shared-timeline-shell.is-day .shared-timeline-event {
    left:calc((100% / var(--event-columns)) * var(--event-column) + 2px);
    width:calc(100% / var(--event-columns) - 4px);
  }
  .shared-timeline-shell.is-day .shared-now-line { left:0; }
}

/* V1-compatible administration theme. Customer booking pages are intentionally unaffected. */
.admin-body {
  --v1-admin-bg:#f6f7f9;
  --v1-admin-line:#d8dde6;
  --v1-admin-text:#172033;
  --v1-admin-muted:#687386;
  --v1-admin-blue:#2563eb;
  color:var(--v1-admin-text);
  background:var(--v1-admin-bg);
  font-size:14px;
}
.admin-body .admin-header {
  position:sticky;
  z-index:40;
  top:0;
  min-height:62px;
  padding:10px max(18px,calc((100vw - 1280px)/2));
  color:var(--v1-admin-text);
  border-bottom:1px solid var(--v1-admin-line);
  background:#fff;
  box-shadow:0 2px 8px #1720330d;
}
.admin-body .admin-header h1 { margin:1px 0 0; font-size:18px; }
.admin-body .admin-header .eyebrow { margin:0; color:var(--v1-admin-muted); font-size:10px; }
.admin-body .admin-account { gap:7px; flex-wrap:wrap; justify-content:flex-end; }
.admin-body .admin-header a:not(.link-button) { color:#1d4ed8; font-weight:700; text-decoration:none; }
.admin-body .link-button,
.admin-body .admin-header .link-button {
  padding:7px 10px;
  color:#1d4ed8;
  border:1px solid #bfdbfe;
  border-radius:999px;
  background:#eff6ff;
  font-size:13px;
  font-weight:700;
  text-decoration:none;
}
.admin-body .admin-page { width:min(1280px,100%); padding:18px 16px 42px; }
.admin-body .admin-section,
.admin-body .report-toolbar,
.admin-body .login-card {
  border:1px solid var(--v1-admin-line);
  border-radius:8px;
  background:#fff;
  box-shadow:none;
}
.admin-body .admin-section { margin-bottom:16px; padding:14px; }
.admin-body .admin-section h2 { margin:2px 0 12px; font-size:18px; }
.admin-body .section-heading { gap:10px; }
.admin-body .admin-eyebrow { margin:0 0 2px; color:var(--v1-admin-muted); font-size:10px; }
.admin-body .count-badge { padding:3px 8px; border:1px solid #bfdbfe; border-radius:999px; font-size:12px; }
.admin-body .primary-button,
.admin-body .small-button,
.admin-body .confirm-button,
.admin-body .edit-button,
.admin-body .danger-button {
  min-height:34px;
  padding:7px 12px;
  border-radius:6px;
  font-size:13px;
}
.admin-body .admin-form { gap:10px; }
.admin-body .admin-form label,
.admin-body .inline-assignment label,
.admin-body .editor-row label { gap:4px; font-size:13px; }
.admin-body .admin-form input,
.admin-body .admin-form select,
.admin-body .admin-form textarea,
.admin-body .inline-assignment select,
.admin-body .account-form input,
.admin-body .editor-row input,
.admin-body .editor-row select,
.admin-body .corporate-form textarea,
.admin-body .schedule-filter select,
.admin-body .report-filter input {
  min-height:36px;
  padding:7px 8px;
  border:1px solid #c7cfdb;
  border-radius:6px;
  background:#fff;
}
.admin-body .horizontal-form,
.admin-body .account-create-form,
.admin-body .corporate-form { grid-template-columns:repeat(auto-fit,minmax(165px,1fr)); align-items:end; }
.admin-body .customer-search-form { grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); align-items:end; }
.admin-body .customer-result-list,
.admin-body .customer-member-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:10px; }
.admin-body .customer-result-card { display:grid; gap:6px; padding:12px; border:1px solid var(--v1-admin-line); border-radius:7px; background:#f8fafc; }
.admin-body .customer-select { font-weight:700; color:#1d4ed8; }
.admin-body .candidate-signals { padding:5px 7px; border-radius:5px; color:#92400e; background:#fef3c7; font-weight:700; }
.admin-body .inline-form { display:flex; flex-wrap:wrap; gap:7px; align-items:end; margin-top:6px; }
.admin-body .inline-form input { min-height:34px; flex:1 1 180px; }
.admin-body .table-scroll { overflow:auto; margin-top:12px; }
.admin-body .table-scroll table { width:100%; border-collapse:collapse; }
.admin-body .table-scroll th,
.admin-body .table-scroll td { padding:8px; border-bottom:1px solid var(--v1-admin-line); text-align:left; white-space:nowrap; }
.admin-body .create-panel { margin-top:12px; border-top:1px solid var(--v1-admin-line); }
.admin-body .create-panel summary,
.admin-body .staff-edit-panel summary { color:#1d4ed8; font-weight:700; }
.admin-body .data-list li,
.admin-body .editor-row,
.admin-body .reservation-details,
.admin-body .detail-list p,
.admin-body .empty-state { border-radius:6px; background:#f5f7fa; }
.admin-body .reservation-card,
.admin-body .schedule-day,
.admin-body .availability-day {
  border-color:var(--v1-admin-line);
  border-radius:7px;
  box-shadow:none;
}
.admin-body .schedule-day > header { padding:8px 10px; background:#f4f6f9; }
.admin-body .schedule-event { padding:8px; border-radius:5px; }
.admin-body .admin-table th,
.admin-body .admin-table td { padding:8px; border:1px solid #e1e5eb; white-space:normal; vertical-align:top; }
.admin-body .admin-table th { color:#4b5565; background:#f4f6f9; }
.admin-body .v1-admin-nav {
  position:sticky;
  z-index:30;
  top:62px;
  margin-bottom:12px;
  padding:8px;
  border-radius:8px;
  box-shadow:0 2px 8px #1720330a;
}
.admin-body .v1-admin-nav a { padding:6px 10px; border-radius:999px; font-size:12px; }
.admin-task-center { margin-bottom:12px; padding:14px; border:2px solid #93c5fd; border-radius:8px; background:#f8fbff; }
.admin-task-center h2 { margin:2px 0 6px; font-size:18px; }
.admin-task-intro { margin:0 0 10px; color:#4b5565; }
.admin-task-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.admin-task-link { display:grid; gap:3px; min-width:0; padding:10px 12px; border:1px solid #cbd5e1; border-left:5px solid #2563eb; border-radius:7px; color:#172033; background:#fff; text-decoration:none; }
.admin-task-link:hover,.admin-task-link:focus-visible { border-color:#2563eb; box-shadow:0 2px 8px #2563eb24; }
.admin-task-link.is-reservation { border-left-color:#15803d; }
.admin-task-link.is-change { border-left-color:#2563eb; }
.admin-task-link.is-diagnostic { border-left-color:#7c3aed; }
.admin-task-link strong { font-size:14px; }
.admin-task-link span { color:#687386; font-size:12px; line-height:1.45; }
.admin-body .admin-section[data-v1-panel] { padding-top:46px; scroll-margin-top:116px; }
.admin-body .admin-section[data-v1-panel]::before { padding:7px 12px; border-radius:7px 7px 0 0; font-size:12px; }
.admin-body .login-shell { min-height:100dvh; padding:18px; background:#f6f7f9; }
.admin-body .login-card { width:min(480px,100%); padding:24px; }
.admin-body .login-card::before { content:"予約管理"; display:block; margin:-24px -24px 20px; padding:11px 16px; color:#172033; border-bottom:1px solid var(--v1-admin-line); background:#fff; font-weight:800; }
.admin-body .manage-hero,
.admin-body .sales-hero {
  padding:14px;
  color:var(--v1-admin-text);
  border:1px solid var(--v1-admin-line);
  border-radius:8px;
  background:#fff;
  box-shadow:none;
}
.admin-body .manage-hero h1,
.admin-body .sales-hero h1 { font-size:20px; }
.admin-body .manage-hero .eyebrow,
.admin-body .sales-hero .eyebrow { color:var(--v1-admin-muted); }

.v1-slot-override-grid { display:grid; gap:12px; }
.v1-slot-override-card { overflow:hidden; border:1px solid #cbd3df; border-left:5px solid #2563eb; border-radius:7px; background:#fff; }
.v1-slot-override-card.is-closed { border-left-color:#c24155; }
.v1-slot-override-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 12px; border-bottom:1px solid #d8dde6; background:#f4f6f9; }
.v1-slot-override-heading > div { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.v1-slot-override-heading strong { font-size:15px; }
.v1-slot-override-heading span,.v1-slot-override-heading small { color:#687386; }
.v1-slot-save-check { padding:4px 7px; border:1px solid #bfdbfe; border-radius:5px; color:#1e40af; background:#eff6ff; }
.v1-slot-override-fields { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; }
.v1-slot-override-fields fieldset { display:grid; align-content:start; gap:7px; min-width:0; margin:0; padding:10px 12px 12px; border:0; border-right:1px solid #e1e5eb; }
.v1-slot-override-fields fieldset:last-child { border-right:0; }
.v1-slot-override-fields legend { padding:0 4px; color:#4b5565; font-size:12px; font-weight:800; }
.v1-slot-override-fields label { display:grid; gap:3px; color:#4b5565; font-size:12px; font-weight:700; }
.v1-slot-override-fields input,
.v1-slot-override-fields select,
.v1-slot-override-fields textarea { width:100%; min-width:0; padding:7px; border:1px solid #c7cfdb; border-radius:5px; background:#fff; font:inherit; }
.v1-slot-override-fields .checkbox-label { display:flex; align-items:center; }
.v1-slot-override-fields .checkbox-label input { width:auto; }
.v1-slot-pair { display:grid; grid-template-columns:1fr 1fr; gap:7px; }
.v1-slot-override-fields .v1-slot-wide { grid-column:1/-1; grid-template-columns:minmax(180px,.8fr) minmax(210px,.8fr) minmax(260px,1.4fr) auto; align-items:end; border-top:1px solid #e1e5eb; border-right:0; }
.v1-slot-override-actions { display:flex; justify-content:flex-end; padding:8px 12px; border-top:1px solid #e1e5eb; background:#fafbfc; }
.v1-slot-override-actions .small-button { color:#334155; border:1px solid #cbd3df; background:#fff; }
.v1-day-slot-selector { grid-template-columns:minmax(210px,1fr) minmax(180px,.8fr); align-items:end; margin:14px 0 8px; }
.v1-day-slot-build-row { display:flex; gap:12px; align-items:center; margin:8px 0; padding:10px 12px; border:1px solid #9dbbe8; border-radius:8px; background:#f4f8ff; }
.v1-day-slot-build-row form { flex:0 0 auto; margin:0; }
.v1-day-slot-build-row p { margin:0; color:#31425f; font-size:.9rem; }
.v1-build-launch-status { flex-basis:100%; color:#174ea6 !important; font-weight:700; }
.v1-build-url-setup { display:grid; grid-template-columns:minmax(260px,1fr) auto; gap:8px; align-items:end; }
.v1-day-slot-apply-note { margin:0 0 14px; padding:10px 12px; border-left:4px solid #2d65d7; border-radius:6px; background:#eef5ff; color:#31425f; font-size:.92rem; }
.v1-build-exclusion-box { margin:12px 0; padding:14px 16px; border:1px solid #e9c667; border-radius:8px; background:#fff9df; }
.v1-build-exclusion-box label { font-weight:800; }
.v1-build-exclusion-box p { margin:7px 0 10px; color:#6b6250; font-size:13px; }
.v1-add-slot-row { grid-template-columns:170px auto auto; align-items:end; margin:14px 0; }
.success-button { color:#08735b !important; border-color:#8fd5c1 !important; background:#f2fffa !important; }
.danger-button { color:#b4233c !important; border-color:#edb1bc !important; background:#fff7f8 !important; }
.v1-day-slot-scroll { display:flex; gap:10px; overflow-x:auto; align-items:flex-start; padding:4px 2px 15px; scroll-snap-type:x proximity; }
.v1-day-slot-card { flex:0 0 245px; min-width:245px; overflow:hidden; border:2px solid #aeb7c4; border-top-width:7px; border-radius:8px; background:#f4f6f8; scroll-snap-align:start; }
.v1-day-slot-card.is-open { border-color:#2563eb; background:#eaf2ff; }
.v1-day-slot-card.is-closed { border-color:#d74454; background:#fff0f1; }
.v1-day-slot-card.is-unreleased { border-color:#9aa5b1; background:#eef1f4; }
.v1-day-slot-card > header { display:flex; justify-content:space-between; gap:8px; align-items:center; padding:10px 11px; border-bottom:1px solid #cbd3df; background:#fff9; }
.v1-day-slot-card > header strong { font-size:18px; }
.v1-day-slot-card .v1-slot-status { min-width:58px; padding:4px 8px; border-radius:999px; color:#fff; text-align:center; font-size:12px; font-weight:900; }
.v1-day-slot-card.is-open .v1-slot-status { background:#2563eb; }
.v1-day-slot-card.is-closed .v1-slot-status { background:#d74454; }
.v1-day-slot-card.is-unreleased .v1-slot-status { background:#7b8794; }
.v1-slot-setting-state { margin:8px 10px 0; color:#4b5870; font-size:12px; font-weight:800; }
.v1-day-slot-form { display:grid; gap:8px; padding:10px; }
.v1-day-slot-form label { display:grid; gap:3px; color:#4b5565; font-size:12px; font-weight:750; }
.v1-day-slot-form input,.v1-day-slot-form select,.v1-day-slot-form textarea { width:100%; min-width:0; padding:7px; border:1px solid #c7cfdb; border-radius:5px; background:#fff; font:inherit; }
.v1-day-slot-form .checkbox-label { display:flex; align-items:center; gap:7px; }
.v1-day-slot-form .checkbox-label input { width:auto; }
.v1-day-slot-form details { border-top:1px solid #e1e5eb; padding-top:7px; }
.v1-day-slot-form details summary { color:#285bd4; font-size:12px; font-weight:800; cursor:pointer; }
.v1-day-slot-form details[open] { display:grid; gap:8px; }
.v1-day-slot-reset { padding:0 10px 10px; }
.v1-day-slot-reset button { width:100%; }
.v1-daily-area-panel { margin-top:10px; padding:14px; border:1px solid #a9d9ca; border-radius:8px; background:#f3fcf8; }
.v1-daily-area-panel > h3 { margin:0 0 6px; }
.v1-daily-area-panel > p { margin:0 0 12px; color:#596778; }
.v1-daily-area-row { display:grid; gap:10px; padding:12px 0; border-top:1px solid #cee7df; }
.v1-daily-area-row > div:first-child { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.v1-daily-area-row span { color:#536273; }
.v1-daily-area-actions { display:flex; gap:7px; flex-wrap:wrap; }
.v1-daily-area-actions form { margin:0; }
.v1-slot-batch-bar { position:sticky; z-index:20; bottom:8px; display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:12px; padding:9px 12px; border:1px solid #93c5fd; border-radius:7px; background:#eff6ffed; box-shadow:0 4px 16px #17203318; }
.v1-slot-batch-bar span { color:#1e3a8a; font-size:12px; font-weight:700; }
.calendar-change-steps { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0 14px; padding:0; counter-reset:calendar-change-step; list-style:none; }
.calendar-change-steps li { padding:7px 10px; border:1px solid #bfdbfe; border-radius:6px; color:#1e3a8a; background:#eff6ff; font-size:13px; font-weight:700; }
.calendar-change-steps li::before { counter-increment:calendar-change-step; content:counter(calendar-change-step) ". "; }
.calendar-change-preview { margin-top:14px; padding:12px; border:2px solid #2563eb; border-radius:8px; background:#f8fbff; }
.calendar-change-preview h3 { margin-top:0; }
.calendar-change-apply-form { margin-top:12px; }
.calendar-change-customer-message { margin:14px 0; padding:14px; border:2px solid #15803d; border-radius:8px; background:#f0fdf4; }
.calendar-change-customer-message h3 { margin-top:0; }
.calendar-change-customer-message textarea { width:100%; min-height:240px; margin:8px 0; resize:vertical; }
.calendar-change-customer-message .muted { margin-left:8px; }
.always-open-panel { padding-top:12px; }
.always-open-panel h3 { margin-top:0; }
.v1-day-reservation-actions { display:flex!important; align-items:flex-end; min-width:210px; }
.v1-day-reservation-actions .primary-action { color:#fff; border-color:#2563eb; background:#2563eb; }
.admin-db-update-note { display:grid; gap:4px; margin:10px 0 14px; padding:12px; border:2px solid #2563eb; border-radius:8px; color:#1e3a8a; background:#eff6ff; }
.admin-db-update-note span { font-size:13px; line-height:1.55; }

@media (max-width:900px) {
  .admin-task-grid { grid-template-columns:1fr 1fr; }
  .v1-slot-override-fields { grid-template-columns:1fr 1fr; }
  .v1-slot-override-fields .v1-slot-wide { grid-template-columns:1fr 1fr; }
}
@media (max-width:700px) {
  .admin-body .admin-header { position:relative; align-items:flex-start; padding:10px 12px; }
  .admin-body .admin-account { align-items:flex-start; flex-direction:row; justify-content:flex-start; }
  .admin-body .admin-page { padding:12px 8px 32px; }
  .admin-body .admin-section { padding:10px; }
  .admin-body .v1-admin-nav { top:0; overflow-x:auto; flex-wrap:nowrap; }
  .admin-body .v1-admin-nav a { flex:0 0 auto; }
  .admin-task-grid { grid-template-columns:1fr; }
  .v1-day-reservation { align-items:stretch; flex-direction:column; }
  .v1-day-reservation-actions { align-items:stretch; min-width:0; }
  .admin-body .admin-section[data-v1-panel] { padding-top:42px; }
  .v1-slot-override-fields,.v1-slot-override-fields .v1-slot-wide { grid-template-columns:1fr; }
  .v1-slot-override-fields fieldset { border-right:0; border-bottom:1px solid #e1e5eb; }
  .v1-slot-override-heading > div { align-items:flex-start; flex-direction:column; gap:5px; }
  .v1-slot-batch-bar { align-items:stretch; flex-direction:column; }
  .v1-day-slot-selector,.v1-add-slot-row,.v1-build-url-setup { grid-template-columns:1fr; }
  .v1-day-slot-build-row { align-items:stretch; flex-direction:column; }
  .v1-day-slot-card { flex-basis:220px; min-width:220px; }
}
@media print {
  @page { size: A4 portrait; margin: 10mm; }
  body { color: #000; background: #fff; font-size: 9pt; }
  .report-toolbar, #report-status { display: none !important; }
  .sales-report-page { width: 100%; padding: 0; }
  .report-heading { margin: 0 0 5mm; }
  .sales-report-table th, .sales-report-table td { padding: 2.5mm 1.5mm; }
  .sales-report-table tr { break-inside: avoid; }
  .sales-report-table tbody tr:nth-child(13n) { break-after: page; }
}
