globals.css 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766
  1. @import 'tailwindcss';
  2. @import 'tw-animate-css';
  3. @import 'shadcn/tailwind.css';
  4. @custom-variant dark (&:is(.dark *));
  5. @theme inline {
  6. --color-background: var(--background);
  7. --color-foreground: var(--foreground);
  8. --color-card: var(--card);
  9. --color-card-foreground: var(--foreground);
  10. --color-popover: var(--background);
  11. --color-popover-foreground: var(--foreground);
  12. --color-primary: var(--primary);
  13. --color-primary-foreground: #fff;
  14. --color-secondary: var(--muted);
  15. --color-secondary-foreground: var(--foreground);
  16. --color-muted: var(--muted);
  17. --color-muted-foreground: var(--muted-foreground);
  18. --color-accent: var(--accent);
  19. --color-accent-foreground: var(--primary);
  20. --color-destructive: #b74435;
  21. --color-border: var(--border);
  22. --color-input: var(--border);
  23. --color-ring: var(--primary);
  24. --color-sidebar: var(--sidebar);
  25. --color-sidebar-foreground: var(--foreground);
  26. --color-sidebar-primary: var(--primary);
  27. --color-sidebar-primary-foreground: #fff;
  28. --color-sidebar-accent: var(--accent);
  29. --color-sidebar-accent-foreground: var(--primary);
  30. --color-sidebar-border: var(--border);
  31. --color-sidebar-ring: var(--primary);
  32. --font-sans: var(--font-geist-sans);
  33. --font-mono: var(--font-geist-mono);
  34. --radius-sm: 4px;
  35. --radius-md: 6px;
  36. --radius-lg: 8px;
  37. --radius-xl: 12px;
  38. }
  39. :root {
  40. --background: #fff;
  41. --foreground: #242c2a;
  42. --card: #fff;
  43. --primary: #167457;
  44. --muted: #f4f6f5;
  45. --muted-foreground: #65716c;
  46. --accent: #eaf4ef;
  47. --border: #e4e9e6;
  48. --sidebar: #f7f9f8;
  49. --radius: 8px;
  50. }
  51. * {
  52. box-sizing: border-box;
  53. }
  54. html {
  55. scroll-behavior: smooth;
  56. scroll-padding-top: 98px;
  57. }
  58. body {
  59. margin: 0;
  60. font-family:
  61. var(--font-geist-sans), 'Microsoft YaHei', 'PingFang SC', sans-serif;
  62. color: var(--foreground);
  63. background: var(--background);
  64. font-size: 16px;
  65. line-height: 1.75;
  66. }
  67. a {
  68. color: inherit;
  69. text-decoration: none;
  70. }
  71. button,
  72. input,
  73. select,
  74. textarea {
  75. font: inherit;
  76. }
  77. button,
  78. a {
  79. -webkit-tap-highlight-color: transparent;
  80. }
  81. button:not(:disabled),
  82. summary {
  83. cursor: pointer;
  84. }
  85. button:disabled {
  86. cursor: not-allowed;
  87. opacity: 0.5;
  88. }
  89. button:focus-visible,
  90. a:focus-visible,
  91. summary:focus-visible {
  92. outline: 2px solid var(--primary);
  93. outline-offset: 4px;
  94. }
  95. p {
  96. margin: 0 0 1em;
  97. }
  98. h1,
  99. h2,
  100. h3,
  101. h4 {
  102. font-weight: 600;
  103. letter-spacing: -0.03em;
  104. }
  105. h1 {
  106. font-size: 44px;
  107. line-height: 1.3;
  108. margin: 13px 0 20px;
  109. }
  110. h2 {
  111. font-size: 24px;
  112. line-height: 1.45;
  113. margin: 0;
  114. }
  115. h3 {
  116. font-size: 17px;
  117. margin: 0 0 7px;
  118. line-height: 1.5;
  119. }
  120. h4 {
  121. font-size: 16px;
  122. margin: 0 0 5px;
  123. }
  124. code,
  125. pre,
  126. .mono {
  127. font-family: var(--font-geist-mono), Consolas, monospace;
  128. }
  129. p code,
  130. li code {
  131. font-size: 0.88em;
  132. padding: 2px 5px;
  133. background: var(--muted);
  134. border: 1px solid var(--border);
  135. border-radius: 4px;
  136. }
  137. section {
  138. scroll-margin-top: 85px;
  139. margin: 42px 0;
  140. }
  141. svg {
  142. flex-shrink: 0;
  143. }
  144. .brand {
  145. display: flex;
  146. align-items: center;
  147. gap: 12px;
  148. padding: 23px 16px 29px;
  149. font-size: 17px;
  150. font-weight: 650;
  151. line-height: 1.45;
  152. }
  153. .brand-symbol {
  154. width: 36px;
  155. height: 36px;
  156. border-radius: 8px;
  157. background: #245b47;
  158. color: #fff;
  159. display: grid;
  160. place-items: center;
  161. }
  162. .brand-sub {
  163. display: block;
  164. font-size: 12px;
  165. font-weight: 400;
  166. letter-spacing: 1px;
  167. color: #76817b;
  168. margin-top: 4px;
  169. }
  170. .nav-caption {
  171. display: flex;
  172. justify-content: space-between;
  173. align-items: center;
  174. font-size: 12px;
  175. color: #7d8981;
  176. padding: 6px 25px 16px;
  177. }
  178. .nav-caption span {
  179. font-family: var(--font-geist-mono);
  180. font-size: 10px;
  181. letter-spacing: 0.7px;
  182. }
  183. .module-nav {
  184. padding: 0 12px;
  185. }
  186. .module-link {
  187. display: flex;
  188. align-items: center;
  189. gap: 12px;
  190. width: 100%;
  191. padding: 11px 13px;
  192. margin: 3px 0;
  193. border-radius: 6px;
  194. font-size: 14px;
  195. color: #626e66;
  196. text-align: left;
  197. background: transparent;
  198. border: 0;
  199. }
  200. .module-link:hover {
  201. background: #edf1ee;
  202. }
  203. .module-link.selected {
  204. background: #e5f0e9;
  205. color: #246248;
  206. font-weight: 600;
  207. }
  208. .module-link > span:nth-child(2) {
  209. flex: 1;
  210. }
  211. .nav-dot {
  212. width: 6px;
  213. height: 6px;
  214. border-radius: 50%;
  215. background: var(--primary);
  216. }
  217. .soon {
  218. font-size: 11px;
  219. color: #7d8882;
  220. font-weight: 400;
  221. }
  222. .sidebar-note {
  223. display: flex;
  224. gap: 11px;
  225. align-items: flex-start;
  226. color: #55665b;
  227. padding: 19px 15px;
  228. font-size: 13px;
  229. border-top: 1px solid var(--border);
  230. }
  231. .sidebar-note small {
  232. display: block;
  233. color: #89928d;
  234. margin-top: 4px;
  235. font-size: 12px;
  236. }
  237. .workspace {
  238. min-width: 0;
  239. flex: 1;
  240. }
  241. .topbar {
  242. height: 69px;
  243. border-bottom: 1px solid var(--border);
  244. display: flex;
  245. align-items: center;
  246. justify-content: space-between;
  247. padding: 0 44px;
  248. position: sticky;
  249. top: 0;
  250. background: rgba(255, 255, 255, 0.96);
  251. z-index: 20;
  252. gap: 20px;
  253. }
  254. .breadcrumbs {
  255. display: flex;
  256. align-items: center;
  257. gap: 15px;
  258. font-size: 13px;
  259. color: #7b857e;
  260. min-width: 0;
  261. }
  262. .breadcrumbs strong {
  263. font-weight: 500;
  264. color: #45544a;
  265. }
  266. .quiet-link {
  267. display: inline-flex;
  268. align-items: center;
  269. gap: 7px;
  270. font-size: 13px;
  271. color: #67736b;
  272. white-space: nowrap;
  273. }
  274. .quiet-link:hover {
  275. color: var(--primary);
  276. }
  277. .document-grid {
  278. display: grid;
  279. grid-template-columns: minmax(0, 860px) 160px;
  280. gap: 55px;
  281. max-width: 1210px;
  282. margin: auto;
  283. padding: 49px 48px 70px;
  284. }
  285. .document-grid > main {
  286. min-width: 0;
  287. }
  288. .eyebrow {
  289. display: flex;
  290. align-items: center;
  291. gap: 11px;
  292. font-size: 11px;
  293. letter-spacing: 1.4px;
  294. color: #657b6b;
  295. font-family: var(--font-geist-mono), 'Microsoft YaHei', sans-serif;
  296. }
  297. .eyebrow span {
  298. width: 17px;
  299. height: 1px;
  300. background: #a1b2a8;
  301. }
  302. .title-dot {
  303. color: var(--primary);
  304. margin-left: 3px;
  305. }
  306. .lead {
  307. color: #657269;
  308. font-size: 17px;
  309. line-height: 1.9;
  310. margin-bottom: 22px;
  311. }
  312. .meta-row {
  313. display: flex;
  314. flex-wrap: wrap;
  315. gap: 8px 20px;
  316. font-size: 12px;
  317. color: #778178;
  318. }
  319. .meta-row > span {
  320. display: flex;
  321. align-items: center;
  322. gap: 6px;
  323. }
  324. .meta-row > span + span:before {
  325. content: '';
  326. width: 3px;
  327. height: 3px;
  328. background: #adb6af;
  329. margin-right: 7px;
  330. border-radius: 50%;
  331. }
  332. .module-intro {
  333. display: flex;
  334. gap: 24px;
  335. border-top: 1px solid var(--border);
  336. border-bottom: 1px solid var(--border);
  337. padding: 24px 0;
  338. margin-top: 30px;
  339. }
  340. .module-intro p {
  341. font-size: 14px;
  342. color: #6e7a71;
  343. margin: 0;
  344. line-height: 1.85;
  345. }
  346. .section-index {
  347. white-space: nowrap;
  348. color: var(--primary);
  349. font-size: 13px;
  350. font-family: var(--font-geist-mono);
  351. padding-top: 2px;
  352. }
  353. .section-heading {
  354. display: flex;
  355. align-items: center;
  356. justify-content: space-between;
  357. gap: 20px;
  358. margin-bottom: 19px;
  359. }
  360. .section-heading > span {
  361. color: #89938c;
  362. font-size: 12px;
  363. }
  364. .path-row {
  365. display: flex;
  366. align-items: center;
  367. gap: 24px;
  368. padding: 21px 2px;
  369. border-bottom: 1px solid var(--border);
  370. }
  371. .path-row > div {
  372. flex: 1;
  373. }
  374. .path-row p {
  375. font-size: 14px;
  376. color: #78857b;
  377. margin: 0;
  378. }
  379. .path-row svg {
  380. color: #8d9c91;
  381. }
  382. .path-row:hover h3 {
  383. color: var(--primary);
  384. }
  385. .path-number {
  386. color: #7e9285;
  387. font-size: 13px;
  388. font-family: var(--font-geist-mono);
  389. }
  390. .toc {
  391. font-size: 13px;
  392. position: sticky;
  393. top: 111px;
  394. align-self: start;
  395. padding-top: 4px;
  396. color: #7a867d;
  397. }
  398. .toc > p {
  399. font-size: 12px;
  400. color: #3f5345;
  401. margin-bottom: 15px;
  402. }
  403. .toc > a {
  404. display: block;
  405. border-left: 1px solid var(--border);
  406. padding: 7px 0 7px 15px;
  407. }
  408. .toc > a:hover {
  409. color: var(--primary);
  410. border-color: var(--primary);
  411. }
  412. .toc-note {
  413. margin-top: 35px;
  414. padding-top: 22px;
  415. border-top: 1px solid var(--border);
  416. font-size: 12px;
  417. line-height: 2;
  418. }
  419. .toc-note p {
  420. margin-top: 12px;
  421. }
  422. .tiny-label {
  423. font-size: 11px;
  424. letter-spacing: 1px;
  425. color: #8b968e;
  426. }
  427. .code {
  428. font-size: 13px;
  429. line-height: 1.85;
  430. padding: 22px 24px;
  431. background: #f5f7f6;
  432. color: #2e493c;
  433. border: 1px solid var(--border);
  434. border-radius: 8px;
  435. overflow: auto;
  436. tab-size: 4;
  437. white-space: pre;
  438. margin: 15px 0 23px;
  439. }
  440. .code code {
  441. font: inherit;
  442. }
  443. @media (min-width: 1440px) {
  444. .document-grid {
  445. padding-top: 60px;
  446. gap: 70px;
  447. }
  448. .topbar {
  449. padding: 0 52px;
  450. }
  451. }
  452. @media (max-width: 1200px) {
  453. .toc {
  454. display: none;
  455. }
  456. .document-grid {
  457. grid-template-columns: minmax(0, 1fr);
  458. padding: 38px 38px 60px;
  459. max-width: 920px;
  460. }
  461. .topbar {
  462. padding: 0 32px;
  463. }
  464. }
  465. @media (max-width: 767px) {
  466. .document-grid {
  467. padding: 30px 23px 60px;
  468. }
  469. .topbar {
  470. padding: 0 17px;
  471. height: 60px;
  472. }
  473. .quiet-link {
  474. font-size: 12px;
  475. }
  476. .breadcrumbs {
  477. gap: 9px;
  478. font-size: 12px;
  479. }
  480. h1 {
  481. font-size: 33px;
  482. }
  483. h2 {
  484. font-size: 22px;
  485. }
  486. .lead {
  487. font-size: 16px;
  488. }
  489. .module-intro {
  490. gap: 16px;
  491. }
  492. .path-row {
  493. gap: 16px;
  494. }
  495. .section-heading {
  496. align-items: flex-start;
  497. }
  498. .section-heading > span {
  499. max-width: 125px;
  500. text-align: right;
  501. }
  502. .meta-row {
  503. font-size: 11px;
  504. gap: 8px 11px;
  505. }
  506. }
  507. .skip-link {
  508. position: fixed;
  509. top: -80px;
  510. left: 20px;
  511. padding: 10px 20px;
  512. background: var(--primary);
  513. color: white;
  514. z-index: 100;
  515. border-radius: 6px;
  516. }
  517. .skip-link:focus {
  518. top: 12px;
  519. }
  520. h1:focus {
  521. outline: none;
  522. }
  523. .topbar-actions {
  524. display: flex;
  525. align-items: center;
  526. gap: 23px;
  527. }
  528. .topbar-actions button {
  529. font-size: 12px;
  530. color: #5e7064;
  531. }
  532. .overview-actions {
  533. display: flex;
  534. align-items: center;
  535. gap: 12px;
  536. flex-wrap: wrap;
  537. margin-top: 27px;
  538. }
  539. .primary-link,
  540. .secondary-link {
  541. display: inline-flex;
  542. align-items: center;
  543. justify-content: center;
  544. gap: 9px;
  545. border-radius: 6px;
  546. padding: 9px 15px;
  547. font-size: 13px;
  548. line-height: 1.6;
  549. transition: background 0.16s;
  550. }
  551. .primary-link {
  552. background: var(--primary);
  553. color: #fff;
  554. border: 1px solid var(--primary);
  555. }
  556. .primary-link:hover {
  557. background: #105b43;
  558. }
  559. .secondary-link {
  560. background: #fff;
  561. color: #596a60;
  562. border: 1px solid var(--border);
  563. }
  564. .secondary-link:hover {
  565. background: #f2f6f3;
  566. }
  567. .material-state {
  568. font-size: 11px;
  569. color: #89928d;
  570. margin-left: 3px;
  571. }
  572. .phase {
  573. margin: 23px 0 29px;
  574. }
  575. .phase-heading {
  576. display: flex;
  577. align-items: center;
  578. gap: 15px;
  579. padding: 13px 16px;
  580. background: #f4f7f5;
  581. border: 1px solid var(--border);
  582. border-radius: 7px;
  583. }
  584. .phase-heading > div {
  585. flex: 1;
  586. }
  587. .phase-heading h3 {
  588. font-size: 15px;
  589. margin: 0 0 3px;
  590. }
  591. .phase-heading p {
  592. font-size: 12px;
  593. color: #7a867d;
  594. margin: 0;
  595. }
  596. .phase-marker {
  597. font-size: 16px;
  598. color: #829c8d;
  599. font-family: var(--font-geist-mono);
  600. align-self: flex-start;
  601. line-height: 1.6;
  602. }
  603. .phase-range {
  604. font-size: 11px;
  605. color: #8d9891;
  606. white-space: nowrap;
  607. font-family: var(--font-geist-mono);
  608. }
  609. .lesson-rows {
  610. padding-left: 13px;
  611. }
  612. .lesson-row {
  613. display: flex;
  614. gap: 15px;
  615. align-items: center;
  616. padding: 17px 8px;
  617. border-bottom: 1px solid #edf0ee;
  618. }
  619. .lesson-row > div {
  620. flex: 1;
  621. min-width: 0;
  622. }
  623. .lesson-row strong {
  624. font-size: 14px;
  625. font-weight: 500;
  626. display: block;
  627. line-height: 1.6;
  628. }
  629. .lesson-row p {
  630. font-size: 12px;
  631. margin: 4px 0 0;
  632. color: #7d8880;
  633. line-height: 1.65;
  634. }
  635. .lesson-number {
  636. color: #94a297;
  637. font-family: var(--font-geist-mono);
  638. font-size: 12px;
  639. min-width: 22px;
  640. }
  641. .lesson-row:hover {
  642. background: #fbfdfb;
  643. }
  644. .lesson-row:hover strong {
  645. color: var(--primary);
  646. }
  647. .lesson-row > svg {
  648. color: #9ba99f;
  649. }
  650. .lesson-duration {
  651. font-size: 11px;
  652. white-space: nowrap;
  653. color: #87948b;
  654. }
  655. .interactive-badge {
  656. border: 1px solid #d8e7de;
  657. border-radius: 4px;
  658. background: #f7fbf8;
  659. color: #5d8d72;
  660. font-size: 10px;
  661. padding: 0 5px;
  662. white-space: nowrap;
  663. }
  664. .section-caption {
  665. font-size: 13px;
  666. color: #728176;
  667. line-height: 1.8;
  668. margin-top: 16px;
  669. }
  670. .api-table {
  671. margin: 22px 0;
  672. font-size: 13px;
  673. }
  674. .api-table th {
  675. color: #7d8d81;
  676. font-size: 12px;
  677. font-weight: 400;
  678. background: #f7f9f7;
  679. }
  680. .api-table td {
  681. padding: 13px 10px;
  682. white-space: normal;
  683. color: #56685b;
  684. font-size: 13px;
  685. line-height: 1.8;
  686. }
  687. .api-table th:last-child,
  688. .api-table td:last-child {
  689. white-space: nowrap;
  690. }
  691. .api-table code {
  692. font-size: 11px;
  693. color: #35694c;
  694. }
  695. .resource-strip {
  696. padding: 23px;
  697. display: flex;
  698. align-items: center;
  699. gap: 16px;
  700. background: #f7faf8;
  701. border: 1px solid var(--border);
  702. border-radius: 7px;
  703. margin-top: 20px;
  704. color: #56705e;
  705. }
  706. .resource-strip > div {
  707. flex: 1;
  708. }
  709. .resource-strip h3 {
  710. font-size: 15px;
  711. }
  712. .resource-strip p {
  713. font-size: 12px;
  714. margin: 0;
  715. color: #7b8b80;
  716. }
  717. .resource-strip a {
  718. white-space: nowrap;
  719. font-size: 12px;
  720. }
  721. .check-list {
  722. list-style: none;
  723. padding: 0;
  724. margin: 0;
  725. }
  726. .check-list li {
  727. display: flex;
  728. gap: 13px;
  729. padding: 10px 0;
  730. font-size: 15px;
  731. line-height: 1.85;
  732. }
  733. .check-list svg {
  734. margin-top: 6px;
  735. color: var(--primary);
  736. }
  737. .next-module {
  738. border-top: 1px solid var(--border);
  739. padding-top: 25px;
  740. margin-top: 35px;
  741. display: flex;
  742. gap: 14px;
  743. align-items: center;
  744. font-size: 13px;
  745. }
  746. .next-module > span:first-child {
  747. color: #819086;
  748. font-size: 12px;
  749. }
  750. .next-module strong {
  751. font-weight: 500;
  752. }
  753. .next-module .soon {
  754. margin-left: auto;
  755. }
  756. .page-footer {
  757. display: flex;
  758. justify-content: space-between;
  759. gap: 20px;
  760. font-size: 11px;
  761. color: #8b968e;
  762. margin: 0 44px;
  763. padding: 21px 0;
  764. border-top: 1px solid var(--border);
  765. }
  766. .toc-download {
  767. display: flex !important;
  768. align-items: center;
  769. gap: 8px;
  770. border: 0 !important;
  771. padding-left: 0 !important;
  772. color: #527c60 !important;
  773. margin-top: 15px;
  774. }
  775. .pending-module {
  776. min-height: 67vh;
  777. padding: 20px 0;
  778. }
  779. .pending-module .status-label {
  780. display: inline-block;
  781. margin: 8px 0 25px;
  782. }
  783. .pending-module .lead {
  784. margin-bottom: 32px;
  785. }
  786. .status-label {
  787. font-size: 11px;
  788. color: #718275;
  789. background: #eef3ef;
  790. border: 1px solid #e2e9e4;
  791. padding: 3px 8px;
  792. border-radius: 4px;
  793. white-space: nowrap;
  794. }
  795. .lesson-nav {
  796. margin: 18px 0 10px;
  797. padding-top: 22px;
  798. border-top: 1px solid var(--border);
  799. }
  800. .lesson-nav .nav-caption {
  801. padding-bottom: 6px;
  802. }
  803. .lesson-nav-group {
  804. font-size: 11px;
  805. color: #8b998e;
  806. padding: 15px 24px 7px;
  807. margin: 0;
  808. }
  809. .lesson-nav-link {
  810. display: flex;
  811. gap: 9px;
  812. padding: 8px 15px 8px 24px;
  813. font-size: 12px;
  814. color: #6f7f73;
  815. line-height: 1.6;
  816. border-left: 2px solid transparent;
  817. }
  818. .lesson-nav-link span {
  819. font-family: var(--font-geist-mono);
  820. font-size: 10px;
  821. color: #a0aaa3;
  822. padding-top: 2px;
  823. }
  824. .lesson-nav-link.current {
  825. color: var(--primary);
  826. background: #edf4ef;
  827. border-left-color: var(--primary);
  828. }
  829. .lesson-nav-link:hover {
  830. color: var(--primary);
  831. background: #edf4ef;
  832. }
  833. .back-link {
  834. display: flex;
  835. align-items: center;
  836. gap: 7px;
  837. font-size: 12px;
  838. color: #798b7d;
  839. margin-bottom: 26px;
  840. width: fit-content;
  841. }
  842. .back-link:hover {
  843. color: var(--primary);
  844. }
  845. .lesson-title {
  846. font-size: 35px;
  847. margin-top: 15px;
  848. line-height: 1.5;
  849. }
  850. .lesson-article > .lead {
  851. font-size: 16px;
  852. }
  853. .objectives {
  854. background: #f4f8f5;
  855. border-left: 3px solid #a7c5af;
  856. padding: 21px 23px;
  857. margin: 29px 0 18px;
  858. border-radius: 0 6px 6px 0;
  859. }
  860. .objectives h2 {
  861. font-size: 15px;
  862. margin-bottom: 12px;
  863. }
  864. .objectives ul {
  865. list-style: none;
  866. padding: 0;
  867. margin: 0;
  868. }
  869. .objectives li {
  870. display: flex;
  871. gap: 12px;
  872. font-size: 14px;
  873. line-height: 1.8;
  874. padding: 5px 0;
  875. }
  876. .objectives li span {
  877. color: #81a48d;
  878. font-size: 11px;
  879. font-family: var(--font-geist-mono);
  880. padding-top: 3px;
  881. }
  882. .video-section {
  883. margin: 18px 0 37px;
  884. }
  885. .video-pending {
  886. display: flex;
  887. align-items: center;
  888. gap: 15px;
  889. padding: 23px 20px;
  890. border: 1px solid var(--border);
  891. border-radius: 7px;
  892. color: #85958a;
  893. background: #fafcfb;
  894. }
  895. .video-pending > div {
  896. flex: 1;
  897. }
  898. .video-pending strong {
  899. display: block;
  900. font-weight: 500;
  901. font-size: 14px;
  902. color: #677d6e;
  903. }
  904. .video-pending div span {
  905. display: block;
  906. font-size: 12px;
  907. margin-top: 5px;
  908. color: #94a197;
  909. }
  910. .video-player video {
  911. width: 100%;
  912. aspect-ratio: 16/9;
  913. background: #18291f;
  914. border-radius: 8px;
  915. }
  916. .video-player > a {
  917. display: flex;
  918. align-items: center;
  919. gap: 7px;
  920. font-size: 12px;
  921. margin-top: 8px;
  922. color: var(--primary);
  923. }
  924. .concept {
  925. margin: 23px 0 26px;
  926. }
  927. .concept h3 {
  928. display: flex;
  929. gap: 9px;
  930. font-size: 17px;
  931. }
  932. .concept h3 > span {
  933. color: #90a394;
  934. font-size: 14px;
  935. padding-top: 2px;
  936. }
  937. .concept p,
  938. .practice-step > p {
  939. font-size: 15px;
  940. line-height: 1.95;
  941. color: #5e6e63;
  942. white-space: pre-line;
  943. overflow-wrap: anywhere;
  944. }
  945. .practice-step {
  946. margin: 26px 0 34px;
  947. }
  948. .practice-title {
  949. display: flex;
  950. align-items: flex-start;
  951. gap: 13px;
  952. margin: 15px 0 12px;
  953. }
  954. .practice-title > span {
  955. font-family: var(--font-geist-mono);
  956. font-size: 12px;
  957. width: 27px;
  958. height: 27px;
  959. display: grid;
  960. place-items: center;
  961. flex-shrink: 0;
  962. border: 1px solid #dce8df;
  963. background: #f5faf6;
  964. border-radius: 5px;
  965. color: #5f846c;
  966. }
  967. .practice-title h3 {
  968. margin: 0;
  969. padding-top: 1px;
  970. font-size: 17px;
  971. }
  972. .code-block {
  973. border: 1px solid #dfe7e1;
  974. background: #f7f9f7;
  975. border-radius: 8px;
  976. overflow: hidden;
  977. margin: 18px 0 25px;
  978. }
  979. .code-toolbar {
  980. display: flex;
  981. justify-content: space-between;
  982. align-items: center;
  983. padding: 10px 15px;
  984. border-bottom: 1px solid #e5ece6;
  985. background: #f0f4f1;
  986. font-size: 12px;
  987. color: #718376;
  988. }
  989. .code-toolbar > span {
  990. display: flex;
  991. align-items: center;
  992. gap: 7px;
  993. font-family: var(--font-geist-mono);
  994. }
  995. .copy-button {
  996. display: flex;
  997. align-items: center;
  998. gap: 5px;
  999. font-size: 11px;
  1000. color: #6e8174;
  1001. background: transparent;
  1002. border: 0;
  1003. padding: 0 4px;
  1004. }
  1005. .copy-button:hover {
  1006. color: var(--primary);
  1007. }
  1008. .code-block pre {
  1009. font-size: 12px;
  1010. line-height: 1.9;
  1011. overflow: auto;
  1012. margin: 0;
  1013. padding: 19px 21px 21px 0;
  1014. color: #364d3d;
  1015. tab-size: 4;
  1016. }
  1017. .code-line {
  1018. white-space: pre;
  1019. }
  1020. .line-number {
  1021. display: inline-block;
  1022. min-width: 46px;
  1023. padding: 0 13px 0 8px;
  1024. text-align: right;
  1025. user-select: none;
  1026. pointer-events: none;
  1027. color: #b0bbb3;
  1028. font-size: 11px;
  1029. }
  1030. .syntax-string {
  1031. color: #477856;
  1032. }
  1033. .syntax-keyword {
  1034. color: #247081;
  1035. font-weight: 500;
  1036. }
  1037. .syntax-comment {
  1038. color: #93a398;
  1039. }
  1040. .pitfall {
  1041. padding: 22px 0;
  1042. border-bottom: 1px solid var(--border);
  1043. }
  1044. .pitfall:first-child {
  1045. padding-top: 4px;
  1046. }
  1047. .pitfall h3 {
  1048. font-size: 16px;
  1049. margin-bottom: 12px;
  1050. }
  1051. .pitfall p {
  1052. display: flex;
  1053. gap: 13px;
  1054. font-size: 14px;
  1055. color: #708074;
  1056. line-height: 1.9;
  1057. margin-bottom: 7px;
  1058. white-space: pre-line;
  1059. }
  1060. .pitfall p strong {
  1061. font-size: 11px;
  1062. font-weight: 400;
  1063. background: #f0f4f1;
  1064. padding: 2px 5px;
  1065. color: #7b9282;
  1066. flex-shrink: 0;
  1067. align-self: flex-start;
  1068. border-radius: 3px;
  1069. }
  1070. .exercise {
  1071. padding: 26px;
  1072. border: 1px solid #dce7df;
  1073. border-radius: 8px;
  1074. background: #fbfdfb;
  1075. }
  1076. .exercise h2 {
  1077. font-size: 22px;
  1078. }
  1079. .exercise > p {
  1080. font-size: 15px;
  1081. line-height: 1.9;
  1082. color: #586d5e;
  1083. }
  1084. .exercise details {
  1085. border-top: 1px solid #e5ede7;
  1086. padding-top: 15px;
  1087. margin-top: 15px;
  1088. font-size: 14px;
  1089. }
  1090. .exercise summary {
  1091. display: flex;
  1092. align-items: center;
  1093. justify-content: space-between;
  1094. list-style: none;
  1095. color: #63886e;
  1096. }
  1097. .exercise summary::-webkit-details-marker {
  1098. display: none;
  1099. }
  1100. .exercise details[open] summary svg {
  1101. transform: rotate(90deg);
  1102. }
  1103. .exercise details p,
  1104. .answer-text {
  1105. white-space: pre-wrap;
  1106. overflow-wrap: anywhere;
  1107. margin: 17px 0 4px;
  1108. font-size: 14px;
  1109. line-height: 1.9;
  1110. color: #647a6b;
  1111. }
  1112. .reference-links {
  1113. display: flex;
  1114. flex-direction: column;
  1115. align-items: flex-start;
  1116. gap: 12px;
  1117. }
  1118. .reference-links a {
  1119. display: inline-flex;
  1120. align-items: center;
  1121. gap: 8px;
  1122. font-size: 14px;
  1123. color: #4f8662;
  1124. border-bottom: 1px solid transparent;
  1125. }
  1126. .reference-links a:hover {
  1127. border-color: #91b59c;
  1128. }
  1129. .lesson-pagination {
  1130. display: grid;
  1131. grid-template-columns: 1fr 1fr;
  1132. gap: 24px;
  1133. padding-top: 30px;
  1134. margin-top: 44px;
  1135. border-top: 1px solid var(--border);
  1136. }
  1137. .lesson-pagination a {
  1138. padding: 4px 0;
  1139. }
  1140. .lesson-pagination span {
  1141. display: flex;
  1142. align-items: center;
  1143. gap: 7px;
  1144. color: #8a9b8e;
  1145. font-size: 12px;
  1146. margin-bottom: 9px;
  1147. }
  1148. .lesson-pagination strong {
  1149. font-weight: 500;
  1150. font-size: 14px;
  1151. color: #56775f;
  1152. line-height: 1.7;
  1153. }
  1154. .lesson-pagination a.next {
  1155. text-align: right;
  1156. }
  1157. .lesson-pagination a.next span {
  1158. justify-content: flex-end;
  1159. }
  1160. .presentation [data-slot='sidebar'],
  1161. .presentation .toc,
  1162. .presentation [data-slot='sidebar-trigger'] {
  1163. display: none;
  1164. }
  1165. .presentation .document-grid {
  1166. max-width: 1150px;
  1167. grid-template-columns: minmax(0, 1fr);
  1168. padding: 48px 65px;
  1169. }
  1170. .presentation .code-block pre {
  1171. font-size: 16px;
  1172. line-height: 1.9;
  1173. }
  1174. .presentation .concept p,
  1175. .presentation .practice-step > p,
  1176. .presentation .check-list li {
  1177. font-size: 19px;
  1178. line-height: 2;
  1179. }
  1180. .presentation .lesson-title {
  1181. font-size: 44px;
  1182. }
  1183. .demo {
  1184. border: 1px solid #dbe7df;
  1185. border-radius: 9px;
  1186. background: #fcfefd;
  1187. overflow: hidden;
  1188. padding: 21px 24px;
  1189. margin: 22px 0;
  1190. }
  1191. .demo-top {
  1192. display: flex;
  1193. align-items: center;
  1194. justify-content: space-between;
  1195. gap: 14px;
  1196. margin-bottom: 18px;
  1197. }
  1198. .demo-label {
  1199. font-size: 13px;
  1200. font-weight: 500;
  1201. color: #3b684b;
  1202. }
  1203. .simulation {
  1204. font-size: 10px;
  1205. color: #8da494;
  1206. }
  1207. .protocol-tabs {
  1208. padding: 4px !important;
  1209. background: #eef4f0 !important;
  1210. border: 1px solid #e6ede7 !important;
  1211. height: auto !important;
  1212. border-radius: 6px !important;
  1213. gap: 3px !important;
  1214. }
  1215. .protocol-tabs button {
  1216. font-size: 12px !important;
  1217. min-height: 30px !important;
  1218. padding: 5px 13px !important;
  1219. border-radius: 4px !important;
  1220. }
  1221. .protocol-tabs button[data-active] {
  1222. color: #276643 !important;
  1223. box-shadow: 0 1px 3px #234e3c15 !important;
  1224. background: #fff !important;
  1225. }
  1226. .demo-description {
  1227. font-size: 13px;
  1228. color: #6f8879;
  1229. line-height: 1.9;
  1230. margin: 18px 0;
  1231. }
  1232. .connection-scene {
  1233. display: flex;
  1234. justify-content: center;
  1235. align-items: center;
  1236. gap: 22px;
  1237. padding: 23px 15px 27px;
  1238. }
  1239. .endpoint {
  1240. display: flex;
  1241. align-items: center;
  1242. flex-direction: column;
  1243. min-width: 108px;
  1244. gap: 5px;
  1245. color: #7c9887;
  1246. }
  1247. .endpoint > svg {
  1248. margin-bottom: 7px;
  1249. }
  1250. .endpoint strong {
  1251. font-size: 13px;
  1252. font-weight: 500;
  1253. color: #426f51;
  1254. }
  1255. .endpoint span {
  1256. font-family: var(--font-geist-mono);
  1257. font-size: 10px;
  1258. color: #94a89b;
  1259. white-space: nowrap;
  1260. }
  1261. .connection-track {
  1262. flex: 1;
  1263. max-width: 280px;
  1264. display: flex;
  1265. align-items: center;
  1266. flex-direction: column;
  1267. gap: 9px;
  1268. font-size: 11px;
  1269. color: #819c8b;
  1270. }
  1271. .connection-track small {
  1272. font-family: var(--font-geist-mono);
  1273. font-size: 10px;
  1274. color: #9aad9f;
  1275. white-space: nowrap;
  1276. }
  1277. .wire {
  1278. height: 22px;
  1279. width: 100%;
  1280. display: flex;
  1281. align-items: center;
  1282. justify-content: center;
  1283. position: relative;
  1284. }
  1285. .wire::before {
  1286. content: '';
  1287. border-top: 1px dashed #bacfc1;
  1288. position: absolute;
  1289. width: 100%;
  1290. }
  1291. .wire svg {
  1292. background: #fcfefd;
  1293. z-index: 1;
  1294. width: 36px;
  1295. color: #92b69e;
  1296. }
  1297. .active .wire::before {
  1298. border-top: 1px solid #7ca88a;
  1299. }
  1300. .active .wire svg {
  1301. color: #2d8450;
  1302. }
  1303. .return-arrow {
  1304. transform: rotate(180deg);
  1305. }
  1306. .demo-result {
  1307. display: flex;
  1308. gap: 11px;
  1309. align-items: flex-start;
  1310. background: #eff6f1;
  1311. border: 1px solid #e4eee6;
  1312. border-radius: 5px;
  1313. padding: 12px 14px;
  1314. color: #698775;
  1315. min-height: 50px;
  1316. margin: 12px 0;
  1317. }
  1318. .demo-result p {
  1319. font-size: 12px;
  1320. line-height: 1.9;
  1321. margin: 0;
  1322. }
  1323. .step-indicator {
  1324. font-family: var(--font-geist-mono);
  1325. font-size: 10px;
  1326. white-space: nowrap;
  1327. color: #548a66;
  1328. margin-top: 2px;
  1329. }
  1330. .packet {
  1331. background: #f4f8f5;
  1332. border: 1px solid #e5ede7;
  1333. border-radius: 5px;
  1334. padding: 16px;
  1335. font-size: 12px;
  1336. line-height: 1.85;
  1337. color: #5c7f66;
  1338. overflow: auto;
  1339. min-height: 116px;
  1340. margin: 14px 0;
  1341. white-space: pre-wrap;
  1342. overflow-wrap: anywhere;
  1343. }
  1344. .demo-controls {
  1345. display: flex;
  1346. align-items: center;
  1347. gap: 5px;
  1348. margin-top: 17px;
  1349. }
  1350. .demo-controls button {
  1351. font-size: 12px !important;
  1352. gap: 5px !important;
  1353. color: #4c7d5c;
  1354. min-height: 33px;
  1355. }
  1356. .demo-controls button svg {
  1357. width: 13px !important;
  1358. height: 13px !important;
  1359. }
  1360. .step-dots {
  1361. margin-left: auto;
  1362. display: flex;
  1363. gap: 5px;
  1364. }
  1365. .step-dots i {
  1366. width: 5px;
  1367. height: 5px;
  1368. border-radius: 50%;
  1369. background: #d9e5dd;
  1370. }
  1371. .step-dots .on {
  1372. background: #6aa37c;
  1373. }
  1374. .request-path {
  1375. display: flex;
  1376. gap: 6px;
  1377. justify-content: space-between;
  1378. margin: 26px 0;
  1379. }
  1380. .request-path > div {
  1381. display: flex;
  1382. align-items: center;
  1383. gap: 6px;
  1384. color: #9bab9f;
  1385. }
  1386. .request-path > div > span {
  1387. width: 20px;
  1388. height: 20px;
  1389. display: grid;
  1390. place-items: center;
  1391. border: 1px solid #dbe7df;
  1392. border-radius: 50%;
  1393. font-size: 11px;
  1394. }
  1395. .request-path small {
  1396. font-size: 11px;
  1397. }
  1398. .request-path .reached {
  1399. color: var(--primary);
  1400. }
  1401. .request-path .reached > span {
  1402. background: #e3f0e7;
  1403. border-color: #a9c8b3;
  1404. }
  1405. .async-lanes {
  1406. margin: 25px 0;
  1407. }
  1408. .async-lanes > div + div {
  1409. margin-top: 23px;
  1410. }
  1411. .lane-label {
  1412. display: flex;
  1413. align-items: center;
  1414. justify-content: space-between;
  1415. font-size: 12px;
  1416. margin-bottom: 12px;
  1417. color: #5d7d69;
  1418. }
  1419. .lane-label strong {
  1420. font-weight: 500;
  1421. }
  1422. .lane-label > span {
  1423. font-size: 11px;
  1424. color: #95a99c;
  1425. }
  1426. .timeline-row {
  1427. display: flex;
  1428. gap: 10px;
  1429. align-items: center;
  1430. margin: 7px 0;
  1431. font-family: var(--font-geist-mono);
  1432. font-size: 11px;
  1433. color: #7d9687;
  1434. }
  1435. .timeline-row > span {
  1436. width: 15px;
  1437. }
  1438. .timeline {
  1439. display: grid;
  1440. grid-template-columns: repeat(6, 1fr);
  1441. gap: 4px;
  1442. flex: 1;
  1443. }
  1444. .timeline i {
  1445. height: 28px;
  1446. background: #f0f5f1;
  1447. border-radius: 3px;
  1448. font-size: 9px;
  1449. font-style: normal;
  1450. display: grid;
  1451. place-items: center;
  1452. border: 1px solid #e5eee8;
  1453. color: #91ab9c;
  1454. }
  1455. .timeline i.pending {
  1456. border: 1px dashed #aac8b5;
  1457. background: #f7fbf8;
  1458. }
  1459. .timeline i.elapsed {
  1460. background: #a4cdb2;
  1461. border-color: #91bda0;
  1462. color: #356145;
  1463. }
  1464. .time-readout {
  1465. margin-left: auto;
  1466. font-family: var(--font-geist-mono);
  1467. font-size: 12px;
  1468. color: #6b8c77;
  1469. white-space: nowrap;
  1470. }
  1471. .demo-footnote {
  1472. font-size: 11px;
  1473. color: #91a899;
  1474. margin: 19px 0 0;
  1475. border-top: 1px solid #e7eee9;
  1476. padding-top: 15px;
  1477. }
  1478. @media (max-width: 1300px) {
  1479. .material-state {
  1480. display: none;
  1481. }
  1482. .topbar-actions {
  1483. gap: 12px;
  1484. }
  1485. .document-grid {
  1486. gap: 37px;
  1487. }
  1488. }
  1489. @media (max-width: 1000px) {
  1490. .docs-link {
  1491. display: none;
  1492. }
  1493. .lesson-row p {
  1494. display: none;
  1495. }
  1496. .demo {
  1497. padding: 19px;
  1498. }
  1499. .simulation {
  1500. font-size: 9px;
  1501. }
  1502. .phase-range {
  1503. display: none;
  1504. }
  1505. .endpoint {
  1506. min-width: 95px;
  1507. }
  1508. .connection-scene {
  1509. gap: 12px;
  1510. padding: 20px 0;
  1511. }
  1512. .resource-strip {
  1513. flex-wrap: wrap;
  1514. }
  1515. .resource-strip > a {
  1516. margin-left: 41px;
  1517. }
  1518. }
  1519. @media (max-width: 767px) {
  1520. .lesson-title {
  1521. font-size: 28px;
  1522. line-height: 1.6;
  1523. }
  1524. .lesson-nav-link {
  1525. font-size: 14px;
  1526. }
  1527. .lesson-nav-group {
  1528. font-size: 12px;
  1529. }
  1530. .module-link {
  1531. font-size: 15px;
  1532. }
  1533. .topbar-actions button {
  1534. font-size: 11px;
  1535. padding: 0 5px;
  1536. }
  1537. .topbar-actions button svg {
  1538. width: 14px !important;
  1539. }
  1540. .phase-heading {
  1541. gap: 12px;
  1542. }
  1543. .phase-heading p {
  1544. font-size: 11px;
  1545. }
  1546. .lesson-row {
  1547. gap: 9px;
  1548. padding: 16px 2px;
  1549. }
  1550. .lesson-row strong {
  1551. font-size: 13px;
  1552. }
  1553. .lesson-duration {
  1554. font-size: 10px;
  1555. }
  1556. .interactive-badge {
  1557. font-size: 9px;
  1558. }
  1559. .lesson-rows {
  1560. padding-left: 4px;
  1561. }
  1562. .primary-link,
  1563. .secondary-link {
  1564. font-size: 12px;
  1565. }
  1566. .overview-actions {
  1567. gap: 9px;
  1568. }
  1569. .phase-marker {
  1570. font-size: 14px;
  1571. }
  1572. .resource-strip {
  1573. padding: 18px;
  1574. }
  1575. .next-module {
  1576. flex-wrap: wrap;
  1577. }
  1578. .next-module .soon {
  1579. margin-left: 0;
  1580. }
  1581. .objectives {
  1582. padding: 18px;
  1583. }
  1584. .objectives li {
  1585. font-size: 13px;
  1586. }
  1587. .video-pending {
  1588. padding: 19px 15px;
  1589. }
  1590. .video-pending .status-label {
  1591. display: none;
  1592. }
  1593. .concept p,
  1594. .practice-step > p {
  1595. font-size: 15px;
  1596. }
  1597. .exercise {
  1598. padding: 22px 18px;
  1599. }
  1600. .code-block pre {
  1601. font-size: 11px;
  1602. }
  1603. .line-number {
  1604. min-width: 33px;
  1605. padding: 0 8px 0 4px;
  1606. }
  1607. .lesson-pagination {
  1608. gap: 16px;
  1609. }
  1610. .lesson-pagination strong {
  1611. font-size: 13px;
  1612. }
  1613. .demo {
  1614. padding: 16px;
  1615. }
  1616. .demo-top {
  1617. align-items: flex-start;
  1618. gap: 8px;
  1619. }
  1620. .demo-label {
  1621. font-size: 12px;
  1622. }
  1623. .simulation {
  1624. font-size: 9px;
  1625. max-width: 120px;
  1626. text-align: right;
  1627. }
  1628. .protocol-tabs {
  1629. max-width: 100%;
  1630. }
  1631. .protocol-tabs button {
  1632. font-size: 11px !important;
  1633. padding: 4px 8px !important;
  1634. }
  1635. .endpoint {
  1636. min-width: 65px;
  1637. }
  1638. .endpoint span {
  1639. font-size: 8px;
  1640. }
  1641. .endpoint strong {
  1642. font-size: 12px;
  1643. }
  1644. .connection-scene {
  1645. gap: 9px;
  1646. }
  1647. .connection-track {
  1648. font-size: 10px;
  1649. }
  1650. .connection-track small {
  1651. font-size: 8px;
  1652. white-space: normal;
  1653. text-align: center;
  1654. }
  1655. .demo-result {
  1656. padding: 10px;
  1657. }
  1658. .demo-result p {
  1659. font-size: 11px;
  1660. }
  1661. .demo-controls {
  1662. gap: 1px;
  1663. }
  1664. .demo-controls button {
  1665. font-size: 11px !important;
  1666. padding: 0 8px !important;
  1667. }
  1668. .packet {
  1669. font-size: 11px;
  1670. padding: 12px;
  1671. }
  1672. .request-path {
  1673. gap: 3px;
  1674. flex-wrap: wrap;
  1675. }
  1676. .request-path > div {
  1677. gap: 4px;
  1678. }
  1679. .request-path small {
  1680. font-size: 10px;
  1681. }
  1682. .request-path > div > svg {
  1683. display: none;
  1684. }
  1685. .demo-footnote {
  1686. font-size: 11px;
  1687. }
  1688. .page-footer {
  1689. margin: 0 23px;
  1690. font-size: 10px;
  1691. flex-direction: column;
  1692. gap: 3px;
  1693. }
  1694. .presentation .document-grid {
  1695. padding: 30px 23px;
  1696. }
  1697. .presentation .lesson-title {
  1698. font-size: 31px;
  1699. }
  1700. .presentation .code-block pre {
  1701. font-size: 13px;
  1702. }
  1703. .presentation .concept p,
  1704. .presentation .practice-step > p,
  1705. .presentation .check-list li {
  1706. font-size: 17px;
  1707. }
  1708. }
  1709. @media print {
  1710. [data-slot='sidebar'],
  1711. .topbar,
  1712. .toc,
  1713. .page-footer,
  1714. .demo-controls,
  1715. .video-section,
  1716. .lesson-pagination,
  1717. .overview-actions,
  1718. .copy-button,
  1719. .back-link {
  1720. display: none !important;
  1721. }
  1722. .document-grid,
  1723. .presentation .document-grid {
  1724. display: block;
  1725. max-width: none;
  1726. padding: 0;
  1727. }
  1728. .workspace {
  1729. width: 100%;
  1730. }
  1731. .code-block pre {
  1732. white-space: pre-wrap;
  1733. overflow: visible;
  1734. font-size: 10px;
  1735. }
  1736. .code-line {
  1737. white-space: pre-wrap;
  1738. }
  1739. .code-block {
  1740. break-inside: avoid;
  1741. }
  1742. .lesson-title {
  1743. font-size: 27px;
  1744. }
  1745. .concept p,
  1746. .practice-step > p {
  1747. font-size: 12px;
  1748. }
  1749. .exercise details:not([open]) {
  1750. display: none;
  1751. }
  1752. section {
  1753. margin: 25px 0;
  1754. }
  1755. }
  1756. @media (prefers-reduced-motion: reduce) {
  1757. html {
  1758. scroll-behavior: auto;
  1759. }
  1760. *,
  1761. *::before,
  1762. *::after {
  1763. animation-duration: 0.01ms !important;
  1764. transition-duration: 0.01ms !important;
  1765. }
  1766. }