/* ===================================================================== Alune · Moonlight Dialogs — board chrome Used only for displaying this design board; it is not part of the product component layer (see dialog.css for that). ===================================================================== */ :root { --board-bg: #edf1f9; --board-ink: #111c36; --board-muted: #56648a; --board-faint: #7d8bab; --board-hair: rgb(35 52 102 / 9%); --board-hair-strong: rgb(35 52 102 / 15%); --bz-shell: rgb(255 255 255 / 44%); --bz-ring: rgb(35 52 102 / 8%); --bz-hi: rgb(255 255 255 / 92%); --bz-core: #fbfcff; --bz-core-ring: rgb(35 52 102 / 7%); --bz-shadow: 0 1px 1px rgb(30 45 95 / 3%), 0 28px 64px -36px rgb(30 45 95 / 26%); --island-bg: rgb(250 252 255 / 64%); --island-ring: rgb(35 52 102 / 10%); --menu-bg: rgb(237 241 249 / 78%); --orb-1: rgb(110 134 232 / 30%); --orb-2: rgb(143 227 238 / 34%); --orb-3: rgb(166 146 244 / 15%); --grain-opacity: 0.05; --sk-side: #e2e8f4; --sk-main: #eef2f9; --sk-panel: #f7f9fd; --sk-bar: rgb(35 52 102 / 8%); --sk-bar-strong: rgb(35 52 102 / 12%); --sk-add: rgb(15 109 86 / 10%); --sk-del: rgb(173 59 73 / 9%); --sk-accent: rgb(65 90 176 / 18%); --z-bg: 0; --z-main: 1; --z-nav: 40; --z-menu: 50; --z-grain: 80; } [data-theme='dark'] { --board-bg: #0a1120; --board-ink: #eef3ff; --board-muted: #a5b5d8; --board-faint: #7384aa; --board-hair: rgb(175 198 255 / 9%); --board-hair-strong: rgb(175 198 255 / 16%); --bz-shell: rgb(175 198 255 / 4%); --bz-ring: rgb(175 198 255 / 10%); --bz-hi: rgb(214 228 255 / 8%); --bz-core: #0f1829; --bz-core-ring: rgb(175 198 255 / 8%); --bz-shadow: 0 1px 1px rgb(0 0 0 / 30%), 0 30px 70px -36px rgb(0 0 0 / 72%); --island-bg: rgb(16 24 42 / 60%); --island-ring: rgb(175 198 255 / 13%); --menu-bg: rgb(8 13 26 / 80%); --orb-1: rgb(110 134 232 / 24%); --orb-2: rgb(143 227 238 / 11%); --orb-3: rgb(150 120 255 / 12%); --grain-opacity: 0.075; --sk-side: #0e1627; --sk-main: #121b2d; --sk-panel: #17223a; --sk-bar: rgb(175 198 255 / 7%); --sk-bar-strong: rgb(175 198 255 / 11%); --sk-add: rgb(176 229 204 / 8%); --sk-del: rgb(255 183 192 / 8%); --sk-accent: rgb(175 198 255 / 16%); } /* --------------------------------------------------------------------- Base --------------------------------------------------------------------- */ *, *::before, *::after { box-sizing: border-box; } html { background: var(--board-bg); scroll-behavior: smooth; scroll-padding-top: 104px; scrollbar-gutter: stable; } html.is-locked { overflow: hidden; } body { margin: 0; min-height: 100dvh; font-family: var(--font-sans); font-size: 15px; line-height: 1.6; color: var(--board-ink); background: var(--board-bg); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip; } ::selection { background: rgb(110 134 232 / 28%); } a { color: inherit; } button { font: inherit; color: inherit; } h1, h2, h3, h4, p { margin: 0; } .mono { font-family: var(--font-mono); } .sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } ::view-transition-old(root), ::view-transition-new(root) { animation-duration: 460ms; animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1); } /* Background: fixed orbs + starfield (dark) + grain (fixed pseudo-element) */ .bg { position: fixed; inset: 0; z-index: var(--z-bg); overflow: hidden; pointer-events: none; } .bg i { position: absolute; border-radius: 50%; } .bg i:nth-child(1) { top: -26vmax; right: -16vmax; width: 66vmax; height: 66vmax; background: radial-gradient(closest-side, var(--orb-1), transparent 72%); animation: drift-a 28s var(--ease-orbit) infinite alternate; } .bg i:nth-child(2) { bottom: -24vmax; left: -14vmax; width: 54vmax; height: 54vmax; background: radial-gradient(closest-side, var(--orb-2), transparent 70%); animation: drift-b 34s var(--ease-orbit) infinite alternate; } .bg i:nth-child(3) { top: 38%; left: 36%; width: 38vmax; height: 38vmax; background: radial-gradient(closest-side, var(--orb-3), transparent 70%); animation: drift-a 40s var(--ease-orbit) infinite alternate-reverse; } .bg::before { content: ''; position: absolute; inset: 0; background-image: radial-gradient(1px 1px at 12% 18%, rgb(214 228 255 / 70%), transparent 60%), radial-gradient(1px 1px at 78% 12%, rgb(214 228 255 / 60%), transparent 60%), radial-gradient(1.5px 1.5px at 64% 32%, rgb(143 227 238 / 70%), transparent 60%), radial-gradient(1px 1px at 32% 72%, rgb(214 228 255 / 50%), transparent 60%), radial-gradient(1px 1px at 88% 64%, rgb(214 228 255 / 55%), transparent 60%), radial-gradient(1.5px 1.5px at 22% 44%, rgb(175 198 255 / 55%), transparent 60%), radial-gradient(1px 1px at 52% 88%, rgb(214 228 255 / 45%), transparent 60%), radial-gradient(1px 1px at 94% 36%, rgb(143 227 238 / 50%), transparent 60%); opacity: 0; transition: opacity 600ms var(--ease-enter); } [data-theme='dark'] .bg::before { opacity: 1; } @keyframes drift-a { to { transform: translate3d(-6vmax, 5vmax, 0) scale(1.08); } } @keyframes drift-b { to { transform: translate3d(7vmax, -4vmax, 0) scale(1.12); } } body::after { content: ''; position: fixed; inset: 0; z-index: var(--z-grain); pointer-events: none; opacity: var(--grain-opacity); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .42 0 0 0 0 .48 0 0 0 0 .66 0 0 0 1.1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); } /* --------------------------------------------------------------------- Floating island nav + hamburger + full-screen menu --------------------------------------------------------------------- */ .island { position: fixed; top: 16px; left: 50%; z-index: var(--z-nav); display: flex; align-items: center; gap: 2px; max-width: calc(100vw - 24px); height: 54px; padding: 6px; border-radius: 999px; background: var(--island-bg); -webkit-backdrop-filter: blur(22px) saturate(1.5); backdrop-filter: blur(22px) saturate(1.5); box-shadow: inset 0 0 0 1px var(--island-ring), inset 0 1px 0 var(--bz-hi), 0 14px 36px -18px rgb(20 30 70 / 34%); transform: translateX(-50%); animation: island-in 1000ms var(--ease-spring) 120ms both; } @keyframes island-in { from { opacity: 0; transform: translate(-50%, -28px); } } .brand { display: flex; align-items: center; gap: 10px; height: 42px; padding: 0 14px 0 6px; border-radius: 999px; text-decoration: none; white-space: nowrap; } .brand strong { font-size: 14px; font-weight: 600; letter-spacing: -0.02em; } .brand small { font-size: 12px; color: var(--board-muted); } .moon-mark { position: relative; flex: none; width: 30px; height: 30px; border-radius: 50%; background: radial-gradient(circle at 34% 30%, #ffffff, #d7e1ff 42%, #8ea2f0 78%, #6e86e8); box-shadow: 0 0 0 1px rgb(110 134 232 / 25%), 0 0 18px rgb(143 227 238 / 45%); -webkit-mask: radial-gradient(circle at 76% 28%, transparent 34%, #000 35.5%); mask: radial-gradient(circle at 76% 28%, transparent 34%, #000 35.5%); } .island-links { display: flex; align-items: center; gap: 2px; margin: 0 4px; padding: 0 6px; box-shadow: inset 1px 0 0 var(--board-hair), inset -1px 0 0 var(--board-hair); } .island-links a { position: relative; isolation: isolate; display: grid; place-items: center; height: 40px; padding: 0 12px; border-radius: 999px; font-size: 13px; color: var(--board-muted); text-decoration: none; white-space: nowrap; transition: color var(--t-hover) var(--ease-enter); } .island-links a::before { content: ''; position: absolute; inset: 0; z-index: -1; border-radius: inherit; background: var(--hover-veil); box-shadow: inset 0 0 0 1px var(--board-hair); opacity: 0; transform: scale(0.9); transition: opacity 220ms var(--ease-enter), transform 380ms var(--ease-spring); } .island-links a:hover { color: var(--board-ink); } .island-links a[aria-current='true'] { color: var(--board-ink); } .island-links a[aria-current='true']::before { opacity: 1; transform: none; } .island-tools { display: flex; align-items: center; gap: 2px; } .round-btn { position: relative; isolation: isolate; display: grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 0; border-radius: 999px; color: var(--board-muted); background: transparent; cursor: pointer; transition: transform var(--t-press) var(--ease-enter), color var(--t-hover) var(--ease-enter); } .round-btn::before { content: ''; position: absolute; inset: 0; z-index: -1; border-radius: inherit; background: var(--hover-veil); box-shadow: inset 0 0 0 1px var(--board-hair); opacity: 0; transition: opacity var(--t-hover) var(--ease-enter); } .round-btn:hover { color: var(--board-ink); } .round-btn:hover::before { opacity: 1; } .round-btn:active { transform: scale(0.92); } .round-btn .ic { width: 18px; height: 18px; } .round-btn .ic-sun, [data-theme='dark'] .round-btn .ic-moon { display: none; } [data-theme='dark'] .round-btn .ic-sun { display: block; } .round-btn[aria-pressed='true'] { color: var(--blue); } .round-btn[aria-pressed='true']::before { opacity: 1; background: var(--blue-soft); } .burger { display: none; } .burger i { position: absolute; top: calc(50% - 0.75px); left: 13px; right: 13px; height: 1.5px; border-radius: 2px; background: currentColor; transition: transform 460ms var(--ease-spring); } .burger i:nth-child(1) { transform: translateY(-3.5px); } .burger i:nth-child(2) { transform: translateY(3.5px); } .is-menu-open .burger i:nth-child(1) { transform: rotate(45deg); } .is-menu-open .burger i:nth-child(2) { transform: rotate(-45deg); } .menu-overlay { position: fixed; inset: 0; z-index: var(--z-menu); display: grid; align-content: center; padding: 104px 24px 48px; overflow-y: auto; background: var(--menu-bg); -webkit-backdrop-filter: blur(34px) saturate(1.3); backdrop-filter: blur(34px) saturate(1.3); opacity: 0; visibility: hidden; transition: opacity 360ms var(--ease-exit), visibility 0ms var(--ease-exit) 360ms; } .is-menu-open .menu-overlay { opacity: 1; visibility: visible; transition: opacity 520ms var(--ease-spring); } .menu-overlay ol { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 40px; width: min(920px, 100%); margin: 0 auto; padding: 0; list-style: none; } .menu-overlay a { display: block; overflow: hidden; padding: 6px 0; text-decoration: none; } .menu-overlay a span { display: flex; align-items: baseline; gap: 14px; font-size: clamp(24px, 3.6vw, 38px); font-weight: 500; line-height: 1.25; letter-spacing: -0.01em; opacity: 0; transform: translateY(110%); transition: transform 320ms var(--ease-exit), opacity 200ms var(--ease-exit); } .menu-overlay a small { font-family: var(--font-mono); font-size: 12px; font-weight: 400; color: var(--board-faint); } .is-menu-open .menu-overlay a span { opacity: 1; transform: none; transition: transform 800ms var(--ease-spring), opacity 500ms var(--ease-enter); transition-delay: calc(var(--i, 0) * 45ms + 80ms); } /* --------------------------------------------------------------------- Section scaffolding --------------------------------------------------------------------- */ main { position: relative; z-index: var(--z-main); } .wrap { width: min(1320px, calc(100% - 64px)); margin-inline: auto; } .sec { position: relative; padding: clamp(112px, 11vw, 176px) 0; } .sec + .sec::before { content: ''; position: absolute; top: 0; left: 50%; width: min(1320px, calc(100% - 64px)); height: 1px; background: linear-gradient(90deg, transparent, var(--board-hair-strong) 20%, var(--board-hair-strong) 80%, transparent); transform: translateX(-50%); } .sec-head { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 28px 72px; align-items: end; margin-bottom: clamp(52px, 6vw, 92px); } .eyebrow { display: inline-flex; align-items: center; gap: 9px; height: 26px; padding: 0 12px 0 10px; border-radius: 999px; font-size: 10.5px; font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase; color: var(--board-muted); white-space: nowrap; background: var(--bz-shell); box-shadow: inset 0 0 0 1px var(--board-hair-strong), inset 0 1px 0 var(--bz-hi); } .eyebrow::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: linear-gradient(135deg, var(--moon-indigo), var(--moon-cyan)); box-shadow: 0 0 10px var(--moon-cyan); } .eyebrow b { font-family: var(--font-mono); font-weight: 500; letter-spacing: 0.06em; color: var(--board-ink); } .h2 { margin-top: 20px; font-size: clamp(40px, 5.4vw, 80px); font-weight: 600; line-height: 1.04; letter-spacing: -0.02em; text-wrap: balance; word-break: keep-all; } .h2 .en { display: block; margin-top: 10px; font-size: 0.42em; font-weight: 400; letter-spacing: -0.03em; color: var(--board-faint); } .grad { color: transparent; background: linear-gradient(100deg, var(--moon-indigo) 10%, #7fb6f0 55%, var(--moon-cyan)); -webkit-background-clip: text; background-clip: text; } [data-theme='dark'] .grad { background: linear-gradient(100deg, #9fb4ff 10%, #b5d8ff 55%, var(--moon-cyan)); -webkit-background-clip: text; background-clip: text; } .lede { max-width: 540px; font-size: 16px; line-height: 1.8; color: var(--board-muted); text-wrap: pretty; } .lede + .lede { margin-top: 12px; } .sub-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 16px; margin: 96px 0 28px; } .sub-head:first-child { margin-top: 0; } .sub-head h3 { font-size: 24px; font-weight: 600; letter-spacing: -0.01em; } .sub-head .mono { font-size: 12px; color: var(--board-faint); } .sub-head p { flex-basis: 100%; max-width: 720px; font-size: 14px; line-height: 1.7; color: var(--board-muted); } /* --------------------------------------------------------------------- Double-bezel board containers --------------------------------------------------------------------- */ .bz { padding: 6px; border-radius: 30px; background: var(--bz-shell); box-shadow: inset 0 0 0 1px var(--bz-ring), inset 0 1px 0 var(--bz-hi), var(--bz-shadow); } .bz-core { position: relative; height: 100%; overflow: hidden; padding: 28px; border-radius: 24px; background: var(--bz-core); box-shadow: 0 0 0 1px var(--bz-core-ring), inset 0 1px 0 var(--bz-hi); } .bz-core.is-flush { padding: 0; } .bento { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 20px; } .bento > * { grid-column: span var(--span, 4); grid-row: span var(--rows, 1); } .card-kicker { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 11px; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: var(--board-faint); } .card-kicker .mono { letter-spacing: 0.04em; } .card-title { margin-top: 16px; font-size: 22px; font-weight: 600; line-height: 1.3; letter-spacing: -0.01em; } .card-text { margin-top: 10px; font-size: 14px; line-height: 1.75; color: var(--board-muted); text-wrap: pretty; } /* --------------------------------------------------------------------- 00 Cover --------------------------------------------------------------------- */ .cover { display: grid; align-items: center; min-height: 100dvh; padding: 150px 0 110px; overflow-x: clip; } .cover-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.02fr); gap: 40px 56px; align-items: center; } .cover h1 { margin-top: 26px; font-size: clamp(64px, 8.8vw, 140px); font-weight: 600; line-height: 0.92; letter-spacing: -0.055em; } .cover h1 span { display: block; } .cover-zh { margin-top: 26px; font-size: clamp(24px, 2.4vw, 34px); font-weight: 500; letter-spacing: 0.02em; word-break: keep-all; } .cover .lede { margin-top: 18px; } .cover-cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 36px; } .cover-cta .btn { height: 48px; padding: 0 22px; font-size: 14px; } .cover-cta .btn-primary { padding-right: 6px; } .cover-cta .btn-orb { width: 36px; height: 36px; } .cover-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; max-width: 600px; margin-top: 52px; padding-top: 22px; box-shadow: inset 0 1px 0 var(--board-hair-strong); } .cover-stats b { display: block; font-family: var(--font-mono); font-size: 30px; font-weight: 400; line-height: 1.1; letter-spacing: -0.04em; } .cover-stats span { font-size: 12.5px; color: var(--board-muted); } .cascade { position: relative; height: 640px; } .cover-moon { position: absolute; top: 50%; left: 54%; width: 560px; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 38% 38%, rgb(255 255 255 / 95%), rgb(214 226 255 / 70%) 38%, rgb(142 162 240 / 30%) 66%, transparent 71%); box-shadow: 0 0 140px rgb(143 227 238 / 26%); -webkit-mask: radial-gradient(circle at 74% 30%, transparent 33%, #000 33.6%); mask: radial-gradient(circle at 74% 30%, transparent 33%, #000 33.6%); transform: translate(-50%, -50%); opacity: 0.85; } [data-theme='dark'] .cover-moon { background: radial-gradient(circle at 38% 38%, rgb(232 240 255 / 55%), rgb(143 170 255 / 30%) 40%, rgb(110 134 232 / 14%) 64%, transparent 71%); box-shadow: 0 0 180px rgb(110 134 232 / 30%); opacity: 1; } .cover-orbit { position: absolute; top: 50%; left: 54%; width: 700px; aspect-ratio: 1; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--board-hair-strong); transform: translate(-50%, -50%) rotate(-18deg) scaleY(0.42); } .cascade-item { position: absolute; transform: rotate(var(--r, 0deg)); } .cascade-item > * { animation: float var(--float, 9s) var(--ease-orbit) infinite alternate; } .cascade-item.c1 { --r: -5deg; --float: 10s; top: 10px; left: 0; } .cascade-item.c2 { --r: 3.5deg; --float: 8s; top: 210px; left: 24%; } .cascade-item.c3 { --r: -2deg; --float: 11s; top: 480px; left: 6%; } .cascade-item.c1 .dlg { opacity: 0.94; } @keyframes float { from { transform: translate3d(0, -7px, 0); } to { transform: translate3d(0, 9px, 0); } } .scroll-cue { display: flex; align-items: center; gap: 10px; margin-top: 64px; font-size: 12px; color: var(--board-faint); } .scroll-cue i { position: relative; width: 1px; height: 36px; overflow: hidden; background: var(--board-hair-strong); } .scroll-cue i::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent, var(--moon-indigo)); transform: translateY(-100%); animation: cue 2200ms var(--ease-spring) infinite; } @keyframes cue { to { transform: translateY(100%); } } /* --------------------------------------------------------------------- 01 Principles --------------------------------------------------------------------- */ .pr-visual { display: grid; gap: 10px; margin-top: 28px; } .pr-big .bz-core { display: grid; grid-template-rows: auto 1fr; padding: 36px; } .pr-big .card-title { font-size: clamp(26px, 2.6vw, 36px); } .pr-big .pr-demo { display: grid; align-content: end; gap: 16px; margin-top: 36px; } .demo-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } .demo-arrow { color: var(--board-faint); } .demo-arrow .ic { width: 16px; height: 16px; } .demo-old { display: inline-flex; align-items: center; height: 32px; padding: 0 12px; border-radius: 8px; font-size: 13px; color: var(--text-muted); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--red) 60%, transparent); } .lvl-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .lvl-chip { display: grid; gap: 2px; padding: 10px 12px; border-radius: 12px; font-size: 12px; color: var(--text-muted); background: var(--tone-soft); box-shadow: inset 0 0 0 1px var(--tone-line); } .lvl-chip b { font-family: var(--font-mono); font-size: 11px; font-weight: 500; color: var(--tone-fg); } .lvl-chip strong { font-size: 13px; font-weight: 600; color: var(--text); } .mini-foot { display: flex; align-items: center; gap: 8px; padding: 10px 10px 10px 14px; border-radius: 14px; background: var(--dlg-foot-bg); box-shadow: inset 0 0 0 1px var(--board-hair); } .mini-foot .dlg-actions { gap: 6px; } .depth-demo { position: relative; height: 132px; } .depth-demo > div { position: absolute; inset: 16px 40px 0; border-radius: 18px; background: var(--dlg-shell-bg); box-shadow: inset 0 0 0 1px var(--dlg-shell-ring), var(--dlg-shadow); } .depth-demo > div::after { content: ''; position: absolute; inset: 5px; border-radius: 13px; background: var(--dlg-core-bg); box-shadow: 0 0 0 1px var(--dlg-core-ring); } .depth-demo::before { content: ''; position: absolute; inset: -20px 0 -30px; background: radial-gradient(50% 60% at 50% 50%, var(--dlg-halo-a), transparent 72%); } .rhythm { display: flex; align-items: flex-end; gap: 6px; height: 64px; } .rhythm i { flex: 1; height: calc(var(--h) * 4px); border-radius: 6px 6px 3px 3px; background: linear-gradient(180deg, color-mix(in srgb, var(--moon-indigo) 55%, transparent), color-mix(in srgb, var(--moon-cyan) 35%, transparent)); } /* --------------------------------------------------------------------- 02 Tokens --------------------------------------------------------------------- */ .swatch-table { display: grid; gap: 6px; margin-top: 22px; } .swatch-head, .swatch-row { display: grid; grid-template-columns: minmax(0, 1.1fr) repeat(2, minmax(0, 1fr)); gap: 8px; align-items: center; } .swatch-head { font-size: 10.5px; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: var(--board-faint); } .swatch-row > span:first-child { display: grid; font-size: 13px; } .swatch-row > span:first-child small { font-family: var(--font-mono); font-size: 11px; color: var(--board-faint); } .swatch { display: flex; align-items: flex-end; justify-content: space-between; height: 46px; padding: 7px 9px; border-radius: 12px; font-family: var(--font-mono); font-size: 10.5px; box-shadow: inset 0 0 0 1px rgb(20 30 60 / 8%); } .swatch.on-dark { color: rgb(255 255 255 / 86%); } .swatch.on-light { color: rgb(17 28 54 / 78%); } .elev-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 22px; } .elev { position: relative; display: grid; place-items: center; height: 118px; border-radius: 16px; background: var(--sk-main); box-shadow: inset 0 0 0 1px var(--board-hair); overflow: hidden; } .elev > div { display: grid; place-items: center; width: 70%; height: 56%; border-radius: 12px; font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); background: var(--dlg-core-bg); } .elev[data-e='0'] > div { background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--field-ring); } .elev[data-e='1'] > div { box-shadow: 0 0 0 1px var(--dlg-core-ring), var(--pop-shadow); } .elev[data-e='2'] > div { box-shadow: 0 0 0 5px var(--dlg-shell-bg), 0 0 0 6px var(--dlg-shell-ring), var(--dlg-shadow); } .elev[data-e='3']::before { content: ''; position: absolute; inset: 0; background: radial-gradient(60% 70% at 50% 50%, var(--dlg-halo-a), transparent 70%), var(--dlg-scrim); } .elev[data-e='3'] > div { position: relative; box-shadow: 0 0 0 5px var(--dlg-shell-bg), 0 0 0 6px var(--dlg-shell-ring), var(--dlg-shadow); } .elev figcaption { position: absolute; top: 9px; left: 11px; font-size: 11px; font-weight: 500; color: var(--board-muted); } .radii { position: relative; display: grid; place-items: center; height: 250px; margin-top: 18px; } .radii > div { position: relative; display: grid; place-items: center; padding: 16px; border-radius: 34px; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--moon-indigo) 55%, transparent); background: color-mix(in srgb, var(--moon-indigo) 5%, transparent); } .radii > div > div { padding: 16px; border-radius: 18px; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--moon-cyan) 70%, transparent); background: color-mix(in srgb, var(--moon-cyan) 7%, transparent); } .radii > div > div > div { width: 150px; height: 64px; border-radius: 10px; background: var(--dlg-core-bg); box-shadow: 0 0 0 1px var(--hair-strong); } .radii-label { position: absolute; font-family: var(--font-mono); font-size: 11px; color: var(--board-muted); white-space: nowrap; } .radii-formula { margin-top: 8px; padding: 10px 12px; border-radius: 12px; font-family: var(--font-mono); font-size: 12px; color: var(--board-muted); background: var(--sk-main); box-shadow: inset 0 0 0 1px var(--board-hair); } .type-rows { display: grid; margin-top: 18px; } .type-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: baseline; padding: 14px 0; } .type-row + .type-row { box-shadow: inset 0 1px 0 var(--board-hair); } .type-row .spec { font-family: var(--font-mono); font-size: 11px; color: var(--board-faint); white-space: nowrap; } .curves { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 20px; } .curve { display: grid; gap: 8px; padding: 12px; border-radius: 16px; background: var(--sk-main); box-shadow: inset 0 0 0 1px var(--board-hair); } .curve svg { width: 100%; height: auto; overflow: visible; } .curve .grid-line { stroke: var(--board-hair-strong); stroke-width: 1; fill: none; } .curve .path { fill: none; stroke: url(#g-moon); stroke-width: 2.5; stroke-linecap: round; } .curve .handle { stroke: var(--board-faint); stroke-width: 1; stroke-dasharray: 2 3; fill: none; } .curve .dot { fill: var(--bz-core); stroke: var(--moon-indigo); stroke-width: 1.5; } .curve strong { font-size: 13px; font-weight: 600; } .curve small { display: block; font-family: var(--font-mono); font-size: 10.5px; line-height: 1.5; color: var(--board-faint); } .sizes { display: grid; gap: 12px; margin-top: 22px; } .size-row { display: grid; grid-template-columns: 40px minmax(0, 1fr) 64px; gap: 12px; align-items: center; font-size: 12px; } .size-row b { font-family: var(--font-mono); font-weight: 500; } .size-row > i { display: block; height: 26px; border-radius: 8px; background: linear-gradient(90deg, color-mix(in srgb, var(--moon-indigo) 22%, transparent), color-mix(in srgb, var(--moon-cyan) 22%, transparent)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--moon-indigo) 30%, transparent); } .size-row span { font-size: 11.5px; color: var(--board-muted); } .size-row em { font-family: var(--font-mono); font-size: 11.5px; font-style: normal; text-align: right; color: var(--board-faint); } /* --------------------------------------------------------------------- 03 Anatomy --------------------------------------------------------------------- */ .anat { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); gap: 20px; align-items: stretch; } .anat-stage { min-height: 640px; } .pin { position: absolute; top: var(--y, 0); left: var(--x, 0); z-index: 6; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; font-family: var(--font-mono); font-size: 10.5px; font-style: normal; font-weight: 500; line-height: 1; color: #ffffff; background: linear-gradient(180deg, #8298f2, #5b72d6); box-shadow: 0 0 0 3px rgb(110 134 232 / 24%), 0 4px 10px -2px rgb(50 70 170 / 50%); transform: translate(-50%, -50%); pointer-events: none; transition: opacity 240ms var(--ease-enter), transform 380ms var(--ease-spring); } .has-pin { position: relative; } .hide-pins .pin { opacity: 0; transform: translate(-50%, -50%) scale(0.6); } .redlines .dlg-head, .redlines .dlg-body, .redlines .dlg-foot { outline: 1px dashed rgb(236 72 120 / 60%); outline-offset: -1px; } .redlines .dlg-core { outline: 1px solid rgb(236 72 120 / 45%); } .measure { position: absolute; z-index: 7; display: none; padding: 1px 5px; border-radius: 4px; font-family: var(--font-mono); font-size: 10px; line-height: 1.4; color: #ffffff; background: rgb(222 60 110 / 92%); pointer-events: none; } .redlines .measure { display: block; } .legend { display: grid; align-content: start; gap: 2px; margin: 18px 0 0; padding: 0; list-style: none; } .legend li { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 12px; padding: 11px 0; } .legend li + li { box-shadow: inset 0 1px 0 var(--board-hair); } .legend li > b { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; font-family: var(--font-mono); font-size: 10.5px; font-weight: 500; color: var(--blue); background: var(--blue-soft); box-shadow: inset 0 0 0 1px var(--chip-ring); } .legend strong { display: block; font-size: 14px; font-weight: 600; } .legend span { display: block; margin-top: 2px; font-size: 13px; line-height: 1.6; color: var(--board-muted); } .legend code { font-family: var(--font-mono); font-size: 11.5px; color: var(--board-ink); } .toggle-row { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; font-size: 13px; color: var(--board-muted); } .toggle-row label { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; } /* --------------------------------------------------------------------- 04 Classification: matrix + reversibility levels --------------------------------------------------------------------- */ .table-scroll { overflow-x: auto; } .matrix { width: 100%; min-width: 860px; border-collapse: separate; border-spacing: 0; font-size: 13.5px; line-height: 1.6; } .matrix th, .matrix td { padding: 16px 18px; text-align: left; vertical-align: top; } .matrix tbody tr + tr > * { box-shadow: inset 0 1px 0 var(--board-hair); } .matrix thead th { font-size: 10.5px; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: var(--board-faint); box-shadow: inset 0 -1px 0 var(--board-hair-strong); } .matrix tbody th { min-width: 170px; font-weight: 600; } .matrix tbody th small { display: block; margin-top: 2px; font-family: var(--font-mono); font-size: 11px; font-weight: 400; color: var(--board-faint); } .matrix td { color: var(--board-muted); } .matrix td b { font-weight: 500; color: var(--board-ink); } .levels { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin-top: 20px; } .level .bz-core { padding: 26px; } .level .bz-core::before { content: ''; position: absolute; inset: 0 0 auto; height: 3px; background: linear-gradient(90deg, var(--tone-fg), transparent); opacity: 0.8; } .level-no { font-family: var(--font-mono); font-size: 12px; color: var(--tone-fg); } .level h4 { margin-top: 10px; font-size: 20px; font-weight: 600; } .level p { margin-top: 8px; font-size: 13.5px; line-height: 1.7; color: var(--board-muted); } .level ul { display: grid; gap: 6px; margin: 16px 0 0; padding: 0; list-style: none; font-size: 13px; } .level li { display: flex; gap: 8px; } .level li::before { content: ''; flex: none; width: 5px; height: 5px; margin-top: 8px; border-radius: 50%; background: var(--tone-fg); } .level .rule { margin-top: 18px; padding: 11px 12px; border-radius: 12px; font-size: 12.5px; line-height: 1.6; color: var(--text); background: var(--tone-soft); box-shadow: inset 0 0 0 1px var(--tone-line); } /* --------------------------------------------------------------------- Artboards --------------------------------------------------------------------- */ .ab-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: start; } .ab { min-width: 0; padding: 6px; border-radius: 30px; background: var(--bz-shell); box-shadow: inset 0 0 0 1px var(--bz-ring), inset 0 1px 0 var(--bz-hi), var(--bz-shadow); } .ab.is-wide { grid-column: 1 / -1; } .ab-core { overflow: hidden; border-radius: 24px; background: var(--bz-core); box-shadow: 0 0 0 1px var(--bz-core-ring), inset 0 1px 0 var(--bz-hi); } .ab-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; padding: 14px 14px 14px 18px; } .ab-id { display: flex; align-items: center; gap: 12px; min-width: 0; } .ab-no { display: grid; flex: none; place-items: center; min-width: 46px; height: 28px; padding: 0 9px; border-radius: 999px; font-family: var(--font-mono); font-size: 11.5px; color: var(--board-muted); box-shadow: inset 0 0 0 1px var(--board-hair-strong); } .ab-title { font-size: 15px; font-weight: 600; line-height: 1.35; letter-spacing: -0.005em; } .ab-meta { display: flex; flex-wrap: wrap; margin-top: 2px; font-family: var(--font-mono); font-size: 11px; line-height: 1.5; color: var(--board-faint); } .ab-meta span + span::before { content: '·'; margin: 0 6px; opacity: 0.7; } .ab-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-left: auto; } .ab-states { display: flex; flex-wrap: wrap; gap: 2px; padding: 3px; border-radius: 999px; background: var(--seg-bg); box-shadow: inset 0 0 0 1px var(--board-hair); } .ab-states button { position: relative; isolation: isolate; height: 26px; padding: 0 11px; border: 0; border-radius: 999px; font-size: 12px; color: var(--board-muted); white-space: nowrap; background: transparent; cursor: pointer; transition: color var(--t-hover) var(--ease-enter), transform var(--t-press) var(--ease-enter); } .ab-states button::before { content: ''; position: absolute; inset: 0; z-index: -1; border-radius: inherit; background: var(--seg-thumb); box-shadow: 0 1px 2px rgb(20 30 60 / 10%), inset 0 0 0 1px var(--hair); opacity: 0; transform: scale(0.92); transition: opacity 180ms var(--ease-enter), transform 320ms var(--ease-spring); } .ab-states button:hover { color: var(--board-ink); } .ab-states button:active { transform: scale(0.96); } .ab-states button[aria-pressed='true'] { color: var(--board-ink); font-weight: 500; } .ab-states button[aria-pressed='true']::before { opacity: 1; transform: none; } .btn-ghost.has-orb { padding-right: 3px; } .btn-ghost .btn-orb { color: var(--blue); background: var(--blue-soft); box-shadow: inset 0 0 0 1px var(--chip-ring); } .stage { position: relative; isolation: isolate; display: grid; place-items: center; min-height: var(--stage-h, 540px); margin: 0 6px; padding: 56px 28px; overflow: hidden; border-radius: 18px; background: var(--sk-main); box-shadow: inset 0 0 0 1px var(--board-hair); } .stage::before { content: ''; position: absolute; inset: 0; z-index: 1; background: radial-gradient(56% 52% at 50% 48%, var(--dlg-halo-a), var(--dlg-halo-b) 48%, transparent 74%), var(--dlg-scrim); pointer-events: none; } .stage.is-bare::before { display: none; } .stage > :not(.sk) { position: relative; z-index: 2; } .stage.is-top { place-items: start center; } .stage-caption { position: absolute !important; bottom: 12px; left: 16px; font-family: var(--font-mono); font-size: 10.5px; color: var(--board-faint); } .ab-notes { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px 28px; margin: 0; padding: 18px 22px 22px; list-style: none; } .ab-notes li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: start; font-size: 13px; line-height: 1.65; color: var(--board-muted); } .ab-notes b { font-weight: 500; color: var(--board-ink); } .tag { display: inline-flex; align-items: center; height: 21px; margin-top: 1px; padding: 0 8px; border-radius: 999px; font-size: 11px; font-weight: 500; color: var(--board-muted); white-space: nowrap; box-shadow: inset 0 0 0 1px var(--board-hair-strong); } .tag.is-opt { color: var(--purple); background: var(--purple-soft); box-shadow: inset 0 0 0 1px var(--purple-line); } .tag.is-a11y { color: var(--cyan); background: var(--cyan-soft); box-shadow: inset 0 0 0 1px var(--cyan-line); } .tag.is-risk { color: var(--red); background: var(--red-soft); box-shadow: inset 0 0 0 1px var(--red-line); } /* App skeleton (injected into each stage by board.js) */ .sk { position: absolute; inset: 0; z-index: 0; display: grid; grid-template-columns: 21% minmax(0, 1fr) 25%; pointer-events: none; } .sk i { display: block; width: var(--w, 60%); height: 7px; border-radius: 999px; background: var(--sk-bar); } .sk-side { display: grid; align-content: start; gap: 14px; padding: 22px 18px; background: var(--sk-side); box-shadow: inset -1px 0 0 var(--board-hair); } .sk-side .sk-brand { width: 22px; height: 22px; margin-bottom: 10px; border-radius: 7px; background: var(--sk-accent); } .sk-side .is-on { height: 24px; width: 100%; border-radius: 8px; background: var(--sk-accent); } .sk-main { display: grid; grid-template-rows: 46px 1fr; min-width: 0; } .sk-top { display: flex; align-items: center; gap: 10px; padding: 0 18px; box-shadow: inset 0 -1px 0 var(--board-hair); } .sk-top i { width: var(--w, 60px); height: 18px; border-radius: 999px; } .sk-code { display: grid; align-content: start; gap: 9px; padding: 20px 22px; } .sk-code i.add { background: var(--sk-add); } .sk-code i.del { background: var(--sk-del); } .sk-panel { display: grid; grid-template-rows: 46px 1fr; background: var(--sk-panel); box-shadow: inset 1px 0 0 var(--board-hair); } .sk-rows { display: grid; align-content: start; gap: 16px; padding: 18px 16px; } .sk-rows span { display: flex; align-items: center; gap: 8px; } .sk-rows span::before { content: ''; flex: none; width: 12px; height: 12px; border-radius: 4px; background: var(--sk-bar-strong); } /* Popover stages: trigger + floating layer */ .pop-stage { display: grid; justify-items: start; gap: 8px; width: min(100%, 420px); } .pop-stage.is-end { justify-items: end; } .pop-stage.is-center { justify-items: center; } .mock-trigger { display: inline-flex; align-items: center; gap: 7px; height: 32px; padding: 0 12px; border-radius: 999px; font-size: 12.5px; color: var(--text); white-space: nowrap; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line), 0 0 0 4px var(--focus-soft); } .mock-trigger .ic { width: 15px; height: 15px; color: var(--text-muted); } .mock-trigger.is-danger { color: var(--red); box-shadow: inset 0 0 0 1px var(--red-line), 0 0 0 4px color-mix(in srgb, var(--red) 14%, transparent); } .mock-trigger.is-danger .ic { color: var(--red); } .mock-trigger.is-icon { width: 32px; padding: 0; justify-content: center; } .mock-status { display: flex; align-items: center; gap: 14px; height: 30px; padding: 0 6px 0 12px; border-radius: 999px; font-size: 11.5px; color: var(--text-muted); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); } .mock-status .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--green); } .mock-status .bell { position: relative; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; color: var(--text); background: var(--blue-soft); box-shadow: 0 0 0 3px var(--focus-soft); } .mock-status .bell .ic { width: 14px; height: 14px; } .mock-status .bell::after { content: ''; position: absolute; top: 2px; right: 2px; width: 6px; height: 6px; border-radius: 50%; background: var(--moon-indigo); box-shadow: 0 0 0 2px var(--surface); } .pop.is-replay { animation: pop-in var(--t-pop) var(--ease-glide) both; } .pop-stage.is-up .pop.is-replay { animation-name: pop-in-up; } @keyframes pop-in { from { opacity: 0; transform: translateY(-4px) scale(0.96); } } @keyframes pop-in-up { from { opacity: 0; transform: translateY(4px) scale(0.96); } } .pop-stage .pop { transform-origin: top left; } .pop-stage.is-end .pop { transform-origin: top right; } .pop-stage.is-up .pop { transform-origin: bottom right; } .pop-stage.is-up.is-left .pop { transform-origin: bottom left; } .menus-pair { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: center; gap: 48px 64px; width: 100%; } .menus-pair .pop-stage { width: auto; } .pc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 28px; align-items: start; } .pc-card .stage { --stage-h: 380px; padding: 40px 20px; } /* --------------------------------------------------------------------- 09 Feedback centre --------------------------------------------------------------------- */ .tray-dock { position: absolute !important; right: 18px; bottom: 18px; } .fb-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; } /* --------------------------------------------------------------------- 10 Motion lab --------------------------------------------------------------------- */ .mlab { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr); gap: 20px; } .mlab-stage { position: relative; height: 600px; overflow: hidden; border-radius: 18px; background: var(--sk-main); box-shadow: inset 0 0 0 1px var(--board-hair); } .mn-layer.is-inline { position: absolute; inset: 0; z-index: 1; overflow: hidden; } .mn-layer.is-inline .mn-scrim { position: absolute; -webkit-backdrop-filter: none; backdrop-filter: none; } .mlab-controls { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; } .timeline { display: grid; gap: 10px; margin-top: 22px; } .tl-row { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 12px; align-items: center; font-size: 12px; color: var(--board-muted); } .tl-track { position: relative; height: 22px; border-radius: 7px; background: var(--sk-main); box-shadow: inset 0 0 0 1px var(--board-hair); } .tl-track i { position: absolute; top: 3px; bottom: 3px; left: var(--from); width: var(--len); border-radius: 5px; background: linear-gradient(90deg, color-mix(in srgb, var(--moon-indigo) 70%, transparent), color-mix(in srgb, var(--moon-cyan) 70%, transparent)); } .tl-track i.is-exit { background: linear-gradient(90deg, color-mix(in srgb, var(--red) 50%, transparent), color-mix(in srgb, var(--orange) 45%, transparent)); } .tl-track em { position: absolute; top: 50%; left: calc(var(--from) + var(--len) + 6px); font-family: var(--font-mono); font-size: 10.5px; font-style: normal; color: var(--board-faint); white-space: nowrap; transform: translateY(-50%); } .tl-scale { display: flex; justify-content: space-between; margin-left: 100px; font-family: var(--font-mono); font-size: 10px; color: var(--board-faint); } .motion-rules { display: grid; gap: 0; margin: 18px 0 0; padding: 0; list-style: none; } .motion-rules li { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 12px; padding: 12px 0; font-size: 13px; line-height: 1.6; color: var(--board-muted); } .motion-rules li + li { box-shadow: inset 0 1px 0 var(--board-hair); } .motion-rules b { font-weight: 500; color: var(--board-ink); } .motion-rules code { font-family: var(--font-mono); font-size: 11.5px; color: var(--board-ink); } /* --------------------------------------------------------------------- 11 Responsive: phone frame --------------------------------------------------------------------- */ .phones { display: flex; flex-wrap: wrap; justify-content: center; gap: 48px; } .phone-wrap { display: grid; flex: 0 1 375px; min-width: 0; gap: 16px; } .phone-wrap figcaption { font-size: 13px; color: var(--board-muted); text-align: center; } .phone { width: 100%; height: 760px; padding: 10px; border-radius: 54px; background: var(--bz-shell); box-shadow: inset 0 0 0 1px var(--bz-ring), inset 0 1px 0 var(--bz-hi), var(--bz-shadow); } .phone-core { position: relative; isolation: isolate; display: grid; align-content: end; height: 100%; overflow: hidden; border-radius: 44px; background: var(--sk-main); box-shadow: 0 0 0 1px var(--bz-core-ring); } .phone-core::before { content: ''; position: absolute; inset: 0; z-index: 1; background: radial-gradient(90% 50% at 50% 70%, var(--dlg-halo-a), transparent 70%), var(--dlg-scrim); } .phone-core > .dlg { position: relative; z-index: 2; } .phone-notch { position: absolute; top: 12px; left: 50%; z-index: 3; width: 110px; height: 30px; border-radius: 999px; background: #05070d; transform: translateX(-50%); } .phone .sk { grid-template-columns: 1fr; } .phone .sk-side, .phone .sk-panel { display: none; } .phone .sk-main { padding-top: 44px; } .bp-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin-top: 56px; } .bp-list .bz-core { padding: 24px; } .bp-list b { display: block; font-family: var(--font-mono); font-size: 13px; font-weight: 500; color: var(--blue); } .bp-list p { margin-top: 8px; font-size: 13.5px; line-height: 1.7; color: var(--board-muted); } /* --------------------------------------------------------------------- 12 Implementation map --------------------------------------------------------------------- */ .impl { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; } .impl .matrix { min-width: 920px; font-size: 13px; } .impl .matrix td, .impl .matrix th { padding: 12px 16px; } .impl .matrix td code, .impl .matrix th code { font-family: var(--font-mono); font-size: 12px; color: var(--board-ink); } .pill-tone { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--tone-fg); } .pill-tone::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--tone-fg); } .code-block { margin: 16px 0 0; padding: 18px 20px; overflow-x: auto; border-radius: 16px; font-family: var(--font-mono); font-size: 12.5px; line-height: 1.75; color: var(--text); white-space: pre; background: var(--code-bg); box-shadow: inset 0 0 0 1px var(--board-hair); } .code-block .c { color: var(--board-faint); } .code-block .k { color: var(--purple); } .code-block .s { color: var(--green); } .code-block .p { color: var(--blue); } .steps { display: grid; gap: 0; margin: 18px 0 0; padding: 0; list-style: none; } .steps li { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 14px; padding: 16px 0; } .steps li + li { box-shadow: inset 0 1px 0 var(--board-hair); } .steps li > b { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 12px; font-family: var(--font-mono); font-size: 13px; font-weight: 500; color: var(--blue); background: var(--blue-soft); box-shadow: inset 0 0 0 1px var(--chip-ring); } .steps strong { font-size: 15px; font-weight: 600; } .steps p { margin-top: 4px; font-size: 13.5px; line-height: 1.7; color: var(--board-muted); } .checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 28px; margin: 18px 0 0; padding: 0; list-style: none; font-size: 13.5px; color: var(--board-muted); } .checklist li { display: flex; gap: 10px; } .checklist .ic { width: 17px; height: 17px; margin-top: 2px; color: var(--green); } /* Footer */ .foot { position: relative; z-index: var(--z-main); padding: 72px 0 96px; } .foot .wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; padding-top: 28px; font-size: 13px; color: var(--board-faint); box-shadow: inset 0 1px 0 var(--board-hair-strong); } .foot .brand { padding-left: 0; } /* --------------------------------------------------------------------- Scroll reveal (transform + opacity only) --------------------------------------------------------------------- */ .js .reveal { opacity: 0; transform: translate3d(0, 56px, 0) scale(0.985); transition: opacity 900ms var(--ease-enter), transform 1200ms var(--ease-spring); transition-delay: var(--d, 0ms); } .js .reveal.is-in { opacity: 1; transform: none; } .js .cover .reveal { transform: translate3d(0, 28px, 0); } [data-reduced-motion='true'] .reveal { transform: none !important; transition: opacity 200ms var(--ease-enter) !important; } [data-reduced-motion='true'] .bg i, [data-reduced-motion='true'] .cascade-item > *, [data-reduced-motion='true'] .scroll-cue i::after, [data-reduced-motion='true'] .island { animation: none; } [data-reduced-motion='true'] { scroll-behavior: auto; } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .js .reveal { transform: none; transition: opacity 200ms var(--ease-enter); } .bg i, .cascade-item > *, .scroll-cue i::after { animation: none; } } /* --------------------------------------------------------------------- Responsive --------------------------------------------------------------------- */ @media (max-width: 1279px) { .island-links { display: none; } .burger { display: grid; } .ab-grid, .fb-grid { grid-template-columns: minmax(0, 1fr); } .cover-grid { grid-template-columns: minmax(0, 1fr); } .cascade { width: min(760px, 100%); margin: 0 auto; } .anat { grid-template-columns: minmax(0, 1fr); } .mlab { grid-template-columns: minmax(0, 1fr); } .bento > * { grid-column: span var(--span-md, var(--span, 6)); } } @media (max-width: 1023px) { .sec-head { grid-template-columns: minmax(0, 1fr); align-items: start; } .levels, .bp-list { grid-template-columns: minmax(0, 1fr); } .bento > * { grid-column: span 12; grid-row: auto; } } @media (max-width: 767px) { .wrap { width: calc(100% - 32px); } .sec { padding: 96px 0; } .sub-head { margin-top: 72px; } .island { top: 12px; } .brand small { display: none; } .menu-overlay ol { grid-template-columns: minmax(0, 1fr); } .cover { padding: 120px 0 72px; } .cover-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 0; } .cascade { display: grid; gap: 20px; height: auto; } .cascade-item { position: relative; top: auto !important; left: auto !important; transform: none; } .cascade-item > * { animation: none; } .cover-moon, .cover-orbit { display: none; } .bento, .levels { gap: 16px; } .bz-core { padding: 22px; } .ab-grid, .pc-grid { gap: 20px; } .ab { border-radius: 24px; } .ab-core { border-radius: 18px; } .ab-tools { margin-left: 0; } .stage { --stage-h: 0px; padding: 28px 10px; border-radius: 14px; } .sk { grid-template-columns: 1fr; } .sk-side, .sk-panel { display: none; } .opt-grid { grid-template-columns: minmax(0, 1fr); } .dlg-hints { display: none; } .dlg-foot { flex-wrap: wrap; padding-left: 12px; } .dlg-actions { flex-wrap: wrap; justify-content: flex-end; } .curves { grid-template-columns: minmax(0, 1fr); } .checklist { grid-template-columns: minmax(0, 1fr); } .mlab-stage { height: 560px; } .ledger { grid-template-columns: minmax(0, 1fr); } .ledger > div + div { box-shadow: inset 0 1px 0 var(--hair); } .fld-row, .fld-row.is-even { grid-template-columns: minmax(0, 1fr); } .stats { grid-template-columns: repeat(3, minmax(0, 1fr)); } } /* --------------------------------------------------------------------- Patches --------------------------------------------------------------------- */ figure { margin: 0; } .is-menu-open .island { z-index: calc(var(--z-menu) + 1); } .size-row > i { display: flex; align-items: center; padding: 0 10px; font-style: normal; } .size-row > i span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }