*{box-sizing:border-box;margin:0;padding:0}
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
input[type=number]{-moz-appearance:textfield}
body{font-family:'Segoe UI','Hiragino Sans',sans-serif;background:#f0f2f5;color:#222;display:flex;min-height:100vh}
.sidebar{width:220px;min-width:220px;background:#1e2d3d;color:#fff;display:flex;flex-direction:column;padding:0}
.logo{padding:20px 16px;border-bottom:1px solid #2d4257}
.logo h1{font-size:16px;font-weight:600}
.logo p{font-size:11px;color:#7a9bb5;margin-top:2px}
.nav{padding:12px 0;display:flex;flex-direction:column;flex:1}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;font-size:13px;color:#9ab;transition:all .15s;border-left:3px solid transparent}
.nav-item:hover{background:#2d4257;color:#fff}
.nav-item.active{background:#2d4257;color:#5b9bd5;border-left-color:#5b9bd5;font-weight:600}
.main{flex:1;overflow-y:auto}
.page{display:none;padding:24px}
.page.active{display:block}
.page-title{font-size:20px;font-weight:600;margin-bottom:4px}
.page-sub{font-size:13px;color:#888;margin-bottom:20px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.stat{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.stat-label{font-size:12px;color:#888;margin-bottom:6px}
.stat-val{font-size:24px;font-weight:700}
.card{background:#fff;border-radius:10px;padding:20px;box-shadow:0 1px 3px rgba(0,0,0,.08);margin-bottom:16px}
.card-title{font-size:14px;font-weight:600;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;padding:8px 12px;background:#f8f9fa;color:#555;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;border-bottom:2px solid #eee}
td{padding:9px 12px;border-bottom:1px solid #f0f0f0;vertical-align:middle}
tr:hover td{background:#fafbfc}
.badge{display:inline-block;padding:2px 8px;border-radius:9999px;font-size:11px;font-weight:600}
.badge-active{background:#ffedd5;color:#c2410c}
.badge-completed{background:#dcfce7;color:#15803d}
.badge-available{background:#dcfce7;color:#15803d}
.badge-rented{background:#fef3c7;color:#b45309}
.badge-maintenance{background:#fee2e2;color:#b91c1c}
.badge-pending{background:#f3f4f6;color:#6b7280}
.badge-sent{background:#dbeafe;color:#1d4ed8}
.badge-paid{background:#dcfce7;color:#15803d}
.btn{padding:6px 14px;border-radius:6px;border:1px solid #d1d5db;background:#fff;cursor:pointer;font-size:12px;transition:all .15s}
.btn:hover{background:#f3f4f6}
.btn-primary{background:#2563eb;color:#fff;border-color:#2563eb}
.btn-primary:hover{background:#1d4ed8}
.btn-danger{background:#dc2626;color:#fff;border-color:#dc2626}
.btn-danger:hover{background:#b91c1c}
.btn-success{background:#15803d;color:#fff;border-color:#15803d}
.btn-success:hover{background:#166534}
.btn-warning{background:#d97706;color:#fff;border-color:#d97706}
.btn-warning:hover{background:#b45309}
.btn-sm{padding:3px 8px;font-size:11px}
.btn-xs{padding:2px 6px;font-size:10px}
.btn-doc{padding:1px 5px;font-size:10px;border-radius:3px;border:1px solid #9ca3af;background:#f3f4f6;color:#374151;cursor:pointer;white-space:nowrap;line-height:1.6}
.btn-doc:hover{background:#e5e7eb;border-color:#6b7280}
.btn-action-start{display:block;width:100%;padding:5px 10px;font-size:12px;font-weight:700;color:#fff;background:#16a34a;border:none;border-radius:6px;box-shadow:0 2px 4px rgba(0,0,0,.18);cursor:pointer;white-space:nowrap;text-align:center;margin-bottom:4px}
.btn-action-start:hover{background:#15803d;box-shadow:0 3px 6px rgba(0,0,0,.22)}
.btn-action-return{display:block;width:100%;padding:5px 10px;font-size:12px;font-weight:700;color:#fff;background:#ea580c;border:none;border-radius:6px;box-shadow:0 2px 4px rgba(0,0,0,.18);cursor:pointer;white-space:nowrap;text-align:center;margin-bottom:4px}
.btn-action-return:hover{background:#c2410c;box-shadow:0 3px 6px rgba(0,0,0,.22)}
.warn-bar{height:5px;border-radius:3px;background:#e5e7eb;margin-top:4px;overflow:hidden}
.warn-fill{height:100%;border-radius:3px}
.modal-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:100;align-items:center;justify-content:center;overflow-y:auto;padding:20px}
.modal-bg.open{display:flex}
.modal{background:#fff;border-radius:12px;padding:28px;width:700px;max-height:90vh;overflow-y:auto;margin:auto}
.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
#modal-res .modal-header{margin-bottom:10px}
.modal-title{font-size:17px;font-weight:600}
.close-btn{width:32px;height:32px;border-radius:50%;border:none;background:#f3f4f6;color:#374151;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-group{display:flex;flex-direction:column;gap:5px}
.form-group label{font-size:12px;font-weight:600;color:#555}
.form-group input,.form-group select,.form-group textarea{padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;font-family:inherit}
.form-group input:focus,.form-group select:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.15)}
.form-group input[readonly]{background:#f8f9fa;color:#888}
.modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;padding-top:16px;border-top:1px solid #eee}
.form-tab{padding:8px 16px;font-size:13px;cursor:pointer;color:#888;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .15s;user-select:none}
.form-tab:hover{color:#2563eb}
.form-tab.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}
.sec-label{font-size:11px;font-weight:600;color:#888;margin:16px 0 10px;text-transform:uppercase;letter-spacing:.5px}
.sec-label:first-child{margin-top:0}
/* ===== Reservation form sections ===== */
.rf-section{margin-bottom:10px;border-radius:7px;overflow:hidden}
.rf-sec-hd{padding:6px 13px;font-size:12px;font-weight:700;letter-spacing:.3px}
.rf-sec-bd{padding:10px 13px 12px}
/* ===== Vehicle form sections ===== */
.vf-sec{border-radius:6px;overflow:hidden}
.vf-sec-hd{font-size:11px;font-weight:700;padding:5px 10px;letter-spacing:.02em}
.vf-sec-bd{padding:7px 10px 8px}
.vf-sec-blue{border:1px solid #bfdbfe}.vf-sec-blue .vf-sec-hd{background:#dbeafe;color:#1e40af}.vf-sec-blue .vf-sec-bd{background:#f0f7ff}
.vf-sec-green{border:1px solid #bbf7d0}.vf-sec-green .vf-sec-hd{background:#dcfce7;color:#15803d}.vf-sec-green .vf-sec-bd{background:#f0fdf4}
.vf-sec-yellow{border:1px solid #fde68a}.vf-sec-yellow .vf-sec-hd{background:#fef9c3;color:#854d0e}.vf-sec-yellow .vf-sec-bd{background:#fefce8}
.vf-sec-red{border:1px solid #fecaca}.vf-sec-red .vf-sec-hd{background:#fee2e2;color:#991b1b}.vf-sec-red .vf-sec-bd{background:#fff5f5}
.vf-sec-gray{border:1px solid #e5e7eb}.vf-sec-gray .vf-sec-hd{background:#f3f4f6;color:#374151}.vf-sec-gray .vf-sec-bd{background:#f9fafb}
.vf-sec-orange{border:1px solid #fed7aa}.vf-sec-orange .vf-sec-hd{background:#ffedd5;color:#9a3412}.vf-sec-orange .vf-sec-bd{background:#fff7ed}
.vf-sec-cert{border:1px solid #94a3b8}
.vf-sec-cert .vf-sec-hd{background:#1e2d3d;color:#fff;text-align:center;font-size:12px;letter-spacing:.12em}
.vf-sec-cert .vf-sec-bd{background:#fff;padding:0}
.vf-cert-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));border-top:1px solid #cbd5e1;border-left:1px solid #cbd5e1}
.vf-cert-cell{min-width:0;min-height:46px;border-right:1px solid #cbd5e1;border-bottom:1px solid #cbd5e1;padding:4px;background:#fff}
.vf-cert-cell.span-2{grid-column:span 2}
.vf-cert-cell.span-3{grid-column:span 3}
.vf-cert-cell.span-4{grid-column:span 4}
.vf-cert-cell.span-5{grid-column:span 5}
.vf-cert-cell.span-8{grid-column:1 / -1}
.vf-cert-cell label{display:block;font-size:9px;font-weight:700;color:#334155;line-height:1.2;margin-bottom:3px}
.vf-cert-cell label span[style*="#dc2626"],.vf-cert-ops .rff-lbl span[style*="#dc2626"]{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;margin-left:3px;border-radius:50%;background:#dc2626;color:#fff!important;font-size:10px;font-weight:800;line-height:1}
.vehicle-required-legend{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid #fecaca;background:#fef2f2;border-radius:999px;color:#991b1b;font-size:11px;font-weight:700;white-space:nowrap}
.vehicle-required-legend span{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:#dc2626;color:#fff;font-size:11px;line-height:1}
.vf-cert-cell .rff-inp,.vf-cert-readonly{height:26px;border:0;border-radius:0;padding:2px 3px;font-size:11px;background:#fff;box-shadow:none;line-height:22px}
.vf-cert-cell.is-wide .rff-inp,.vf-cert-cell.is-wide .vf-cert-readonly{font-size:12px}
.vf-cert-readonly{color:#64748b;background:#f8fafc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vf-required-note{background:#fff7ed;border:1px solid #fed7aa;border-radius:6px;color:#9a3412;font-size:11px;font-weight:600;margin-bottom:6px;padding:6px 8px}
.vf-cert-ops{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px 8px;margin-top:8px}
.vf-option-flags{display:flex;align-items:end;gap:10px;flex-wrap:wrap;font-size:12px;grid-column:span 6;padding-top:2px}
.vf-option-flags label{display:flex;align-items:center;gap:4px;cursor:pointer}
.vf-cert-grid-input .rff-inp:required:invalid,.vf-cert-ops .rff-sel:required:invalid{background:#fff7ed;border-color:#f59e0b}
.vf-cert-grid-input .vf-cert-cell:has(.rff-inp:required:invalid){background:#fffaf0}
.vf-cert-cell:has(.fv-error){background:#fff5f5;box-shadow:inset 0 0 0 1px #ef4444}
.vehicle-ocr-photo-prompt{margin-bottom:12px;border:1px solid #fde68a;background:#fffbeb;border-radius:8px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vehicle-ocr-photo-title{font-size:12px;font-weight:700;color:#92400e;margin-bottom:3px}
.vehicle-ocr-photo-sub{font-size:11px;color:#78350f;line-height:1.5}
.vehicle-ocr-photo-actions{display:flex;gap:6px;flex-wrap:wrap;flex-shrink:0}
.vehicle-photo-layout{display:grid;grid-template-columns:minmax(220px,260px) minmax(180px,1fr);gap:14px;align-items:start}
.vehicle-photo-main{min-width:0}
.vehicle-photo-side{font-size:11px;color:#6b7280;line-height:1.7;margin-top:2px;min-width:0}
.vehicle-photo-qr-panel{margin-top:8px;border:1px solid #bfdbfe;background:#eff6ff;border-radius:8px;padding:9px;max-width:100%}
.rff-grp{display:flex;flex-direction:column;gap:2px}
.rff-lbl{font-size:11px;font-weight:600;color:#555;line-height:1.2}
.rff-inp,.rff-sel{height:32px;padding:0 7px;border:1px solid #d1d5db;border-radius:5px;font-size:13px;font-family:inherit;width:100%;box-sizing:border-box}
.rff-sel{font-size:12px}
.rff-inp:focus,.rff-sel:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.15)}
.rff-inp[readonly]{background:#f8f9fa;color:#888}
.num-input{font-variant-numeric:tabular-nums;text-align:right}
.unit-input{position:relative;display:inline-flex;align-items:center;flex:1;min-width:0}
.unit-input .rff-inp{padding-right:32px}
.unit-input .input-unit{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:700;color:#6b7280;pointer-events:none}
.unit-input.mileage-input{flex:0 0 126px;width:126px}
.unit-input.money-input{min-width:130px}
.trip-mileage-pill{display:inline-flex;align-items:center;justify-content:flex-end;min-height:32px;min-width:154px;padding:0 10px;border:1px solid #bbf7d0;border-radius:6px;background:#f0fdf4;color:#15803d;font-size:12px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.trip-mileage-pill.is-muted{justify-content:flex-start;border-color:#e5e7eb;background:#f9fafb;color:#6b7280;font-weight:600}
.trip-mileage-pill.is-error{justify-content:flex-start;border-color:#fecaca;background:#fef2f2;color:#dc2626;font-weight:700}
.name-jp{ime-mode:active}
.amount-box-sm{background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;padding:6px 10px;font-size:12px}
.amount-box-sm .amount-row{display:flex;justify-content:space-between;margin-bottom:2px}
.amount-box-sm .amount-total{display:flex;justify-content:space-between;font-size:13px;font-weight:700;color:#000;margin-top:4px;padding-top:4px;border-top:1px solid #bae6fd}
.rf-sec-blue{border:1px solid #bfdbfe}
.rf-sec-blue .rf-sec-hd{background:#dbeafe;color:#1e40af}
.rf-sec-yellow{border:1px solid #fcd34d}
.rf-sec-yellow .rf-sec-hd{background:#fef3c7;color:#92400e}
.rf-sec-green{border:1px solid #86efac}
.rf-sec-green .rf-sec-hd{background:#dcfce7;color:#166534}
.rf-sec-red{border:1px solid #fca5a5}
.rf-sec-red .rf-sec-hd{background:#fee2e2;color:#b91c1c}
.rf-sec-gray{border:1px solid #e5e7eb}
.rf-sec-gray .rf-sec-hd{background:#f3f4f6;color:#374151}
.rf-sec-orange{border:1px solid #fed7aa}
.rf-sec-orange .rf-sec-hd{background:#ffedd5;color:#9a3412}
.form-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 12px}
.form-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px 10px}
.alert-warn{background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;padding:10px 14px;font-size:12px;color:#92400e;margin-bottom:14px}
.amount-box{background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;padding:12px;margin-top:12px;font-size:13px}
.amount-row{display:flex;justify-content:space-between;margin-bottom:4px}
.amount-total{display:flex;justify-content:space-between;font-size:15px;font-weight:700;color:#2563eb;margin-top:8px;padding-top:8px;border-top:1px solid #bae6fd}
.confirm-box{background:#f8f9fa;border-radius:8px;padding:16px;margin-top:16px;font-size:13px}
.confirm-row{display:flex;gap:8px;margin-bottom:6px;align-items:flex-start}
.confirm-label{font-weight:600;color:#555;min-width:100px;flex-shrink:0;font-size:12px}
.ref-calc{background:#fef9ee;border:1px solid #fcd34d;border-radius:8px;padding:10px;margin-top:8px;font-size:13px}
.filter-bar{display:flex;gap:8px;margin-bottom:14px}
.filter-btn{padding:5px 12px;border-radius:20px;border:1px solid #d1d5db;background:#fff;cursor:pointer;font-size:12px;transition:all .15s}
.filter-btn:hover{background:#f3f4f6}
.filter-btn.active{background:#2563eb;color:#fff;border-color:#2563eb}
.invoice-grid{display:flex;justify-content:space-between;margin-bottom:24px}
/* Document print styles */
.doc-wrap{border:1px solid #eee;border-radius:8px;padding:28px;font-size:13px}
.doc-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;padding-bottom:16px;border-bottom:2px solid #2563eb}
.doc-title{font-size:28px;font-weight:300;color:#2563eb;letter-spacing:4px}
.doc-meta{text-align:right;font-size:12px;color:#555;line-height:1.8}
.doc-company{font-size:15px;font-weight:600}
.doc-to{margin-bottom:20px}
.doc-to-name{font-size:16px;font-weight:600;margin-bottom:2px}
.doc-to-sub{font-size:12px;color:#555}
.doc-table{width:100%;border-collapse:collapse;margin-bottom:14px}
.doc-table th{text-align:left;padding:8px 10px;background:#f8f9fa;border-bottom:2px solid #eee;font-size:12px}
.doc-table td{padding:9px 10px;border-bottom:1px solid #f0f0f0;font-size:13px}
.doc-totals{text-align:right;margin-top:12px}
.doc-total-line{margin-bottom:4px;font-size:13px;color:#555}
.doc-grand-total{font-size:20px;font-weight:700;color:#2563eb;margin-top:8px}
.doc-bank{margin-top:20px;padding:12px;background:#f8f9fa;border-radius:6px;font-size:12px}
/* ===== FAX送り状（画面表示） ===== */
.fax-outer{border:3px solid #333;padding:20px 24px;max-width:190mm;margin:0 auto;background:#fff;font-family:'Meiryo','Hiragino Kaku Gothic Pro','Hiragino Sans',sans-serif}
.fax-title{font-size:22px;font-weight:700;text-align:center;letter-spacing:6px;margin-bottom:14px;border-bottom:3px double #333;padding-bottom:10px}
.fax-meta-tbl{width:100%;border-collapse:collapse;margin-bottom:10px}
.fax-field-tbl{width:100%;border-collapse:collapse;margin-bottom:2px}
.fax-sec-hdr{font-size:12px;font-weight:700;background:#e8e8e8;padding:4px 8px;margin:10px 0 2px;border-left:4px solid #333}
.fax-th{font-size:12px;font-weight:600;background:#f5f5f5;border:1px solid #999;padding:5px 8px;white-space:nowrap;width:72px;text-align:left}
.fax-td{font-size:13px;border:1px solid #999;padding:5px 8px}
.fax-alert-row td{background:#fef2f2;color:#dc2626;font-weight:700;font-size:12px;padding:5px 8px;border:1px solid #fca5a5}
.fax-subject{border:1px solid #999;padding:8px 10px;font-size:13px;font-weight:600;margin-bottom:2px}
.fax-docs{border:1px solid #999;padding:8px 12px;font-size:13px}
.fax-doc-item{margin-bottom:4px;line-height:1.6}
.fax-msg{padding:10px 12px;border:1px solid #999;min-height:80px;font-size:12px;line-height:2}
/* 旧クラス互換 */
.fax-border{border:3px solid #333;padding:24px}
.fax-lbl{font-weight:600;min-width:80px;font-size:13px}
.fax-val{flex:1;border-bottom:1px solid #333;padding:2px 4px;font-size:14px}
.dispatch-header{text-align:center;margin-bottom:20px;padding-bottom:16px;border-bottom:2px solid #1e2d3d}
.dispatch-title{font-size:24px;font-weight:700;letter-spacing:6px;color:#1e2d3d}
.dispatch-sec{margin-bottom:16px;padding:12px;border:1px solid #ddd;border-radius:4px}
.dispatch-sec-title{font-size:12px;font-weight:700;color:#555;background:#f8f9fa;padding:4px 8px;border-radius:3px;margin-bottom:10px;letter-spacing:1px}
.dispatch-row{display:flex;gap:8px;margin-bottom:6px}
.dispatch-lbl{font-weight:600;font-size:12px;color:#555;min-width:90px}
.dispatch-val{font-size:13px}
.sign-box{margin-top:24px;padding:16px;border:1px dashed #aaa;border-radius:4px}
.transport-table{width:100%;border-collapse:collapse;margin-top:12px}
.transport-table th{padding:8px;background:#1e2d3d;color:#fff;font-size:12px;text-align:center;border:1px solid #1e2d3d}
.transport-table td{padding:7px 10px;border:1px solid #ddd;font-size:12px;text-align:center}
.transport-table tr:nth-child(even) td{background:#f8f9fa}
.alert-danger{background:#fee2e2;border:1px solid #fca5a5;border-radius:8px;padding:10px 14px;font-size:12px;color:#b91c1c;margin-bottom:14px}
.method-card{border:2px solid #e5e7eb;border-radius:10px;padding:14px 18px;cursor:pointer;transition:all .2s;flex:1 1 180px;text-align:center}
.method-card:hover{border-color:#2563eb;background:#eff6ff}
.method-card.active{border-color:#2563eb;background:#eff6ff}
.method-card .mc-icon{font-size:24px;margin-bottom:6px}
.method-card .mc-title{font-size:13px;font-weight:600;color:#1e2d3d}
.method-card .mc-sub{font-size:11px;color:#888;margin-top:2px}
.qr-box{text-align:center;padding:24px;background:#f8f9fa;border-radius:10px}
.ocr-result-box{background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;padding:14px;margin-top:12px}
.ocr-missing-field{background:#fffbeb!important;border-color:#f59e0b!important;box-shadow:inset 0 0 0 1px #f59e0b!important}
.plate-trigger-wrap.ocr-missing-field{border-radius:6px;padding:2px}
.vf-cert-cell:has(.ocr-missing-field){background:#fffbeb;box-shadow:inset 0 0 0 1px #f59e0b}
.inspection-expired-field{background:#fef2f2!important;border-color:#dc2626!important;color:#991b1b!important;font-weight:700!important;box-shadow:inset 0 0 0 1px #dc2626!important}
.inspection-expired-cell{background:#fef2f2!important;box-shadow:inset 0 0 0 1px #dc2626!important}
.inspection-urgent-field{background:#fff7ed!important;border-color:#f59e0b!important;color:#92400e!important;font-weight:700!important}
.inspection-urgent-cell{background:#fff7ed!important}
/* --- Gantt chart --- */
.gantt-outer{display:flex;border:1px solid #e5e7eb;border-radius:8px;overflow-y:auto;overflow-x:hidden;background:#fff;max-height:min(760px,calc(100vh - 300px));scrollbar-gutter:stable}
.gantt-left{flex-shrink:0;width:160px;border-right:2px solid #e5e7eb;z-index:3;background:#fff}
.gantt-corner{height:60px;background:#f8f9fa;border-bottom:2px solid #e5e7eb;padding:0 12px;display:flex;align-items:center;font-size:11px;font-weight:600;color:#555;letter-spacing:.4px;position:sticky;top:0;z-index:4}
.gantt-label{height:58px;border-bottom:1px solid #f0f0f0;padding:0 12px;display:flex;flex-direction:column;justify-content:center;background:#fff}
.gantt-label:last-child{border-bottom:none}
.gantt-right{flex:1;overflow-x:auto;overflow-y:visible}
.gantt-date-row{display:flex;height:60px;border-bottom:2px solid #e5e7eb;position:sticky;top:0;background:#f8f9fa;z-index:2}
.gantt-date-cell{flex-shrink:0;width:40px;text-align:center;border-right:1px solid #eee;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;padding:2px 0;overflow:hidden}
.gantt-date-cell.today{background:#2563eb;color:#fff}
.gantt-date-cell.weekend{background:#fef9ee;color:#b45309}
/* --- Gantt ② holiday only (not a closed day) --- */
.gantt-date-cell.holiday{background:transparent;color:#dc2626}
.gantt-date-cell.holiday.today{background:#2563eb;color:#fff}
.gantt-cell.holiday-col{background:#fff5f5}
.gantt-cell.holiday-col:hover{background:rgba(220,38,38,.07)}
/* --- Gantt ③ closed day (not a holiday) --- */
.gantt-date-cell.closed{background:#f3f4f6;color:#9ca3af}
.gantt-cell.closed-col{background:rgba(243,244,246,.8)}
.gantt-cell.closed-col:hover{background:rgba(156,163,175,.12)}
/* --- Gantt ④ holiday + closed day --- */
.gantt-date-cell.holiday-closed{background:#f3f4f6;color:#dc2626}
.gantt-date-cell.holiday-closed.today{background:#2563eb;color:#fff}
.gantt-cell.holiday-closed-col{background:rgba(243,244,246,.8)}
.gantt-cell.holiday-closed-col:hover{background:rgba(156,163,175,.12)}
/* --- Gantt: 例外営業日 (open-exception) --- */
.gantt-date-cell.open-exception{background:#f0fdf4;color:#16a34a}
.gantt-date-cell.open-exception.today{background:#2563eb;color:#fff}
.gantt-cell.open-exception-col{background:rgba(240,253,244,.6)}
.gantt-cell.open-exception-col:hover{background:rgba(22,163,74,.06)}
/* legacy alias kept for safety */
.gantt-date-cell.sub-exception{background:#f0fdf4;color:#16a34a}
.gantt-date-cell.sub-exception.today{background:#2563eb;color:#fff}
.gantt-cell.sub-exception-col{background:rgba(240,253,244,.6)}
.gantt-cell.sub-exception-col:hover{background:rgba(22,163,74,.06)}
/* --- Gantt: 特別休業日 (sp-closed / manual special) --- */
.gantt-date-cell.sp-closed{background:#fff7ed;color:#ea580c}
.gantt-date-cell.sp-closed.today{background:#2563eb;color:#fff}
.gantt-cell.sp-closed-col{background:rgba(255,247,237,.8)}
.gantt-cell.sp-closed-col:hover{background:rgba(234,88,12,.07)}
/* --- Gantt: 毎週定休日 (weekday) — same gray as .closed --- */
.gantt-date-cell.weekday{background:#f3f4f6;color:#9ca3af}
.gantt-date-cell.weekday.today{background:#2563eb;color:#fff}
.gantt-cell.weekday-col{background:rgba(243,244,246,.8)}
.gantt-cell.weekday-col:hover{background:rgba(156,163,175,.12)}
/* --- Gantt: 振替特休 (substitute) --- */
.gantt-date-cell.substitute{background:#fffbeb;color:#d97706}
.gantt-date-cell.substitute.today{background:#2563eb;color:#fff}
.gantt-cell.substitute-col{background:rgba(255,251,235,.8)}
.gantt-cell.substitute-col:hover{background:rgba(217,119,6,.07)}
/* --- Day-type inline badges --- */
.gcl-badge{display:inline-block;font-size:6px;font-weight:700;padding:1px 3px;border-radius:2px;line-height:1.5;vertical-align:middle;margin-top:1px}
.gcl-badge-closed{background:#ea580c;color:#fff}
.gcl-badge-sub{background:#7c3aed;color:#fff}
.gcl-badge-tokyu{background:#d97706;color:#fff}
.gcl-badge-teikyu{background:#9ca3af;color:#fff}
.gcl-badge-furikae{background:#d97706;color:#fff}
.gcl-badge-open{background:#16a34a;color:#fff}
/* --- Gantt legend --- */
.gantt-legend{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:11px;color:#6b7280;padding:4px 2px;margin-bottom:6px}
.gantt-legend-item{display:flex;align-items:center;gap:3px}
/* ===== Year Calendar Modal ===== */
.ycal-outer{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media(max-width:900px){.ycal-outer{grid-template-columns:repeat(3,1fr)}}
@media(max-width:600px){.ycal-outer{grid-template-columns:repeat(2,1fr)}}
.ycal-month{border:1px solid #e5e7eb;border-radius:7px;padding:8px 6px}
.ycal-month-title{font-size:12px;font-weight:700;text-align:center;margin-bottom:4px;color:#374151}
.ycal-wk-hdr{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px}
.ycal-wh{font-size:8px;text-align:center;color:#9ca3af;line-height:16px}
.ycal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-bottom:1px}
.ycal-d{font-size:9px;text-align:center;height:22px;line-height:22px;border-radius:3px;position:relative;user-select:none}
.ycal-d.ycal-toggle{cursor:pointer}
.ycal-d.ycal-toggle:hover{opacity:.72;box-shadow:0 0 0 1.5px #2563eb inset}
.ycal-d.ycd-yc.ycal-toggle:hover{background:#fecaca!important;color:#dc2626!important;opacity:1!important;box-shadow:none!important}
.ycal-d.ycal-today{font-weight:700;box-shadow:0 0 0 2px #2563eb inset}
.ycal-d.ycd-hol{background:#fee2e2;color:#dc2626}
.ycal-d.ycd-both{background:#f3f4f6;color:#dc2626}
.ycal-d.ycd-wd{background:#f3f4f6;color:#9ca3af}
.ycal-d.ycd-sp{background:#fed7aa;color:#c2410c}
.ycal-d.ycd-yc{background:#fed7aa;color:#c2410c}
.ycal-d.ycd-sub{background:#fffbeb;color:#d97706}
.ycal-d.ycd-sub-ex{background:#f0fdf4;color:#16a34a}
.ycal-d.ycd-open-ex{background:#f0fdf4;color:#16a34a}
.ycal-open-badge{position:absolute;bottom:0;right:0;background:#16a34a;color:#fff;font-size:5px;padding:0 2px;border-radius:1px;line-height:1.6;pointer-events:none}
.ycal-opex-badge{position:absolute;bottom:0;right:0;background:#16a34a;color:#fff;font-size:5px;padding:0 2px;border-radius:1px;line-height:1.6;pointer-events:none}
.ycal-wd-badge{position:absolute;bottom:0;right:0;background:#9ca3af;color:#fff;font-size:5px;padding:0 2px;border-radius:1px;line-height:1.6;pointer-events:none}
.ycal-sub-badge{position:absolute;bottom:0;right:0;background:#d97706;color:#fff;font-size:5px;padding:0 2px;border-radius:1px;line-height:1.6;pointer-events:none}
.ycal-sp-badge{position:absolute;bottom:0;right:0;background:#ea580c;color:#fff;font-size:5px;padding:0 2px;border-radius:1px;line-height:1.6;pointer-events:none}
.ycal-yc-badge{position:absolute;bottom:0;right:0;background:#d97706;color:#fff;font-size:5px;padding:0 2px;border-radius:1px;line-height:1.6;pointer-events:none}
/* ===== Gantt date header popup ===== */
#gantt-date-popup{display:none;position:fixed;z-index:9999;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 6px 24px rgba(0,0,0,.15);padding:14px 16px;min-width:190px;max-width:260px}
/* ===== Gantt date header hover ===== */
.gantt-date-cell{cursor:pointer}
.gantt-date-cell:not(.today):hover{background:rgba(37,99,235,.06)}
/* ===== Res-detail drag hint ===== */
#rd-drag-hint{display:none;font-size:10px;color:#9ca3af;font-weight:400;white-space:nowrap;margin-left:8px}
/* --- Gantt seasonal period --- */
.gantt-date-cell.seasonal{background:#fff7ed;color:#b45309}
.gantt-cell.seasonal-col{background:rgba(251,146,60,.08)}
.gantt-cell.seasonal-col:hover{background:rgba(251,146,60,.15)}
.gantt-cell-row{display:flex;position:relative;height:58px;border-bottom:1px solid #f0f0f0}
.gantt-cell-row:last-child{border-bottom:none}
.gantt-cell{flex-shrink:0;width:40px;height:58px;border-right:1px solid #f5f5f5;cursor:pointer;transition:background .1s}
.gantt-cell:hover{background:rgba(37,99,235,.07)}
.gantt-cell.today-col{background:rgba(37,99,235,.04)}
.gantt-cell.weekend-col{background:rgba(251,191,36,.04)}
.gantt-bar{position:absolute;top:14px;height:30px;border-radius:4px;cursor:pointer;overflow:hidden;display:flex;align-items:center;padding:0 7px;z-index:1;border-width:1px;border-style:solid;transition:opacity .15s;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.gantt-bar:hover{opacity:.82;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.gantt-bar.open-ended-future{background:rgba(254,215,170,.36)!important;border-color:#fb923c!important;border-style:dashed!important;box-shadow:none;opacity:.72}
.gantt-bar.open-ended-future:hover{opacity:.9}
.gantt-bar.insurance-over{background:repeating-linear-gradient(135deg,rgba(254,226,226,.95) 0,rgba(254,226,226,.95) 8px,rgba(254,202,202,.95) 8px,rgba(254,202,202,.95) 14px)!important;border-color:#dc2626!important;color:#991b1b!important}
.gantt-bar.insurance-over span{color:#991b1b!important}
.gantt-bar.open-ended-future.insurance-over{background:repeating-linear-gradient(135deg,rgba(254,226,226,.45) 0,rgba(254,226,226,.45) 8px,rgba(254,202,202,.55) 8px,rgba(254,202,202,.55) 14px)!important;border-style:dashed!important;opacity:.78}
/* --- Status badges --- */
.badge-tentative{background:#f3f4f6;color:#6b7280;border:1px dashed #9ca3af}
.badge-reserved{background:#dbeafe;color:#1d4ed8}
.badge-returned{background:#dcfce7;color:#15803d}
.badge-invoiced{background:#ede9fe;color:#7c3aed}
/* --- Gantt buffer month (prev/next month days) --- */
.gantt-date-cell.buffer-month{color:#aab4c0}
.gantt-cell.buffer-month-col{background:#f7f8fa}
.gantt-cell.buffer-month-col:hover{background:rgba(37,99,235,.05)}
/* --- Gantt month boundary separator --- */
.gantt-date-cell.month-start{border-left:2px solid #9ca3af!important}
.gantt-cell.month-start-col{border-left:2px solid #d1d5db!important}
/* --- Gantt double-booking conflict bar --- */
.gantt-bar.conflict-bar{z-index:3;animation:conflict-pulse 1.4s ease-in-out infinite}
@keyframes conflict-pulse{0%,100%{opacity:1}50%{opacity:.65}}
/* --- Gantt tight-gap cell highlight --- */
.gantt-cell.tight-gap-red{background:rgba(220,38,38,.12)!important}
.gantt-cell.tight-gap-red:hover{background:rgba(220,38,38,.2)!important}
.gantt-cell.tight-gap-yellow{background:rgba(251,191,36,.18)!important}
.gantt-cell.tight-gap-yellow:hover{background:rgba(251,191,36,.28)!important}
/* --- Insurance limit overlay on gantt --- */
.gantt-cell.ins-period-cell{background:rgba(37,99,235,.1)!important}
.gantt-cell.ins-period-cell:hover{background:rgba(37,99,235,.18)!important}
.gantt-cell.ins-limit-cell{background:rgba(37,99,235,.22)!important;position:relative}
.gantt-cell.ins-over-cell{background:rgba(220,38,38,.07)!important}
.gantt-cell.ins-over-cell:hover{background:rgba(220,38,38,.13)!important}
.ins-limit-marker{position:absolute;bottom:1px;left:50%;transform:translateX(-50%);font-size:7px;color:#dc2626;background:#fff8f8;border:1px solid #fca5a5;border-radius:2px;padding:0 2px;line-height:13px;pointer-events:none;white-space:nowrap;z-index:3;font-weight:700}
/* --- Disabled form section (gray-out for inapplicable type) --- */
.sec-disabled{opacity:.52;pointer-events:none}
.sec-disabled .rf-sec-hd{background:#f3f4f6!important;color:#9ca3af!important}
.sec-disabled input,.sec-disabled select,.sec-disabled textarea{background:#f3f4f6!important;color:#b0b7c3!important}
.sec-disabled .rff-inp,.sec-disabled .rff-sel{background:#f3f4f6!important}
.rf-disabled-hint{display:none;font-size:10px;color:#9ca3af;font-style:italic;padding:3px 0 5px;gap:3px;align-items:center}
/* --- Bar drag-to-reschedule --- */
.gbar-hl,.gbar-hr{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:2;flex-shrink:0}
.gbar-hl{left:0;border-radius:4px 0 0 4px}
.gbar-hr{right:0;border-radius:0 4px 4px 0}
.gbar-hl:hover,.gbar-hr:hover{background:rgba(0,0,0,.15)}
.gantt-bar.bar-dragging{opacity:.28!important;pointer-events:none!important}
#gantt-bar-preview{position:fixed;pointer-events:none;z-index:9999;border-radius:4px;display:none;align-items:center;padding:0 10px;height:30px;font-size:10px;font-weight:600;border-width:2px;border-style:dashed;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.28);white-space:nowrap}
#gantt-bar-preview.preview-ok{border-style:solid}
#gantt-bar-preview.preview-conflict{background:#fee2e2!important;border-color:#dc2626!important;color:#b91c1c!important;border-style:solid!important}
.drop-ok-indicator{background:rgba(37,99,235,.13)!important}
.drop-conflict-indicator{background:rgba(220,38,38,.16)!important}
/* --- Gantt scroll arrow buttons --- */
.gantt-scroll-btn{position:absolute;top:25px;transform:translateY(-50%);z-index:20;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.92);border:1px solid #d1d5db;cursor:pointer;font-size:10px;box-shadow:0 2px 6px rgba(0,0,0,.18);transition:background .15s,border-color .15s;padding:0;display:flex;align-items:center;justify-content:center}
.gantt-scroll-btn:hover{background:#eff6ff;border-color:#93c5fd}
.gantt-scroll-btn-l{left:163px}
.gantt-scroll-btn-r{right:5px}
/* --- Gantt drag selection --- */
.gantt-drag-sel{background:#bfdbfe!important;outline:2px solid #3b82f6;outline-offset:-1px;z-index:0}
/* --- Sales page / Pricing page --- */
.tab-bar{display:flex;border-bottom:2px solid #e5e7eb;margin-bottom:20px}
.tab-btn{padding:8px 18px;font-size:13px;cursor:pointer;color:#888;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .15s;user-select:none;background:none;border-top:none;border-left:none;border-right:none}
.tab-btn:hover{color:#2563eb}
.tab-btn.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}
.rate-table{width:100%;border-collapse:collapse;font-size:13px}
.rate-table th{background:#f8f9fa;padding:8px 12px;font-size:11px;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.4px;border:1px solid #e5e7eb}
.rate-table td{padding:8px 12px;border:1px solid #e5e7eb;vertical-align:middle}
.rate-table tr:hover td{background:#fafbfc}
/* --- Depreciation sliders --- */
.range-wrap{display:flex;align-items:center;gap:10px}
.range-wrap input[type=range]{flex:1;accent-color:#2563eb}
.range-val{font-size:13px;font-weight:600;color:#2563eb;min-width:40px;text-align:right}
/* --- Today schedule on dashboard --- */
.today-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;background:#f8f9fa;margin-bottom:6px;font-size:13px}
.today-item:last-child{margin-bottom:0}
#print-area{display:none}

/* ===== 貸渡契約書（貸渡証）帳票スタイル ===== */
.rc-outer{border:3px double #333;font-family:'Meiryo','Hiragino Kaku Gothic Pro',sans-serif;font-size:11px;width:210mm;height:297mm;overflow:hidden;display:flex;flex-direction:column;padding:10mm 15mm;box-sizing:border-box;background:#fff}
.rc-title-row{display:flex;align-items:center;border-bottom:2px solid #333;padding:5px 10px;background:#fff}
.rc-no-cell{font-size:10px;color:#444;width:140px;white-space:nowrap}
.rc-title-cell{flex:1;text-align:center;font-size:15px;font-weight:700;letter-spacing:1px}
.rc-date-cell{font-size:10px;color:#333;width:150px;text-align:right;white-space:nowrap}
.rc-main-tbl{width:100%;border-collapse:collapse;flex:1}
.rc-main-tbl th,.rc-main-tbl td{border:1px solid #888;padding:3px 7px;vertical-align:middle;font-size:11px}
.rc-main-tbl th{background:#dde3ea;font-weight:700;white-space:nowrap;text-align:center;font-size:10px}
.rc-th-w40{width:40px}.rc-th-w50{width:50px}.rc-th-w60{width:60px}.rc-th-w70{width:70px}.rc-th-w80{width:80px}.rc-th-w90{width:90px}
.rc-co-cell{padding:6px 10px!important;line-height:1.7}
.rc-co-name{font-size:14px;font-weight:700;margin-bottom:1px}
.rc-plate{font-weight:700;font-size:13px}
.rc-section-hdr{background:#2d4257!important;color:#fff!important;font-weight:700;text-align:center;padding:4px 8px!important;font-size:10px!important;letter-spacing:3px}
.rc-notes-hdr{background:#333!important;color:#fff!important;font-weight:700;text-align:center;padding:3px 10px!important;font-size:10px!important;letter-spacing:3px}
.rc-notes-td{padding:6px 10px!important;vertical-align:top!important;line-height:1.75;font-size:10px;min-height:30mm}
.rc-notes-td div{margin-bottom:4px;padding-left:1em;text-indent:-1em}
.rc-sign-td{padding:8px 8px!important;vertical-align:top!important}
.rc-sign-label{font-size:9px;color:#555;margin-bottom:5px}
.rc-sign-field-lg{border:1px solid #888;height:52px}
.rc-seal-td{text-align:center}
.rc-seal-lg{width:56px;height:56px;border:1px solid #888;margin:0 auto}

/* ===== 請求書・納品書帳票スタイル ===== */
.inv-outer{border:2px solid #333;font-family:'Meiryo','Hiragino Kaku Gothic Pro',sans-serif;font-size:11px;width:210mm;height:297mm;overflow:hidden;display:flex;flex-direction:column;padding:10mm 15mm;box-sizing:border-box;background:#fff}
.inv-title-row{display:flex;align-items:center;border-bottom:2px solid #333;padding:5px 10px}
.inv-no-cell{font-size:10px;color:#444;width:160px;white-space:nowrap}
.inv-main-title{flex:1;text-align:center;font-size:18px;font-weight:700;letter-spacing:4px}
.inv-date-cell{font-size:10px;color:#333;width:160px;text-align:right;white-space:nowrap}
.inv-header{display:flex;justify-content:space-between;padding:10px 10px 6px;border-bottom:1px solid #888;gap:10px}
.inv-to-block{flex:1}
.inv-to-label{font-size:9px;color:#555;margin-bottom:2px}
.inv-to-name{font-size:16px;font-weight:700;border-bottom:1px solid #333;padding-bottom:3px;margin-bottom:4px}
.inv-to-sub{font-size:11px;color:#444;margin-bottom:2px}
.inv-to-case{font-size:10px;color:#666;margin-top:3px}
.inv-from-block{text-align:right;font-size:11px;line-height:1.8;min-width:200px}
.inv-from-name{font-size:14px;font-weight:700;margin-bottom:3px}
.inv-summary-box{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:#f5f5f0;border-bottom:1px solid #888;font-size:12px}
.inv-total-amount{font-size:13px;font-weight:700}
.inv-tbl{width:100%;border-collapse:collapse}
.inv-tbl th{background:#dde3ea;border:1px solid #888;padding:4px 8px;font-weight:700;text-align:center;font-size:10px}
.inv-tbl td{border:1px solid #888;padding:4px 8px;vertical-align:middle;font-size:11px}
.inv-sub-row td{background:#fafafa}
.inv-total-row td{background:#e8e0d0;font-weight:700;font-size:13px}
.inv-bank{padding:8px 10px;border-top:1px solid #888;font-size:11px;display:flex;align-items:center;gap:12px;flex-shrink:0}
.inv-bank-label{font-weight:700;color:#444;white-space:nowrap}
.inv-tbl-wrap{display:flex;flex-direction:column;flex:1;overflow:hidden}
.inv-blank-row td{height:8mm}
.inv-filler{flex:1;border-left:1px solid #888;border-right:1px solid #888;border-bottom:1px solid #888;min-height:20mm}

/* ===== 配車票帳票スタイル ===== */
.ds-outer{border:2px solid #333;font-family:'Meiryo','Hiragino Kaku Gothic Pro',sans-serif;font-size:11px;width:210mm;height:297mm;overflow:hidden;display:flex;flex-direction:column;padding:10mm 15mm;box-sizing:border-box;background:#fff}
.ds-title-row{display:flex;align-items:center;border-bottom:2px solid #333;padding:10px 10px}
.ds-main-title{flex:1;text-align:center;font-size:20px;font-weight:700;letter-spacing:6px}
.ds-issue-date{font-size:10px;width:150px;text-align:right;white-space:nowrap}
.ds-tbl{width:100%;border-collapse:collapse;border-bottom:none}
.ds-tbl th{background:#dde3ea;border:1px solid #888;padding:6px 7px;font-weight:700;text-align:center;white-space:nowrap;font-size:10px}
.ds-tbl td{border:1px solid #888;padding:8px 7px;vertical-align:middle;line-height:1.8}
.ds-th-w50{width:50px}.ds-th-w60{width:60px}.ds-th-w70{width:70px}.ds-th-w80{width:80px}.ds-th-w90{width:90px}
.ds-section-title{background:#1e2d3d;color:#fff;padding:6px 10px;font-size:10px;font-weight:700;letter-spacing:2px;border-top:1px solid #888}
.ds-remarks-area{flex:1;min-height:60mm;padding:10px 10px;border-bottom:1px solid #888;font-size:11px;line-height:1.8}
.ds-company-name{font-weight:700;font-size:13px}

/* ===== 車両状態確認書帳票スタイル ===== */
.vc-outer{border:2px solid #333;font-family:'Meiryo','Hiragino Kaku Gothic Pro',sans-serif;font-size:10px;width:210mm;min-height:297mm;display:flex;flex-direction:column;padding:8mm 12mm;box-sizing:border-box;background:#fff}
.vc-title-row{display:flex;align-items:flex-start;border-bottom:2px solid #333;padding-bottom:6px;margin-bottom:7px;flex-shrink:0}
.vc-main-title{flex:1;text-align:center;font-size:18px;font-weight:700;letter-spacing:6px;padding-top:4px}
.vc-issue-info{font-size:10px;text-align:right;white-space:nowrap;line-height:1.7}
.vc-info-tbl{width:100%;border-collapse:collapse;margin-bottom:4px;flex-shrink:0}
.vc-info-tbl th{background:#dde3ea;border:1px solid #888;padding:4px 6px;font-weight:700;text-align:center;white-space:nowrap;width:68px;font-size:10px}
.vc-info-tbl td{border:1px solid #888;padding:4px 7px;font-size:10px;line-height:1.5}
.vc-section-hdr{background:#1e2d3d;color:#fff;padding:4px 8px;font-size:9px;font-weight:700;letter-spacing:2px;margin-top:4px;flex-shrink:0}
.vc-check-tbl{width:100%;border-collapse:collapse;flex-shrink:0}
.vc-check-tbl th{background:#dde3ea;border:1px solid #888;padding:3px 5px;text-align:center;font-weight:700;width:76px;font-size:10px;white-space:nowrap;vertical-align:middle}
.vc-check-tbl td{border:1px solid #888;padding:3px 8px;font-size:10px;line-height:1.7;vertical-align:middle}
.vc-radio-item{display:inline-block;margin-right:10px}
.vc-check-item{display:inline-block;margin-right:8px}
.vc-diagram-wrap{border:1px solid #888;margin-top:4px;padding:5px;display:grid;grid-template-columns:repeat(4,1fr);gap:5px;flex-shrink:0}
.vc-diagram-cell{border:1px solid #bbb;text-align:center;padding:4px 3px;background:#fafafa}
.vc-diagram-lbl{font-size:8.5px;font-weight:700;color:#1e2d3d;border-bottom:1px solid #ddd;padding-bottom:2px;margin-bottom:3px}
.vc-diagram-cell svg{display:block;margin:0 auto;width:100%;height:auto}
.vc-diagram-single{border:1px solid #888;margin-top:4px;padding:0;flex:1;display:flex;flex-direction:column;align-items:stretch;justify-content:center;min-height:60mm}
.vc-diagram-single svg{width:100%;height:auto;max-height:none;max-width:none;display:block}
.vc-car-img{width:100%;height:auto;max-height:none;max-width:none;display:block}
.vc-car-class-tag{font-size:9px;font-weight:700;color:#374151;margin-top:4px;letter-spacing:1px;text-align:center}
.vc-notes-outer{margin-top:4px;border:1px solid #888;flex:1;display:flex;flex-direction:column;min-height:24mm}
.vc-notes-lbl{background:#dde3ea;padding:3px 8px;font-size:9px;font-weight:700;border-bottom:1px solid #888;flex-shrink:0}
.vc-notes-body{flex:1;padding:6px 8px;font-size:10px;line-height:1.8}
.vc-sign-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-top:5px;flex-shrink:0}
.vc-sign-cell{border:1px solid #888;padding:5px 7px;min-height:22mm;display:flex;flex-direction:column}
.vc-sign-lbl{font-size:9px;font-weight:700;color:#1e2d3d;border-bottom:1px solid #ddd;padding-bottom:3px;margin-bottom:4px}
.vc-sign-area{flex:1}

@media print {
  @page{size:A4 portrait;margin:10mm}
  body{display:block;background:#fff}
  .sidebar,.main,.modal-bg{display:none!important}
  #print-area{display:block!important;padding:0;font-family:'Meiryo','Hiragino Kaku Gothic Pro','Hiragino Sans',sans-serif}

  /* ===== 貸渡契約書 ===== */
  .rc-outer{
    height:277mm;display:flex;flex-direction:column;overflow:hidden;
    border:3px double #000!important;width:100%!important;max-width:100%;margin:0;padding:0!important;
    -webkit-print-color-adjust:exact;print-color-adjust:exact
  }
  .rc-title-row{flex-shrink:0;padding:6px 10px}
  .rc-title-cell{font-size:14pt}
  .rc-main-tbl{
    flex:1;width:100%;border-collapse:collapse;font-size:9pt;
    -webkit-print-color-adjust:exact;print-color-adjust:exact
  }
  .rc-section-hdr,.rc-notes-hdr,.rc-main-tbl th{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .rc-main-tbl th,.rc-main-tbl td{padding:6px 8px}
  .rc-co-cell{height:22mm;padding:8px 10px!important;line-height:1.9}
  .rc-notes-td{height:82mm;font-size:9.5pt;line-height:2.2;vertical-align:top!important;padding:10px 12px!important}
  .rc-sign-td{height:78mm;padding:12px 10px!important}
  .rc-sign-field-lg{height:60mm;border:1px solid #888}
  .rc-seal-lg{width:68px;height:68px}

  /* ===== 配車票 ===== */
  .ds-outer{
    height:277mm;display:flex;flex-direction:column;overflow:hidden;
    border:2px solid #000!important;width:100%!important;max-width:100%;margin:0;padding:0!important;font-size:9pt;
    -webkit-print-color-adjust:exact;print-color-adjust:exact
  }
  .ds-title-row{flex-shrink:0;padding:14px 10px}
  .ds-main-title{font-size:18pt}
  .ds-tbl{width:100%}
  .ds-tbl th{padding:9px 8px;font-size:9.5pt}
  .ds-tbl td{padding:11px 8px;line-height:1.7;font-size:9.5pt}
  .ds-tbl th,.ds-section-title{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ds-section-title{padding:10px 10px;font-size:9.5pt;line-height:1.4}
  .ds-remarks-area{
    flex:1;min-height:0;
    font-size:9.5pt;padding:14px 12px;line-height:1.9;
    border-bottom:1px solid #888
  }

  /* ===== 請求書・納品書 ===== */
  .inv-outer{
    height:277mm;display:flex;flex-direction:column;overflow:hidden;
    border:2px solid #000!important;width:100%!important;max-width:100%;margin:0;padding:0!important;font-size:9pt;
    -webkit-print-color-adjust:exact;print-color-adjust:exact
  }
  .inv-title-row{flex-shrink:0;padding:8px 10px}
  .inv-main-title{font-size:18pt;letter-spacing:5px}
  .inv-header{padding:14px 12px 12px}
  .inv-to-name{font-size:14pt}
  .inv-to-sub,.inv-to-case{font-size:10pt;line-height:1.8}
  .inv-from-block{font-size:10pt;line-height:2}
  .inv-from-name{font-size:13pt}
  .inv-summary-box{padding:12px 12px;font-size:11pt}
  .inv-total-amount{font-size:12pt}
  .inv-tbl-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden}
  .inv-tbl{flex-shrink:0;width:100%}
  .inv-tbl th{padding:7px 8px;font-size:9.5pt}
  .inv-tbl td{padding:8px 8px;font-size:9.5pt;line-height:1.7}
  .inv-blank-row td{height:12mm}
  .inv-filler{flex:1;border-left:1px solid #888;border-right:1px solid #888;border-bottom:1px solid #888}
  .inv-bank{
    flex-shrink:0;border-top:none!important;padding:14px 12px!important;
    min-height:30mm;border-left:1px solid #888;border-right:1px solid #888;
    font-size:10pt;line-height:1.9
  }
  .inv-tbl th,.inv-sub-row td,.inv-total-row td,.inv-summary-box{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .inv-sub-row td{padding:7px 8px;font-size:9.5pt}
  .inv-total-row td{padding:8px 8px;font-size:12pt}

  .no-print{display:none!important}

  /* ===== FAX送り状（印刷） ===== */
  .fax-outer{
    height:277mm;display:flex;flex-direction:column;overflow:hidden;
    border:3px solid #000!important;width:100%!important;max-width:100%;margin:0;padding:16px 20px!important;
    box-sizing:border-box;font-size:10pt;
    -webkit-print-color-adjust:exact;print-color-adjust:exact
  }
  .fax-title{font-size:20pt;letter-spacing:6px;margin-bottom:10px;padding-bottom:8px;flex-shrink:0}
  .fax-meta-tbl{width:100%;flex-shrink:0;margin-bottom:8px}
  .fax-meta-tbl .fax-th{font-size:9.5pt;padding:4px 6px;width:60px}
  .fax-meta-tbl .fax-td{font-size:9.5pt;padding:4px 6px}
  .fax-sec-hdr{font-size:10pt;font-weight:700;padding:3px 6px;margin:8px 0 2px;flex-shrink:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .fax-field-tbl{width:100%;flex-shrink:0}
  .fax-th{font-size:9.5pt;padding:4px 6px;width:64px}
  .fax-td{font-size:9.5pt;padding:4px 6px}
  .fax-alert-row td{font-size:9.5pt;padding:4px 6px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .fax-subject{padding:5px 8px;font-size:10pt;margin-bottom:2px;flex-shrink:0}
  .fax-docs{padding:5px 10px;font-size:9.5pt;flex-shrink:0}
  .fax-doc-item{margin-bottom:2px;line-height:1.6}
  .fax-msg{padding:8px 10px;font-size:9.5pt;line-height:2;flex:1;min-height:0}

  /* ===== 車両状態確認書 ===== */
  .vc-outer{
    height:277mm;min-height:0;display:flex;flex-direction:column;overflow:hidden;
    border:2px solid #000!important;width:100%!important;max-width:100%;margin:0;padding:0!important;font-size:9pt;
    -webkit-print-color-adjust:exact;print-color-adjust:exact
  }
  .vc-title-row{flex-shrink:0;padding:8px 12px}
  .vc-main-title{font-size:16pt;letter-spacing:5px}
  .vc-info-tbl{width:100%;margin:0 12px;width:calc(100% - 24px)}
  .vc-info-tbl th,.vc-info-tbl td{padding:5px 7px;font-size:9pt}
  .vc-section-hdr,.vc-check-tbl th,.vc-notes-lbl,.vc-info-tbl th{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .vc-section-hdr{padding:5px 10px;font-size:9pt;margin:3px 12px 0;flex-shrink:0}
  .vc-info-tbl{margin:0 12px;width:calc(100% - 24px)}
  .vc-check-tbl{margin:0 12px;width:calc(100% - 24px)}
  .vc-check-tbl th{padding:4px 5px;font-size:9pt}
  .vc-check-tbl td{padding:4px 8px;font-size:9pt;line-height:1.5}
  .vc-diagram-wrap{margin:3px 12px 0;padding:6px;gap:4px}
  .vc-diagram-cell{padding:4px}
  .vc-diagram-single{flex:1;min-height:0;padding:0;margin:3px 12px 0;display:flex;flex-direction:column;align-items:center;overflow:hidden}
  .vc-diagram-single svg{flex:1;min-height:0;width:auto;max-width:100%;height:auto;max-height:100%}
  .vc-car-img{flex:1;min-height:0;width:auto;max-width:100%;height:auto;max-height:100%;object-fit:contain}
  .vc-car-class-tag{flex-shrink:0;font-size:8pt;margin-top:3px;text-align:center}
  .vc-notes-outer{flex:0 0 auto;min-height:14mm;margin:3px 12px 0}
  .vc-notes-body{padding:8px 10px;font-size:9pt}
  .vc-sign-row{flex-shrink:0;margin:4px 12px 8px;gap:4px}
  .vc-sign-cell{padding:5px 8px;min-height:18mm}
}

/* ===== PLATE PICKER ===== */
/* trigger button (inline, one per picker instance) */
.plate-trigger-wrap{display:inline-flex;align-items:center}
.plate-trigger-btn{
  display:flex;align-items:center;gap:6px;
  padding:5px 10px;border:1px solid #d1d5db;border-radius:6px;
  background:#fff;cursor:pointer;font-size:13px;color:#374151;
  min-width:160px;min-height:34px;text-align:left
}
.plate-trigger-btn:hover{border-color:#3b82f6;background:#eff6ff}
.pp-trigger-text{flex:1;letter-spacing:1px}
.pp-trigger-icon{font-size:12px;color:#9ca3af;flex-shrink:0}

/* popup overlay */
.plate-popup-overlay{
  display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);
  z-index:10100;align-items:center;justify-content:center
}
.plate-popup{
  background:#fff;border-radius:12px;
  box-shadow:0 8px 32px rgba(0,0,0,.28);
  width:440px;max-width:96vw;max-height:92vh;
  overflow-y:auto;display:flex;flex-direction:column
}
.pp-popup-title{
  font-size:16px;font-weight:700;color:#1e2d3d;
  padding:16px 20px 12px;border-bottom:1px solid #e5e7eb;flex-shrink:0
}
.pp-popup-body{padding:16px 20px;display:flex;flex-direction:column;gap:14px}
.pp-popup-row{display:flex;align-items:center;gap:10px}
.pp-popup-lbl{font-size:13px;font-weight:600;color:#374151;width:74px;flex-shrink:0}
.pp-popup-select{flex:1;height:36px;padding:0 6px;font-size:13px;border:1px solid #d1d5db;border-radius:6px}
.pp-popup-inp{width:96px;height:36px;padding:0 8px;font-size:16px;text-align:center;border:1px solid #d1d5db;border-radius:6px;letter-spacing:3px}
.pp-popup-inp-wide{width:110px}

/* kana grid section */
.pp-popup-kana-section{display:flex;flex-direction:column;gap:6px}
.pp-popup-kana-grid{
  display:flex;flex-direction:column;gap:4px;
  padding:10px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb
}
.pp-popup-kana-row{display:flex;gap:4px}
.pp-popup-kana-btn,.pp-popup-kana-empty{
  width:36px;height:36px;font-size:15px;border-radius:5px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center
}
.pp-popup-kana-btn{
  border:1px solid #d1d5db;background:#fff;cursor:pointer;color:#374151
}
.pp-popup-kana-btn:hover:not(.pp-kana-excl){background:#dbeafe;border-color:#3b82f6;color:#1d4ed8}
.pp-popup-kana-empty{border:none;background:transparent;cursor:default}
.pp-kana-excl{background:#f3f4f6!important;color:#d1d5db!important;cursor:not-allowed!important;pointer-events:none}
.pp-kana-rental{background:#eff6ff;border-color:#93c5fd!important;color:#1d4ed8;font-weight:700}
.pp-kana-rental:hover{background:#bfdbfe!important;border-color:#2563eb!important}
.pp-kana-selected{background:#2563eb!important;border-color:#1d4ed8!important;color:#fff!important;font-weight:700}
.pp-popup-kana-note{font-size:11px;color:#6b7280;line-height:1.6}

/* preview bar */
.pp-popup-preview{
  background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;
  padding:10px 14px;font-size:13px;color:#1e2d3d
}
.pp-preview-val{font-weight:700;font-size:17px;letter-spacing:3px;margin-left:6px;color:#1d4ed8}

/* footer */
.pp-popup-footer{
  display:flex;gap:10px;justify-content:flex-end;
  padding:12px 20px 16px;border-top:1px solid #e5e7eb;flex-shrink:0
}

/* detail popup */
.dp-popup{position:fixed;z-index:9990;background:#fff;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.18),0 0 0 1px rgba(0,0,0,.06);width:340px;max-width:calc(100vw - 20px);max-height:80vh;overflow-y:auto}
.dp-popup-hd{padding:12px 14px 10px;border-bottom:1px solid #f3f4f6;display:flex;align-items:center;gap:8px;cursor:move;user-select:none;background:#fff;position:sticky;top:0}
.dp-popup-bd{padding:10px 14px}
.dp-popup-ft{padding:8px 14px 12px;border-top:1px solid #f3f4f6;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.dp-popup-row{display:flex;justify-content:space-between;font-size:12px;padding:3px 0;border-bottom:1px solid #f9fafb}
.dp-popup-row:last-child{border-bottom:none}
.dp-key{color:#6b7280;white-space:nowrap;padding-right:10px;flex-shrink:0}
.dp-val{color:#1e2d3d;text-align:right;word-break:break-all}

/* form validation */
.fv-error{border:2px solid #ef4444!important;border-radius:5px!important;background:#fff5f5!important}
.fv-label-error{color:#ef4444!important}
.fv-err-msg{color:#ef4444;font-size:11px;margin-top:2px;font-weight:500;display:block}
.fv-summary-box{background:#fef2f2;border:1px solid #fca5a5;border-radius:8px;padding:10px 14px;margin-bottom:12px;font-size:12px;color:#991b1b}

/* ===== Responsive: スマホ (≤768px) ===== */
.hamburger-btn{display:none;position:fixed;top:10px;left:10px;z-index:350;width:44px;height:44px;background:#1e2d3d;border:none;border-radius:8px;align-items:center;justify-content:center;font-size:22px;color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;box-shadow:0 2px 8px rgba(0,0,0,.3);}
.sb-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:299;}
#gantt-mob-banner{display:none;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:16px 18px;margin-bottom:12px;}
@media(max-width:768px){
  .vehicle-photo-layout{grid-template-columns:1fr}
  .vehicle-ocr-photo-prompt{align-items:flex-start}
  .hamburger-btn{display:flex;}
  .sidebar{position:fixed!important;top:0;left:0;height:100vh;z-index:300;width:280px!important;min-width:280px!important;transform:translateX(-280px);transition:transform .25s cubic-bezier(.4,0,.2,1);overflow-y:auto;box-shadow:4px 0 20px rgba(0,0,0,.3);}
  .sidebar.open{transform:translateX(0);}
  .sb-overlay.open{display:block;}
  .main{width:100%;}
  .page{padding:58px 8px 16px;}
  .page-title{font-size:17px;}
  .page-sub{font-size:12px;}
  .stats{grid-template-columns:repeat(2,1fr)!important;gap:8px;}
  .stat-val{font-size:20px;}
  .card{padding:14px;}
  .modal-bg{padding:0!important;align-items:flex-end!important;}
  .modal{width:100%!important;max-width:100%!important;border-radius:20px 20px 0 0!important;max-height:92vh;padding:20px 16px 28px!important;margin:0!important;}
  .modal-footer{flex-direction:column-reverse;gap:8px;}
  .modal-footer .btn{height:48px!important;font-size:14px;width:100%!important;padding:0!important;}
  .form-grid{grid-template-columns:1fr!important;gap:10px;}
  .form-grid-3{grid-template-columns:1fr!important;gap:10px;}
  .form-grid-4{grid-template-columns:1fr 1fr!important;gap:8px;}
  .form-group input,.form-group select,.form-group textarea,.rff-inp,.rff-sel,#login-id,#login-pass{font-size:16px!important;}
  .rff-inp,.rff-sel{height:44px;}
  .mob-tbl{border:none!important;}
  .mob-tbl thead{display:none;}
  .mob-tbl tbody{display:block;}
  .mob-tbl tr{display:block;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:10px;padding:10px 12px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.06);}
  .mob-tbl tr:hover td{background:transparent!important;}
  .mob-tbl td{display:flex;border:none!important;padding:4px 0;font-size:13px;gap:8px;align-items:flex-start;line-height:1.4;}
  .mob-tbl td:empty{display:none;}
  .mob-tbl td::before{content:attr(data-label);font-weight:600;color:#6b7280;font-size:11px;min-width:68px;max-width:68px;flex-shrink:0;padding-top:2px;overflow:hidden;white-space:nowrap;}
  #gantt-mob-banner{display:block!important;}
  #gantt-main{display:none!important;}
  .filter-bar{flex-wrap:wrap;}
  .invoice-grid{flex-direction:column;}
  .card-title{flex-wrap:wrap;gap:8px;}
  .gantt-legend{display:none;}
}
.fv-summary-box ul{margin:4px 0 0 14px;padding:0}

/* ===== flatpickr rental calendar custom styles ===== */
.flatpickr-calendar{font-family:inherit;z-index:9000!important;}
.fp-rental-hdr{padding:6px 12px;font-size:12px;color:#1e3a8a;background:#eff6ff;border-bottom:1px solid #bfdbfe;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.6;}
.fp-hdr-dot{font-size:10px;vertical-align:middle;}
.fp-hdr-blue{color:#1d4ed8;}
.fp-hdr-orange{color:#c2410c;}
.flatpickr-day.fp-rental-start{background:#dbeafe!important;color:#1d4ed8!important;border-color:#93c5fd!important;position:relative;}
.flatpickr-day.fp-rental-end{background:#ffedd5!important;color:#c2410c!important;border-color:#fdba74!important;position:relative;}
.flatpickr-day.fp-rental-range{background:#eff6ff!important;border-radius:0!important;color:#1e3a8a;}
.fp-day-label{position:absolute;top:1px;right:2px;font-size:7px;font-weight:700;line-height:1;pointer-events:none;}
.fp-start-lbl{color:#1d4ed8;}
.fp-end-lbl{color:#c2410c;}
