layouts.css 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988
  1. * {
  2. -webkit-box-sizing: unset;
  3. box-sizing: unset;
  4. }
  5. /* Fixed missing 'import nib' stylesheet reset and extra li bullet points
  6. * https://github.com/wekan/wekan/issues/4512#issuecomment-1129347536
  7. */
  8. a, abbr, acronym, address, applet, big, blockquote, body, caption, cite,
  9. code, dd, del, dfn, div, dl, dt, em, fieldset, form, h1, h2, h3, h4, h5,
  10. h6, html, iframe, img, ins, kbd, label, legend, li, object, ol, p, pre,
  11. q, s, samp, small, span, strike, strong, sub, sup,
  12. table, tbody, td, tfoot, th, thread, tr, tt, ul, var {
  13. margin: 0;
  14. padding: 0;
  15. outline: 0;
  16. font-weight: inherit;
  17. font-style: inherit;
  18. font-family: inherit;
  19. font-size: 100%;
  20. vertical-align: baseline;
  21. }
  22. .note-popover .popover-content .note-color-palette div .note-color-btn,
  23. .panel-heading.note-toolbar .note-color-palette div .note-color-btn {
  24. background: none;
  25. }
  26. a:focus {
  27. outline: unset;
  28. outline-offset: unset;
  29. }
  30. a:hover,
  31. a:focus {
  32. color: unset;
  33. text-decoration: unset;
  34. }
  35. .badge {
  36. display: unset;
  37. min-width: unset;
  38. padding: unset;
  39. font-size: unset;
  40. font-weight: unset;
  41. line-height: unset;
  42. color: unset;
  43. text-align: unset;
  44. white-space: unset;
  45. vertical-align: unset;
  46. background-color: unset;
  47. border-radius: unset;
  48. }
  49. html,
  50. body,
  51. input,
  52. select,
  53. textarea,
  54. button {
  55. font: clamp(14px, 2.5vw, 18px) Roboto, Poppins, "Helvetica Neue", Arial, Helvetica, sans-serif;
  56. line-height: 1.4;
  57. color: #4d4d4d;
  58. /* Improve text rendering */
  59. -webkit-font-smoothing: antialiased;
  60. -moz-osx-font-smoothing: grayscale;
  61. /* Better text selection */
  62. -webkit-user-select: text;
  63. user-select: text;
  64. }
  65. html {
  66. font-size: 100%;
  67. max-height: 100%;
  68. -webkit-user-select: text;
  69. user-select: text;
  70. -webkit-text-size-adjust: 100%;
  71. text-size-adjust: 100%;
  72. }
  73. body {
  74. background: #dedede;
  75. margin: 0;
  76. position: relative;
  77. z-index: 0;
  78. overflow-y: auto;
  79. display: flex;
  80. flex-direction: column;
  81. height: 100vh;
  82. /* iOS Safari fixes */
  83. -webkit-overflow-scrolling: touch;
  84. }
  85. /* Mobile mode specific fixes for iOS Safari */
  86. body.mobile-mode {
  87. overflow-x: hidden;
  88. position: fixed;
  89. width: 100%;
  90. height: 100vh;
  91. /* Prevent iOS Safari bounce scroll */
  92. overscroll-behavior: none;
  93. -webkit-overflow-scrolling: touch;
  94. }
  95. /* Ensure content area is scrollable in mobile mode */
  96. body.mobile-mode #content {
  97. overflow-y: auto;
  98. overflow-x: hidden;
  99. -webkit-overflow-scrolling: touch;
  100. height: calc(100vh - 48px);
  101. }
  102. #content {
  103. position: relative;
  104. flex: 1;
  105. overflow-x: hidden;
  106. }
  107. #content .sk-spinner {
  108. margin-top: 30vh;
  109. }
  110. #content > .wrapper {
  111. margin-top: 1vh;
  112. padding: 2vh 2vw;
  113. }
  114. #modal {
  115. position: absolute;
  116. top: 0;
  117. bottom: 0;
  118. left: 0;
  119. right: 0;
  120. background: rgba(0,0,0,0.6);
  121. z-index: 100;
  122. overflow-y: auto;
  123. }
  124. #modal .modal-content {
  125. width: min(500px, 90vw);
  126. min-height: 20vh;
  127. margin: 5vh auto;
  128. padding: 2vh 2vw;
  129. border-radius: 0.5vw;
  130. background: #dedede;
  131. z-index: 110;
  132. }
  133. #modal .modal-content h2 {
  134. margin-bottom: 3vh;
  135. }
  136. #modal .modal-content .modal-close-btn {
  137. display: block;
  138. float: right;
  139. font-size: clamp(18px, 4vw, 24px);
  140. }
  141. #modal .modal-content-wide {
  142. width: min(800px, 95vw);
  143. min-height: 0px;
  144. margin: 5vh auto;
  145. padding: 2vh 2vw;
  146. border-radius: 0.5vw;
  147. background: #dedede;
  148. z-index: 110;
  149. }
  150. #modal .modal-content-wide h2 {
  151. margin-bottom: 3vh;
  152. }
  153. #modal .modal-content-wide .modal-close-btn {
  154. display: block;
  155. float: right;
  156. font-size: clamp(18px, 4vw, 24px);
  157. }
  158. h1 {
  159. font-size: clamp(18px, 4vw, 24px);
  160. line-height: 1.2em;
  161. margin: 0 0 1vh;
  162. }
  163. h2 {
  164. font-size: clamp(16px, 3.5vw, 20px);
  165. line-height: 1.2em;
  166. margin: 0 0 0.8vh;
  167. }
  168. h3,
  169. h4,
  170. h5,
  171. h6 {
  172. font-size: clamp(14px, 3vw, 18px);
  173. line-height: 1.25em;
  174. margin: 0 0 0.6vh;
  175. }
  176. .quiet,
  177. .quiet a {
  178. color: #8c8c8c;
  179. }
  180. .error,
  181. .error a {
  182. color: #eb3800;
  183. }
  184. .no-items-message {
  185. color: #666;
  186. margin: 4vh 0;
  187. text-align: center;
  188. }
  189. .warning {
  190. background: #f0ecdb;
  191. border-radius: 0.4vw;
  192. color: #aa8f09;
  193. padding: 1vh 1.2vw;
  194. }
  195. .warning a {
  196. color: #aa8f09;
  197. }
  198. .small {
  199. font-size: 0.8em;
  200. }
  201. a {
  202. color: inherit;
  203. cursor: pointer;
  204. text-decoration: none;
  205. }
  206. a.is-disabled,
  207. a.is-disabled:hover {
  208. cursor: default;
  209. text-decoration: none;
  210. }
  211. span a {
  212. text-decoration: underline;
  213. }
  214. strong {
  215. font-weight: bold;
  216. }
  217. p {
  218. -webkit-user-select: text;
  219. user-select: text;
  220. }
  221. p a {
  222. text-decoration: underline;
  223. word-wrap: break-word;
  224. }
  225. table,
  226. p {
  227. margin-bottom: 1vh;
  228. }
  229. pre {
  230. margin: 2vh 0;
  231. white-space: pre;
  232. max-height: 60vh;
  233. }
  234. pre,
  235. code,
  236. tt {
  237. font-family: lucida console, monospace;
  238. line-height: 1.3em;
  239. }
  240. blockquote {
  241. margin: 1vh 0 1vh 1vw;
  242. border-left: 1px solid #ccc;
  243. color: #666;
  244. padding: 0 0 0 1vw;
  245. }
  246. hr {
  247. height: 1px;
  248. border: 0;
  249. border: none;
  250. width: 100%;
  251. background: #dbdbdb;
  252. color: #dbdbdb;
  253. margin: 2vh 0;
  254. padding: 0;
  255. }
  256. table,
  257. td,
  258. th {
  259. vertical-align: top;
  260. border-top: 1px solid #ccc;
  261. border-left: 1px solid #ccc;
  262. }
  263. td,
  264. th {
  265. padding: 0.8vh 0.8vw;
  266. border-right: 1px solid #ccc;
  267. border-bottom: 1px solid #ccc;
  268. }
  269. th {
  270. font-weight: 700;
  271. }
  272. thead {
  273. background: #fff;
  274. background: linear-gradient(to bottom, #fff 0, #f0f0f0 100%);
  275. }
  276. tbody {
  277. background-color: #fff;
  278. }
  279. dl,
  280. dt {
  281. margin-bottom: 1vh;
  282. }
  283. dd {
  284. margin: 0 0 2vh 3vw;
  285. }
  286. kbd {
  287. padding: 0.2vh 0.5vw;
  288. margin: 0.5vh;
  289. font-weight: bold;
  290. background: #fafafa;
  291. border-radius: 0.4vw;
  292. border: 1px solid #e6e6e6;
  293. color: unset;
  294. box-shadow: 0px 0.3vh 0.5vh rgba(0,0,0,0.15);
  295. }
  296. .clear {
  297. clear: both;
  298. }
  299. .hide {
  300. display: none;
  301. }
  302. .show {
  303. display: block;
  304. }
  305. .bold {
  306. font-weight: 700;
  307. }
  308. .center {
  309. text-align: center;
  310. }
  311. .left {
  312. float: left;
  313. }
  314. .right {
  315. float: right;
  316. }
  317. .first {
  318. margin-left: 0;
  319. padding-left: 0;
  320. }
  321. .last {
  322. margin-right: 0;
  323. padding-right: 0;
  324. }
  325. .top {
  326. margin-top: 0;
  327. padding-top: 0;
  328. }
  329. .bottom {
  330. margin-bottom: 0;
  331. padding-bottom: 0;
  332. }
  333. .wrapper {
  334. width: calc(100% - 2vw);
  335. margin: 0 auto;
  336. }
  337. .relative {
  338. position: relative;
  339. }
  340. .block {
  341. display: block;
  342. }
  343. .inline {
  344. display: inline;
  345. }
  346. .inline-block {
  347. display: inline-block;
  348. }
  349. .pointer {
  350. cursor: pointer;
  351. }
  352. .ellip {
  353. overflow: hidden;
  354. text-overflow: ellipsis;
  355. white-space: nowrap;
  356. }
  357. .underline {
  358. text-decoration: underline;
  359. }
  360. .lowercase {
  361. text-transform: lowercase;
  362. }
  363. .invisible {
  364. visibility: hidden;
  365. }
  366. .wrapword {
  367. word-wrap: break-word;
  368. }
  369. .grab {
  370. cursor: grab;
  371. }
  372. .grabbing {
  373. cursor: grabbing;
  374. }
  375. .textcomplete-dropdown {
  376. z-index: 2000 !important;
  377. }
  378. .fa.fa-times-thin:before {
  379. content: '\00d7';
  380. }
  381. .fa.fa-globe.colorful,
  382. .fa.fa-bell.colorful {
  383. color: #4caf50;
  384. }
  385. .fa.fa-lock.colorful,
  386. .fa.fa-bell-slash.colorful {
  387. color: #f44336;
  388. }
  389. .fa.fa-eye.colorful {
  390. color: #4336f4;
  391. }
  392. .pop-over .pop-over-list li a:not(.disabled):hover .fa,
  393. .pop-over .pop-over-list li a:not(.disabled):hover .fa.colorful {
  394. color: #fff;
  395. }
  396. .pop-over .pop-over-list li a:not(.disabled):hover .fa:hover,
  397. .pop-over .pop-over-list li a:not(.disabled):hover .fa.colorful:hover {
  398. color: #fff;
  399. }
  400. a.fa,
  401. a i.fa {
  402. color: #a6a6a6;
  403. }
  404. a:not(.disabled):hover.fa,
  405. a:not(.disabled).is-active.fa,
  406. a:not(.disabled):hover i.fa,
  407. a:not(.disabled).is-active i.fa {
  408. color: #666;
  409. }
  410. .ui-draggable-dragging {
  411. z-index: 200;
  412. }
  413. .atMention {
  414. background: #dbdbdb;
  415. border-radius: 3px;
  416. padding: 1px 4px;
  417. margin: -1px 0;
  418. display: inline-block;
  419. }
  420. .atMention.me {
  421. background: #cfdfe8;
  422. }
  423. .big-message {
  424. display: block;
  425. margin: 10vh auto;
  426. text-align: center;
  427. max-width: min(600px, 90vw);
  428. }
  429. .big-message h1 {
  430. font-size: clamp(20px, 5vw, 28px);
  431. margin-bottom: 3vh;
  432. }
  433. .big-message p {
  434. font-size: clamp(16px, 3.5vw, 20px);
  435. line-height: 1.3;
  436. }
  437. .gutter {
  438. margin-left: 5vw;
  439. }
  440. .viewer {
  441. min-height: 2.5vh;
  442. display: block;
  443. word-wrap: break-word;
  444. }
  445. .viewer table {
  446. word-wrap: normal;
  447. word-break: normal;
  448. }
  449. .viewer ol {
  450. list-style-type: decimal;
  451. padding-left: 3vw;
  452. padding-bottom: 1.5vh;
  453. }
  454. .viewer ul {
  455. list-style-type: initial;
  456. padding-left: 3vw;
  457. padding-bottom: 1.5vh;
  458. }
  459. .viewer em {
  460. font-style: italic;
  461. }
  462. .viewer pre,
  463. .viewer code {
  464. padding: 10px 12px 7px;
  465. background: #dedede;
  466. overflow-y: auto;
  467. }
  468. .viewer a {
  469. text-decoration: underline;
  470. }
  471. .viewer a:hover {
  472. color: #333;
  473. }
  474. .basicTabs-container .tabs-content-container {
  475. padding: 0;
  476. padding-top: 15px;
  477. }
  478. .no-scrollbars {
  479. scrollbar-width: none;
  480. }
  481. .no-scrollbars::-webkit-scrollbar {
  482. display: none !important;
  483. }
  484. /* ========================================
  485. MOBILE & TABLET RESPONSIVE IMPROVEMENTS
  486. ======================================== */
  487. /* Mobile devices (up to 800px) and all iPhone models */
  488. @media screen and (max-width: 800px),
  489. screen and (max-device-width: 932px) and (-webkit-min-device-pixel-ratio: 3) and (orientation: landscape),
  490. screen and (max-device-width: 932px) and (-webkit-min-device-pixel-ratio: 3) and (orientation: portrait) {
  491. #content {
  492. margin: 1px 0px 0px 0px;
  493. height: calc(100% - 0px);
  494. /* Improve touch scrolling */
  495. -webkit-overflow-scrolling: touch;
  496. }
  497. #content > .wrapper {
  498. margin-top: 0px;
  499. padding: 8px;
  500. }
  501. .wrapper {
  502. height: calc(100% - 31px);
  503. margin: 0px;
  504. padding: 8px;
  505. }
  506. .panel-default {
  507. width: 95vw;
  508. max-width: 95vw;
  509. margin: 0 auto;
  510. }
  511. /* Improve touch targets */
  512. button, .btn, .js-toggle, .js-color-choice, .js-reaction, .close {
  513. min-height: 44px;
  514. min-width: 44px;
  515. padding: 12px 16px;
  516. font-size: 16px; /* Prevent zoom on iOS */
  517. touch-action: manipulation;
  518. }
  519. /* Form elements */
  520. input, select, textarea {
  521. font-size: 16px; /* Prevent zoom on iOS */
  522. padding: 12px;
  523. min-height: 44px;
  524. touch-action: manipulation;
  525. }
  526. /* Cards and lists */
  527. .minicard {
  528. min-height: 48px;
  529. padding: 12px;
  530. margin-bottom: 8px;
  531. touch-action: manipulation;
  532. }
  533. .list {
  534. margin: 0 8px;
  535. min-width: 280px;
  536. }
  537. /* Board canvas */
  538. .board-canvas {
  539. padding: 0 8px 8px 0;
  540. overflow-x: auto;
  541. -webkit-overflow-scrolling: touch;
  542. }
  543. /* Header mobile layout */
  544. #header {
  545. padding: 8px;
  546. /* Keep top bar on a single row on small screens */
  547. flex-wrap: nowrap;
  548. align-items: center;
  549. gap: 8px;
  550. }
  551. #header-quick-access {
  552. /* Keep quick-access items in one row */
  553. display: flex;
  554. flex-direction: row;
  555. align-items: center;
  556. gap: 8px;
  557. width: 100%;
  558. }
  559. /* Hide elements that should move to the hamburger menu on mobile */
  560. #header-quick-access .header-quick-access-list,
  561. #header-quick-access #header-help {
  562. display: none !important;
  563. }
  564. /* Show only the home icon (hide the trailing text) on mobile */
  565. #header-quick-access .home-icon a {
  566. display: inline-flex;
  567. align-items: center;
  568. max-width: 28px; /* enough to display the icon */
  569. overflow: hidden;
  570. white-space: nowrap;
  571. }
  572. /* Hide text in home icon on mobile, show only icon */
  573. #header-quick-access .home-icon a span:not(.fa) {
  574. display: none !important;
  575. }
  576. /* Ensure proper spacing for mobile header elements */
  577. #header-quick-access .zoom-controls {
  578. margin-left: auto;
  579. margin-right: 8px;
  580. }
  581. .mobile-mode-toggle {
  582. margin-right: 8px;
  583. }
  584. #header-user-bar {
  585. margin-left: auto;
  586. }
  587. /* Ensure header elements don't wrap on very small screens */
  588. #header-quick-access {
  589. min-width: 0; /* Allow flexbox to shrink */
  590. }
  591. /* Make sure logo doesn't take too much space on mobile */
  592. #header-quick-access img {
  593. max-height: 24px;
  594. max-width: 120px;
  595. }
  596. /* Ensure zoom controls are compact on mobile */
  597. .zoom-controls .zoom-level {
  598. padding: 4px 8px;
  599. font-size: 12px;
  600. }
  601. /* Modal mobile optimization */
  602. #modal .modal-content,
  603. #modal .modal-content-wide {
  604. width: 95vw;
  605. max-width: 95vw;
  606. margin: 2vh auto;
  607. padding: 16px;
  608. max-height: 90vh;
  609. overflow-y: auto;
  610. }
  611. /* Table mobile optimization */
  612. table {
  613. font-size: 14px;
  614. width: 100%;
  615. display: block;
  616. overflow-x: auto;
  617. white-space: nowrap;
  618. -webkit-overflow-scrolling: touch;
  619. }
  620. /* Admin panel mobile optimization */
  621. .setting-content .content-body {
  622. flex-direction: column;
  623. gap: 16px;
  624. padding: 8px;
  625. }
  626. .setting-content .content-body .side-menu {
  627. width: 100%;
  628. order: 2;
  629. }
  630. .setting-content .content-body .main-body {
  631. order: 1;
  632. min-height: 60vh;
  633. overflow-x: auto;
  634. -webkit-overflow-scrolling: touch;
  635. }
  636. }
  637. /* Tablet devices (768px - 1024px) */
  638. @media screen and (min-width: 768px) and (max-width: 1024px) {
  639. #content > .wrapper {
  640. padding: 12px;
  641. }
  642. .wrapper {
  643. padding: 12px;
  644. }
  645. .panel-default {
  646. width: 90vw;
  647. max-width: 90vw;
  648. }
  649. /* Touch-friendly but more compact */
  650. button, .btn, .js-toggle, .js-color-choice, .js-reaction, .close {
  651. min-height: 48px;
  652. min-width: 48px;
  653. padding: 10px 14px;
  654. }
  655. .minicard {
  656. min-height: 40px;
  657. padding: 10px;
  658. }
  659. .list {
  660. margin: 0 12px;
  661. min-width: 300px;
  662. }
  663. .board-canvas {
  664. padding: 0 12px 12px 0;
  665. }
  666. #header {
  667. padding: 12px 16px;
  668. }
  669. #modal .modal-content {
  670. width: 80vw;
  671. max-width: 600px;
  672. }
  673. #modal .modal-content-wide {
  674. width: 90vw;
  675. max-width: 800px;
  676. }
  677. .setting-content .content-body {
  678. gap: 20px;
  679. }
  680. .setting-content .content-body .side-menu {
  681. width: 250px;
  682. }
  683. }
  684. /* Large displays and digital signage (1920px+) */
  685. @media screen and (min-width: 1920px) {
  686. body {
  687. font-size: 18px;
  688. }
  689. button, .btn, .js-toggle, .js-color-choice, .js-reaction, .close {
  690. min-height: 56px;
  691. min-width: 56px;
  692. padding: 16px 20px;
  693. font-size: 18px;
  694. }
  695. .minicard {
  696. min-height: 56px;
  697. padding: 16px;
  698. font-size: 18px;
  699. }
  700. .list {
  701. margin: 0 8px;
  702. min-width: 360px;
  703. }
  704. .board-canvas {
  705. padding: 0;
  706. }
  707. #header {
  708. padding: 0 8px;
  709. }
  710. #content > .wrapper {
  711. padding: 0;
  712. }
  713. #modal .modal-content {
  714. width: 600px;
  715. }
  716. #modal .modal-content-wide {
  717. width: 1000px;
  718. }
  719. .setting-content .content-body {
  720. gap: 32px;
  721. }
  722. .setting-content .content-body .side-menu {
  723. width: 320px;
  724. }
  725. }
  726. .inline-input {
  727. height: 37px;
  728. margin: 8px 10px 0 0;
  729. width: 100px;
  730. }
  731. .select-authentication {
  732. width: 100%;
  733. }
  734. .textBelowCustomLoginLogo,
  735. .auth-layout {
  736. display: flex;
  737. flex-direction: column;
  738. align-items: center;
  739. justify-content: center;
  740. }
  741. .auth-layout .auth-dialog {
  742. margin: 0 !important;
  743. }
  744. .loadingText {
  745. text-align: center;
  746. }
  747. .lds-roller {
  748. display: block;
  749. margin: auto;
  750. position: relative;
  751. width: 64px;
  752. height: 64px;
  753. }
  754. .lds-roller div {
  755. animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
  756. transform-origin: 32px 32px;
  757. }
  758. .lds-roller div:after {
  759. content: " ";
  760. display: block;
  761. position: absolute;
  762. width: 6px;
  763. height: 6px;
  764. border-radius: 50%;
  765. background: #dedede;
  766. margin: -3px 0 0 -3px;
  767. }
  768. .lds-roller div:nth-child(1) {
  769. animation-delay: -0.036s;
  770. }
  771. .lds-roller div:nth-child(1):after {
  772. top: 50px;
  773. left: 50px;
  774. }
  775. .lds-roller div:nth-child(2) {
  776. animation-delay: -0.072s;
  777. }
  778. .lds-roller div:nth-child(2):after {
  779. top: 54px;
  780. left: 45px;
  781. }
  782. .lds-roller div:nth-child(3) {
  783. animation-delay: -0.108s;
  784. }
  785. .lds-roller div:nth-child(3):after {
  786. top: 57px;
  787. left: 39px;
  788. }
  789. .lds-roller div:nth-child(4) {
  790. animation-delay: -0.144s;
  791. }
  792. .lds-roller div:nth-child(4):after {
  793. top: 58px;
  794. left: 32px;
  795. }
  796. .lds-roller div:nth-child(5) {
  797. animation-delay: -0.18s;
  798. }
  799. .lds-roller div:nth-child(5):after {
  800. top: 57px;
  801. left: 25px;
  802. }
  803. .lds-roller div:nth-child(6) {
  804. animation-delay: -0.216s;
  805. }
  806. .lds-roller div:nth-child(6):after {
  807. top: 54px;
  808. left: 19px;
  809. }
  810. .lds-roller div:nth-child(7) {
  811. animation-delay: -0.252s;
  812. }
  813. .lds-roller div:nth-child(7):after {
  814. top: 50px;
  815. left: 14px;
  816. }
  817. .lds-roller div:nth-child(8) {
  818. animation-delay: -0.288s;
  819. }
  820. .lds-roller div:nth-child(8):after {
  821. top: 45px;
  822. left: 10px;
  823. }
  824. .at-link {
  825. color: #17683a;
  826. text-decoration: underline;
  827. text-decoration-color: #17683a;
  828. }
  829. .at-pwd-form, .at-sep, .at-oauth {
  830. display: none;
  831. }
  832. @-moz-keyframes fadeIn {
  833. from {
  834. opacity: 0;
  835. }
  836. }
  837. @-webkit-keyframes fadeIn {
  838. from {
  839. opacity: 0;
  840. }
  841. }
  842. @-o-keyframes fadeIn {
  843. from {
  844. opacity: 0;
  845. }
  846. }
  847. @keyframes fadeIn {
  848. from {
  849. opacity: 0;
  850. }
  851. }
  852. @-moz-keyframes flexGrowIn {
  853. from {
  854. height: 100%;
  855. }
  856. }
  857. @-webkit-keyframes flexGrowIn {
  858. from {
  859. height: 100%;
  860. }
  861. }
  862. @-o-keyframes flexGrowIn {
  863. from {
  864. height: 100%;
  865. }
  866. }
  867. @keyframes flexGrowIn {
  868. from {
  869. height: 100%;
  870. }
  871. }
  872. /* iOS Safari Mobile Mode Fixes */
  873. @media screen and (max-width: 800px) {
  874. /* Prevent scrolling issues on iOS Safari when card popup is open */
  875. body.mobile-mode {
  876. overflow: hidden;
  877. position: fixed;
  878. width: 100%;
  879. height: 100vh;
  880. }
  881. /* Fix z-index stacking for mobile Safari */
  882. body.mobile-mode .board-wrapper {
  883. z-index: 1;
  884. }
  885. body.mobile-mode .board-wrapper .board-canvas .board-overlay {
  886. z-index: 17 !important;
  887. }
  888. body.mobile-mode .card-details {
  889. z-index: 100 !important;
  890. }
  891. body.mobile-mode .pop-over {
  892. z-index: 999;
  893. }
  894. /* Ensure smooth scrolling on iOS */
  895. body.mobile-mode .card-details,
  896. body.mobile-mode .pop-over .content-wrapper {
  897. -webkit-overflow-scrolling: touch;
  898. }
  899. }
  900. @-moz-keyframes lds-roller {
  901. 0% {
  902. transform: rotate(0deg);
  903. }
  904. 100% {
  905. transform: rotate(360deg);
  906. }
  907. }
  908. @-webkit-keyframes lds-roller {
  909. 0% {
  910. transform: rotate(0deg);
  911. }
  912. 100% {
  913. transform: rotate(360deg);
  914. }
  915. }
  916. @-o-keyframes lds-roller {
  917. 0% {
  918. transform: rotate(0deg);
  919. }
  920. 100% {
  921. transform: rotate(360deg);
  922. }
  923. }
  924. @keyframes lds-roller {
  925. 0% {
  926. transform: rotate(0deg);
  927. }
  928. 100% {
  929. transform: rotate(360deg);
  930. }
  931. }