@muten/shadcn 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +64 -1
- package/README.md +7 -0
- package/kit.css +2289 -25
- package/motion.css +16 -1
- package/package.json +3 -2
- package/registry/accordion.muten +10 -0
- package/registry/agenda.js +72 -24
- package/registry/agenda.muten +30 -2
- package/registry/band.muten +1 -1
- package/registry/bio-play.muten +16 -0
- package/registry/booking-play.muten +43 -0
- package/registry/button.muten +3 -2
- package/registry/chat-play.muten +77 -0
- package/registry/day-plan.muten +40 -0
- package/registry/device-frame.muten +25 -7
- package/registry/drawer.muten +1 -1
- package/registry/gradient-blinds.js +88 -89
- package/registry/gradient-blinds.muten +11 -4
- package/registry/inbox-play.muten +56 -0
- package/registry/input-group.muten +3 -1
- package/registry/kit/board.js +1 -1
- package/registry/kit/collections.js +10 -2
- package/registry/kit/core.js +519 -99
- package/registry/kit/structure.js +7 -5
- package/registry/kit-widget.js +1 -1
- package/registry/legal-doc.muten +27 -0
- package/registry/modal-behavior.js +11 -0
- package/registry/modal.muten +2 -2
- package/registry/order-play.muten +33 -0
- package/registry/permission-matrix.muten +31 -5
- package/registry/phone-bar.muten +18 -0
- package/registry/phone-shell.muten +1 -1
- package/registry/product-play.muten +20 -0
- package/registry/screen-tour.js +59 -0
- package/registry/screen-tour.muten +10 -0
- package/registry/sidebar.muten +9 -0
- package/registry/site-footer.muten +37 -0
- package/registry/stamp-card.muten +5 -2
- package/registry/zoom-control.muten +3 -3
- package/registry.json +78 -0
- package/scripts/reuse-audit.mjs +37 -0
package/kit.css
CHANGED
|
@@ -279,7 +279,7 @@ button.cn-item { width: 100%; font: inherit; text-align: left; cursor: pointer;
|
|
|
279
279
|
.cx-switch-row p { grid-column: 1; margin: 0; font-size: 13px; color: var(--muted-foreground); line-height: 1.45; }
|
|
280
280
|
|
|
281
281
|
/* ── Tabs with a sliding indicator, counts and horizontal scroll on the phone ── */
|
|
282
|
-
.cx-tabs { position: relative; display: flex; gap: 2px; padding: 3px; border-radius: var(--radius); background: var(--muted); width: max-content; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
|
|
282
|
+
.cx-tabs { position: relative; display: flex; flex-direction: row; gap: 2px; padding: 3px; border-radius: var(--radius); background: var(--muted); width: max-content; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
|
|
283
283
|
.cx-tabs::-webkit-scrollbar { display: none; }
|
|
284
284
|
|
|
285
285
|
|
|
@@ -323,6 +323,9 @@ button.cn-item { width: 100%; font: inherit; text-align: left; cursor: pointer;
|
|
|
323
323
|
.cx-overlay { position: fixed; inset: 0; z-index: var(--z-modal); background: var(--overlay); backdrop-filter: blur(4px); opacity: 0; transition: opacity 160ms ease; }
|
|
324
324
|
.cx-overlay[data-state="open"] { opacity: 1; }
|
|
325
325
|
.cx-modal { position: fixed; z-index: var(--z-modal); display: flex; flex-direction: column; background: var(--popover); color: var(--popover-foreground); box-shadow: 0 0 0 1px color-mix(in srgb, var(--foreground) 10%, transparent), 0 20px 25px -5px rgb(0 0 0 / .1); outline: none; font-size: 14px;
|
|
326
|
+
/* one height for every control in a modal's form: a select, a time and a text field side by side read as one form */
|
|
327
|
+
.cx-modal-body :is(.cn-input, .cx-time-btn, .cx-sel-btn) { min-height: 40px; font-size: 14px; }
|
|
328
|
+
.cx-modal-body .cx-time-btn { padding-inline: 12px; gap: 8px; }
|
|
326
329
|
--sheet-space: 16px; --sheet-tight: 8px; }
|
|
327
330
|
.cx-modal-head { display: flex; flex-direction: column; gap: 4px; padding: 16px 48px 12px 16px; }
|
|
328
331
|
.cx-modal-head b { font-size: 16px; font-weight: 600; }
|
|
@@ -777,8 +780,8 @@ html.cx-locked { overflow: hidden; }
|
|
|
777
780
|
#drop-msg[data-tone="ok"] { color: var(--success); }
|
|
778
781
|
|
|
779
782
|
/* ── Phone shell: header that shrinks, three fixed tabs ── */
|
|
780
|
-
.cx-
|
|
781
|
-
.cx-ph-screen { position: relative; height: 100%;
|
|
783
|
+
.cx-device.cx-ph-device { --dw: 320px; } /* the library phone (DeviceFrame's rule); the shell is its screen */
|
|
784
|
+
.cx-ph-screen { position: relative; height: 100%; overflow: hidden; background: var(--background); display: flex; flex-direction: column; }
|
|
782
785
|
.cx-ph-status { display: flex; align-items: center; justify-content: space-between; height: 44px; padding: 0 24px; font-size: 13px; font-weight: 600; flex: none; }
|
|
783
786
|
.cx-ph-island { width: 96px; height: 28px; border-radius: 99px; background: #000; }
|
|
784
787
|
.cx-ph-head { flex: none; background: color-mix(in srgb, var(--background) 92%, transparent); backdrop-filter: blur(10px); border-bottom: 1px solid transparent; transition: border-color 160ms; z-index: 2; }
|
|
@@ -938,6 +941,9 @@ html.cx-locked { overflow: hidden; }
|
|
|
938
941
|
.cx-board[data-end] { --fr: 36px; }
|
|
939
942
|
.cx-board.panning { cursor: grabbing; user-select: none; }
|
|
940
943
|
.cx-board.panning * { pointer-events: none; }
|
|
944
|
+
/* THE BOARD SCROLLS INSIDE ITS COLUMN. Its lanes add up wider than a phone; the host must take the width it is given
|
|
945
|
+
(never its lanes' width), or the board grows past the page, the page clips it, and the side lanes cannot be reached. */
|
|
946
|
+
.cx-board-host { display: block; width: 100%; min-width: 0; max-width: 100%; }
|
|
941
947
|
|
|
942
948
|
|
|
943
949
|
|
|
@@ -1302,7 +1308,7 @@ html.cx-locked { overflow: hidden; }
|
|
|
1302
1308
|
.cx-day b { font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; }
|
|
1303
1309
|
.cx-day i { width: 4px; height: 4px; border-radius: 99px; background: var(--success); }
|
|
1304
1310
|
.cx-day[data-full] i, .cx-day:disabled i { background: transparent; }
|
|
1305
|
-
.cx-day[aria-pressed="true"] small { color: inherit;
|
|
1311
|
+
.cx-day[aria-pressed="true"] small { color: inherit; }
|
|
1306
1312
|
.cx-day[aria-pressed="true"] i { background: currentColor; }
|
|
1307
1313
|
.cx-hour-grid .cn-button { width: 100%; font-variant-numeric: tabular-nums; }
|
|
1308
1314
|
.cx-hour-skel { height: 28px; }
|
|
@@ -1403,6 +1409,8 @@ p.cx-text { margin: 0; }
|
|
|
1403
1409
|
.cx-car-track.dragging { scroll-snap-type: none; scroll-behavior: auto; cursor: grabbing; user-select: none; }
|
|
1404
1410
|
.cx-car-track:focus-visible { outline: 2px solid var(--ring); outline-offset: 4px; }
|
|
1405
1411
|
.cx-car-slide { scroll-snap-align: start; min-width: 0; }
|
|
1412
|
+
/* while the mouse drags the track it follows the hand; on release kit core settles it on the nearest page */
|
|
1413
|
+
.cx-car-track.dragging { scroll-snap-type: none; scroll-behavior: auto; cursor: grabbing; user-select: none; }
|
|
1406
1414
|
.cx-car[data-center] .cx-car-track { grid-auto-columns: 72%; padding-inline: 14%; }
|
|
1407
1415
|
.cx-car[data-center] .cx-car-slide { scroll-snap-align: center; transition: transform 260ms cubic-bezier(.22, 1, .36, 1), opacity 260ms; transform: scale(.92); opacity: .55; }
|
|
1408
1416
|
.cx-car[data-center] .cx-car-slide[data-active] { transform: none; opacity: 1; }
|
|
@@ -1554,7 +1562,7 @@ p.cx-text { margin: 0; }
|
|
|
1554
1562
|
.cx-ag-colhead { display: grid; place-items: center; font-size: 13px; font-weight: 600; border-left: 1px solid var(--border); }
|
|
1555
1563
|
.cx-ag-body { position: relative; display: grid; grid-template-columns: 56px repeat(var(--cols), 1fr); background-image: repeating-linear-gradient(to bottom, var(--border) 0 1px, transparent 1px var(--h)); }
|
|
1556
1564
|
.cx-ag-times { position: relative; }
|
|
1557
|
-
.cx-ag-times span { position: absolute; right: 8px; transform: translateY(-50%); }
|
|
1565
|
+
.cx-ag-times span { position: absolute; right: 8px; transform: translateY(-50%); white-space: nowrap; }
|
|
1558
1566
|
.cx-ag-times span:first-child { transform: none; }
|
|
1559
1567
|
.cx-ag-col { position: relative; border-left: 1px solid var(--border); }
|
|
1560
1568
|
.cx-ag-slot { position: absolute; left: 0; right: 0; border: 0; background: transparent; cursor: pointer; }
|
|
@@ -1678,10 +1686,15 @@ p.cx-text { margin: 0; }
|
|
|
1678
1686
|
#cc-msg[data-tone="bad"] { color: var(--destructive); }
|
|
1679
1687
|
#cc-msg[data-tone="ok"] { color: var(--success); }
|
|
1680
1688
|
.cx-team { width: 100%; max-width: 640px; margin: 0 auto; display: flex; flex-direction: column; gap: 10px; }
|
|
1681
|
-
.cx-perm { min-width: 520px; }
|
|
1689
|
+
.cx-perm { min-width: 520px; table-layout: fixed; }
|
|
1690
|
+
.cx-perm th, .cx-perm td { vertical-align: middle; }
|
|
1691
|
+
.cx-perm td { height: auto; padding-block: 12px; }
|
|
1682
1692
|
.cx-perm .cx-perm-c { width: 120px; text-align: center; }
|
|
1683
|
-
.cx-perm
|
|
1684
|
-
.cx-perm .
|
|
1693
|
+
.cx-perm .cx-perm-c > input { display: block; margin: 0 auto; }
|
|
1694
|
+
.cx-perm .cx-perm-c > input:disabled { opacity: .6; }
|
|
1695
|
+
.cx-perm-name { display: block; font-size: 14px; font-weight: 600; }
|
|
1696
|
+
.cx-perm-desc { display: block; margin-top: 2px; font-size: 12px; color: var(--muted-foreground); }
|
|
1697
|
+
.cx-perm-desc:empty { display: none; }
|
|
1685
1698
|
#perms { width: 100%; max-width: 760px; margin: 0 auto; }
|
|
1686
1699
|
|
|
1687
1700
|
/* ═════ Stamps, bell, queue, password ═════ */
|
|
@@ -1756,7 +1769,7 @@ p.cx-text { margin: 0; }
|
|
|
1756
1769
|
.cx-ag-who .cn-button { flex: none; gap: 6px; }
|
|
1757
1770
|
.cx-ag-who .cn-button .cn-avatar { width: 20px; height: 20px; }
|
|
1758
1771
|
.cx-ag-who .cn-button .cn-avatar .cn-avatar-fallback { font-size: 9px; }
|
|
1759
|
-
.cx-ag-who .cn-button[aria-
|
|
1772
|
+
.cx-ag-who .cn-button[aria-checked="true"][aria-checked][aria-checked] { background: var(--selected-soft); color: var(--selected); border-color: transparent; }
|
|
1760
1773
|
.cx-ag-strip { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
|
|
1761
1774
|
.cx-ag-day small { font-size: 11px; color: var(--muted-foreground); text-transform: uppercase; letter-spacing: .04em; }
|
|
1762
1775
|
.cx-ag-day b { font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; }
|
|
@@ -1767,7 +1780,8 @@ p.cx-text { margin: 0; }
|
|
|
1767
1780
|
.cx-ag-colhead .cn-avatar { width: 22px; height: 22px; }
|
|
1768
1781
|
.cx-ag-colhead .cn-avatar .cn-avatar-fallback { font-size: 9px; }
|
|
1769
1782
|
.cx-ag-colhead[data-today] { color: var(--selected); }
|
|
1770
|
-
.cx-ag { grid-template-rows:
|
|
1783
|
+
.cx-ag { grid-template-rows: auto auto; } /* the head grows with what each agenda says (name, role); the body has the day's height */
|
|
1784
|
+
.cx-ag-head { min-height: 44px; }
|
|
1771
1785
|
.cx-ag-off { position: absolute; left: 0; right: 0; background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--muted) 90%, transparent) 0 6px, color-mix(in srgb, var(--muted) 45%, transparent) 6px 12px); pointer-events: none; display: grid; place-items: center; }
|
|
1772
1786
|
.cx-ag-block { position: absolute; left: 3px; right: 3px; z-index: 1; display: flex; align-items: flex-start; padding: 4px 8px; border-radius: calc(var(--radius) * .6); background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--foreground) 8%, transparent) 0 5px, transparent 5px 10px); box-shadow: inset 0 0 0 1px var(--border); pointer-events: none; }
|
|
1773
1787
|
.cx-ag-ev { left: auto; right: auto; }
|
|
@@ -1779,6 +1793,7 @@ p.cx-text { margin: 0; }
|
|
|
1779
1793
|
.cx-ag-row[data-tone="ok"] { --tone: var(--success); } .cx-ag-row[data-tone="wait"] { --tone: var(--warning); }
|
|
1780
1794
|
.cx-ag-row:hover { background: color-mix(in srgb, var(--tone) 16%, var(--background)); }
|
|
1781
1795
|
.cx-ag-row-t { display: flex; flex-direction: column; width: 52px; flex: none; }
|
|
1796
|
+
.cx-ag-row-t > .cx-text { white-space: nowrap; }
|
|
1782
1797
|
.cx-ag-row .cn-badge { margin-left: auto; flex: none; }
|
|
1783
1798
|
.cx-ag-row[data-kind="free"] { --tone: var(--border); border-style: dashed; background: var(--background); min-height: 44px; color: var(--muted-foreground); }
|
|
1784
1799
|
.cx-ag-row[data-kind="free"] svg { width: 16px; height: 16px; }
|
|
@@ -1977,6 +1992,8 @@ p.cx-text { margin: 0; }
|
|
|
1977
1992
|
@container (max-width: 700px) {
|
|
1978
1993
|
.cx-ag-scroll { scroll-snap-type: x mandatory; scroll-padding-left: 48px; }
|
|
1979
1994
|
.cx-ag-col { scroll-snap-align: start; }
|
|
1995
|
+
.cx-ag-times span { right: 5px; }
|
|
1996
|
+
.cx-ag-times .cx-text { font-size: 11px; letter-spacing: -.01em; } /* «09:00» fits its 48px column, never cut at the edge */
|
|
1980
1997
|
}
|
|
1981
1998
|
|
|
1982
1999
|
|
|
@@ -2493,11 +2510,13 @@ a.cx-bc-item:hover { color: var(--foreground); }
|
|
|
2493
2510
|
.cx-sb-menu { display: flex; flex-direction: column; gap: 2px; }
|
|
2494
2511
|
.cx-sb-item { display: flex; align-items: center; gap: 8px; width: 100%; height: 32px; padding: 0 8px; border: 0; border-radius: calc(var(--radius) * .7); background: none; color: inherit; font: inherit; font-size: 14px; text-align: left; cursor: pointer; white-space: nowrap; }
|
|
2495
2512
|
.cx-sb-item:hover { background: var(--accent); }
|
|
2496
|
-
.cx-sb-item[data-active="true"] { background: var(--selected-soft); color: var(--selected); font-weight: 500; }
|
|
2513
|
+
.cx-sb-item[data-active="true"], .cx-sb-item[aria-current="page"] { background: var(--selected-soft); color: var(--selected); font-weight: 500; }
|
|
2514
|
+
.cx-sb-item { position: relative; text-decoration: none; } /* the count sits inside its own row, never past its edge */
|
|
2497
2515
|
.cx-sb-item > .mu-icon { width: 16px; height: 16px; flex: none; }
|
|
2498
2516
|
.cx-sb-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
|
|
2499
2517
|
.cx-sb-count { min-width: 20px; height: 20px; padding: 0 6px; border-radius: 99px; background: var(--muted); font-size: 12px; font-variant-numeric: tabular-nums; display: inline-grid; place-items: center; }
|
|
2500
2518
|
.cx-sb-count:empty { display: none; }
|
|
2519
|
+
.cx-sb-item > .cx-sb-count { right: 8px; } /* on the same right edge as the row's padding (chevrons, the footer's icons) */
|
|
2501
2520
|
.cx-sidebar[data-collapsed="true"] :is(.cx-sb-label, .cx-sb-count, .cx-sb-glabel) { display: none; }
|
|
2502
2521
|
.cx-sidebar[data-collapsed="true"] .cx-sb-item { justify-content: center; padding: 0; }
|
|
2503
2522
|
/* ── Message (message.muten): the kit's bubbles as parts ── */
|
|
@@ -2621,7 +2640,7 @@ a.cx-bc-item:hover { color: var(--foreground); }
|
|
|
2621
2640
|
.cx-tier-body > :last-child { margin-top: auto; }
|
|
2622
2641
|
.cx-tier-feature { display: flex; flex-direction: row; align-items: center; gap: 8px; font-size: 14px; }
|
|
2623
2642
|
.cx-tier-feature .mu-icon { width: 16px; height: 16px; color: var(--selected); flex: none; }
|
|
2624
|
-
.cx-blinds { position: absolute; inset: 0; z-index: 0; pointer-events: none;
|
|
2643
|
+
.cx-blinds { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
|
|
2625
2644
|
.cx-hero-blinds { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; min-height: 280px; width: 100%; padding: 40px 20px; border-radius: calc(var(--radius) * 1.6); overflow: hidden; text-align: center; }
|
|
2626
2645
|
.cx-hero-blinds > :not(.cx-blinds) { position: relative; z-index: 1; }
|
|
2627
2646
|
/* NavPill: sticky glass; it firms up as the page scrolls (scroll-driven animation; plain glass where unsupported) */
|
|
@@ -2689,6 +2708,13 @@ a.cx-bc-item:hover { color: var(--foreground); }
|
|
|
2689
2708
|
.cx-navpill .cx-nav-menu { display: inline-flex; }
|
|
2690
2709
|
}
|
|
2691
2710
|
@media (prefers-reduced-motion: reduce) { .cx-navpill[data-look="tray"], .cx-navpill[data-look="tray"] .cx-nav-cta { animation: none; } }
|
|
2711
|
+
/* A tablet: the links never wrap onto two lines, and from 860px down they fold into the menu like on a phone, so the
|
|
2712
|
+
call to action always fits whole. */
|
|
2713
|
+
.cx-navpill .cx-nav-links a, .cx-navpill .cx-nav-cta, .cx-navpill .cx-nav-door { white-space: nowrap; }
|
|
2714
|
+
@media (max-width: 860px) {
|
|
2715
|
+
.cx-navpill[data-look="tray"] .cx-nav-links, .cx-navpill[data-look="tray"] .cx-nav-hide-sm { display: none; }
|
|
2716
|
+
.cx-navpill .cx-nav-menu { display: inline-flex; }
|
|
2717
|
+
}
|
|
2692
2718
|
|
|
2693
2719
|
/* ── PricingTier: was (the old price, struck), note (how it is billed) and lead (the line over the features) ── */
|
|
2694
2720
|
.cx-tier-was { margin-left: 8px; color: var(--muted-foreground); text-decoration: line-through; font-size: 14px; }
|
|
@@ -2727,20 +2753,37 @@ a.cx-bc-item:hover { color: var(--foreground); }
|
|
|
2727
2753
|
.style-nova .cn-accordion[data-size="lg"] .cn-accordion-content-inner { padding-bottom: 22px; font-size: 15.5px; line-height: 1.65; max-width: 680px; color: var(--muted-foreground); }
|
|
2728
2754
|
|
|
2729
2755
|
/* ── DeviceFrame: a phone or a browser window around a picture of a product ── */
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
.cx-device
|
|
2733
|
-
.cx-device[data-sized="true"] {
|
|
2734
|
-
.cx-device
|
|
2735
|
-
|
|
2736
|
-
.
|
|
2737
|
-
.
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
.cx-device[data-kind="
|
|
2741
|
-
|
|
2756
|
+
/* DeviceFrame: the phone is the same iPhone Pro as StorePhone (bezel, rings, side buttons), every measure a share of its
|
|
2757
|
+
own size (percent radii), so it keeps its proportions at any width, a percent one too; the browser is a window with its bar, three dots and the address. */
|
|
2758
|
+
.cx-device { --dw: 280px; position: relative; display: flex; flex-direction: column; flex: none; max-width: 100%; }
|
|
2759
|
+
.cx-device[data-sized="true"] { --dw: var(--w); }
|
|
2760
|
+
.cx-device[data-kind="phone"] { width: var(--dw); }
|
|
2761
|
+
/* THE PHONE of the library (DeviceFrame, ChatPlay): the iPhone 18 Pro, to scale. Body 71.9 × 150.0 mm, screen
|
|
2762
|
+
1206 × 2622 px; the edge around the screen is ~2.5 mm a side (3.5% of the width) and ~2.3 mm top and bottom (3.2%): an
|
|
2763
|
+
aluminium band (1.2%) and the black glass border (2.3%). Every measure is a share of the phone's OWN width: the screen's
|
|
2764
|
+
margin (a percent margin is a share of the frame) and its black ring in cqw (the frame is the container). Never the
|
|
2765
|
+
frame's padding: a percent padding is a share of the frame's parent, and the border grew with the page. */
|
|
2766
|
+
.cx-device[data-kind="phone"], .cx-cp-frame { container-type: inline-size; padding: 0; border-radius: 16.4% / 7.9%;
|
|
2767
|
+
background: linear-gradient(135deg, #d9d6d1, #9e9a94 45%, #c9c5bf 70%, #8d8983);
|
|
2768
|
+
box-shadow: inset 0 0 0 .5px rgb(255 255 255 / .35), 0 0 0 .5px rgb(11 11 13 / .45), 0 22px 30px -18px rgb(11 11 13 / .35); }
|
|
2769
|
+
.cx-device[data-kind="phone"]::before, .cx-device[data-kind="phone"]::after, .cx-cp-frame::before, .cx-cp-frame::after { content: ""; position: absolute; width: 1.1%; min-width: 2px; border-radius: 99px; }
|
|
2770
|
+
.cx-device[data-kind="phone"]::before, .cx-cp-frame::before { right: 100%; top: 17%; height: 19.7%; background: linear-gradient(to bottom, #a9a49d 0 18%, transparent 18% 32%, #a9a49d 32% 65%, transparent 65% 72%, #a9a49d 72% 100%); }
|
|
2771
|
+
.cx-device[data-kind="phone"]::after, .cx-cp-frame::after { left: 100%; top: 24%; height: 24.7%; background: linear-gradient(to bottom, #a9a49d 0 41%, transparent 41% 71%, #a9a49d 71% 88%, transparent 88%); }
|
|
2772
|
+
.cx-device[data-kind="phone"] > .cx-device-screen, .cx-cp-screen { position: relative; width: auto; margin: 3.2% 3.5%; aspect-ratio: 1206 / 2622; border-radius: 13.6% / 6.3%; overflow: hidden; background: var(--muted); isolation: isolate;
|
|
2773
|
+
box-shadow: 0 0 0 2.3cqw #0b0b0c; }
|
|
2774
|
+
.cx-device[data-kind="phone"][data-island="on"] > .cx-device-screen::after { content: ""; position: absolute; z-index: 3; top: 1.5%; left: 50%; width: 31.8%; aspect-ratio: 3.4; height: auto; transform: translateX(-50%); border-radius: 99px; background: #000; }
|
|
2775
|
+
.cx-device-screen > img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top; }
|
|
2776
|
+
.cx-device-screen > :not(img) { width: 100%; height: 100%; }
|
|
2777
|
+
.cx-device[data-kind="browser"] { width: 100%; border-radius: 12px; overflow: hidden; background: var(--background); padding-top: 38px; box-shadow: 0 0 0 1px var(--border), 0 24px 48px -30px rgb(11 11 13 / .4); }
|
|
2778
|
+
.cx-device[data-kind="browser"][data-sized="true"] { width: var(--w); }
|
|
2779
|
+
.cx-device[data-kind="browser"]::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 38px; border-bottom: 1px solid var(--border); background: radial-gradient(circle at 18px 19px, color-mix(in oklab, var(--foreground) 22%, transparent) 4.5px, transparent 5px), radial-gradient(circle at 34px 19px, color-mix(in oklab, var(--foreground) 22%, transparent) 4.5px, transparent 5px), radial-gradient(circle at 50px 19px, color-mix(in oklab, var(--foreground) 22%, transparent) 4.5px, transparent 5px), color-mix(in oklab, var(--muted) 60%, var(--background)); }
|
|
2780
|
+
.cx-device-url { position: absolute; top: 8px; left: 50%; transform: translateX(-50%); z-index: 1; max-width: calc(100% - 140px); height: 22px; padding: 0 12px; border-radius: 6px; background: var(--background); color: var(--muted-foreground); font-size: 12px; line-height: 22px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; box-shadow: 0 0 0 1px var(--border); }
|
|
2781
|
+
.cx-device[data-kind="browser"] > .cx-device-screen { position: relative; width: 100%; }
|
|
2782
|
+
.cx-device[data-kind="browser"] > .cx-device-screen > img { height: auto; }
|
|
2783
|
+
/* crop: a fixed height, the rest fades out at the bottom */
|
|
2784
|
+
.cx-device[data-crop="true"] > .cx-device-screen { aspect-ratio: auto; height: var(--h); overflow: hidden; }
|
|
2785
|
+
.cx-device[data-crop="true"] { -webkit-mask-image: linear-gradient(to bottom, #000 72%, transparent); mask-image: linear-gradient(to bottom, #000 72%, transparent); mask-clip: no-clip; }
|
|
2742
2786
|
.cx-device[data-crop="true"] > img { height: 100%; object-fit: cover; object-position: top; }
|
|
2743
|
-
.cx-device[data-crop="true"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 30%; background: linear-gradient(to bottom, transparent, var(--background)); pointer-events: none; }
|
|
2744
2787
|
|
|
2745
2788
|
/* ── LiveStack: news that keeps arriving; the newest in front, the older ones step back behind it ── */
|
|
2746
2789
|
.cx-live { position: relative; display: block; width: 100%; max-width: 380px; height: var(--live-h, 200px); }
|
|
@@ -2761,3 +2804,2224 @@ a.cx-bc-item:hover { color: var(--foreground); }
|
|
|
2761
2804
|
/* ── Press: anything you press gives way a little (0.97), so the page feels it heard you ── */
|
|
2762
2805
|
.style-nova .cn-button { transition-property: color, background-color, border-color, box-shadow, transform; transition-duration: 160ms; transition-timing-function: cubic-bezier(.23, 1, .32, 1); }
|
|
2763
2806
|
.style-nova .cn-button:active:not(:disabled) { transform: scale(0.97); }
|
|
2807
|
+
|
|
2808
|
+
/* contrast: the label of the hour groups (Mañana, Tarde) and an appointment's second line read at 4.5:1 */
|
|
2809
|
+
.cx-hours-h { margin: 0; font-size: 12px; font-weight: 600; color: var(--muted-foreground); }
|
|
2810
|
+
.cx-ag-ev .cx-text[data-variant="caption"], .cx-ag-ev .cx-text[data-variant="muted"] { color: color-mix(in srgb, var(--foreground) 78%, var(--tone)); }
|
|
2811
|
+
|
|
2812
|
+
/* ── Plays: BookingPlay · OrderPlay · DayPlan · ChatPlay - products shown, not used (a landing's bento, a hero). A white
|
|
2813
|
+
sheet resting on a muted surface; every motion is transform/opacity on one loop that runs only while the play is on
|
|
2814
|
+
screen (kit core sets data-in), and reduced motion shows the end. ── */
|
|
2815
|
+
.cx-play { position: relative; overflow: hidden; background: var(--card, #fff); color: var(--foreground); border-radius: calc(var(--radius) * 1.4); box-shadow: 0 1px 2px rgb(11 11 13 / .06), 0 12px 32px -16px rgb(11 11 13 / .18); font-family: var(--font-sans); }
|
|
2816
|
+
.cx-play .mu-icon, .cx-play svg { width: 1em; height: 1em; flex: none; }
|
|
2817
|
+
|
|
2818
|
+
/* BookingPlay (9s) */
|
|
2819
|
+
.cx-bkp { padding: 16px; display: flex; flex-direction: column; gap: 14px; }
|
|
2820
|
+
.cx-bkp-who { display: flex; flex-direction: row; gap: 10px; align-items: center; }
|
|
2821
|
+
.cx-bkp-av { width: 36px; height: 36px; border-radius: 50%; background: var(--foreground); color: var(--background); display: grid; place-items: center; flex: none; font-size: 14px; font-weight: 600; }
|
|
2822
|
+
.cx-bkp-name { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
|
|
2823
|
+
.cx-bkp-t { font-size: 14px; font-weight: 600; letter-spacing: -.01em; }
|
|
2824
|
+
.cx-bkp-s { font-size: 12.5px; color: var(--muted-foreground); }
|
|
2825
|
+
.cx-bkp-price { margin-left: auto; font-size: 14px; font-weight: 600; white-space: nowrap; }
|
|
2826
|
+
.cx-bkp-days { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
|
|
2827
|
+
.cx-bkp-hours { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
|
|
2828
|
+
.cx-bkp-day, .cx-bkp-hour { position: relative; border: 1px solid var(--border); border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; }
|
|
2829
|
+
.cx-bkp-day { height: 52px; gap: 2px; }
|
|
2830
|
+
.cx-bkp-hour { height: 36px; border-radius: 9px; font-size: 13px; font-weight: 500; font-variant-numeric: tabular-nums; }
|
|
2831
|
+
.cx-bkp-wd { font-size: 11px; color: var(--muted-foreground); }
|
|
2832
|
+
.cx-bkp-d { font-size: 15px; font-weight: 600; }
|
|
2833
|
+
.cx-bkp-day[data-state="off"] { background: var(--muted); border-color: transparent; }
|
|
2834
|
+
.cx-bkp-day[data-state="off"] > span { color: var(--muted-foreground); }
|
|
2835
|
+
.cx-bkp-day[data-state="off"] .cx-bkp-d, .cx-bkp-hour[data-state="taken"] { text-decoration: line-through; }
|
|
2836
|
+
.cx-bkp-hour[data-state="taken"] { color: var(--muted-foreground); background: var(--muted); border-color: transparent; }
|
|
2837
|
+
.cx-bkp-on { position: absolute; inset: -1px; border-radius: inherit; background: var(--foreground); color: var(--background); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; font-size: 13px; font-weight: 600; opacity: 0; transform: scale(.92); }
|
|
2838
|
+
.cx-bkp-on .cx-bkp-wd { color: color-mix(in srgb, var(--background) 70%, transparent); }
|
|
2839
|
+
/* the press: a ring that pulses where a finger would land */
|
|
2840
|
+
.cx-bkp-on::after, .cx-bkp-go::after { content: ""; position: absolute; left: 50%; top: 50%; width: 26px; height: 26px; margin: -13px 0 0 -13px; border-radius: 50%; background: rgb(255 255 255 / .45); opacity: 0; }
|
|
2841
|
+
.cx-bkp-go { position: relative; height: 44px; border-radius: 10px; background: var(--foreground); color: var(--background); display: grid; place-items: center; font-size: 14px; font-weight: 600; }
|
|
2842
|
+
.cx-bkp-done { position: absolute; inset: 0; background: var(--card, #fff); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 20px; text-align: center; opacity: 0; transform: translateY(16px); }
|
|
2843
|
+
.cx-bkp-ok { width: 52px; height: 52px; border-radius: 50%; background: var(--success); color: #fff; display: grid; place-items: center; font-size: 24px; transform: scale(.4); }
|
|
2844
|
+
.cx-bkp-dt { font-size: 18px; font-weight: 700; letter-spacing: -.02em; }
|
|
2845
|
+
.cx-bkp-dd { font-size: 13.5px; color: var(--muted-foreground); }
|
|
2846
|
+
.cx-bkp-pass { margin-top: 4px; display: flex; flex-direction: row; gap: 8px; align-items: center; padding: 8px 12px; border-radius: 999px; background: var(--muted); font-size: 12.5px; font-weight: 600; font-family: var(--font-mono, ui-monospace, monospace); }
|
|
2847
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
2848
|
+
.cx-play[data-in] .cx-bkp-day .cx-bkp-on { animation: cx-bkp-day 9s infinite; }
|
|
2849
|
+
.cx-play[data-in] .cx-bkp-day .cx-bkp-on::after { animation: cx-bkp-tap1 9s infinite; }
|
|
2850
|
+
.cx-play[data-in] .cx-bkp-hour .cx-bkp-on { animation: cx-bkp-hour 9s infinite; }
|
|
2851
|
+
.cx-play[data-in] .cx-bkp-hour .cx-bkp-on::after { animation: cx-bkp-tap2 9s infinite; }
|
|
2852
|
+
.cx-play[data-in] .cx-bkp-go { animation: cx-bkp-press 9s infinite; }
|
|
2853
|
+
.cx-play[data-in] .cx-bkp-go::after { animation: cx-bkp-tap3 9s infinite; }
|
|
2854
|
+
.cx-play[data-in] .cx-bkp-done { animation: cx-bkp-done 9s infinite; }
|
|
2855
|
+
.cx-play[data-in] .cx-bkp-ok { animation: cx-bkp-ok 9s infinite; }
|
|
2856
|
+
}
|
|
2857
|
+
@media (prefers-reduced-motion: reduce) { .cx-bkp-on { opacity: 1; transform: none; } }
|
|
2858
|
+
@keyframes cx-bkp-day { 0%, 12% { opacity: 0; transform: scale(.92); } 16%, 86% { opacity: 1; transform: none; animation-timing-function: cubic-bezier(.23, 1, .32, 1); } 92%, 100% { opacity: 0; transform: scale(.92); } }
|
|
2859
|
+
@keyframes cx-bkp-hour { 0%, 26% { opacity: 0; transform: scale(.92); } 30%, 86% { opacity: 1; transform: none; } 92%, 100% { opacity: 0; transform: scale(.92); } }
|
|
2860
|
+
@keyframes cx-bkp-tap1 { 0%, 12% { opacity: 0; transform: scale(.4); } 14% { opacity: 1; transform: scale(.8); } 22%, 100% { opacity: 0; transform: scale(2); } }
|
|
2861
|
+
@keyframes cx-bkp-tap2 { 0%, 26% { opacity: 0; transform: scale(.4); } 28% { opacity: 1; transform: scale(.8); } 36%, 100% { opacity: 0; transform: scale(2); } }
|
|
2862
|
+
@keyframes cx-bkp-tap3 { 0%, 39% { opacity: 0; transform: scale(.4); } 41% { opacity: 1; transform: scale(.8); } 49%, 100% { opacity: 0; transform: scale(2.4); } }
|
|
2863
|
+
@keyframes cx-bkp-press { 0%, 39% { transform: none; } 41% { transform: scale(.97); } 44%, 100% { transform: none; } }
|
|
2864
|
+
@keyframes cx-bkp-done { 0%, 45% { opacity: 0; transform: translateY(16px); } 51%, 84% { opacity: 1; transform: none; animation-timing-function: cubic-bezier(.23, 1, .32, 1); } 90%, 100% { opacity: 0; transform: translateY(16px); } }
|
|
2865
|
+
@keyframes cx-bkp-ok { 0%, 48% { transform: scale(.4); } 56%, 100% { transform: none; } }
|
|
2866
|
+
|
|
2867
|
+
/* DayPlan (10s) */
|
|
2868
|
+
.cx-dp { padding: 16px 18px; display: flex; flex-direction: column; }
|
|
2869
|
+
.cx-dp-top { display: flex; flex-direction: row; align-items: center; gap: 10px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
|
|
2870
|
+
.cx-dp-t { font-size: 15px; font-weight: 600; letter-spacing: -.01em; }
|
|
2871
|
+
.cx-dp-date { font-size: 13px; color: var(--muted-foreground); }
|
|
2872
|
+
.cx-dp-count { margin-left: auto; height: 24px; min-width: 72px; border-radius: 999px; background: var(--muted); font-size: 12px; font-weight: 600; display: grid; place-items: center; overflow: hidden; white-space: nowrap; }
|
|
2873
|
+
.cx-dp-count > span { grid-area: 1 / 1; padding: 0 10px; }
|
|
2874
|
+
.cx-dp-c2 { opacity: 0; transform: translateY(100%); }
|
|
2875
|
+
.cx-dp-list { position: relative; display: flex; flex-direction: column; padding-top: 6px; }
|
|
2876
|
+
.cx-dp-list::before { content: ""; position: absolute; left: 80.5px; top: 20px; bottom: 20px; width: 1px; background: var(--border); }
|
|
2877
|
+
.cx-dp-row, .cx-dp-now { display: grid; grid-template-columns: 64px 14px minmax(0, 1fr); gap: 10px; align-items: center; }
|
|
2878
|
+
.cx-dp-row { min-height: 50px; }
|
|
2879
|
+
.cx-dp-time { font-size: 13px; font-weight: 500; color: var(--muted-foreground); font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
|
|
2880
|
+
.cx-dp-dot { position: relative; z-index: 1; width: 9px; height: 9px; border-radius: 50%; background: var(--foreground); justify-self: center; box-shadow: 0 0 0 3px var(--card, #fff); }
|
|
2881
|
+
.cx-dp-card { position: relative; min-height: 34px; display: flex; }
|
|
2882
|
+
.cx-dp-body { position: relative; flex: 1; min-width: 0; display: flex; flex-direction: row; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; background: var(--card, #fff); }
|
|
2883
|
+
.cx-dp-who { font-size: 14px; font-weight: 600; letter-spacing: -.01em; white-space: nowrap; }
|
|
2884
|
+
.cx-dp-what { font-size: 13px; color: var(--muted-foreground); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
|
|
2885
|
+
.cx-dp-tag { margin-left: auto; flex: none; font-size: 11.5px; font-weight: 600; padding: 3px 8px; border-radius: 999px; background: var(--muted); color: color-mix(in srgb, var(--foreground) 78%, transparent); white-space: nowrap; }
|
|
2886
|
+
.cx-dp-tag[data-tone="ok"] { background: var(--success-soft); color: color-mix(in oklab, var(--success) 72%, black); }
|
|
2887
|
+
.cx-dp-tag[data-tone="ai"] { background: color-mix(in srgb, var(--brand, #6B46F2) 12%, transparent); color: var(--brand, #6B46F2); }
|
|
2888
|
+
.cx-dp-row[data-state="done"] .cx-dp-dot { background: color-mix(in srgb, var(--muted-foreground) 45%, transparent); }
|
|
2889
|
+
.cx-dp-row[data-state="done"] .cx-dp-who { color: var(--muted-foreground); }
|
|
2890
|
+
.cx-dp-now { height: 18px; }
|
|
2891
|
+
.cx-dp-now > span:first-child { font-size: 11.5px; font-weight: 700; color: var(--destructive, #E5484D); text-align: right; }
|
|
2892
|
+
.cx-dp-now-dot { z-index: 1; width: 9px; height: 9px; border-radius: 50%; background: var(--destructive, #E5484D); justify-self: center; }
|
|
2893
|
+
.cx-dp-now-line { height: 1.5px; background: var(--destructive, #E5484D); opacity: .6; }
|
|
2894
|
+
.cx-dp-free { position: absolute; inset: 0; border: 1.5px dashed color-mix(in srgb, var(--muted-foreground) 40%, transparent); border-radius: 10px; display: flex; align-items: center; padding: 0 12px; font-size: 13px; color: var(--muted-foreground); }
|
|
2895
|
+
.cx-dp-row[data-state="fill"] .cx-dp-body::after { content: ""; position: absolute; inset: 0; border-radius: 10px; box-shadow: 0 0 0 2px var(--success); opacity: 0; }
|
|
2896
|
+
.cx-dp-row[data-state="fill"] .cx-dp-dot::after { content: ""; position: absolute; inset: 0; border-radius: 50%; background: var(--success); }
|
|
2897
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
2898
|
+
.cx-play[data-in] .cx-dp-row[data-state="fill"] .cx-dp-dot { background: color-mix(in srgb, var(--muted-foreground) 40%, transparent); }
|
|
2899
|
+
.cx-play[data-in] .cx-dp-row[data-state="fill"] .cx-dp-dot::after { animation: cx-dp-dot 10s infinite; }
|
|
2900
|
+
.cx-play[data-in] .cx-dp-row[data-state="fill"] .cx-dp-free { animation: cx-dp-free 10s infinite; }
|
|
2901
|
+
.cx-play[data-in] .cx-dp-row[data-state="fill"] .cx-dp-body { animation: cx-dp-new 10s infinite; }
|
|
2902
|
+
.cx-play[data-in] .cx-dp-row[data-state="fill"] .cx-dp-body::after { animation: cx-dp-ring 10s infinite; }
|
|
2903
|
+
.cx-play[data-in] .cx-dp-count[data-next] .cx-dp-c1 { animation: cx-dp-out 10s infinite; }
|
|
2904
|
+
.cx-play[data-in] .cx-dp-count[data-next] .cx-dp-c2 { animation: cx-dp-in 10s infinite; }
|
|
2905
|
+
}
|
|
2906
|
+
@media (prefers-reduced-motion: reduce) { .cx-dp-free { display: none; } }
|
|
2907
|
+
@keyframes cx-dp-free { 0%, 28% { opacity: 1; } 34%, 88% { opacity: 0; } 94%, 100% { opacity: 1; } }
|
|
2908
|
+
@keyframes cx-dp-new { 0%, 30% { opacity: 0; transform: translateY(-8px) scale(.98); } 36%, 88% { opacity: 1; transform: none; animation-timing-function: cubic-bezier(.23, 1, .32, 1); } 94%, 100% { opacity: 0; transform: translateY(-8px) scale(.98); } }
|
|
2909
|
+
@keyframes cx-dp-ring { 0%, 34% { opacity: 0; } 38% { opacity: 1; } 60%, 100% { opacity: 0; } }
|
|
2910
|
+
@keyframes cx-dp-dot { 0%, 34% { opacity: 0; } 38%, 88% { opacity: 1; } 94%, 100% { opacity: 0; } }
|
|
2911
|
+
@keyframes cx-dp-out { 0%, 36% { opacity: 1; transform: none; } 40%, 88% { opacity: 0; transform: translateY(-100%); } 94%, 100% { opacity: 1; transform: none; } }
|
|
2912
|
+
@keyframes cx-dp-in { 0%, 36% { opacity: 0; transform: translateY(100%); } 40%, 88% { opacity: 1; transform: none; } 94%, 100% { opacity: 0; transform: translateY(100%); } }
|
|
2913
|
+
|
|
2914
|
+
/* ChatPlay (12s; steps 1-6) */
|
|
2915
|
+
.cx-cp { display: flex; flex-direction: column; }
|
|
2916
|
+
.cx-cp-head { display: flex; flex-direction: row; gap: 10px; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--border); }
|
|
2917
|
+
.cx-cp-face { width: 34px; height: 34px; border-radius: 50%; background: var(--brand, #6B46F2); display: flex; gap: 5px; align-items: center; justify-content: center; flex: none; }
|
|
2918
|
+
.cx-cp-face > span { width: 4px; height: 7px; border-radius: 2px; background: #fff; }
|
|
2919
|
+
.cx-cp-name { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
|
|
2920
|
+
.cx-cp-t { font-size: 14px; font-weight: 600; letter-spacing: -.01em; }
|
|
2921
|
+
.cx-cp-s { display: flex; flex-direction: row; gap: 6px; align-items: center; font-size: 12px; color: var(--muted-foreground); }
|
|
2922
|
+
.cx-cp-s::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--success); }
|
|
2923
|
+
.cx-cp-log { display: flex; flex-direction: column; gap: 8px; padding: 16px; }
|
|
2924
|
+
.cx-cp-msg { max-width: 82%; padding: 9px 12px; border-radius: 16px; font-size: 13.5px; line-height: 1.4; }
|
|
2925
|
+
.cx-cp-msg[data-who="out"] { align-self: flex-end; background: var(--foreground); color: var(--background); border-bottom-right-radius: 5px; transform-origin: bottom right; }
|
|
2926
|
+
.cx-cp-msg[data-who="in"] { align-self: flex-start; background: var(--muted); border-bottom-left-radius: 5px; transform-origin: bottom left; }
|
|
2927
|
+
.cx-cp-card { align-self: flex-end; width: 82%; box-sizing: border-box; border: 1px solid var(--border); border-radius: 14px; padding: 12px; display: flex; flex-direction: row; gap: 10px; align-items: center; transform-origin: bottom right; }
|
|
2928
|
+
.cx-cp-ok { width: 30px; height: 30px; border-radius: 50%; background: var(--success-soft); color: var(--success); display: grid; place-items: center; flex: none; font-size: 15px; }
|
|
2929
|
+
.cx-cp-ct { font-size: 13px; font-weight: 600; }
|
|
2930
|
+
.cx-cp-cd { font-size: 12px; color: var(--muted-foreground); }
|
|
2931
|
+
.cx-cp-chips { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; padding: 0 16px 12px; }
|
|
2932
|
+
.cx-cp-chip { font-size: 12px; font-weight: 500; padding: 6px 10px; border-radius: 999px; border: 1px solid var(--border); white-space: nowrap; }
|
|
2933
|
+
.cx-cp-comp { margin: 0 12px 12px; display: flex; flex-direction: row; align-items: center; gap: 8px; height: 44px; padding: 0 6px 0 14px; border-radius: 12px; background: var(--muted); font-size: 13px; color: var(--muted-foreground); }
|
|
2934
|
+
.cx-cp-send { margin-left: auto; width: 32px; height: 32px; border-radius: 9px; background: var(--foreground); color: var(--background); display: grid; place-items: center; font-size: 14px; }
|
|
2935
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
2936
|
+
.cx-play[data-in] .cx-cp-msg, .cx-play[data-in] .cx-cp-card, .cx-play[data-in] .cx-cp-btns, .cx-play[data-in] .cx-cp-note { opacity: 0; animation: 12s infinite; }
|
|
2937
|
+
.cx-play[data-in] .cx-cp-face > span { animation: cx-cp-blink 5s infinite; }
|
|
2938
|
+
.cx-cp[data-in] [data-step="1"] { animation-name: cx-cp-s1; } .cx-cp[data-in] [data-step="2"] { animation-name: cx-cp-s2; }
|
|
2939
|
+
.cx-cp[data-in] [data-step="3"] { animation-name: cx-cp-s3; } .cx-cp[data-in] [data-step="4"] { animation-name: cx-cp-s4; }
|
|
2940
|
+
.cx-cp[data-in] [data-step="5"] { animation-name: cx-cp-s5; } .cx-cp[data-in] [data-step="6"] { animation-name: cx-cp-s6; }
|
|
2941
|
+
}
|
|
2942
|
+
@keyframes cx-cp-s1 { 0%, 4% { opacity: 0; transform: translateY(8px) scale(.97); } 8%, 92% { opacity: 1; transform: none; } 97%, 100% { opacity: 0; } }
|
|
2943
|
+
@keyframes cx-cp-s2 { 0%, 18% { opacity: 0; transform: translateY(8px) scale(.97); } 22%, 92% { opacity: 1; transform: none; } 97%, 100% { opacity: 0; } }
|
|
2944
|
+
@keyframes cx-cp-s3 { 0%, 32% { opacity: 0; transform: translateY(8px) scale(.97); } 36%, 92% { opacity: 1; transform: none; } 97%, 100% { opacity: 0; } }
|
|
2945
|
+
@keyframes cx-cp-s4 { 0%, 46% { opacity: 0; transform: translateY(8px) scale(.97); } 50%, 92% { opacity: 1; transform: none; } 97%, 100% { opacity: 0; } }
|
|
2946
|
+
@keyframes cx-cp-s5 { 0%, 54% { opacity: 0; transform: translateY(8px) scale(.97); } 59%, 92% { opacity: 1; transform: none; } 97%, 100% { opacity: 0; } }
|
|
2947
|
+
@keyframes cx-cp-s6 { 0%, 64% { opacity: 0; transform: translateY(8px) scale(.97); } 69%, 92% { opacity: 1; transform: none; } 97%, 100% { opacity: 0; } }
|
|
2948
|
+
@keyframes cx-cp-blink { 0%, 46%, 50%, 100% { transform: none; } 48% { transform: scaleY(.15); } }
|
|
2949
|
+
/* ProductPlay: a product sheet as a store shows it. */
|
|
2950
|
+
.cx-pdp { display: flex; flex-direction: column; width: 100%; max-width: 320px; overflow: hidden; }
|
|
2951
|
+
.cx-pdp-img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
|
|
2952
|
+
.cx-pdp-in { display: flex; flex-direction: column; gap: 12px; padding: 18px; }
|
|
2953
|
+
.cx-pdp-k { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-foreground); }
|
|
2954
|
+
.cx-pdp-t { display: flex; flex-direction: row; justify-content: space-between; align-items: baseline; gap: 12px; font-size: 19px; font-weight: 700; letter-spacing: -.02em; }
|
|
2955
|
+
.cx-pdp-t > span:last-child { font-size: 17px; white-space: nowrap; }
|
|
2956
|
+
.cx-pdp-d { font-size: 13.5px; line-height: 1.5; color: var(--muted-foreground); }
|
|
2957
|
+
.cx-pdp-opts { display: flex; flex-direction: row; gap: 8px; }
|
|
2958
|
+
.cx-pdp-opt { flex: 1; display: grid; place-items: center; height: 38px; border-radius: 10px; border: 1px solid var(--border); font-size: 13.5px; font-weight: 500; }
|
|
2959
|
+
.cx-pdp-opt[data-on="yes"] { border-color: var(--foreground); box-shadow: inset 0 0 0 1px var(--foreground); font-weight: 600; }
|
|
2960
|
+
.cx-pdp-go { display: flex; flex-direction: row; gap: 8px; margin-top: 4px; }
|
|
2961
|
+
.cx-pdp-q { display: flex; flex-direction: row; align-items: center; gap: 12px; padding: 0 12px; height: 44px; border-radius: 12px; border: 1px solid var(--border); font-weight: 600; }
|
|
2962
|
+
.cx-pdp-q svg { width: 14px; height: 14px; color: var(--muted-foreground); }
|
|
2963
|
+
.cx-pdp-add { flex: 1; display: grid; place-items: center; height: 44px; border-radius: 12px; background: var(--foreground); color: var(--background); font-size: 14px; font-weight: 600; white-space: nowrap; padding: 0 10px; }
|
|
2964
|
+
/* BioPlay: a social profile as Instagram draws it. */
|
|
2965
|
+
.cx-bio { display: flex; flex-direction: column; gap: 10px; width: 100%; max-width: 340px; padding: 18px; background: #fff; color: #000; font-family: var(--font-sans); }
|
|
2966
|
+
.cx-bio-top { display: flex; flex-direction: row; align-items: center; gap: 14px; }
|
|
2967
|
+
.cx-bio-av { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; flex: none; box-shadow: 0 0 0 2px #fff, 0 0 0 4px #E1306C; }
|
|
2968
|
+
.cx-bio-n { display: flex; flex-direction: column; gap: 2px; font-size: 13.5px; color: #737373; }
|
|
2969
|
+
.cx-bio-h { font-size: 17px; font-weight: 700; color: #000; }
|
|
2970
|
+
.cx-bio-text { font-size: 14px; line-height: 1.45; }
|
|
2971
|
+
.cx-bio-link { display: flex; flex-direction: row; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; color: #00376B; }
|
|
2972
|
+
.cx-bio-link svg { width: 14px; height: 14px; }
|
|
2973
|
+
.cx-bio-btns { display: flex; flex-direction: row; gap: 8px; margin-top: 4px; }
|
|
2974
|
+
.cx-bio-btns > span { flex: 1; display: grid; place-items: center; height: 34px; border-radius: 8px; background: #EFEFEF; font-size: 14px; font-weight: 600; }
|
|
2975
|
+
.cx-bio-btns > span[data-tone="primary"] { background: #0064E0; color: #fff; }
|
|
2976
|
+
/* DeviceFrame with href: the whole device is the link, it lifts a little under the pointer and the focus ring hugs it.
|
|
2977
|
+
With shot: the screen's picture is its background, and the screen is not painted (so the picture not fetched) until
|
|
2978
|
+
it comes near the viewport. */
|
|
2979
|
+
.cx-device-link { position: absolute; inset: 0; z-index: 4; border-radius: inherit; }
|
|
2980
|
+
.cx-device-link:focus-visible { outline: 3px solid var(--ring, #6B46F2); outline-offset: 4px; }
|
|
2981
|
+
.cx-device[data-link="true"] { transition: transform .25s cubic-bezier(.2, .8, .2, 1); }
|
|
2982
|
+
@media (hover: hover) { .cx-device[data-link="true"]:has(> .cx-device-link:hover) { transform: translateY(-4px); } }
|
|
2983
|
+
@media (prefers-reduced-motion: reduce) { .cx-device[data-link="true"] { transition: none; transform: none !important; } }
|
|
2984
|
+
.cx-device[data-shot="true"] > .cx-device-screen { background: #111; content-visibility: auto; }
|
|
2985
|
+
.cx-device-shot { position: absolute; inset: 0; background: var(--shot) top center / cover no-repeat; }
|
|
2986
|
+
/* ChatPlay's phone: a column holding the frame (the one phone rule above) */
|
|
2987
|
+
.cx-cp-phone[data-skin] { display: flex; flex-direction: column; min-width: 0; }
|
|
2988
|
+
.cx-cp-frame { position: relative; display: block; width: 100%; }
|
|
2989
|
+
.cx-cp-screen { display: block; }
|
|
2990
|
+
/* a phone with its name under it: DeviceFrame + two spans in .cx-mk-store */
|
|
2991
|
+
.style-nova .cx-mk-store > .cx-device { --dw: 100%; }
|
|
2992
|
+
.style-nova .cx-mk-phrow { width: 100%; }
|
|
2993
|
+
.style-nova .cx-mk-phrow .cx-mk-store { max-width: 270px; }
|
|
2994
|
+
.style-nova .cx-mk-phrow .cx-car { max-width: none; }
|
|
2995
|
+
.style-nova .cx-mk-phrow .cx-car-slide { display: flex; justify-content: center; padding: 8px 14px 28px; }
|
|
2996
|
+
@media (max-width: 900px) { .style-nova .cx-mk-phrow .cx-car-slide .cx-mk-store { max-width: 280px; } }
|
|
2997
|
+
/* sixteen stores make sixteen dots, two rows on a phone: there the swipe and the arrows are the way through */
|
|
2998
|
+
@media (max-width: 600px) { .style-nova .cx-mk-phrow .cx-car-ind { visibility: hidden; } }
|
|
2999
|
+
.style-nova .cx-mk-phones { --row: min(1200px, calc(100vw - 48px)); width: var(--row); margin-inline: calc((100% - var(--row)) / 2); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px; justify-items: center; padding-block: 8px 4px; }
|
|
3000
|
+
@media (max-width: 900px) {
|
|
3001
|
+
.style-nova .cx-mk-phones { --row: 100vw; display: flex; flex-direction: row; overflow-x: auto; scroll-snap-type: x mandatory; gap: 20px; padding: 12px 24px 16px; scrollbar-width: none; }
|
|
3002
|
+
.style-nova .cx-mk-phones > .cx-mk-store { flex: 0 0 min(80%, 320px); scroll-snap-align: center; }
|
|
3003
|
+
}
|
|
3004
|
+
/* InboxPlay: a messages list as the channel's app draws it (Instagram by default). */
|
|
3005
|
+
.cx-ip { display: flex; flex-direction: column; background: #fff; color: #000; border-radius: 22px; font-family: var(--font-sans); padding-bottom: 8px; }
|
|
3006
|
+
.cx-ip-head { display: flex; flex-direction: row; align-items: center; gap: 4px; padding: 16px 16px 10px; }
|
|
3007
|
+
.cx-ip-t { font-size: 18px; font-weight: 700; letter-spacing: -.01em; }
|
|
3008
|
+
.cx-ip-head > svg { width: 16px; height: 16px; }
|
|
3009
|
+
.cx-ip-ic { margin-left: auto; display: grid; place-items: center; }
|
|
3010
|
+
.cx-ip-ic svg { width: 22px; height: 22px; }
|
|
3011
|
+
.cx-ip-tabs { display: flex; flex-direction: row; gap: 18px; padding: 4px 16px 10px; font-size: 14px; font-weight: 600; color: #737373; }
|
|
3012
|
+
.cx-ip-tabs [data-on] { color: #000; }
|
|
3013
|
+
.cx-ip-tabs > span:last-child { color: #0064E0; margin-left: auto; }
|
|
3014
|
+
.cx-ip-list { display: flex; flex-direction: column; }
|
|
3015
|
+
.cx-ip-row { display: flex; flex-direction: row; align-items: center; gap: 12px; padding: 8px 16px; }
|
|
3016
|
+
.cx-ip-av { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; flex: none; }
|
|
3017
|
+
.cx-ip-init { display: grid; place-items: center; background: linear-gradient(135deg, #FEDA75, #FA7E1E 30%, #D62976 60%, #962FBF 85%, #4F5BD5); color: #fff; font-size: 19px; font-weight: 600; }
|
|
3018
|
+
.cx-ip-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
|
|
3019
|
+
.cx-ip-n { font-size: 14px; font-weight: 400; }
|
|
3020
|
+
.cx-ip-l { display: flex; flex-direction: row; gap: 4px; font-size: 14px; color: #737373; min-width: 0; }
|
|
3021
|
+
.cx-ip-m { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
|
|
3022
|
+
.cx-ip-time { white-space: nowrap; flex: none; }
|
|
3023
|
+
.cx-ip-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
|
|
3024
|
+
.cx-ip-row[data-unread="yes"] .cx-ip-n, .cx-ip-row[data-unread="yes"] .cx-ip-m { font-weight: 700; color: #000; }
|
|
3025
|
+
.cx-ip-row[data-unread="yes"] .cx-ip-dot { background: #0095F6; }
|
|
3026
|
+
.cx-ip[data-skin="whatsapp"] { font-family: Roboto, var(--font-sans); }
|
|
3027
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-init { background: #DFE5E7; color: #fff; }
|
|
3028
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-n { font-size: 16px; font-weight: 500; color: #111B21; }
|
|
3029
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-row[data-unread="yes"] .cx-ip-dot { width: 20px; height: 20px; background: #25D366; }
|
|
3030
|
+
/* ChatPlay skins: the conversation as the channel's own app draws it on the shop's phone (Android, the one most of the
|
|
3031
|
+
region holds). Their colours are the apps' own, so they live here as literals, not tokens. */
|
|
3032
|
+
.cx-cp-msg { display: block; }
|
|
3033
|
+
.cx-cp-time { display: none; }
|
|
3034
|
+
.cx-cp-day, .cx-cp-btns { display: none; }
|
|
3035
|
+
.cx-cp-photo { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; flex: none; }
|
|
3036
|
+
.cx-cp[data-skin] { --cp-bg: #EFEAE2; --cp-head: #008069; --cp-head-fg: #fff; --cp-in: #fff; --cp-out: #D9FDD3; --cp-fg: #111B21; --cp-meta: #54656F; --cp-tick: #53BDEB; --cp-act: #00A884; --cp-link: #027EB5; --cp-comp: #fff; font-family: Roboto, var(--font-sans); }
|
|
3037
|
+
.cx-cp[data-skin][data-theme="dark"] { --cp-bg: #0B141A; --cp-head: #1F2C34; --cp-head-fg: #E9EDEF; --cp-in: #1F2C34; --cp-out: #005C4B; --cp-fg: #E9EDEF; --cp-meta: #AEBAC1; --cp-link: #53BDEB; --cp-comp: #1F2C34; }
|
|
3038
|
+
.cx-cp[data-skin="telegram"] { --cp-bg: linear-gradient(160deg, #D5E6B5, #A9CC8C 55%, #8FBF83); --cp-head: #46719A; --cp-in: #fff; --cp-out: #EFFDDE; --cp-fg: #000; --cp-meta: #66737E; --cp-tick: #4FAE4E; --cp-act: #50A2E9; --cp-link: #3A8CDA; font-family: var(--font-sans); }
|
|
3039
|
+
.cx-cp[data-skin="instagram"] { --cp-bg: #fff; --cp-head: #fff; --cp-head-fg: #000; --cp-in: #EFEFEF; --cp-out: linear-gradient(180deg, #A033FF, #5B51F8 60%, #3F7BF7); --cp-fg: #000; --cp-meta: #737373; --cp-act: #0064E0; --cp-link: #0064E0; --cp-comp: #fff; font-family: var(--font-sans); }
|
|
3040
|
+
.cx-cp[data-skin] { background: var(--cp-bg); color: var(--cp-fg); border-radius: 22px; }
|
|
3041
|
+
.cx-cp[data-skin] .cx-cp-head { background: var(--cp-head); color: var(--cp-head-fg); border-bottom: 0; padding: 12px 14px; }
|
|
3042
|
+
.cx-cp[data-skin="instagram"] .cx-cp-head { border-bottom: 1px solid #DBDBDB; }
|
|
3043
|
+
.cx-cp[data-skin="instagram"] .cx-cp-s { color: #737373; opacity: 1; }
|
|
3044
|
+
.cx-cp[data-skin] .cx-cp-s { color: var(--cp-head-fg); opacity: .94; }
|
|
3045
|
+
.cx-cp[data-skin] .cx-cp-s::before { display: none; }
|
|
3046
|
+
.cx-cp[data-skin="instagram"] .cx-cp-photo { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #E1306C; }
|
|
3047
|
+
.cx-cp[data-skin] .cx-cp-log { gap: 4px; padding: 12px 10px 14px; }
|
|
3048
|
+
.cx-cp[data-skin] .cx-cp-msg { position: relative; max-width: 80%; padding: 6px 8px 7px 9px; border-radius: 8px; font-size: 14px; line-height: 1.35; background: var(--cp-in); color: var(--cp-fg); box-shadow: 0 1px .5px rgb(11 20 26 / .13); }
|
|
3049
|
+
.cx-cp[data-skin] .cx-cp-msg[data-who="out"] { background: var(--cp-out); border-bottom-right-radius: 8px; border-top-right-radius: 0; }
|
|
3050
|
+
.cx-cp[data-skin] .cx-cp-msg[data-who="in"] { border-bottom-left-radius: 8px; border-top-left-radius: 0; }
|
|
3051
|
+
.cx-cp[data-skin] .cx-cp-msg[data-who="in"] + .cx-cp-msg[data-who="in"], .cx-cp[data-skin] .cx-cp-msg[data-who="out"] + .cx-cp-msg[data-who="out"] { border-radius: 8px; }
|
|
3052
|
+
.cx-cp[data-skin] .cx-cp-time { display: inline-flex; flex-direction: row; align-items: center; gap: 3px; float: right; margin: 6px 0 -4px 10px; font-size: 11px; line-height: 1; color: var(--cp-meta); }
|
|
3053
|
+
.cx-cp[data-skin] .cx-cp-time svg { width: 15px; height: 15px; color: var(--cp-tick); }
|
|
3054
|
+
.cx-cp[data-skin] .cx-cp-msg[data-who="in"] .cx-cp-time svg { display: none; }
|
|
3055
|
+
.cx-cp[data-skin][data-theme="dark"] .cx-cp-msg[data-who="out"] .cx-cp-time { color: rgb(255 255 255 / .78); }
|
|
3056
|
+
.cx-cp[data-skin] .cx-cp-day { display: block; align-self: center; margin: 2px 0 6px; padding: 5px 12px; border-radius: 8px; background: var(--cp-in); color: var(--cp-meta); font-size: 12px; box-shadow: 0 1px .5px rgb(11 20 26 / .13); }
|
|
3057
|
+
.cx-cp[data-skin] .cx-cp-btns { display: flex; flex-direction: column; gap: 2px; align-self: flex-end; width: min(80%, 300px); margin-top: -2px; }
|
|
3058
|
+
.cx-cp[data-skin] .cx-cp-msg[data-who="in"] + .cx-cp-btns { align-self: flex-start; }
|
|
3059
|
+
.cx-cp[data-skin] .cx-cp-btn { display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 6px; height: 38px; border-radius: 8px; background: var(--cp-in); color: var(--cp-link); font-size: 14px; font-weight: 500; box-shadow: 0 1px .5px rgb(11 20 26 / .13); }
|
|
3060
|
+
.cx-cp[data-skin] .cx-cp-btn svg { width: 15px; height: 15px; }
|
|
3061
|
+
.cx-cp[data-skin] .cx-cp-card { background: var(--cp-out); border: 0; border-radius: 8px; box-shadow: 0 1px .5px rgb(11 20 26 / .13); width: 80%; }
|
|
3062
|
+
.cx-cp[data-skin] .cx-cp-cd { color: var(--cp-meta); }
|
|
3063
|
+
.cx-cp[data-skin] .cx-cp-chip { background: var(--cp-in); border: 0; color: var(--cp-link); box-shadow: 0 1px .5px rgb(11 20 26 / .13); }
|
|
3064
|
+
.cx-cp[data-skin] .cx-cp-comp { margin: 0 8px 10px; height: 46px; border-radius: 999px; background: var(--cp-comp); color: var(--cp-meta); padding: 0 4px 0 18px; font-size: 15px; }
|
|
3065
|
+
.cx-cp[data-skin] .cx-cp-send { width: 40px; height: 40px; border-radius: 50%; background: var(--cp-act); color: #fff; }
|
|
3066
|
+
.cx-cp[data-skin="instagram"] .cx-cp-log { gap: 3px; padding: 14px 12px; }
|
|
3067
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg { padding: 9px 14px; border-radius: 22px; box-shadow: none; font-size: 14.5px; }
|
|
3068
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="out"] { color: #fff; }
|
|
3069
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="in"] { border-radius: 22px; }
|
|
3070
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="out"] { border-radius: 22px; }
|
|
3071
|
+
.cx-cp[data-skin="instagram"] .cx-cp-time { display: none; }
|
|
3072
|
+
.cx-cp[data-skin="instagram"] .cx-cp-day { background: none; box-shadow: none; font-size: 12px; font-weight: 600; }
|
|
3073
|
+
.cx-cp[data-skin="instagram"] .cx-cp-btn { border: 1px solid #DBDBDB; box-shadow: none; border-radius: 12px; background: #fff; }
|
|
3074
|
+
.cx-cp[data-skin="instagram"] .cx-cp-comp { border: 1px solid #DBDBDB; }
|
|
3075
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg { border-radius: 14px; box-shadow: 0 1px 1px rgb(0 0 0 / .12); }
|
|
3076
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"] { border-bottom-right-radius: 4px; border-top-right-radius: 14px; }
|
|
3077
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="in"] { border-bottom-left-radius: 4px; border-top-left-radius: 14px; }
|
|
3078
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"] .cx-cp-time { color: #2F7D2A; }
|
|
3079
|
+
.cx-cp[data-skin="telegram"] .cx-cp-day { background: rgb(0 0 0 / .42); color: #fff; box-shadow: none; border-radius: 999px; }
|
|
3080
|
+
.cx-cp[data-skin="telegram"] .cx-cp-btn { background: rgb(0 0 0 / .42); color: #fff; box-shadow: none; }
|
|
3081
|
+
.cx-cp[data-skin="telegram"] .cx-cp-comp { border-radius: 0; margin: 0; background: #fff; height: 50px; }
|
|
3082
|
+
.cx-cp[data-skin="telegram"] .cx-cp-send { background: none; color: #50A2E9; }
|
|
3083
|
+
/* EACH APP'S OWN CHROME. The header carries the app's back arrow and its call buttons; the composer is the app's own:
|
|
3084
|
+
Instagram's blue camera with mic and gallery, WhatsApp's white field (emoji, clip, camera) beside the green mic,
|
|
3085
|
+
Telegram's flat bar. ChatPlayNote is the small line under a message («Visto», who answered). */
|
|
3086
|
+
.cx-cp-back, .cx-cp-acts, .cx-cp-cam, .cx-cp-emo, .cx-cp-tools, .cx-cp-igtools, .cx-cp-mic, .cx-cp-note { display: none; }
|
|
3087
|
+
.cx-cp-ring { display: contents; }
|
|
3088
|
+
.cx-cp-ph { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
3089
|
+
.cx-cp[data-skin] .cx-cp-back { display: grid; margin-left: -4px; }
|
|
3090
|
+
.cx-cp[data-skin] .cx-cp-back svg { width: 22px; height: 22px; }
|
|
3091
|
+
.cx-cp[data-skin] .cx-cp-name { flex: 1; }
|
|
3092
|
+
.cx-cp[data-skin] .cx-cp-acts { display: flex; gap: 18px; }
|
|
3093
|
+
.cx-cp[data-skin] .cx-cp-acts svg { width: 21px; height: 21px; }
|
|
3094
|
+
.cx-cp[data-skin] .cx-cp-note { display: block; align-self: flex-end; font-size: 11px; color: var(--cp-meta); margin: 1px 4px 3px; }
|
|
3095
|
+
.cx-cp[data-skin="instagram"] .cx-cp-ring { display: grid; padding: 2px; border-radius: 50%; background: linear-gradient(45deg, #FEDA75, #FA7E1E 30%, #D62976 60%, #962FBF 85%, #4F5BD5); flex: none; }
|
|
3096
|
+
.cx-cp[data-skin="instagram"] .cx-cp-photo { width: 32px; height: 32px; box-shadow: none; border: 2px solid #fff; }
|
|
3097
|
+
.cx-cp[data-skin="instagram"] .cx-cp-acts { gap: 16px; }
|
|
3098
|
+
.cx-cp[data-skin="instagram"] .cx-cp-comp { background: #EFEFEF; border: 0; height: 46px; padding: 0 14px 0 6px; gap: 12px; color: #636363; }
|
|
3099
|
+
.cx-cp[data-skin="instagram"] .cx-cp-cam { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #3797F0; color: #fff; flex: none; }
|
|
3100
|
+
.cx-cp[data-skin="instagram"] .cx-cp-cam svg { width: 18px; height: 18px; }
|
|
3101
|
+
.cx-cp[data-skin="instagram"] .cx-cp-igtools { display: flex; gap: 14px; color: #000; flex: none; }
|
|
3102
|
+
.cx-cp[data-skin="instagram"] .cx-cp-igtools svg { width: 22px; height: 22px; }
|
|
3103
|
+
.cx-cp[data-skin="instagram"] .cx-cp-send { display: none; }
|
|
3104
|
+
.cx-cp[data-skin="instagram"] .cx-cp-note { color: #737373; }
|
|
3105
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-comp { position: relative; background: var(--cp-comp); margin: 0 60px 10px 8px; padding: 0 12px; gap: 12px; height: 46px; box-shadow: 0 1px .5px rgb(11 20 26 / .13); }
|
|
3106
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-emo, .cx-cp[data-skin="whatsapp"] .cx-cp-tools { display: flex; gap: 16px; flex: none; }
|
|
3107
|
+
.cx-cp[data-skin="whatsapp"] :is(.cx-cp-emo, .cx-cp-tools) svg { width: 22px; height: 22px; }
|
|
3108
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-send { display: none; }
|
|
3109
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-mic { display: grid; place-items: center; position: absolute; right: -54px; top: 0; width: 46px; height: 46px; border-radius: 50%; background: #00A884; color: #fff; }
|
|
3110
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-mic svg { width: 22px; height: 22px; }
|
|
3111
|
+
.cx-cp[data-skin="telegram"] .cx-cp-comp { padding: 0 14px; gap: 14px; color: #8A9AA8; border-top: 1px solid #E9EEF2; }
|
|
3112
|
+
.cx-cp[data-skin="telegram"] .cx-cp-emo, .cx-cp[data-skin="telegram"] .cx-cp-mic { display: grid; flex: none; }
|
|
3113
|
+
.cx-cp[data-skin="telegram"] .cx-cp-tools { display: flex; flex: none; }
|
|
3114
|
+
.cx-cp[data-skin="telegram"] .cx-cp-tools > :nth-child(n+2) { display: none; }
|
|
3115
|
+
.cx-cp[data-skin="telegram"] :is(.cx-cp-emo, .cx-cp-tools, .cx-cp-mic) svg { width: 22px; height: 22px; }
|
|
3116
|
+
.cx-cp[data-skin="telegram"] .cx-cp-send { display: none; }
|
|
3117
|
+
.cx-cp[data-skin="telegram"] .cx-cp-btns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; width: 100%; box-sizing: border-box; }
|
|
3118
|
+
.cx-cp[data-skin="telegram"] .cx-cp-btn { min-width: 0; padding: 0 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
3119
|
+
.cx-cp[data-skin="telegram"] .cx-cp-btn svg { display: none; }
|
|
3120
|
+
.cx-cp[data-skin="telegram"] .cx-cp-note { color: rgb(255 255 255 / .9); text-shadow: 0 1px 2px rgb(0 0 0 / .3); }
|
|
3121
|
+
|
|
3122
|
+
/* INBOXES AS THE APPS DRAW THEM. Instagram: search, notes, Principal · General … Solicitudes, story rings, the
|
|
3123
|
+
camera on each row. WhatsApp Business: its green title, filter chips, the hour on the right, the unread count and
|
|
3124
|
+
who answered. */
|
|
3125
|
+
.cx-ip-search { margin: 0 16px 10px; display: flex; flex-direction: row; align-items: center; gap: 8px; height: 36px; padding: 0 12px; border-radius: 10px; background: #EFEFEF; color: #636363; font-size: 15px; }
|
|
3126
|
+
.cx-ip-search svg { width: 16px; height: 16px; }
|
|
3127
|
+
.cx-ip-notes { display: flex; flex-direction: row; gap: 12px; padding: 22px 16px 10px; overflow: hidden; }
|
|
3128
|
+
.cx-ip-note { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; width: 66px; flex: none; font-size: 11px; color: #737373; }
|
|
3129
|
+
.cx-ip-note .cx-ip-av { width: 62px; height: 62px; }
|
|
3130
|
+
.cx-ip-bub { position: absolute; top: -16px; left: 50%; transform: translateX(-50%); z-index: 1; background: #fff; color: #000; font-size: 10.5px; line-height: 1.3; padding: 4px 8px; border-radius: 12px; box-shadow: 0 1px 4px rgb(0 0 0 / .16); white-space: nowrap; max-width: 92px; overflow: hidden; text-overflow: ellipsis; }
|
|
3131
|
+
.cx-ip-nn { max-width: 66px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
3132
|
+
.cx-ip-tabs .cx-ip-req { margin-left: auto; color: #0064E0; }
|
|
3133
|
+
.cx-ip-avw { position: relative; display: grid; flex: none; }
|
|
3134
|
+
.cx-ip-row[data-ring="yes"] .cx-ip-avw { padding: 2px; border-radius: 50%; background: linear-gradient(45deg, #FEDA75, #FA7E1E 30%, #D62976 60%, #962FBF 85%, #4F5BD5); }
|
|
3135
|
+
.cx-ip-row[data-ring="yes"] .cx-ip-av { width: 50px; height: 50px; border: 2px solid #fff; }
|
|
3136
|
+
.cx-ip-top { display: flex; flex-direction: row; justify-content: space-between; align-items: baseline; gap: 8px; min-width: 0; }
|
|
3137
|
+
.cx-ip-tr { display: none; font-size: 12px; color: #667781; flex: none; }
|
|
3138
|
+
.cx-ip-cam { display: none; }
|
|
3139
|
+
.cx-ip[data-skin="instagram"] .cx-ip-cam { display: grid; color: #737373; flex: none; }
|
|
3140
|
+
.cx-ip[data-skin="instagram"] .cx-ip-cam svg { width: 23px; height: 23px; }
|
|
3141
|
+
.cx-ip-tag { flex: none; font-size: 11px; font-weight: 600; color: #6B46F2; background: #EFEAFE; border-radius: 6px; padding: 1px 6px; }
|
|
3142
|
+
.cx-ip-badge { margin-left: auto; flex: none; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: #25D366; color: #fff; font-size: 11px; font-weight: 700; display: grid; place-items: center; }
|
|
3143
|
+
.cx-ip-filters { display: flex; flex-direction: row; gap: 6px; padding: 2px 16px 8px; }
|
|
3144
|
+
.cx-ip-filter { font-size: 13px; padding: 5px 12px; border-radius: 16px; background: #F0F2F5; color: #54656F; }
|
|
3145
|
+
.cx-ip-filter[data-on="yes"] { background: #E7FCE3; color: #008069; font-weight: 600; }
|
|
3146
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-t { color: #008069; font-size: 22px; }
|
|
3147
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-tr { display: block; }
|
|
3148
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-time { display: none; }
|
|
3149
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-tx { border-bottom: 1px solid #F0F2F5; padding-bottom: 10px; }
|
|
3150
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-row { align-items: flex-start; padding-top: 10px; padding-bottom: 0; }
|
|
3151
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-av { width: 48px; height: 48px; }
|
|
3152
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-row[data-unread="yes"] .cx-ip-tr { color: #1FA855; font-weight: 600; }
|
|
3153
|
+
.cx-ip[data-skin="whatsapp"] .cx-ip-row[data-unread="yes"] .cx-ip-m { font-weight: 400; color: #667781; }
|
|
3154
|
+
.cx-ip-row:has(.cx-ip-badge) .cx-ip-dot { display: none; }
|
|
3155
|
+
/* names, titles and chips stay on one line however narrow the inbox (a step column, a phone) */
|
|
3156
|
+
.cx-ip-top > .cx-ip-n { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
3157
|
+
.cx-ip-t { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
|
|
3158
|
+
.cx-ip-filters { flex-wrap: nowrap; overflow: hidden; }
|
|
3159
|
+
.cx-ip-filter { white-space: nowrap; flex: none; }
|
|
3160
|
+
.cx-mk-step-vis .cx-ip[data-skin="whatsapp"] .cx-ip-t { font-size: 18px; }
|
|
3161
|
+
|
|
3162
|
+
/* OrderPlay (9s) - BookingPlay's twin */
|
|
3163
|
+
.cx-play-face { object-fit: cover; background: var(--muted); box-shadow: 0 0 0 1px rgb(11 11 13 / .06); }
|
|
3164
|
+
.cx-play { user-select: none; }
|
|
3165
|
+
.cx-odp { padding: 16px; display: flex; flex-direction: column; gap: 14px; }
|
|
3166
|
+
.cx-odp-who, .cx-odp-item, .cx-odp-row { display: flex; flex-direction: row; gap: 10px; align-items: center; }
|
|
3167
|
+
.cx-odp-av { width: 36px; height: 36px; border-radius: 50%; background: var(--muted); display: grid; place-items: center; flex: none; font-size: 14px; font-weight: 600; }
|
|
3168
|
+
.cx-odp-name { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
|
|
3169
|
+
.cx-odp-t { font-size: 14px; font-weight: 600; letter-spacing: -.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
3170
|
+
.cx-odp-s { font-size: 12.5px; color: var(--muted-foreground); white-space: nowrap; }
|
|
3171
|
+
.cx-odp-badge { margin-left: auto; flex: none; display: grid; overflow: hidden; height: 24px; border-radius: 999px; font-size: 12px; font-weight: 600; background: var(--selected-soft); color: var(--selected); }
|
|
3172
|
+
.cx-odp-badge > span { grid-area: 1 / 1; padding: 0 10px; display: grid; place-items: center; }
|
|
3173
|
+
.cx-odp-b2 { opacity: 0; transform: translateY(100%); background: var(--warning-soft); color: color-mix(in oklab, var(--warning) 62%, black); }
|
|
3174
|
+
.cx-odp-items { display: flex; flex-direction: column; gap: 8px; }
|
|
3175
|
+
.cx-odp-ph { width: 44px; height: 44px; border-radius: 10px; object-fit: cover; flex: none; background: var(--muted); }
|
|
3176
|
+
.cx-odp-price { font-size: 13.5px; font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
3177
|
+
.cx-odp-rows { display: flex; flex-direction: column; gap: 8px; padding-top: 12px; border-top: 1px solid var(--border); }
|
|
3178
|
+
.cx-odp-row { font-size: 13.5px; }
|
|
3179
|
+
.cx-odp-row .mu-icon, .cx-odp-row svg { color: var(--muted-foreground); font-size: 16px; }
|
|
3180
|
+
.cx-odp-rt { color: var(--muted-foreground); }
|
|
3181
|
+
.cx-odp-total { margin-left: auto; font-weight: 700; font-size: 15px; }
|
|
3182
|
+
.cx-odp-go { position: relative; height: 44px; border-radius: 10px; background: var(--foreground); color: var(--background); display: grid; overflow: hidden; font-size: 14px; font-weight: 600; }
|
|
3183
|
+
.cx-odp-go > span { grid-area: 1 / 1; display: grid; place-items: center; }
|
|
3184
|
+
.cx-odp-g2 { opacity: 0; transform: translateY(100%); }
|
|
3185
|
+
.cx-odp-go::after { content: ""; position: absolute; left: 50%; top: 50%; width: 26px; height: 26px; margin: -13px 0 0 -13px; border-radius: 50%; background: rgb(255 255 255 / .45); opacity: 0; }
|
|
3186
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
3187
|
+
.cx-play[data-in] .cx-odp-go { animation: cx-bkp-press 9s infinite; }
|
|
3188
|
+
.cx-play[data-in] .cx-odp-go::after { animation: cx-bkp-tap3 9s infinite; }
|
|
3189
|
+
.cx-play[data-in] .cx-odp-go[data-next] .cx-odp-g1, .cx-play[data-in] .cx-odp-badge[data-next] .cx-odp-b1 { animation: cx-odp-out 9s infinite; }
|
|
3190
|
+
.cx-play[data-in] .cx-odp-go[data-next] .cx-odp-g2, .cx-play[data-in] .cx-odp-badge[data-next] .cx-odp-b2 { animation: cx-odp-in 9s infinite; }
|
|
3191
|
+
}
|
|
3192
|
+
@keyframes cx-odp-out { 0%, 42% { opacity: 1; transform: none; } 47%, 88% { opacity: 0; transform: translateY(-100%); } 94%, 100% { opacity: 1; transform: none; } }
|
|
3193
|
+
@keyframes cx-odp-in { 0%, 42% { opacity: 0; transform: translateY(100%); } 47%, 88% { opacity: 1; transform: none; animation-timing-function: cubic-bezier(.23, 1, .32, 1); } 94%, 100% { opacity: 0; transform: translateY(100%); } }
|
|
3194
|
+
|
|
3195
|
+
/* a play fills its bento cell: the two twins end at the same line */
|
|
3196
|
+
.cx-bento-cell .cx-play { flex: 1; }
|
|
3197
|
+
/* the play's wrapper (a page's per-language `when`) grows too, so a short play reaches the line a tall one sets */
|
|
3198
|
+
.cx-mk-widget > :only-child:not(.cx-play) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
|
|
3199
|
+
/* stacked on a phone the cells have no common row: the booking and the order share one floor */
|
|
3200
|
+
@media (max-width: 640px) { .cx-bento-cell :is(.cx-bkp, .cx-odp) { min-height: 380px; } }
|
|
3201
|
+
.cx-bento-cell :is(.cx-bkp-go, .cx-odp-go) { margin-top: auto; }
|
|
3202
|
+
/* a card resting in a bento cell takes the plays' sheet, so the cells read as one family */
|
|
3203
|
+
.cx-bento-cell .cn-card { border-color: transparent; box-shadow: 0 1px 2px rgb(11 11 13 / .06), 0 12px 32px -16px rgb(11 11 13 / .18); }
|
|
3204
|
+
|
|
3205
|
+
/* Buttons, comfortable: the same shadcn sizes one step taller (sm 32 · default 40 · lg 44), for a site or a
|
|
3206
|
+
touch-first app. Set data-density="comfortable" on any container. */
|
|
3207
|
+
[data-density="comfortable"] .cn-button-size-sm { height: 32px; padding-inline: 12px; font-size: 13px; }
|
|
3208
|
+
[data-density="comfortable"] .cn-button-size-default { height: 40px; padding-inline: 16px; border-radius: 10px; }
|
|
3209
|
+
[data-density="comfortable"] .cn-button-size-lg { height: 44px; padding-inline: 18px; border-radius: 10px; font-size: 15px; }
|
|
3210
|
+
[data-density="comfortable"] .cn-button-size-icon-sm { width: 32px; height: 32px; }
|
|
3211
|
+
[data-density="comfortable"] .cn-button-size-icon { width: 40px; height: 40px; }
|
|
3212
|
+
/* DayPlan on a narrow card: the detail gives way first, then the hour column tightens */
|
|
3213
|
+
.cx-dp { container-type: inline-size; }
|
|
3214
|
+
@container (max-width: 420px) {
|
|
3215
|
+
/* the name on its own line, the service under it with the tag at its right: nothing hidden, nothing cut */
|
|
3216
|
+
.cx-dp-row, .cx-dp-now { grid-template-columns: 58px 12px minmax(0, 1fr); gap: 8px; }
|
|
3217
|
+
.cx-dp-list::before { left: 71.5px; }
|
|
3218
|
+
.cx-dp-time { font-size: 12px; }
|
|
3219
|
+
.cx-dp-body { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 8px; row-gap: 3px; padding-block: 7px; }
|
|
3220
|
+
.cx-dp-who { grid-column: 1 / -1; overflow: hidden; text-overflow: ellipsis; }
|
|
3221
|
+
.cx-dp-what { grid-column: 1; }
|
|
3222
|
+
.cx-dp-tag { grid-column: 2; margin-left: 0; justify-self: end; }
|
|
3223
|
+
}
|
|
3224
|
+
|
|
3225
|
+
|
|
3226
|
+
/* Accordion on the native <details> (muten `Details`): no state to own, and the answers are in the HTML even closed
|
|
3227
|
+
(a search engine reads them). Same look as AccordionItem, sizes included; the chevron is a mask, so it takes the
|
|
3228
|
+
text's colour. Details "¿…?" group("faq") class("cn-accordion-item") { Text "…" class("cn-accordion-content-inner") } */
|
|
3229
|
+
.cn-accordion > details.cn-accordion-item > summary { list-style: none; display: flex; flex-direction: row; align-items: center; gap: 12px; cursor: pointer; padding-block: 10px; font-size: 14px; font-weight: 500; border-radius: 8px; outline: none; }
|
|
3230
|
+
.cn-accordion > details.cn-accordion-item > summary::-webkit-details-marker { display: none; }
|
|
3231
|
+
.cn-accordion > details.cn-accordion-item > summary::after { content: ""; margin-left: auto; flex: none; width: 16px; height: 16px; background: var(--muted-foreground); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat; transition: transform 200ms ease; }
|
|
3232
|
+
.cn-accordion > details.cn-accordion-item[open] > summary::after { transform: rotate(180deg); }
|
|
3233
|
+
.cn-accordion > details.cn-accordion-item > summary:hover { text-decoration: underline; text-underline-offset: 3px; }
|
|
3234
|
+
.cn-accordion > details.cn-accordion-item > summary:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }
|
|
3235
|
+
.cn-accordion > details.cn-accordion-item > .cn-accordion-content-inner { margin: 0; padding-bottom: 10px; font-size: 14px; }
|
|
3236
|
+
.style-nova .cn-accordion[data-size="lg"] > details.cn-accordion-item > summary { padding-block: 22px; font-size: 17px; font-weight: 600; letter-spacing: -0.01em; }
|
|
3237
|
+
.style-nova .cn-accordion[data-size="lg"] > details.cn-accordion-item > summary::after { width: 18px; height: 18px; }
|
|
3238
|
+
.style-nova .cn-accordion[data-size="lg"] > details.cn-accordion-item > .cn-accordion-content-inner { padding-bottom: 22px; font-size: 15.5px; line-height: 1.65; max-width: 680px; color: var(--muted-foreground); }
|
|
3239
|
+
/* The native accordion opens and closes to its content's height (browsers with ::details-content; the rest snap). */
|
|
3240
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
3241
|
+
.cn-accordion > details.cn-accordion-item { interpolate-size: allow-keywords; }
|
|
3242
|
+
.cn-accordion > details.cn-accordion-item::details-content { height: 0; overflow: clip; transition: height 200ms cubic-bezier(.23, 1, .32, 1), content-visibility 200ms allow-discrete; }
|
|
3243
|
+
.cn-accordion > details.cn-accordion-item[open]::details-content { height: auto; }
|
|
3244
|
+
}
|
|
3245
|
+
|
|
3246
|
+
/* ══ MARKETING PAGES (cx-mk-*) and DOCUMENTS (cx-doc-*): the system a site's pages are built on, from the Storio
|
|
3247
|
+
landing. Type (cx-mk-h1/h2/h3, cx-mk-lead, cx-mk-eyebrow, cx-mk-soft), sections (cx-mk-sec, cx-mk-col, cx-mk-head), the split
|
|
3248
|
+
hero (cx-mk-hero + cx-mk-photo + cx-mk-float), the address field with its button (cx-mk-claim), a photo band
|
|
3249
|
+
(cx-mk-band), split rows (cx-mk-split, cx-mk-rows/cx-mk-row + cx-mk-stage), a list with icons (cx-mk-checks), tiles,
|
|
3250
|
+
a drifting row of chips, the closing call (cx-mk-cta), filters (cx-mk-filter), a panel; and a legal document with its
|
|
3251
|
+
tabs. Write them as markup under .style-nova; the docs show each one. ══ */
|
|
3252
|
+
.style-nova .cx-mk-col {
|
|
3253
|
+
width: min(976px, calc(100% - 40px));
|
|
3254
|
+
margin-inline: auto;
|
|
3255
|
+
}
|
|
3256
|
+
.style-nova .cx-mk-sec {
|
|
3257
|
+
margin-top: 160px;
|
|
3258
|
+
display: flex;
|
|
3259
|
+
flex-direction: column;
|
|
3260
|
+
gap: 72px;
|
|
3261
|
+
}
|
|
3262
|
+
.style-nova .cx-mk-head {
|
|
3263
|
+
display: flex;
|
|
3264
|
+
flex-direction: column;
|
|
3265
|
+
gap: 24px;
|
|
3266
|
+
}
|
|
3267
|
+
.style-nova .cx-mk-h1 {
|
|
3268
|
+
display: block;
|
|
3269
|
+
margin: 0;
|
|
3270
|
+
font-size: clamp(48px, 7vw, 84px);
|
|
3271
|
+
line-height: 1;
|
|
3272
|
+
letter-spacing: -0.055em;
|
|
3273
|
+
font-weight: 700;
|
|
3274
|
+
white-space: nowrap;
|
|
3275
|
+
}
|
|
3276
|
+
.style-nova .cx-mk-h2 {
|
|
3277
|
+
display: block;
|
|
3278
|
+
margin: 0;
|
|
3279
|
+
font-size: clamp(36px, 5vw, 64px);
|
|
3280
|
+
line-height: 1.02;
|
|
3281
|
+
letter-spacing: -0.045em;
|
|
3282
|
+
font-weight: 700;
|
|
3283
|
+
}
|
|
3284
|
+
.style-nova .cx-mk-lead {
|
|
3285
|
+
margin: 0;
|
|
3286
|
+
max-width: 560px;
|
|
3287
|
+
font-size: clamp(17px, 1.6vw, 20px);
|
|
3288
|
+
line-height: 1.5;
|
|
3289
|
+
letter-spacing: -0.015em;
|
|
3290
|
+
font-weight: 500;
|
|
3291
|
+
color: var(--muted-foreground);
|
|
3292
|
+
}
|
|
3293
|
+
.style-nova .cx-mk-eyebrow {
|
|
3294
|
+
margin: 0;
|
|
3295
|
+
font-size: 14px;
|
|
3296
|
+
font-weight: 500;
|
|
3297
|
+
color: var(--muted-foreground);
|
|
3298
|
+
}
|
|
3299
|
+
.style-nova .cx-mk-hero {
|
|
3300
|
+
width: min(1168px, calc(100% - 40px));
|
|
3301
|
+
margin: 0 auto;
|
|
3302
|
+
padding-top: 128px;
|
|
3303
|
+
display: grid;
|
|
3304
|
+
grid-template-columns: minmax(0, 1fr) 460px;
|
|
3305
|
+
gap: 64px;
|
|
3306
|
+
align-items: start;
|
|
3307
|
+
}
|
|
3308
|
+
.style-nova .cx-mk-hero-copy {
|
|
3309
|
+
display: flex;
|
|
3310
|
+
flex-direction: column;
|
|
3311
|
+
gap: 30px;
|
|
3312
|
+
padding-left: 96px;
|
|
3313
|
+
min-width: 0;
|
|
3314
|
+
}
|
|
3315
|
+
.style-nova .cx-mk-title {
|
|
3316
|
+
display: block;
|
|
3317
|
+
}
|
|
3318
|
+
.style-nova .cx-mk-claim {
|
|
3319
|
+
display: flex;
|
|
3320
|
+
flex-direction: row;
|
|
3321
|
+
flex-wrap: wrap; /* in a narrow column the button goes under the field, never behind whatever sits beside it */
|
|
3322
|
+
gap: 10px;
|
|
3323
|
+
align-items: center;
|
|
3324
|
+
}
|
|
3325
|
+
.style-nova .cx-mk-claim .cn-input-group {
|
|
3326
|
+
width: 300px;
|
|
3327
|
+
max-width: 100%;
|
|
3328
|
+
}
|
|
3329
|
+
.style-nova .cx-mk-hero-media {
|
|
3330
|
+
position: relative;
|
|
3331
|
+
height: 600px;
|
|
3332
|
+
}
|
|
3333
|
+
.style-nova .cx-mk-photo {
|
|
3334
|
+
position: absolute;
|
|
3335
|
+
inset: 0;
|
|
3336
|
+
border-radius: 28px;
|
|
3337
|
+
overflow: hidden;
|
|
3338
|
+
box-shadow: 0 40px 80px -40px rgb(11 11 13 / .5);
|
|
3339
|
+
}
|
|
3340
|
+
.style-nova .cx-mk-photo img {
|
|
3341
|
+
width: 100%;
|
|
3342
|
+
height: 100%;
|
|
3343
|
+
object-fit: cover;
|
|
3344
|
+
object-position: 60% center;
|
|
3345
|
+
display: block;
|
|
3346
|
+
}
|
|
3347
|
+
.style-nova .cx-mk-photo::after {
|
|
3348
|
+
content: "";
|
|
3349
|
+
position: absolute;
|
|
3350
|
+
inset: 0;
|
|
3351
|
+
background: linear-gradient(to top, rgb(11 11 13 / .55), transparent 55%);
|
|
3352
|
+
}
|
|
3353
|
+
.style-nova .cx-mk-float {
|
|
3354
|
+
position: absolute;
|
|
3355
|
+
left: -48px;
|
|
3356
|
+
bottom: 96px;
|
|
3357
|
+
width: 340px;
|
|
3358
|
+
--live-h: 120px;
|
|
3359
|
+
}
|
|
3360
|
+
.style-nova .cx-mk-caption {
|
|
3361
|
+
position: absolute;
|
|
3362
|
+
left: 28px;
|
|
3363
|
+
right: 28px;
|
|
3364
|
+
bottom: 28px;
|
|
3365
|
+
color: #FFFFFF;
|
|
3366
|
+
font-size: 14px;
|
|
3367
|
+
font-weight: 500;
|
|
3368
|
+
}
|
|
3369
|
+
.style-nova .cx-mk-strip {
|
|
3370
|
+
overflow: hidden;
|
|
3371
|
+
-webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
|
|
3372
|
+
mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
|
|
3373
|
+
}
|
|
3374
|
+
.style-nova .cx-mk-strip-track {
|
|
3375
|
+
gap: 28px;
|
|
3376
|
+
--drift: 70s;
|
|
3377
|
+
padding-bottom: 40px;
|
|
3378
|
+
}
|
|
3379
|
+
.style-nova .cx-mk-shot {
|
|
3380
|
+
display: flex;
|
|
3381
|
+
flex-direction: column;
|
|
3382
|
+
gap: 6px;
|
|
3383
|
+
flex: none;
|
|
3384
|
+
}
|
|
3385
|
+
.style-nova .cx-mk-shot .cx-device {
|
|
3386
|
+
margin-bottom: 12px;
|
|
3387
|
+
}
|
|
3388
|
+
.style-nova .cx-mk-shot-n {
|
|
3389
|
+
font-size: 15px;
|
|
3390
|
+
font-weight: 600;
|
|
3391
|
+
padding-left: 6px;
|
|
3392
|
+
}
|
|
3393
|
+
.style-nova .cx-mk-shot-t {
|
|
3394
|
+
font-size: 14px;
|
|
3395
|
+
color: var(--muted-foreground);
|
|
3396
|
+
padding-left: 6px;
|
|
3397
|
+
}
|
|
3398
|
+
.style-nova .cx-mk-band {
|
|
3399
|
+
position: relative;
|
|
3400
|
+
width: min(1168px, calc(100% - 40px));
|
|
3401
|
+
height: 440px;
|
|
3402
|
+
margin: 160px auto 0;
|
|
3403
|
+
border-radius: 28px;
|
|
3404
|
+
overflow: hidden;
|
|
3405
|
+
}
|
|
3406
|
+
.style-nova .cx-mk-band > img {
|
|
3407
|
+
position: absolute;
|
|
3408
|
+
inset: 0;
|
|
3409
|
+
width: 100%;
|
|
3410
|
+
height: 100%;
|
|
3411
|
+
max-width: none;
|
|
3412
|
+
object-fit: cover;
|
|
3413
|
+
object-position: center 40%;
|
|
3414
|
+
display: block;
|
|
3415
|
+
}
|
|
3416
|
+
.style-nova .cx-mk-band::after {
|
|
3417
|
+
content: "";
|
|
3418
|
+
position: absolute;
|
|
3419
|
+
inset: 0;
|
|
3420
|
+
background: linear-gradient(90deg, rgb(11 11 13 / .72), rgb(11 11 13 / .1) 70%);
|
|
3421
|
+
}
|
|
3422
|
+
.style-nova .cx-mk-band-copy {
|
|
3423
|
+
position: absolute;
|
|
3424
|
+
z-index: 1;
|
|
3425
|
+
left: 96px;
|
|
3426
|
+
top: 50%;
|
|
3427
|
+
transform: translateY(-50%);
|
|
3428
|
+
max-width: 520px;
|
|
3429
|
+
display: flex;
|
|
3430
|
+
flex-direction: column;
|
|
3431
|
+
gap: 18px;
|
|
3432
|
+
color: #FFFFFF;
|
|
3433
|
+
}
|
|
3434
|
+
.style-nova .cx-mk-band-copy .cx-mk-h2 {
|
|
3435
|
+
font-size: clamp(34px, 4.4vw, 56px);
|
|
3436
|
+
}
|
|
3437
|
+
.style-nova .cx-mk-band-p {
|
|
3438
|
+
margin: 0;
|
|
3439
|
+
font-size: 18px;
|
|
3440
|
+
line-height: 1.55;
|
|
3441
|
+
color: rgb(255 255 255 / .78);
|
|
3442
|
+
}
|
|
3443
|
+
.style-nova .cx-mk-widget {
|
|
3444
|
+
margin-top: 18px;
|
|
3445
|
+
flex: 1;
|
|
3446
|
+
min-height: 0;
|
|
3447
|
+
display: flex;
|
|
3448
|
+
flex-direction: column;
|
|
3449
|
+
}
|
|
3450
|
+
.style-nova .cx-mk-split {
|
|
3451
|
+
width: min(976px, calc(100% - 40px));
|
|
3452
|
+
margin-inline: auto;
|
|
3453
|
+
display: grid;
|
|
3454
|
+
grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
|
|
3455
|
+
gap: 64px;
|
|
3456
|
+
align-items: center;
|
|
3457
|
+
}
|
|
3458
|
+
.style-nova .cx-mk-split-copy {
|
|
3459
|
+
display: flex;
|
|
3460
|
+
flex-direction: column;
|
|
3461
|
+
gap: 28px;
|
|
3462
|
+
}
|
|
3463
|
+
.style-nova .cx-mk-split-copy .cx-mk-h2 {
|
|
3464
|
+
font-size: clamp(36px, 4.6vw, 56px);
|
|
3465
|
+
text-wrap: balance;
|
|
3466
|
+
}
|
|
3467
|
+
.style-nova .cx-mk-checks {
|
|
3468
|
+
display: flex;
|
|
3469
|
+
flex-direction: column;
|
|
3470
|
+
}
|
|
3471
|
+
.style-nova .cx-mk-check {
|
|
3472
|
+
display: flex;
|
|
3473
|
+
flex-direction: row;
|
|
3474
|
+
gap: 14px;
|
|
3475
|
+
align-items: center;
|
|
3476
|
+
padding: 12px 0;
|
|
3477
|
+
border-top: 1px solid var(--border);
|
|
3478
|
+
font-size: 16px;
|
|
3479
|
+
line-height: 1.4;
|
|
3480
|
+
font-weight: 500;
|
|
3481
|
+
}
|
|
3482
|
+
.style-nova .cx-mk-check:last-child {
|
|
3483
|
+
border-bottom: 1px solid var(--border);
|
|
3484
|
+
}
|
|
3485
|
+
.style-nova .cx-mk-ic {
|
|
3486
|
+
width: 32px;
|
|
3487
|
+
height: 32px;
|
|
3488
|
+
border-radius: 9px;
|
|
3489
|
+
background: var(--muted);
|
|
3490
|
+
display: grid;
|
|
3491
|
+
place-items: center;
|
|
3492
|
+
flex: none;
|
|
3493
|
+
}
|
|
3494
|
+
.style-nova .cx-mk-check .mu-icon {
|
|
3495
|
+
flex: none;
|
|
3496
|
+
}
|
|
3497
|
+
.style-nova .cx-mk-media {
|
|
3498
|
+
position: relative;
|
|
3499
|
+
height: 600px;
|
|
3500
|
+
border-radius: 28px;
|
|
3501
|
+
overflow: hidden;
|
|
3502
|
+
}
|
|
3503
|
+
.style-nova .cx-mk-media-img {
|
|
3504
|
+
position: absolute;
|
|
3505
|
+
inset: 0;
|
|
3506
|
+
width: 100%;
|
|
3507
|
+
height: 100%;
|
|
3508
|
+
object-fit: cover;
|
|
3509
|
+
object-position: 30% center;
|
|
3510
|
+
}
|
|
3511
|
+
.style-nova .cx-mk-media-over {
|
|
3512
|
+
position: absolute;
|
|
3513
|
+
right: 28px;
|
|
3514
|
+
bottom: 28px;
|
|
3515
|
+
width: min(340px, calc(100% - 56px));
|
|
3516
|
+
z-index: 1;
|
|
3517
|
+
}
|
|
3518
|
+
.style-nova .cx-mk-media::after {
|
|
3519
|
+
content: "";
|
|
3520
|
+
position: absolute;
|
|
3521
|
+
inset: 0;
|
|
3522
|
+
background: linear-gradient(to left, rgb(11 11 13 / .35), rgb(11 11 13 / 0) 70%);
|
|
3523
|
+
}
|
|
3524
|
+
.style-nova .cx-mk-pill {
|
|
3525
|
+
align-self: flex-start;
|
|
3526
|
+
}
|
|
3527
|
+
.style-nova .cx-mk-h1-fit {
|
|
3528
|
+
white-space: normal;
|
|
3529
|
+
text-wrap: balance;
|
|
3530
|
+
font-size: clamp(44px, 6vw, 76px);
|
|
3531
|
+
}
|
|
3532
|
+
.style-nova .cx-mk-float-card {
|
|
3533
|
+
position: absolute;
|
|
3534
|
+
top: auto;
|
|
3535
|
+
right: auto;
|
|
3536
|
+
left: -48px;
|
|
3537
|
+
bottom: 72px;
|
|
3538
|
+
width: 320px;
|
|
3539
|
+
box-shadow: 0 24px 48px -24px rgb(11 11 13 / .35);
|
|
3540
|
+
}
|
|
3541
|
+
.style-nova .cx-mk-float-card .cx-live-tx {
|
|
3542
|
+
display: flex;
|
|
3543
|
+
flex-direction: column;
|
|
3544
|
+
gap: 2px;
|
|
3545
|
+
font-size: 13.5px;
|
|
3546
|
+
color: var(--muted-foreground);
|
|
3547
|
+
}
|
|
3548
|
+
.style-nova .cx-mk-float-card .cx-mk-float-t {
|
|
3549
|
+
color: var(--foreground);
|
|
3550
|
+
font-size: 14.5px;
|
|
3551
|
+
}
|
|
3552
|
+
.style-nova .cx-mk-tile .cx-mk-ic {
|
|
3553
|
+
background: var(--background);
|
|
3554
|
+
}
|
|
3555
|
+
.style-nova .cx-mk-cta .cn-input-group {
|
|
3556
|
+
background: var(--background);
|
|
3557
|
+
}
|
|
3558
|
+
.style-nova .cx-mk-float-t {
|
|
3559
|
+
font-weight: 600;
|
|
3560
|
+
}
|
|
3561
|
+
.style-nova .cx-mk-flow {
|
|
3562
|
+
display: grid;
|
|
3563
|
+
grid-template-columns: minmax(0, 1fr) 320px;
|
|
3564
|
+
gap: 72px;
|
|
3565
|
+
align-items: center;
|
|
3566
|
+
}
|
|
3567
|
+
.style-nova .cx-mk-flow-copy {
|
|
3568
|
+
display: flex;
|
|
3569
|
+
flex-direction: column;
|
|
3570
|
+
gap: 40px;
|
|
3571
|
+
}
|
|
3572
|
+
.style-nova .cx-mk-flow-device {
|
|
3573
|
+
display: flex;
|
|
3574
|
+
justify-content: center;
|
|
3575
|
+
}
|
|
3576
|
+
.style-nova .cx-mk-chips {
|
|
3577
|
+
gap: 24px;
|
|
3578
|
+
}
|
|
3579
|
+
.style-nova .cx-mk-chips-cap {
|
|
3580
|
+
text-align: center;
|
|
3581
|
+
}
|
|
3582
|
+
.style-nova .cx-mk-chips-track {
|
|
3583
|
+
--drift: 60s;
|
|
3584
|
+
gap: 12px;
|
|
3585
|
+
padding-bottom: 0;
|
|
3586
|
+
}
|
|
3587
|
+
.style-nova .cx-mk-chip {
|
|
3588
|
+
flex: none;
|
|
3589
|
+
display: flex;
|
|
3590
|
+
flex-direction: row;
|
|
3591
|
+
align-items: center;
|
|
3592
|
+
gap: 10px;
|
|
3593
|
+
padding: 6px 16px 6px 6px;
|
|
3594
|
+
border-radius: 999px;
|
|
3595
|
+
background: var(--muted);
|
|
3596
|
+
font-size: 15px;
|
|
3597
|
+
font-weight: 600;
|
|
3598
|
+
white-space: nowrap;
|
|
3599
|
+
}
|
|
3600
|
+
.style-nova .cx-mk-chip img {
|
|
3601
|
+
width: 36px;
|
|
3602
|
+
height: 36px;
|
|
3603
|
+
border-radius: 50%;
|
|
3604
|
+
object-fit: cover;
|
|
3605
|
+
display: block;
|
|
3606
|
+
}
|
|
3607
|
+
.style-nova .cx-mk-tiles {
|
|
3608
|
+
display: grid;
|
|
3609
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
3610
|
+
gap: 16px;
|
|
3611
|
+
}
|
|
3612
|
+
.style-nova .cx-mk-tile {
|
|
3613
|
+
display: flex;
|
|
3614
|
+
flex-direction: column;
|
|
3615
|
+
gap: 12px;
|
|
3616
|
+
padding: 24px;
|
|
3617
|
+
border-radius: 18px;
|
|
3618
|
+
background: var(--muted);
|
|
3619
|
+
border: 0;
|
|
3620
|
+
box-shadow: none;
|
|
3621
|
+
}
|
|
3622
|
+
.style-nova .cx-mk-tile-t {
|
|
3623
|
+
font-size: 18px;
|
|
3624
|
+
font-weight: 600;
|
|
3625
|
+
letter-spacing: -0.01em;
|
|
3626
|
+
}
|
|
3627
|
+
.style-nova .cx-mk-tile-p {
|
|
3628
|
+
margin: 0;
|
|
3629
|
+
font-size: 15px;
|
|
3630
|
+
line-height: 1.6;
|
|
3631
|
+
color: var(--muted-foreground);
|
|
3632
|
+
}
|
|
3633
|
+
.style-nova .cx-mk-soft {
|
|
3634
|
+
color: var(--muted-foreground);
|
|
3635
|
+
}
|
|
3636
|
+
.style-nova .cx-mk-rows {
|
|
3637
|
+
display: flex;
|
|
3638
|
+
flex-direction: column;
|
|
3639
|
+
gap: 120px;
|
|
3640
|
+
}
|
|
3641
|
+
.style-nova .cx-mk-row {
|
|
3642
|
+
display: grid;
|
|
3643
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
3644
|
+
gap: 72px;
|
|
3645
|
+
align-items: center;
|
|
3646
|
+
}
|
|
3647
|
+
.style-nova .cx-mk-rev > .cx-mk-row-copy {
|
|
3648
|
+
order: 2;
|
|
3649
|
+
}
|
|
3650
|
+
.style-nova .cx-mk-row-copy {
|
|
3651
|
+
display: flex;
|
|
3652
|
+
flex-direction: column;
|
|
3653
|
+
gap: 18px;
|
|
3654
|
+
}
|
|
3655
|
+
.style-nova .cx-mk-tag {
|
|
3656
|
+
font-size: 13px;
|
|
3657
|
+
font-weight: 600;
|
|
3658
|
+
letter-spacing: .02em;
|
|
3659
|
+
text-transform: uppercase;
|
|
3660
|
+
color: var(--muted-foreground);
|
|
3661
|
+
}
|
|
3662
|
+
.style-nova .cx-mk-h3 {
|
|
3663
|
+
margin: 0;
|
|
3664
|
+
font-size: clamp(28px, 3.2vw, 40px);
|
|
3665
|
+
line-height: 1.08;
|
|
3666
|
+
letter-spacing: -0.035em;
|
|
3667
|
+
font-weight: 700;
|
|
3668
|
+
}
|
|
3669
|
+
.style-nova .cx-mk-p {
|
|
3670
|
+
margin: 0;
|
|
3671
|
+
font-size: 17px;
|
|
3672
|
+
line-height: 1.6;
|
|
3673
|
+
color: var(--muted-foreground);
|
|
3674
|
+
}
|
|
3675
|
+
.style-nova .cx-mk-strong {
|
|
3676
|
+
display: block;
|
|
3677
|
+
font-size: 15px;
|
|
3678
|
+
font-weight: 600;
|
|
3679
|
+
}
|
|
3680
|
+
.style-nova .cx-mk-soft-s {
|
|
3681
|
+
display: block;
|
|
3682
|
+
font-size: 14px;
|
|
3683
|
+
color: var(--muted-foreground);
|
|
3684
|
+
margin-top: 2px;
|
|
3685
|
+
}
|
|
3686
|
+
.style-nova .cx-mk-check-end {
|
|
3687
|
+
border-bottom: 1px solid var(--border);
|
|
3688
|
+
}
|
|
3689
|
+
.style-nova .cx-mk-stage {
|
|
3690
|
+
padding: 28px;
|
|
3691
|
+
border-radius: 24px;
|
|
3692
|
+
background: var(--muted);
|
|
3693
|
+
display: flex;
|
|
3694
|
+
flex-direction: column;
|
|
3695
|
+
justify-content: center;
|
|
3696
|
+
align-items: center;
|
|
3697
|
+
min-height: 420px;
|
|
3698
|
+
}
|
|
3699
|
+
/* EVERYTHING IN A STAGE SITS IN ITS MIDDLE. A part that picks its markup per language (`when ui.lang …`) wraps it in a
|
|
3700
|
+
bare container: that box does not count for layout, so what it holds is centred like a direct child. Each piece keeps
|
|
3701
|
+
its own max width and is centred inside the stage. */
|
|
3702
|
+
.style-nova .cx-mk-stage > [class="mu-stack"] { display: contents; }
|
|
3703
|
+
.style-nova .cx-mk-stage > :not(.cx-device, [class="mu-stack"]), .style-nova .cx-mk-stage > [class="mu-stack"] > * { width: 100%; margin-inline: auto; }
|
|
3704
|
+
.style-nova .cx-mk-stage-narrow > * {
|
|
3705
|
+
max-width: 340px;
|
|
3706
|
+
margin-inline: auto;
|
|
3707
|
+
width: 100%;
|
|
3708
|
+
}
|
|
3709
|
+
.style-nova .cx-mk-stage-photo {
|
|
3710
|
+
position: relative;
|
|
3711
|
+
padding: 0;
|
|
3712
|
+
overflow: hidden;
|
|
3713
|
+
min-height: 640px;
|
|
3714
|
+
}
|
|
3715
|
+
.style-nova .cx-mk-stage-img {
|
|
3716
|
+
position: absolute;
|
|
3717
|
+
inset: 0;
|
|
3718
|
+
width: 100%;
|
|
3719
|
+
height: 100%;
|
|
3720
|
+
object-fit: cover;
|
|
3721
|
+
object-position: 30% center;
|
|
3722
|
+
}
|
|
3723
|
+
.style-nova .cx-mk-stage-over {
|
|
3724
|
+
position: absolute;
|
|
3725
|
+
right: 24px;
|
|
3726
|
+
bottom: 24px;
|
|
3727
|
+
width: min(320px, calc(100% - 48px));
|
|
3728
|
+
z-index: 1;
|
|
3729
|
+
}
|
|
3730
|
+
.style-nova .cx-mk-band-k {
|
|
3731
|
+
font-size: 13px;
|
|
3732
|
+
font-weight: 600;
|
|
3733
|
+
letter-spacing: .02em;
|
|
3734
|
+
text-transform: uppercase;
|
|
3735
|
+
color: rgb(255 255 255 / .7);
|
|
3736
|
+
}
|
|
3737
|
+
.style-nova .cx-mk-vals {
|
|
3738
|
+
margin-top: 48px;
|
|
3739
|
+
display: flex;
|
|
3740
|
+
flex-direction: column;
|
|
3741
|
+
gap: 32px;
|
|
3742
|
+
}
|
|
3743
|
+
.style-nova .cx-mk-vals-row {
|
|
3744
|
+
display: grid;
|
|
3745
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
3746
|
+
gap: 16px;
|
|
3747
|
+
}
|
|
3748
|
+
.style-nova .cx-mk-val {
|
|
3749
|
+
display: flex;
|
|
3750
|
+
flex-direction: column;
|
|
3751
|
+
gap: 10px;
|
|
3752
|
+
padding: 24px;
|
|
3753
|
+
border-radius: 18px;
|
|
3754
|
+
background: var(--muted);
|
|
3755
|
+
}
|
|
3756
|
+
.style-nova .cx-mk-val .cx-mk-strong { font-size: 16px; letter-spacing: -0.01em; }
|
|
3757
|
+
.style-nova .cx-mk-val .cx-mk-soft-s { margin-top: 0; font-size: 14.5px; line-height: 1.6; }
|
|
3758
|
+
.style-nova .cx-mk-feats {
|
|
3759
|
+
display: grid;
|
|
3760
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
3761
|
+
gap: 0 32px;
|
|
3762
|
+
}
|
|
3763
|
+
.style-nova .cx-mk-feat {
|
|
3764
|
+
display: flex;
|
|
3765
|
+
flex-direction: row;
|
|
3766
|
+
align-items: center;
|
|
3767
|
+
gap: 14px;
|
|
3768
|
+
padding: 14px 0;
|
|
3769
|
+
border-top: 1px solid var(--border);
|
|
3770
|
+
font-size: 16px;
|
|
3771
|
+
font-weight: 500;
|
|
3772
|
+
}
|
|
3773
|
+
.style-nova .cx-mk-cta {
|
|
3774
|
+
display: flex;
|
|
3775
|
+
flex-direction: column;
|
|
3776
|
+
gap: 32px;
|
|
3777
|
+
padding: 64px;
|
|
3778
|
+
border-radius: 28px;
|
|
3779
|
+
background: var(--muted);
|
|
3780
|
+
}
|
|
3781
|
+
.style-nova .cx-mk-cta-copy {
|
|
3782
|
+
display: flex;
|
|
3783
|
+
flex-direction: column;
|
|
3784
|
+
}
|
|
3785
|
+
.style-nova .cx-mk-page-head {
|
|
3786
|
+
padding-top: 112px;
|
|
3787
|
+
display: flex;
|
|
3788
|
+
flex-direction: column;
|
|
3789
|
+
gap: 24px;
|
|
3790
|
+
}
|
|
3791
|
+
.style-nova .cx-mk-page-head .cn-input-group {
|
|
3792
|
+
max-width: 560px;
|
|
3793
|
+
}
|
|
3794
|
+
.style-nova .cx-mk-filters {
|
|
3795
|
+
display: flex;
|
|
3796
|
+
flex-direction: row;
|
|
3797
|
+
flex-wrap: wrap;
|
|
3798
|
+
gap: 8px;
|
|
3799
|
+
}
|
|
3800
|
+
.style-nova .cx-mk-filter.on {
|
|
3801
|
+
background: var(--foreground);
|
|
3802
|
+
color: var(--background);
|
|
3803
|
+
border-color: var(--foreground);
|
|
3804
|
+
}
|
|
3805
|
+
.style-nova .cx-mk-list {
|
|
3806
|
+
margin-top: 96px;
|
|
3807
|
+
display: flex;
|
|
3808
|
+
flex-direction: column;
|
|
3809
|
+
gap: 32px;
|
|
3810
|
+
}
|
|
3811
|
+
.style-nova .cx-mk-answer {
|
|
3812
|
+
display: flex;
|
|
3813
|
+
flex-direction: column;
|
|
3814
|
+
align-items: flex-start;
|
|
3815
|
+
gap: 14px;
|
|
3816
|
+
}
|
|
3817
|
+
.style-nova .cx-mk-empty {
|
|
3818
|
+
display: none;
|
|
3819
|
+
padding-block: 24px;
|
|
3820
|
+
}
|
|
3821
|
+
.style-nova .cx-mk-empty.on {
|
|
3822
|
+
display: block;
|
|
3823
|
+
}
|
|
3824
|
+
.style-nova .cx-mk-panel {
|
|
3825
|
+
display: flex;
|
|
3826
|
+
flex-direction: column;
|
|
3827
|
+
align-items: flex-start;
|
|
3828
|
+
gap: 16px;
|
|
3829
|
+
padding: 48px;
|
|
3830
|
+
border-radius: 28px;
|
|
3831
|
+
background: var(--muted);
|
|
3832
|
+
border: 0;
|
|
3833
|
+
box-shadow: none;
|
|
3834
|
+
}
|
|
3835
|
+
.style-nova .cx-mk-panel-ic {
|
|
3836
|
+
background: var(--background);
|
|
3837
|
+
}
|
|
3838
|
+
.style-nova .cx-mk-actions {
|
|
3839
|
+
display: flex;
|
|
3840
|
+
flex-direction: row;
|
|
3841
|
+
flex-wrap: wrap;
|
|
3842
|
+
gap: 10px;
|
|
3843
|
+
margin-top: 8px;
|
|
3844
|
+
}
|
|
3845
|
+
.style-nova .cx-mk-copy.is-copied {
|
|
3846
|
+
color: var(--success);
|
|
3847
|
+
}
|
|
3848
|
+
.style-nova .cx-mk-cta-sec {
|
|
3849
|
+
margin-top: 128px;
|
|
3850
|
+
}
|
|
3851
|
+
.style-nova .cx-mk-filter {
|
|
3852
|
+
padding: 0 18px;
|
|
3853
|
+
border: 1px solid var(--border);
|
|
3854
|
+
background: var(--background);
|
|
3855
|
+
color: var(--foreground);
|
|
3856
|
+
font-size: 14px;
|
|
3857
|
+
}
|
|
3858
|
+
.style-nova .cx-mk-filter:hover {
|
|
3859
|
+
background: var(--muted);
|
|
3860
|
+
color: var(--foreground);
|
|
3861
|
+
}
|
|
3862
|
+
.style-nova .cx-mk-filters {
|
|
3863
|
+
justify-content: flex-start;
|
|
3864
|
+
}
|
|
3865
|
+
.style-nova .hm-imp-ask .cx-mk-lead {
|
|
3866
|
+
max-width: 600px;
|
|
3867
|
+
}
|
|
3868
|
+
/* Marketing, part two: the pieces a page for one need or one competitor is made of. A stage holds one play centred;
|
|
3869
|
+
steps are numbered cards with a small picture; the cost card adds up what each option keeps; the numbers cards
|
|
3870
|
+
carry their source under them; «which one fits» is two plain cards. */
|
|
3871
|
+
.style-nova .cx-mk-stage .cx-play { margin-inline: auto; width: 100%; max-width: 380px; box-shadow: 0 1px 2px rgb(11 11 13 / .06), 0 24px 48px -28px rgb(11 11 13 / .35); }
|
|
3872
|
+
.style-nova .cx-mk-stage .cx-pdp, .style-nova .cx-mk-stage .cx-bio { max-width: 320px; }
|
|
3873
|
+
.style-nova .cx-mk-stage-dark { background: #0B141A; }
|
|
3874
|
+
.style-nova .cx-mk-stack { display: flex; flex-direction: column; gap: 12px; width: 100%; max-width: 380px; margin-inline: auto; }
|
|
3875
|
+
.style-nova .cx-mk-stack > .cx-live-card { position: static; width: 100%; transform: none; opacity: 1; }
|
|
3876
|
+
.style-nova .cx-mk-chans { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
|
|
3877
|
+
.style-nova .cx-mk-chan { display: inline-flex; flex-direction: row; align-items: center; gap: 8px; height: 36px; padding: 0 14px; border-radius: 999px; background: var(--background); font-size: 14px; font-weight: 600; box-shadow: 0 8px 24px -14px rgb(11 11 13 / .45); }
|
|
3878
|
+
.style-nova .cx-mk-chan svg { width: 16px; height: 16px; color: var(--brand); }
|
|
3879
|
+
.style-nova .cx-mk-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
|
|
3880
|
+
.style-nova .cx-mk-step { display: grid; grid-row: span 4; grid-template-rows: subgrid; row-gap: 10px; padding: 22px; border-radius: 20px; background: var(--muted); min-width: 0; }
|
|
3881
|
+
.style-nova .cx-mk-step-n { width: 30px; height: 30px; border-radius: 50%; background: var(--foreground); color: var(--background); display: grid; place-items: center; font-size: 13px; font-weight: 700; }
|
|
3882
|
+
.style-nova .cx-mk-step-t { font-size: 18px; font-weight: 600; letter-spacing: -.01em; }
|
|
3883
|
+
.style-nova .cx-mk-step-p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--muted-foreground); }
|
|
3884
|
+
.style-nova .cx-mk-step-vis { align-self: stretch; margin-top: 8px; min-height: 240px; border-radius: 16px; background: var(--background); overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20px 16px; }
|
|
3885
|
+
/* A STEP SHOWS ITS PIECE WHOLE, never chopped at the bottom: the box grows with it (the row of steps keeps the tallest),
|
|
3886
|
+
and each piece takes the size a third of a column allows. A part that picks its markup per language wraps it in a
|
|
3887
|
+
bare container, which does not count for layout. */
|
|
3888
|
+
.style-nova .cx-mk-step-vis > [class="mu-stack"] { display: contents; }
|
|
3889
|
+
.style-nova .cx-mk-step-vis > *, .style-nova .cx-mk-step-vis > [class="mu-stack"] > * { width: 100%; max-width: 280px; }
|
|
3890
|
+
.style-nova .cx-mk-step-vis .cx-pdp { max-width: 250px; }
|
|
3891
|
+
.style-nova .cx-mk-step-vis .cx-bio { max-width: 260px; }
|
|
3892
|
+
/* «Connect your channel»: each channel as its connection row (logo, account, switch); «It learns your store»: the store
|
|
3893
|
+
read line by line, the last one still being read. Pictures, so the switch is drawn and never takes focus. */
|
|
3894
|
+
.style-nova .cx-conn-list { display: flex; flex-direction: column; gap: 8px; }
|
|
3895
|
+
.style-nova .cx-conn { background: var(--background); }
|
|
3896
|
+
.style-nova .cx-conn-lg { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; background: var(--muted); flex: none; }
|
|
3897
|
+
.style-nova .cx-conn-lg svg { width: 20px; height: 20px; }
|
|
3898
|
+
.style-nova .cx-conn .cn-item-description { font-size: 12px; line-height: 1.35; }
|
|
3899
|
+
.style-nova .cx-conn-sw { pointer-events: none; flex: none; }
|
|
3900
|
+
.style-nova .cx-learn { display: flex; flex-direction: column; gap: 8px; width: 100%; }
|
|
3901
|
+
.style-nova .cx-learn-k { font-size: 12px; color: var(--muted-foreground); }
|
|
3902
|
+
.style-nova .cx-learn-row { display: flex; flex-direction: row; justify-content: space-between; gap: 10px; padding: 8px 10px; border-radius: 10px; background: var(--muted); font-size: 13px; }
|
|
3903
|
+
.style-nova .cx-learn-row > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
3904
|
+
.style-nova .cx-learn-row > span:last-child { flex: none; font-weight: 600; }
|
|
3905
|
+
.style-nova .cx-learn-row[data-state="got"] { background: var(--selected-soft); }
|
|
3906
|
+
.style-nova .cx-learn-row[data-state="got"] > span:last-child::after { content: " ✓"; color: var(--selected); }
|
|
3907
|
+
.style-nova .cx-learn-row[data-state="reading"] { color: var(--muted-foreground); }
|
|
3908
|
+
.style-nova .cx-learn-row[data-state="reading"] > span:last-child { color: var(--selected); }
|
|
3909
|
+
@media (prefers-reduced-motion: no-preference) { .style-nova .cx-learn-row[data-state="reading"] > span:last-child { animation: cx-learn-blink 1.4s ease-in-out infinite; } }
|
|
3910
|
+
@keyframes cx-learn-blink { 50% { opacity: .35; } }
|
|
3911
|
+
.style-nova .cx-mk-step-vis .cx-device { width: 62%; }
|
|
3912
|
+
.style-nova .cx-mk-step-vis .cn-item-group { gap: 0; }
|
|
3913
|
+
.style-nova .cx-mk-cost { display: flex; flex-direction: column; width: 100%; max-width: 340px; padding: 18px 18px 8px; border-radius: 18px; background: var(--background); box-shadow: 0 0 0 1px var(--border), 0 30px 60px -30px rgb(11 11 13 / .45); }
|
|
3914
|
+
.style-nova .cx-mk-cost-k { display: block; font-size: 12.5px; font-weight: 500; color: var(--muted-foreground); }
|
|
3915
|
+
.style-nova .cx-mk-cost-t { display: block; font-size: 18px; font-weight: 700; letter-spacing: -.02em; margin: 4px 0 10px; }
|
|
3916
|
+
.style-nova .cx-mk-cost-r { display: flex; flex-direction: row; justify-content: space-between; align-items: baseline; gap: 12px; padding: 11px 0; border-top: 1px dashed var(--border); font-size: 14px; }
|
|
3917
|
+
.style-nova .cx-mk-cost-r > span:first-child { color: var(--muted-foreground); min-width: 0; }
|
|
3918
|
+
.style-nova .cx-mk-cost-r > span:last-child { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
|
|
3919
|
+
.style-nova .cx-mk-cost-r[data-us="yes"] > span:first-child { color: var(--foreground); font-weight: 600; }
|
|
3920
|
+
.style-nova .cx-mk-cost-r[data-us="yes"] > span:last-child { color: var(--success); }
|
|
3921
|
+
.style-nova .cx-mk-alt-media { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 36px; border-radius: 28px; background: var(--muted); min-height: 560px; }
|
|
3922
|
+
.style-nova .cx-mk-alt-media > .cx-mk-cost { position: absolute; left: -28px; bottom: 36px; z-index: 1; }
|
|
3923
|
+
.style-nova .cx-mk-fund { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
|
|
3924
|
+
.style-nova .cx-mk-fund-c { display: grid; grid-row: span 4; grid-template-rows: subgrid; row-gap: 12px; align-content: start; padding: 28px; border-radius: 20px; background: var(--muted); }
|
|
3925
|
+
.style-nova .cx-mk-fund-n { font-size: 36px; font-weight: 700; letter-spacing: -.04em; line-height: 1; }
|
|
3926
|
+
.style-nova .cx-mk-fund-t { font-size: 20px; font-weight: 600; letter-spacing: -.02em; line-height: 1.25; }
|
|
3927
|
+
.style-nova .cx-mk-fund-p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--muted-foreground); }
|
|
3928
|
+
.style-nova .cx-mk-fund-src { align-self: start; padding-top: 12px; border-top: 1px solid var(--border); font-size: 12.5px; color: var(--muted-foreground); }
|
|
3929
|
+
.style-nova .cx-mk-which { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
|
3930
|
+
.style-nova .cx-mk-which-c { display: flex; flex-direction: column; gap: 14px; padding: 28px; border-radius: 20px; background: var(--muted); }
|
|
3931
|
+
.style-nova .cx-mk-which-c[data-tone="us"] { background: var(--foreground); color: var(--background); }
|
|
3932
|
+
.style-nova .cx-mk-which-t { font-size: 22px; font-weight: 600; letter-spacing: -.02em; }
|
|
3933
|
+
.style-nova .cx-mk-which-c .cx-mk-check { border-color: color-mix(in srgb, currentColor 14%, transparent); }
|
|
3934
|
+
.style-nova .cx-mk-which-c[data-tone="us"] .cx-mk-ic { background: color-mix(in srgb, currentColor 14%, transparent); color: inherit; } /* the card is ink on paper in light and paper on ink in dark: the tick follows it */
|
|
3935
|
+
.style-nova .cx-mk-stores { display: flex; flex-direction: row; gap: 20px; justify-content: center; align-items: flex-end; }
|
|
3936
|
+
.style-nova .cx-mk-store { display: flex; flex-direction: column; align-items: center; gap: 2px; width: 100%; max-width: 350px; min-width: 0; text-align: center; font-size: 17px; font-weight: 600; letter-spacing: -.01em; }
|
|
3937
|
+
.style-nova .cx-mk-store .cx-device { margin-bottom: 16px; }
|
|
3938
|
+
.style-nova .cx-mk-store > span:last-child { font-size: 14px; font-weight: 400; letter-spacing: 0; color: var(--muted-foreground); }
|
|
3939
|
+
/* Heroes of the pages for one need: a play floating over the photo, the channels as chips, the profile beside the
|
|
3940
|
+
store, the browser with its Google result, and the small «change it from your phone» card. */
|
|
3941
|
+
.style-nova .cx-mk-hero-media { position: relative; }
|
|
3942
|
+
.style-nova .cx-mk-hero-media > .cx-mk-chans { position: absolute; left: 20px; bottom: 24px; z-index: 2; }
|
|
3943
|
+
.style-nova .cx-mk-float-play { position: absolute; right: -40px; bottom: 28px; width: 330px; z-index: 1; }
|
|
3944
|
+
.style-nova .cx-mk-float-play > .cx-play { box-shadow: 0 30px 60px -30px rgb(11 11 13 / .55); }
|
|
3945
|
+
.style-nova .cx-mk-ig-hero { position: relative; width: 100%; min-height: 600px; border-radius: 28px; background: linear-gradient(160deg, #FFF1F6, #F3EEFF); display: flex; align-items: center; justify-content: center; padding: 40px 24px; }
|
|
3946
|
+
.style-nova .cx-mk-ig-hero > .cx-device { --dw: 280px; }
|
|
3947
|
+
.style-nova .cx-mk-ig-hero > .cx-mk-ig-bio { position: absolute; left: 24px; top: 48px; z-index: 2; width: 320px; }
|
|
3948
|
+
.style-nova .cx-mk-ig-bio > .cx-bio { border-radius: 20px; box-shadow: 0 30px 60px -30px rgb(11 11 13 / .45); }
|
|
3949
|
+
.style-nova .cx-mk-ig-hero > .cx-device { position: absolute; right: 24px; bottom: 24px; }
|
|
3950
|
+
.style-nova .cx-mk-web-serp { position: absolute; left: -28px; bottom: 36px; z-index: 2; width: 340px; padding: 16px 18px; border-radius: 16px; background: var(--background); box-shadow: 0 0 0 1px var(--border), 0 30px 60px -30px rgb(11 11 13 / .45); }
|
|
3951
|
+
.style-nova .cx-mk-stage > .cn-item-group, .style-nova .cx-mk-stage > [class="mu-stack"] > .cn-item-group { width: 100%; max-width: 380px; margin-inline: auto; padding: 6px; border-radius: 18px; background: var(--background); box-shadow: 0 1px 2px rgb(11 11 13 / .06), 0 24px 48px -28px rgb(11 11 13 / .35); }
|
|
3952
|
+
.style-nova .cx-mk-stage .cn-item-group .cn-item + .cn-item { border-top: 1px solid var(--border); border-radius: 0; }
|
|
3953
|
+
.style-nova .cx-mk-edit { width: 100%; max-width: 340px; margin-inline: auto; display: flex; flex-direction: column; gap: 16px; padding: 20px; }
|
|
3954
|
+
.style-nova .cx-mk-edit .cn-field { display: flex; flex-direction: column; gap: 8px; }
|
|
3955
|
+
.style-nova .cx-mk-edit-row { display: flex; flex-direction: row; align-items: center; gap: 12px; }
|
|
3956
|
+
.style-nova .cx-mk-edit-on { flex: none; width: 36px; height: 20px; border-radius: 999px; background: var(--primary); position: relative; }
|
|
3957
|
+
.style-nova .cx-mk-edit-on::after { content: ""; position: absolute; top: 2px; right: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--background); }
|
|
3958
|
+
.style-nova .cx-mk-edit-ok { display: flex; flex-direction: row; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 12px; background: var(--success-soft); color: color-mix(in oklab, var(--success) 72%, black); font-size: 13.5px; font-weight: 500; }
|
|
3959
|
+
.style-nova .cx-mk-edit-ok svg { width: 16px; height: 16px; flex: none; }
|
|
3960
|
+
@media (max-width: 900px) {
|
|
3961
|
+
.style-nova .cx-mk-steps, .style-nova .cx-mk-fund, .style-nova .cx-mk-which { grid-template-columns: 1fr; }
|
|
3962
|
+
.style-nova .cx-mk-alt-media { min-height: 0; padding: 20px; align-items: center; gap: 16px; }
|
|
3963
|
+
.style-nova .cx-mk-alt-media > .cx-mk-cost { position: static; }
|
|
3964
|
+
.style-nova .cx-mk-stores { overflow-x: auto; justify-content: flex-start; padding-bottom: 8px; }
|
|
3965
|
+
.style-nova .cx-mk-stores .cx-device { --w: 180px !important; }
|
|
3966
|
+
.style-nova .cx-mk-float-play { position: static; width: 100%; margin-top: 0; }
|
|
3967
|
+
.style-nova .cx-mk-float-play > .cx-play { width: 100%; max-width: none; }
|
|
3968
|
+
.style-nova .cx-mk-hero-media:has(> .cx-mk-float-play) { height: auto; flex-direction: column; gap: 16px; }
|
|
3969
|
+
.style-nova .cx-mk-hero-media:has(> .cx-mk-float-play) > .cx-mk-photo { position: relative; inset: auto; height: 300px; }
|
|
3970
|
+
.style-nova .cx-mk-hero-media > .cx-mk-chans { left: 12px; right: 12px; top: 12px; bottom: auto; flex-direction: row; flex-wrap: wrap; }
|
|
3971
|
+
.style-nova .cx-mk-ig-hero { min-height: 0; display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 20px; }
|
|
3972
|
+
.style-nova .cx-mk-ig-hero > .cx-mk-ig-bio, .style-nova .cx-mk-ig-hero > .cx-device { position: static; }
|
|
3973
|
+
.style-nova .cx-mk-ig-hero > .cx-mk-ig-bio { width: 100%; max-width: 340px; }
|
|
3974
|
+
.style-nova .cx-mk-web-serp { position: static; width: auto; margin-top: 16px; }
|
|
3975
|
+
/* A hero whose media is a phone with a card beside it (an alternative, the website, Instagram) grows with them on a
|
|
3976
|
+
phone: the fixed 440px height of a photo hero would let them spill over the button and the next section. */
|
|
3977
|
+
.style-nova .cx-mk-hero-media:has(> .cx-mk-alt-media, > .cx-mk-ig-hero) { height: auto; }
|
|
3978
|
+
.style-nova .cx-mk-alt-media { width: 100%; box-sizing: border-box; }
|
|
3979
|
+
.style-nova .cx-mk-hero-media > .cx-mk-alt-media .cx-mk-web-serp { width: 100%; max-width: 340px; box-sizing: border-box; }
|
|
3980
|
+
}
|
|
3981
|
+
@media (max-width: 900px) {
|
|
3982
|
+
.style-nova .cx-mk-sec {
|
|
3983
|
+
margin-top: 96px;
|
|
3984
|
+
gap: 40px;
|
|
3985
|
+
}
|
|
3986
|
+
.style-nova .cx-mk-hero {
|
|
3987
|
+
grid-template-columns: 1fr;
|
|
3988
|
+
padding-top: 104px;
|
|
3989
|
+
gap: 40px;
|
|
3990
|
+
}
|
|
3991
|
+
.style-nova .cx-mk-hero-copy {
|
|
3992
|
+
padding-left: 0;
|
|
3993
|
+
gap: 22px;
|
|
3994
|
+
}
|
|
3995
|
+
.style-nova .cx-mk-h1 {
|
|
3996
|
+
white-space: normal;
|
|
3997
|
+
}
|
|
3998
|
+
.style-nova .cx-mk-claim {
|
|
3999
|
+
flex-direction: column;
|
|
4000
|
+
align-items: stretch;
|
|
4001
|
+
}
|
|
4002
|
+
.style-nova .cx-mk-claim .cn-input-group {
|
|
4003
|
+
width: 100%;
|
|
4004
|
+
}
|
|
4005
|
+
.style-nova .cx-mk-hero-media {
|
|
4006
|
+
height: 440px;
|
|
4007
|
+
}
|
|
4008
|
+
.style-nova .cx-mk-float {
|
|
4009
|
+
left: 16px;
|
|
4010
|
+
right: 16px;
|
|
4011
|
+
width: auto;
|
|
4012
|
+
bottom: 72px;
|
|
4013
|
+
}
|
|
4014
|
+
.style-nova .cx-mk-band {
|
|
4015
|
+
height: 420px;
|
|
4016
|
+
margin-top: 96px;
|
|
4017
|
+
}
|
|
4018
|
+
.style-nova .cx-mk-band-copy {
|
|
4019
|
+
left: 24px;
|
|
4020
|
+
right: 24px;
|
|
4021
|
+
}
|
|
4022
|
+
.style-nova .cx-mk-split {
|
|
4023
|
+
grid-template-columns: 1fr;
|
|
4024
|
+
gap: 32px;
|
|
4025
|
+
}
|
|
4026
|
+
.style-nova .cx-mk-media {
|
|
4027
|
+
height: auto;
|
|
4028
|
+
overflow: visible;
|
|
4029
|
+
border-radius: 0;
|
|
4030
|
+
display: flex;
|
|
4031
|
+
flex-direction: column;
|
|
4032
|
+
}
|
|
4033
|
+
.style-nova .cx-mk-media::after {
|
|
4034
|
+
display: none;
|
|
4035
|
+
}
|
|
4036
|
+
.style-nova .cx-mk-media-img {
|
|
4037
|
+
position: static;
|
|
4038
|
+
height: 240px;
|
|
4039
|
+
border-radius: 20px;
|
|
4040
|
+
}
|
|
4041
|
+
.style-nova .cx-mk-media-over {
|
|
4042
|
+
position: relative;
|
|
4043
|
+
right: auto;
|
|
4044
|
+
bottom: auto;
|
|
4045
|
+
width: auto;
|
|
4046
|
+
margin: -96px 12px 0;
|
|
4047
|
+
}
|
|
4048
|
+
.style-nova .cx-mk-float-card {
|
|
4049
|
+
left: 16px;
|
|
4050
|
+
right: 16px;
|
|
4051
|
+
width: auto;
|
|
4052
|
+
bottom: 24px;
|
|
4053
|
+
}
|
|
4054
|
+
.style-nova .cx-mk-cta .cx-mk-claim .cn-input-group {
|
|
4055
|
+
width: 100%;
|
|
4056
|
+
}
|
|
4057
|
+
.style-nova .cx-mk-flow, .style-nova .cx-mk-row {
|
|
4058
|
+
grid-template-columns: 1fr;
|
|
4059
|
+
gap: 40px;
|
|
4060
|
+
}
|
|
4061
|
+
.style-nova .cx-mk-rev > .cx-mk-row-copy {
|
|
4062
|
+
order: 0;
|
|
4063
|
+
}
|
|
4064
|
+
.style-nova .cx-mk-rows {
|
|
4065
|
+
gap: 80px;
|
|
4066
|
+
}
|
|
4067
|
+
.style-nova .cx-mk-tiles, .style-nova .cx-mk-vals-row {
|
|
4068
|
+
grid-template-columns: 1fr;
|
|
4069
|
+
}
|
|
4070
|
+
.style-nova .cx-mk-feats {
|
|
4071
|
+
grid-template-columns: 1fr 1fr;
|
|
4072
|
+
}
|
|
4073
|
+
.style-nova .cx-mk-stage {
|
|
4074
|
+
padding: 16px;
|
|
4075
|
+
min-height: 0;
|
|
4076
|
+
}
|
|
4077
|
+
.style-nova .cx-mk-stage-photo {
|
|
4078
|
+
min-height: 0;
|
|
4079
|
+
overflow: visible;
|
|
4080
|
+
padding: 0;
|
|
4081
|
+
background: none;
|
|
4082
|
+
}
|
|
4083
|
+
.style-nova .cx-mk-stage-img {
|
|
4084
|
+
position: static;
|
|
4085
|
+
height: 220px;
|
|
4086
|
+
border-radius: 20px;
|
|
4087
|
+
}
|
|
4088
|
+
.style-nova .cx-mk-stage-over {
|
|
4089
|
+
position: relative;
|
|
4090
|
+
right: auto;
|
|
4091
|
+
bottom: auto;
|
|
4092
|
+
width: auto;
|
|
4093
|
+
margin: -80px 12px 0;
|
|
4094
|
+
}
|
|
4095
|
+
.style-nova .cx-mk-cta {
|
|
4096
|
+
padding: 28px 20px;
|
|
4097
|
+
}
|
|
4098
|
+
.style-nova .cx-mk-page-head {
|
|
4099
|
+
padding-top: 112px;
|
|
4100
|
+
}
|
|
4101
|
+
.style-nova .cx-mk-panel {
|
|
4102
|
+
padding: 28px 20px;
|
|
4103
|
+
}
|
|
4104
|
+
.style-nova .cx-mk-cta-sec {
|
|
4105
|
+
margin-top: 80px;
|
|
4106
|
+
}
|
|
4107
|
+
}
|
|
4108
|
+
@media (max-width: 560px) {
|
|
4109
|
+
.style-nova .cx-mk-feats {
|
|
4110
|
+
grid-template-columns: 1fr;
|
|
4111
|
+
}
|
|
4112
|
+
}
|
|
4113
|
+
/* cx-mk-screen: a page that is one message (a 404, a «gracias»): its content centred on the whole screen. */
|
|
4114
|
+
.cx-mk-screen { min-height: 100vh; display: grid; place-items: center; padding: 40px 20px; background: var(--background); }
|
|
4115
|
+
.cx-mk-screen .cn-empty { border: 0; }
|
|
4116
|
+
.cx-mk-screen .cn-empty-header { gap: 18px; max-width: 480px; }
|
|
4117
|
+
.cx-mk-screen .cn-empty-media-icon { width: 56px; height: 56px; border-radius: 16px; font-size: 26px; }
|
|
4118
|
+
.cx-mk-screen .cn-empty-content { gap: 18px; }
|
|
4119
|
+
.cx-mk-screen .cn-empty-media-icon svg { width: 26px; height: 26px; }
|
|
4120
|
+
|
|
4121
|
+
/* ── Site chrome: the brand in the NavPill, the phone's menu sheet, and the site footer ──
|
|
4122
|
+
cx-nav-brand the logo link: .cx-nav-brand-full on a wide screen, .cx-nav-brand-mark (the figure) at ≤640px
|
|
4123
|
+
cx-nav-sheet the full-screen menu the NavPill's menu button opens on a phone (≤640px only). Open it with
|
|
4124
|
+
data-sheet="open" on the button (aria-controls = the sheet's id), close it with data-sheet="close";
|
|
4125
|
+
kit core does the rest (Escape, a link inside, the page behind stops scrolling).
|
|
4126
|
+
cx-foot the site footer: use the SiteFooter parts (site-footer.muten). */
|
|
4127
|
+
.cx-nav-brand { display: flex; align-items: center; height: 38px; flex: none; }
|
|
4128
|
+
.cx-nav-brand img { display: block; width: auto; }
|
|
4129
|
+
.cx-nav-brand .cx-nav-brand-full { height: 19px; }
|
|
4130
|
+
.cx-nav-brand .cx-nav-brand-mark { display: none; height: 14px; }
|
|
4131
|
+
@media (max-width: 640px) { .cx-nav-brand .cx-nav-brand-full { display: none; } .cx-nav-brand .cx-nav-brand-mark { display: block; } }
|
|
4132
|
+
/* a door beside the call to action («Entrar»): a link in the text's own colour, not the muted one of the nav links */
|
|
4133
|
+
.cx-navpill a.cx-nav-door { color: var(--foreground); }
|
|
4134
|
+
.cx-nav-fixed { position: fixed; top: 12px; left: 0; right: 0; z-index: var(--z-sticky, 20); padding: 0 16px; }
|
|
4135
|
+
.cx-nav-fixed .cx-navpill-wrap { position: relative; top: auto; }
|
|
4136
|
+
|
|
4137
|
+
.cx-nav-sheet { position: fixed; inset: 0; z-index: var(--z-sheet, 50); display: flex; flex-direction: column; padding: 12px 16px calc(20px + env(safe-area-inset-bottom, 0px)); box-sizing: border-box; background: var(--background); color: var(--foreground); font-family: var(--font-sans); visibility: hidden; opacity: 0; transform: translateY(-8px); transition: opacity 200ms ease, transform 200ms ease, visibility 0s linear 200ms; }
|
|
4138
|
+
.cx-nav-sheet[data-open] { visibility: visible; opacity: 1; transform: none; transition: opacity 250ms ease, transform 300ms cubic-bezier(.23, 1, .32, 1); }
|
|
4139
|
+
@media (min-width: 641px) { .cx-nav-sheet { display: none; } }
|
|
4140
|
+
.cx-nav-sheet-top { display: flex; flex-direction: row; align-items: center; justify-content: space-between; height: 58px; padding: 0 8px 0 16px; border: 1px solid var(--border); border-radius: 18px; box-sizing: border-box; }
|
|
4141
|
+
.cx-nav-sheet-top img { height: 14px; width: auto; display: block; }
|
|
4142
|
+
.cx-nav-sheet-list { display: flex; flex-direction: column; margin-top: 22px; }
|
|
4143
|
+
.cx-nav-sheet-item { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 6px; border-bottom: 1px solid var(--border); color: var(--foreground); text-decoration: none; opacity: 0; transform: translateY(6px); transition: opacity 250ms ease, transform 300ms cubic-bezier(.23, 1, .32, 1); }
|
|
4144
|
+
.cx-nav-sheet[data-open] .cx-nav-sheet-item { opacity: 1; transform: none; }
|
|
4145
|
+
.cx-nav-sheet[data-open] .cx-nav-sheet-item:nth-child(2) { transition-delay: 50ms; }
|
|
4146
|
+
.cx-nav-sheet[data-open] .cx-nav-sheet-item:nth-child(3) { transition-delay: 100ms; }
|
|
4147
|
+
.cx-nav-sheet[data-open] .cx-nav-sheet-item:nth-child(4) { transition-delay: 150ms; }
|
|
4148
|
+
.cx-nav-sheet-text { display: flex; flex-direction: column; gap: 4px; }
|
|
4149
|
+
.cx-nav-sheet-t { font-size: 24px; font-weight: 700; letter-spacing: -0.03em; line-height: 1.15; }
|
|
4150
|
+
.cx-nav-sheet-s { font-size: 14px; color: var(--muted-foreground); }
|
|
4151
|
+
.cx-nav-sheet-item > .mu-icon, .cx-nav-sheet-item > svg { font-size: 19px; color: var(--muted-foreground); flex: none; }
|
|
4152
|
+
.cx-nav-sheet-item.is-active .cx-nav-sheet-t, .cx-nav-sheet-item.is-active > .mu-icon { color: var(--selected); }
|
|
4153
|
+
.cx-nav-sheet-foot { margin-top: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
|
|
4154
|
+
.cx-nav-sheet-foot .cn-button { width: 100%; }
|
|
4155
|
+
@media (prefers-reduced-motion: reduce) { .cx-nav-sheet, .cx-nav-sheet-item { transition: none; } }
|
|
4156
|
+
|
|
4157
|
+
/* SiteFooter (site-footer.muten): the Storio landing's footer without its painting, on the theme's own tint */
|
|
4158
|
+
.cx-foot { width: 100%; container-type: inline-size; border-top: 1px solid var(--border); background: color-mix(in oklab, var(--selected, var(--primary)) 7%, var(--background)); color: var(--foreground); font-family: var(--font-sans); }
|
|
4159
|
+
.cx-foot-in { width: min(976px, calc(100% - 40px)); margin: 0 auto; padding: 72px 0 0; display: flex; flex-direction: column; gap: 32px; }
|
|
4160
|
+
.cx-foot a { color: var(--foreground); text-decoration: none; }
|
|
4161
|
+
.cx-foot a:hover, .cx-foot a.is-active { color: var(--primary); }
|
|
4162
|
+
.cx-foot a:hover { text-decoration: underline; text-underline-offset: 3px; }
|
|
4163
|
+
.cx-foot a.cn-button:hover { text-decoration: none; }
|
|
4164
|
+
.cx-foot-head { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 16px 28px; padding-bottom: 28px; border-bottom: 1px solid var(--border); }
|
|
4165
|
+
.cx-foot-brand { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 12px 28px; min-width: 0; }
|
|
4166
|
+
.cx-foot-logo { display: flex; align-items: center; }
|
|
4167
|
+
.cx-foot-logo img { display: block; height: 26px; width: auto; }
|
|
4168
|
+
.cx-foot-tag { margin: 0; font-size: 14.5px; line-height: 1.5; font-weight: 500; color: color-mix(in oklab, var(--foreground) 82%, transparent); }
|
|
4169
|
+
.cx-foot-tag:empty { display: none; }
|
|
4170
|
+
.cx-foot-doors { display: flex; flex-direction: row; flex-wrap: wrap; gap: 8px; margin-left: auto; }
|
|
4171
|
+
.cx-foot-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 30px 36px; align-items: start; }
|
|
4172
|
+
.cx-foot-col { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; min-width: 0; text-align: left; }
|
|
4173
|
+
.cx-foot-h { font-size: 11.5px; line-height: 1; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; white-space: nowrap; }
|
|
4174
|
+
.cx-foot-links { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; font-size: 14.5px; line-height: 1.35; font-weight: 500; }
|
|
4175
|
+
.cx-foot-links > a { white-space: nowrap; }
|
|
4176
|
+
.cx-foot-bar { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px 24px; margin-top: 24px; padding: 22px 0 28px; border-top: 1px solid var(--border); font-size: 13.5px; color: var(--muted-foreground); }
|
|
4177
|
+
.cx-foot-bar > :first-child { margin-right: auto; }
|
|
4178
|
+
.cx-foot .cx-foot-bar a { color: var(--muted-foreground); }
|
|
4179
|
+
.cx-foot .cx-foot-bar a:hover { color: var(--foreground); }
|
|
4180
|
+
@container (min-width: 761px) and (max-width: 1199px) { .cx-foot-grid { gap: 28px 24px; } .cx-foot-links { font-size: 13.5px; gap: 11px; } }
|
|
4181
|
+
/* the footer answers to its own width (a container), so it is right in a narrow column too */
|
|
4182
|
+
@container (max-width: 760px) {
|
|
4183
|
+
.cx-foot-in { padding-top: 48px; gap: 28px; }
|
|
4184
|
+
.cx-foot-head, .cx-foot-brand { flex-direction: column; align-items: flex-start; }
|
|
4185
|
+
.cx-foot-doors { margin-left: 0; }
|
|
4186
|
+
.cx-foot-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 20px; }
|
|
4187
|
+
.cx-foot-col[data-wide="on"] { grid-column: 1 / -1; }
|
|
4188
|
+
.cx-foot-col[data-wide="on"] > .cx-foot-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 20px; width: 100%; }
|
|
4189
|
+
.cx-foot-links > a { white-space: normal; }
|
|
4190
|
+
.cx-foot-bar { flex-direction: column; align-items: flex-start; gap: 6px; }
|
|
4191
|
+
}
|
|
4192
|
+
|
|
4193
|
+
/* ScreenTour (.cx-tour): steps beside a phone that plays them (screen-tour.js) */
|
|
4194
|
+
.cx-tour { display: flex; flex-direction: column; gap: 28px; }
|
|
4195
|
+
.cx-tour-tabs { align-self: flex-start; }
|
|
4196
|
+
.cx-tour-body { display: grid; grid-template-columns: minmax(0, 1fr) var(--tour-w, 300px); gap: 72px; align-items: start; }
|
|
4197
|
+
.cx-tour-body > * { min-width: 0; }
|
|
4198
|
+
.cx-tour-steps > li { overflow: hidden; }
|
|
4199
|
+
.cx-tour-steps { margin: 0; padding: 0; list-style: none; }
|
|
4200
|
+
.cx-tour-steps > li { cursor: pointer; border-radius: 12px; }
|
|
4201
|
+
.cx-tour-hit { position: absolute; inset: 0; z-index: 1; margin: 0; padding: 0; border: 0; border-radius: inherit; background: transparent; cursor: pointer; }
|
|
4202
|
+
.cx-tour-hit:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }
|
|
4203
|
+
/* the open step's line unfolds to its height and the others fold, so the list glides instead of jumping */
|
|
4204
|
+
.cx-tour-desc { display: grid; grid-template-rows: 0fr; opacity: 0; transition: grid-template-rows 420ms cubic-bezier(.23, 1, .32, 1), opacity 260ms ease; }
|
|
4205
|
+
.cx-tour-desc > .cx-stp-desc { overflow: hidden; min-height: 0; margin: 0; }
|
|
4206
|
+
.cx-tour-steps > li[data-state="now"] .cx-tour-desc { grid-template-rows: 1fr; opacity: 1; transition-delay: 0ms, 120ms; }
|
|
4207
|
+
.cx-tour-steps .cx-stp-label, .cx-tour-steps .cx-stp-dot { transition: color 260ms ease, background-color 260ms ease, transform 260ms cubic-bezier(.23, 1, .32, 1); }
|
|
4208
|
+
.cx-tour-steps > li[data-state="now"] .cx-stp-dot { transform: scale(1.06); }
|
|
4209
|
+
.cx-tour-steps > li { position: relative; }
|
|
4210
|
+
.cx-tour-steps > li > .cx-stp-bar { display: none; position: absolute; left: 40px; right: 0; bottom: 6px; height: 3px; overflow: hidden; border-radius: 3px; background: var(--muted); }
|
|
4211
|
+
.cx-tour-steps > li[data-state="now"] > .cx-stp-bar { display: block; }
|
|
4212
|
+
.cx-tour-steps > li .cn-progress-indicator { width: 100%; height: 100%; background: var(--foreground); transform: translateX(-100%); }
|
|
4213
|
+
.cx-tour-steps .cx-stp-check { width: 14px; height: 14px; }
|
|
4214
|
+
.cx-tour-steps > li[data-state="done"] .cn-progress-indicator { transform: none; }
|
|
4215
|
+
.cx-tour-steps > li[data-state="now"] .cn-progress-indicator { animation: cx-tour-fill var(--dur, 3.2s) linear forwards; }
|
|
4216
|
+
@keyframes cx-tour-fill { from { transform: translateX(-100%); } to { transform: none; } }
|
|
4217
|
+
.cx-tour-phone { position: sticky; top: 96px; }
|
|
4218
|
+
/* The tour's screen IS DeviceFrame's screen (cx-device-screen): the aluminium band, the black glass ring and the
|
|
4219
|
+
rounded corners come from the library phone. Its own children keep their own sizes: the frame's «every child fills
|
|
4220
|
+
the screen» rule is for a slot's content, not for the tap and the sheet. */
|
|
4221
|
+
.cx-device[data-kind="phone"] > .cx-device-screen.cx-tour-screen > .cx-tour-tap { width: 34px; height: 34px; }
|
|
4222
|
+
.cx-device[data-kind="phone"] > .cx-device-screen.cx-tour-screen > img { width: 100%; }
|
|
4223
|
+
.cx-tour-screen { position: relative; aspect-ratio: 390 / 844; overflow: hidden; background: var(--muted); }
|
|
4224
|
+
.cx-tour-screen > img { position: absolute; left: 0; top: 0; width: 100%; height: auto; display: block; opacity: 0; transform: scale(1.015); transition: opacity 480ms cubic-bezier(.23, 1, .32, 1), transform 620ms cubic-bezier(.23, 1, .32, 1); will-change: opacity; }
|
|
4225
|
+
.cx-tour-screen > img:not([data-long]) { height: 100%; object-fit: cover; object-position: top; }
|
|
4226
|
+
.cx-tour-screen > img[data-on="1"] { opacity: 1; transform: none; }
|
|
4227
|
+
.cx-tour-tap { position: absolute; z-index: 3; width: 34px; height: 34px; margin: -17px 0 0 -17px; border-radius: 50%; background: rgb(255 255 255 / .55); box-shadow: 0 0 0 2px rgb(255 255 255 / .9), 0 6px 16px rgb(0 0 0 / .25); opacity: 0; pointer-events: none; }
|
|
4228
|
+
.cx-tour-tap[data-go] { animation: cx-tour-tap 1.1s cubic-bezier(.23, 1, .32, 1) 1.2s both; }
|
|
4229
|
+
@keyframes cx-tour-tap { 0% { opacity: 0; transform: scale(1.4); } 30% { opacity: 1; transform: scale(1); } 45% { transform: scale(.82); } 60% { transform: scale(1); } 100% { opacity: 0; transform: scale(1); } }
|
|
4230
|
+
.cx-tour-done { position: absolute; inset: 0; z-index: 4; display: flex; align-items: flex-end; background: rgb(11 11 13 / 0); pointer-events: none; transition: background 300ms ease; }
|
|
4231
|
+
.cx-tour-done[data-on="1"] { background: rgb(11 11 13 / .35); }
|
|
4232
|
+
.cx-tour-sheet { width: 100%; padding: 10px 18px 22px; border-radius: 22px 22px 0 0; background: var(--card, #fff); color: var(--foreground); display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; transform: translateY(100%); transition: transform 420ms cubic-bezier(.23, 1, .32, 1); font-family: var(--font-sans); }
|
|
4233
|
+
.cx-tour-done[data-on="1"] .cx-tour-sheet { transform: none; }
|
|
4234
|
+
.cx-tour-grab { width: 36px; height: 4px; border-radius: 4px; background: var(--border); }
|
|
4235
|
+
.cx-tour-ok { width: 44px; height: 44px; border-radius: 50%; background: var(--success); color: #fff; display: grid; place-items: center; }
|
|
4236
|
+
.cx-tour-ok svg { width: 22px; height: 22px; }
|
|
4237
|
+
.cx-tour-dt { font-size: 16px; letter-spacing: -.01em; }
|
|
4238
|
+
.cx-tour-rows { width: 100%; display: flex; flex-direction: column; gap: 6px; font-size: 12.5px; }
|
|
4239
|
+
.cx-tour-rows > div { display: flex; justify-content: space-between; gap: 10px; }
|
|
4240
|
+
.cx-tour-rows span { color: var(--muted-foreground); }
|
|
4241
|
+
.cx-tour-pass { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 8px 10px; border-radius: 10px; background: var(--muted); font-size: 12.5px; }
|
|
4242
|
+
.cx-tour-pass b { font-family: var(--font-mono, ui-monospace, monospace); letter-spacing: .04em; }
|
|
4243
|
+
.cx-tour-note { margin: 0; font-size: 12px; color: var(--muted-foreground); }
|
|
4244
|
+
@media (max-width: 900px) { .cx-tour-body { grid-template-columns: 1fr; gap: 32px; } .cx-tour-phone { position: relative; top: auto; margin: 0 auto; } }
|
|
4245
|
+
@media (prefers-reduced-motion: reduce) { .cx-tour-screen > img, .cx-tour-sheet, .cx-tour-done, .cx-tour-desc { transition: none; } .cx-tour-steps > li[data-state="now"] .cn-progress-indicator { animation: none; transform: none; } }
|
|
4246
|
+
|
|
4247
|
+
/* ── marketing, more pieces: the hero's text starts at the top of its picture; a heading beside its two paragraphs
|
|
4248
|
+
(cx-mk-why); a centred closing (cx-mk-center) ── */
|
|
4249
|
+
.style-nova .cx-mk-hero-copy { padding-top: 16px; }
|
|
4250
|
+
.style-nova .cx-mk-for { max-width: 520px; font-size: 15px; line-height: 1.6; }
|
|
4251
|
+
.style-nova .cx-mk-float-card { display: flex; flex-direction: row; align-items: center; gap: 12px; }
|
|
4252
|
+
.style-nova .cx-mk-float-when { margin-left: auto; align-self: flex-start; font-size: 12px; color: var(--muted-foreground); }
|
|
4253
|
+
.style-nova .cx-mk-p-strong { color: var(--foreground); }
|
|
4254
|
+
.style-nova .cx-mk-why { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 64px; align-items: start; }
|
|
4255
|
+
.style-nova .cx-mk-why-copy { display: flex; flex-direction: column; gap: 20px; padding-top: 8px; }
|
|
4256
|
+
.style-nova .cx-mk-center { align-items: center; text-align: center; gap: 28px; }
|
|
4257
|
+
.style-nova .cx-mk-center .cx-mk-claim { justify-content: center; }
|
|
4258
|
+
@media (max-width: 900px) {
|
|
4259
|
+
.style-nova .cx-mk-hero-copy { padding-top: 0; }
|
|
4260
|
+
.style-nova .cx-mk-why { grid-template-columns: 1fr; gap: 24px; }
|
|
4261
|
+
}
|
|
4262
|
+
|
|
4263
|
+
/* Tabs that fill their row on a phone (data-fill="phone"), so they line up with the full-width field under them; and a
|
|
4264
|
+
row of filters that slides sideways on a phone instead of breaking into lines. The hero's and the band's text start
|
|
4265
|
+
on the page's column (cx-mk-col): both boxes are 1168 wide, the column 976, so the text steps in 96. */
|
|
4266
|
+
@media (max-width: 640px) {
|
|
4267
|
+
.cx-tabs[data-fill="phone"] { align-self: stretch; display: flex; width: 100%; }
|
|
4268
|
+
.cx-tabs[data-fill="phone"] > .cx-tab { flex: 1; justify-content: center; }
|
|
4269
|
+
.style-nova .cx-mk-filters { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-inline: -20px; padding-inline: 20px; -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); mask-image: linear-gradient(90deg, #000 85%, transparent); }
|
|
4270
|
+
.style-nova .cx-mk-filters::-webkit-scrollbar { display: none; }
|
|
4271
|
+
.style-nova .cx-mk-filters > * { flex: none; }
|
|
4272
|
+
}
|
|
4273
|
+
|
|
4274
|
+
/* A product shown in a soft frame, full width of the hero (cx-mk-frame) with its line under it; and search results as
|
|
4275
|
+
Google would show them (cx-mk-serp): the query, then each result's site, address, title and description. */
|
|
4276
|
+
.style-nova .cx-mk-frame-sec { width: min(1168px, calc(100% - 40px)); margin: 128px auto 0; display: flex; flex-direction: column; gap: 20px; }
|
|
4277
|
+
.style-nova .cx-mk-frame { border-radius: 20px; background: var(--muted); padding: 24px; }
|
|
4278
|
+
.style-nova .cx-mk-frame-note { margin: 0; text-align: center; font-size: 13px; color: var(--muted-foreground); }
|
|
4279
|
+
.style-nova .cx-mk-split-even { width: min(976px, calc(100% - 40px)); margin-inline: auto; display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 64px; align-items: center; }
|
|
4280
|
+
.style-nova .cx-mk-split-even > .cx-mk-head { gap: 24px; align-items: flex-start; }
|
|
4281
|
+
.style-nova .cx-mk-serp { border-radius: 24px; background: var(--muted); padding: 32px; display: flex; flex-direction: column; gap: 22px; }
|
|
4282
|
+
.style-nova .cx-mk-serp > .cn-input-group { background: var(--background); }
|
|
4283
|
+
.style-nova .cx-mk-serp-list { border-radius: 16px; background: var(--background); padding: 24px; display: flex; flex-direction: column; gap: 24px; box-shadow: 0 20px 40px -28px rgb(11 11 13 / .35); }
|
|
4284
|
+
.style-nova .cx-mk-serp-hit { display: flex; flex-direction: column; gap: 6px; }
|
|
4285
|
+
.style-nova .cx-mk-serp-site { display: flex; flex-direction: row; align-items: center; gap: 10px; }
|
|
4286
|
+
.style-nova .cx-mk-serp-fav { width: 28px; height: 28px; border-radius: 99px; background: var(--primary); color: var(--primary-foreground); display: grid; place-items: center; font-size: 12px; font-weight: 700; flex: none; }
|
|
4287
|
+
.style-nova .cx-mk-serp-name { display: flex; flex-direction: column; font-size: 13px; font-weight: 600; }
|
|
4288
|
+
.style-nova .cx-mk-serp-name > span:last-child { font-size: 12px; font-weight: 400; color: var(--muted-foreground); }
|
|
4289
|
+
.style-nova .cx-mk-serp-t { font-size: 19px; line-height: 1.3; letter-spacing: -0.01em; font-weight: 600; color: var(--selected); }
|
|
4290
|
+
.style-nova .cx-mk-serp-d { margin: 0; font-size: 14px; line-height: 1.55; color: var(--muted-foreground); }
|
|
4291
|
+
.style-nova .cx-mk-serp-list > hr { margin: 0; border: 0; border-top: 1px solid var(--border); }
|
|
4292
|
+
/* GOOGLE AS GOOGLE DRAWS IT: the rounded box with its shadow, the tabs under it, each result's site (its icon, its name
|
|
4293
|
+
over its address), the blue link title, the grey snippet and the page's own links. Google's colours, fixed: it is a
|
|
4294
|
+
picture of another product, and the result card stays white in both themes. */
|
|
4295
|
+
.style-nova .cx-mk-serp > .cn-input-group { border-radius: 24px; box-shadow: 0 1px 6px rgb(32 33 36 / .18); border-color: transparent; }
|
|
4296
|
+
.style-nova .cx-mk-serp-tabs { display: flex; flex-direction: row; gap: 20px; padding: 0 8px; margin-top: -8px; font: 13px Arial, Helvetica, sans-serif; color: #5f6368; }
|
|
4297
|
+
.style-nova .cx-mk-serp-tabs > [data-on] { color: #1a73e8; box-shadow: inset 0 -3px 0 #1a73e8; padding-bottom: 8px; }
|
|
4298
|
+
.style-nova .cx-mk-serp-list { background: #fff; color: #202124; font-family: Arial, Helvetica, sans-serif; }
|
|
4299
|
+
.style-nova .cx-mk-serp-fav { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 1px #ecedef; }
|
|
4300
|
+
.style-nova .cx-mk-serp-name { color: #202124; font-weight: 400; font-size: 14px; }
|
|
4301
|
+
.style-nova .cx-mk-serp-name > span:last-child { color: #4d5156; }
|
|
4302
|
+
.style-nova .cx-mk-serp-t { color: #1a0dab; font-weight: 400; font-size: 20px; letter-spacing: 0; }
|
|
4303
|
+
.style-nova .cx-mk-serp-d { color: #4d5156; }
|
|
4304
|
+
.style-nova .cx-mk-serp-links { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px 18px; font-size: 14px; color: #1a0dab; }
|
|
4305
|
+
.style-nova .cx-mk-serp-list > .cn-separator { background: #ebebeb; }
|
|
4306
|
+
@media (max-width: 900px) { .style-nova .cx-mk-split-even { grid-template-columns: 1fr; gap: 32px; } .style-nova .cx-mk-frame-sec { margin-top: 80px; } .style-nova .cx-mk-frame { padding: 12px; } .style-nova .cx-mk-serp { padding: 16px; } }
|
|
4307
|
+
.style-nova .cx-mk-photo[data-focus="left"] img { object-position: 35% center; }
|
|
4308
|
+
.style-nova .cx-mk-words { gap: 28px; }
|
|
4309
|
+
|
|
4310
|
+
/* the hero's smaller picture (440 × 560) and a headline that breaks onto two lines; a split's heading at 56 */
|
|
4311
|
+
.style-nova .cx-mk-hero[data-media="sm"] { grid-template-columns: minmax(0, 1fr) 440px; }
|
|
4312
|
+
.style-nova .cx-mk-hero[data-media="sm"] .cx-mk-hero-media { height: 560px; }
|
|
4313
|
+
.style-nova .cx-mk-h1-wrap { white-space: normal; }
|
|
4314
|
+
.style-nova .cx-mk-split-even .cx-mk-h2 { font-size: clamp(36px, 4.4vw, 56px); }
|
|
4315
|
+
@media (max-width: 900px) { .style-nova .cx-mk-hero[data-media="sm"] { grid-template-columns: 1fr; } .style-nova .cx-mk-hero[data-media="sm"] .cx-mk-hero-media { height: 440px; } }
|
|
4316
|
+
|
|
4317
|
+
/* A comparison page: the hero beside a real screen (cx-mk-vs-hero), the table (cx-mk-vs-table: what, us with a check,
|
|
4318
|
+
them in muted), and «bring your …» (cx-mk-bring: a muted panel with the old page, an arrow, the new one, and the field).
|
|
4319
|
+
cx-mk-bio draws a link-in-bio page inside a DeviceFrame. */
|
|
4320
|
+
.style-nova .cx-mk-vs-hero { padding-top: 112px; display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 48px; align-items: start; }
|
|
4321
|
+
.style-nova .cx-mk-vs-copy { gap: 28px; align-items: flex-start; padding-bottom: 48px; }
|
|
4322
|
+
.style-nova .cx-mk-vs-h1 { font-size: clamp(48px, 6.4vw, 80px); line-height: 1.02; letter-spacing: -0.05em; }
|
|
4323
|
+
@media (min-width: 901px) { .style-nova .cx-mk-vs-h1 { white-space: nowrap; } }
|
|
4324
|
+
.style-nova .cx-mk-vs-table { display: table; width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 14px; }
|
|
4325
|
+
/* the whole comparison always fits its column: fixed columns, text that wraps, never a sideways scroll */
|
|
4326
|
+
.style-nova .cn-table-container:has(> .cx-mk-vs-table) { overflow: visible; }
|
|
4327
|
+
.style-nova .cx-mk-vs-table > .cn-table-row > :nth-child(1) { width: 34%; }
|
|
4328
|
+
.style-nova .cx-mk-vs-table > .cn-table-row > :nth-child(2) { width: 36%; }
|
|
4329
|
+
.style-nova .cx-mk-vs-table > .cn-table-row > :nth-child(3) { width: 30%; }
|
|
4330
|
+
.style-nova .cx-mk-vs-table > .cn-table-row { display: table-row; }
|
|
4331
|
+
.style-nova .cx-mk-vs-table > .cn-table-row > * { display: table-cell; padding: 12px; border-bottom: 1px solid var(--border); vertical-align: top; white-space: normal; overflow-wrap: break-word; line-height: 1.45; }
|
|
4332
|
+
.style-nova .cx-mk-vs-head > * { font-size: 15px; font-weight: 600; color: var(--foreground); padding-top: 0; vertical-align: bottom; }
|
|
4333
|
+
.style-nova .cx-mk-vs-logo { height: 15px; width: auto; display: block; margin-bottom: 2px; }
|
|
4334
|
+
.style-nova .cx-mk-vs-what { font-weight: 500; }
|
|
4335
|
+
.style-nova .cx-mk-vs-us { font-weight: 600; }
|
|
4336
|
+
.style-nova .cx-mk-vs-us { display: table-cell; }
|
|
4337
|
+
.style-nova .cx-mk-vs-us > .mu-icon { color: var(--success); margin-right: 8px; vertical-align: -2px; float: left; margin-top: 3px; }
|
|
4338
|
+
.style-nova .cx-mk-vs-us > span { display: block; overflow: hidden; }
|
|
4339
|
+
.style-nova .cx-mk-vs-them { color: var(--muted-foreground); }
|
|
4340
|
+
.style-nova .cx-mk-vs-note { margin: 20px 0 0; font-size: 12px; color: var(--muted-foreground); }
|
|
4341
|
+
.style-nova .cx-mk-bring { border-radius: 28px; background: var(--muted); padding: 56px; display: flex; flex-direction: column; align-items: center; gap: 32px; scroll-margin-top: 96px; }
|
|
4342
|
+
.style-nova .cx-mk-bring-head { display: flex; flex-direction: column; align-items: center; gap: 14px; text-align: center; }
|
|
4343
|
+
.style-nova .cx-mk-bring-head .cx-mk-h2 { font-size: clamp(32px, 4vw, 48px); }
|
|
4344
|
+
.style-nova .cx-mk-bring-head .cx-mk-p { max-width: 560px; }
|
|
4345
|
+
.style-nova .cx-mk-bring-row { display: flex; flex-direction: row; align-items: center; gap: 40px; }
|
|
4346
|
+
.style-nova .cx-mk-bring-side { display: flex; flex-direction: column; align-items: center; gap: 14px; }
|
|
4347
|
+
.style-nova .cx-mk-bring-arrow { width: 52px; height: 52px; border-radius: 99px; background: var(--primary); color: var(--primary-foreground); display: grid; place-items: center; font-size: 22px; flex: none; }
|
|
4348
|
+
.style-nova .cx-mk-bring-form .cn-input-group, .style-nova .cx-mk-bring-form .cn-input-group[data-variant] { width: 340px; background: var(--background); }
|
|
4349
|
+
.style-nova .cx-mk-bio { height: 520px; padding: 42px 16px; display: flex; flex-direction: column; align-items: center; gap: 8px; background: var(--background); box-sizing: border-box; }
|
|
4350
|
+
.style-nova .cx-mk-bio-av { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; font-size: 20px; font-weight: 600; background: color-mix(in oklab, var(--selected) 14%, var(--background)); color: var(--selected); margin-bottom: 4px; }
|
|
4351
|
+
.style-nova .cx-mk-bio-links { width: 100%; display: flex; flex-direction: column; gap: 10px; margin-top: 14px; }
|
|
4352
|
+
.style-nova .cx-mk-bio-links > .cn-button { width: 100%; border-radius: 99px; pointer-events: none; }
|
|
4353
|
+
@media (max-width: 900px) {
|
|
4354
|
+
.style-nova .cx-mk-vs-hero { grid-template-columns: 1fr; padding-top: 104px; gap: 0; }
|
|
4355
|
+
.style-nova .cx-mk-vs-hero > .cx-device { margin: 0 auto; }
|
|
4356
|
+
.style-nova .cx-mk-bring { padding: 28px 16px; }
|
|
4357
|
+
.style-nova .cx-mk-bring-row { flex-direction: column; gap: 20px; }
|
|
4358
|
+
.style-nova .cx-mk-bring-arrow { transform: rotate(90deg); }
|
|
4359
|
+
.style-nova .cx-mk-bring-form .cn-input-group { width: 100%; }
|
|
4360
|
+
.style-nova .cx-mk-vs-table > .cn-table-row > * { padding: 12px 6px; font-size: 13px; }
|
|
4361
|
+
}
|
|
4362
|
+
/* On a phone each row of a comparison is a block: what, then each side on its own line with its name (data-label). */
|
|
4363
|
+
@media (max-width: 640px) {
|
|
4364
|
+
.style-nova .cn-table-container:has(> .cx-mk-vs-table) { overflow: visible; }
|
|
4365
|
+
.style-nova .cx-mk-vs-table, .style-nova .cx-mk-vs-table > .cn-table-row { display: block; }
|
|
4366
|
+
.style-nova .cx-mk-vs-table > .cx-mk-vs-head { display: none; }
|
|
4367
|
+
.style-nova .cx-mk-vs-table > .cn-table-row { padding: 14px 0; border-bottom: 1px solid var(--border); }
|
|
4368
|
+
.style-nova .cx-mk-vs-table > .cn-table-row > :nth-child(n) { display: block; width: auto; padding: 3px 0; border: 0; font-size: 14px; white-space: normal; overflow-wrap: break-word; } /* :nth-child(n) to outrank the desktop column widths */
|
|
4369
|
+
.style-nova .cx-mk-vs-table .cx-mk-vs-us > .mu-icon { display: none; }
|
|
4370
|
+
.style-nova .cx-mk-vs-table .cx-mk-vs-what { font-weight: 600; padding-bottom: 6px; }
|
|
4371
|
+
.style-nova .cx-mk-vs-table [data-label]::before { content: attr(data-label) ": "; font-weight: 500; color: var(--muted-foreground); }
|
|
4372
|
+
.style-nova .cx-mk-vs-table .cx-mk-vs-us[data-label]::before { color: var(--brand, var(--primary)); font-weight: 600; }
|
|
4373
|
+
}
|
|
4374
|
+
|
|
4375
|
+
/* the help page's search (560 wide) and its closing card: one Item with the address and «Copiar» */
|
|
4376
|
+
.style-nova .cx-mk-search { width: min(560px, 100%); margin-top: 8px; }
|
|
4377
|
+
.style-nova .cx-mk-ask { margin-top: 96px; }
|
|
4378
|
+
.style-nova .cx-mk-ask-card { padding: 8px; }
|
|
4379
|
+
.style-nova .cx-mk-ask-card .cn-item-actions { display: flex; flex-direction: row; align-items: center; gap: 14px; }
|
|
4380
|
+
.style-nova .cx-mk-mail { color: var(--foreground); text-decoration: none; font-size: 14px; }
|
|
4381
|
+
@media (max-width: 900px) { .style-nova .cx-mk-list, .style-nova .cx-mk-ask { margin-top: 56px; } .style-nova .cx-mk-ask-card .cn-item { flex-wrap: wrap; } }
|
|
4382
|
+
|
|
4383
|
+
/* A legal document (cx-doc-*): the documents as a navbar, the title, its line and the date; then two columns, the
|
|
4384
|
+
contents (a vertical navbar that follows the reading: data(spy: "on"), kit core marks the section on screen) and the
|
|
4385
|
+
text at reading width, each section titled «N. Title». */
|
|
4386
|
+
.style-nova .cx-doc-head { padding-top: 96px; display: flex; flex-direction: column; gap: 24px; align-items: flex-start; }
|
|
4387
|
+
.style-nova .cx-doc-h1 { margin-top: 16px; font-size: clamp(40px, 5vw, 64px); line-height: 1.02; letter-spacing: -0.05em; }
|
|
4388
|
+
.style-nova .cx-doc-line { margin: 0; font-size: 15px; color: var(--muted-foreground); }
|
|
4389
|
+
.style-nova .cx-doc-a { color: var(--foreground); text-decoration: underline; text-underline-offset: 3px; }
|
|
4390
|
+
.style-nova .cx-doc-note { margin: 0; max-width: 640px; padding: 16px 20px; border-radius: 12px; background: var(--muted); font-size: 14.5px; line-height: 1.6; color: var(--foreground); }
|
|
4391
|
+
.style-nova .cx-doc-body { margin-top: 72px; display: grid; grid-template-columns: 264px minmax(0, 1fr); gap: 64px; align-items: start; }
|
|
4392
|
+
.style-nova .cx-doc-toc { position: sticky; top: 96px; flex-direction: column; align-items: stretch; gap: 2px; max-height: calc(100vh - 120px); overflow-y: auto; scrollbar-width: thin; }
|
|
4393
|
+
.style-nova .cx-doc-toc > .cx-nav { justify-content: flex-start; text-align: left; white-space: normal; height: auto; min-height: 32px; padding-block: 6px; line-height: 1.35; }
|
|
4394
|
+
.style-nova .cx-nav[data-marker="fill"][aria-current]:not([aria-current="false"]) { background: var(--selected-soft); color: var(--selected); }
|
|
4395
|
+
.style-nova .cx-nav[data-marker="fill"][aria-current]::after { display: none; }
|
|
4396
|
+
.style-nova .cx-doc-article { display: flex; flex-direction: column; gap: 32px; max-width: 640px; }
|
|
4397
|
+
.style-nova .cx-doc-sec { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; scroll-margin-top: 96px; }
|
|
4398
|
+
.style-nova .cx-doc-h2 { margin: 0; font-size: 24px; line-height: 1.25; letter-spacing: -0.02em; font-weight: 700; }
|
|
4399
|
+
.style-nova .cx-doc-p { margin: 0; font-size: 16px; line-height: 1.7; color: color-mix(in srgb, var(--foreground) 80%, transparent); white-space: pre-line; }
|
|
4400
|
+
.style-nova .cx-doc-mail { color: var(--foreground); text-decoration: underline; text-underline-offset: 3px; }
|
|
4401
|
+
.style-nova .cx-doc-act { margin-top: 6px; }
|
|
4402
|
+
@media (max-width: 900px) {
|
|
4403
|
+
.style-nova .cx-doc-head { padding-top: 104px; }
|
|
4404
|
+
.style-nova .cx-doc-body { grid-template-columns: 1fr; gap: 24px; margin-top: 40px; }
|
|
4405
|
+
.style-nova .cx-doc-toc { position: relative; top: auto; max-height: none; flex-direction: row; flex-wrap: nowrap; overflow-x: auto; margin-inline: -20px; padding-inline: 20px; scrollbar-width: none; }
|
|
4406
|
+
.style-nova .cx-doc-toc > .cx-nav { flex: none; white-space: nowrap; }
|
|
4407
|
+
}
|
|
4408
|
+
.style-nova .cx-mk-ask-card .cn-item { padding: 12px 16px; align-items: center; gap: 14px; }
|
|
4409
|
+
.style-nova .cx-doc-toc > .cx-nav { font-size: 12.5px; }
|
|
4410
|
+
.style-nova .cx-doc-line { display: block; }
|
|
4411
|
+
|
|
4412
|
+
/* A blog (cx-blog-*): the big title beside the topics, the article that is out as a card with its picture (tools as
|
|
4413
|
+
tilted cards, an arrow, one phone), the ones coming up as an ItemGroup. An article (cx-post-*): a 680-wide column
|
|
4414
|
+
with the breadcrumb, the topic, the title, its lead, the author, then the text with a quote, a table and a card. */
|
|
4415
|
+
.style-nova .cx-blog-head { padding-top: 112px; display: flex; flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 32px; }
|
|
4416
|
+
.style-nova .cx-blog-h1 { font-size: clamp(64px, 8vw, 112px); line-height: 1; letter-spacing: -0.055em; }
|
|
4417
|
+
.style-nova .cx-blog-feature { margin-top: 72px; }
|
|
4418
|
+
.style-nova .cx-blog-card { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 40px; align-items: center; padding: 24px; }
|
|
4419
|
+
.style-nova .cx-blog-copy { display: flex; flex-direction: column; gap: 18px; align-items: flex-start; }
|
|
4420
|
+
.style-nova .cx-blog-meta { display: flex; flex-direction: row; gap: 8px; align-items: center; }
|
|
4421
|
+
.style-nova .cx-blog-title { margin: 0; font-size: clamp(28px, 3.2vw, 40px); line-height: 1.1; letter-spacing: -0.04em; font-weight: 700; }
|
|
4422
|
+
.style-nova .cx-blog-art { position: relative; height: 340px; border-radius: 16px; background: var(--muted); overflow: hidden; display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 16px; padding: 0 16px; }
|
|
4423
|
+
.style-nova .cx-blog-tools { display: flex; flex-direction: column; gap: 10px; width: 218px; flex: none; }
|
|
4424
|
+
.style-nova .cx-blog-tool { width: 200px; box-shadow: 0 10px 24px -18px rgb(11 11 13 / .4); }
|
|
4425
|
+
.style-nova .cx-blog-tool:nth-child(1) { transform: rotate(-2deg); }
|
|
4426
|
+
.style-nova .cx-blog-tool:nth-child(2) { transform: translateX(10px) rotate(1.5deg); }
|
|
4427
|
+
.style-nova .cx-blog-tool:nth-child(3) { transform: translateX(2px) rotate(-1deg); }
|
|
4428
|
+
.style-nova .cx-blog-tool:nth-child(4) { transform: translateX(12px) rotate(2deg); }
|
|
4429
|
+
.style-nova .cx-blog-arrow { width: 40px; height: 40px; font-size: 18px; }
|
|
4430
|
+
.style-nova .cx-blog-phone { align-self: flex-start; margin-top: 28px; }
|
|
4431
|
+
/* A live store (StorePhone) in the places a page used to show a screenshot of one: the same size the picture had. */
|
|
4432
|
+
.style-nova .cx-mk-alt-media > .cx-device { --dw: 280px; }
|
|
4433
|
+
.style-nova .cx-mk-who-note { margin: 14px 0 0; font-size: 13px; line-height: 1.4; color: var(--muted-foreground); text-align: center; max-width: 280px; }
|
|
4434
|
+
.style-nova .cx-mk-stage > .cx-device { --dw: 260px; align-self: center; }
|
|
4435
|
+
.style-nova .cx-mk-step-vis > .cx-device { --dw: min(52%, 160px); }
|
|
4436
|
+
.style-nova .cx-blog-phone > .cx-device { --dw: 150px; }
|
|
4437
|
+
.style-nova .cx-blog-soon { margin-top: 96px; display: flex; flex-direction: column; gap: 16px; }
|
|
4438
|
+
.style-nova .cx-blog-soon .cn-item-group > .cn-item { border-bottom: 1px solid var(--border); border-radius: 0; }
|
|
4439
|
+
.style-nova .cx-post-head { width: min(680px, calc(100% - 40px)); margin: 0 auto; padding-top: 96px; display: flex; flex-direction: column; gap: 24px; }
|
|
4440
|
+
.style-nova .cx-post-h1 { font-size: clamp(40px, 5vw, 64px); line-height: 1.02; letter-spacing: -0.05em; }
|
|
4441
|
+
.style-nova .cx-post-lead { margin: 0; font-size: 20px; line-height: 1.55; color: var(--muted-foreground); }
|
|
4442
|
+
.style-nova .cx-post-av { width: 36px; height: 36px; border-radius: 50%; background: var(--primary); display: grid; place-items: center; }
|
|
4443
|
+
.style-nova .cx-post-av img { width: 18px; height: auto; filter: brightness(0) invert(1); }
|
|
4444
|
+
.style-nova .cx-post-body { width: min(680px, calc(100% - 40px)); margin: 48px auto 0; display: flex; flex-direction: column; gap: 40px; }
|
|
4445
|
+
.style-nova .cx-post-sec { display: flex; flex-direction: column; gap: 12px; }
|
|
4446
|
+
.style-nova .cx-post-h2 { margin: 0; font-size: 28px; line-height: 1.2; letter-spacing: -0.03em; font-weight: 700; }
|
|
4447
|
+
.style-nova .cx-post-p { margin: 0; font-size: 17px; line-height: 1.7; color: color-mix(in srgb, var(--foreground) 82%, transparent); }
|
|
4448
|
+
.style-nova .cx-post-quote { margin: 0; padding-left: 20px; border-left: 3px solid var(--selected); font-size: 24px; line-height: 1.45; letter-spacing: -0.02em; font-style: italic; }
|
|
4449
|
+
.style-nova .cx-post-table { margin-top: 12px; }
|
|
4450
|
+
.style-nova .cx-post-try { padding: 24px; display: flex; flex-direction: column; gap: 16px; }
|
|
4451
|
+
.style-nova .cx-post-try .cn-card-title { margin: 0; font-size: 18px; font-weight: 600; }
|
|
4452
|
+
@media (max-width: 900px) {
|
|
4453
|
+
.style-nova .cx-blog-head { flex-direction: column; align-items: flex-start; padding-top: 104px; }
|
|
4454
|
+
.style-nova .cx-blog-card { grid-template-columns: 1fr; padding: 16px; }
|
|
4455
|
+
.style-nova .cx-blog-art { height: 300px; }
|
|
4456
|
+
.style-nova .cx-blog-tools { width: 170px; } .style-nova .cx-blog-tool { width: 160px; }
|
|
4457
|
+
.style-nova .cx-post-head { padding-top: 104px; }
|
|
4458
|
+
}
|
|
4459
|
+
.style-nova .cx-blog-tool .cn-item { padding: 10px 12px; align-items: center; }
|
|
4460
|
+
.style-nova .cx-blog-soon .cn-item-group > .cn-item { border: 0; border-bottom: 1px solid var(--border); border-radius: 0; padding: 18px 6px; }
|
|
4461
|
+
.style-nova .cx-post-head > .cn-item { border: 0; padding: 0; gap: 12px; }
|
|
4462
|
+
|
|
4463
|
+
/* A pricing page (cx-pr-*): the switch at the title's side, plans as cards (the recommended one outlined in the brand
|
|
4464
|
+
with its badge), a big amount and what it is billed, the plan's lines with checks; a row for add-ons; a comparison
|
|
4465
|
+
table grouped by topic, plan names as the head. */
|
|
4466
|
+
.style-nova .cx-pr-head { align-items: flex-end; }
|
|
4467
|
+
.style-nova .cx-pr-h1 { font-size: clamp(48px, 6.4vw, 80px); line-height: 1.02; letter-spacing: -0.05em; }
|
|
4468
|
+
.style-nova .cx-pr-switch { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; flex: none; }
|
|
4469
|
+
.style-nova .cx-pr-switch .cx-tabs { align-items: center; }
|
|
4470
|
+
.style-nova .cx-pr-save { margin-inline: 4px; }
|
|
4471
|
+
.style-nova .cx-pr-where { font-size: 12.5px; }
|
|
4472
|
+
.style-nova .cx-pr-plans { margin-top: 56px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
|
|
4473
|
+
.style-nova .cx-pr-plan { position: relative; display: flex; flex-direction: column; gap: 12px; padding: 24px; }
|
|
4474
|
+
.style-nova .cx-pr-plan-hi { border-color: var(--selected); box-shadow: 0 0 0 1px var(--selected), 0 24px 48px -32px color-mix(in srgb, var(--selected) 60%, transparent); }
|
|
4475
|
+
.style-nova .cx-pr-badge { position: absolute; top: -11px; left: 20px; background: var(--selected); color: var(--selected-foreground, #fff); }
|
|
4476
|
+
.style-nova .cx-pr-name { margin: 0; font-size: 18px; font-weight: 700; letter-spacing: -0.01em; }
|
|
4477
|
+
.style-nova .cx-pr-desc { margin: 0; font-size: 14px; line-height: 1.5; color: var(--muted-foreground); min-height: 42px; }
|
|
4478
|
+
.style-nova .cx-pr-price { display: flex; flex-direction: row; align-items: baseline; gap: 6px; margin-top: 8px; }
|
|
4479
|
+
.style-nova .cx-pr-amt { display: flex; flex-direction: row; align-items: baseline; font-size: 40px; font-weight: 700; letter-spacing: -0.04em; line-height: 1; }
|
|
4480
|
+
.style-nova .cx-pr-per { font-size: 14px; color: var(--muted-foreground); }
|
|
4481
|
+
.style-nova .cx-pr-bill { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; margin: 0; font-size: 13px; color: var(--muted-foreground); }
|
|
4482
|
+
.style-nova .cx-pr-was { text-decoration: line-through; }
|
|
4483
|
+
.style-nova .cx-pr-cta { width: 100%; margin-top: 8px; }
|
|
4484
|
+
.style-nova .cx-pr-plus { font-size: 13px; font-weight: 600; margin-top: 4px; }
|
|
4485
|
+
.style-nova .cx-pr-gets { display: flex; flex-direction: column; gap: 8px; }
|
|
4486
|
+
.style-nova .cx-pr-get { display: flex; flex-direction: row; gap: 8px; align-items: flex-start; font-size: 13.5px; line-height: 1.45; }
|
|
4487
|
+
.style-nova .cx-pr-tick { flex: none; margin-top: 2px; color: var(--success); }
|
|
4488
|
+
.style-nova .cx-pr-ai { margin-top: 16px; }
|
|
4489
|
+
.style-nova .cx-pr-ai-card .cn-item { padding: 12px 16px; align-items: center; }
|
|
4490
|
+
.style-nova .cx-pr-table { display: grid; grid-template-columns: minmax(0, 1.1fr) repeat(var(--plans, 3), minmax(0, 1fr)); font-size: 14px; }
|
|
4491
|
+
.style-nova .cx-pr-table > .cx-pr-tr { display: contents; }
|
|
4492
|
+
.style-nova .cx-pr-table > .cx-pr-tr > * { padding: 12px; border-bottom: 1px solid var(--border); display: flex; align-items: center; }
|
|
4493
|
+
.style-nova .cx-pr-thead > * { font-size: 13px; font-weight: 600; color: var(--muted-foreground); }
|
|
4494
|
+
.style-nova .cx-pr-rh { font-weight: 500; }
|
|
4495
|
+
.style-nova .cx-pr-hi { background: color-mix(in srgb, var(--selected) 5%, transparent); }
|
|
4496
|
+
.style-nova .cx-pr-group { grid-column: 1 / -1; padding: 20px 12px 6px; font-size: 12px; font-weight: 600; color: var(--muted-foreground); }
|
|
4497
|
+
.style-nova .cx-pr-yes { color: var(--success); }
|
|
4498
|
+
.style-nova .cx-pr-no { color: var(--muted-foreground); }
|
|
4499
|
+
@media (max-width: 900px) {
|
|
4500
|
+
.style-nova .cx-pr-plans { grid-template-columns: 1fr; gap: 24px; }
|
|
4501
|
+
.style-nova .cx-pr-switch { align-items: flex-start; }
|
|
4502
|
+
.style-nova .cx-pr-table { font-size: 12.5px; }
|
|
4503
|
+
.style-nova .cx-pr-table > .cx-pr-tr > * { padding: 10px 6px; }
|
|
4504
|
+
.style-nova .cx-pr-table { grid-template-columns: minmax(0, 1.3fr) repeat(var(--plans, 3), minmax(0, 1fr)); }
|
|
4505
|
+
}
|
|
4506
|
+
.style-nova .cx-pr-plan { overflow: visible; }
|
|
4507
|
+
|
|
4508
|
+
/* The soft words of a WordLine stay readable: big type needs 3:1, the old grey gave 2.2. */
|
|
4509
|
+
.cx-wordline .cx-word:not([data-tone="strong"]) { color: color-mix(in srgb, var(--foreground) 46%, var(--background)); }
|
|
4510
|
+
@media (max-width: 900px) { .style-nova .cx-doc-h1 { font-size: 52px; } }
|
|
4511
|
+
/* An Item is a row: muten's Stack is a column by default, and before the full sheet arrives that default won, so the
|
|
4512
|
+
first paint stacked the media over the text and the row snapped into place later (a layout shift). */
|
|
4513
|
+
.cn-item { flex-direction: row; }
|
|
4514
|
+
|
|
4515
|
+
/* the closing call's field keeps its white on the muted panel (the filled variant would melt into it) */
|
|
4516
|
+
.style-nova .cx-mk-cta .cn-input-group[data-variant] { background: var(--background); }
|
|
4517
|
+
/* the blog's tools: small cards whose icon sits by the title */
|
|
4518
|
+
.style-nova .cx-blog-tool .cn-item { padding: 8px 10px; align-items: flex-start; gap: 10px; }
|
|
4519
|
+
.style-nova .cx-blog-tool .cn-item-media { width: 26px; height: 26px; border-radius: 8px; flex: none; }
|
|
4520
|
+
.style-nova .cx-blog-tool .cn-item-title { font-size: 13px; }
|
|
4521
|
+
.style-nova .cx-blog-tool .cn-item-description { font-size: 12px; line-height: 1.35; }
|
|
4522
|
+
/* a filled field on a muted panel (the closing call, «bring your …», the search results) takes the page's white */
|
|
4523
|
+
.style-nova :is(.cx-mk-cta, .cx-mk-bring, .cx-mk-serp, .cx-blog-art) .cn-input-group:is([data-variant="filled"], .cx-fieldset[data-look="filled"] *) { background: var(--background); }
|
|
4524
|
+
/* BETWEEN TABLET AND DESKTOP (901-1180px) the hero is two columns but narrow: the title steps down so it never runs into
|
|
4525
|
+
the media, and a chat floating over the photo stays inside the column instead of hanging off its right edge. */
|
|
4526
|
+
@media (min-width: 901px) and (max-width: 1180px) {
|
|
4527
|
+
.style-nova .cx-mk-hero { grid-template-columns: minmax(0, 1fr) minmax(0, 420px); gap: 40px; }
|
|
4528
|
+
.style-nova .cx-mk-hero .cx-mk-h1 { font-size: clamp(44px, 5.4vw, 64px); }
|
|
4529
|
+
.style-nova .cx-mk-float-play { right: 12px; width: min(330px, calc(100% - 24px)); }
|
|
4530
|
+
}
|
|
4531
|
+
|
|
4532
|
+
/* ═════ THE CHATS AS PHONES (ChatPlay with a skin) ═════
|
|
4533
|
+
Each app as it looks today on the phone, at a phone's proportion (270 × 585, about 2.17 : 1, not a squat 2 : 1) with its status bar and a dark rim.
|
|
4534
|
+
The messages are ALWAYS visible: they come in with a small rise once and never fade out, so the chat is never blank
|
|
4535
|
+
(the old 12-second loop hid every message at its start and end). The apps' own colours are fixed on purpose. */
|
|
4536
|
+
.cx-cp-sb, .cx-cp-menu { display: none; }
|
|
4537
|
+
.cx-cp[data-skin] { width: 270px; max-width: 100%; height: 585px; border-radius: 34px; overflow: hidden; box-shadow: 0 0 0 8px #111, 0 0 0 9px #333, 0 24px 60px -20px rgb(20 10 40 / .45); margin: 9px auto; }
|
|
4538
|
+
.cx-cp[data-skin] .cx-cp-sb { display: flex; flex: none; height: 30px; align-items: center; justify-content: space-between; padding: 0 22px 0 26px; font: 600 12px var(--font-sans); background: var(--cp-head); color: var(--cp-head-fg); }
|
|
4539
|
+
.cx-cp[data-skin] .cx-cp-sbi { display: flex; gap: 4px; }
|
|
4540
|
+
.cx-cp[data-skin] .cx-cp-sbi svg { width: 14px; height: 14px; }
|
|
4541
|
+
.cx-cp[data-skin] .cx-cp-head { flex: none; padding-top: 4px; }
|
|
4542
|
+
.cx-cp[data-skin] .cx-cp-log { flex: 1; min-height: 0; justify-content: flex-end; overflow: hidden; }
|
|
4543
|
+
.cx-cp[data-skin] .cx-cp-comp { flex: none; }
|
|
4544
|
+
.cx-cp[data-skin] .cx-cp-t, .cx-cp[data-skin] .cx-cp-s { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
4545
|
+
/* never blank: no hide-and-show loop with a skin, only a rise when it comes into view */
|
|
4546
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
4547
|
+
.cx-cp[data-skin][data-in] :is(.cx-cp-msg, .cx-cp-card, .cx-cp-btns, .cx-cp-note) { opacity: 1; animation: cx-cp-rise 420ms cubic-bezier(.23, 1, .32, 1) both; }
|
|
4548
|
+
.cx-cp[data-skin][data-in] [data-step="2"] { animation-delay: 120ms; } .cx-cp[data-skin][data-in] [data-step="3"] { animation-delay: 240ms; }
|
|
4549
|
+
.cx-cp[data-skin][data-in] [data-step="4"] { animation-delay: 360ms; } .cx-cp[data-skin][data-in] [data-step="5"] { animation-delay: 480ms; }
|
|
4550
|
+
}
|
|
4551
|
+
@keyframes cx-cp-rise { from { transform: translateY(10px); } to { transform: none; } }
|
|
4552
|
+
|
|
4553
|
+
/* Instagram: name over the handle, stacked bubbles whose touching corners close, the client's photo beside the last
|
|
4554
|
+
of each turn, the shop's bubbles from purple to blue (a solid purple underneath: never white on white), «Visto». */
|
|
4555
|
+
.cx-cp[data-skin="instagram"] { --cp-head: #fff; --cp-head-fg: #000; }
|
|
4556
|
+
.cx-cp[data-skin="instagram"] .cx-cp-head { border-bottom: 0; padding: 4px 14px 10px 8px; gap: 10px; }
|
|
4557
|
+
.cx-cp[data-skin="instagram"] .cx-cp-ring { padding: 0; background: none; }
|
|
4558
|
+
.cx-cp[data-skin="instagram"] .cx-cp-photo { width: 30px; height: 30px; border: 0; }
|
|
4559
|
+
.cx-cp[data-skin="instagram"] .cx-cp-t { font-size: 15px; font-weight: 600; }
|
|
4560
|
+
.cx-cp[data-skin="instagram"] .cx-cp-acts > :last-child { display: none; }
|
|
4561
|
+
.cx-cp[data-skin="instagram"] .cx-cp-acts { flex-direction: row-reverse; }
|
|
4562
|
+
.cx-cp[data-skin="instagram"] .cx-cp-log { padding: 0 12px 8px; gap: 2px; }
|
|
4563
|
+
.cx-cp[data-skin="instagram"] .cx-cp-day { color: #737373; font-weight: 400; margin: 8px 0 10px; }
|
|
4564
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg { max-width: 70%; padding: 8px 13px; border-radius: 20px; font-size: 15px; line-height: 1.33; }
|
|
4565
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="in"] { position: relative; margin-left: 32px; background: #EFEFEF; color: #000; }
|
|
4566
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="out"] { color: #fff; background-color: #7A43FC; background-image: linear-gradient(180deg, #8A3CFF, #6A4BFB); }
|
|
4567
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="out"]:not(:has(~ .cx-cp-msg[data-who="out"])) { background-color: #4F63F9; background-image: linear-gradient(180deg, #6A4BFB, #3B7CF7); }
|
|
4568
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="in"] + .cx-cp-msg[data-who="in"] { border-top-left-radius: 4px; }
|
|
4569
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="in"]:has(+ .cx-cp-msg[data-who="in"]) { border-bottom-left-radius: 4px; }
|
|
4570
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="out"] + .cx-cp-msg[data-who="out"] { border-top-right-radius: 4px; }
|
|
4571
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="out"]:has(+ .cx-cp-msg[data-who="out"]) { border-bottom-right-radius: 4px; }
|
|
4572
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="in"]:not(:has(+ .cx-cp-msg[data-who="in"]))::before { content: ""; position: absolute; left: -32px; bottom: 0; width: 24px; height: 24px; border-radius: 50%; background: var(--face) center / cover, #ddd; }
|
|
4573
|
+
.cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="in"]:not(:has(+ .cx-cp-msg[data-who="in"])) + .cx-cp-msg, .cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="out"]:not(:has(+ .cx-cp-msg[data-who="out"])) + .cx-cp-msg { margin-top: 8px; }
|
|
4574
|
+
.cx-cp[data-skin="instagram"] .cx-cp-note { color: #737373; font-size: 12px; margin: 3px 4px 0; }
|
|
4575
|
+
.cx-cp[data-skin="instagram"] .cx-cp-comp { margin: 6px 10px 12px; height: 44px; padding: 0 14px 0 4px; }
|
|
4576
|
+
.cx-cp[data-skin="instagram"] .cx-cp-cam { width: 36px; height: 36px; }
|
|
4577
|
+
|
|
4578
|
+
/* WhatsApp (Android since 2023): a white top bar, the tail on the FIRST message of each turn, hour and blue ticks
|
|
4579
|
+
inside, reply buttons hanging under the message at its width, who answered on a pale yellow chip, the green mic. */
|
|
4580
|
+
.cx-cp[data-skin="whatsapp"] { --cp-head: #fff; --cp-head-fg: #111B21; --cp-bg: #EFEAE2; --cp-in: #fff; --cp-out: #D9FDD3; --cp-fg: #111B21; --cp-meta: #667781; }
|
|
4581
|
+
.cx-cp[data-skin="whatsapp"][data-theme="dark"] { --cp-head: #fff; --cp-head-fg: #111B21; --cp-bg: #EFEAE2; --cp-in: #fff; --cp-out: #D9FDD3; --cp-fg: #111B21; --cp-meta: #667781; }
|
|
4582
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-head { border-bottom: 1px solid #E9EDEF; padding: 4px 12px 10px 6px; gap: 8px; }
|
|
4583
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-t { font-size: 16px; font-weight: 500; }
|
|
4584
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-s { color: #667781; font-size: 12.5px; }
|
|
4585
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-acts { gap: 14px; color: #3B4A54; }
|
|
4586
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-log { padding: 0 14px 8px; gap: 2px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' fill='none' stroke='%23000' stroke-opacity='.05' stroke-width='1.5'%3E%3Ccircle cx='14' cy='16' r='6'/%3E%3Cpath d='M44 10l8 8m0-8l-8 8M60 50c4-6 12-6 16 0M10 54h14v10H10zM40 60a5 5 0 1 0 10 0a5 5 0 1 0-10 0M62 22l6 10h-12z'/%3E%3C/svg%3E"); }
|
|
4587
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-day { background: #fff; color: #54656F; margin: 14px 0 8px; }
|
|
4588
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-msg { border-radius: 10px; background: var(--cp-in); color: #111B21; }
|
|
4589
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="out"] { background: var(--cp-out); border-radius: 10px; }
|
|
4590
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="in"]:not(.cx-cp-msg[data-who="in"] + .cx-cp-msg) { border-top-left-radius: 0; margin-top: 6px; }
|
|
4591
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="out"]:not(.cx-cp-msg[data-who="out"] + .cx-cp-msg) { border-top-right-radius: 0; margin-top: 6px; }
|
|
4592
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="in"]:not(.cx-cp-msg[data-who="in"] + .cx-cp-msg)::before, .cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="out"]:not(.cx-cp-msg[data-who="out"] + .cx-cp-msg)::before { content: ""; position: absolute; top: 0; width: 8px; height: 13px; background: inherit; }
|
|
4593
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="in"]:not(.cx-cp-msg[data-who="in"] + .cx-cp-msg)::before { left: -8px; clip-path: polygon(0 0, 100% 0, 100% 100%); }
|
|
4594
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="out"]:not(.cx-cp-msg[data-who="out"] + .cx-cp-msg)::before { right: -8px; clip-path: polygon(0 0, 100% 0, 0 100%); }
|
|
4595
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-time svg { color: #53BDEB; }
|
|
4596
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="out"] .cx-cp-time { color: #667781; }
|
|
4597
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-btns { width: 80%; margin-top: 2px; }
|
|
4598
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-btn { height: 34px; border-radius: 10px; background: #fff; color: #027EB5; font-weight: 500; }
|
|
4599
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-note { align-self: center; background: #FFF6C5; color: #54656F; font-size: 11.5px; border-radius: 8px; padding: 4px 10px; margin-top: 8px; }
|
|
4600
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-comp { margin: 6px 62px 12px 8px; color: #8696A0; }
|
|
4601
|
+
.cx-cp[data-skin="whatsapp"] .cx-cp-mic { background: #1DAB61; }
|
|
4602
|
+
|
|
4603
|
+
/* Telegram (Android, default theme), seen by the client: the bot answers on the left with its buttons under it, two
|
|
4604
|
+
per row; the tail at the bottom of the LAST message of each turn; the bots' blue «Menú» beside the field. */
|
|
4605
|
+
.cx-cp[data-skin="telegram"] { --cp-head: #517DA2; --cp-head-fg: #fff; --cp-bg: linear-gradient(165deg, #D6E5AE 0%, #B5D394 45%, #8FC08A 100%); --cp-out: #EFFDDE; }
|
|
4606
|
+
.cx-cp[data-skin="telegram"] .cx-cp-head { padding: 4px 12px 10px 10px; gap: 12px; }
|
|
4607
|
+
.cx-cp[data-skin="telegram"] .cx-cp-photo { width: 40px; height: 40px; }
|
|
4608
|
+
.cx-cp[data-skin="telegram"] .cx-cp-s { color: #D2E1EE; opacity: 1; }
|
|
4609
|
+
.cx-cp[data-skin="telegram"] .cx-cp-acts > :not(:last-child) { display: none; }
|
|
4610
|
+
.cx-cp[data-skin="telegram"] .cx-cp-log { padding: 0 10px 8px; gap: 3px; }
|
|
4611
|
+
.cx-cp[data-skin="telegram"] .cx-cp-day { background: rgb(0 0 0 / .22); color: #fff; }
|
|
4612
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg { border-radius: 16px; max-width: 82%; }
|
|
4613
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="in"] { border-radius: 16px; }
|
|
4614
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"] { border-radius: 16px; }
|
|
4615
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="in"]:not(:has(+ .cx-cp-msg[data-who="in"])) { border-bottom-left-radius: 4px; }
|
|
4616
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"]:not(:has(+ .cx-cp-msg[data-who="out"])) { border-bottom-right-radius: 4px; }
|
|
4617
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="in"]:not(:has(+ .cx-cp-msg[data-who="in"]))::after, .cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"]:not(:has(+ .cx-cp-msg[data-who="out"]))::after { content: ""; position: absolute; bottom: 0; width: 7px; height: 12px; background: inherit; }
|
|
4618
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="in"]:not(:has(+ .cx-cp-msg[data-who="in"]))::after { left: -6px; clip-path: path("M7 0 C7 7 4 10 0 12 L7 12 Z"); }
|
|
4619
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"]:not(:has(+ .cx-cp-msg[data-who="out"]))::after { right: -6px; clip-path: path("M0 0 C0 7 3 10 7 12 L0 12 Z"); }
|
|
4620
|
+
.cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="in"] + .cx-cp-btns { align-self: flex-start; width: 82%; }
|
|
4621
|
+
.cx-cp[data-skin="telegram"] .cx-cp-btn { height: 38px; background: rgb(56 92 40 / .34); }
|
|
4622
|
+
.cx-cp[data-skin="telegram"] .cx-cp-comp { height: 52px; padding: 0 12px 0 8px; }
|
|
4623
|
+
.cx-cp[data-skin="telegram"] .cx-cp-menu { display: flex; align-items: center; gap: 4px; height: 32px; padding: 0 10px; border-radius: 999px; background: #5AA5E8; color: #fff; font-size: 14px; font-weight: 500; flex: none; }
|
|
4624
|
+
.cx-cp[data-skin="telegram"] .cx-cp-menu svg { width: 16px; height: 16px; }
|
|
4625
|
+
.cx-cp[data-skin="telegram"] .cx-cp-tools > :nth-child(n+2), .cx-cp[data-skin="telegram"] .cx-cp-emo { display: grid; }
|
|
4626
|
+
.cx-cp[data-skin="telegram"] .cx-cp-tools > :nth-child(2) { display: none; }
|
|
4627
|
+
/* a phone-shaped chat floating over a hero photo stays smaller */
|
|
4628
|
+
/* a phone-shaped chat keeps a phone's size wherever it sits (a stage, a step), and floating over a hero photo it is smaller */
|
|
4629
|
+
.style-nova :is(.cx-mk-stage, .cx-mk-step-vis, .cx-mk-hero-media) .cx-cp[data-skin] { width: 270px; max-width: calc(100% - 18px); }
|
|
4630
|
+
.style-nova .cx-mk-float-play > .cx-cp[data-skin] { height: 500px; width: 236px; margin: 0; }
|
|
4631
|
+
|
|
4632
|
+
/* THE SWITCH, AS SHADCN DRAWS IT. muten's Button centres its content (display:flex; justify-content:center), so the
|
|
4633
|
+
thumb started in the middle of the track and, when on, slid past its end: a switch that looked half-on. The thumb
|
|
4634
|
+
starts at the left edge and its translate takes it to the right one. Off, the white thumb on the light track gets
|
|
4635
|
+
the hairline and shadow that keep it visible (it blended into the track). */
|
|
4636
|
+
.cn-switch.mu-button, .cn-switch { justify-content: flex-start; gap: 0; padding: 0; min-width: 0; }
|
|
4637
|
+
.style-nova .cn-switch-thumb { box-shadow: 0 1px 2px rgb(11 11 13 / .22), 0 0 0 .5px rgb(11 11 13 / .08); }
|
|
4638
|
+
.style-nova .cn-switch[data-unchecked]:not([data-unchecked="false"]) { background: color-mix(in oklab, var(--input) 70%, var(--foreground) 12%); }
|
|
4639
|
+
|
|
4640
|
+
/* ═════ CHATS IN THE PHONE OF THE STORE PREVIEWS ═════
|
|
4641
|
+
A skinned ChatPlay sits in the library's one phone (the iPhone 18 Pro rule, see DeviceFrame) and is drawn at a real
|
|
4642
|
+
phone's 390 × 844 with the apps' real type sizes, then scaled to the frame with `zoom`. --cp-n is the phone's width
|
|
4643
|
+
in px (the screen is 93% of it: 3.5% of edge on each side). Without a skin the wrappers vanish. */
|
|
4644
|
+
.cx-cp-phone:not([data-skin]), .cx-cp-phone:not([data-skin]) > .cx-cp-frame, .cx-cp-phone:not([data-skin]) > .cx-cp-frame > .cx-cp-screen { display: contents; }
|
|
4645
|
+
.cx-cp-phone:not([data-skin]) > .cx-cp-frame::before, .cx-cp-phone:not([data-skin]) > .cx-cp-frame::after { content: none; }
|
|
4646
|
+
.cx-cp-phone[data-skin] { --cp-n: 300; width: calc(var(--cp-n) * 1px); max-width: none; margin-inline: auto; flex: none; gap: 0; }
|
|
4647
|
+
.cx-cp-phone .cx-cp-frame:hover { transform: none; }
|
|
4648
|
+
.cx-cp-phone .cx-cp-screen { content-visibility: visible; background: #fff; }
|
|
4649
|
+
.cx-cp-screen > .cx-cp[data-skin], .style-nova :is(.cx-mk-stage, .cx-mk-step-vis, .cx-mk-hero-media) .cx-cp-screen > .cx-cp[data-skin] {
|
|
4650
|
+
width: 390px; max-width: none; height: 844px; margin: 0; border-radius: 0; box-shadow: none; zoom: calc(var(--cp-n) * .93 / 390); }
|
|
4651
|
+
.style-nova .cx-mk-stage .cx-cp-phone { --cp-n: 290; }
|
|
4652
|
+
.style-nova .cx-mk-step-vis .cx-cp-phone { --cp-n: 250; }
|
|
4653
|
+
.style-nova .cx-mk-float-play > .cx-cp-phone { --cp-n: 232; }
|
|
4654
|
+
.style-nova .cx-mk-float-play:has(> .cx-cp-phone) { width: auto; }
|
|
4655
|
+
@media (max-width: 640px) { .style-nova :is(.cx-mk-stage, .cx-mk-step-vis) .cx-cp-phone { --cp-n: 270; } .style-nova .cx-mk-float-play > .cx-cp-phone { --cp-n: 270; } }
|
|
4656
|
+
|
|
4657
|
+
/* the apps at their real sizes, in phone pixels */
|
|
4658
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-sb { height: 50px; font-size: 16px; padding: 0 30px 0 36px; }
|
|
4659
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-sbi { gap: 6px; }
|
|
4660
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-sbi svg { width: 18px; height: 18px; }
|
|
4661
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-head { padding: 4px 16px 12px 10px; gap: 12px; }
|
|
4662
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-back svg { width: 28px; height: 28px; }
|
|
4663
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-photo { width: 38px; height: 38px; }
|
|
4664
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-t { font-size: 17px; }
|
|
4665
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-s { font-size: 13.5px; }
|
|
4666
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-acts { gap: 20px; }
|
|
4667
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-acts svg { width: 25px; height: 25px; }
|
|
4668
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-log { padding: 0 16px 14px; gap: 3px; }
|
|
4669
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-msg { font-size: 17px; line-height: 1.3; }
|
|
4670
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-day { font-size: 14px; }
|
|
4671
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-note { font-size: 13.5px; }
|
|
4672
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-btn { height: 44px; font-size: 16.5px; border-radius: 12px; }
|
|
4673
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-btn svg { width: 18px; height: 18px; }
|
|
4674
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-time { font-size: 12.5px; }
|
|
4675
|
+
.cx-cp-screen > .cx-cp[data-skin] .cx-cp-time svg { width: 17px; height: 17px; }
|
|
4676
|
+
/* Instagram */
|
|
4677
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-photo { width: 34px; height: 34px; }
|
|
4678
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-msg { padding: 10px 15px; border-radius: 22px; }
|
|
4679
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="in"] { margin-left: 38px; }
|
|
4680
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-msg[data-who="in"]:not(:has(+ .cx-cp-msg[data-who="in"]))::before { left: -38px; width: 28px; height: 28px; }
|
|
4681
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-comp { height: 50px; margin: 8px 12px 18px; padding: 0 16px 0 5px; gap: 12px; font-size: 17px; }
|
|
4682
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-cam { width: 40px; height: 40px; }
|
|
4683
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-cam svg { width: 22px; height: 22px; }
|
|
4684
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-igtools { gap: 16px; }
|
|
4685
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-igtools svg { width: 26px; height: 26px; }
|
|
4686
|
+
/* WhatsApp */
|
|
4687
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-t { font-size: 18px; }
|
|
4688
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-msg { font-size: 16.5px; padding: 7px 10px 9px 11px; border-radius: 12px; }
|
|
4689
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-msg::before { width: 10px !important; height: 15px !important; }
|
|
4690
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="in"]::before { left: -10px !important; }
|
|
4691
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-msg[data-who="out"]::before { right: -10px !important; }
|
|
4692
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-day { padding: 6px 14px; }
|
|
4693
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-note { font-size: 13px; padding: 5px 12px; }
|
|
4694
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-comp { height: 54px; margin: 8px 74px 18px 10px; padding: 0 14px; gap: 14px; font-size: 18px; }
|
|
4695
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] :is(.cx-cp-emo, .cx-cp-tools) svg { width: 26px; height: 26px; }
|
|
4696
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-mic { width: 54px; height: 54px; right: -64px; }
|
|
4697
|
+
.cx-cp-screen > .cx-cp[data-skin="whatsapp"] .cx-cp-mic svg { width: 26px; height: 26px; }
|
|
4698
|
+
/* Telegram */
|
|
4699
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-photo { width: 44px; height: 44px; }
|
|
4700
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-t { font-size: 18px; }
|
|
4701
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-msg { padding: 7px 11px 9px 12px; border-radius: 18px; }
|
|
4702
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-btn { height: 46px; font-size: 16px; }
|
|
4703
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-comp { height: 62px; padding: 0 14px 0 10px; gap: 14px; font-size: 18px; }
|
|
4704
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] :is(.cx-cp-emo, .cx-cp-tools, .cx-cp-mic) svg { width: 26px; height: 26px; }
|
|
4705
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-menu { height: 38px; padding: 0 13px; font-size: 16px; }
|
|
4706
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-menu svg { width: 19px; height: 19px; }
|
|
4707
|
+
/* the phone keeps its own width inside a stage or a step (their «every child full width» rule must not stretch it) */
|
|
4708
|
+
.style-nova :is(.cx-mk-stage, .cx-mk-step-vis, .cx-mk-hero-media, .cx-mk-float-play) .cx-cp-phone[data-skin] { width: calc(var(--cp-n) * 1px); max-width: none; }
|
|
4709
|
+
|
|
4710
|
+
/* Instagram's conversation start: the profile, centred over the first message (other skins do not draw it) */
|
|
4711
|
+
.cx-cp-prof { display: none; }
|
|
4712
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 0 0 26px; text-align: center; color: #000; }
|
|
4713
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof-ph { width: 96px; height: 96px; border-radius: 50%; background: var(--face) center / cover, #ddd; margin-bottom: 12px; }
|
|
4714
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof-n { font-size: 20px; font-weight: 600; }
|
|
4715
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof-s { font-size: 14.5px; color: #737373; }
|
|
4716
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof-a { margin-top: 14px; font-size: 14.5px; font-weight: 600; background: #EFEFEF; padding: 8px 16px; border-radius: 9px; }
|
|
4717
|
+
/* nothing in a conversation shrinks to fit: a long thread is cut at its top (the oldest), never squashed */
|
|
4718
|
+
.cx-cp[data-skin] .cx-cp-log > * { flex-shrink: 0; }
|
|
4719
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof { padding-bottom: 18px; }
|
|
4720
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof-ph { width: 80px; height: 80px; flex: none; margin-bottom: 10px; }
|
|
4721
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof-a { margin-top: 10px; }
|
|
4722
|
+
/* the profile fits above a six-message thread: photo, name and handle (no «Ver perfil» button, which pushed the photo off) */
|
|
4723
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof-ph { width: 64px; height: 64px; margin-bottom: 8px; }
|
|
4724
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof-a { display: none; }
|
|
4725
|
+
.cx-cp[data-skin="instagram"] .cx-cp-prof { padding-bottom: 10px; }
|
|
4726
|
+
.cx-cp[data-skin="instagram"] .cx-cp-day { margin: 4px 0 8px; }
|
|
4727
|
+
|
|
4728
|
+
/* ═════ THE CHATS AS THE APPS LOOK TODAY, LIGHT THEME (the «Storio chats realistas» canvas) ═════
|
|
4729
|
+
Every skinned ChatPlay at phone pixels inside StorePhone. Instagram: white, grey bubbles, the purple-to-blue
|
|
4730
|
+
gradient, the grey pill composer with the blue camera. WhatsApp: its beige wallpaper with doodles (the rules above).
|
|
4731
|
+
Telegram (2026): the top bar is three floating glass pieces (back, name, menu), the chat runs under them, the bot's
|
|
4732
|
+
buttons are separate glass tiles, and the composer is a glass pill beside a blue mic. */
|
|
4733
|
+
.cx-cp-phone[data-skin="instagram"] .cx-cp-screen { background: #fff; }
|
|
4734
|
+
.cx-cp-phone[data-skin="whatsapp"] .cx-cp-screen { background: #EFEAE2; }
|
|
4735
|
+
.cx-cp-phone[data-skin="telegram"] .cx-cp-screen { background: #C9DFA6; }
|
|
4736
|
+
|
|
4737
|
+
/* Instagram */
|
|
4738
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-head { border-bottom: 1px solid #EFEFEF; padding-bottom: 12px; }
|
|
4739
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-log { padding-top: 12px; }
|
|
4740
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-day { color: #737373; font-weight: 600; font-size: 13px; letter-spacing: .02em; text-transform: uppercase; }
|
|
4741
|
+
.cx-cp-screen > .cx-cp[data-skin="instagram"] .cx-cp-comp { background: #EFEFEF; color: #737373; }
|
|
4742
|
+
|
|
4743
|
+
/* Telegram */
|
|
4744
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] { --cp-head: transparent; --cp-head-fg: #000; --cp-in: #fff; --cp-out: #EFFDDE; --cp-fg: #000; --cp-meta: #8A96A3; --tg-glass: rgb(255 255 255 / .82); position: relative;
|
|
4745
|
+
--cp-bg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180' fill='none' stroke='%23284B1E' stroke-opacity='.13' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 30l22-10-6 24-6-8z'/%3E%3Ccircle cx='96' cy='26' r='9'/%3E%3Cpath d='M92 26h8'/%3E%3Cpath d='M146 18l3 7 7 1-5 5 1 7-6-4-6 4 1-7-5-5 7-1z'/%3E%3Cpath d='M26 96c0-8 12-8 12 0s-12 14-12 14-12-6-12-14 12-8 12 0'/%3E%3Crect x='76' y='84' width='26' height='20' rx='4'/%3E%3Cpath d='M76 90l13 8 13-8'/%3E%3Cpath d='M150 90a12 12 0 1 1 0 .1M150 84v6l4 3'/%3E%3Cpath d='M16 152q10-12 20 0t20 0'/%3E%3Cpath d='M92 140c6 0 10 4 10 10s-4 12-10 12-10-6-10-12 4-10 10-10zM92 140v-6l4-2'/%3E%3Cpath d='M140 146h20M150 136v20'/%3E%3C/svg%3E"), linear-gradient(165deg, #DCEAB8 0%, #BCD89A 45%, #9CC890 100%); }
|
|
4746
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-sb { background: transparent; color: #000; position: relative; z-index: 3; }
|
|
4747
|
+
/* the top bar floats over the chat: a glass circle, a glass pill with the photo and name, a glass circle */
|
|
4748
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-head { position: absolute; z-index: 2; top: 54px; left: 0; right: 0; height: 52px; padding: 0 10px; gap: 8px; align-items: center; background: none; }
|
|
4749
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-head::before { content: ""; position: absolute; z-index: -1; top: 0; bottom: 0; left: 66px; right: 66px; border-radius: 26px; background: var(--tg-glass); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: 0 1px 3px rgb(0 0 0 / .08); }
|
|
4750
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] :is(.cx-cp-back, .cx-cp-acts) { display: grid; place-items: center; width: 48px; height: 48px; margin: 0; border-radius: 50%; flex: none; background: var(--tg-glass); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: 0 1px 3px rgb(0 0 0 / .08); color: #000; }
|
|
4751
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-back svg { width: 26px; height: 26px; }
|
|
4752
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-acts svg { width: 24px; height: 24px; }
|
|
4753
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] :is(.cx-cp-ring, .cx-cp-face) { margin-left: 4px; }
|
|
4754
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-photo { width: 44px; height: 44px; }
|
|
4755
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-name { padding-right: 14px; min-width: 0; }
|
|
4756
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-t { font-size: 17px; font-weight: 600; }
|
|
4757
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-s { color: #8A96A3; font-size: 13.5px; }
|
|
4758
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-log { padding: 0 10px 10px; gap: 5px; }
|
|
4759
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-msg { color: #000; box-shadow: 0 1px 1px rgb(0 0 0 / .1); }
|
|
4760
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="in"] { background: #fff; }
|
|
4761
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"] { background: #EFFDDE; }
|
|
4762
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-msg .cx-cp-time { color: #8A96A3; }
|
|
4763
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"] .cx-cp-time, .cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-msg[data-who="out"] .cx-cp-time svg { color: #4FAE4E; }
|
|
4764
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-day { background: rgb(0 0 0 / .2); color: #fff; }
|
|
4765
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-btns { gap: 5px; margin-top: 0; }
|
|
4766
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-btn { height: 46px; padding: 0 8px; border-radius: 12px; background: var(--tg-glass); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); color: #1F7FD9; font-size: 15px; font-weight: 600; box-shadow: 0 1px 2px rgb(0 0 0 / .08); }
|
|
4767
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-btn:last-child:nth-child(odd) { grid-column: 1 / -1; }
|
|
4768
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-btn > :not(span:last-child) { display: none; }
|
|
4769
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-note { color: #fff; text-shadow: 0 1px 2px rgb(0 0 0 / .3); }
|
|
4770
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-card { background: #EFFDDE; box-shadow: 0 1px 1px rgb(0 0 0 / .1); }
|
|
4771
|
+
/* the composer: a glass pill (Menú, emoji, the field, the clip) beside the blue mic */
|
|
4772
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-comp { position: relative; height: 52px; margin: 6px 74px 22px 8px; padding: 0 12px 0 5px; gap: 10px; border: 0; border-radius: 26px; background: var(--tg-glass); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: 0 1px 3px rgb(0 0 0 / .08); color: #8A96A3; font-size: 17px; }
|
|
4773
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-menu { order: -1; height: 42px; padding: 0 14px 0 12px; gap: 6px; border-radius: 21px; background: #3390EC; color: #fff; font-size: 16px; font-weight: 600; }
|
|
4774
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-menu svg { width: 20px; height: 20px; }
|
|
4775
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-ph { color: #8A96A3; }
|
|
4776
|
+
.cx-cp-screen > .cx-cp[data-skin="telegram"] .cx-cp-mic { position: absolute; right: -66px; top: 0; width: 52px; height: 52px; border-radius: 50%; background: #3390EC; color: #fff; place-items: center; box-shadow: 0 1px 3px rgb(0 0 0 / .12); }
|
|
4777
|
+
|
|
4778
|
+
/* ═════ AGENDA: what an app needs (kit.agenda) ═════ */
|
|
4779
|
+
/* a cita in its service's colour: a flat soft fill, nothing else (no side stripe, no ring, no glow) */
|
|
4780
|
+
.cx-ag-ev[data-tint], .cx-ag-row[data-tint] { --tone: var(--tint); }
|
|
4781
|
+
.cx-ag-ev, .cx-ag-ev[data-tint] { box-shadow: none; }
|
|
4782
|
+
.cx-ag-ev[data-tint] { background: color-mix(in oklab, var(--tint) 20%, var(--card, var(--background))); }
|
|
4783
|
+
.cx-ag-ev > .cx-text:first-child { font-weight: 600; }
|
|
4784
|
+
.cx-ag-ev > .cx-text + .cx-text { color: var(--muted-foreground); }
|
|
4785
|
+
/* the statuses are said in words inside the cita; done and no-show only step back */
|
|
4786
|
+
.cx-ag-ev[data-tone="live"], .cx-ag-row[data-tone="live"] { --tone: var(--warning); }
|
|
4787
|
+
.cx-ag-ev[data-status="done"], .cx-ag-ev[data-status="noshow"], .cx-ag-row[data-status="done"], .cx-ag-row[data-status="noshow"] { opacity: .55; cursor: pointer; }
|
|
4788
|
+
.cx-ag-ev[data-status="done"], .cx-ag-ev[data-status="noshow"] { background: var(--muted); }
|
|
4789
|
+
.cx-ag-row { position: relative; box-shadow: none; }
|
|
4790
|
+
.cx-ag-row > .cx-text:last-child { flex: none; margin-left: 4px; font-variant-numeric: tabular-nums; }
|
|
4791
|
+
/* the strip: how many citas each day has, as a plain number; closed days dimmed */
|
|
4792
|
+
.cx-ag-count { display: flex; align-items: center; justify-content: center; height: 12px; font-size: 11px; font-weight: 500; line-height: 1; color: var(--muted-foreground); font-variant-numeric: tabular-nums; }
|
|
4793
|
+
.cx-ag-day[aria-pressed="true"] .cx-ag-count { color: inherit; opacity: .8; }
|
|
4794
|
+
.cx-ag-count .skel { width: 10px; height: 8px; }
|
|
4795
|
+
.cx-ag-day[data-closed]:not([aria-pressed="true"]) { opacity: .45; }
|
|
4796
|
+
.cx-ag-day[data-closed] b { text-decoration: line-through; text-decoration-thickness: 1px; }
|
|
4797
|
+
.cx-ag-colhead[data-closed] { color: var(--muted-foreground); }
|
|
4798
|
+
/* «Ahora»: the cita in progress, first thing on today: a plain row on the muted fill, no colour, no motion */
|
|
4799
|
+
.cx-ag-nowcard { display: flex; align-items: center; gap: 12px; width: 100%; padding: 12px 14px; border: 1px solid var(--border); border-radius: calc(var(--radius) * 1.1); background: var(--muted); color: var(--foreground); text-align: left; cursor: pointer; font: inherit; }
|
|
4800
|
+
.cx-ag-nowcard:hover { background: color-mix(in oklab, var(--muted) 80%, var(--foreground) 6%); }
|
|
4801
|
+
.cx-ag-nowcard:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }
|
|
4802
|
+
/* several agendas: the business first, then the team; a thin rule between kinds in the filter */
|
|
4803
|
+
.cx-ag-sep { flex: none; width: 1px; height: 20px; margin: 0 4px; background: var(--border); }
|
|
4804
|
+
.cx-ag-colhead { flex-direction: column; gap: 4px; padding: 8px 6px; text-align: center; }
|
|
4805
|
+
.cx-ag-colname { display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 0; max-width: 100%; line-height: 1.2; }
|
|
4806
|
+
.cx-ag-colname b, .cx-ag-colname small { display: block; height: 1.2em; line-height: 1.2; }
|
|
4807
|
+
.cx-ag-colname b { font-weight: 600; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4808
|
+
.cx-ag-colname small { font-size: 11px; font-weight: 400; color: var(--muted-foreground); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4809
|
+
.cx-ag-wholabel { flex: none; margin-right: 4px; font-size: 12px; color: var(--muted-foreground); }
|
|
4810
|
+
/* a mouse drag pans the grid when part of it is hidden (kit.agenda): the hand says it can */
|
|
4811
|
+
.cx-ag-scroll[data-panning], .cx-ag-who[data-panning] { cursor: grabbing; scroll-snap-type: none; }
|
|
4812
|
+
.cx-ag-scroll[data-panning] * { cursor: grabbing !important; }
|
|
4813
|
+
.cx-ag-scroll, .cx-ag-strip, .cx-ag-listwrap { will-change: auto; }
|
|
4814
|
+
/* a cita that breaks its agenda's capacity: a flat red fill and the word, nothing glowing */
|
|
4815
|
+
.cx-ag-ev[data-conflict] { background: color-mix(in oklab, var(--destructive) 18%, var(--card, var(--background))); }
|
|
4816
|
+
.cx-ag-ev[data-conflict] > .cx-text + .cx-text { color: color-mix(in oklab, var(--destructive) 70%, var(--foreground)); }
|
|
4817
|
+
/* placing: where the cita being created will land, dashed in its colour until the app's sheet closes */
|
|
4818
|
+
.cx-ag-ghostnew { position: absolute; left: 4px; right: 4px; z-index: 2; display: flex; align-items: flex-start; padding: 4px 8px; border: 1.5px dashed var(--tint, var(--selected)); border-radius: calc(var(--radius) * .7); background: color-mix(in oklab, var(--tint, var(--selected)) 10%, var(--card, var(--background))); pointer-events: none; }
|
|
4819
|
+
.cx-ag-rowface { width: 28px; height: 28px; }
|
|
4820
|
+
/* the list on a narrow agenda: the time on the left over two lines, the name on one line (cut, never broken word by
|
|
4821
|
+
word), and the status and the price on a second line under it */
|
|
4822
|
+
.cx-ag-row > .cx-vstack > .cx-text:first-child { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
4823
|
+
@container (max-width: 520px) {
|
|
4824
|
+
.cx-ag-row:not([data-kind]) { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; column-gap: 10px; row-gap: 4px; align-items: start; }
|
|
4825
|
+
.cx-ag-row:not([data-kind]) > .cx-ag-row-t { grid-column: 1; grid-row: 1 / span 2; width: auto; }
|
|
4826
|
+
.cx-ag-row:not([data-kind]) > .cx-vstack { grid-column: 2 / span 2; grid-row: 1; }
|
|
4827
|
+
.cx-ag-row:not([data-kind]) > .cn-badge { grid-column: 2; grid-row: 2; justify-self: start; margin-left: 0; }
|
|
4828
|
+
.cx-ag-row:not([data-kind]) > .cx-text:last-child { grid-column: 3; grid-row: 2; justify-self: end; margin-left: 0; }
|
|
4829
|
+
.cx-ag-row:not([data-kind]) > .cx-ag-rowface { display: none; }
|
|
4830
|
+
.cx-ag-row[data-kind] > .cx-ag-row-t { width: 64px; }
|
|
4831
|
+
}
|
|
4832
|
+
.cx-ag-gone { position: absolute; left: 0; right: 0; top: 0; z-index: 0; background: color-mix(in oklab, var(--muted) 45%, transparent); pointer-events: none; }
|
|
4833
|
+
.cx-ag-title { display: inline-flex; align-items: center; gap: 4px; min-width: 0; padding: 4px 6px; margin-left: -6px; border: 0; border-radius: calc(var(--radius) * .7); background: transparent; color: inherit; font: inherit; cursor: pointer; }
|
|
4834
|
+
.cx-ag-title:hover { background: color-mix(in oklab, var(--foreground) 6%, transparent); }
|
|
4835
|
+
.cx-ag-title:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }
|
|
4836
|
+
.cx-ag-title svg { width: 14px; height: 14px; opacity: .6; flex: none; }
|
|
4837
|
+
.cx-ag-title > .cx-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
4838
|
+
.cx-ag-datecal { display: flex; justify-content: center; }
|
|
4839
|
+
/* the title's floating month (one day or several), and the range list */
|
|
4840
|
+
.cx-ag-pop { width: auto; min-width: 300px; max-width: calc(100vw - 16px); padding: 12px; gap: 10px; }
|
|
4841
|
+
.cx-ag-datemode { align-self: flex-start; }
|
|
4842
|
+
.cx-ag-datehint { margin: 0; font-size: 12px; color: var(--muted-foreground); }
|
|
4843
|
+
.cx-ag-datefoot { display: flex; justify-content: flex-end; }
|
|
4844
|
+
.cx-ag-datesheet { display: flex; flex-direction: column; gap: 12px; align-items: stretch; }
|
|
4845
|
+
.cx-ag-datesheet .cx-ag-datecal, .cx-ag-pop .cx-ag-datecal { display: flex; justify-content: center; }
|
|
4846
|
+
.cx-cal-pick { display: inline-flex; align-items: center; gap: 4px; margin: 0 auto; padding: 4px 8px; border: 0; border-radius: calc(var(--radius) * .7); background: transparent; color: inherit; font: inherit; cursor: pointer; }
|
|
4847
|
+
.cx-cal-pick:hover { background: color-mix(in oklab, var(--foreground) 6%, transparent); }
|
|
4848
|
+
.cx-cal-pick svg { width: 14px; height: 14px; opacity: .6; }
|
|
4849
|
+
.cx-cal-mgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding-top: 8px; min-width: 252px; }
|
|
4850
|
+
.cx-cal-m[aria-current="true"] { background: var(--primary); color: var(--primary-foreground); }
|
|
4851
|
+
.cx-cal-m[data-today]:not([aria-current="true"]) { color: var(--selected, var(--primary)); font-weight: 600; }
|
|
4852
|
+
.cx-ag-range { gap: 6px; }
|
|
4853
|
+
.cx-ag-rangeday { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; width: 100%; margin-top: 10px; padding: 6px 2px; border: 0; border-bottom: 1px solid var(--border); background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; }
|
|
4854
|
+
.cx-ag-rangeday:first-child { margin-top: 0; }
|
|
4855
|
+
.cx-ag-rangeday[data-today] > .cx-text:first-child { color: var(--selected, var(--primary)); }
|
|
4856
|
+
.cx-ag-rangeday:hover > .cx-text:first-child { text-decoration: underline; text-underline-offset: 3px; }
|
|
4857
|
+
/* the time now: the line runs from each today column's edge, its dot on the first, and the time sits in the hours gutter */
|
|
4858
|
+
.cx-ag-col > .cx-ag-now { left: 0; right: 0; }
|
|
4859
|
+
.cx-ag-col > .cx-ag-now i { left: -5px; }
|
|
4860
|
+
.cx-ag-nowtime { position: absolute; right: 4px; z-index: 3; transform: translateY(-50%); padding: 1px 5px; border-radius: 6px; background: var(--destructive); color: var(--destructive-foreground, #fff); font-size: 10px; font-weight: 600; line-height: 1.4; white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
4861
|
+
/* the crossed-citas alert sits under the strip, full width, with its button */
|
|
4862
|
+
.cx-ag-top > [data-ag-alert] { margin: 0; }
|
|
4863
|
+
/* no view picked (a range is on): the tabs show none, not the first */
|
|
4864
|
+
.cx-tabs:not(:has(.cx-tab[aria-selected="true"])) > .cx-tab-ind { opacity: 0; }
|
|
4865
|
+
/* who waits that day: two faces and how many */
|
|
4866
|
+
.cx-ag-queue { display: flex; align-items: center; gap: 0; }
|
|
4867
|
+
.cx-ag-queue > .cn-avatar, .cx-ag-queue > .cx-ag-face { width: 24px; height: 24px; min-width: 24px; font-size: 10px; letter-spacing: 0; overflow: hidden; box-shadow: 0 0 0 2px var(--card, var(--background)); }
|
|
4868
|
+
.cx-ag-queue > :nth-child(2) { margin-left: 4px; }
|
|
4869
|
+
.cx-ag-queue .cn-avatar-fallback { font-size: 9px; letter-spacing: -.02em; }
|
|
4870
|
+
.cx-ag-nowcard > .cx-text:last-child { white-space: nowrap; }
|
|
4871
|
+
.cx-ag-queue > .cx-text { margin-left: 8px; }
|
|
4872
|
+
.cx-ag-face { display: inline-block; width: 22px; height: 22px; border-radius: 50%; background: center / cover var(--muted); flex: none; }
|
|
4873
|
+
/* the server's free hours: dashed tiles you tap to book */
|
|
4874
|
+
.cx-ag-free { position: absolute; left: 3px; right: 3px; z-index: 0; display: flex; align-items: flex-start; padding: 4px 8px; border: 1.5px dashed color-mix(in oklab, var(--foreground) 22%, transparent); border-radius: calc(var(--radius) * .6); background: transparent; color: var(--muted-foreground); cursor: pointer; font: inherit; }
|
|
4875
|
+
.cx-ag-free:hover, .cx-ag-free:focus-visible { border-color: var(--selected); color: var(--selected); background: color-mix(in oklab, var(--selected) 6%, transparent); outline: none; }
|
|
4876
|
+
/* the first load: the calendar's shape in grey */
|
|
4877
|
+
/* loading: the same agenda, with grey shapes where the data will land (the old list-of-bars skeleton is gone) */
|
|
4878
|
+
.cx-ag-frame .skel { display: block; height: 10px; border-radius: 4px; text-decoration: none; }
|
|
4879
|
+
.cx-ag-skev { position: absolute; left: 4px; right: 4px; height: auto; border-radius: calc(var(--radius) * .6) !important; }
|
|
4880
|
+
.cx-ag-skline { display: inline-block !important; vertical-align: middle; height: .8em !important; }
|
|
4881
|
+
.cx-ag-sknow { cursor: default; }
|
|
4882
|
+
.cx-ag-skrow { cursor: default; border-style: solid; }
|
|
4883
|
+
.cx-ag-skpill { display: inline-flex; align-items: center; gap: 8px; height: 28px; padding: 0 10px; }
|
|
4884
|
+
.cx-ag-skhead { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; }
|
|
4885
|
+
/* phone "nav": on a narrow agenda the app's phone bar carries the actions and the arrows */
|
|
4886
|
+
@container (max-width: 700px) { .cx-agenda[data-phone="nav"] [data-ag-act], .cx-agenda[data-phone="nav"] [data-ag-move] { display: none; } }
|
|
4887
|
+
.cx-agenda[data-loading] .cx-ag-day, .cx-agenda[data-loading] .cx-ag-bar .cn-button, .cx-agenda[data-loading] .cx-tab { cursor: progress; }
|
|
4888
|
+
.cx-agenda[data-loading] [disabled] { opacity: .5; pointer-events: none; }
|
|
4889
|
+
.cx-ag-frame .skel { background: color-mix(in oklab, var(--muted) 85%, var(--foreground) 6%); }
|
|
4890
|
+
@media (prefers-reduced-motion: no-preference) { .cx-ag-frame[aria-busy="true"] .skel { animation: cx-ag-skel 1.2s ease-in-out infinite alternate; } }
|
|
4891
|
+
@keyframes cx-ag-skel { from { opacity: .55; } to { opacity: 1; } }
|
|
4892
|
+
|
|
4893
|
+
/* ═════ PhoneBar: the app's bar at the bottom of a phone (three fixed cells: menu · tools · create) ═════ */
|
|
4894
|
+
:root { --cx-pbar-space: calc(5.6rem + env(safe-area-inset-bottom, 0px)); }
|
|
4895
|
+
.cx-pbar { position: fixed; left: 0; right: 0; bottom: calc(1.1rem + env(safe-area-inset-bottom, 0px)); z-index: 41; margin-inline: auto; width: calc(100% - 1.5rem); max-width: 34rem; display: grid; grid-template-columns: 3.55rem minmax(0, 1fr) 3.55rem; align-items: center; gap: .3rem; pointer-events: none; }
|
|
4896
|
+
@media (min-width: 64rem) { .cx-pbar:not([data-place]), .cx-pbar[data-place=""] { display: none; } }
|
|
4897
|
+
.cx-pbar[data-place="inline"] { position: relative; bottom: auto; width: 100%; }
|
|
4898
|
+
.cx-pbar[data-place="frame"] { position: absolute; bottom: 14px; width: calc(100% - 20px); }
|
|
4899
|
+
.cx-pbar-cell { display: flex; flex-direction: row; align-items: center; gap: .1rem; min-width: 0; height: 3.45rem; padding: .3rem; border: 1px solid var(--border); border-radius: 1.3rem; background: color-mix(in oklab, var(--background) 82%, transparent); backdrop-filter: blur(16px) saturate(1.4); -webkit-backdrop-filter: blur(16px) saturate(1.4); box-shadow: 0 12px 30px -14px rgb(20 16 40 / .45), 0 2px 8px -4px rgb(20 16 40 / .25); pointer-events: auto; }
|
|
4900
|
+
.cx-pbar-cell[data-side="left"] { justify-self: start; }
|
|
4901
|
+
.cx-pbar-cell[data-side="center"] { justify-self: center; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
|
|
4902
|
+
.cx-pbar-cell[data-side="center"]::-webkit-scrollbar { display: none; }
|
|
4903
|
+
.cx-pbar-cell[data-side="right"] { justify-self: end; }
|
|
4904
|
+
.cx-pbar-cell:empty { visibility: hidden; }
|
|
4905
|
+
.cx-pbar-btn { position: relative; flex: none; display: grid; place-items: center; width: 2.75rem; height: 2.75rem; padding: 0; border: 0; border-radius: .9rem; background: transparent; color: var(--muted-foreground); cursor: pointer; font: inherit; transition: transform .12s cubic-bezier(.22,1,.36,1), background-color .15s; }
|
|
4906
|
+
.cx-pbar-btn .mu-icon, .cx-pbar-btn svg { font-size: 1.3rem; width: 1.3rem; height: 1.3rem; }
|
|
4907
|
+
.cx-pbar-btn:hover { background: color-mix(in oklab, var(--foreground) 6%, transparent); color: var(--foreground); }
|
|
4908
|
+
.cx-pbar-btn:active { transform: scale(.92); }
|
|
4909
|
+
.cx-pbar-btn:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }
|
|
4910
|
+
.cx-pbar-btn[data-look="primary"] { background: var(--primary); color: var(--primary-foreground); box-shadow: 0 6px 14px -6px var(--primary); }
|
|
4911
|
+
.cx-pbar-btn[aria-pressed="true"] { background: color-mix(in oklab, var(--selected, var(--primary)) 16%, transparent); color: var(--selected, var(--primary)); }
|
|
4912
|
+
.cx-pbar-btn[aria-pressed="true"]::after { content: ""; position: absolute; left: 50%; bottom: .28rem; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: currentColor; }
|
|
4913
|
+
.cx-pbar-btn:disabled { opacity: .45; pointer-events: none; }
|
|
4914
|
+
.cx-pbar-sep { flex: none; width: 1px; height: 1.4rem; margin: 0 .15rem; background: var(--border); }
|
|
4915
|
+
@media (max-width: 22rem) { .cx-pbar { width: calc(100% - 1rem); grid-template-columns: 3.25rem minmax(0, 1fr) 3.25rem; gap: .25rem; } .cx-pbar-cell { height: 3.25rem; padding: .25rem; } .cx-pbar-btn { width: 2.6rem; height: 2.6rem; } }
|
|
4916
|
+
@media (prefers-reduced-motion: reduce) { .cx-pbar-btn { transition: none; } }
|
|
4917
|
+
.cx-ag-scroll, .cx-ag-strip, .cx-ag-listwrap { -webkit-user-select: none; user-select: none; }
|
|
4918
|
+
|
|
4919
|
+
/* ═════ Sidebar: room between rows, a fold that glides, a section that loads; the monogram avatar ═════ */
|
|
4920
|
+
/* rows never touch: a hovered or current row keeps air above and below it */
|
|
4921
|
+
.cx-sidebar .cx-sb-menu { gap: 4px; }
|
|
4922
|
+
/* THE FOLD GLIDES. Nothing pops and nothing moves sideways: the width shrinks (200 ms) to exactly the icon column
|
|
4923
|
+
(the inner padding, the row's padding, the 16 px icon, and back), and the words fade where they are. */
|
|
4924
|
+
.cx-sidebar { --sb-pad: 8px; }
|
|
4925
|
+
.cx-sidebar[data-collapsed="true"] { width: 64px; }
|
|
4926
|
+
.cx-sidebar .cx-sb-item, .cx-sidebar[data-collapsed="true"] .cx-sb-item { justify-content: flex-start; padding: 0 var(--sb-pad); transition: padding .2s cubic-bezier(.22, 1, .36, 1), background-color .15s ease; }
|
|
4927
|
+
.cx-sb-label, .cx-sb-glabel, .cx-sb-count { transition: opacity .16s ease; }
|
|
4928
|
+
.cx-sb-label { white-space: nowrap; overflow: hidden; }
|
|
4929
|
+
.cx-sidebar[data-collapsed="true"] .cx-sb-label, .cx-sidebar[data-collapsed="true"] .cx-sb-glabel { display: block; opacity: 0; pointer-events: none; }
|
|
4930
|
+
.cx-sidebar[data-collapsed="true"] .cx-sb-count:not(:empty) { display: inline-grid; opacity: 0; }
|
|
4931
|
+
/* A SECTION THAT LOADS: while its page is on its way (the router marks the link with data-loading), the row's icon
|
|
4932
|
+
turns into a small ring that spins, and turns back when the page is there. */
|
|
4933
|
+
@keyframes cx-sb-spin { to { transform: rotate(360deg); } }
|
|
4934
|
+
.cx-sb-item > .mu-icon { transition: opacity .15s ease, transform .2s cubic-bezier(.22, 1, .36, 1); }
|
|
4935
|
+
.cx-sb-item[data-loading] > .mu-icon { opacity: 0; transform: scale(.4) rotate(-90deg); }
|
|
4936
|
+
.cx-sb-item[data-loading]::before { content: ""; position: absolute; left: var(--sb-pad, 8px); top: 50%; width: 16px; height: 16px; margin-top: -8px; box-sizing: border-box; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: cx-sb-spin .7s linear infinite; }
|
|
4937
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4938
|
+
.cx-sidebar .cx-sb-item, .cx-sb-label, .cx-sb-glabel, .cx-sb-count, .cx-sb-item > .mu-icon { transition: none; }
|
|
4939
|
+
.cx-sb-item[data-loading]::before { animation-duration: 1.6s; }
|
|
4940
|
+
}
|
|
4941
|
+
/* THE MONOGRAM: a soft tile in the name's own hue, the letters in a deep shade of the same hue, a hairline ring of it.
|
|
4942
|
+
Each name keeps its own colour, and it reads as a mark, not as a grey placeholder. */
|
|
4943
|
+
.cx-av .cn-avatar-fallback { background: oklch(.94 .04 var(--h)); color: oklch(.4 .12 var(--h)); font-weight: 650; letter-spacing: -.02em; box-shadow: inset 0 0 0 1px oklch(.85 .06 var(--h)); }
|
|
4944
|
+
:root[data-theme="dark"] .cx-av .cn-avatar-fallback { background: oklch(.32 .06 var(--h)); color: oklch(.88 .08 var(--h)); box-shadow: inset 0 0 0 1px oklch(.42 .07 var(--h)); }
|
|
4945
|
+
|
|
4946
|
+
/* ═════ AUDIT 2026-10-10 · systemic fixes ═════ */
|
|
4947
|
+
/* A menu inside a ButtonGroup (SplitButton) is one more segment of the row: its trigger joins the button before it,
|
|
4948
|
+
one shape with a hairline between the two halves, never two pills side by side. */
|
|
4949
|
+
.cn-button-group-orientation-horizontal { gap: 0; }
|
|
4950
|
+
.cn-button-group-orientation-horizontal > .cx-ov { display: flex; }
|
|
4951
|
+
.cn-button-group-orientation-horizontal > .cx-ov > .cx-ov-trigger { display: flex; }
|
|
4952
|
+
.cn-button-group-orientation-horizontal > .cx-ov:not(:first-child) .cx-ov-trigger > .cn-button { border-top-left-radius: 0; border-bottom-left-radius: 0; border-left-width: 0; }
|
|
4953
|
+
.cn-button-group-orientation-horizontal > .cx-ov:not(:last-child) .cx-ov-trigger > .cn-button { border-top-right-radius: 0; border-bottom-right-radius: 0; }
|
|
4954
|
+
.cn-button-group-orientation-horizontal > .cn-button-group-separator { margin: 0; width: 1px; flex: none; align-self: stretch; background: var(--border); }
|
|
4955
|
+
.cn-button-group-orientation-horizontal:has(> .cn-button-variant-default) > .cn-button-group-separator { background: color-mix(in oklab, var(--primary-foreground) 28%, var(--primary)); }
|
|
4956
|
+
.cn-button-group-orientation-horizontal:has(> .cn-button-variant-outline) > .cn-button-group-separator { display: none; }
|
|
4957
|
+
/* A picker inside a field (the currency of a price, the country of a phone) is a SEGMENT of the field, not a button
|
|
4958
|
+
dropped inside it: the whole height, the field's own type, a hairline between it and the value, a tint on hover. */
|
|
4959
|
+
.cn-input-group-addon:has(> .cx-cc) { align-self: stretch; height: auto; padding: 0 !important; }
|
|
4960
|
+
.cn-input-group-addon-align-inline-start:has(> .cx-cc) { border-right: 1px solid var(--input, var(--border)); }
|
|
4961
|
+
.cn-input-group-addon-align-inline-end:has(> .cx-cc) { border-left: 1px solid var(--input, var(--border)); }
|
|
4962
|
+
.cn-input-group .cx-cc { height: 100%; min-width: 0; border-radius: 0; padding: 0 10px; gap: 6px; background: transparent; box-shadow: none; font: inherit; font-size: 14px; color: var(--foreground); }
|
|
4963
|
+
.cn-input-group-addon-align-inline-start .cx-cc { border-top-left-radius: inherit; border-bottom-left-radius: inherit; }
|
|
4964
|
+
.cn-input-group-addon-align-inline-end .cx-cc { border-top-right-radius: inherit; border-bottom-right-radius: inherit; }
|
|
4965
|
+
.cn-input-group .cx-cc:hover, .cn-input-group .cx-cc[aria-expanded="true"] { background: color-mix(in oklab, var(--foreground) 5%, transparent); }
|
|
4966
|
+
.cn-input-group .cx-cc-code { font: inherit; font-weight: 600; }
|
|
4967
|
+
.cn-input-group .cx-cc-dial { min-width: 0; color: var(--muted-foreground); font-variant-numeric: tabular-nums; }
|
|
4968
|
+
/* A conversation in a column of fixed height scrolls: its messages and day markers keep their own height, never
|
|
4969
|
+
squeezed shorter than their words (the time then lands on the text). */
|
|
4970
|
+
.cx-chat-msg, .cx-chat-day, .cx-chat-msg > *, .cx-msg-bubble > * { flex-shrink: 0; }
|
|
4971
|
+
.cx-chat-day { padding: 3px 12px; line-height: 1.4; }
|
|
4972
|
+
.cn-input-group-addon-align-inline-start:has(> .cx-cc) ~ .cn-input-group-input { padding-left: 12px; }
|
|
4973
|
+
.cn-input-group-input:has(~ .cn-input-group-addon-align-inline-end > .cx-cc) { padding-right: 12px; }
|
|
4974
|
+
/* Card Field: the same rhythm as every form of the library (.cx-form) — 16 px between fields, 12 px between the two
|
|
4975
|
+
halves of a row, the note tucked under the last field, the button after it with room */
|
|
4976
|
+
.cx-cardform { display: flex; flex-direction: column; gap: 16px; width: 100%; max-width: 380px; }
|
|
4977
|
+
.cx-cardform > .cx-frange { gap: 12px; }
|
|
4978
|
+
.cx-cardform > .cx-msg { display: flex; align-items: center; gap: 6px; margin: -6px 0 0; min-height: 0; }
|
|
4979
|
+
.cx-cardform > .cx-msg svg { width: 14px; height: 14px; flex: none; }
|
|
4980
|
+
.cx-cardform > .cn-button { margin-top: 4px; }
|
|
4981
|
+
.cx-dp { width: 100%; max-width: 440px; } /* a plan of the day has a width of its own: in a centred row it shrank to its narrowest word */
|
|
4982
|
+
/* An alert's action (Responder, Reintentar…) has its own column: the words wrap beside it, never under it */
|
|
4983
|
+
.cx-alert:has(> .cn-alert-action) { padding-right: 10px; grid-template-columns: 1fr auto; }
|
|
4984
|
+
.cx-alert:has(> svg):has(> .cn-alert-action) { grid-template-columns: 16px 1fr auto; }
|
|
4985
|
+
.cx-alert > .cn-alert-action { position: static; grid-column: -2; grid-row: 1 / span 9; align-self: center; margin-left: 8px; transform: none; }
|
|
4986
|
+
/* Status Bar in a narrow box: it slides sideways (like an editor's footer), never cut at the edge */
|
|
4987
|
+
.cx-status { overflow-x: auto; scrollbar-width: none; }
|
|
4988
|
+
.cx-status::-webkit-scrollbar { display: none; }
|
|
4989
|
+
.cx-status > * { flex-shrink: 0; }
|
|
4990
|
+
/* Permission Matrix on a phone: the role columns narrow and the permission's words wrap, so every role stays in view */
|
|
4991
|
+
@media (max-width: 560px) {
|
|
4992
|
+
.cx-perm { min-width: 0; }
|
|
4993
|
+
.cx-perm .cx-perm-c { width: 84px; }
|
|
4994
|
+
.cx-perm th, .cx-perm td { padding-inline: 6px; }
|
|
4995
|
+
.cx-perm th { font-size: 12px; }
|
|
4996
|
+
}
|
|
4997
|
+
.cx-wrap { flex-wrap: wrap; justify-content: center; max-width: 100%; }
|
|
4998
|
+
.cx-wrap > * { max-width: 100%; }
|
|
4999
|
+
/* An Item keeps room for its words: when its box is too narrow for the words AND the actions (a price, a button) side
|
|
5000
|
+
by side, the actions go to the next line instead of the title running under them. */
|
|
5001
|
+
.cn-item > .cn-item-content { flex: 1 1 8rem; min-width: 0; }
|
|
5002
|
+
.cn-item > .cn-item-content > .cn-item-title { overflow: hidden; text-overflow: ellipsis; }
|
|
5003
|
+
/* Weekly Hours: its @container query needs a container, or on a phone the day name keeps its 150px column and the
|
|
5004
|
+
ranges run past the edge. */
|
|
5005
|
+
.cx-wh-host { display: block; width: 100%; container-type: inline-size; }
|
|
5006
|
+
/* ScreenTour: the step's bar is placed by left/right; the progress part's own width: 100% pushed it 40px past the step. */
|
|
5007
|
+
.cx-tour-steps > li > .cx-stp-bar { width: auto; }
|
|
5008
|
+
|
|
5009
|
+
/* ═════ CHART (muten's native primitive) ═════
|
|
5010
|
+
One series wears the skin's accent (the area's fill follows it, it is currentColor); a series per colour (pie, donut,
|
|
5011
|
+
color(field)) takes the palette below, chosen to stay apart from the accent in light and dark. The legend is swatch + name. */
|
|
5012
|
+
.mu-chart-wrap { width: 100%; max-width: 640px; margin: 0; gap: 14px; }
|
|
5013
|
+
.mu-chart { color: var(--selected, var(--primary)); }
|
|
5014
|
+
.mu-chart-bar, .mu-chart-dot { fill: currentColor; }
|
|
5015
|
+
.mu-chart-line { stroke: currentColor; }
|
|
5016
|
+
.mu-chart-s0 { --s: var(--selected, var(--primary)); }
|
|
5017
|
+
.mu-chart-s1 { --s: oklch(0.7 0.14 168); }
|
|
5018
|
+
.mu-chart-s2 { --s: oklch(0.78 0.15 78); }
|
|
5019
|
+
.mu-chart-s3 { --s: oklch(0.66 0.19 22); }
|
|
5020
|
+
.mu-chart-s4 { --s: oklch(0.68 0.13 238); }
|
|
5021
|
+
.mu-chart-s5 { --s: oklch(0.7 0.16 330); }
|
|
5022
|
+
.mu-chart-s6 { --s: oklch(0.62 0.05 260); }
|
|
5023
|
+
.mu-chart-s7 { --s: oklch(0.8 0.1 120); }
|
|
5024
|
+
:is(.mu-chart-bar, .mu-chart-dot, .mu-chart-slice)[class*="mu-chart-s"] { fill: var(--s); }
|
|
5025
|
+
.mu-chart-legend { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 6px 18px; font-size: 13px; color: var(--muted-foreground); }
|
|
5026
|
+
.mu-chart-legend-item { display: flex; flex-direction: row; align-items: center; gap: 7px; }
|
|
5027
|
+
.mu-chart-swatch { width: 10px; height: 10px; border-radius: 3px; background: var(--s); flex: none; }
|