style.css 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488
  1. body {
  2. font-family: 'Montserrat', sans-serif;
  3. }
  4. @layer from-quill-editor {
  5. .ql-editor blockquote,
  6. .ql-editor h1,
  7. .ql-editor h2,
  8. .ql-editor h3,
  9. .ql-editor h4,
  10. .ql-editor h5,
  11. .ql-editor h6,
  12. .ql-editor ol,
  13. .ql-editor p,
  14. .ql-editor pre,
  15. .ql-editor ul {
  16. counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9
  17. }
  18. .ql-editor ol,
  19. .ql-editor ul {
  20. padding-left: 1.5em
  21. }
  22. .ql-editor ol>li,
  23. .ql-editor ul>li {
  24. list-style-type: none
  25. }
  26. .ql-editor ul>li:before {
  27. content: "\2022"
  28. }
  29. .ql-editor li:before {
  30. display: inline-block;
  31. white-space: nowrap;
  32. width: 1.2em
  33. }
  34. .ql-editor li:not(.ql-direction-rtl):before {
  35. margin-left: -1.5em;
  36. margin-right: .3em;
  37. text-align: right
  38. }
  39. .ql-editor li.ql-direction-rtl:before {
  40. margin-left: .3em;
  41. margin-right: -1.5em
  42. }
  43. .ql-editor ol li:not(.ql-direction-rtl),
  44. .ql-editor ul li:not(.ql-direction-rtl) {
  45. padding-left: 1.5em
  46. }
  47. .ql-editor ol li.ql-direction-rtl,
  48. .ql-editor ul li.ql-direction-rtl {
  49. padding-right: 1.5em
  50. }
  51. .ql-editor ol li {
  52. counter-increment: list-0;
  53. counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9
  54. }
  55. .ql-editor ol li:before {
  56. content: counter(list-0, decimal) ". "
  57. }
  58. .ql-editor ol li.ql-indent-1 {
  59. counter-increment: list-1
  60. }
  61. .ql-editor ol li.ql-indent-1:before {
  62. content: counter(list-1, lower-alpha) ". "
  63. }
  64. .ql-editor ol li.ql-indent-1 {
  65. counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9
  66. }
  67. .ql-editor ol li.ql-indent-2 {
  68. counter-increment: list-2
  69. }
  70. .ql-editor ol li.ql-indent-2:before {
  71. content: counter(list-2, lower-roman) ". "
  72. }
  73. .ql-editor ol li.ql-indent-2 {
  74. counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9
  75. }
  76. .ql-editor ol li.ql-indent-3 {
  77. counter-increment: list-3
  78. }
  79. .ql-editor ol li.ql-indent-3:before {
  80. content: counter(list-3, decimal) ". "
  81. }
  82. .ql-editor ol li.ql-indent-3 {
  83. counter-reset: list-4 list-5 list-6 list-7 list-8 list-9
  84. }
  85. .ql-editor ol li.ql-indent-4 {
  86. counter-increment: list-4
  87. }
  88. .ql-editor ol li.ql-indent-4:before {
  89. content: counter(list-4, lower-alpha) ". "
  90. }
  91. .ql-editor ol li.ql-indent-4 {
  92. counter-reset: list-5 list-6 list-7 list-8 list-9
  93. }
  94. .ql-editor ol li.ql-indent-5 {
  95. counter-increment: list-5
  96. }
  97. .ql-editor ol li.ql-indent-5:before {
  98. content: counter(list-5, lower-roman) ". "
  99. }
  100. .ql-editor ol li.ql-indent-5 {
  101. counter-reset: list-6 list-7 list-8 list-9
  102. }
  103. .ql-editor ol li.ql-indent-6 {
  104. counter-increment: list-6
  105. }
  106. .ql-editor ol li.ql-indent-6:before {
  107. content: counter(list-6, decimal) ". "
  108. }
  109. .ql-editor ol li.ql-indent-6 {
  110. counter-reset: list-7 list-8 list-9
  111. }
  112. .ql-editor ol li.ql-indent-7 {
  113. counter-increment: list-7
  114. }
  115. .ql-editor ol li.ql-indent-7:before {
  116. content: counter(list-7, lower-alpha) ". "
  117. }
  118. .ql-editor ol li.ql-indent-7 {
  119. counter-reset: list-8 list-9
  120. }
  121. .ql-editor ol li.ql-indent-8 {
  122. counter-increment: list-8
  123. }
  124. .ql-editor ol li.ql-indent-8:before {
  125. content: counter(list-8, lower-roman) ". "
  126. }
  127. .ql-editor ol li.ql-indent-8 {
  128. counter-reset: list-9
  129. }
  130. .ql-editor ol li.ql-indent-9 {
  131. counter-increment: list-9
  132. }
  133. .ql-editor ol li.ql-indent-9:before {
  134. content: counter(list-9, decimal) ". "
  135. }
  136. .ql-editor .ql-indent-1:not(.ql-direction-rtl) {
  137. padding-left: 3em
  138. }
  139. .ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
  140. padding-left: 4.5em
  141. }
  142. .ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
  143. padding-right: 3em
  144. }
  145. .ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
  146. padding-right: 4.5em
  147. }
  148. .ql-editor .ql-indent-2:not(.ql-direction-rtl) {
  149. padding-left: 6em
  150. }
  151. .ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
  152. padding-left: 7.5em
  153. }
  154. .ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
  155. padding-right: 6em
  156. }
  157. .ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
  158. padding-right: 7.5em
  159. }
  160. .ql-editor .ql-indent-3:not(.ql-direction-rtl) {
  161. padding-left: 9em
  162. }
  163. .ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
  164. padding-left: 10.5em
  165. }
  166. .ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
  167. padding-right: 9em
  168. }
  169. .ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
  170. padding-right: 10.5em
  171. }
  172. .ql-editor .ql-indent-4:not(.ql-direction-rtl) {
  173. padding-left: 12em
  174. }
  175. .ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
  176. padding-left: 13.5em
  177. }
  178. .ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
  179. padding-right: 12em
  180. }
  181. .ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
  182. padding-right: 13.5em
  183. }
  184. .ql-editor .ql-indent-5:not(.ql-direction-rtl) {
  185. padding-left: 15em
  186. }
  187. .ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
  188. padding-left: 16.5em
  189. }
  190. .ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
  191. padding-right: 15em
  192. }
  193. .ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
  194. padding-right: 16.5em
  195. }
  196. .ql-editor .ql-indent-6:not(.ql-direction-rtl) {
  197. padding-left: 18em
  198. }
  199. .ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
  200. padding-left: 19.5em
  201. }
  202. .ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
  203. padding-right: 18em
  204. }
  205. .ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
  206. padding-right: 19.5em
  207. }
  208. .ql-editor .ql-indent-7:not(.ql-direction-rtl) {
  209. padding-left: 21em
  210. }
  211. .ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
  212. padding-left: 22.5em
  213. }
  214. .ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
  215. padding-right: 21em
  216. }
  217. .ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
  218. padding-right: 22.5em
  219. }
  220. .ql-editor .ql-indent-8:not(.ql-direction-rtl) {
  221. padding-left: 24em
  222. }
  223. .ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
  224. padding-left: 25.5em
  225. }
  226. .ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
  227. padding-right: 24em
  228. }
  229. .ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
  230. padding-right: 25.5em
  231. }
  232. .ql-editor .ql-indent-9:not(.ql-direction-rtl) {
  233. padding-left: 27em
  234. }
  235. .ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
  236. padding-left: 28.5em
  237. }
  238. .ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
  239. padding-right: 27em
  240. }
  241. .ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
  242. padding-right: 28.5em
  243. }
  244. .ql-editor .ql-align-center {
  245. text-align: center
  246. }
  247. .ql-editor .ql-align-justify {
  248. text-align: justify
  249. }
  250. .ql-editor .ql-align-right {
  251. text-align: right
  252. }
  253. }
  254. @layer from-quill-editor-overrides {
  255. .ql-editor {
  256. padding-block: 1.5rem;
  257. padding-inline: 2rem;
  258. padding-inline: clamp(.5rem, 2.5vw, 3rem);
  259. padding-inline: clamp(20px, 5vw, 35px)
  260. }
  261. .ql-editor>:where(:not(:first-child)) {
  262. margin-block-start: var(--flow-space, 1.5rem)
  263. }
  264. .ql-editor :where(ul, ol)>:where(:not(:first-child)) {
  265. margin-block-start: .25rem
  266. }
  267. .ql-editor :is(ol, ul) {
  268. padding: 0
  269. }
  270. .ql-editor>p+:is(ul, ol) {
  271. margin-block-start: .25rem
  272. }
  273. }
  274. @layer accessibility {
  275. :where(:focus-visible) {
  276. outline: 3px solid #000;
  277. outline-offset: 3px
  278. }
  279. .sr-only {
  280. clip: rect(0, 0, 0, 0);
  281. border: 0;
  282. height: 1px;
  283. margin: -1px;
  284. overflow: hidden;
  285. padding: 0;
  286. position: absolute;
  287. white-space: nowrap;
  288. width: 1px
  289. }
  290. .skip-to-content {
  291. background-color: hsl(var(--clr-darker-hsl));
  292. border-radius: 8px;
  293. color: hsl(var(--clr-light-hsl));
  294. display: block;
  295. left: 0;
  296. margin-inline: auto;
  297. margin: 0 auto !important;
  298. max-width: max-content;
  299. opacity: 0;
  300. outline-offset: 1px;
  301. padding: .5em 1em;
  302. position: fixed;
  303. right: 0;
  304. text-decoration: none;
  305. top: 1.5rem;
  306. transform: translateY(calc(-100% - 5rem - 1px));
  307. transition: transform .25s ease-in;
  308. z-index: 9999
  309. }
  310. .skip-to-content:hover {
  311. background-color: hsl(var(--clr-light-hsl));
  312. color: hsl(var(--clr-darker-hsl))
  313. }
  314. .skip-to-content:focus {
  315. opacity: 1;
  316. transform: translateY(0)
  317. }
  318. }
  319. @layer accessibility {
  320. @media (prefers-reduced-motion:reduce) {
  321. *,
  322. :after,
  323. :before {
  324. animation-duration: .1ms !important;
  325. animation-iteration-count: 1 !important;
  326. scroll-behavior: auto !important;
  327. transition-duration: auto !important
  328. }
  329. .animate {
  330. animation: none !important
  331. }
  332. }
  333. }
  334. @layer buttons {
  335. .button,
  336. .ql-html-buttonCancel,
  337. .ql-html-buttonOk {
  338. align-items: center;
  339. appearance: none;
  340. -webkit-appearance: none;
  341. -moz-appearance: none;
  342. background: var(--clr-500);
  343. border: none;
  344. border-radius: 8px;
  345. color: #fff;
  346. cursor: pointer;
  347. display: flex;
  348. font-family: Montserrat', sans-serif;
  349. font-size: 16px;
  350. font-weight: 400;
  351. gap: 0;
  352. justify-content: center;
  353. letter-spacing: .025em;
  354. line-height: 26px;
  355. margin: 0;
  356. max-width: max-content;
  357. overflow: hidden;
  358. padding: 10px 35px;
  359. padding-inline: clamp(20px, 5vw, 35px);
  360. padding-inline: clamp(20px, 2vw, 35px);
  361. text-decoration: none;
  362. transition: outline .4s cubic-bezier(.22, 1, .36, 1);
  363. -webkit-user-select: none;
  364. user-select: none
  365. }
  366. .button:hover:not([disabled]),
  367. .ql-html-buttonCancel:hover:not([disabled]),
  368. .ql-html-buttonOk:hover:not([disabled]) {
  369. background: var(--clr-600)
  370. }
  371. .button:active:not([disabled]),
  372. .ql-html-buttonCancel:active:not([disabled]),
  373. .ql-html-buttonOk:active:not([disabled]) {
  374. background: var(--clr-700);
  375. transform: translate(2px 3px);
  376. transform: scale(.975);
  377. transition: transform .3s cubic-bezier(.22, 1, .36, 1), outline .4s cubic-bezier(.22, 1, .36, 1), background-color .2s linear
  378. }
  379. .button[disabled],
  380. .ql-html-buttonCancel[disabled],
  381. .ql-html-buttonOk[disabled] {
  382. cursor: default;
  383. filter: grayscale(.75) contrast(.75) brightness(.96);
  384. transition: all .4s cubic-bezier(.22, 1, .36, 1)
  385. }
  386. .button.icon-button {
  387. gap: 0;
  388. padding: 0;
  389. place-self: center
  390. }
  391. .button.icon-button>* {
  392. align-items: center;
  393. align-items: space-evenly;
  394. display: inline-flex;
  395. display: flex;
  396. gap: .5ex;
  397. height: 100%;
  398. justify-content: center;
  399. padding: 10px 35px;
  400. padding-inline: clamp(20px, 2.5vw, 35px);
  401. padding-inline: clamp(20px, min(2.5vw, 1.5em), 35px)
  402. }
  403. .button.icon-button .icon {
  404. background-color: transparent;
  405. background-color: rgba(0, 0, 0, .16);
  406. font-size: 1.5em;
  407. padding-inline: clamp(20px, min(2.5vw, 1.5em), 24px)
  408. }
  409. .button.icon-button .icon.small-padding {
  410. padding-inline: 10px
  411. }
  412. .button,
  413. .ql-html-buttonCancel,
  414. .ql-html-buttonOk {
  415. --clr-500: var(--clr-blue-desaturated-500);
  416. --clr-600: var(--clr-blue-desaturated-600);
  417. --clr-700: var(--clr-blue-desaturated-700)
  418. }
  419. .button.primary,
  420. .ql-html-buttonOk {
  421. --clr-500: var(--clr-blue-500);
  422. --clr-600: var(--clr-blue-600);
  423. --clr-700: var(--clr-blue-700)
  424. }
  425. .button.danger {
  426. --clr-500: var(--clr-red-500);
  427. --clr-600: var(--clr-red-600);
  428. --clr-700: var(--clr-red-700)
  429. }
  430. .button.success {
  431. --clr-500: var(--clr-green-desaturated-500);
  432. --clr-600: var(--clr-green-desaturated-600);
  433. --clr-700: var(--clr-green-desaturated-700)
  434. }
  435. .button.warning,
  436. .ql-html-buttonCancel {
  437. --clr-500: var(--clr-red-desaturated-500);
  438. --clr-600: var(--clr-red-desaturated-600);
  439. --clr-700: var(--clr-red-desaturated-700)
  440. }
  441. .invert-colors .button {
  442. background: var(--clr-600);
  443. border: 1px solid hsla(0, 0%, 100%, .1);
  444. filter: invert(1) hue-rotate(180deg);
  445. outline-color: #fff
  446. }
  447. .invert-colors .button:hover:not([disabled]) {
  448. background: var(--clr-700)
  449. }
  450. .invert-colors .button:active:not([disabled]) {
  451. background: var(--clr-500)
  452. }
  453. .invert-colors .button[disabled] {
  454. cursor: default;
  455. filter: grayscale(.75) contrast(.75) brightness(.96) invert(1) hue-rotate(180deg)
  456. }
  457. .invert-colors .button>* {
  458. background-color: rgba(0, 0, 0, .16)
  459. }
  460. .invert-colors .button .icon {
  461. background-color: transparent;
  462. border-inline-start: 1px solid hsla(0, 0%, 100%, .05)
  463. }
  464. }
  465. @layer utility {
  466. .flexi {
  467. align-items: center;
  468. display: flex;
  469. flex-wrap: wrap;
  470. gap: clamp(20px, 5vw, 35px);
  471. justify-content: flex-start
  472. }
  473. .flow>:where(:not(:first-child)) {
  474. margin-block-start: var(--flow-space, 1em)
  475. }
  476. .hidden {
  477. display: none !important
  478. }
  479. @media (max-width:30em) {
  480. .hide-small {
  481. display: none !important
  482. }
  483. }
  484. @media (max-width:50em) {
  485. .hide-medium {
  486. display: none !important
  487. }
  488. }
  489. .sr-only {
  490. clip: rect(0, 0, 0, 0);
  491. border: 0;
  492. height: 1px;
  493. margin: -1px;
  494. overflow: hidden;
  495. padding: 0;
  496. position: absolute;
  497. white-space: nowrap;
  498. width: 1px
  499. }
  500. .border-top {
  501. border-top: 1px solid hsl(var(--clr-primary-hsl)/.25);
  502. margin-block-start: 2rem;
  503. padding-block-start: 2.5rem
  504. }
  505. .margin-top {
  506. margin-block-start: 3rem
  507. }
  508. .d-block {
  509. display: blok
  510. }
  511. }
  512. @layer forms {
  513. :where(input:is([type=text], [type=email], [type=password]), textarea) {
  514. appearance: none;
  515. background-color: hsl(var(--clr-light-hsl)/.6);
  516. border: 1.5px solid hsl(var(--clr-dark-hsl)/.5);
  517. border-radius: .25rem;
  518. box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);
  519. color: hsl(var(--clr-dark-hsl)/1);
  520. font-size: 1rem;
  521. mix-blend-mode: luminosity;
  522. outline-offset: 0;
  523. outline-width: 1.5px;
  524. padding-block: .35rem;
  525. padding-inline: .75rem;
  526. position: relative;
  527. transition: all .3s cubic-bezier(.22, 1, .36, 1)
  528. }
  529. :where(input:is([type=text], [type=email], [type=password]), textarea):focus {
  530. background-color: hsl(var(--clr-light-hsl)/1);
  531. border: 1.5px solid hsl(var(--clr-darker-hsl)/.8);
  532. color: hsl(var(--clr-darker-hsl)/1)
  533. }
  534. :where(input:is([type=text], [type=email], [type=password]), textarea)::placeholder {
  535. color: hsl(var(--clr-dark-hsl)/.75)
  536. }
  537. :where(input:is([type=text], [type=email], [type=password]), textarea):focus::placeholder {
  538. color: hsl(var(--clr-dark-hsl)/.75)
  539. }
  540. label {
  541. color: var(--clr-blue-desaturated-700);
  542. font-weight: 600;
  543. letter-spacing: -.0175em
  544. }
  545. label:has(svg) {
  546. align-items: center;
  547. column-gap: .25em;
  548. display: flex;
  549. justify-content: center
  550. }
  551. label:has(svg) svg {
  552. color: var(--clr-blue-700);
  553. height: 1.5rem;
  554. width: 1.5rem
  555. }
  556. }
  557. @layer contract-typography {
  558. :root {
  559. --step--2: clamp(0.56rem, calc(0.8rem - 0.51vw), 0.69rem);
  560. --step--1: clamp(0.75rem, calc(0.9rem - 0.32vw), 0.83rem);
  561. --step-0: clamp(1.00rem, 1rem, 1.00rem);
  562. --step-1: clamp(1.20rem, calc(1.1rem + 0.51vw), 1.33rem);
  563. --step-2: clamp(1.44rem, calc(1.18rem + 1.3vw), 1.78rem);
  564. --step-3: clamp(1.73rem, calc(1.23rem + 2.47vw), 2.37rem);
  565. --step-4: clamp(2.07rem, calc(1.24rem + 4.18vw), 3.16rem);
  566. --step-5: clamp(2.49rem, calc(1.16rem + 6.63vw), 4.21rem)
  567. }
  568. #content {
  569. background: #fff;
  570. margin: 2rem 2rem 6rem;
  571. margin-inline: 0;
  572. margin-inline: auto;
  573. max-width: calc(100% - 2rem);
  574. max-width: 100%;
  575. padding: 0 2em;
  576. padding-inline: 2rem;
  577. width: clamp(10rem, 60rem, 80rem);
  578. width: 52em;
  579. width: 210mm
  580. }
  581. #content,
  582. #main {
  583. font-family: Montserrat', sans-serif;
  584. font-size: var(--step-0);
  585. line-height: 1.5;
  586. line-height: 1.75
  587. }
  588. ul, li {
  589. font-family: 'Montserrat', sans-serif;
  590. }
  591. p {
  592. font-family: 'Montserrat', sans-serif;
  593. margin-bottom: .25rem !important;
  594. }
  595. h2,
  596. h3,
  597. h4,
  598. h5,
  599. h6 {
  600. margin-block-start: 1.25em;
  601. margin-bottom: .1rem !important;
  602. }
  603. h1, h2 {
  604. border-style: solid;
  605. border-width: 3px 0 1px;
  606. font-family: 'Montserrat', sans-serif;
  607. font-size: var(--step-2);
  608. font-weight: 400;
  609. letter-spacing: .1em;
  610. ;;margin-block-end: 2rem;;;
  611. ;;;;margin-block-start: 0.5rem;;;;;
  612. ;;;padding: .25em 0;;;;
  613. position: relative;
  614. text-align: center
  615. }
  616. h1,
  617. h2 {
  618. line-height: 1.2em;
  619. text-transform: uppercase
  620. }
  621. h2 {
  622. font-family: Montserrat', sans-serif;
  623. font-family: Open Sans, sans-serif;
  624. font-size: var(--step-1);
  625. font-variation-settings: "wdth" 75;
  626. font-weight: 600;
  627. letter-spacing: .025em
  628. }
  629. h3,
  630. h4,
  631. h5,
  632. h6 {
  633. font-weight: 700
  634. }
  635. }
  636. @layer signatures {
  637. .compiled-signatures {
  638. display: flex;
  639. flex-wrap: wrap;
  640. gap: 2rem;
  641. justify-content: space-around
  642. }
  643. .compiled-signature {
  644. align-items: start;
  645. display: grid;
  646. font-size: .75em;
  647. max-width: min(50%, 330px);
  648. max-width: clamp(calc(50% - 2rem), 348px, 100%);
  649. min-width: 300px;
  650. min-width: 200px
  651. }
  652. .compiled-signature img {
  653. background: #fff;
  654. border: 1px solid rgba(3, 33, 48, .25);
  655. margin-block: .15rem
  656. }
  657. #dev_signature,
  658. #hk {
  659. display: block;
  660. max-width: min(333px, 100%);
  661. max-width: min(370px, 100%)
  662. }
  663. #dev_signature[src=null] {
  664. display: none
  665. }
  666. .date-ip {
  667. font-family: Montserrat', sans-serif;
  668. font-size: 1.2em;
  669. font-variation-settings: "wdth" 75;
  670. font-weight: 400;
  671. letter-spacing: .025em;
  672. line-height: 1.2em
  673. }
  674. #ui-unsigned {
  675. margin: 0
  676. }
  677. #ui-signed {
  678. clear: both
  679. }
  680. #content>:not(#ui-unsigned, #dev_signature) {
  681. transition: opacity .3s ease-out
  682. }
  683. #signature-container {
  684. display: grid;
  685. gap: 1.5rem;
  686. place-items: start
  687. }
  688. @media (min-width:40rem) {
  689. #signature-container {
  690. place-items: end
  691. }
  692. }
  693. #canvas-container {
  694. aspect-ratio: 188/58.66;
  695. background: #fff;
  696. isolation: isolate;
  697. max-width: 100%;
  698. position: relative;
  699. transition: max-width .4s cubic-bezier(.22, 1, .36, 1), margin .6s ease-in-out;
  700. -webkit-user-select: none;
  701. user-select: none;
  702. width: 100%
  703. }
  704. #canvas-container:before {
  705. border-bottom: 2px solid #61594f;
  706. content: "";
  707. display: block;
  708. height: 0;
  709. inset: 70% 7.5% 0 7.5%;
  710. opacity: .95;
  711. pointer-events: none;
  712. position: absolute;
  713. z-index: -1
  714. }
  715. }
  716. @layer signatures {
  717. @media (max-width:40em) {
  718. #canvas-container {
  719. aspect-ratio: 200/80
  720. }
  721. }
  722. }
  723. @layer signatures {
  724. #generator-signature-pad,
  725. #signature-pad {
  726. border: 2px dashed rgba(3, 33, 48, .75);
  727. box-shadow: inset 0 0 5px 1px #ddd;
  728. height: 100%;
  729. left: 0;
  730. position: absolute;
  731. top: 0;
  732. width: 100%
  733. }
  734. #signature-controls {
  735. align-items: flex-start;
  736. display: flex;
  737. flex-direction: row;
  738. gap: 1.5rem;
  739. justify-content: center;
  740. width: 100%
  741. }
  742. .loading-signed {
  743. align-items: center;
  744. justify-content: center
  745. }
  746. @media (min-width:40rem) {
  747. .loading-signed {
  748. justify-content: center
  749. }
  750. }
  751. .loading-signed:not(.hidden) {
  752. display: flex
  753. }
  754. .to-go {
  755. opacity: 1;
  756. transform: none;
  757. transition: all .2s cubic-bezier(.26, .53, .74, 1.48), scale 1s ease-out
  758. }
  759. .to-go.gone {
  760. opacity: 0;
  761. transform: translateY(-20px)
  762. }
  763. #canvas-container.just-signed {
  764. max-width: 333px
  765. }
  766. @media (min-width:40rem) {
  767. #canvas-container.just-signed {
  768. margin-top: calc(-330px - 2rem)
  769. }
  770. }
  771. #canvas-container.just-signed #signature-pad {
  772. border: 1px dashed rgba(3, 33, 48, .25);
  773. box-shadow: inset 0 0 2px 1px hsla(0, 0%, 87%, .25)
  774. }
  775. #canvas-container.just-signed:before {
  776. opacity: 0
  777. }
  778. }
  779. @layer modal {
  780. .modal {
  781. --shadow-color: 200 3% 15%;
  782. --shadow-strength: 5%;
  783. --shadow-6: 0 -1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)), 0 3px 2px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)), 0 7px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)), 0 12px 10px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)), 0 22px 18px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)), 0 41px 33px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 6%)), 0 100px 80px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));
  784. border: 3px solid hsl(var(--shadow-color));
  785. border-radius: 1.5rem;
  786. box-shadow: var(--shadow-6);
  787. margin-block-start: auto;
  788. max-width: calc(100% - 1rem);
  789. padding: 0;
  790. position: fixed;
  791. z-index: 999
  792. }
  793. .modal::backdrop {
  794. -webkit-backdrop-filter: blur(4px);
  795. backdrop-filter: blur(4px);
  796. background-image: linear-gradient(132deg, rgba(31, 39, 41, .6), rgba(35, 41, 47, .6));
  797. cursor: pointer
  798. }
  799. .close-button {
  800. border-radius: 50%;
  801. height: 32px;
  802. margin: 1rem 0 0;
  803. max-width: 32px;
  804. padding: 0;
  805. position: relative;
  806. vertical-align: top;
  807. width: 32px
  808. }
  809. .close-button:active {
  810. background-color: #000;
  811. transition: none
  812. }
  813. .close-button:before {
  814. height: 2px;
  815. width: 50%
  816. }
  817. .close-button:after {
  818. height: 50%;
  819. width: 2px
  820. }
  821. .close-button:after,
  822. .close-button:before {
  823. background-color: currentColor;
  824. content: "";
  825. display: block;
  826. left: 50%;
  827. position: absolute;
  828. top: 50%;
  829. transform: translateX(-50%) translateY(-50%) rotate(45deg);
  830. transform-origin: center center
  831. }
  832. .qr-code-container {
  833. display: grid;
  834. gap: 1rem;
  835. justify-items: end;
  836. margin-block-end: 3.5rem;
  837. margin-inline: 1rem
  838. }
  839. #generator-qr-code,
  840. #qr-code {
  841. display: block;
  842. image-rendering: pixelated;
  843. margin: auto;
  844. max-width: 90%;
  845. width: min(500px, 90vw)
  846. }
  847. }
  848. @layer animated-entrances {
  849. @media (prefers-reduced-motion:reduce) {
  850. .animate {
  851. animation: none !important
  852. }
  853. }
  854. }
  855. @layer animated-entrances {
  856. .delay-1 {
  857. animation-delay: .6s
  858. }
  859. .delay-2 {
  860. animation-delay: .7s
  861. }
  862. .delay-3 {
  863. animation-delay: .8s
  864. }
  865. .delay-4 {
  866. animation-delay: .9s
  867. }
  868. .delay-5 {
  869. animation-delay: 1s
  870. }
  871. .delay-6 {
  872. animation-delay: 1.1s
  873. }
  874. .delay-7 {
  875. animation-delay: 1.2s
  876. }
  877. .delay-8 {
  878. animation-delay: 1.3s
  879. }
  880. .delay-9 {
  881. animation-delay: 1.4s
  882. }
  883. .delay-10 {
  884. animation-delay: 1.5s
  885. }
  886. .delay-11 {
  887. animation-delay: 1.6s
  888. }
  889. .delay-12 {
  890. animation-delay: 1.7s
  891. }
  892. .delay-13 {
  893. animation-delay: 1.8s
  894. }
  895. .delay-14 {
  896. animation-delay: 1.9s
  897. }
  898. .delay-15 {
  899. animation-delay: 2s
  900. }
  901. .delay-16 {
  902. animation-delay: 2.1s
  903. }
  904. :where(.animate) {
  905. animation-delay: .5s;
  906. animation-duration: .75s;
  907. animation-fill-mode: backwards;
  908. animation-name: animate-fade;
  909. animation-timing-function: cubic-bezier(.26, .53, .74, 1.48)
  910. }
  911. :where(.animate).fade {
  912. animation-name: animate-fade;
  913. animation-timing-function: ease
  914. }
  915. :where(.animate).pop {
  916. animation-name: animate-pop
  917. }
  918. :where(.animate).blur {
  919. animation-name: animate-blur;
  920. animation-timing-function: ease
  921. }
  922. :where(.animate).glow {
  923. animation-name: animate-glow;
  924. animation-timing-function: ease
  925. }
  926. :where(.animate).grow {
  927. animation-name: animate-grow
  928. }
  929. :where(.animate).splat {
  930. animation-name: animate-splat
  931. }
  932. :where(.animate).roll {
  933. animation-name: animate-roll
  934. }
  935. :where(.animate).flip {
  936. animation-name: animate-flip;
  937. perspective: 1000px;
  938. transform-style: preserve-3d
  939. }
  940. :where(.animate).spin {
  941. animation-name: animate-spin;
  942. perspective: 1000px;
  943. transform-style: preserve-3d
  944. }
  945. :where(.animate).slide {
  946. animation-name: animate-slide
  947. }
  948. :where(.animate).drop {
  949. animation-name: animate-drop;
  950. animation-timing-function: cubic-bezier(.77, .14, .91, 1.25)
  951. }
  952. :where(.animate).drop-up {
  953. animation-name: animate-drop-up;
  954. animation-timing-function: cubic-bezier(.77, .14, .91, 1.25)
  955. }
  956. }
  957. @layer animated-entrances {
  958. @media screen {
  959. @keyframes animate-fade {
  960. 0% {
  961. opacity: 0
  962. }
  963. to {
  964. opacity: 1
  965. }
  966. }
  967. @keyframes animate-pop {
  968. 0% {
  969. opacity: 0;
  970. transform: scale(.5)
  971. }
  972. to {
  973. opacity: 1;
  974. transform: scale(1)
  975. }
  976. }
  977. @keyframes animate-blur {
  978. 0% {
  979. filter: blur(15px);
  980. opacity: 0
  981. }
  982. to {
  983. filter: blur(0);
  984. opacity: 1
  985. }
  986. }
  987. @keyframes animate-glow {
  988. 0% {
  989. filter: brightness(3) saturate(3);
  990. opacity: 0;
  991. transform: scale(.8)
  992. }
  993. to {
  994. filter: brightness(1) saturate(1);
  995. opacity: 1;
  996. transform: scale(1)
  997. }
  998. }
  999. @keyframes animate-grow {
  1000. 0% {
  1001. opacity: 0;
  1002. transform: scaleY(0);
  1003. visibility: hidden
  1004. }
  1005. to {
  1006. opacity: 1;
  1007. transform: scale(1)
  1008. }
  1009. }
  1010. @keyframes animate-splat {
  1011. 0% {
  1012. opacity: 0;
  1013. transform: scale(0) rotate(20deg) translateY(-30px)
  1014. }
  1015. 70% {
  1016. opacity: 1;
  1017. transform: scale(1.1) rotate(15deg)
  1018. }
  1019. 85% {
  1020. opacity: 1;
  1021. transform: scale(1.1) rotate(15deg) translateY(-10px)
  1022. }
  1023. to {
  1024. opacity: 1;
  1025. transform: scale(1) rotate(0) translate(0)
  1026. }
  1027. }
  1028. @keyframes animate-roll {
  1029. 0% {
  1030. opacity: 0;
  1031. transform: scale(0) rotate(1turn)
  1032. }
  1033. to {
  1034. opacity: 1;
  1035. transform: scale(1) rotate(0deg)
  1036. }
  1037. }
  1038. @keyframes animate-flip {
  1039. 0% {
  1040. opacity: 0;
  1041. transform: rotateX(-120deg) scale(.9)
  1042. }
  1043. to {
  1044. opacity: 1;
  1045. transform: rotateX(0deg) scale(1)
  1046. }
  1047. }
  1048. @keyframes animate-spin {
  1049. 0% {
  1050. opacity: 0;
  1051. transform: rotateY(-120deg) scale(.9)
  1052. }
  1053. to {
  1054. opacity: 1;
  1055. transform: rotateY(0deg) scale(1)
  1056. }
  1057. }
  1058. @keyframes animate-slide {
  1059. 0% {
  1060. opacity: 0;
  1061. transform: translateY(20px)
  1062. }
  1063. to {
  1064. opacity: 1;
  1065. transform: translate(0)
  1066. }
  1067. }
  1068. @keyframes animate-drop {
  1069. 0% {
  1070. opacity: 0;
  1071. transform: translateY(-300px) scale(.9, 1.1)
  1072. }
  1073. 95% {
  1074. opacity: 1;
  1075. transform: translate(0) scale(.9, 1.1)
  1076. }
  1077. 96% {
  1078. opacity: 1;
  1079. transform: translate(10px) scale(1.2, .9)
  1080. }
  1081. 97% {
  1082. opacity: 1;
  1083. transform: translate(-10px) scale(1.2, .9)
  1084. }
  1085. 98% {
  1086. opacity: 1;
  1087. transform: translate(5px) scale(1.1, .9)
  1088. }
  1089. 99% {
  1090. opacity: 1;
  1091. transform: translate(-5px) scale(1.1, .9)
  1092. }
  1093. to {
  1094. opacity: 1;
  1095. transform: translate(0) scale(1)
  1096. }
  1097. }
  1098. @keyframes animate-drop-up {
  1099. 0% {
  1100. opacity: 0;
  1101. transform: translateY(300px) scale(.9, 1.1)
  1102. }
  1103. 95% {
  1104. opacity: 1;
  1105. transform: translate(0) scale(.9, 1.1)
  1106. }
  1107. 96% {
  1108. opacity: 1;
  1109. transform: translate(-10px) scale(1.2, .9)
  1110. }
  1111. 97% {
  1112. opacity: 1;
  1113. transform: translate(10px) scale(1.2, .9)
  1114. }
  1115. 98% {
  1116. opacity: 1;
  1117. transform: translate(-5px) scale(1.1, .9)
  1118. }
  1119. 99% {
  1120. opacity: 1;
  1121. transform: translate(5px) scale(1.1, .9)
  1122. }
  1123. to {
  1124. opacity: 1;
  1125. transform: translate(0) scale(1)
  1126. }
  1127. }
  1128. }
  1129. }
  1130. details {
  1131. --clr-500: var(--clr-blue-500);
  1132. --clr-600: var(--clr-blue-600);
  1133. --clr-700: var(--clr-blue-700);
  1134. --clr-500-desaturated: var(--clr-blue-desaturated-500);
  1135. --clr-600-desaturated: var(--clr-blue-desaturated-600);
  1136. --clr-700-desaturated: var(--clr-blue-desaturated-700);
  1137. max-height: 1.5em;
  1138. overflow: hidden;
  1139. transition: all .4s ease-in-out
  1140. }
  1141. details[open] {
  1142. max-height: 90vh
  1143. }
  1144. details[open] summary {
  1145. padding-block-end: .5em
  1146. }
  1147. details.danger {
  1148. --clr-primary-hsl: var(--clr-danger-hsl);
  1149. --clr-500: var(--clr-red-500);
  1150. --clr-600: var(--clr-red-600);
  1151. --clr-700: var(--clr-red-700);
  1152. --clr-500-desaturated: var(--clr-red-desaturated-500);
  1153. --clr-600-desaturated: var(--clr-red-desaturated-600);
  1154. --clr-700-desaturated: var(--clr-red-desaturated-700)
  1155. }
  1156. details.success {
  1157. --clr-primary-hsl: var(--clr-success-hsl);
  1158. --clr-500: var(--clr-green-500);
  1159. --clr-600: var(--clr-green-600);
  1160. --clr-700: var(--clr-green-700);
  1161. --clr-500-desaturated: var(--clr-green-desaturated-500);
  1162. --clr-600-desaturated: var(--clr-green-desaturated-600);
  1163. --clr-700-desaturated: var(--clr-green-desaturated-700)
  1164. }
  1165. details.warning {
  1166. --clr-primary-hsl: var(--clr-warning-hsl);
  1167. --clr-500: var(--clr-brown-500);
  1168. --clr-600: var(--clr-brown-600);
  1169. --clr-700: var(--clr-brown-700);
  1170. --clr-500-desaturated: var(--clr-brown-desaturated-500);
  1171. --clr-600-desaturated: var(--clr-brown-desaturated-600);
  1172. --clr-700-desaturated: var(--clr-brown-desaturated-700)
  1173. }
  1174. details>summary {
  1175. color: var(--clr-500);
  1176. cursor: pointer;
  1177. font-family: inherit;
  1178. font-size: 16px;
  1179. font-weight: 700;
  1180. letter-spacing: -.025em;
  1181. line-height: 26px;
  1182. max-width: min-content;
  1183. transition: outline .4s cubic-bezier(.22, 1, .36, 1);
  1184. -webkit-user-select: auto;
  1185. user-select: auto;
  1186. white-space: nowrap
  1187. }
  1188. details>summary:hover {
  1189. background: none;
  1190. color: var(--clr-700)
  1191. }
  1192. details>summary:focus-visible {
  1193. border-radius: 8px;
  1194. color: #000;
  1195. outline: none;
  1196. text-decoration: underline;
  1197. text-decoration-thickness: 2;
  1198. text-underline-position: under
  1199. }
  1200. details>summary:focus-visible::marker {
  1201. color: inherit
  1202. }
  1203. details>summary::marker {
  1204. color: var(--clr-600-desaturated);
  1205. color: hsl(var(--clr-primary-hsl)/.8)
  1206. }
  1207. details>summary:hover::marker {
  1208. color: inherit
  1209. }
  1210. details>summary:active {
  1211. transform: scale(.975);
  1212. transition: transform .3s cubic-bezier(.22, 1, .36, 1), outline .4s cubic-bezier(.22, 1, .36, 1), background-color .2s linear
  1213. }
  1214. details>:nth-child(2):last-child {
  1215. background: hsl(var(--clr-primary-hsl)/.1);
  1216. border: 1.5px solid hsl(var(--clr-primary-hsl)/.075);
  1217. border-radius: 8px;
  1218. gap: 1rem;
  1219. justify-content: flex-start;
  1220. padding: .75rem 1rem 1rem;
  1221. position: relative
  1222. }
  1223. details>:nth-child(2):last-child label {
  1224. color: var(--clr-700-desaturated);
  1225. font-weight: 600;
  1226. letter-spacing: -.0175em
  1227. }
  1228. details>:nth-child(2):last-child>p:last-child:not([class]) {
  1229. color: var(--clr-500-desaturated)
  1230. }
  1231. table {border-collapse: collapse;width: 100%;margin: 3px 0;font-size: 13px;}
  1232. th, td {border: 1px solid #ddd;padding: 2px 5px;vertical-align: top;font-weight:normal;}
  1233. th { background: #f6f6f6; text-align: left; }
  1234. /* force first column to 30% across all rows */
  1235. table { table-layout: fixed; } /* makes width rules respected */
  1236. th:first-child, td:first-child { width: 30%; white-space: nowrap; }
  1237. th:nth-child(2), td:nth-child(2) { width: 70%; word-break: break-word; }