:root{font-family:Inter,Noto Sans JP,system-ui,-apple-system,sans-serif;line-height:1.5;color:#111827;background-color:#f3f4f6}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}.admin-layout{min-height:100vh;display:grid;grid-template-columns:240px 1fr}.admin-sidebar{background:#111827;color:#f9fafb;padding:24px 16px}.admin-logo{font-size:1.1rem;font-weight:700;margin-bottom:20px}.admin-nav{display:flex;flex-direction:column;gap:8px}.admin-nav a{padding:10px 12px;border-radius:8px;color:#d1d5db}.admin-nav a.active{background:#1f2937;color:#fff}.admin-nav a.admin-nav-notifications{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.admin-nav-unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.35rem;padding:0 5px;border-radius:999px;background:#dc2626;color:#fff;font-size:.68rem;font-weight:800;line-height:1;letter-spacing:-.02em;box-shadow:0 0 0 2px #111827f2}.admin-layout.theme-hq .admin-nav-unread-badge{box-shadow:0 0 0 2px #172554f2}.admin-layout.theme-temple .admin-nav-unread-badge{box-shadow:0 0 0 2px #052e16f2}.admin-main{padding:24px}.admin-layout.theme-hq .admin-sidebar{background:linear-gradient(180deg,#1e3a8a,#172554);border-right:1px solid #1d4ed8}.admin-layout.theme-temple .admin-sidebar{background:linear-gradient(180deg,#166534,#052e16);border-right:1px solid #15803d}.admin-role-pill{display:inline-block;font-size:.75rem;font-weight:600;padding:4px 10px;border-radius:999px;margin-bottom:16px}.admin-role-pill.role-hq{background:#bfdbfe33;color:#e0e7ff;border:1px solid rgba(165,180,252,.5)}.admin-role-pill.role-temple{background:#bbf7d026;color:#dcfce7;border:1px solid rgba(134,239,172,.45)}.admin-donation-status-pill{display:inline-flex;align-items:center;gap:.35rem;border-radius:999px;padding:.2rem .6rem;font-size:.72rem;font-weight:700;line-height:1.35;letter-spacing:.02em;white-space:nowrap}.admin-donation-status-pill-dot{width:.45rem;height:.45rem;border-radius:50%;flex-shrink:0}.admin-donation-status-pill--on{background:#dcfce7;color:#166534;border:1px solid #86efac}.admin-donation-status-pill--on .admin-donation-status-pill-dot{background:#16a34a}.admin-donation-status-pill--off{background:#f1f5f9;color:#64748b;border:1px solid #e2e8f0}.admin-donation-status-pill--off .admin-donation-status-pill-dot{background:#94a3b8}.admin-sidebar-footer{margin-top:auto;padding-top:24px;border-top:1px solid rgba(255,255,255,.12)}.admin-user-line{margin:0 0 12px;font-size:.85rem;color:#e5e7eb}.admin-logout{width:100%;padding:8px 12px;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:#00000026;color:#f9fafb;cursor:pointer;font:inherit}.admin-logout:hover{background:#00000040}.admin-layout .admin-sidebar{display:flex;flex-direction:column}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}.admin-table th,.admin-table td{text-align:left;padding:8px 10px;border-bottom:1px solid #e5e7eb}.admin-table th.admin-table-num,.admin-table td.admin-table-num{text-align:right;white-space:nowrap}.admin-table-wrap{overflow-x:auto;margin-top:8px}.admin-service-request-row-pending td{background:#9ca3af29}.admin-service-request-row-confirmed td{background:#93c5fd33}.admin-service-request-row-rejected td{background:#fcd34d38}.admin-service-request-row-canceled td{background:#fca5a52e}.admin-service-request-row-changed td{background:#c4b5fd38}.admin-dashboard-period{margin:0 0 8px;font-size:.875rem;color:#4b5563}.admin-dashboard-note{margin:12px 0 0;font-size:.8rem;color:#6b7280;line-height:1.5}.admin-dashboard-delta{font-variant-numeric:tabular-nums}.admin-dashboard-dl{display:grid;gap:12px;margin:0}.admin-dashboard-dl>div{display:grid;grid-template-columns:140px 1fr;gap:8px;align-items:baseline;font-size:.9rem}.admin-dashboard-dl dt{margin:0;color:#6b7280;font-weight:600}.admin-dashboard-dl dd{margin:0}.admin-dashboard-per-temple ul{margin:4px 0 0;padding-left:1.1rem}.admin-json{background:#0f172a;color:#e2e8f0;padding:12px 14px;border-radius:8px;overflow:auto;font-size:.85rem}.page-error{color:#b91c1c;font-weight:600}.auth-loading{min-height:100vh;display:grid;place-items:center;color:#4b5563}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#e0e7ff,#f3f4f6 45%,#f3f4f6)}.login-card{width:min(420px,100%);background:#fff;border-radius:16px;padding:28px 24px 20px;box-shadow:0 10px 40px #0f172a1f}.login-title{margin:0;font-size:1.35rem}.login-lead{margin:8px 0 20px;color:#4b5563;font-size:.95rem}.login-form{display:flex;flex-direction:column;gap:14px}.login-label{display:flex;flex-direction:column;gap:6px;font-size:.9rem;color:#374151}.login-label input{padding:10px 12px;border-radius:8px;border:1px solid #d1d5db;font:inherit}.login-error{margin:0;color:#b91c1c;font-size:.9rem}.login-submit{margin-top:4px;padding:10px 12px;border-radius:8px;border:none;background:#1d4ed8;color:#fff;font-weight:600;cursor:pointer;font:inherit}.login-submit:disabled{opacity:.6;cursor:not-allowed}.login-hint{margin:16px 0 0;font-size:.75rem;color:#6b7280}.admin-header h1{margin:0;font-size:1.6rem}.admin-subtitle{margin-top:8px;color:#4b5563}.admin-cards{margin-top:24px;display:grid;gap:16px}.admin-dashboard-tabs{margin-top:16px;display:inline-flex;gap:8px}.admin-tab{border:1px solid #cbd5e1;background:#fff;color:#334155;border-radius:999px;padding:7px 14px;font:inherit;font-size:.86rem;cursor:pointer}.admin-tab.active{background:#1d4ed8;border-color:#1d4ed8;color:#fff}.admin-card{background:#fff;border-radius:12px;padding:16px;box-shadow:0 1px 2px #00000014}.admin-form{display:grid;gap:12px;margin-top:12px}.admin-label{display:grid;gap:6px;color:#374151;font-size:.9rem}.admin-label input,.admin-label select,.admin-label textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font:inherit}.admin-label textarea{resize:vertical}.admin-actions{display:flex;gap:10px;margin-top:4px}.admin-primary,.admin-danger{border:none;border-radius:8px;padding:10px 14px;color:#fff;font:inherit;font-weight:600;cursor:pointer}.admin-primary{background:#2563eb}.admin-danger{background:#b91c1c}.admin-secondary{background:#4b5563;border:none;border-radius:8px;padding:8px 12px;color:#fff;font:inherit;cursor:pointer}.admin-primary:disabled,.admin-danger:disabled,.admin-secondary:disabled{opacity:.6;cursor:not-allowed}.admin-help{margin:0;color:#6b7280;font-size:.85rem}.admin-photo-preview{width:min(100%,360px);border-radius:10px;border:1px solid #e5e7eb}.admin-qr-image{width:320px;max-width:100%;height:auto;border:1px solid #e5e7eb;border-radius:10px;background:#fff;padding:8px}.virtue-preview-wrap{margin-top:.75rem}.virtue-preview-wrap.is-compact{margin-top:.35rem}.virtue-preview-label{margin:0 0 4px;font-size:.85rem;font-weight:600;color:#374151}.virtue-preview-hint{margin:0 0 8px;font-size:.78rem;color:#6b7280;line-height:1.5}.virtue-preview-frame{display:flex;justify-content:center;align-items:flex-start;width:100%;max-width:320px;margin-left:auto;margin-right:auto;min-height:180px;padding:14px 12px 14px 18px;background:linear-gradient(180deg,#fffbeb,#fff);border:1px solid #fde68a;border-radius:8px;box-sizing:border-box}.virtue-preview-wrap.is-compact .virtue-preview-frame{min-height:120px;max-width:280px}.virtue-preview-text{writing-mode:vertical-rl;text-orientation:upright;font-family:Yu Mincho,Hiragino Mincho ProN,"Noto Serif JP",serif;font-size:17px;line-height:2;letter-spacing:.14em;color:#1c1917;max-height:240px;margin:0;white-space:pre-wrap;text-align:start;overflow:hidden}.virtue-preview-wrap.is-compact .virtue-preview-text{font-size:15px;max-height:160px}.admin-research-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:10px}.admin-research-form label{display:grid;gap:6px;color:#374151;font-size:.85rem}.admin-research-form input,.admin-research-form select{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:8px;font:inherit}.admin-research-actions{display:flex;gap:8px;align-items:end}.admin-research-segments{margin-top:12px;padding:10px;border:1px solid #e5e7eb;border-radius:10px;background:#f9fafb}.admin-research-segment-form{display:flex;gap:8px}.admin-research-segment-form input{flex:1;min-width:200px;padding:8px 10px;border:1px solid #d1d5db;border-radius:8px;font:inherit}.admin-research-segment-list{margin:10px 0 0;padding:0;list-style:none;display:grid;gap:6px}.admin-research-segment-list li{display:flex;justify-content:space-between;align-items:center;gap:8px}.admin-linklike,.admin-linkdanger{border:none;background:none;padding:0;font:inherit;cursor:pointer}.admin-linklike{color:#1d4ed8;text-align:left}.admin-linkdanger{color:#b91c1c}.admin-user-meta{font-size:.78rem;color:#6b7280}.admin-user-simple-list{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px}.admin-user-simple-list li{display:flex;justify-content:space-between;gap:10px;font-size:.88rem}.admin-research-pager{margin-top:10px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.admin-research-target-actions{margin-top:12px;padding:10px;border:1px solid #e5e7eb;border-radius:10px}.admin-research-target-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;align-items:end}.admin-research-target-form label{display:grid;gap:6px;font-size:.85rem;color:#374151}.admin-research-target-form input,.admin-research-target-form select{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:8px;font:inherit}.admin-research-exports{margin-top:12px;border:1px solid #e5e7eb;border-radius:10px;padding:10px;background:#f8fafc}.admin-research-export-list{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px}.admin-research-export-list li{display:grid;grid-template-columns:56px 90px 110px 80px 1fr;gap:8px;align-items:center;font-size:.85rem}.admin-research-export-list a{color:#1d4ed8}.admin-research-drawer-backdrop{position:fixed;inset:0;background:#00000073;display:flex;justify-content:flex-end;z-index:30}.admin-research-drawer{width:min(720px,96vw);height:100%;overflow:auto;background:#fff;padding:16px;box-shadow:-10px 0 30px #0f172a38}.admin-research-drawer-header{display:flex;justify-content:space-between;align-items:center;gap:8px}.admin-research-drawer-header h3{margin:0}.admin-research-subtitle{margin:16px 0 8px;font-size:.95rem}.admin-chart-card{border:1px solid #e5e7eb;border-radius:10px;padding:10px;background:#f8fafc;margin-top:8px}.admin-chart-svg{width:100%;height:220px;display:block;background:#fff;border-radius:8px;border:1px solid #e5e7eb}.admin-chart-svg-frame{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:0 0 14px;margin-top:0;overflow:visible}.admin-chart-svg-frame>.admin-chart-svg{border:none;border-radius:0}.admin-chart-svg--correlation{height:auto;aspect-ratio:640 / 200;margin-bottom:0;overflow:visible}.admin-chart-axis{stroke:#cbd5e1;stroke-width:1}.admin-chart-peak-value{font-size:13px;font-weight:600;paint-order:stroke fill;stroke:#fff;stroke-width:3.5px;stroke-linejoin:round}.admin-chart-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font-size:.82rem;color:#475569}.admin-chart-legend span{display:inline-flex;align-items:center;gap:6px}.admin-chart-legend i{width:10px;height:10px;border-radius:999px;display:inline-block}.admin-chart-range{margin:6px 0 0;font-size:.78rem;color:#64748b}.admin-reservation-card-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,430px);gap:16px;align-items:start}.admin-reservation-card-layout--equal-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.admin-reservation-correlation-card{margin-top:0}.admin-status-pie-svg{width:100%;max-width:260px;height:auto;display:block;margin:4px auto 0}.admin-status-pie-total-label{fill:#64748b;font-size:11px;font-weight:600}.admin-status-pie-total-value{fill:#0f172a;font-size:18px;font-weight:700}.admin-reservation-correlation-months{margin-top:-4px;display:grid;gap:2px;align-items:end;min-height:2.35rem;padding-right:0;font-size:.72rem;color:#64748b;text-align:center}.admin-chart-x-axis-label{display:inline-block;justify-self:center;transform:translateY(-3px) rotate(-42deg);transform-origin:center bottom;white-space:nowrap;font-size:.68rem;line-height:1.05}@media(max-width:980px){.admin-reservation-card-layout{grid-template-columns:1fr}}.reservation-filters{margin-top:12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.reservation-acceptance-inline{display:flex;align-items:center;gap:10px}.reservation-acceptance-inline input[type=number]{width:96px;flex:0 0 auto}.reservation-acceptance-example{margin:0;white-space:nowrap}.reservation-calendar{margin-top:12px}.reservation-summary{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.reservation-summary>div{border:1px solid #e5e7eb;border-radius:10px;padding:8px 10px;background:#f8fafc}.reservation-summary dt{margin:0;font-size:.8rem;color:#6b7280}.reservation-summary dd{margin:4px 0 0;font-weight:600}.reservation-day-list{margin-top:12px;display:grid;gap:10px}.reservation-day-card{border:1px solid #e5e7eb;border-radius:10px;padding:10px;background:#fff}.reservation-day-card header{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.reservation-day-card h3{margin:0;font-size:.98rem}.reservation-day-card p{margin:0;color:#6b7280;font-size:.82rem}.reservation-slot-grid{margin-top:10px;display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}.reservation-slot{border:1px solid #d1d5db;border-radius:8px;padding:8px;background:#fff;cursor:pointer;text-align:left;display:grid;gap:2px}.reservation-slot span{font-size:.88rem;font-weight:600}.reservation-slot small{font-size:.74rem;color:#64748b}.reservation-slot-note{display:grid;gap:2px}.reservation-slot-note>span{display:block}.reservation-slot-line,.reservation-slot-input-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;justify-content:space-between}.reservation-slot-line>span:first-child{flex:1;min-width:0}.reservation-slot-chip{flex-shrink:0;padding:2px 6px;font-size:.65rem;font-weight:600;line-height:1.2;border-radius:4px;border:1px solid #94a3b8;background:#fff;color:#334155;cursor:pointer;font:inherit}.reservation-slot-chip-input{border-color:#4b5563;background:#4b5563;color:#fff}.reservation-slot-input-row{justify-content:flex-end;margin-top:2px}.reservation-slot.is-full .reservation-slot-chip{cursor:pointer}.reservation-slot:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.reservation-slot.is-bookable{border-color:#16a34a;background:#f0fdf4}.reservation-slot.is-full{border-color:#e5e7eb;background:#f3f4f6;color:#9ca3af;cursor:not-allowed}.reservation-slot.is-holding{border-color:#16a34a;background:#fff}.reservation-pending-text{color:#16a34a;font-weight:700}.reservation-confirmed-text{color:#1d4ed8;font-weight:700}.reservation-slot.is-slot-confirmed-only{border-color:#2563eb;background:#eff6ff}.reservation-slot.is-slot-confirmed-only.is-full{color:#1e293b;border-color:#2563eb;background:#eff6ff}.reservation-request-row-highlight td{background:#dcfce7}.reservation-block-form{margin-top:12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.reservation-request-confirm-form .input{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;background:#f8fafc;color:#111827;line-height:1.5;box-sizing:border-box}.reservation-block-form--split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px 20px;align-items:start}.reservation-block-form-col{display:flex;flex-direction:column;gap:10px;min-width:0}.reservation-block-form--split .admin-label input[type=datetime-local],.reservation-block-form--split .admin-label textarea{width:100%;box-sizing:border-box}@media(max-width:560px){.reservation-block-form--split{grid-template-columns:1fr}}.reservation-inline-actions{display:inline-flex;gap:8px;align-items:center}.reservation-inline-actions .admin-danger{padding:8px 12px;font-weight:500;font-size:.9rem}.reservation-readonly-note{color:#64748b;font-size:.82rem}.reservation-note-preview{white-space:nowrap}.reservation-modal-backdrop{position:fixed;inset:0;background:#00000073;z-index:40;display:grid;place-items:center;padding:16px}.reservation-modal{width:min(720px,100%);max-height:calc(100vh - 48px);overflow:auto;border-radius:12px;background:#fff;padding:16px;box-shadow:0 20px 40px #00000040}.reservation-modal h3{margin:0;font-size:1.05rem}.reservation-request-reject-btn{margin-left:auto;border:1px solid #b91c1c;border-radius:8px;padding:8px 12px;background:#fff;color:#b91c1c}.reservation-google-card{order:-10}.reservation-push-cta.is-expiring{background:#dc2626;animation:reservation-push-blink 1s steps(2,start) infinite}@keyframes reservation-push-blink{0%{filter:brightness(1)}50%{filter:brightness(.65)}to{filter:brightness(1)}}.prefecture-heatmap{display:grid;gap:14px}.prefecture-heatmap-toolbar{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:end}.prefecture-heatmap-metric{display:grid;gap:6px;font-size:.85rem;color:var(--admin-muted)}.prefecture-heatmap-summary{margin:0}.prefecture-heatmap-legend{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--admin-muted)}.prefecture-heatmap-legend-bar{flex:1;max-width:180px;height:10px;border-radius:999px;background:linear-gradient(90deg,#f1f5f8,#237ee7);border:1px solid color-mix(in srgb,var(--admin-border) 80%,transparent)}.prefecture-heatmap-grid{display:grid;gap:12px}.prefecture-heatmap-region{border:1px solid var(--admin-border);border-radius:12px;padding:10px 12px;background:color-mix(in srgb,var(--admin-card) 96%,var(--admin-bg))}.prefecture-heatmap-region-title{margin:0 0 8px;font-size:.82rem;color:var(--admin-muted);font-weight:700}.prefecture-heatmap-region-cells{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.prefecture-heatmap-cell{border-radius:8px;border:1px solid color-mix(in srgb,var(--admin-border) 70%,transparent);padding:8px 6px;min-height:52px;display:grid;align-content:center;justify-items:center;gap:2px;text-align:center;cursor:default;transition:transform .12s ease}.prefecture-heatmap-cell:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0f172a14}.prefecture-heatmap-cell-name{font-size:.78rem;line-height:1.2}.prefecture-heatmap-cell-value{font-size:.88rem;line-height:1.2}.prefecture-heatmap-top{border-top:1px solid var(--admin-border);padding-top:12px}.prefecture-heatmap-top-list{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px}.prefecture-heatmap-top-list li{display:flex;justify-content:space-between;gap:12px;font-size:.9rem}.admin-row--unintegrated td{background:#fff7ed}.admin-card--unintegrated{border:1px solid #fed7aa;background:#fffbeb}.admin-platform-badge{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:600;white-space:nowrap}.admin-platform-badge--active{background:#e0f2fe;color:#0369a1}.admin-platform-badge--inactive{background:#ffedd5;color:#c2410c}.billing-row--alert td{background:#fff7ed}.billing-row--muted td{background:#f8fafc;color:#64748b}.billing-status-pill{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:600;background:#e0f2fe;color:#0369a1}.billing-status-pill--alert{background:#ffedd5;color:#c2410c}.billing-status-pill--muted{background:#e2e8f0;color:#475569}.billing-temple-cell{display:flex;flex-direction:column;gap:2px}.billing-meta{font-size:.78rem;color:#64748b}.billing-meta--alert{color:#c2410c;font-weight:600}.billing-system-banner{margin:0 0 12px;padding:10px 12px;border-radius:8px;background:#fef2f2;border:1px solid #fecaca;color:#991b1b;font-weight:600}.billing-success{color:#047857;font-weight:600}.billing-legend{display:flex;align-items:center;gap:16px;margin-top:12px}.billing-legend-swatch{display:inline-block;width:14px;height:14px;border-radius:3px;margin-right:6px;vertical-align:middle;border:1px solid #cbd5e1}.billing-legend-swatch--default{background:#fff}.billing-legend-swatch--alert{background:#fff7ed}.billing-dashboard-alert{margin-bottom:16px;padding:14px 16px;border-radius:10px;background:#fef2f2;border:1px solid #fca5a5;color:#7f1d1d;display:flex;flex-direction:column;gap:6px}.billing-dashboard-alert strong{font-size:1rem}.billing-dashboard-warning{margin-bottom:16px;padding:14px 16px;border-radius:10px;background:#fffbeb;border:1px solid #fcd34d;color:#92400e;display:flex;flex-direction:column;gap:6px}.billing-dashboard-warning strong{font-size:1rem}
