patient-service-desk-v3.css 32 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999
  1. :root {
  2. --bg: #f6f8fc;
  3. --surface: #fff;
  4. --surface-soft: #f0f5ff;
  5. --fg: #1a1835;
  6. --muted: #706d89;
  7. --border: #e5e8f2;
  8. --brand: #2b1f99;
  9. --ai: #3ad4d8;
  10. --success: #1aa981;
  11. --warning: #e58a16;
  12. --danger: #d74747;
  13. --radius-sm: 10px;
  14. --radius-md: 16px;
  15. --radius-lg: 24px;
  16. --shadow-card: 0 8px 24px rgb(43 31 153 / 8%);
  17. --tap-size: 44px;
  18. }
  19. *,
  20. *::before,
  21. *::after {
  22. box-sizing: border-box;
  23. }
  24. html,
  25. body {
  26. margin: 0;
  27. min-width: 0;
  28. min-height: 100%;
  29. overflow-x: hidden;
  30. }
  31. body {
  32. color: var(--fg);
  33. background: #e9edf5;
  34. font-family:
  35. Inter, "PingFang SC", "Microsoft YaHei", system-ui, -apple-system,
  36. sans-serif;
  37. }
  38. button,
  39. a {
  40. min-height: var(--tap-size);
  41. }
  42. button {
  43. color: inherit;
  44. font: inherit;
  45. }
  46. :where(button, a, [tabindex]):focus-visible {
  47. outline: 3px solid color-mix(in srgb, var(--ai) 72%, #fff);
  48. outline-offset: 2px;
  49. }
  50. .prototype-stage {
  51. position: relative;
  52. width: 100%;
  53. min-height: 100vh;
  54. padding: 24px;
  55. overflow-x: hidden;
  56. }
  57. .phone-shell {
  58. position: relative;
  59. display: grid;
  60. grid-template-rows: auto minmax(0, 1fr) auto;
  61. width: min(100%, 430px);
  62. height: min(932px, calc(100vh - 48px));
  63. min-height: 844px;
  64. margin-inline: auto;
  65. overflow: hidden;
  66. background: var(--bg);
  67. border-radius: 32px;
  68. box-shadow: 0 24px 64px rgb(26 24 53 / 16%);
  69. }
  70. #appHeader {
  71. padding: 22px 20px 14px;
  72. background: var(--surface);
  73. border-bottom: 1px solid var(--border);
  74. }
  75. .hospital-context {
  76. display: flex;
  77. min-width: 0;
  78. align-items: center;
  79. gap: 10px;
  80. }
  81. .hospital-logo {
  82. display: grid;
  83. width: 40px;
  84. height: 40px;
  85. color: #fff;
  86. background: var(--brand);
  87. border-radius: 13px;
  88. flex: 0 0 auto;
  89. place-items: center;
  90. }
  91. .hospital-context__copy {
  92. min-width: 0;
  93. margin-right: auto;
  94. }
  95. .app-kicker {
  96. margin: 0 0 2px;
  97. color: var(--fg);
  98. font-size: 15px;
  99. font-weight: 700;
  100. }
  101. .campus-label {
  102. margin: 0;
  103. color: var(--muted);
  104. font-size: 11px;
  105. }
  106. .icon-button {
  107. position: relative;
  108. display: grid;
  109. width: var(--tap-size);
  110. height: var(--tap-size);
  111. padding: 0;
  112. background: transparent;
  113. border: 0;
  114. border-radius: 50%;
  115. cursor: pointer;
  116. place-items: center;
  117. }
  118. .icon-button svg {
  119. width: 20px;
  120. height: 20px;
  121. }
  122. .unread-badge {
  123. position: absolute;
  124. top: 3px;
  125. right: 1px;
  126. display: grid;
  127. min-width: 18px;
  128. height: 18px;
  129. padding: 0 5px;
  130. color: #fff;
  131. background: var(--danger);
  132. border: 2px solid var(--surface);
  133. border-radius: 999px;
  134. font-size: 10px;
  135. font-weight: 800;
  136. place-items: center;
  137. }
  138. .patient-switcher {
  139. display: flex;
  140. width: 100%;
  141. min-height: var(--tap-size);
  142. margin-top: 8px;
  143. padding: 0;
  144. background: transparent;
  145. border: 0;
  146. align-items: center;
  147. gap: 8px;
  148. cursor: pointer;
  149. }
  150. .patient-switcher span {
  151. color: var(--muted);
  152. font-size: 12px;
  153. }
  154. .patient-switcher strong {
  155. font-size: 14px;
  156. }
  157. .patient-switcher svg {
  158. width: 16px;
  159. height: 16px;
  160. }
  161. #appView {
  162. min-width: 0;
  163. overflow-x: hidden;
  164. overflow-y: auto;
  165. padding: 16px 18px 28px;
  166. overscroll-behavior: contain;
  167. scrollbar-width: thin;
  168. }
  169. .ai-welcome {
  170. position: relative;
  171. display: grid;
  172. min-width: 0;
  173. padding: 20px;
  174. overflow: hidden;
  175. color: #fff;
  176. background:
  177. radial-gradient(circle at 88% 15%, rgb(58 212 216 / 32%), transparent 32%),
  178. linear-gradient(135deg, #211477, var(--brand));
  179. border-radius: var(--radius-lg);
  180. box-shadow: 0 12px 28px rgb(43 31 153 / 18%);
  181. grid-template-columns: minmax(0, 1fr) 58px;
  182. gap: 12px;
  183. }
  184. .ai-welcome .section-eyebrow {
  185. color: #b8fbfb;
  186. }
  187. .ai-welcome h1 {
  188. margin: 4px 0 6px;
  189. font-size: 22px;
  190. line-height: 1.35;
  191. }
  192. .ai-welcome p:not(.section-eyebrow) {
  193. margin: 0;
  194. color: rgb(255 255 255 / 78%);
  195. font-size: 13px;
  196. line-height: 1.55;
  197. }
  198. .doctor-avatar {
  199. width: 58px;
  200. height: 58px;
  201. object-fit: cover;
  202. object-position: top;
  203. background: rgb(255 255 255 / 16%);
  204. border: 2px solid rgb(255 255 255 / 34%);
  205. border-radius: 18px;
  206. }
  207. .assistant-input {
  208. display: flex;
  209. min-width: 0;
  210. min-height: 48px;
  211. padding: 0 12px;
  212. color: var(--fg);
  213. background: #fff;
  214. border: 0;
  215. border-radius: 14px;
  216. grid-column: 1 / -1;
  217. align-items: center;
  218. gap: 8px;
  219. cursor: pointer;
  220. }
  221. .assistant-input span {
  222. min-width: 0;
  223. font-size: 12px;
  224. text-align: left;
  225. line-height: 1.35;
  226. }
  227. .assistant-input svg {
  228. width: 18px;
  229. height: 18px;
  230. color: var(--brand);
  231. flex: 0 0 auto;
  232. }
  233. .assistant-input svg:last-child {
  234. margin-left: auto;
  235. }
  236. .home-section {
  237. margin-top: 22px;
  238. }
  239. .section-heading {
  240. display: flex;
  241. margin-bottom: 10px;
  242. align-items: end;
  243. justify-content: space-between;
  244. }
  245. .section-eyebrow {
  246. margin: 0 0 2px;
  247. color: var(--brand);
  248. font-size: 10px;
  249. font-weight: 800;
  250. letter-spacing: 0.12em;
  251. text-transform: uppercase;
  252. }
  253. .section-heading h2 {
  254. margin: 0;
  255. font-size: 18px;
  256. }
  257. .task-list {
  258. display: grid;
  259. gap: 12px;
  260. }
  261. .empty-card,
  262. .journey-empty,
  263. .care-empty {
  264. display: flex;
  265. width: 100%;
  266. padding: 16px;
  267. background: var(--surface);
  268. border: 1px solid var(--border);
  269. border-radius: var(--radius-md);
  270. box-shadow: var(--shadow-card);
  271. align-items: flex-start;
  272. gap: 12px;
  273. }
  274. .empty-card > svg,
  275. .journey-empty > svg,
  276. .care-empty > svg {
  277. width: 22px;
  278. height: 22px;
  279. color: var(--brand);
  280. flex: 0 0 auto;
  281. }
  282. .empty-card strong,
  283. .journey-empty strong,
  284. .care-empty strong {
  285. font-size: 14px;
  286. }
  287. .empty-card p,
  288. .journey-empty p,
  289. .care-empty p {
  290. margin: 4px 0 0;
  291. color: var(--muted);
  292. font-size: 12px;
  293. line-height: 1.55;
  294. }
  295. .task-card {
  296. padding: 17px;
  297. background: var(--surface);
  298. border: 1px solid var(--border);
  299. border-radius: var(--radius-md);
  300. box-shadow: var(--shadow-card);
  301. }
  302. .task-card:first-child:not(.task-card--completed) {
  303. border-color: rgb(43 31 153 / 24%);
  304. }
  305. .task-card__status {
  306. display: flex;
  307. margin-bottom: 8px;
  308. color: var(--warning);
  309. font-size: 11px;
  310. font-weight: 700;
  311. align-items: center;
  312. gap: 5px;
  313. }
  314. .task-card__status svg {
  315. width: 15px;
  316. height: 15px;
  317. }
  318. .task-card--completed {
  319. opacity: 0.72;
  320. }
  321. .task-card--completed .task-card__status {
  322. color: var(--success);
  323. }
  324. .task-card h3 {
  325. margin: 0 0 10px;
  326. font-size: 16px;
  327. }
  328. .task-card p {
  329. margin: 6px 0;
  330. color: var(--muted);
  331. font-size: 12px;
  332. line-height: 1.55;
  333. }
  334. .task-card p strong {
  335. color: var(--fg);
  336. }
  337. .task-card__recommendation {
  338. display: flex;
  339. margin-top: 12px;
  340. padding: 10px 12px;
  341. background: var(--surface-soft);
  342. border-radius: var(--radius-sm);
  343. align-items: center;
  344. justify-content: space-between;
  345. gap: 10px;
  346. }
  347. .task-card__recommendation span {
  348. color: var(--muted);
  349. font-size: 11px;
  350. }
  351. .task-card__recommendation strong {
  352. font-size: 12px;
  353. text-align: right;
  354. }
  355. .task-card__actions {
  356. display: flex;
  357. margin-top: 12px;
  358. flex-wrap: wrap;
  359. gap: 8px;
  360. }
  361. .button {
  362. min-width: 0;
  363. min-height: var(--tap-size);
  364. max-width: 100%;
  365. padding: 0 14px;
  366. border: 1px solid var(--border);
  367. border-radius: 12px;
  368. font-size: 13px;
  369. font-weight: 700;
  370. overflow-wrap: anywhere;
  371. white-space: normal;
  372. flex: 1 1 140px;
  373. cursor: pointer;
  374. }
  375. .button--primary {
  376. color: #fff;
  377. background: var(--brand);
  378. border-color: var(--brand);
  379. }
  380. .button--secondary {
  381. color: var(--fg);
  382. background: var(--surface);
  383. }
  384. .service-grid {
  385. display: grid;
  386. grid-template-columns: repeat(4, minmax(0, 1fr));
  387. gap: 8px;
  388. }
  389. .service-entry {
  390. display: flex;
  391. min-width: 0;
  392. min-height: 78px;
  393. padding: 8px 2px;
  394. background: var(--surface);
  395. border: 1px solid var(--border);
  396. border-radius: 14px;
  397. align-items: center;
  398. flex-direction: column;
  399. gap: 6px;
  400. justify-content: center;
  401. cursor: pointer;
  402. }
  403. .service-entry span {
  404. display: grid;
  405. width: 32px;
  406. height: 32px;
  407. color: var(--brand);
  408. background: var(--surface-soft);
  409. border-radius: 10px;
  410. place-items: center;
  411. }
  412. .service-entry svg {
  413. width: 17px;
  414. height: 17px;
  415. }
  416. .service-entry strong {
  417. max-width: 100%;
  418. overflow: hidden;
  419. font-size: 11px;
  420. font-weight: 600;
  421. text-overflow: ellipsis;
  422. white-space: nowrap;
  423. }
  424. .care-section {
  425. padding-bottom: 6px;
  426. }
  427. #bottomNav {
  428. display: grid;
  429. grid-template-columns: repeat(5, minmax(0, 1fr));
  430. min-width: 0;
  431. padding: 8px 8px 14px;
  432. background: var(--surface);
  433. border-top: 1px solid var(--border);
  434. }
  435. .nav-item {
  436. display: flex;
  437. min-width: 0;
  438. min-height: var(--tap-size);
  439. padding: 6px 2px;
  440. color: var(--muted);
  441. background: transparent;
  442. border: 0;
  443. border-radius: var(--radius-sm);
  444. align-items: center;
  445. flex-direction: column;
  446. gap: 3px;
  447. justify-content: center;
  448. cursor: pointer;
  449. }
  450. .nav-item span {
  451. max-width: 100%;
  452. overflow: hidden;
  453. font-size: 11px;
  454. text-overflow: ellipsis;
  455. white-space: nowrap;
  456. }
  457. .nav-item[aria-current="page"] {
  458. color: var(--brand);
  459. background: var(--surface-soft);
  460. font-weight: 700;
  461. }
  462. .nav-item svg {
  463. width: 21px;
  464. height: 21px;
  465. flex: 0 0 auto;
  466. stroke-width: 2;
  467. }
  468. .assistant-view {
  469. display: grid;
  470. min-width: 0;
  471. min-height: 100%;
  472. grid-template-rows: auto auto minmax(0, 1fr) auto;
  473. gap: 14px;
  474. }
  475. .assistant-view__header {
  476. display: flex;
  477. min-width: 0;
  478. align-items: center;
  479. justify-content: space-between;
  480. gap: 8px;
  481. }
  482. .assistant-view__header h1,
  483. .assistant-scenarios h2,
  484. .assistant-result h2 {
  485. margin: 0;
  486. }
  487. .assistant-view__header .text-button {
  488. max-width: 112px;
  489. white-space: normal;
  490. }
  491. .assistant-scenarios {
  492. display: flex;
  493. min-width: 0;
  494. flex-wrap: wrap;
  495. gap: 8px;
  496. }
  497. .assistant-scenarios h2 {
  498. width: 100%;
  499. font-size: 15px;
  500. }
  501. .assistant-scenarios button {
  502. padding: 8px 12px;
  503. color: var(--brand);
  504. background: var(--surface-soft);
  505. border: 1px solid #dce3fb;
  506. border-radius: 999px;
  507. cursor: pointer;
  508. }
  509. .assistant-thread {
  510. min-height: 0;
  511. overflow-x: hidden;
  512. overflow-y: auto;
  513. padding: 2px 2px 12px;
  514. overscroll-behavior: contain;
  515. }
  516. .assistant-message {
  517. width: fit-content;
  518. max-width: 88%;
  519. margin: 0 0 10px;
  520. padding: 10px 12px;
  521. background: var(--surface);
  522. border: 1px solid var(--border);
  523. border-radius: 14px;
  524. }
  525. .assistant-message--user {
  526. margin-left: auto;
  527. color: #fff;
  528. background: var(--brand);
  529. border-color: var(--brand);
  530. }
  531. .assistant-message strong {
  532. font-size: 11px;
  533. }
  534. .assistant-message p,
  535. .assistant-answer,
  536. .assistant-recovery p,
  537. .assistant-lock-success p {
  538. margin: 4px 0 0;
  539. font-size: 13px;
  540. line-height: 1.65;
  541. }
  542. .assistant-result,
  543. .assistant-recovery,
  544. .assistant-lock-success {
  545. margin-top: 10px;
  546. padding: 14px;
  547. background: var(--surface);
  548. border: 1px solid var(--border);
  549. border-radius: var(--radius-md);
  550. }
  551. .assistant-recovery {
  552. border-color: #f0c98f;
  553. background: #fff8eb;
  554. }
  555. .assistant-lock-success {
  556. border-color: #a9e1d1;
  557. background: #effbf7;
  558. }
  559. .slot-presentation {
  560. display: grid;
  561. margin-top: 12px;
  562. gap: 8px;
  563. }
  564. .slot-candidate {
  565. display: grid;
  566. width: 100%;
  567. min-width: 0;
  568. padding: 12px;
  569. text-align: left;
  570. background: var(--surface-soft);
  571. border: 1px solid #dce3fb;
  572. border-radius: 12px;
  573. gap: 4px;
  574. cursor: pointer;
  575. }
  576. .slot-candidate span {
  577. color: var(--muted);
  578. font-size: 12px;
  579. }
  580. .assistant-composer {
  581. position: sticky;
  582. bottom: 0;
  583. display: grid;
  584. padding-top: 10px;
  585. background: var(--bg);
  586. grid-template-columns: minmax(0, 1fr) var(--tap-size);
  587. gap: 8px;
  588. }
  589. .assistant-composer input {
  590. min-width: 0;
  591. min-height: var(--tap-size);
  592. padding: 0 12px;
  593. font: inherit;
  594. background: var(--surface);
  595. border: 1px solid var(--border);
  596. border-radius: 12px;
  597. }
  598. .assistant-composer button {
  599. display: grid;
  600. width: var(--tap-size);
  601. min-height: var(--tap-size);
  602. padding: 0;
  603. color: #fff;
  604. background: var(--brand);
  605. border: 0;
  606. border-radius: 12px;
  607. cursor: pointer;
  608. place-items: center;
  609. }
  610. .sr-only {
  611. position: absolute;
  612. width: 1px;
  613. height: 1px;
  614. padding: 0;
  615. overflow: hidden;
  616. clip: rect(0, 0, 0, 0);
  617. white-space: nowrap;
  618. border: 0;
  619. }
  620. .report-view {
  621. position: relative;
  622. display: grid;
  623. min-width: 0;
  624. padding-bottom: 10px;
  625. gap: 14px;
  626. }
  627. .text-button {
  628. display: inline-flex;
  629. width: fit-content;
  630. min-height: var(--tap-size);
  631. padding: 0 4px;
  632. color: var(--brand);
  633. background: transparent;
  634. border: 0;
  635. align-items: center;
  636. gap: 6px;
  637. cursor: pointer;
  638. font-size: 13px;
  639. font-weight: 700;
  640. }
  641. .text-button svg {
  642. width: 18px;
  643. height: 18px;
  644. }
  645. .report-hero,
  646. .report-card,
  647. .result-card {
  648. padding: 18px;
  649. background: var(--surface);
  650. border: 1px solid var(--border);
  651. border-radius: var(--radius-md);
  652. box-shadow: var(--shadow-card);
  653. }
  654. .report-hero h1,
  655. .result-summary h1 {
  656. margin: 4px 0 6px;
  657. font-size: 23px;
  658. }
  659. .report-hero > p:not(.section-eyebrow),
  660. .result-summary > p:not(.section-eyebrow) {
  661. margin: 0;
  662. color: var(--muted);
  663. font-size: 12px;
  664. }
  665. .report-audit {
  666. display: inline-flex;
  667. margin-top: 14px;
  668. padding: 6px 9px;
  669. color: var(--success);
  670. background: rgb(26 169 129 / 9%);
  671. border-radius: 999px;
  672. align-items: center;
  673. gap: 5px;
  674. font-size: 11px;
  675. font-weight: 800;
  676. }
  677. .report-audit svg {
  678. width: 15px;
  679. height: 15px;
  680. }
  681. .report-notice,
  682. .safety-callout {
  683. display: flex;
  684. padding: 13px;
  685. color: #684d14;
  686. background: #fff8e8;
  687. border: 1px solid #f4dfae;
  688. border-radius: 13px;
  689. align-items: flex-start;
  690. gap: 9px;
  691. }
  692. .report-notice svg {
  693. width: 19px;
  694. height: 19px;
  695. flex: 0 0 auto;
  696. }
  697. .report-notice p,
  698. .safety-callout p {
  699. margin: 0;
  700. font-size: 12px;
  701. line-height: 1.6;
  702. }
  703. .indicator-list {
  704. display: grid;
  705. margin: 0 0 14px;
  706. padding: 0;
  707. gap: 8px;
  708. list-style: none;
  709. }
  710. .indicator-list li {
  711. display: grid;
  712. min-width: 0;
  713. padding: 11px 0;
  714. border-bottom: 1px solid var(--border);
  715. grid-template-columns: minmax(0, 1fr) auto;
  716. gap: 3px 10px;
  717. }
  718. .indicator-list span,
  719. .indicator-list strong {
  720. font-size: 13px;
  721. }
  722. .indicator-list strong {
  723. color: var(--danger);
  724. }
  725. .indicator-list small {
  726. color: var(--muted);
  727. font-size: 10px;
  728. grid-column: 1 / -1;
  729. }
  730. .report-links {
  731. display: grid;
  732. grid-template-columns: repeat(2, minmax(0, 1fr));
  733. gap: 9px;
  734. }
  735. .report-links button {
  736. display: flex;
  737. min-width: 0;
  738. min-height: var(--tap-size);
  739. padding: 10px;
  740. color: var(--fg);
  741. background: var(--surface);
  742. border: 1px solid var(--border);
  743. border-radius: 12px;
  744. align-items: center;
  745. gap: 7px;
  746. justify-content: center;
  747. cursor: pointer;
  748. font-size: 12px;
  749. }
  750. .report-links svg {
  751. width: 17px;
  752. height: 17px;
  753. color: var(--brand);
  754. }
  755. .report-primary {
  756. display: flex;
  757. width: 100%;
  758. align-items: center;
  759. gap: 8px;
  760. justify-content: center;
  761. }
  762. .report-primary svg {
  763. width: 18px;
  764. height: 18px;
  765. }
  766. .consent-backdrop {
  767. position: absolute;
  768. z-index: 20;
  769. inset: 0;
  770. display: grid;
  771. padding: 20px;
  772. background: rgb(15 13 40 / 58%);
  773. place-items: end center;
  774. }
  775. .consent-sheet {
  776. width: min(100%, 430px);
  777. max-height: min(760px, calc(100vh - 40px));
  778. padding: 22px;
  779. overflow-y: auto;
  780. background: var(--surface);
  781. border-radius: 24px;
  782. box-shadow: 0 24px 70px rgb(15 13 40 / 30%);
  783. overscroll-behavior: contain;
  784. }
  785. .consent-sheet:focus-visible {
  786. outline: 3px solid var(--brand);
  787. outline-offset: -3px;
  788. }
  789. .consent-sheet__icon {
  790. display: grid;
  791. width: 44px;
  792. height: 44px;
  793. margin-bottom: 12px;
  794. color: #fff;
  795. background: var(--brand);
  796. border-radius: 14px;
  797. place-items: center;
  798. }
  799. .consent-sheet h2 {
  800. margin: 4px 0 16px;
  801. font-size: 21px;
  802. line-height: 1.35;
  803. }
  804. .consent-details {
  805. display: grid;
  806. margin: 0;
  807. gap: 8px;
  808. }
  809. .consent-details div {
  810. display: grid;
  811. padding: 10px 12px;
  812. background: var(--surface-soft);
  813. border-radius: 11px;
  814. grid-template-columns: 52px minmax(0, 1fr);
  815. gap: 8px;
  816. }
  817. .consent-details dt {
  818. color: var(--muted);
  819. font-size: 11px;
  820. }
  821. .consent-details dd {
  822. margin: 0;
  823. font-size: 12px;
  824. font-weight: 700;
  825. }
  826. .consent-note {
  827. margin-top: 13px;
  828. color: var(--muted);
  829. font-size: 11px;
  830. line-height: 1.6;
  831. }
  832. .consent-note p {
  833. margin: 6px 0;
  834. }
  835. .consent-note strong {
  836. color: var(--fg);
  837. }
  838. .consent-actions {
  839. display: grid;
  840. margin-top: 16px;
  841. gap: 8px;
  842. }
  843. .command-sheet {
  844. max-height: min(720px, calc(100vh - 40px));
  845. }
  846. .command-status {
  847. display: flex;
  848. width: fit-content;
  849. min-height: 44px;
  850. margin-bottom: 8px;
  851. padding: 8px 12px;
  852. color: var(--brand);
  853. background: var(--surface-soft);
  854. border-radius: 999px;
  855. align-items: center;
  856. gap: 7px;
  857. }
  858. .command-status svg {
  859. width: 18px;
  860. height: 18px;
  861. }
  862. .command-sheet--success .command-status {
  863. color: var(--success);
  864. background: #edfaf6;
  865. }
  866. .command-sheet--danger .command-status {
  867. color: var(--danger);
  868. background: #fff0f0;
  869. }
  870. .command-sheet--warning .command-status {
  871. color: #8a5913;
  872. background: #fff8e8;
  873. }
  874. .command-sheet h2 {
  875. margin: 4px 0 14px;
  876. font-size: 22px;
  877. }
  878. .command-details {
  879. display: grid;
  880. margin: 0;
  881. padding: 0;
  882. gap: 0;
  883. }
  884. .command-details div {
  885. display: grid;
  886. min-width: 0;
  887. padding: 11px 0;
  888. border-bottom: 1px solid var(--border);
  889. grid-template-columns: 88px minmax(0, 1fr);
  890. gap: 12px;
  891. }
  892. .command-details dt {
  893. color: var(--muted);
  894. font-size: 12px;
  895. }
  896. .command-details dd {
  897. min-width: 0;
  898. margin: 0;
  899. font-size: 13px;
  900. font-weight: 700;
  901. overflow-wrap: anywhere;
  902. }
  903. .command-guidance {
  904. margin: 14px 0 0;
  905. padding: 12px;
  906. color: var(--muted);
  907. background: var(--surface-soft);
  908. border-radius: 12px;
  909. font-size: 12px;
  910. line-height: 1.6;
  911. }
  912. .report-loading {
  913. min-height: 430px;
  914. text-align: center;
  915. align-content: center;
  916. justify-items: center;
  917. }
  918. .report-loading .report-view__back {
  919. position: absolute;
  920. align-self: start;
  921. justify-self: start;
  922. }
  923. .loading-orbit {
  924. display: grid;
  925. width: 72px;
  926. height: 72px;
  927. color: var(--brand);
  928. background: var(--surface-soft);
  929. border: 2px solid rgb(43 31 153 / 18%);
  930. border-radius: 50%;
  931. place-items: center;
  932. }
  933. .loading-orbit svg {
  934. width: 30px;
  935. height: 30px;
  936. }
  937. .report-loading h1 {
  938. margin: 0;
  939. font-size: 22px;
  940. }
  941. .report-loading > p:not(.section-eyebrow) {
  942. max-width: 330px;
  943. margin: 0;
  944. color: var(--muted);
  945. font-size: 13px;
  946. line-height: 1.65;
  947. }
  948. .loading-progress {
  949. width: min(100%, 280px);
  950. height: 7px;
  951. overflow: hidden;
  952. background: var(--border);
  953. border-radius: 999px;
  954. }
  955. .loading-progress span {
  956. display: block;
  957. width: 58%;
  958. height: 100%;
  959. background: linear-gradient(90deg, var(--brand), var(--ai));
  960. border-radius: inherit;
  961. }
  962. .loading-step {
  963. display: flex;
  964. color: var(--muted);
  965. align-items: center;
  966. gap: 7px;
  967. font-size: 11px;
  968. }
  969. .loading-step svg {
  970. width: 16px;
  971. height: 16px;
  972. }
  973. .result-summary {
  974. padding: 20px;
  975. color: #fff;
  976. background: linear-gradient(135deg, #211477, var(--brand));
  977. border-radius: var(--radius-lg);
  978. }
  979. .result-summary .section-eyebrow {
  980. color: #b8fbfb;
  981. }
  982. .result-summary h2 {
  983. margin: 8px 0 0;
  984. color: #b8fbfb;
  985. font-size: 13px;
  986. }
  987. .result-summary > p:not(.section-eyebrow) {
  988. color: rgb(255 255 255 / 76%);
  989. }
  990. .safety-callout {
  991. display: block;
  992. color: #255a4a;
  993. background: #edfaf6;
  994. border-color: #c8eadf;
  995. }
  996. .safety-callout strong {
  997. display: flex;
  998. margin-bottom: 5px;
  999. align-items: center;
  1000. gap: 6px;
  1001. font-size: 12px;
  1002. }
  1003. .safety-callout svg {
  1004. width: 17px;
  1005. height: 17px;
  1006. }
  1007. .result-card h2 {
  1008. margin: 0 0 12px;
  1009. font-size: 16px;
  1010. }
  1011. .result-card ul {
  1012. display: grid;
  1013. margin: 0;
  1014. padding-left: 20px;
  1015. gap: 8px;
  1016. color: var(--muted);
  1017. font-size: 12px;
  1018. }
  1019. .explanation-item + .explanation-item {
  1020. margin-top: 14px;
  1021. padding-top: 14px;
  1022. border-top: 1px solid var(--border);
  1023. }
  1024. .explanation-item h3 {
  1025. margin: 0 0 6px;
  1026. font-size: 13px;
  1027. }
  1028. .explanation-item p {
  1029. margin: 4px 0;
  1030. color: var(--muted);
  1031. font-size: 12px;
  1032. line-height: 1.55;
  1033. }
  1034. .explanation-item strong {
  1035. color: var(--fg);
  1036. }
  1037. .next-actions {
  1038. display: grid;
  1039. gap: 8px;
  1040. }
  1041. .result-evidence {
  1042. background: var(--surface-soft);
  1043. box-shadow: none;
  1044. }
  1045. .result-evidence > p,
  1046. .report-feedback > p,
  1047. .result-factors-note {
  1048. margin: 12px 0 0;
  1049. color: var(--muted);
  1050. font-size: 11px;
  1051. line-height: 1.6;
  1052. }
  1053. .result-service-notice,
  1054. .report-feedback-confirmation {
  1055. margin: 0 0 12px;
  1056. padding: 11px 12px;
  1057. color: #255a4a;
  1058. background: #edfaf6;
  1059. border-radius: 11px;
  1060. font-size: 12px;
  1061. line-height: 1.6;
  1062. }
  1063. .result-action-grid,
  1064. .feedback-options {
  1065. display: grid;
  1066. grid-template-columns: repeat(2, minmax(0, 1fr));
  1067. gap: 8px;
  1068. }
  1069. .result-action-grid .button,
  1070. .feedback-options .button {
  1071. min-width: 0;
  1072. min-height: var(--tap-size);
  1073. padding: 10px 8px;
  1074. white-space: normal;
  1075. }
  1076. .result-action-grid .result-revoke {
  1077. color: var(--danger);
  1078. border-color: #f0c4c4;
  1079. }
  1080. .report-feedback-confirmation {
  1081. margin: 0;
  1082. text-align: center;
  1083. }
  1084. .revoke-button {
  1085. margin: 0 auto;
  1086. color: var(--danger);
  1087. }
  1088. #scenarioPanel:empty,
  1089. #overlayRoot:empty {
  1090. display: none;
  1091. }
  1092. .queue-view {
  1093. display: grid;
  1094. gap: 16px;
  1095. }
  1096. .queue-hero {
  1097. padding: 22px;
  1098. color: #fff;
  1099. background: linear-gradient(135deg, var(--brand), #5144c9);
  1100. border-radius: var(--radius-lg);
  1101. }
  1102. .queue-hero h1,
  1103. .queue-hero p {
  1104. margin: 0;
  1105. }
  1106. .queue-hero h1 {
  1107. margin-block: 6px;
  1108. font-size: 26px;
  1109. }
  1110. .queue-delay {
  1111. display: flex;
  1112. min-height: var(--tap-size);
  1113. padding: 12px 14px;
  1114. color: #7b4a00;
  1115. background: #fff4dd;
  1116. border: 1px solid #f4d59d;
  1117. border-radius: var(--radius-md);
  1118. align-items: center;
  1119. gap: 10px;
  1120. }
  1121. .queue-delay svg {
  1122. width: 20px;
  1123. flex: 0 0 auto;
  1124. }
  1125. .queue-metrics {
  1126. display: grid;
  1127. grid-template-columns: repeat(2, minmax(0, 1fr));
  1128. gap: 10px;
  1129. }
  1130. .queue-metrics article,
  1131. .queue-detail {
  1132. padding: 16px;
  1133. background: var(--surface);
  1134. border: 1px solid var(--border);
  1135. border-radius: var(--radius-md);
  1136. box-shadow: var(--shadow-card);
  1137. }
  1138. .queue-metrics span,
  1139. .queue-detail span {
  1140. color: var(--muted);
  1141. font-size: 12px;
  1142. }
  1143. .queue-metrics strong {
  1144. display: block;
  1145. margin-top: 6px;
  1146. font-size: 15px;
  1147. }
  1148. .queue-detail {
  1149. display: grid;
  1150. gap: 12px;
  1151. }
  1152. .queue-detail p {
  1153. display: grid;
  1154. margin: 0;
  1155. grid-template-columns: 22px minmax(0, 1fr) auto;
  1156. align-items: center;
  1157. gap: 8px;
  1158. }
  1159. .queue-detail svg {
  1160. width: 18px;
  1161. color: var(--brand);
  1162. }
  1163. .queue-detail strong {
  1164. font-size: 13px;
  1165. text-align: right;
  1166. }
  1167. .queue-route {
  1168. width: 100%;
  1169. }
  1170. .route-view {
  1171. display: grid;
  1172. gap: 16px;
  1173. }
  1174. .route-map {
  1175. position: relative;
  1176. display: grid;
  1177. min-height: 230px;
  1178. overflow: hidden;
  1179. color: var(--brand);
  1180. background:
  1181. linear-gradient(90deg, transparent 49%, rgb(43 31 153 / 8%) 50%, transparent 51%),
  1182. linear-gradient(transparent 49%, rgb(43 31 153 / 8%) 50%, transparent 51%),
  1183. var(--surface-soft);
  1184. background-size: 52px 52px;
  1185. border: 1px solid var(--border);
  1186. border-radius: var(--radius-lg);
  1187. place-items: center;
  1188. }
  1189. .route-map > svg {
  1190. z-index: 2;
  1191. width: 42px;
  1192. height: 42px;
  1193. padding: 9px;
  1194. background: #fff;
  1195. border-radius: 14px;
  1196. box-shadow: var(--shadow-card);
  1197. }
  1198. .route-map span {
  1199. position: absolute;
  1200. width: 12px;
  1201. height: 12px;
  1202. background: var(--ai);
  1203. border: 3px solid #fff;
  1204. border-radius: 50%;
  1205. box-shadow: 0 3px 10px rgb(43 31 153 / 20%);
  1206. }
  1207. .route-map span:nth-of-type(1) {
  1208. top: 72%;
  1209. left: 18%;
  1210. }
  1211. .route-map span:nth-of-type(2) {
  1212. top: 54%;
  1213. left: 40%;
  1214. }
  1215. .route-map span:nth-of-type(3) {
  1216. top: 30%;
  1217. right: 22%;
  1218. }
  1219. .journey-card {
  1220. padding: 16px;
  1221. background: var(--surface);
  1222. border: 1px solid var(--border);
  1223. border-radius: var(--radius-md);
  1224. box-shadow: var(--shadow-card);
  1225. }
  1226. .journey-card__heading {
  1227. display: flex;
  1228. align-items: flex-start;
  1229. justify-content: space-between;
  1230. gap: 12px;
  1231. }
  1232. .journey-card__heading p {
  1233. margin: 4px 0 0;
  1234. color: var(--muted);
  1235. font-size: 12px;
  1236. }
  1237. .journey-steps {
  1238. display: grid;
  1239. margin: 16px 0 0;
  1240. padding: 0;
  1241. list-style: none;
  1242. grid-template-columns: repeat(3, minmax(0, 1fr));
  1243. }
  1244. .journey-steps li {
  1245. position: relative;
  1246. display: grid;
  1247. color: var(--muted);
  1248. font-size: 11px;
  1249. gap: 4px;
  1250. }
  1251. .journey-steps li::before {
  1252. width: 10px;
  1253. height: 10px;
  1254. margin-bottom: 4px;
  1255. background: var(--border);
  1256. border-radius: 50%;
  1257. content: "";
  1258. }
  1259. .journey-steps li:not(:last-child)::after {
  1260. position: absolute;
  1261. top: 4px;
  1262. right: 8px;
  1263. left: 14px;
  1264. height: 2px;
  1265. background: var(--border);
  1266. content: "";
  1267. }
  1268. .journey-steps li.is-current {
  1269. color: var(--brand);
  1270. font-weight: 700;
  1271. }
  1272. .journey-steps li.is-current::before {
  1273. background: var(--ai);
  1274. box-shadow: 0 0 0 4px rgb(58 212 216 / 18%);
  1275. }
  1276. .module-page {
  1277. display: grid;
  1278. gap: 18px;
  1279. }
  1280. .module-header h1,
  1281. .module-header p {
  1282. margin: 0;
  1283. }
  1284. .module-header h1 {
  1285. margin-block: 4px 6px;
  1286. font-size: 24px;
  1287. }
  1288. .module-header > p:last-child {
  1289. color: var(--muted);
  1290. font-size: 13px;
  1291. line-height: 1.6;
  1292. }
  1293. .care-groups,
  1294. .module-list {
  1295. display: grid;
  1296. gap: 12px;
  1297. }
  1298. .care-group {
  1299. display: grid;
  1300. gap: 8px;
  1301. }
  1302. .care-group .section-heading {
  1303. margin: 0;
  1304. }
  1305. .care-group .section-heading span {
  1306. display: grid;
  1307. min-width: 24px;
  1308. height: 24px;
  1309. color: var(--brand);
  1310. background: var(--surface-soft);
  1311. border-radius: 999px;
  1312. font-size: 11px;
  1313. place-items: center;
  1314. }
  1315. .compact-row {
  1316. display: grid;
  1317. width: 100%;
  1318. min-width: 0;
  1319. min-height: var(--tap-size);
  1320. padding: 13px 14px;
  1321. color: var(--fg);
  1322. text-align: left;
  1323. background: var(--surface);
  1324. border: 1px solid var(--border);
  1325. border-radius: var(--radius-md);
  1326. box-shadow: var(--shadow-card);
  1327. grid-template-columns: 36px minmax(0, 1fr) 18px;
  1328. align-items: center;
  1329. gap: 10px;
  1330. }
  1331. .compact-row--button {
  1332. cursor: pointer;
  1333. }
  1334. .compact-row__icon {
  1335. display: grid;
  1336. width: 36px;
  1337. height: 36px;
  1338. color: var(--brand);
  1339. background: var(--surface-soft);
  1340. border-radius: 11px;
  1341. place-items: center;
  1342. }
  1343. .compact-row svg {
  1344. width: 18px;
  1345. }
  1346. .compact-row strong,
  1347. .compact-row p {
  1348. margin: 0;
  1349. }
  1350. .compact-row p {
  1351. margin-top: 3px;
  1352. color: var(--muted);
  1353. font-size: 11px;
  1354. line-height: 1.45;
  1355. overflow-wrap: anywhere;
  1356. }
  1357. .filter-tabs {
  1358. display: flex;
  1359. padding: 4px;
  1360. background: #ebeef6;
  1361. border-radius: 14px;
  1362. gap: 4px;
  1363. }
  1364. .filter-tabs button {
  1365. min-width: 0;
  1366. min-height: var(--tap-size);
  1367. color: var(--muted);
  1368. background: transparent;
  1369. border: 0;
  1370. border-radius: 11px;
  1371. flex: 1;
  1372. }
  1373. .filter-tabs button[aria-pressed="true"] {
  1374. color: var(--brand);
  1375. background: var(--surface);
  1376. box-shadow: var(--shadow-card);
  1377. font-weight: 700;
  1378. }
  1379. .message-categories {
  1380. display: flex;
  1381. overflow-x: auto;
  1382. padding-bottom: 2px;
  1383. gap: 8px;
  1384. }
  1385. .message-categories span {
  1386. min-width: max-content;
  1387. padding: 7px 12px;
  1388. color: var(--muted);
  1389. background: var(--surface);
  1390. border: 1px solid var(--border);
  1391. border-radius: 999px;
  1392. font-size: 12px;
  1393. }
  1394. .report-unavailable {
  1395. min-height: 100%;
  1396. padding: 32px 18px;
  1397. text-align: center;
  1398. place-content: center;
  1399. justify-items: center;
  1400. }
  1401. .report-unavailable__icon {
  1402. display: grid;
  1403. width: 64px;
  1404. height: 64px;
  1405. color: var(--brand);
  1406. background: var(--surface-soft);
  1407. border-radius: 20px;
  1408. place-items: center;
  1409. }
  1410. .report-unavailable__icon svg {
  1411. width: 28px;
  1412. height: 28px;
  1413. }
  1414. .report-unavailable h1 {
  1415. max-width: 310px;
  1416. margin: 18px 0 8px;
  1417. font-size: 22px;
  1418. }
  1419. .report-unavailable > p {
  1420. max-width: 310px;
  1421. margin: 0 0 20px;
  1422. color: var(--muted);
  1423. font-size: 13px;
  1424. line-height: 1.65;
  1425. }
  1426. .report-unavailable .result-service-notice {
  1427. color: #255a4a;
  1428. }
  1429. .report-unavailable__actions {
  1430. display: grid;
  1431. width: min(100%, 310px);
  1432. gap: 10px;
  1433. }
  1434. .system-state {
  1435. display: grid;
  1436. min-height: 100%;
  1437. padding: 32px 18px;
  1438. text-align: center;
  1439. place-content: center;
  1440. justify-items: center;
  1441. }
  1442. .system-state > span {
  1443. display: grid;
  1444. width: 64px;
  1445. height: 64px;
  1446. color: var(--brand);
  1447. background: var(--surface-soft);
  1448. border-radius: 20px;
  1449. place-items: center;
  1450. }
  1451. .system-state > span svg {
  1452. width: 28px;
  1453. height: 28px;
  1454. }
  1455. .system-state h1 {
  1456. margin: 18px 0 8px;
  1457. font-size: 20px;
  1458. }
  1459. .system-state p {
  1460. max-width: 290px;
  1461. margin: 0 0 20px;
  1462. color: var(--muted);
  1463. font-size: 13px;
  1464. line-height: 1.65;
  1465. }
  1466. #scenarioPanel {
  1467. position: fixed;
  1468. z-index: 30;
  1469. top: 50%;
  1470. left: calc(50% + 239px);
  1471. width: 320px;
  1472. max-height: min(844px, calc(100vh - 48px));
  1473. overflow-y: auto;
  1474. transform: translateY(-50%);
  1475. }
  1476. #scenarioPanel[hidden] {
  1477. display: none;
  1478. }
  1479. .scenario-controller {
  1480. padding: 18px;
  1481. background: #17152b;
  1482. border: 1px solid rgb(255 255 255 / 10%);
  1483. border-radius: 22px;
  1484. box-shadow: 0 24px 64px rgb(13 11 32 / 24%);
  1485. color: #fff;
  1486. }
  1487. .scenario-controller__header,
  1488. .scenario-actions,
  1489. .viewport-switcher {
  1490. display: flex;
  1491. align-items: center;
  1492. gap: 8px;
  1493. }
  1494. .scenario-controller__header {
  1495. justify-content: space-between;
  1496. }
  1497. .scenario-controller__header p {
  1498. margin: 0 0 3px;
  1499. color: #aaa5c8;
  1500. font-size: 11px;
  1501. }
  1502. .scenario-controller button {
  1503. min-height: var(--tap-size);
  1504. color: inherit;
  1505. background: rgb(255 255 255 / 7%);
  1506. border: 1px solid rgb(255 255 255 / 10%);
  1507. border-radius: 10px;
  1508. cursor: pointer;
  1509. }
  1510. .scenario-controller__header button {
  1511. display: grid;
  1512. width: var(--tap-size);
  1513. padding: 0;
  1514. place-items: center;
  1515. }
  1516. .scenario-actions {
  1517. margin-top: 16px;
  1518. }
  1519. .scenario-actions button {
  1520. display: flex;
  1521. min-width: 0;
  1522. padding: 0 9px;
  1523. align-items: center;
  1524. justify-content: center;
  1525. flex: 1;
  1526. gap: 5px;
  1527. font-size: 11px;
  1528. }
  1529. .scenario-actions svg {
  1530. width: 15px;
  1531. }
  1532. .scenario-groups {
  1533. margin-top: 14px;
  1534. }
  1535. .scenario-group + .scenario-group {
  1536. margin-top: 14px;
  1537. }
  1538. .scenario-group h2 {
  1539. margin: 0 0 7px;
  1540. color: #aaa5c8;
  1541. font-size: 11px;
  1542. font-weight: 700;
  1543. letter-spacing: 0.08em;
  1544. }
  1545. .scenario-list {
  1546. display: grid;
  1547. gap: 5px;
  1548. }
  1549. .scenario-list button {
  1550. display: flex;
  1551. padding: 0 11px;
  1552. text-align: left;
  1553. align-items: center;
  1554. gap: 9px;
  1555. }
  1556. .scenario-list button span {
  1557. color: #7f79a4;
  1558. font-size: 10px;
  1559. }
  1560. .scenario-list button[aria-pressed="true"] {
  1561. color: #15132a;
  1562. background: var(--ai);
  1563. border-color: var(--ai);
  1564. font-weight: 700;
  1565. }
  1566. .viewport-switcher {
  1567. margin-top: 14px;
  1568. }
  1569. .viewport-switcher button {
  1570. padding-inline: 10px;
  1571. flex: 1;
  1572. font-size: 11px;
  1573. }
  1574. .projection-summary {
  1575. display: grid;
  1576. margin: 14px 0 0;
  1577. padding: 12px;
  1578. background: rgb(0 0 0 / 18%);
  1579. border-radius: 12px;
  1580. gap: 8px;
  1581. }
  1582. .projection-summary div {
  1583. display: grid;
  1584. grid-template-columns: 92px minmax(0, 1fr);
  1585. gap: 8px;
  1586. }
  1587. .projection-summary dt,
  1588. .projection-summary dd {
  1589. margin: 0;
  1590. overflow-wrap: anywhere;
  1591. font-size: 10px;
  1592. }
  1593. .projection-summary dt {
  1594. color: #aaa5c8;
  1595. }
  1596. .report-filter-group {
  1597. display: grid;
  1598. grid-template-columns: repeat(3, minmax(0, 1fr));
  1599. gap: 8px;
  1600. }
  1601. .report-filter-group--status {
  1602. margin-top: 10px;
  1603. }
  1604. .report-filter-group button {
  1605. min-width: 0;
  1606. min-height: var(--tap-size);
  1607. padding: 8px;
  1608. color: var(--muted);
  1609. background: var(--surface);
  1610. border: 1px solid var(--border);
  1611. border-radius: 12px;
  1612. font: inherit;
  1613. }
  1614. .report-filter-group button[aria-pressed="true"] {
  1615. color: var(--brand);
  1616. background: var(--surface-soft);
  1617. border-color: var(--brand);
  1618. font-weight: 700;
  1619. }
  1620. .report-center__list {
  1621. display: grid;
  1622. margin-top: 14px;
  1623. gap: 12px;
  1624. }
  1625. .report-center__patient {
  1626. margin: 0 0 12px;
  1627. color: var(--muted);
  1628. font-size: 13px;
  1629. }
  1630. .report-list-card {
  1631. display: grid;
  1632. width: 100%;
  1633. min-width: 0;
  1634. min-height: var(--tap-size);
  1635. padding: 16px;
  1636. color: inherit;
  1637. text-align: left;
  1638. background: var(--surface);
  1639. border: 1px solid var(--border);
  1640. border-radius: 18px;
  1641. gap: 7px;
  1642. overflow-wrap: anywhere;
  1643. }
  1644. .report-list-card__top {
  1645. display: flex;
  1646. align-items: center;
  1647. justify-content: space-between;
  1648. gap: 8px;
  1649. }
  1650. .report-list-card__top b,
  1651. .report-list-card__top em,
  1652. .report-list-card__status {
  1653. color: var(--brand);
  1654. font-size: 12px;
  1655. font-style: normal;
  1656. }
  1657. .report-list-card > span,
  1658. .report-list-card time {
  1659. color: var(--muted);
  1660. font-size: 13px;
  1661. }
  1662. .report-empty {
  1663. display: grid;
  1664. padding: 36px 18px;
  1665. text-align: center;
  1666. background: var(--surface);
  1667. border-radius: 18px;
  1668. place-items: center;
  1669. gap: 8px;
  1670. }
  1671. .report-empty p {
  1672. margin: 0;
  1673. color: var(--muted);
  1674. }
  1675. .report-metric {
  1676. min-width: 0;
  1677. overflow-wrap: anywhere;
  1678. }
  1679. .report-metric em {
  1680. color: var(--danger);
  1681. font-size: 12px;
  1682. font-style: normal;
  1683. font-weight: 700;
  1684. }
  1685. .scenario-shortcuts {
  1686. margin: 12px 0 0;
  1687. color: #8f89ae;
  1688. font-size: 10px;
  1689. text-align: center;
  1690. }
  1691. @media (min-width: 478px) {
  1692. .phone-shell[data-viewport="390"] {
  1693. width: 390px;
  1694. height: 844px;
  1695. }
  1696. .phone-shell[data-viewport="430"] {
  1697. width: 430px;
  1698. height: 932px;
  1699. }
  1700. }
  1701. @media (max-width: 1120px) {
  1702. #scenarioPanel {
  1703. top: auto;
  1704. left: auto;
  1705. right: 12px;
  1706. bottom: 12px;
  1707. max-height: calc(100vh - 24px);
  1708. transform: none;
  1709. }
  1710. }
  1711. @media (max-width: 477px) {
  1712. .prototype-stage {
  1713. padding: 0;
  1714. }
  1715. }
  1716. @media (prefers-reduced-motion: reduce) {
  1717. *,
  1718. *::before,
  1719. *::after {
  1720. scroll-behavior: auto !important;
  1721. animation-duration: 0.01ms !important;
  1722. animation-iteration-count: 1 !important;
  1723. transition-duration: 0.01ms !important;
  1724. }
  1725. }