/* Original prototype alignment and high-visibility public-form action. */
.row-btn.public-form-button {
    border-color: #16856b;
    background: #16856b;
    color: #fff;
    font-weight: 800;
    box-shadow: 0 4px 12px rgba(22, 133, 107, .22);
}
.row-btn.public-form-button:hover {
    border-color: #0f6f59;
    background: #0f6f59;
    transform: translateY(-1px);
}
.row-btn.copy-url-button { border-color:#2b4e72; color:#2b4e72; background:#fff; }
.row-btn.copy-url-button:hover,.row-btn.copy-url-button.copied { border-color:#2b8a65; color:#fff; background:#2b8a65; }

.public-reservation-page { background: #f3f6f9; }
.reservation-hero {
    min-height: 0;
    padding: 44px 20px 60px;
    text-align: center;
}
.reservation-hero .eyebrow {
    font-size: 11.5px;
    font-weight: 800;
    letter-spacing: .22em;
}
.reservation-hero h1 {
    max-width: 920px;
    margin: 10px auto 0;
    font-size: 26px;
    line-height: 1.45;
}
.reservation-meta {
    justify-content: center;
    gap: 18px;
    margin-top: 16px;
    font-size: 12.5px;
}
.reservation-wrap {
    width: auto;
    max-width: 640px;
    margin: -32px auto 60px;
    padding: 0 20px;
}
.reservation-card {
    margin-bottom: 20px;
    padding: 32px;
    border-radius: 16px;
}
.entry-progress {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 16px;
    padding: 13px 18px;
    border: 1px solid #dce5ec;
    border-radius: 12px;
    background: rgba(255,255,255,.96);
    box-shadow: 0 5px 16px rgba(16, 38, 58, .06);
}
.entry-progress > span {
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border-radius: 50%;
    background: var(--navy);
    color: #fff;
    font-weight: 800;
}
.entry-progress div { display: grid; gap: 2px; text-align: left; }
.entry-progress b { color: #172b3a; font-size: 14px; }
.entry-progress small { color: #73808a; font-size: 11.5px; }
.public-exhibits > div { display: grid; gap: 10px; }
.public-exhibits article {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 12px 14px;
    border: 1px solid #e1e7ec;
    border-radius: 10px;
    background: #f8fafb;
}
.public-exhibits article small { color: #6e7b85; }

@media (max-width: 680px) {
    .reservation-hero { padding: 36px 18px 52px; }
    .reservation-hero h1 { font-size: 22px; }
    .reservation-meta { align-items: center; flex-direction: column; gap: 7px; }
    .reservation-wrap { margin-top: -26px; padding: 0 14px; }
    .reservation-card { padding: 23px 20px; }
}

.complete-page .complete-wrap { margin-top: 40px; }
.complete-actions { display: grid; gap: 12px; margin: 24px 0 14px; }
.complete-actions .btn { min-height: 50px; justify-content: center; font-size: 14px; }
.qr-download-button {
    border-color: #16856b;
    background: #16856b;
    color: #fff;
    box-shadow: 0 6px 16px rgba(22, 133, 107, .22);
}
.qr-download-button:hover { border-color: #0f6f59; background: #0f6f59; }
.finish-application-button { border-color: #9aa6af; background: #fff; color: #384a57; }
.finish-application-button:hover { border-color: #657580; background: #f3f6f8; }
.ticket-preview { margin-top: 24px; padding: 12px; border: 1px solid #dbe3e8; border-radius: 12px; background: #eef2f4; }
.ticket-preview canvas { display: block; width: 100%; height: auto; background: #fff; box-shadow: 0 4px 18px rgba(27, 44, 57, .12); }
.application-finished { display: grid; min-height: 100vh; padding: 24px; place-items: center; background: #f3f6f9; text-align: center; }
.application-finished div { width: min(480px, 100%); padding: 48px 30px; border-radius: 18px; background: #fff; box-shadow: 0 14px 40px rgba(25, 46, 62, .12); }
.application-finished span { display: grid; width: 58px; height: 58px; margin: 0 auto 18px; place-items: center; border-radius: 50%; background: #16856b; color: #fff; font-size: 28px; }
.application-finished h1 { margin: 0 0 10px; color: #172b3a; font-size: 24px; }
.application-finished p { margin: 0; color: #6d7a84; }

/* Admin screens use the full available width. */
.main .content { width: 100%; max-width: 100%; }
.reservation-detail-table { min-width: 1720px; }
.assignment-detail { min-width: 250px; text-align: left !important; }
.assignment-detail span { display: grid; grid-template-columns: 36px 1fr; gap: 5px; margin: 3px 0; color: #526170; font-size: 10px; line-height: 1.45; }
.assignment-detail b { color: #173b5e; }
.customer-code-button { min-width: 92px; padding: 5px 9px; color: #98621a; font: 800 11px inherit; background: #fff6e6; border: 1px solid #ebd2a4; border-radius: 7px; }
.customer-code-button.registered { color: #234e7b; background: #edf4fb; border-color: #c8d9e9; }
.qr-ticket-link { display: block; width: max-content; margin: 6px auto 0; color: #fff; background: #16856b; border-color: #16856b; }
.modal-dialog.compact { max-width: 520px; }
.customer-code-target { display: grid; gap: 3px; margin-bottom: 16px; padding: 13px 15px; background: #f2f5f7; border-radius: 9px; }
.customer-code-target b { color: #172b3a; }
.customer-code-target span { color: #697681; font-size: 12px; }
.reservation-summary-grid { display: grid; grid-template-columns: repeat(5, minmax(150px, 1fr)); gap: 14px; margin-bottom: 20px; }
.reservation-summary-grid article { padding: 20px; background: #fff; border: 1px solid var(--line); border-radius: 11px; box-shadow: 0 3px 13px rgba(21,37,55,.04); }
.reservation-summary-grid article.attention { border-color: #edd4a9; background: #fffaf1; }
.reservation-summary-grid span,.reservation-summary-grid p { color: #71808c; font-size: 11px; font-weight: 700; }
.reservation-summary-grid strong { display: block; margin: 6px 0 2px; color: #173b5e; font-size: 30px; line-height: 1.2; }
.reservation-summary-grid strong small { margin-left: 4px; font-size: 13px; }
.reservation-summary-grid p { margin: 0; font-weight: 500; }
.reservation-status-panel { margin-bottom: 20px; }
.reservation-status-panel table { width: 100%; min-width: 760px; border-collapse: collapse; }
.reservation-status-panel th,.reservation-status-panel td { padding: 13px 16px; text-align: center; border-bottom: 1px solid #edf0f3; }
.reservation-status-panel th { color: #697681; font-size: 11px; background: #f7f9fa; }
.program-status-name { display: inline-flex; align-items: center; gap: 9px; }
.program-status-name i { width: 11px; height: 32px; background: var(--program-color); border-radius: 4px; }

@media (max-width: 1100px) { .reservation-summary-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 680px) { .reservation-summary-grid { grid-template-columns: 1fr 1fr; } }

/* 検索入力欄の幅指定をチェックボックスへ適用しない。 */
.reservation-filter .reservation-check-filter {
    display: inline-flex; align-items: center; gap: 8px;
    min-height: 42px; margin: 0; padding: 6px 0;
    flex: 0 1 auto; min-width: 0; font-weight: 700; cursor: pointer;
}
.filter-bar.reservation-filter {
    flex-wrap: nowrap; align-items: center; gap: 10px; overflow-x: auto;
}
.reservation-filter .reservation-check-filter { flex: 0 0 auto; white-space: nowrap; }
.reservation-filter .reservation-check-filter-top { flex-basis: auto; }
.reservation-filter .reservation-check-filter { order: 5; }
.reservation-filter > .tally { order: 6; }
.proxy-registration-dialog { width: min(1000px, 96vw); max-width: 96vw; max-height: 96vh; padding: 0; border: 0; border-radius: 12px; overflow: hidden; }
.proxy-registration-dialog::backdrop { background: rgba(15, 25, 40, .55); }
.proxy-registration-dialog .modal-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; }
.proxy-registration-dialog h2 { margin: 0; font-size: 20px; }
.proxy-registration-dialog .modal-head .btn { min-width: 88px; min-height: 44px; font-size: 14px; }
.proxy-registration-dialog iframe { display: block; width: 100%; height: min(760px, calc(75vh - 64px)); min-height: 420px; border: 0; }
.filter-bar.reservation-filter > input[type="search"] {
    flex: 1 0 180px; width: 180px; min-width: 180px;
}
.filter-bar.reservation-filter > select {
    flex: 0 0 145px; width: 145px; min-width: 145px; max-width: 145px;
}
.filter-bar.reservation-filter > .tally { flex: 0 0 auto; white-space: nowrap; }
.reservation-filter .reservation-check-filter input[type="checkbox"] {
    appearance: auto; flex: 0 0 18px; width: 18px; min-width: 18px;
    max-width: 18px; height: 18px; min-height: 18px; padding: 0; margin: 0;
    accent-color: var(--navy); cursor: pointer;
}
.reservation-filter .reservation-check-filter span { line-height: 1.5; }

/* ダッシュボードから既存画面へ直接移動できる導線。 */
.welcome-panel .quick-actions { grid-template-columns: repeat(3,minmax(150px,1fr)); }
.dashboard-master-links { margin-bottom: 24px; }
.dashboard-master-links nav { display: flex; flex-wrap: wrap; gap: 10px; padding: 18px 22px; }
.dashboard-master-links nav a { padding: 10px 16px; color: var(--navy); font-size: 14px; font-weight: 800; background: #f5f7f9; border: 1px solid var(--line); border-radius: 8px; }
.dashboard-master-links nav a:hover { background: #eaf0f5; }
.event-row .event-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; max-width: 390px; }

/* QR予約票の取得済み状態を濃色にして視認性を上げる。 */
.qr-state.done { color: #fff; background: #167452; border: 1px solid #0f6043; }

@media(max-width:900px) { .event-row .event-actions { grid-column: 2; justify-content: flex-start; max-width: none; } }

/* 元reservation_form.htmlの中央揃えヘッダー。 */
.reservation-hero-original { background: linear-gradient(160deg,#1B3A5C 0%,var(--navy) 70%); color:#fff; padding:44px 20px 60px; text-align:center; }
.reservation-hero-original .reservation-organizer { margin:0; font-size:18px; font-weight:700; color:#fff; }
.reservation-hero-original h1 { margin:10px auto 0; width:100%; max-width:920px; text-align:center; font-size:26px; font-weight:900; line-height:1.5; }
.reservation-hero-original .reservation-original-meta { display:flex; justify-content:center; align-items:center; gap:12px 24px; margin-top:16px; font-size:16px; font-weight:500; color:#fff; flex-wrap:wrap; line-height:1.7; }
.reservation-original-meta span { display:block; }

.reservation-hero-readable .reservation-organizer { margin: 0 0 12px; color: #fff; font-size: 20px; font-weight: 700; }
.reservation-hero-readable h1 { font-size: clamp(23px,3vw,32px); line-height: 1.5; }
.reservation-hero-readable h1 small { display: block; margin-top: 6px; font-size: 18px; }
.reservation-event-facts { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 16px; max-width: 1000px; margin: 24px auto 0; padding: 20px; border-radius: 10px; background: #fff; color: #172b3a; text-align: left; }
.reservation-event-facts dt { margin-bottom: 6px; color: #536477; font-size: 14px; font-weight: 700; }
.reservation-event-facts dd { margin: 0; font-size: 19px; line-height: 1.6; font-weight: 800; overflow-wrap: anywhere; }
@media(max-width:700px) { .reservation-event-facts { grid-template-columns: 1fr; gap: 14px; padding: 16px; } }

/* イベント選択はラベル・選択欄を同じ行へ。 */
.reservation-event-selector { flex-direction: row; align-items: center; gap: 14px; }
.reservation-event-selector > label { display: flex; align-items: center; gap: 10px; min-width: 0; white-space: nowrap; }
.reservation-event-selector select { flex: 1; min-width: 0; width: auto; }
.reservation-event-selector > a { flex-shrink: 0; }
.filter-bar.reservation-filter { display: block; overflow: visible; padding: 16px; }
.reservation-filter-fields { display: grid; grid-template-columns: minmax(200px,1.5fr) repeat(4,minmax(130px,1fr)); gap: 12px; }
.reservation-filter .reservation-filter-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; margin: 0; }
.reservation-filter-field > span { font-size: 12px; font-weight: 700; color: var(--muted); }
.reservation-filter .reservation-filter-field input,
.reservation-filter .reservation-filter-field select { width: 100%; min-width: 0; max-width: none; height: 42px; flex: none; }
.reservation-filter-options { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 22px; border-top: 1px solid var(--line); margin-top: 14px; padding-top: 12px; }
.reservation-filter-options .reservation-view-toolbar { display: inline-flex; justify-content: flex-start; gap: 10px; margin: 0; }
.reservation-filter-options .reservation-check-filter { order: 0; }
.reservation-filter-options .tally { margin-left: auto; white-space: nowrap; }
@media(max-width:1100px) { .reservation-filter-fields { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@media(max-width:650px) { .reservation-filter-fields { grid-template-columns: repeat(2,minmax(0,1fr)); } .reservation-event-selector > a { max-width: 110px; white-space: normal; } }

/* List alignment: text left, quantities centered (headers and body).
   Column rules also apply to rows rebuilt by filtering / QR reception JS. */
.main .table-wrap table th,
.main .table-wrap table td {
    text-align: left;
}
.main .table-wrap .row-actions {
    justify-content: flex-start;
}
.main .table-wrap .event-date-range,
.main .table-wrap .event-time-range {
    justify-content: flex-start;
}
/* Master numbers and user counts; login IDs and customer codes remain text. */
.main .table-wrap .master-table[data-master-type="departments"] :is(th, td):nth-child(1),
.main .table-wrap .master-table[data-master-type="departments"] :is(th, td):nth-child(3),
.main .table-wrap .master-table[data-master-type="sections"] :is(th, td):nth-child(1),
/* Event program/session counts, attendance target, reservation count. */
.main .table-wrap .event-table :is(th, td):nth-child(5),
.main .table-wrap .event-table :is(th, td):nth-child(6),
.main .table-wrap .event-table :is(th, td):nth-child(7),
/* Company view is also regenerated by JS. */
.main .table-wrap .reservation-table.company :is(th, td):nth-child(4),
/* Last three columns are quantities in both department and section modes. */
.main .table-wrap .department-summary-table :is(th, td):nth-last-child(-n+3),
.main .table-wrap .program-summary-table :is(th, td):nth-child(4) {
    text-align: center;
    font-variant-numeric: tabular-nums;
}

/* 予約状況の担当部署別集計表は部署・課名を左寄せ。 */
.main .table-wrap .department-summary-table :is(th, td):nth-child(1),
.main .table-wrap .department-summary-table :is(th, td):nth-child(2) {
    text-align: left;
}

/* Dashboard: three shortcuts and prominent event attendance numbers. */
.event-list .event-row { grid-template-columns:78px minmax(0,1fr) auto; }
.event-list .event-date { grid-column:1; grid-row:1 / 3; }
.event-list .event-info { grid-column:2; grid-row:1; min-width:0; }
.event-list .event-info > div { flex-wrap:wrap; }
.event-list .dashboard-event-numbers { grid-column:2; grid-row:2; display:flex; flex-wrap:wrap; gap:12px; }
.dashboard-event-number { min-width:160px; border:1px solid #cbd7e4; border-radius:10px; background:#f0f5fa; padding:12px 20px; text-align:center; }
.dashboard-event-number > span { display:block; color:#334f6c; font-weight:700; font-size:14px; }
.dashboard-event-number > strong { display:block; color:#173b5e; font-size:32px; font-weight:800; line-height:1.4; font-variant-numeric:tabular-nums; }
.dashboard-event-number strong small { font-size:15px; margin-left:6px; }
.dashboard-event-number > small { display:block; font-size:12px; color:#47715c; }
.dashboard-event-number.reserved { background:#e9f6ef; border-color:#8ac5a5; }
.dashboard-event-number.reserved > span,.dashboard-event-number.reserved > strong { color:#176b44; }
.event-list .event-row .event-actions { grid-column:3; grid-row:1 / 3; }
@media(max-width:1100px) {
    .event-list .event-row { grid-template-columns:60px minmax(0,1fr); }
    .event-list .event-row .event-actions { grid-column:2; grid-row:3; justify-content:flex-start; max-width:none; }
}
@media(max-width:650px) {
    .welcome-panel .quick-actions { grid-template-columns:1fr; }
    .event-list .dashboard-event-numbers { grid-column:1 / -1; }
    .event-list .event-date { grid-row:1; }
    .dashboard-event-number { min-width:0; flex:1; padding:12px 10px; }
    .dashboard-event-number > strong { font-size:28px; }
    .event-list .event-row .event-actions { grid-column:1 / -1; }
}

/* パスワード欄の表示切り替えボタン。 */
.password-input-wrap { position: relative; }
.password-input-wrap input { padding-right: 76px !important; }
.password-toggle { position: absolute; top: 50%; right: 8px; transform: translateY(-50%); min-height: 30px; padding: 0 9px; color: #526173; font-size: 11px; font-weight: 800; background: #f7f9fb; border: 1px solid #cfd7df; border-radius: 6px; }
.password-toggle:hover { background: #eef2f6; }

/* 展示内容の出展メーカー選択。 */
.manufacturer-picker { min-width: 0; }
.manufacturer-picker-button { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; min-height: 44px; padding: 8px 11px; color: #657386; text-align: left; background: #fff; border: 1px solid #cfd7df; border-radius: 8px; }
.manufacturer-picker-button:hover { border-color: var(--orange); background: #fffaf6; }
.manufacturer-picker-button.selected { color: #253449; border-color: #9fb5c9; background: #f7fafc; }
.manufacturer-picker-button span { min-width: 0; overflow: hidden; font-size: 13px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.manufacturer-picker-button small { flex: 0 0 auto; color: #8a96a3; font-size: 10px; font-weight: 600; }
.manufacturer-picker-dialog { width: min(620px, 100%); }
.manufacturer-picker-body { overflow-y: auto; padding: 22px 24px 4px; }
.manufacturer-search-field { display: grid; gap: 7px; color: #3d4b5f; font-size: 13px; font-weight: 800; }
.manufacturer-search-field input { width: 100%; height: 44px; padding: 0 11px; border: 1px solid #cfd7df; border-radius: 8px; outline: 0; }
.manufacturer-search-field input:focus { border-color: var(--orange); box-shadow: 0 0 0 3px rgba(232,120,50,.12); }
.manufacturer-option-list { display: grid; gap: 7px; max-height: 390px; margin-top: 16px; overflow-y: auto; }
.manufacturer-option { display: flex; align-items: center; width: 100%; min-height: 44px; padding: 9px 12px; color: #253449; text-align: left; font-size: 13px; font-weight: 700; background: #fff; border: 1px solid #dbe2e8; border-radius: 8px; }
.manufacturer-option:hover { color: #9a4d18; background: #fff7f0; border-color: #e7b28e; }
.manufacturer-picker-empty { margin: 18px 0; color: #788593; font-size: 12px; text-align: center; }

/* マスタ画面では入力欄と切替ボタンを横並びにして、文字が重ならないようにする。 */
.data-form .password-input-wrap { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; margin-top: 6px; }
.data-form .password-input-wrap input { min-width: 0; margin-top: 0 !important; padding-right: 11px !important; }
.data-form .password-toggle { position: static; transform: none; min-height: 44px; white-space: nowrap; }
.event-field .optional-label { margin-left: 7px; color: #6b7784; font-size: 12px; font-weight: 700; }

/* 代理登録フォームはタブレット操作を想定し、入力欄・選択肢・ボタンを大きくする。 */
.proxy-registration-page .reservation-wrap {
    width: min(980px, 100%);
    padding: 0 24px;
}
.proxy-registration-page .reservation-card {
    margin-bottom: 16px;
    padding: 26px 30px;
    border-radius: 12px;
}
.proxy-registration-page .reservation-card h2 { font-size: 19px; }
.proxy-registration-page .reservation-card > p { margin-bottom: 20px; font-size: 13px; }
.proxy-registration-page .public-grid { gap: 16px; }
.proxy-registration-page .public-field { gap: 8px; margin-bottom: 18px; }
.proxy-registration-page .public-field span { font-size: 15px; }
.proxy-registration-page .public-field input {
    min-height: 54px;
    height: 54px;
    padding: 0 15px;
    font-size: 16px;
}
.proxy-registration-page .public-field small { font-size: 12px; line-height: 1.5; }
.proxy-registration-page .optional-label {
    display: inline-block;
    margin-left: 7px;
    color: #6b7784;
    font-size: 12px;
    font-weight: 700;
}
.proxy-registration-page .visit-date-options {
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 12px;
}
.proxy-registration-page .visit-date-options label,
.proxy-registration-page .visit-only-option {
    min-height: 58px;
    padding: 14px 16px;
    gap: 13px;
    font-size: 15px;
}
.proxy-registration-page .visit-date-options input,
.proxy-registration-page .visit-only-option input,
.proxy-registration-page .booking-session input {
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
}
.proxy-registration-page .visit-date-options small,
.proxy-registration-page .visit-only-option small { font-size: 12px; }
.proxy-registration-page .booking-program { margin: 16px 0; }
.proxy-registration-page .booking-program > header { padding: 14px 16px; }
.proxy-registration-page .booking-program > header b { font-size: 15px; }
.proxy-registration-page .booking-program > header small { font-size: 12px; }
.proxy-registration-page .booking-session {
    grid-template-columns: 24px minmax(0, 1fr) auto;
    min-height: 64px;
    padding: 14px 16px;
    gap: 13px;
    font-size: 15px;
}
.proxy-registration-page .booking-session small { font-size: 12px; line-height: 1.5; }
.proxy-registration-page .availability {
    width: 42px;
    height: 42px;
    font-size: 18px;
}
.proxy-registration-page .availability.closed { width: auto; padding: 0 10px; font-size: 11px; }
.proxy-registration-page .privacy-agree {
    gap: 12px;
    margin-bottom: 22px;
    font-size: 14px;
    line-height: 1.7;
}
.proxy-registration-page .privacy-agree input {
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
    margin-top: 2px;
}
.proxy-registration-page .reservation-submit {
    min-height: 58px;
    padding: 14px 18px;
    font-size: 17px;
    cursor: pointer;
}
.proxy-registration-dialog iframe { height: min(900px, calc(86vh - 64px)); }
@media (max-width: 700px) {
    .proxy-registration-page .reservation-wrap { padding: 0 14px; }
    .proxy-registration-page .reservation-card { padding: 22px 18px; }
    .proxy-registration-page .public-grid { grid-template-columns: 1fr; gap: 0; }
    .proxy-registration-page .visit-date-options { grid-template-columns: 1fr; }
    .proxy-registration-page .reservation-hero-original { padding: 24px 16px 30px; }
    .proxy-registration-page .reservation-hero-original h1 { font-size: 21px; }
    .proxy-registration-page .reservation-original-meta { font-size: 14px; }
}

/* 得意先マスタ取込・候補選択。候補は参照専用で、予約へのCD紐づけだけを行う。 */
.customer-import-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(280px, .8fr); gap: 18px; margin-bottom: 18px; }
.customer-import-panel, .customer-import-status, .customer-import-flow { overflow: hidden; }
.customer-import-form { padding: 24px 26px 26px; }
.customer-import-form input[type="file"] { height: auto; min-height: 48px; padding: 11px; }
.customer-import-form label small { display: block; margin: 7px 0 0; line-height: 1.6; }
.customer-import-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; margin: 18px 0 14px; padding: 14px 15px; background: #f6f8fa; border-radius: 9px; }
.customer-import-columns span { grid-column: 1 / -1; color: #657386; font-size: 12px; font-weight: 800; }
.customer-import-columns b { color: #253449; font-size: 12px; }
.customer-import-help { margin: 0; color: #697681; font-size: 12px; line-height: 1.7; }
.customer-import-form .form-actions { margin-top: 20px; }
.customer-import-status .panel-head { margin-bottom: 0; }
.customer-import-stat { display: grid; grid-template-columns: auto auto; align-items: baseline; column-gap: 6px; padding: 28px 26px 18px; }
.customer-import-stat strong { color: var(--navy-2); font-size: 42px; line-height: 1; font-variant-numeric: tabular-nums; }
.customer-import-stat span { color: #526170; font-size: 16px; font-weight: 800; }
.customer-import-stat small { grid-column: 1 / -1; margin-top: 7px; color: #697681; font-size: 12px; }
.customer-import-meta { margin: 0; padding: 0 26px 22px; }
.customer-import-meta > div { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 10px; padding: 9px 0; border-top: 1px solid #edf0f3; }
.customer-import-meta dt { color: #6b7784; font-size: 11px; font-weight: 700; }
.customer-import-meta dd { margin: 0; color: #253449; font-size: 12px; overflow-wrap: anywhere; }
.customer-import-flow { margin-bottom: 22px; }
.customer-import-flow ol { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 0; padding: 22px 26px 26px 44px; }
.customer-import-flow li { padding-left: 5px; color: #253449; }
.customer-import-flow li b { display: block; font-size: 13px; }
.customer-import-flow li span { display: block; margin-top: 5px; color: #697681; font-size: 11px; line-height: 1.6; }
.customer-code-dialog { width: min(680px, 100%); }
.customer-code-dialog .modal-form { padding-bottom: 0; }
.customer-search-field { display: grid; gap: 7px; }
.customer-search-field input { min-height: 48px; height: 48px; font-size: 15px; }
.customer-search-field small { color: #6b7784; font-size: 11px; line-height: 1.6; }
.customer-candidate-status { min-height: 22px; margin: 6px 0 4px; color: #6b7784; font-size: 12px; }
.customer-candidate-list { display: grid; gap: 8px; max-height: 310px; overflow-y: auto; }
.customer-candidate { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; min-height: 52px; padding: 10px 13px; color: #253449; text-align: left; background: #fff; border: 1px solid #d6dee6; border-radius: 8px; }
.customer-candidate:hover, .customer-candidate:focus-visible { background: #fff8f1; border-color: #e3a173; outline: 0; }
.customer-candidate b { min-width: 0; overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.customer-candidate span { color: #647184; font-size: 11px; white-space: nowrap; }
.customer-selected { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px; margin-top: 13px; padding: 12px 13px; color: #1b5e4b; background: #edf8f3; border: 1px solid #b9dfcf; border-radius: 8px; }
.customer-selected span { font-size: 11px; font-weight: 700; }
.customer-selected b { min-width: 0; overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.customer-selected strong { color: #176b50; font-size: 13px; font-variant-numeric: tabular-nums; }
.customer-selected-rep { grid-column: 1 / -1; display: flex; align-items: center; gap: 9px; padding-top: 8px; border-top: 1px solid #cfe8dc; }
.customer-selected-rep span { color: #526b61; font-size: 11px; font-weight: 700; }
.customer-selected-rep strong { color: #176b50; font-size: 13px; font-variant-numeric: tabular-nums; }
.customer-clear-button { margin-top: 10px; padding: 7px 10px; color: #8b5960; font-size: 11px; font-weight: 800; background: #fff; border: 1px solid #e5c9cd; border-radius: 6px; }
.customer-clear-button:hover { background: #fff4f4; }
.customer-none-option { display: flex!important; align-items: center; gap: 9px; margin-top: 14px; padding: 12px 13px; color: #526170; font-size: 12px!important; font-weight: 800!important; background: #f7f8fa; border: 1px solid #dce2e8; border-radius: 8px; cursor: pointer; }
.customer-none-option input { width: 19px; height: 19px; flex: 0 0 auto; margin: 0; accent-color: var(--navy-2); }
.customer-none-option:has(input:checked) { color: #234e7b; background: #edf4fb; border-color: #b8cde2; }
.assignee-summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; padding: 16px 18px 20px; }
.assignee-summary-card { overflow: hidden; background: #fbfcfd; border: 1px solid #e1e7ec; border-radius: 10px; }
.assignee-summary-card h3 { margin: 0; padding: 14px 16px 0; color: #253449; font-size: 15px; }
.assignee-summary-card > p { margin: 2px 16px 11px; color: #758195; font-size: 11px; }
.assignee-summary-card .table-wrap { overflow-x: auto; }
.main .assignee-summary-card .assignee-summary-table { min-width: 0; }
.main .assignee-summary-card .assignee-summary-table th,
.main .assignee-summary-card .assignee-summary-table td { padding: 11px 13px; }
.main .assignee-summary-card .assignee-summary-table th:first-child,
.main .assignee-summary-card .assignee-summary-table td:first-child { text-align: left; }
.main .assignee-summary-card .assignee-summary-table th:not(:first-child),
.main .assignee-summary-card .assignee-summary-table td:not(:first-child) { text-align: center; font-variant-numeric: tabular-nums; }
.main .reservation-status-panel .assignee-summary-table { min-width: 520px; }
.main .reservation-status-panel .assignee-summary-table th:first-child,
.main .reservation-status-panel .assignee-summary-table td:first-child { text-align: left; }
.main .reservation-status-panel .assignee-summary-table th:not(:first-child),
.main .reservation-status-panel .assignee-summary-table td:not(:first-child) { text-align: center; font-variant-numeric: tabular-nums; }
@media (max-width: 900px) {
    .customer-import-grid { grid-template-columns: 1fr; }
    .customer-import-flow ol { grid-template-columns: 1fr; gap: 10px; }
}
@media (max-width: 650px) {
    .customer-import-form { padding: 20px 18px 22px; }
    .customer-import-columns { grid-template-columns: 1fr; }
    .customer-import-meta { padding-left: 18px; padding-right: 18px; }
    .customer-import-stat { padding-left: 18px; padding-right: 18px; }
    .customer-import-flow ol { padding: 18px 18px 22px 35px; }
    .customer-candidate { grid-template-columns: 1fr; gap: 3px; }
    .customer-candidate span { white-space: normal; }
    .customer-selected { grid-template-columns: 1fr; gap: 3px; }
    .assignee-summary-grid { grid-template-columns: 1fr; padding: 12px 14px 16px; }
}

/* Sidebar master navigation toggle */
.nav-section-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: calc(100% - 24px);
    padding: 0 0 0 12px;
    color: #8294a8;
    font: inherit;
    text-align: left;
    background: transparent;
    border: 0;
    cursor: pointer;
}
.nav-section-toggle:hover { color: #fff; }
.nav-section-chevron {
    display: inline-grid;
    width: 24px;
    height: 24px;
    place-items: center;
    color: #9fb0c1;
    font-size: 16px;
    line-height: 1;
    transition: transform .18s ease;
}
.nav-section-toggle[aria-expanded="true"] .nav-section-chevron { transform: rotate(180deg); }
.nav-section-items { overflow: hidden; }
.nav-section-items[hidden] { display: none; }
.nav-section-items .nav-item { padding-left: 21px; }

/* 一覧ページング */
.list-pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin: 10px 12px 12px;
    padding: 9px 10px 9px 14px;
    color: #617084;
    font-size: 12px;
    background: linear-gradient(135deg, #f8fafc, #f3f6f9);
    border: 1px solid #e3e8ee;
    border-radius: 12px;
}
.list-pagination label { display: inline-flex; align-items: center; gap: 8px; color: #718096; font-size: 11px; font-weight: 800; }
.list-pagination select {
    min-height: 32px;
    padding: 0 28px 0 10px;
    color: #26384e;
    font: 800 12px inherit;
    background: #fff;
    border: 1px solid #d7dfe7;
    border-radius: 8px;
    outline: none;
}
.list-pagination select:focus { border-color: var(--orange); box-shadow: 0 0 0 3px rgba(232,120,50,.12); }
.list-pagination [data-page-label] { flex: 1; min-width: 145px; color: #35485e; font-size: 11px; font-weight: 800; text-align: center; }
.list-pagination button {
    min-height: 32px;
    padding: 0 12px;
    color: #40546b;
    font: 800 11px inherit;
    background: #fff;
    border: 1px solid #d7dfe7;
    border-radius: 8px;
    cursor: pointer;
    transition: border-color .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.list-pagination button:hover:not(:disabled) { color: var(--orange); border-color: #e6a77c; box-shadow: 0 4px 10px rgba(35,53,73,.08); transform: translateY(-1px); }
.list-pagination button:disabled { color: #aab4c0; background: #f1f4f7; border-color: #e3e8ee; cursor: not-allowed; }
.public-field textarea, .event-field textarea { box-sizing: border-box; width: 100%; min-height: 112px; padding: 11px 13px; color: #253449; font-family: inherit; font-size: 14px; line-height: 1.6; background: #fff; border: 1px solid #cfd7df; border-radius: 8px; outline: 0; resize: vertical; }
.public-field textarea:focus, .event-field textarea:focus { border-color: var(--orange); box-shadow: 0 0 0 3px rgba(232,120,50,.12); }
.reservation-extra { min-width: 190px; max-width: 280px; text-align: left !important; white-space: normal; }
.arrival-note { white-space: pre-wrap; }

/* 予約一覧は固定レイアウトで折り返し、企業名の長さで横スクロールを発生させない。 */
.reservation-detail-table {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
    white-space: normal;
    font-size: 12px;
}
.reservation-detail-table th,
.reservation-detail-table td {
    padding: 8px 7px;
    white-space: normal;
    overflow-wrap: anywhere;
}
.reservation-detail-table th:nth-child(1) { width: 9%; }
.reservation-detail-table th:nth-child(2) { width: 13%; }
.reservation-detail-table th:nth-child(3) { width: 8%; }
.reservation-detail-table th:nth-child(4) { width: 11%; }
.reservation-detail-table th:nth-child(5) { width: 7%; }
.reservation-detail-table th:nth-child(6) { width: 8%; }
.reservation-detail-table th:nth-child(7) { width: 8%; }
.reservation-detail-table th:nth-child(8) { width: 12%; }
.reservation-detail-table th:nth-child(9) { width: 6%; }
.reservation-detail-table th:nth-child(10) { width: 7%; }
.reservation-detail-table th:nth-child(11) { width: 5%; }
.reservation-detail-table th:nth-child(12) { width: 6%; }
.reservation-detail-table .assignment-detail,
.reservation-detail-table .reservation-extra { min-width: 0; max-width: none; }
.reservation-detail-table .assignment-detail span { grid-template-columns: 28px minmax(0, 1fr); }
.reservation-detail-table .customer-code-button { width: 100%; min-width: 0; padding: 5px 3px; }
.reservation-detail-table .qr-ticket-link { width: 100%; max-width: 100%; }
.reservation-detail-table .row-actions { flex-wrap: wrap; gap: 4px; }
.reservation-detail-table .row-actions .row-btn { padding: 4px 6px; }
.reservation-table.company { width: 100%; min-width: 0; table-layout: fixed; white-space: normal; }
.reservation-table.company th,
.reservation-table.company td { white-space: normal; overflow-wrap: anywhere; }
.reservation-table.company th:nth-child(1) { width: 28%; }
.reservation-table.company th:nth-child(2) { width: 18%; }
.reservation-table.company th:nth-child(3) { width: 14%; }
.reservation-table.company th:nth-child(4) { width: 10%; }
.reservation-table.company th:nth-child(5) { width: 30%; }

/* サイドバー分の表示幅を少し広げ、本文に使える幅を増やす。 */
@media (min-width: 761px) {
    .sidebar { width: 220px; }
    .main { margin-left: 220px; }
}
@media (max-width: 620px) {
    .list-pagination { justify-content: center; flex-wrap: wrap; gap: 8px; margin-inline: 8px; }
    .list-pagination label { order: 1; }
    .list-pagination [data-page-label] { flex: 0 0 100%; min-width: 110px; order: 3; }
    .list-pagination button { order: 2; }
}
