:root {
  --bg:#f5f7fb; --card:#fff; --text:#172033; --muted:#667085; --line:#e4e7ec;
  --accent:#0f766e; --accent2:#1d4ed8; --navy:#0f172a; --soft:#f8fafc;
}
* { box-sizing: border-box; }
body { margin:0; font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background:var(--bg); color:var(--text); }
.hero { background:linear-gradient(120deg,#0f172a,#1e3a8a); color:white; padding:24px 28px; display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }
.compact-hero{padding:20px 28px}.hero h1 { margin:0; font-size:25px; letter-spacing:.02em; }
.hero p { margin:6px 0 0; color:#dbeafe; line-height:1.6; }.eyebrow{font-size:13px; color:#a7f3d0!important; font-weight:700; margin:0 0 4px!important;}
.admin-link{color:white; border:1px solid rgba(255,255,255,.35); text-decoration:none; padding:10px 14px; border-radius:999px; font-weight:700; white-space:nowrap;}
main { max-width:1120px; margin:26px auto; padding:0 18px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:18px; padding:22px; margin-bottom:16px; box-shadow:0 8px 24px rgba(15,23,42,.04); }
.planner-card{max-width:1080px; margin-inline:auto}.form-section{margin-bottom:18px}.form-section h2{font-size:18px;margin:0 0 6px}.compact{padding-top:2px}
.grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:14px; }.grid.four{grid-template-columns: repeat(4, minmax(0,1fr));}.grid.three{grid-template-columns: repeat(3, minmax(0,1fr));}.grid.two{grid-template-columns: repeat(2, minmax(0,1fr));}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media (max-width:900px){.grid.four,.grid.three,.grid.two,.grid-2,.grid-3{grid-template-columns:1fr}.hero{display:block}.admin-link{display:inline-block;margin-top:14px}}
label { display:block; font-weight:700; margin-bottom:7px; color:#243044; }
input, select, textarea { width:100%; padding:11px 12px; border:1px solid #d0d5dd; border-radius:11px; font-size:15px; background:white; }
textarea { min-height: 110px; resize: vertical; font-family: inherit; line-height: 1.6; }
button { border:0; background:var(--accent); color:white; padding:13px 18px; border-radius:11px; font-weight:800; cursor:pointer; box-shadow:0 2px 4px rgba(15,118,110,.18); }
button.secondary { background:#475467; }.actions{display:flex; align-items:center; gap:16px; margin-top:18px}.actions a,a { color:#0f766e; font-weight:700; }
.hint { color:var(--muted); font-size:13px; line-height:1.65; margin:0 0 10px; }
.conditions { border:1px solid var(--line); border-radius:16px; padding:0; margin:14px 0; overflow:hidden; background:#fff; }
.conditions summary { cursor:pointer; padding:16px 18px; font-weight:800; background:#f8fafc; color:#243044; }
.condition-body { padding:16px 18px 18px; }.condition-block { border-top:1px solid var(--line); padding-top:16px; margin-top:16px; }.condition-block:first-child{border-top:0;margin-top:0;padding-top:0}.condition-block h3{margin:0 0 8px;font-size:16px}.condition-block h4{margin:0 0 8px;font-size:14px;color:#344054}
.checks { display:flex; flex-wrap:wrap; gap:8px 16px; }.checks label { font-weight:500; display:flex; gap:7px; align-items:center; margin:0; color:#344054; }.checks input { width:auto; }
.tag-groups { display:grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap:12px; }.tag-group { border:1px solid var(--line); border-radius:14px; padding:12px; background:#fcfcfd; }.tag-checks{gap:7px 12px}.tag-checks label{font-size:13px;background:white;border:1px solid #eaecf0;border-radius:999px;padding:5px 9px;}
.summary-card{position:sticky; top:0; z-index:3}.summary { display:flex; gap:10px; flex-wrap:wrap; }.summary span { background:#ecfdf3; border:1px solid #abefc6; color:#067647; padding:8px 11px; border-radius:999px; font-size:14px; font-weight:700; }
.timeline { border-left:4px solid #d0d5dd; padding-left:18px; margin-left:8px; }.timeline.v21{max-width:960px;margin-inline:auto}.leg, .stay, .optional { position:relative; margin:14px 0; padding:17px; border:1px solid var(--line); border-radius:15px; background:white; box-shadow:0 2px 8px rgba(15,23,42,.03); }.leg:before, .stay:before { content:""; position:absolute; left:-27px; top:22px; width:13px; height:13px; border-radius:50%; background:#0f766e; box-shadow:0 0 0 4px #f5f7fb; }
.leg .pill{display:inline-block;background:#eef2ff;color:#3730a3;font-size:12px;border-radius:999px;padding:4px 8px;margin-bottom:8px;font-weight:800}.route-line{margin-top:6px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.leg .label { display:inline-block; padding:4px 8px; border-radius:999px; background:#f2f4f7; color:#344054; font-size:13px; font-weight:800; }
.leg.train .label { background:#e0f2fe; color:#075985; }.leg.bus .label { background:#fef3c7; color:#92400e; }.leg.walking .label { background:#ecfdf3; color:#067647; }.leg.driving .label { background:#ede9fe; color:#5b21b6; }.leg.wait .label { background:#f2f4f7; color:#475467; }
.stay-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.stay-head strong{font-size:18px}.time-box{background:#f1f5f9;border-radius:12px;padding:9px 12px;text-align:center;font-weight:800;white-space:nowrap}.time-box span{font-size:12px;color:#475467}
.stay.goods-break{background:#fff7ed;border-color:#fde68a}.stay.goods-break:before{background:#d97706}.stay.goods-break .time-box{background:#fef3c7}.photo-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0}.photo-row div{height:110px;border-radius:12px;background:#e2e8f0;display:flex;align-items:center;justify-content:center;color:#475569;font-size:12px}.muted-photo div{background:linear-gradient(135deg,#e5e7eb,#cbd5e1)}
.meta { color:var(--muted); font-size:14px; margin-top:5px; }.description{line-height:1.7}.attention{color:#b45309;font-weight:700}.tags { margin-top:10px; display:flex; gap:6px; flex-wrap:wrap; }.tag { font-size:12px; background:#f2f4f7; color:#344054; padding:4px 8px; border-radius:999px; }.crowd{margin-top:12px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:12px;padding:10px;font-size:13px}.optional{background:#fffef7;border-color:#fde68a}.optional strong{color:#854d0e}.optional-row{padding:7px 0;border-top:1px dashed #fde68a}.optional-row:first-of-type{border-top:0}.optional-row span{color:#667085;font-size:13px}.footer-nav{text-align:center;margin:22px 0 40px}
pre { white-space:pre-wrap; background:#111827; color:#e5e7eb; padding:12px; border-radius:12px; overflow:auto; }
.warning{background:#fff7ed;border-color:#fed7aa;color:#9a3412}.error{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.debug-card { max-width: 960px; margin-inline: auto; }
.debug-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; margin-bottom: 10px; }
.debug-head strong { font-size: 18px; color: #243044; }
.debug-json { min-height: 320px; font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace; font-size: 12px; line-height: 1.55; white-space: pre; color: #172033; background: #f8fafc; }
.debug-warning { display: inline-block; margin: 0 0 10px; padding: 7px 10px; border-radius: 999px; background: #fff7ed; border: 1px solid #fed7aa; color: #9a3412; font-size: 13px; font-weight: 800; }
@media (max-width: 640px) { .debug-head { display: block; } .debug-head button { margin-top: 8px; } }


.table-wrap { overflow-x: auto; }
.job-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.job-table th, .job-table td { border-bottom: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top; }
.job-table th { background: #f8fafc; color: #334155; }
.status { display: inline-block; padding: 3px 8px; border-radius: 999px; font-size: 12px; font-weight: 700; }
.status-queued { background: #eef2ff; color: #3730a3; }
.status-running { background: #fff7ed; color: #9a3412; }
.status-success { background: #ecfdf5; color: #047857; }
.status-failed { background: #fef2f2; color: #b91c1c; }
.button-link { display: inline-block; padding: 8px 12px; border-radius: 8px; background: #0f766e; color: #fff; text-decoration: none; font-weight: 700; }

.devcheck-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.devcheck-tabs a{padding:9px 13px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#344054;text-decoration:none}.devcheck-tabs a.active{background:#0f766e;border-color:#0f766e;color:#fff}.devcheck-notice{border-left:5px solid #0f766e;background:#f0fdfa}.devcheck-notice p{margin:.5rem 0 0;line-height:1.7}.devcheck-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-bottom:16px}.devcheck-menu-card{display:flex;flex-direction:column;gap:7px;color:#172033;text-decoration:none;margin:0}.devcheck-menu-card:hover{border-color:#0f766e;transform:translateY(-1px)}.devcheck-menu-card strong{font-size:1.45rem}.devcheck-menu-card small{color:#667085}.devcheck-scenario{border:1px solid var(--line);border-radius:14px;padding:16px;background:#fbfcfe}.devcheck-scenario h3{margin:0 0 7px}.devcheck-scenario p{margin:5px 0}.devcheck-scenario form{margin:0}


.password-card { border-left: 4px solid #0f766e; }
.file-list-cell { max-width: 360px; word-break: break-all; line-height: 1.5; }

.admin-action-message { margin-top: 14px; padding: 10px 12px; border-radius: 10px; font-weight: 700; }
.admin-action-message.info { background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; }
.admin-action-message.success { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
.admin-action-message.error { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
button:disabled { opacity: .65; cursor: wait; }

.admin-inline-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 12px 0 16px; }
.inline-form { display: inline-block; margin: 0; }
button.danger { background: #9f1239; color: #fff; border: none; }
button.danger:hover { background: #881337; }
.status-timeout { background: #fff7ed; color: #9a3412; }
button.tiny { padding: 4px 10px; font-size: 12px; border-radius: 8px; }

.option-group-section { margin: 14px 0; }
.option-group-section summary { font-size: 15px; }
.option-group-body { padding: 14px 18px 18px; }
.tag-parent-box { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin: 0 0 14px; background: #fbfcfe; }
.tag-parent-box legend { font-weight: 800; color: #243044; padding: 0 6px; }
.tag-parent-items { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 10px; }
.tag-parent-item { display: flex; align-items: center; gap: 6px; background: #fff; border: 1px solid var(--line); border-radius: 20px; padding: 4px 6px 4px 12px; }
.add-child-form, .add-parent-form { display: flex; gap: 8px; align-items: center; margin-top: 6px; }
.add-child-form input, .add-parent-form input { flex: 1; }

.tag-parent-item[draggable="true"] { cursor: grab; }
.tag-parent-item.dragging { opacity: .4; }
.visually-hidden-form { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

.auto-filled-field[readonly] { background: #e5e7eb; color: #475569; cursor: not-allowed; }
.area-box { border: 1px solid var(--line); border-radius: 14px; padding: 4px 16px 16px; margin: 0 0 16px; background: #fff; }
.area-box legend { font-weight: 800; color: #243044; padding: 0 8px; font-size: 14px; }
.area-count { font-weight: 400; color: #64748b; font-size: 12px; margin-left: 4px; }
.contents-table th.sortable { position: relative; padding-right: 16px; }
.contents-table th.sortable::after { content: '\21C5'; position: absolute; right: 4px; opacity: .35; font-size: 11px; }
.contents-table th.sortable.sort-asc::after { content: '\2191'; opacity: 1; }
.contents-table th.sortable.sort-desc::after { content: '\2193'; opacity: 1; }
.contents-table { width: 100%; min-width: 880px; table-layout: fixed; }
.contents-table .contents-col-id { width: 17%; }
.contents-table .contents-col-name { width: 34%; }
.contents-table .contents-col-area { width: 20%; }
.contents-table .contents-col-category { width: 12%; }
.contents-table .contents-col-updated { width: 17%; }
.contents-table thead th,.contents-table .contents-row>td{overflow-wrap:anywhere}
.contents-table thead th:last-child,.contents-table .contents-row>td:last-child{white-space:nowrap}
.tag-trash-zone {
  position: fixed; right: 26px; bottom: 26px; z-index: 50;
  display: none; flex-direction: column; align-items: center; gap: 4px;
  width: 96px; height: 96px; border-radius: 50%;
  background: #fff; border: 2px dashed #cbd5e1; color: #64748b;
  font-size: 11px; text-align: center; padding: 8px;
  box-shadow: 0 6px 20px rgba(15, 23, 42, .15);
  pointer-events: none;
}
.tag-trash-zone.visible { display: flex; pointer-events: auto; }
.tag-trash-zone.drag-over { border-color: #b91c1c; color: #b91c1c; background: #fef2f2; transform: scale(1.06); }

.grid.five { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.course-photo { margin: 0; background: #f1f5f9; border-radius: 14px; overflow: hidden; min-height: 140px; display: flex; flex-direction: column; justify-content: center; }
.course-photo img { width: 100%; height: 160px; object-fit: cover; display: block; background: #e2e8f0; }
.course-photo figcaption { font-size: 11px; color: #64748b; padding: 6px 8px; line-height: 1.35; }
.optional-row { display: flex; gap: 10px; align-items: flex-start; }
.optional-row-photo { flex: 0 0 84px; width: 84px; height: 84px; border-radius: 10px; object-fit: cover; background: #f1f5f9; display: block; }
.optional-row-body { flex: 1 1 auto; min-width: 0; }
.optional-row-body .tags:empty { display: none; }
.optional-row-body .description { margin: 4px 0; }
.leg.wait strong { color: #334155; }
@media (max-width: 1100px) { .grid.five { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .grid.five { grid-template-columns: 1fr; } }

.hours { margin-top: 10px; padding: 8px 10px; border-radius: 10px; background: #ECFDF5; color: #065F46; font-size: 13px; }
.hours.unknown { background: #FFFBEB; color: #92400E; }
.hours.closed, .hours.outside_hours { background: #FEF2F2; color: #991B1B; }


.map-card { padding: 18px; }
.map-head { display: flex; gap: 12px; align-items: baseline; justify-content: space-between; margin-bottom: 12px; }
.map-head span { color: #64748b; font-size: 13px; }
.route-map { width: 100%; height: 420px; border-radius: 16px; border: 1px solid #dbe4ef; background: #f8fafc; overflow: hidden; }

.info-note { background:#eff6ff; border-color:#bfdbfe; color:#1e40af; }
.meal-note { background:#f0fdf4; border-color:#bbf7d0; color:#166534; }
.meal-checks label { background:#fff; border:1px solid #e5e7eb; border-radius:999px; padding:7px 10px; }
.meal-tags { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0 4px; }
.meal-tags span { background:#fff7ed; color:#9a3412; border:1px solid #fed7aa; border-radius:999px; padding:4px 8px; font-size:12px; font-weight:700; }
.leg-route-map { width:100%; height:260px; margin-top:12px; border:1px solid #dbe4ef; border-radius:14px; background:#f8fafc; overflow:hidden; }
.map-error { padding:18px; color:#991b1b; font-weight:700; }
@media (max-width:640px){ .leg-route-map { height:220px; } }

.mode-meal-grid { grid-template-columns: minmax(220px, 280px) 1fr; align-items: start; }
.meal-inline-checks { gap: 8px; }
.meal-inline-checks label { white-space: nowrap; }
.meal-hint { margin-top: 8px; }
.app-footer { max-width:1120px; margin: 0 auto 28px; padding: 0 18px; color:#667085; font-size:12px; text-align:right; }
.admin-version { color:#64748b!important; margin-top: 4px!important; }
@media (max-width:900px){ .mode-meal-grid { grid-template-columns: 1fr; } .app-footer { text-align:left; } }

.share-card { border-left:4px solid #1d4ed8; }
.share-row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:10px; }
.share-row input { flex:1 1 420px; font-size:13px; color:#334155; background:#f8fafc; }
.plain-list { margin:10px 0 12px 20px; padding:0; line-height:1.8; }
.warning-text { color:#9a3412; margin-top:10px; }
.area-chip { display:inline-block; margin-left:8px; padding:4px 8px; border-radius:999px; background:#eef2ff; color:#3730a3; font-size:12px; font-weight:700; vertical-align:middle; }
.optional-row em { margin-left:6px; padding:2px 6px; border-radius:999px; background:#ecfeff; color:#155e75; font-style:normal; font-size:11px; font-weight:700; }
.optional-row { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:8px 0; }
.optional-row-main { flex:1 1 auto; }
.optional-add-form { flex:0 0 auto; margin:0; }
.optional-add-btn { white-space:nowrap; padding:.5rem .9rem; }

.spinner { display:inline-block; width:14px; height:14px; margin-right:7px; vertical-align:-2px; border-radius:50%; border:2px solid currentColor; border-right-color:transparent; animation:admin-spin .7s linear infinite; }
@keyframes admin-spin { to { transform:rotate(360deg); } }

.inline-check { display:flex; align-items:center; gap:8px; width:max-content; max-width:100%; margin:10px 0 6px; font-weight:700; color:#344054; }
.inline-check input { width:auto; padding:0; margin:0; flex:0 0 auto; }
.inline-check span { display:inline-block; line-height:1.5; }

.check-row { display:flex; align-items:center; gap:8px; width:max-content; max-width:100%; margin:10px 0 6px; font-weight:700; color:#344054; }
.check-row input { width:auto; padding:0; margin:0; flex:0 0 auto; }
.check-row span { display:inline-block; line-height:1.5; }

/* v18.3 Smart Planner */
.smart-body { background:#eef2f7; }
.smart-topbar { position: sticky; top: 0; z-index: 20; display:flex; justify-content:space-between; align-items:flex-start; gap:14px; padding:14px 16px; background:linear-gradient(120deg,#0f766e,#0f172a); color:#fff; box-shadow:0 8px 20px rgba(15,23,42,.16); }
.smart-topbar h1 { margin:0; font-size:19px; letter-spacing:.02em; }
.smart-topbar p { margin:3px 0 0; color:#d1fae5; font-size:12px; line-height:1.45; }
.smart-top-link { flex:0 0 auto; color:#fff; text-decoration:none; border:1px solid rgba(255,255,255,.35); border-radius:999px; padding:9px 12px; font-size:12px; font-weight:800; }
.smart-main { max-width:560px; min-height: calc(100vh - 110px); margin:0 auto; padding:14px 12px 22px; }
.smart-shell { background:#fff; border:1px solid #dbe4ef; border-radius:24px; min-height:640px; box-shadow:0 14px 36px rgba(15,23,42,.08); overflow:hidden; }
.smart-progress { display:flex; align-items:center; gap:10px; padding:14px 18px 0; color:#475467; font-size:12px; font-weight:800; }
.smart-progress-bar { height:7px; flex:1; border-radius:999px; overflow:hidden; background:#e5e7eb; }
.smart-progress-bar span { display:block; height:100%; width:0; border-radius:999px; background:#0f766e; transition:width .22s ease; }
.smart-step { display:none; padding:18px; min-height:590px; }
.smart-step.active { display:block; }
.smart-step.slide-in-left { animation: smartSlideLeft .22s ease-out; }
@keyframes smartSlideLeft { from { opacity:.2; transform:translateX(24px); } to { opacity:1; transform:translateX(0); } }
.smart-step.smart-shake { animation: smartShake .24s ease-in-out; }
@keyframes smartShake { 0%,100% { transform:translateX(0); } 30% { transform:translateX(-6px); } 70% { transform:translateX(6px); } }
.smart-question { font-size:24px; line-height:1.35; font-weight:900; letter-spacing:.01em; color:#172033; margin:4px 0 16px; }
.smart-subtitle { font-weight:900; color:#334155; margin:8px 0 10px; }
.smart-hint { color:#667085; font-size:13px; line-height:1.65; margin: -6px 0 14px; }
.smart-options { display:grid; gap:10px; margin:8px 0 18px; }
.smart-options.two-col { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.smart-options.single-col { grid-template-columns: 1fr; }
.smart-option { margin:0; min-height:56px; display:flex; align-items:center; justify-content:center; text-align:center; gap:8px; padding:12px 10px; border:1.5px solid #d0d5dd; border-radius:16px; background:#fff; color:#243044; font-weight:850; line-height:1.35; cursor:pointer; box-shadow:0 2px 8px rgba(15,23,42,.03); transition:background .15s ease, border-color .15s ease, color .15s ease, transform .15s ease; }
.smart-option input { position:absolute; opacity:0; pointer-events:none; width:1px; height:1px; }
.smart-option.selected { background:#0f766e; border-color:#0f766e; color:#fff; box-shadow:0 8px 18px rgba(15,118,110,.18); transform:translateY(-1px); }
.smart-small-option { min-height:44px; font-size:13px; }
.smart-nav, .smart-submit-actions { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:18px; }
.smart-nav button, .smart-submit-actions button { min-height:48px; border-radius:14px; padding:12px 18px; }
.smart-next, .smart-generate { flex:1; }
.smart-generate { background:#0f766e; font-size:16px; }
.smart-submit-actions .secondary, .smart-nav .secondary { flex:0 0 auto; min-width:96px; background:#475467; }
.smart-calendar-week, .smart-calendar { display:grid; grid-template-columns: repeat(7, 1fr); gap:6px; }
.smart-calendar-week span { text-align:center; color:#64748b; font-size:12px; font-weight:800; padding-bottom:5px; }
.smart-day { min-height:44px; padding:0; border-radius:13px; background:#f8fafc; color:#334155; box-shadow:none; font-weight:900; }
.smart-day.empty { background:transparent; border:0; }
.smart-day.selected { background:#0f766e; color:#fff; }
.smart-text-input { margin:8px 0 14px; display:none; }
input[name="start_choice"][value="custom"]:checked ~ span {}
.smart-time-label { margin-top:6px; }
.smart-count-block { border:1px solid #e5e7eb; border-radius:16px; padding:14px; margin-bottom:12px; background:#f8fafc; }
.smart-count-block label { margin-bottom:8px; }
.smart-content-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:10px; margin:10px 0 18px; }
.smart-content-card { position:relative; display:flex; flex-direction:column; gap:7px; padding:10px; min-height:138px; border:1.5px solid #d0d5dd; border-radius:17px; background:#fff; cursor:pointer; transition:.15s ease; }
.smart-content-card input { position:absolute; opacity:0; pointer-events:none; }
.smart-content-card.selected { border-color:#0f766e; background:#ecfdf5; box-shadow:0 8px 18px rgba(15,118,110,.14); transform:translateY(-1px); }
.smart-photo-placeholder { display:flex; align-items:center; justify-content:center; height:72px; border-radius:13px; background:linear-gradient(135deg,#e0f2fe,#d1fae5); color:#0f766e; font-size:28px; font-weight:900; }
.smart-content-card strong { font-size:13px; color:#172033; line-height:1.35; }
.smart-content-card small { color:#64748b; font-size:11px; }
.smart-content-tags { display:flex; gap:4px; flex-wrap:wrap; }
.smart-content-tag { font-size:10px; background:#f2f4f7; color:#344054; padding:2px 6px; border-radius:999px; }
.smart-review { border:1px solid #e5e7eb; border-radius:18px; background:#f8fafc; padding:14px; }
.smart-review dl { display:grid; grid-template-columns: 94px 1fr; gap:8px 10px; margin:0; font-size:13px; line-height:1.55; }
.smart-review dt { color:#64748b; font-weight:900; }
.smart-review dd { margin:0; color:#172033; font-weight:700; }
.smart-tag-group { border:1px solid #e5e7eb; border-radius:18px; padding:12px; background:#fcfcfd; margin-bottom:12px; }
.smart-tag-group h3 { margin:0 0 10px; font-size:15px; }
.smart-warning { background:#fff7ed; border:1px solid #fed7aa; color:#9a3412; border-radius:18px; padding:14px; margin-bottom:12px; line-height:1.6; }
.smart-footer { max-width:560px; }
.smart-footer a { color:#0f766e; }
@media (max-width: 480px) {
  .smart-main { padding:10px 8px 18px; }
  .smart-shell { border-radius:20px; min-height:610px; }
  .smart-step { padding:16px; }
  .smart-question { font-size:22px; }
  .smart-option { min-height:54px; padding:10px 8px; font-size:14px; }
  .smart-content-grid { grid-template-columns: 1fr 1fr; gap:8px; }
  .smart-topbar { padding:12px 12px; }
}
.hero-links { display:flex; gap:10px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
@media (max-width:900px){ .hero-links { justify-content:flex-start; margin-top:14px; } .hero-links .admin-link { margin-top:0; } }
.admin-header-row { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.admin-header-links { display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end; }
@media (max-width:700px){ .admin-header-row { display:block; } .admin-header-links { justify-content:flex-start; margin-top:12px; } }

/* v18.4 Smart transport options */
.smart-options.three-col { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.smart-options.area-focus-options { grid-template-columns: 1fr; }
.smart-option.area-focus-option { flex-direction:column; align-items:flex-start; text-align:left; min-height:0; padding:14px 16px; gap:4px; }
.area-focus-desc { font-weight:500; font-size:12.5px; line-height:1.6; color:#5b6472; }
.smart-option.area-focus-option.selected .area-focus-desc { color:rgba(255,255,255,.85); }
.smart-photo-thumb { display:block; height:72px; border-radius:13px; overflow:hidden; background:#e2e8f0; }
.smart-photo-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.smart-day.disabled { opacity:.35; cursor:not-allowed; background:#f1f5f9; color:#94a3b8; }
.leg.taxi .label { background:#fee2e2; color:#991b1b; }
@media (max-width:420px){ .smart-options.three-col { grid-template-columns: 1fr; } }


/* v18.5 Smart loading state */
.smart-loading-panel {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(15, 23, 42, .34);
  backdrop-filter: blur(2px);
}
.smart-loading-card {
  width: min(420px, 100%);
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 18px;
  border-radius: 20px;
  background: #fff;
  color: #172033;
  box-shadow: 0 18px 50px rgba(15,23,42,.22);
}
.smart-loading-card strong { display:block; font-size:16px; line-height:1.5; }
.smart-loading-card p { margin: 3px 0 0; color:#667085; font-size:13px; line-height:1.5; }
.smart-spinner, .smart-button-spinner {
  width: 32px;
  height: 32px;
  border-radius: 999px;
  border: 4px solid #ccfbf1;
  border-top-color: #0f766e;
  animation: smartSpin .72s linear infinite;
  flex: 0 0 auto;
}
.smart-button-spinner {
  width: 18px;
  height: 18px;
  border-width: 3px;
  border-color: rgba(255,255,255,.45);
  border-top-color: #fff;
}
@keyframes smartSpin { to { transform: rotate(360deg); } }
.smart-generate.loading-selected, .smart-generate.loading-selected:disabled {
  background: #0d9488;
  opacity: 1;
  color: #fff;
  box-shadow: 0 0 0 4px rgba(13,148,136,.16), 0 8px 20px rgba(15,118,110,.25);
}
.smart-generate.generating {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.smart-loading .smart-submit-actions .secondary {
  opacity: .55;
  pointer-events: none;
}
@media (max-width: 480px) {
  .smart-loading-card { align-items: flex-start; padding: 16px; }
  .smart-spinner { width: 28px; height: 28px; }
}

.route-cache-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
  margin: 12px 0;
}
.route-cache-stats > div {
  border: 1px solid #d8e2ea;
  border-radius: 12px;
  background: #f8fbfc;
  padding: 10px 12px;
}
.route-cache-stats strong {
  display: block;
  font-size: 1.25rem;
  color: #123c4a;
}
.route-cache-stats span {
  display: block;
  font-size: .82rem;
  color: #5d6b76;
  margin-top: 2px;
}

.admin-menu-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
}
.admin-button-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px;
}
.admin-nav-button {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 74px;
  padding: 16px 18px;
  border-radius: 12px;
  background: #0f766e;
  color: #fff;
  text-decoration: none;
  text-align: center;
  font-size: 16px;
  font-weight: 900;
  line-height: 1.35;
  box-shadow: 0 8px 18px rgba(15,118,110,.16);
}
.admin-button-grid.simple {
  max-width: 880px;
  grid-template-columns: repeat(3, minmax(220px, 1fr));
  gap: 14px;
  margin: 28px 0;
}
.admin-button-grid.simple .admin-nav-button {
  min-height: 58px;
  background: #0f766e;
  color: #fff;
  border: 1px solid #0f766e;
  border-radius: 11px;
  box-shadow: 0 2px 4px rgba(15,118,110,.18);
  font-size: 16px;
  font-weight: 800;
  letter-spacing: 0;
}
.admin-button-grid.simple .admin-nav-button:hover {
  background: #0b5f59;
  color: #fff;
}
@media (max-width: 820px) {
  .admin-button-grid.simple {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .admin-button-grid.simple .admin-nav-button {
    font-size: 15px;
  }
}
.admin-nav-button:hover {
  background: #0b5f59;
  color: #fff;
}
.admin-option-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.admin-option-grid form {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px;
  background: #f8fafc;
}
.admin-option-grid button {
  width: 100%;
  padding: 9px 10px;
}
.admin-menu-card {
  display: block;
  min-height: 126px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  color: var(--text);
  text-decoration: none;
  box-shadow: 0 8px 24px rgba(15,23,42,.04);
}
.admin-menu-card strong {
  display: block;
  font-size: 18px;
  margin-bottom: 8px;
}
.admin-menu-card span {
  display: block;
  color: var(--muted);
  line-height: 1.55;
  font-weight: 600;
}
.admin-menu-card:hover {
  border-color: #0f766e;
  box-shadow: 0 10px 26px rgba(15,118,110,.10);
}
.photo-admin-block {
  border-top: 1px solid var(--line);
  padding-top: 16px;
  margin-top: 16px;
}
.photo-admin-block:first-child {
  border-top: 0;
  padding-top: 0;
  margin-top: 0;
}
.photo-admin-block h3 {
  margin: 0 0 10px;
  font-size: 16px;
}
.photo-admin-block h3 span {
  margin-left: 8px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}
.photo-admin-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}
.photo-admin-card {
  margin: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #f8fafc;
  overflow: hidden;
}
.photo-admin-card img,
.photo-missing {
  width: 100%;
  height: 140px;
  object-fit: cover;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #64748b;
  background: #e2e8f0;
}
.photo-admin-card figcaption {
  min-height: 34px;
  padding: 8px 10px;
  color: #475467;
  font-size: 12px;
  line-height: 1.4;
  word-break: break-word;
}
.photo-admin-card form {
  padding: 0 10px 10px;
}
.photo-admin-card button {
  width: 100%;
  padding: 9px 10px;
}
.job-table td,
.job-table th {
  word-break: break-word;
}

.star-rating { display:flex; gap:4px; align-items:center; }
.star-rating button {
  background: none;
  box-shadow: none;
  padding: 2px;
  border: 0;
  font-size: 26px;
  line-height: 1;
  color: #d0d5dd;
  cursor: pointer;
}
.star-rating button.filled { color: #f59e0b; }
.tag-picker-groups { display:flex; flex-direction:column; gap:8px; margin: 6px 0 14px; }
.tag-picker-group { border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#fcfcfd; }
.tag-picker-group summary { cursor:pointer; padding:10px 12px; font-weight:700; background:#f8fafc; color:#243044; list-style:none; }
.tag-picker-group summary::-webkit-details-marker { display:none; }
.tag-picker-group summary:before { content:'▸ '; }
.tag-picker-group[open] summary:before { content:'▾ '; }
.tag-picker-body { padding:10px 12px 12px; display:flex; flex-wrap:wrap; gap:6px 10px; }
.tag-picker-body label { font-weight:500; font-size:13px; display:flex; align-items:center; gap:6px; margin:0; background:#fff; border:1px solid #eaecf0; border-radius:999px; padding:5px 10px; }
.tag-picker-body input { width:auto; }

.checks-grid { display:flex; flex-wrap:wrap; gap:8px 20px; margin: 10px 0; }
.checks-grid .inline-check { margin: 0; }

.hours-editor, .crowd-editor { margin: 16px 0; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: #fcfcfd; }
.hours-rows, .crowd-rows { display: flex; flex-direction: column; gap: 8px; margin: 8px 0; }
.hours-row, .crowd-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px; border: 1px solid #eaecf0; border-radius: 10px; background: #fff; }
.hours-row input[type="time"], .crowd-row input[type="time"] { width: auto; }
.hours-row-days { display: flex; flex-wrap: wrap; gap: 4px 8px; }
.hours-row-days label { display: inline-flex; align-items: center; gap: 3px; font-size: 12px; font-weight: 500; }
.hours-row-days input { width: auto; }
.crowd-row select { width: auto; }
.hours-closed-block { margin-top: 10px; }
.hours-add-row, .crowd-add-row { margin-top: 4px; }

.smart-map-picker { margin: 10px 0 16px; }
.smart-map-search { margin-bottom: 8px; }
.smart-map-canvas { width: 100%; height: 220px; border-radius: 14px; border: 1px solid #dbe4ef; background: #f1f5f9; }

/* スマート画面: 生成中の進捗表示 */
.smart-loading-body { min-width: 0; flex: 1; }
.smart-loading-progress { width: 100%; height: 8px; background: #e6ebf2; border-radius: 999px; overflow: hidden; margin: 10px 0 6px; }
.smart-loading-bar { height: 100%; width: 3%; background: linear-gradient(90deg, #2f6fed, #58c2a9); border-radius: 999px; transition: width .45s ease; }
.smart-loading-elapsed { color: #6b7686; font-size: 12px; margin: 2px 0 0; }
#smartLoadingStage { margin: 4px 0 0; }

/* USP観光OS v0.3 統合管理画面 */
.admin-os-page{min-height:100vh;padding-left:260px}.os-admin-sidebar{position:fixed;z-index:40;inset:0 auto 0 0;width:260px;background:#0f172a;color:#fff;padding:18px 14px;overflow-y:auto}.os-admin-brand{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0 9px;color:#fff;text-decoration:none;padding:4px 8px 18px;border-bottom:1px solid rgba(255,255,255,.13);margin-bottom:12px}.os-admin-brand span{grid-row:1/3;display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:#0f766e;font-weight:900}.os-admin-brand strong{font-size:19px}.os-admin-brand small{color:#94a3b8}.os-admin-sidebar nav>a,.os-admin-sidebar details a{display:block;color:#dbe4f0;text-decoration:none;padding:9px 11px;border-radius:9px;font-size:14px;font-weight:700;margin:2px 0}.os-admin-sidebar nav>a:hover,.os-admin-sidebar details a:hover,.os-admin-sidebar a.active{background:#0f766e;color:#fff}.os-admin-sidebar details{margin:5px 0}.os-admin-sidebar summary{cursor:pointer;color:#94a3b8;padding:8px 10px 5px;font-size:12px;font-weight:900;letter-spacing:.05em}.os-admin-sidebar details a{padding-left:20px}.os-admin-sidebar-footer{border-top:1px solid rgba(255,255,255,.13);margin-top:15px;padding-top:12px;display:flex;gap:7px;flex-wrap:wrap}.os-admin-sidebar-footer a{color:#a7f3d0;font-size:12px;text-decoration:none;padding:6px}.admin-os-content{min-height:100vh}.admin-os-content>main{max-width:1180px}.admin-os-hero{position:relative}.admin-dashboard-section{margin:0 0 25px}.admin-dashboard-section>h2{font-size:18px;margin:0 0 11px}.admin-menu-card.kiipay-card{border-color:#f3c869;background:#fffbeb}.taxonomy-tag-list{display:flex;flex-direction:column;gap:7px}.taxonomy-tag-row{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:#f8fafc}.taxonomy-tag-row>span{flex:1;font-weight:800}.taxonomy-tag-row form{margin:0}.system-badge{font-size:11px;margin-left:8px;color:#a15c00;background:#fff0cf;border-radius:999px;padding:3px 7px}.app-footer{padding:18px;text-align:center;color:#667085;font-size:12px}@media(max-width:980px){.admin-os-page{padding-left:0;padding-top:58px}.os-admin-sidebar{inset:0 0 auto 0;width:100%;height:58px;display:flex;align-items:center;overflow:visible;padding:7px 10px}.os-admin-brand{border:0;margin:0;padding:0;min-width:160px}.os-admin-brand span{width:38px;height:38px}.os-admin-brand small{display:none}.os-admin-sidebar nav{margin-left:auto;display:flex}.os-admin-sidebar nav>details,.os-admin-sidebar nav>a:not(:first-child),.os-admin-sidebar-footer{display:none}.os-admin-sidebar nav>a{white-space:nowrap}.admin-os-content .hero{padding-top:18px}}

/* USP観光OS v0.3 ポータル */
.portal-page{min-height:100vh;background:#f5f7fb}.portal-hero{background:linear-gradient(130deg,#0f172a 5%,#1e3a8a 65%,#0f766e);color:#fff;padding:0 28px 70px}.portal-nav{max-width:1120px;margin:auto;height:72px;display:flex;align-items:center;justify-content:space-between}.portal-logo{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none}.portal-logo span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:#0f766e;font-size:13px}.portal-logo strong{font-size:20px}.portal-nav nav{display:flex;gap:8px}.portal-nav nav a{color:#dbeafe;text-decoration:none;padding:9px 12px;border-radius:10px}.portal-nav nav a:hover{background:rgba(255,255,255,.14);color:#fff}.portal-copy{max-width:900px;margin:70px auto 0;text-align:center}.portal-copy h1{color:#fff;font-size:clamp(32px,5vw,55px);margin:12px 0 18px;line-height:1.25}.portal-copy>p:last-child{color:#dbeafe;font-size:18px;line-height:1.8}.portal-main{max-width:1120px;margin:-40px auto 0;padding:0 18px 40px}.portal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.portal-feature{display:block;background:#fff;border:1px solid #e4e7ec;border-radius:22px;padding:25px;color:#172033;text-decoration:none;box-shadow:0 14px 35px rgba(15,23,42,.12);transition:.18s transform,.18s box-shadow}.portal-feature:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(15,23,42,.16)}.portal-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:#ecfdf5;color:#0f766e;font-size:28px}.portal-feature.kiipay .portal-icon{background:#fff7df;color:#a15c00}.portal-feature h2{margin:18px 0 9px}.portal-feature p{color:#667085;line-height:1.7;min-height:82px}.portal-feature b{color:#0f766e}.portal-sub{display:flex;justify-content:center;gap:18px;margin-top:25px;flex-wrap:wrap}.portal-sub a{color:#475467}@media(max-width:760px){.portal-hero{padding:0 16px 55px}.portal-nav nav a:first-child{display:none}.portal-nav nav a{font-size:13px;padding:7px}.portal-copy{margin-top:45px}.portal-grid{grid-template-columns:1fr}.portal-feature p{min-height:auto}}

.portal-operations{align-items:center;color:#667085;font-size:13px}.portal-operations span{color:#98a2b3}.portal-operations a{font-size:13px}
.admin-login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f172a,#1e3a8a);padding:20px}.admin-login-shell{width:min(470px,100%);margin:0;padding:0}.admin-login-shell .card{padding:30px}.admin-login-brand{display:flex;align-items:center;gap:12px;margin-bottom:24px}.admin-login-brand>span{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:#0f766e;color:#fff;font-weight:900}.admin-login-brand strong,.admin-login-brand small{display:block}.admin-login-brand strong{font-size:20px}.admin-login-brand small{color:#667085}.admin-login-shell button{width:100%;margin-top:18px}.admin-login-note{margin-top:18px!important;border-top:1px solid #e4e7ec;padding-top:14px}


/* USP観光OS v0.5 共通ページ操作 */
.global-page-actions{position:fixed;top:14px;right:18px;z-index:5000;display:flex;gap:8px;align-items:center}
.global-page-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 15px;border-radius:999px;text-decoration:none;font-weight:800;box-shadow:0 5px 18px rgba(13,35,61,.18)}
.global-home-button{background:#fff;color:#17324d;border:1px solid rgba(23,50,77,.18)}
.global-logout-button{background:#17324d;color:#fff;border:1px solid #17324d}
.hero-links,.smart-top-link,.portal-nav nav{display:none!important}
.demo-auth-notice{border-left:5px solid #2e8b68;background:#f0faf6}
@media(max-width:720px){.global-page-actions{top:8px;right:8px}.global-page-actions a{min-height:34px;padding:0 11px;font-size:13px}}

/* v0.7: ペルソナ背景を見せる半透明モデルコース画面 */
.persona-course-page {
  position: relative;
  min-height: 100vh;
  background: #eff5f7;
  isolation: isolate;
}
.persona-background {
  position: fixed;
  inset: 0;
  z-index: -3;
  overflow: hidden;
  background: #173d4b;
  pointer-events: none;
}
.persona-layer {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  user-select: none;
}
.persona-layer-theme { opacity: .92; }
.persona-layer-transport { opacity: .92; }
.persona-layer-traveler { opacity: .98; }
.persona-background-shade {
  position: absolute;
  inset: 0;
  z-index: 8;
  background:
    linear-gradient(180deg, rgba(7,24,40,.18) 0%, rgba(7,24,40,.06) 36%, rgba(238,246,247,.40) 69%, rgba(238,246,247,.72) 100%),
    linear-gradient(90deg, rgba(7,24,40,.16), transparent 48%, rgba(7,24,40,.08));
}
.persona-result-hero {
  position: relative;
  z-index: 2;
  min-height: 300px;
  padding: 82px max(28px, calc((100vw - 1120px) / 2 + 18px)) 42px;
  background: linear-gradient(100deg, rgba(8,26,44,.86) 0%, rgba(8,26,44,.60) 48%, rgba(8,26,44,.15) 100%);
  border-bottom: 1px solid rgba(255,255,255,.22);
  backdrop-filter: blur(2px);
  align-items: flex-start;
}
.persona-result-hero > div { max-width: 760px; }
.persona-result-hero h1 {
  font-size: clamp(30px, 5vw, 52px);
  line-height: 1.16;
  text-shadow: 0 4px 18px rgba(0,0,0,.22);
}
.persona-result-hero p { max-width: 700px; font-size: 16px; }
.persona-condition-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 20px;
}
.persona-chip {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 7px 12px;
  border: 1px solid rgba(255,255,255,.42);
  border-radius: 999px;
  color: #fff;
  background: rgba(255,255,255,.15);
  backdrop-filter: blur(8px);
  font-size: 13px;
  font-weight: 850;
  box-shadow: 0 4px 14px rgba(0,0,0,.10);
}
.persona-chip-month::before { content: "季節"; margin-right: 7px; color: #d9f99d; font-size: 11px; }
.persona-chip-theme::before { content: "テーマ"; margin-right: 7px; color: #fde68a; font-size: 11px; }
.persona-chip-transport::before { content: "移動"; margin-right: 7px; color: #bae6fd; font-size: 11px; }
.persona-chip-traveler::before { content: "同行者"; margin-right: 7px; color: #fbcfe8; font-size: 11px; }
.persona-result-main {
  position: relative;
  z-index: 2;
  margin-top: 22px;
}
.persona-result-main .card,
.persona-result-main .leg,
.persona-result-main .stay,
.persona-result-main .optional {
  background: rgba(255,255,255,.80);
  border-color: rgba(255,255,255,.70);
  box-shadow: 0 14px 34px rgba(15,23,42,.13);
  backdrop-filter: blur(9px) saturate(1.08);
  -webkit-backdrop-filter: blur(9px) saturate(1.08);
}
.persona-result-main .summary-card {
  top: 10px;
  background: rgba(255,255,255,.84);
}
.persona-result-main .timeline { border-left-color: rgba(15,118,110,.34); }
.persona-result-main .leg::before,
.persona-result-main .stay::before { box-shadow: 0 0 0 4px rgba(240,248,248,.92); }

/* 情報種別ごとの可読性を確保しながら背景を透過 */
.persona-result-main .info-note,
.persona-result-main .meal-note,
.persona-result-main .share-card {
  background-color: rgba(255,255,255,.82);
}
.persona-result-main .warning,
.persona-result-main .error,
.persona-result-main .debug-card {
  background-color: rgba(255,255,255,.88);
}
.persona-result-main .optional {
  background-color: rgba(255,254,247,.78);
}
.persona-result-main .time-box,
.persona-result-main .course-photo,
.persona-result-main .share-row input,
.persona-result-main .debug-json {
  background-color: rgba(248,250,252,.82);
}
.persona-course-page .global-page-actions { z-index: 90; }
@media (max-width: 900px) {
  .persona-result-hero { min-height: 350px; padding: 82px 18px 34px; }
  .persona-result-hero .admin-link { margin-top: 18px; }
  .persona-layer { object-position: 58% center; }
  .persona-layer-traveler { object-position: 64% center; opacity: .88; }
}
@media (max-width: 640px) {
  .persona-result-hero { min-height: 400px; }
  .persona-result-hero h1 { max-width: 88%; }
  .persona-result-hero p { font-size: 14px; max-width: 82%; }
  .persona-condition-chips { max-width: 88%; }
  .persona-chip { padding: 6px 10px; font-size: 12px; }
  .persona-layer-theme { opacity: .72; }
  .persona-layer-transport { opacity: .68; }
  .persona-layer-traveler { opacity: .78; object-position: 72% center; }
  .persona-background-shade {
    background: linear-gradient(180deg, rgba(7,24,40,.20) 0%, rgba(7,24,40,.07) 36%, rgba(238,246,247,.58) 66%, rgba(238,246,247,.84) 100%);
  }
}

/* STEP2-3: 統合管理セッション・検索・周遊エリア管理 */
.admin-session-card { border-left: 4px solid #0f766e; padding-top: 14px; padding-bottom: 14px; }
.admin-session-card p { margin-bottom: 0; }
.button-link.secondary { background: #e2e8f0; color: #0f172a; }
.content-search-form { margin: 14px 0 10px; padding: 14px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 12px; }
.pagination-form { display: flex; gap: 12px; align-items: center; justify-content: center; margin-top: 18px; }
.pagination-form button { width: auto; }
.tour-area-row-grid { display: grid; grid-template-columns: 1.1fr 1.8fr .55fr .55fr .7fr .6fr; gap: 10px; align-items: center; }
.tour-area-row-grid input { margin: 0; }
.tour-area-row-grid button { width: 100%; margin: 0; }
.tour-area-delete-form { margin-top: 8px; justify-content: flex-end; }
.inline-check.compact { margin: 0; }
@media (max-width: 900px) {
  .tour-area-row-grid { grid-template-columns: 1fr; }
}
.route-config-section>.option-group-body{padding:16px 18px}.option-toggle-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:10px;background:#fff}.option-toggle-card label{flex:1;min-width:0}.option-toggle-card button{width:auto;flex:0 0 auto}.featured-admin-list{display:grid;gap:12px;margin:12px 0 24px}.featured-admin-card{display:grid;grid-template-columns:minmax(180px,1fr) minmax(420px,2fr) auto;align-items:center;gap:12px;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fbfcfe}.featured-admin-card small,.featured-candidate-card small{display:block;color:#667085;margin-top:4px}.featured-save-form{display:grid;grid-template-columns:auto 1fr 90px auto;align-items:center;gap:8px}.featured-candidate-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:12px}.featured-candidate-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;display:grid;gap:8px}.featured-candidate-card.already-selected{background:#f0fdf4}.theme-tag-box{border:1px solid var(--line);border-radius:12px;margin:10px 0;background:#fff}.theme-tag-box>summary{cursor:pointer;padding:13px 15px;font-weight:800}.theme-tag-form{padding:0 15px 15px}.tag-checkbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}.release-decision{text-align:center}.release-decision.ready{border-color:#86efac;background:#f0fdf4}.release-decision.blocked{border-color:#fca5a5;background:#fef2f2}.release-decision h2{font-size:34px;margin:6px}.release-check-list{display:grid;gap:10px}.release-check-item{display:grid;grid-template-columns:72px 1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:12px}.release-check-item p{margin:3px 0 0;color:#667085}.release-check-item.ok{border-left:5px solid #16a34a}.release-check-item.warning{border-left:5px solid #f59e0b}.release-check-item.error{border-left:5px solid #dc2626}.release-check-status{font-weight:900;font-size:12px}@media(max-width:800px){.featured-admin-card{grid-template-columns:1fr}.featured-save-form{grid-template-columns:1fr 1fr}.release-check-item{grid-template-columns:60px 1fr}}
.featured-dropdown-add{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:end;margin:12px 0}.featured-dropdown-add label{margin:0}@media(max-width:700px){.featured-dropdown-add{grid-template-columns:1fr}}

/* STEP7-8: Tourism MD identity and question management */
.smart-identity-card{display:flex;align-items:center;gap:14px;flex-wrap:wrap;max-width:760px;margin:0 auto 14px;padding:12px 15px;background:#fff;border:1px solid #dbe4ea;border-radius:15px;box-shadow:0 5px 16px rgba(15,23,42,.05)}
.smart-identity-card>div{display:flex;flex-direction:column;gap:2px;min-width:170px}.smart-identity-card span{font-size:11px;color:#667085;font-weight:800}.smart-identity-card strong{font-size:14px;color:#17324d}.smart-identity-card form{margin-left:auto}.smart-identity-card button{padding:8px 11px;font-size:12px}
.smart-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}.smart-form-grid label{display:flex;flex-direction:column;gap:6px;font-weight:800;color:#344054}.smart-form-grid input,.smart-form-grid select{width:100%}
.smart-accommodation-fields{margin-top:14px;padding:14px;border:1px solid #d0d5dd;border-radius:14px;background:#f8fafc}.smart-consent-check{display:flex;align-items:flex-start;gap:10px;margin:13px 0;padding:13px;border:1px solid #d0d5dd;border-radius:12px;background:#fff}.smart-consent-check input{width:auto;margin-top:3px}.smart-consent-check span{font-weight:700;line-height:1.55}
.md-phase-heading{margin:22px 0 10px;padding-left:10px;border-left:4px solid #0f766e}.md-question-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.md-question-card{border:1px solid #d0d5dd;border-radius:14px;padding:14px;background:#fff}.md-question-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:11px}.md-question-card-head code{font-size:11px;color:#667085}.md-question-card label{display:flex;flex-direction:column;gap:5px;margin-bottom:8px;font-size:12px;font-weight:800}.md-question-flags{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.md-question-flags label{flex-direction:row;margin:0}.md-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.md-detail-grid>div{padding:13px;border:1px solid #e4e7ec;border-radius:12px;background:#f8fafc}.md-detail-grid span,.md-detail-grid strong{display:block}.md-detail-grid span{font-size:12px;color:#667085}.md-detail-grid strong{margin-top:5px}
@media(max-width:760px){.smart-form-grid,.md-question-grid,.md-detail-grid{grid-template-columns:1fr}.smart-identity-card form{margin-left:0;width:100%}.smart-identity-card button{width:100%}}
.preview-question-list{display:grid;gap:12px}.preview-question-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}.preview-question-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.google-import-box{border:1px solid #d0d5dd;border-radius:12px;padding:0;margin-bottom:18px;background:#f8fafc}.google-import-box>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;cursor:pointer}.google-import-box>summary .hint{margin:0}.google-import-body{padding:0 16px 16px;border-top:1px solid #e4e7ec}.google-import-row{display:flex;gap:10px;align-items:center;margin-top:12px}.google-import-row input{flex:1}.google-import-row button{width:auto;flex:0 0 auto}.google-import-overwrite-box{border:1px solid #d0d5dd;border-radius:11px;padding:10px 12px;margin:12px 0;background:#fff}.google-import-overwrite-box legend{padding:0 6px;font-weight:800}.google-import-overwrite-box .hint{margin:0 0 8px}.google-import-overwrite-grid{display:flex;flex-wrap:wrap;gap:8px 16px}.google-import-overwrite-grid label{display:flex;align-items:center;gap:6px;margin:0;font-weight:600}.google-import-overwrite-grid input{width:18px;height:18px;margin:0}.google-import-overwrite-actions{display:flex;gap:7px;margin:0 0 10px}.google-import-overwrite-actions button{width:auto}.google-import-status,.google-geocode-status{min-height:1.4em;margin:6px 0 0;font-weight:700}.google-geocode-panel{margin-top:10px;border-top:1px solid #e4e7ec;padding-top:10px}.google-geocode-panel>summary{cursor:pointer;font-weight:700;color:#344054}@media(max-width:700px){.google-import-box>summary,.google-import-row{align-items:stretch;flex-direction:column}.google-import-row button{width:100%}}

/* STEP9: モデルルート編集・確定 */
.route-manage-page .smart-main{max-width:980px}.route-generation-summary{margin-top:18px}.route-stop-editor{list-style:none;padding:0;margin:18px 0;display:grid;gap:10px}.route-stop-editor>li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border:1px solid rgba(22,52,74,.16);border-radius:12px;background:#fff}.route-stop-editor li small{display:block;color:#61717e;margin-top:3px}.route-edit-buttons{display:flex;gap:6px;flex-shrink:0}.route-edit-buttons button{min-width:42px;padding:8px 10px}.danger-button{background:#fff3f3!important;color:#9d2222!important;border:1px solid #e8b8b8!important}.route-add-row{display:flex;align-items:end;gap:10px;margin:16px 0}.route-add-row label{flex:1}.route-add-row select{width:100%}.empty-route-stop{color:#667780}.route-manage-card{margin-top:16px}.route-manage-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.route-final-badge{display:inline-flex;padding:6px 10px;border-radius:999px;background:#e7f7ed;color:#126b36;font-weight:700}@media(max-width:680px){.route-stop-editor>li,.route-add-row{align-items:stretch;flex-direction:column}.route-edit-buttons{justify-content:flex-end}}

/* STEP10-11: GPS stamp rally and lottery administration */
.stamp-campaign-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.stamp-campaign-card h2{margin-top:4px}.stamp-rule-chips,.stamp-target-list{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.stamp-rule-chips span,.stamp-target-list span{background:#eef5f6;border:1px solid #cadcdf;border-radius:999px;padding:6px 10px;font-size:.9rem}.stamp-participant-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.stamp-participant-summary div{display:flex;flex-direction:column;gap:4px}.stamp-participant-summary strong{font-size:1.15rem}.gps-status{padding:10px;border-radius:8px;background:#f3f6f7}.terms-box{white-space:pre-wrap;padding:12px;background:#f7f7f7;border-radius:8px;max-height:260px;overflow:auto}.stamp-rally-invitation{border:2px solid #7ba8ad}.stamp-campaign-grid.compact article{display:flex;flex-direction:column;gap:8px;padding:12px;background:rgba(255,255,255,.78);border-radius:10px}.admin-checkbox-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:6px;max-height:360px;overflow:auto;padding:8px;border:1px solid #ddd}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.inline-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.inline-form input{min-width:120px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}@media(max-width:900px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.grid-4{grid-template-columns:1fr}}


/* v1.4.1: 旅行者ID管理ツールバー */
.traveler-id-toolbar{display:flex;align-items:flex-end;gap:10px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px}
.traveler-id-search-label{display:flex;align-items:center;gap:8px;min-width:360px;flex:1;margin:0}
.traveler-id-search-label span{white-space:nowrap;font-weight:800}
.traveler-id-search-label input{min-width:190px;margin:0}
.traveler-toolbar-button{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:150px;min-width:150px;height:42px;padding:0 12px;border:0;border-radius:9px;background:#0f766e;color:#fff;text-decoration:none;font-weight:800;line-height:1;cursor:pointer;white-space:nowrap}
.traveler-toolbar-button.secondary{background:#e2e8f0;color:#0f172a}
.traveler-toolbar-button.warning{background:#b45309;color:#fff}
.traveler-cache-actions{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}
.traveler-cache-actions form{margin:0}
.traveler-cache-actions .hint{margin:0;flex:1;min-width:260px}
@media(max-width:760px){.traveler-id-toolbar{align-items:stretch}.traveler-id-search-label{min-width:300px}.traveler-toolbar-button{width:140px;min-width:140px}}

/* v1.5.0: route drag/drop and prize digital stamp rally */
.portal-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.portal-feature.stamp .portal-icon{background:#fff1f2;color:#be123c}
.portal-feature.stamp b{color:#be123c}
.route-stop-editor>li{justify-content:flex-start;transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease}
.route-stop-editor>li[draggable="true"]{cursor:grab}
.route-stop-editor>li.is-dragging{opacity:.58;box-shadow:0 12px 28px rgba(15,23,42,.18);cursor:grabbing}
.route-drag-handle{flex:0 0 38px;min-width:38px;padding:9px 6px;background:#eef4f5!important;color:#46616c!important;border:1px solid #cbd9dd!important;font-size:18px;line-height:1;cursor:grab;touch-action:none}
.route-stop-copy{flex:1;min-width:0}
.route-add-panel{border:1px solid #d9e3e5;border-radius:14px;padding:16px;background:#f8fbfb;margin:18px 0}
.route-add-panel h3{margin-top:0}
.route-candidate-filters{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(190px,1.2fr) minmax(220px,1.5fr) auto;gap:10px;align-items:end}
.route-candidate-filters label{margin:0}
.route-candidate-filters input,.route-candidate-filters select{width:100%}
.stamp-rally-page main{max-width:1100px}
.stamp-entry-guide{border-left:5px solid #0f766e}
.stamp-id-login-form{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:end}
.stamp-id-login-form label{margin:0}
.stamp-current-id{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr)) minmax(300px,1.5fr);gap:14px;align-items:end}
.stamp-current-id>div{display:flex;flex-direction:column;gap:4px}
.stamp-current-id>div span{color:#667085;font-size:.85rem}
.stamp-current-id>div strong{font-size:1.08rem;word-break:break-all}
.stamp-required-profile{border:2px solid #b88714}
.stamp-decline-form{margin-top:10px}
.stamp-area-board{display:flex;flex-wrap:wrap;gap:12px;margin:14px 0}
.stamp-area-badge{width:150px;min-height:120px;border:2px dashed #aab7bb;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:12px;background:#fafcfc}
.stamp-area-badge.is-stamped{border-style:solid;border-color:#0f766e;background:radial-gradient(circle,#ecfdf5,#d1fae5);box-shadow:inset 0 0 0 5px rgba(15,118,110,.12)}
.stamp-area-badge span{font-size:.72rem;letter-spacing:.15em;color:#0f766e;font-weight:800}
.stamp-area-badge strong{margin:5px 0}
.stamp-area-badge small{color:#667085}
.stamp-history-list{display:grid;gap:12px}
.stamp-history-item{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid #dde5e7;border-radius:14px;padding:12px;background:#fff}
.stamp-history-thumbnail{width:110px;height:110px;border-radius:10px;overflow:hidden;background:#eef2f3;display:grid;place-items:center;color:#667085;font-size:.78rem;text-align:center}
.stamp-history-thumbnail img{width:100%;height:100%;object-fit:cover}
.stamp-history-copy{display:flex;flex-direction:column;gap:4px;min-width:0}
.stamp-history-copy>strong{font-size:1.1rem}
.stamp-history-copy>span:not(.status){color:#475467}
.stamp-history-copy dl{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:6px 0;font-size:.88rem}
.stamp-history-copy dt{color:#667085}.stamp-history-copy dd{margin:0}
@media(max-width:1050px){.portal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.route-candidate-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.stamp-current-id{grid-template-columns:repeat(2,minmax(0,1fr))}.stamp-current-id form{grid-column:1/-1}}
@media(max-width:680px){.portal-grid,.route-candidate-filters,.stamp-id-login-form,.stamp-current-id{grid-template-columns:1fr}.stamp-history-item{grid-template-columns:86px minmax(0,1fr)}.stamp-history-thumbnail{width:86px;height:86px}.stamp-history-item form{grid-column:1/-1}.route-stop-editor>li{display:grid;grid-template-columns:38px minmax(0,1fr)}.route-edit-buttons{grid-column:1/-1;justify-content:flex-end}}
.confirm-dialog{border:0;border-radius:16px;padding:0;max-width:480px;width:calc(100% - 32px);box-shadow:0 24px 70px rgba(15,23,42,.3)}.confirm-dialog::backdrop{background:rgba(15,23,42,.58)}.confirm-dialog-card{padding:22px}.confirm-dialog-card h2{margin-top:0}

/* STEP14: instant lottery, identity verification and area stamp UI */
.segmented-choice{display:flex;flex-wrap:wrap;gap:.6rem;margin:.5rem 0}.segmented-choice label{display:flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid #cbd5e1;border-radius:999px;padding:.55rem .9rem;background:#fff;cursor:pointer;white-space:nowrap;flex:0 1 auto;min-width:-webkit-fit-content;min-width:fit-content}.choice-field{border:1px solid #dbe4ee;border-radius:14px;padding:1rem}.choice-field legend{font-weight:700;padding:0 .4rem}.conditional-field{margin-top:.8rem}.is-hidden{display:none!important}.consent-check{display:grid!important;grid-template-columns:auto 1fr;align-items:start!important;column-gap:.65rem}.consent-check input{margin-top:.25rem}.step-list{display:grid;gap:.8rem;padding-left:1.25rem}.step-list li span{display:block;color:#536273;margin-top:.2rem}.verification-card{border-left:5px solid #2563eb}.wrap-form{flex-wrap:wrap}.compact-form{max-width:720px}.stamp-area-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem;border:1px solid #dce4ec;border-radius:14px;padding:.9rem;background:#fff}.stamp-area-card.status-acquired{border-color:#86c7a0;background:#f1fbf5}.stamp-area-card.status-incomplete{border-color:#e4b85d;background:#fff9e9}.stamp-area-card.status-not_acquired{background:#f8fafc}.stamp-area-icon{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:50%;background:#e9eef4;font-weight:800}.status-acquired .stamp-area-icon{background:#15803d;color:#fff}.status-incomplete .stamp-area-icon{background:#d97706;color:#fff}.stamp-area-card strong,.stamp-area-card span,.stamp-area-card small{display:block}.all-areas-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:.8rem}.stamp-count-large{font-size:1.35rem}.lottery-round-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}.lottery-round-card{border:1px solid #dbe4ee;border-radius:14px;padding:1rem;background:#fbfdff}.lottery-result-badge{display:inline-block;padding:.45rem .8rem;border-radius:999px;font-weight:800;margin:.4rem 0}.lottery-result-badge.winner{background:#fff1b8;color:#7c5100}.lottery-result-badge.lost{background:#eef1f5;color:#4b5563}.lottery-stage{text-align:center;padding:2rem}.lottery-reel{font-size:clamp(1.6rem,6vw,3.6rem);font-weight:900;min-height:5rem;display:grid;place-items:center;animation:lotteryPulse .5s ease-in-out infinite alternate}.lottery-final h2{font-size:clamp(1.8rem,5vw,3rem)}@keyframes lotteryPulse{from{transform:scale(.96);opacity:.65}to{transform:scale(1.04);opacity:1}}.correction-alert{border-left:5px solid #d97706}.warning-text{color:#9a3412;font-weight:700}.required-mark{font-size:.78rem;color:#b45309;margin-left:.35rem}.survey-lottery-card{border:2px solid #9bb8da;background:linear-gradient(135deg,#f8fbff,#eef6ff)}.mail-preview{white-space:pre-wrap;max-width:42rem;background:#f8fafc;padding:.7rem;border-radius:8px}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem}.metric-grid>div{border:1px solid #dbe4ee;border-radius:12px;padding:.8rem}.metric-grid span,.metric-grid strong{display:block}.metric-grid strong{font-size:1.5rem}.button-link.small{padding:.45rem .7rem;font-size:.86rem}.lottery-result-page main{max-width:900px}.legacy-lottery{margin-top:1rem}
@media(max-width:720px){.stamp-area-card{grid-template-columns:auto 1fr}.stamp-area-card .button-link{grid-column:1/-1;width:100%;text-align:center}.segmented-choice label{flex:1;justify-content:center}.lottery-stage{padding:1.2rem}.admin-checkbox-grid{grid-template-columns:1fr}}

/* STEP15: model-route decision dialog and behavior analytics */
.route-reason-dialog{border:0;border-radius:18px;padding:0;max-width:min(92vw,560px);box-shadow:0 24px 80px rgba(15,23,42,.28)}
.route-reason-dialog::backdrop{background:rgba(15,23,42,.55)}
.route-reason-dialog form{padding:24px;display:grid;gap:16px}
.route-reason-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.route-reason-options label{display:flex;align-items:center;gap:8px;border:1px solid #dbe3ee;border-radius:12px;padding:11px;background:#fff}
.route-reason-options input{width:auto;margin:0}
.funnel-steps{display:grid;gap:8px}
.funnel-step{display:grid;grid-template-columns:minmax(150px,1.4fr) repeat(3,minmax(80px,.6fr));gap:10px;align-items:center;padding:12px;border:1px solid #e2e8f0;border-radius:12px}
.funnel-step strong{font-size:1.05rem}
.funnel-step .conversion{font-weight:700;color:#475569}
.event-metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.event-metric{border:1px solid #e2e8f0;border-radius:14px;padding:16px;background:#fff}
.event-metric span{display:block;color:#64748b;font-size:.85rem}.event-metric strong{font-size:1.5rem}
@media(max-width:720px){.route-reason-options{grid-template-columns:1fr}.funnel-step{grid-template-columns:1fr 1fr}.funnel-step .funnel-label{grid-column:1/-1}}

/* STEP16: 観光チェックイン・旅の思い出・データ充足率 */
.checkin-place-card{display:grid;grid-template-columns:minmax(160px,280px) 1fr;gap:20px;align-items:center}.checkin-place-photo{width:100%;max-height:220px;object-fit:cover;border-radius:16px}.memory-timeline{display:grid;gap:16px}.memory-card{display:grid;grid-template-columns:180px 1fr;gap:18px;padding:16px;border:1px solid #dbe3ea;border-radius:16px;background:#fff}.memory-card>img{width:100%;height:150px;object-fit:cover;border-radius:12px}.memory-card time{font-size:.82rem;color:#64748b}.memory-card h3{margin:.25rem 0}.memory-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:.88rem;color:#475569}.completion-total{font-size:2rem}.completion-bars{display:grid;gap:10px}.completion-bars>div{display:grid;grid-template-columns:90px 1fr 55px;gap:10px;align-items:center}.completion-track{height:10px;border-radius:99px;background:#e2e8f0;overflow:hidden}.completion-track i{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#14b8a6)}.micro-survey-dialog{border:0;border-radius:20px;padding:0;max-width:540px;width:calc(100% - 32px);box-shadow:0 24px 80px rgba(15,23,42,.3)}.micro-survey-dialog::backdrop{background:rgba(15,23,42,.56)}.micro-survey-card{padding:26px;position:relative}.micro-close{position:absolute;right:12px;top:10px;border:0;background:transparent;color:#64748b;font-size:1.6rem}.micro-options{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.micro-options label input{position:absolute;opacity:0}.micro-options label span{display:block;padding:10px 15px;border:1px solid #cbd5e1;border-radius:999px;cursor:pointer}.micro-options label input:checked+span{background:#0f766e;color:white;border-color:#0f766e}@media(max-width:700px){.checkin-place-card,.memory-card{grid-template-columns:1fr}.memory-card>img{height:210px}.completion-bars>div{grid-template-columns:76px 1fr 48px}}

/* STEP17: 流入QR管理 */
.source-qr-table th,.source-qr-table td{vertical-align:top;white-space:nowrap}
.source-qr-thumb{width:76px;height:76px;object-fit:contain;background:#fff;border:1px solid #d9dfe7;border-radius:8px;display:block;margin-bottom:4px}
.compact-actions{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.compact-actions .button-link,.compact-actions button{font-size:.82rem;padding:.45rem .65rem}
.muted-row{opacity:.67;background:#f7f7f7}
.qr-enabled-check{align-self:end;min-height:44px}
.qr-detailed-fields{padding:14px;border:1px dashed #c9d3df;border-radius:10px;background:#f8fafc;margin:8px 0 14px}
.section-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
@media(max-width:900px){.source-qr-table{min-width:1180px}.source-qr-thumb{width:64px;height:64px}}

/* v2.0.1: GPSスタンプ管理画面の入力性・説明性を改善 */
.campaign-datetime-grid{align-items:start}
.campaign-datetime-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.campaign-datetime-field .field-label,.help-label>span{font-weight:700;color:#243b3f}
.campaign-datetime-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.campaign-datetime-controls input[type="date"]{flex:1 1 170px;min-width:150px}
.campaign-datetime-controls select{width:auto;min-width:68px}
.campaign-datetime-controls span{white-space:nowrap}
.form-field-narrow{max-width:320px}
.admin-settings-group{padding:16px;border:1px solid #cbdadc;border-radius:12px;background:rgba(246,250,250,.8)}
.admin-settings-group legend{font-weight:700;padding:0 8px}
.help-label{position:relative}
.field-help{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;margin-left:3px;border:1px solid #78969b;border-radius:50%;font-size:.78rem;line-height:1;color:#315b61;background:#fff;cursor:help;vertical-align:middle}
.field-help::after{content:attr(data-tooltip);position:absolute;z-index:50;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%);width:min(320px,80vw);padding:10px 12px;border-radius:8px;background:#18383e;color:#fff;font-weight:400;font-size:.82rem;line-height:1.5;box-shadow:0 6px 20px rgba(0,0,0,.22);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease}
.field-help:hover::after,.field-help:focus::after,.field-help:focus-visible::after{opacity:1;visibility:visible}
.admin-checkbox-grid label{display:flex;align-items:flex-start;gap:8px;margin:0;padding:9px 10px;border-radius:8px;cursor:pointer;line-height:1.4}
.admin-checkbox-grid label:hover{background:#f0f6f7}
.admin-checkbox-grid label input[type="checkbox"]{flex:0 0 auto;margin:2px 0 0}
.admin-checkbox-grid label span{flex:1;min-width:0}
.area-checkbox-grid label{border:1px solid #d9e4e6;background:#fff}
.area-checkbox-grid label:has(input:checked){border-color:#5c8f97;background:#eaf4f5}
@media(max-width:720px){.campaign-datetime-controls input[type="date"]{flex-basis:100%}.campaign-datetime-controls select{min-width:74px}.field-help::after{left:0;transform:none}}

.admin-security-warning{border:2px solid #f59e0b;background:#fff7ed;color:#9a3412}.admin-security-warning strong{font-size:1.05rem}.admin-security-warning p{margin:.4rem 0 0;line-height:1.6}.copy-url-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center}.copy-url-row .button-link{white-space:nowrap}@media(max-width:720px){.copy-url-row{grid-template-columns:1fr}.copy-url-row button,.copy-url-row .button-link{width:100%;text-align:center}}

/* v2.0.3: visible version badge and horizontal checkbox labels */
.brand-version{display:inline-flex;align-items:center;margin-left:6px;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.16);color:inherit;font-size:10px;font-style:normal;font-weight:700;line-height:1.4;white-space:nowrap;vertical-align:middle}
.admin-login-brand .brand-version,.map-brand .brand-version{background:#eaf4f5;color:#356a72}
.admin-checkbox-grid label,.area-checkbox-grid label{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start;gap:9px}
.admin-checkbox-grid label input[type=checkbox],.area-checkbox-grid label input[type=checkbox]{display:inline-block!important;position:static!important;width:18px!important;height:18px!important;margin:0!important;flex:0 0 18px!important}
.admin-checkbox-grid label span,.area-checkbox-grid label span{display:inline!important;flex:1 1 auto!important}
/* v2.2.0 draft / preview / publish */
.publication-preview-banner{position:sticky;top:0;z-index:9999;display:flex;align-items:center;justify-content:center;gap:14px;padding:11px 18px;background:#fff3cd;color:#614a00;border-bottom:2px solid #e4b100;box-shadow:0 2px 10px rgba(0,0,0,.12);font-size:14px}.publication-preview-banner strong{font-size:15px}.publication-preview-banner span{line-height:1.5}.publication-steps{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.publication-steps span{padding:9px 13px;border-radius:999px;background:#eef4ff;font-weight:700}.publication-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.publication-actions .publish-button{background:#176b3a}.publication-state{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-radius:10px;background:#f3f6fa;margin:8px 0}.publication-state .draft-badge{background:#fff3cd;color:#664d03;padding:4px 9px;border-radius:999px;font-weight:700}.publication-page-card{border:1px solid #dce3ea;border-radius:12px;padding:0 14px;margin:12px 0}.publication-page-card>summary{display:flex;justify-content:space-between;gap:16px;padding:14px 0;cursor:pointer}.version-list form,.admin-main td form{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0}.preview-viewport-controls{position:sticky;top:52px;z-index:100;display:flex;gap:8px;justify-content:center;padding:8px;background:rgba(255,255,255,.94);border-bottom:1px solid #ddd}.preview-frame-wrap{margin:auto;transition:max-width .2s}.preview-frame-wrap.preview-tablet{max-width:768px}.preview-frame-wrap.preview-mobile{max-width:390px}@media(max-width:720px){.publication-preview-banner{align-items:flex-start;flex-direction:column;gap:3px}.publication-page-card>summary{flex-direction:column}.publication-actions>*{width:100%}}

/* v2.2.0: admin preview viewport */
.preview-frame-page{margin:0;background:#e9eef4;min-height:100vh;overflow:hidden}
.preview-frame-toolbar{height:72px;box-sizing:border-box;background:#13233a;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px 18px}
.preview-frame-toolbar>div:first-child{display:flex;flex-direction:column;gap:3px}.preview-frame-toolbar span{font-size:.82rem;opacity:.82}
.preview-frame-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.preview-frame-actions button,.preview-frame-actions .button-link{margin:0;width:auto}
.preview-frame-actions button.active{outline:3px solid rgba(255,255,255,.42)}
.preview-frame-stage{height:calc(100vh - 72px);overflow:auto;padding:18px;box-sizing:border-box;display:flex;justify-content:center;align-items:flex-start}
.preview-frame-viewport{height:calc(100vh - 108px);background:#fff;box-shadow:0 12px 36px rgba(15,23,42,.24);transition:width .2s ease;overflow:hidden}
.preview-frame-viewport.desktop{width:min(1440px,100%)}.preview-frame-viewport.tablet{width:768px}.preview-frame-viewport.mobile{width:390px}
.preview-frame-viewport iframe{width:100%;height:100%;border:0;background:#fff}
@media(max-width:760px){.preview-frame-toolbar{height:auto;align-items:flex-start;flex-direction:column}.preview-frame-stage{height:calc(100vh - 132px);padding:8px}.preview-frame-viewport{height:calc(100vh - 150px);max-width:100%}}

/* v2.3.3 周遊エリア管理 */
.tour-area-table { table-layout: fixed; min-width: 780px; }
.tour-area-table .col-id { width: 18%; }
.tour-area-table .col-name { width: 28%; }
.tour-area-table .col-order { width: 8%; }
.tour-area-table .col-count { width: 13%; }
.tour-area-table .col-state { width: 13%; }
.tour-area-table .col-actions { width: 20%; }
.tour-area-table td { vertical-align: middle; }
.tour-area-table td > input { width: 100%; margin: 0; }
.tour-area-create-form .field-label { display: block; margin-bottom: 6px; }
.tour-area-create-form .readonly-field { display: block; width: 100%; box-sizing: border-box; padding: 10px 12px; border: 1px solid #cbd5e1; border-radius: 6px; background: #f8fafc; color: #475569; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
.tour-area-id-cell { display: flex; align-items: center; gap: 8px; min-width: 0; }
.tour-area-id-cell code { overflow-wrap: anywhere; }
.tour-area-drag-handle { width: 34px; min-width: 34px; margin: 0; padding: 6px; cursor: grab; background: #f8fafc; color: #475569; border: 1px solid #cbd5e1; }
.tour-area-drag-handle:active { cursor: grabbing; }
.tour-area-row.dragging { opacity: .55; background: #eff6ff; }
.tour-area-row.drag-over { box-shadow: inset 0 2px 0 #2563eb; }
.tour-area-order-cell { text-align: center !important; font-variant-numeric: tabular-nums; font-weight: 700; }
.tour-area-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tour-area-actions form { margin: 0; }
.tour-area-actions button { margin: 0; white-space: nowrap; }
.error-text { color: #b91c1c !important; }
@media (max-width: 720px) {
  .tour-area-table { min-width: 720px; }
  .tour-area-drag-handle { min-height: 40px; }
}

/* v2.3.0 アンケートマスター */
.survey-question-list { display: grid; gap: 16px; }
.survey-question-card { border: 1px solid #cbd5e1; border-radius: 12px; padding: 16px; background: #fff; }
.survey-question-card.dragging { opacity: .55; background: #eff6ff; }
.survey-question-card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.survey-question-drag { width: 36px; min-width: 36px; margin: 0; cursor: grab; background: #f8fafc; color: #475569; border: 1px solid #cbd5e1; }
.sticky-publication-actions { position: sticky; bottom: 8px; z-index: 5; box-shadow: 0 8px 30px rgba(15,23,42,.15); }
.survey-dynamic-page main { max-width: 820px; margin: 0 auto; }
.survey-section { display: grid; gap: 20px; }
.survey-question { padding-bottom: 16px; border-bottom: 1px solid #e2e8f0; }
.survey-question:last-child { border-bottom: 0; }
.survey-question-label { display: block; font-weight: 700; margin-bottom: 8px; }
.survey-question-label em { display: inline-block; margin-left: 8px; color: #b91c1c; font-size: 12px; font-style: normal; }
.survey-choice-grid { display: grid; gap: 8px; margin-top: 8px; }
.survey-rating { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.survey-rating label { cursor: pointer; }
.survey-rating input { position: absolute; opacity: 0; }
.survey-rating span { display: grid; place-items: center; min-width: 42px; min-height: 42px; border: 1px solid #94a3b8; border-radius: 9px; background: #fff; }
.survey-rating input:checked + span { background: #1d4ed8; color: #fff; border-color: #1d4ed8; }
.survey-reuse-summary { background: #eff6ff; border-color: #93c5fd; }
.preview-condition-summary { background: #fff7ed; border-color: #fdba74; }

/* コースパターン選択画面 */
.pattern-grid { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.pattern-card { display: flex; flex-direction: column; gap: 12px; }
.pattern-stop-list { list-style: decimal; margin: 0; padding-left: 20px; display: grid; gap: 8px; }
.pattern-stop-list li { display: flex; flex-direction: column; }
.pattern-stop-name { font-weight: 700; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pattern-stop-area { font-weight: 500; font-size: 11px; color: #1d4ed8; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 999px; padding: 2px 8px; white-space: nowrap; }
.pattern-stop-tags { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 2px; }
.pattern-stop-tag { font-size: 12px; font-weight: 600; color: #1d4ed8; }
.pattern-stop-desc { margin: 3px 0 0; font-size: 12px; color: #667085; line-height: 1.5; }
.pattern-card form { margin-top: auto; }
.pattern-card button[type="submit"] { width: 100%; }
.pattern-mode-badge { display: inline-block; margin-left: 8px; font-size: 12px; font-weight: 700; color: #0f766e; background: #ecfdf5; border: 1px solid #99f6e4; border-radius: 999px; padding: 3px 10px; vertical-align: middle; }

/* マッチング度・カスタムコース選択画面 */
.match-candidate-grid { display: grid; gap: 16px; grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .match-candidate-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .match-candidate-grid { grid-template-columns: 1fr; } }
.match-candidate-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 16px 16px 16px 44px;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  background: #fff;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.match-candidate-card:has(.match-candidate-check:checked) { border-color: #1d4ed8; border-width: 2px; padding: 15px 15px 15px 43px; background: #eff6ff; }
.match-candidate-card:has(.match-candidate-check:disabled:not(:checked)) { opacity: .4; cursor: not-allowed; }
.match-candidate-check { position: absolute; opacity: 0; width: 24px; height: 24px; left: 12px; top: 16px; margin: 0; cursor: pointer; }
.match-candidate-checkmark {
  position: absolute;
  left: 14px;
  top: 18px;
  width: 20px;
  height: 20px;
  border: 2px solid #94a3b8;
  border-radius: 6px;
  background: #fff;
  pointer-events: none;
}
.match-candidate-check:checked + .match-candidate-checkmark {
  background: #1d4ed8;
  border-color: #1d4ed8;
}
.match-candidate-check:checked + .match-candidate-checkmark::after {
  content: "";
  position: absolute;
  left: 6px;
  top: 2px;
  width: 5px;
  height: 10px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.match-percent-badge { align-self: flex-start; font-weight: 700; font-size: 12px; color: #b45309; background: #fffbeb; border: 1px solid #fde68a; border-radius: 999px; padding: 4px 10px; white-space: nowrap; }
.match-candidate-name { font-weight: 700; line-height: 1.4; }
.match-candidate-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* 旅行者セグメント分析：ピボット表 */
.segment-pivot-controls { display: flex; gap: 16px; flex-wrap: wrap; margin: 10px 0; }
.segment-pivot-controls label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; font-weight: 700; color: #475569; }
.segment-pivot-controls select { padding: 6px 10px; border: 1px solid #cbd5e1; border-radius: 8px; font-weight: 500; }
.segment-pivot-summary { font-weight: 700; }
.segment-pivot-table td, .segment-pivot-table th { text-align: center; }
.segment-pivot-table thead th:first-child, .segment-pivot-table tbody th { text-align: left; }
.segment-total-row, .segment-total-cell { background: #f8fafc; font-weight: 700; }
.segment-highlight-row { background: #eff6ff; }
.segment-highlight-col { background: #eff6ff; }
.segment-highlight-cell { background: #1d4ed8 !important; color: #fff; font-weight: 800; }

/* 結果画面：条件変更フローティングボタン */
.hero-recustomize-cta {
  position: fixed;
  left: 50%;
  bottom: 20px;
  transform: translateX(-50%);
  z-index: 95;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 14px 30px;
  border-radius: 999px;
  background: #fff;
  color: #0b3b52;
  font-weight: 800;
  font-size: 15px;
  text-decoration: none;
  white-space: nowrap;
  border: 1px solid rgba(255,255,255,.7);
  box-shadow: 0 10px 26px rgba(0,0,0,.30);
  transition: transform .15s ease, box-shadow .15s ease;
}
.hero-recustomize-cta::before { content: "⚙"; font-size: 14px; }
.hero-recustomize-cta:hover { transform: translateX(-50%) translateY(-2px); box-shadow: 0 14px 32px rgba(0,0,0,.34); }

/* 結果画面：共有・保存カード */
.save-html-cta { display:inline-block; margin-top:10px; padding:12px 20px; font-size:15px; background:#ea580c; box-shadow:0 4px 12px rgba(234,88,12,.35); }
.save-html-cta:hover { background:#c2410c; }
.share-more { margin-top:14px; }
.share-more summary { cursor:pointer; color:#475569; font-size:13px; font-weight:700; }
.share-more[open] summary { margin-bottom:6px; }
.segment-subheading { margin: 18px 0 6px; font-size: 15px; }

/* 結果画面：概算表示から正確な時間計算へのアップグレード導線 */
.quick-estimate-banner { background:#fefce8; border-color:#fde68a; color:#854d0e; }
.quick-estimate-banner strong { display:block; margin-bottom:4px; }
.quick-full-cta { display:inline-block; margin-top:10px; padding:12px 22px; font-size:15px; background:#ca8a04; box-shadow:0 4px 12px rgba(202,138,4,.30); }
.quick-full-cta:hover { background:#a16207; }
