/* One connected manual flow. Rider keeps a phone-shaped UI at every viewport. */
.manual-experience #workspace-nav{display:none!important}
.manual-experience .workspace-heading{margin-bottom:18px}
.manual-experience .workspace-heading h1{font-size:30px}
.manual-experience #role-kicker{display:none}
.manual-details{border:1px solid #111;background:#fff;margin-top:16px;padding:0;min-width:0}
.manual-details>summary{font-size:19px;font-weight:700;line-height:1.4;padding:16px;min-height:58px;cursor:pointer}
.manual-details[open]>summary{border-bottom:1px solid #DADADA}
.manual-details .ride-column{padding:16px}
#record-tools{border:0;border-bottom:1px solid #DADADA;margin:0 0 16px}
#record-tools>summary{font-size:16px;padding:12px 0;min-height:48px}
#record-tools[open]{padding-bottom:12px}
.experience-next{border:1px solid #111;background:#f0f0eb;display:flex;gap:20px;justify-content:space-between;align-items:center;padding:16px;margin:0 0 18px}
.experience-tag{font-size:13px;font-weight:800;letter-spacing:.04em}
.experience-next p{font-size:18px;line-height:1.5;margin:7px 0 0}
.experience-next button{font-size:18px;min-height:56px;background:var(--accent);color:#111;border:1px solid #111;flex-shrink:0}
.manual-experience .support{margin-top:24px;border:1px solid #DADADA;padding:0;background:transparent}
.manual-experience .support>summary{font-size:17px;font-weight:700;min-height:52px;padding:14px;cursor:pointer}
.manual-experience .support p{font-size:14px;margin:0;padding:0 14px 16px}
.map-reset{position:absolute;left:10px;bottom:22px;z-index:450;background:white;color:#111;border:1px solid #111;min-height:44px;font-size:16px;font-weight:700;padding:8px 12px}
.map-reset:focus-visible{outline:3px solid #111;outline-offset:3px}

/* Passenger: the map and LINE-style conversation are always connected. */
.rider-ui{padding-bottom:calc(134px + env(safe-area-inset-bottom))}
.rider-ui:not(.has-user-action){padding-bottom:24px}
.rider-ui:not(.has-user-action) .message{bottom:12px}
.rider-ui .topbar,.rider-ui .demo-shell,.rider-ui main,.rider-ui footer{max-width:540px;margin-inline:auto}
.rider-ui .test-strip{display:none}
.rider-ui .topbar{padding:7px 12px;gap:8px;min-height:52px}
.rider-ui .account{display:none}
.rider-ui .brand:after{content:"体験版";font-size:12px;letter-spacing:0;border:1px solid #111;padding:3px 6px;margin-left:6px}
.rider-ui .brand{font-size:19px;gap:8px}
.rider-ui .brand-symbol{height:30px;width:30px}
.rider-ui .brand small,.rider-ui .account>span{display:none}
.rider-ui .account .text-button{font-size:14px;min-height:44px;padding:6px 0}
.rider-ui .demo-shell{padding:0 12px}
.rider-ui .demo-roles{padding-top:8px;grid-template-columns:1fr 1.23fr .87fr}
.rider-ui .demo-roles a{font-size:16px;min-height:44px;padding:8px 4px;line-height:1.3}
.rider-ui .demo-scope{font-size:12px;line-height:1.4;margin:6px 0 0}
.rider-ui main{padding:8px 12px 12px}
.rider-ui .workspace-heading,.rider-ui .journey-heading{display:none}
.rider-ui .journey{margin:0}
.rider-ui .journey-steps{margin:0 0 10px;border:1px solid #111;grid-template-columns:repeat(4,minmax(0,1fr))}
.rider-ui .journey-steps li{min-height:44px;padding:4px 2px;flex-direction:column;gap:2px}
.rider-ui .journey-steps span{font-size:17px;line-height:1.1}
.rider-ui .journey-steps b{font-size:14px}
.rider-ui .journey-steps li:not(:last-child):after{display:none}
.rider-ui .journey-steps li+li{border-left:1px solid #aaa}
.rider-ui .journey-grid{display:flex;flex-direction:column;border:1px solid #111;overflow:hidden}
.rider-ui .map-panel{padding-top:8px}
.rider-ui .place-tabs{padding:0 8px 8px;gap:8px}
.rider-ui .place-tabs button{min-height:62px;padding:7px;text-align:left}
.rider-ui .place-tabs button[aria-pressed=true]{padding:6px}
.rider-ui .place-tabs small{font-size:14px;margin-bottom:3px}
.rider-ui .place-tabs strong{font-size:18px;line-height:1.3}
.rider-ui .map-prompt{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;min-height:0}
.rider-ui #journey-map{height:240px}
.rider-ui .map-note{font-size:12px;line-height:1.4;margin:0;padding:5px 8px}
.rider-ui .chat-panel{border:0;border-top:1px solid #111}
.rider-ui .chat-heading{padding:4px 10px;gap:8px;min-height:48px}
.rider-ui .chat-heading>.guide-avatar{width:28px;height:28px;font-size:20px}
.rider-ui .chat-heading h3{font-size:18px}
.rider-ui .chat-heading p{display:none}
#journey-example{font-size:15px;min-height:44px;padding:6px 2px;margin-left:auto;white-space:nowrap}
.rider-ui .chat-messages{min-height:110px;max-height:154px;padding:12px;scroll-behavior:auto;overscroll-behavior:auto}
.rider-ui .chat-row{grid-template-columns:27px minmax(0,1fr);gap:4px 8px;margin-bottom:14px}
.rider-ui .chat-row.user{grid-template-columns:1fr}
.rider-ui .chat-row .guide-avatar{width:27px;height:27px}
.rider-ui .chat-bubble{font-size:19px;line-height:1.4;padding:10px 13px;max-width:100%}
.rider-ui .chat-time{font-size:12px}
.rider-ui .chat-choices{gap:8px;padding:6px 12px 12px}
.rider-ui .journey.has-map #journey-choices[data-kind=stops]{display:none}
.rider-ui #journey-choices[data-kind=people]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.rider-ui .chat-choices button{font-size:20px;min-height:54px;padding:8px 10px}
.rider-ui .chat-composer{padding:10px;gap:8px}
.rider-ui .chat-composer input{min-width:0;min-height:56px;font-size:18px;padding:10px 12px}
.rider-ui .chat-composer button{min-height:56px;font-size:18px;padding:10px;white-space:nowrap}
.rider-ui .chat-help{font-size:12px;padding:0 12px 10px;line-height:1.4;margin:0}
.rider-ui .journey-summary{border:0;margin:0;padding:14px}
.rider-ui .selection-heading{display:block}
.rider-ui .selection-heading h3{font-size:21px;margin:0 0 8px}
.rider-ui .selection-tools{gap:12px;flex-wrap:wrap}
.rider-ui .selection-tools button{font-size:16px;min-height:48px}
.rider-ui .selection-grid{display:grid;grid-template-columns:1fr;gap:8px}
.rider-ui .selection-arrow{display:none}
.rider-ui .selection-place{display:grid;grid-template-columns:80px minmax(0,1fr);gap:8px;align-items:center;min-height:68px;padding:10px;text-align:left}
.rider-ui .selection-place small{font-size:15px;margin:0}
.rider-ui .selection-place strong{font-size:20px}
.rider-ui .selection-people{grid-column:auto;margin:8px 0 0;padding:0;display:block}
.rider-ui .selection-people>span{font-size:18px;display:block;margin-bottom:8px}
.rider-ui #journey-passengers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.rider-ui #journey-passengers button{font-size:23px;min-height:58px}
.rider-ui #journey-confirm{min-height:62px;font-size:20px;width:100%}
.rider-ui .journey-status{margin:0 0 12px;padding:14px;gap:12px}
.rider-ui .journey-status b{font-size:22px}
.rider-ui .journey-status p{font-size:17px;line-height:1.45}
.rider-ui .experience-next{display:block;padding:14px}
.rider-ui .experience-next p{font-size:17px}
.rider-ui .experience-next button{width:100%;margin-top:12px}
.rider-ui .ride-route{font-size:22px}
.rider-ui .ride-actions{display:grid;gap:10px;grid-template-columns:1fr}
.rider-ui .ride-actions button{min-height:56px;font-size:19px}
.user-action-dock{position:fixed;z-index:1100;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,540px);padding:10px 12px calc(12px + env(safe-area-inset-bottom));border-top:2px solid #111;background:#F8F7F3}
.user-action-dock p{font-size:16px;line-height:1.4;margin:0 0 8px;overflow-wrap:anywhere}
.user-action-dock button{width:100%;min-height:62px;font-size:21px;background:#111;color:white;white-space:normal}
.rider-ui.is-typing .user-action-dock{display:none}
.rider-ui .message{bottom:calc(142px + env(safe-area-inset-bottom));max-width:min(500px,calc(100% - 24px));font-size:17px}
.rider-ui.is-typing .message{bottom:12px}
.rider-ui footer{padding:18px 12px;font-size:13px;display:block}
.rider-ui footer>span{display:block;margin-bottom:8px}

/* Driver: map, pending requests, ordered pickup/dropoff cards, then the next action. */
.manual-experience .driver-flow{margin:14px 0}
.manual-experience .driver-operation>.driver-section-heading{border-bottom:1px solid #DADADA;padding-bottom:12px}
.manual-experience #driver-next{font-size:27px;min-height:68px;background:#111;color:#fff;border-radius:0}
.manual-experience .driver-safety{border:1px solid #111;border-radius:0;background:#f8f7f3}
.manual-experience .driver-safety .check{font-size:20px;min-height:56px;line-height:1.4}
.manual-experience .driver-safety input{height:26px;width:26px;min-height:26px;flex-shrink:0;accent-color:#111}
.manual-experience #driver-operation-prompt{color:#111;font-size:19px;line-height:1.45}
.manual-experience .driver-request .experience-receipt{display:inline-block;background:#111;color:white;font-size:14px;padding:3px 8px;margin-bottom:10px}
.manual-experience .driver-request-route{font-size:20px}
.manual-experience #driver-chat-details .ops-chat{margin:0;border:0}
.manual-experience #driver-map-return{font-size:17px;min-height:50px;width:100%;margin-top:14px;border:1px solid #777;background:white}

/* Management: waiting counts + map, followed by a plain state-filtered list. */
.manual-experience .admin-find-grid{display:flex;flex-direction:column;gap:0;margin-top:18px}
.manual-experience .admin-results{order:0}
.manual-experience #admin-chat-details{order:1}
.manual-experience #admin-chat-details .ops-chat{margin:0;border:0}
.manual-experience .admin-quick-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:14px}
.admin-quick-filters button{font-size:18px;min-height:54px;background:#fff;border:1px solid #777;color:#111;padding:8px 3px}
.admin-quick-filters button[aria-pressed=true]{background:#FF4FC3;border:2px solid #111;font-weight:800}
.manual-experience #admin-result-list{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-height:600px;align-items:start}
.manual-experience .admin-result{margin:0}
.manual-experience .admin-result-route{font-size:21px}
.manual-experience .admin-small-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.manual-experience .admin-small-metrics>div{display:block;border:0}
.manual-experience .admin-small-metrics dt{font-size:16px}
.manual-experience .admin-small-metrics dd{font-size:26px;margin-top:6px}
.manual-experience #admin-records .work-grid{margin:0}
.manual-experience #admin-records .ride-column{padding:16px}
.manual-experience #admin-records>.work-grid>#request-panel{display:none}

@media(max-width:700px){
  html{scroll-padding-bottom:150px;-webkit-text-size-adjust:100%}
  .manual-experience .test-strip{font-size:12px;line-height:1.3;padding:7px}
  .manual-experience .topbar{padding:10px 12px;gap:8px}
  .manual-experience .brand{font-size:18px}
  .manual-experience .brand small,.manual-experience .account>span{display:none}
  .manual-experience .brand-symbol{width:30px;height:30px}
  .manual-experience .account .text-button{font-size:14px;min-height:44px}
  .manual-experience .demo-shell{padding:0 12px}
  .manual-experience .demo-roles{padding-top:10px}
  .manual-experience .demo-roles a{font-size:16px;min-height:50px}
  .manual-experience .demo-scope{font-size:13px;line-height:1.4;margin-top:8px}
  .manual-experience main{padding:14px 12px 24px}
  .rider-ui main{padding-top:8px}
  .manual-experience.rider-ui .topbar{padding:7px 12px}
  .manual-experience.rider-ui .demo-roles{padding-top:8px}
  .manual-experience.rider-ui .demo-roles a{min-height:44px}
  .manual-experience.rider-ui .demo-scope{font-size:12px;line-height:1.4;margin-top:6px}
  .manual-experience .workspace-heading h1{font-size:26px}
  .manual-experience .workspace-heading{margin:0 0 14px;padding-bottom:10px}
  .manual-experience .sync{font-size:12px;margin-top:4px;gap:8px}
  .manual-experience .sync .text-button{font-size:16px;min-height:44px}
  .manual-experience .experience-next{display:block;padding:14px}
  .manual-experience .experience-next p{font-size:17px}
  .manual-experience .experience-next button{width:100%;margin-top:12px}
  .rider-ui #journey-map{height:220px}
  .rider-ui .chat-bubble{font-size:18px}
  .rider-ui .chat-messages{max-height:154px;min-height:110px}
  .rider-ui .chat-heading h3{font-size:17px}
  #journey-example{font-size:14px}
  .rider-ui .place-tabs strong{font-size:17px}
  .manual-experience .leaflet-control-zoom a{height:44px!important;width:44px!important;line-height:44px!important}
  .manual-experience .driver-context{grid-template-columns:1fr auto;padding:12px;margin-bottom:12px;gap:10px}
  .manual-experience .driver-context>div:first-child{display:none}
  .manual-experience .driver-context-label{font-size:14px;margin-bottom:4px}
  .manual-experience .driver-context strong{font-size:20px}
  .manual-experience .driver-capacity strong{font-size:26px}
  .manual-experience .driver-board{display:flex;flex-direction:column;gap:12px}
  .manual-experience .driver-section-heading{padding:10px 12px}
  .manual-experience .driver-section-heading h2{font-size:21px}
  .manual-experience #driver-map,.manual-experience #admin-map{height:280px}
  .manual-experience .driver-map-note,.manual-experience .driver-map-legend{font-size:12px;line-height:1.45}
  .manual-experience .driver-reception h2{padding:10px 12px;font-size:21px}
  .manual-experience .driver-reception-counts{padding:12px;gap:12px}
  .manual-experience .driver-reception-counts>div{flex-direction:row;align-items:center;gap:8px}
  .manual-experience .driver-reception-counts strong{font-size:38px}
  .manual-experience .driver-reception-counts span{font-size:16px}
  .manual-experience .driver-reception>p{font-size:12px;margin:0 12px 12px}
  .manual-experience #driver-queue-list{max-height:440px}
  .manual-experience .driver-request-route{font-size:18px}
  .manual-experience .driver-flow li{font-size:14px;min-height:60px;padding:8px 2px;gap:3px}
  .manual-experience .driver-flow span{font-size:21px}
  .manual-experience .driver-selected-route{font-size:21px;line-height:1.4;padding:14px;gap:8px;border-radius:0;display:grid;grid-template-columns:1fr 18px 1fr;align-items:center}
  .manual-experience .driver-selected-route>strong{grid-column:1/-1;font-size:26px}
  .manual-experience .driver-selected-route>small{grid-column:1/-1;font-size:14px}
  .manual-experience .driver-safety{padding:12px}
  .manual-experience .driver-safety .check{font-size:19px;gap:10px}
  .manual-experience .driver-safety p{font-size:14px;margin:6px 0 0 36px}
  .manual-experience .driver-leg{min-height:140px}
  .manual-experience .admin-board{display:flex;flex-direction:column;gap:14px}
  .manual-experience .admin-overview{order:-1}
  .manual-experience .admin-overview-heading{padding:14px;flex-wrap:wrap}
  .manual-experience .admin-overview-heading h2{font-size:23px}
  .manual-experience .admin-big-metrics strong{font-size:56px;line-height:1.1}
  .manual-experience .admin-big-metrics>div{padding:16px 12px}
  .manual-experience .admin-metric-note{font-size:13px;line-height:1.45;margin:12px}
  .manual-experience .admin-small-metrics{margin-inline:12px}
  .manual-experience .admin-small-metrics dt{font-size:15px}
  .manual-experience .admin-quick-filters{grid-template-columns:1fr 1fr;padding:12px}
  .manual-experience .admin-quick-filters button{font-size:18px}
  .manual-experience #admin-result-list{grid-template-columns:1fr;max-height:520px;padding:12px}
  .manual-experience .ops-bubble{font-size:18px;line-height:1.45}
  .manual-experience .ops-chat-form input{min-width:0;font-size:18px}
  .manual-experience dialog{width:calc(100% - 24px);max-width:520px;max-height:calc(100dvh - 24px);overflow:auto}
  .manual-experience .dialog-content{padding:24px 16px}
  .manual-experience dialog .actions{flex-direction:column-reverse}
  .manual-experience dialog .actions button{width:100%;min-height:60px;font-size:20px;white-space:normal}
}
@media(prefers-reduced-motion:reduce){.manual-experience *{scroll-behavior:auto!important}}

.rider-ui .chat-messages:has(.chat-row:only-child){min-height:0;max-height:none;flex:initial}
