/* 首屏沿用已确认的桌面窗口与安卓手机构图。 */
.hero { min-height:calc(100svh - var(--header-h) - var(--peek)); display:grid; grid-template-rows:1fr auto; overflow-x:clip; }
.hero__main { display:grid; grid-template-columns:44fr 56fr; align-items:center; align-content:center; padding-block:40px 32px; }
.hero__copy { max-width:540px; position:relative; z-index:2; }
.kicker { display:inline-flex; align-items:center; gap:10px; min-height:32px; padding:3px 14px 3px 4px; margin:0; border:1px solid var(--border); border-radius:var(--r-pill); background:var(--panel); color:var(--muted); font-size:var(--fs-13); box-shadow:var(--shadow-card); }
.kicker__tag { display:inline-flex; align-items:center; min-height:24px; padding:2px 10px; border-radius:var(--r-pill); background:var(--accent-soft); color:var(--accent-dark); font-size:var(--fs-12); font-weight:var(--weight-medium); }
.hero__title { margin:24px 0 0; font-family:var(--font-display); font-size:var(--fs-h1); font-weight:var(--weight-normal); line-height:var(--line-title); letter-spacing:var(--tracking-title); color:var(--text); }
.hero__title-sub { display:block; color:var(--muted); }
.cta { display:flex; flex-wrap:wrap; gap:12px; margin-top:30px; }
.lead { max-width:500px; margin:26px 0 0; font-size:var(--fs-16); line-height:1.68; color:var(--muted); }
.lead strong { color:var(--text); font-weight:var(--weight-medium); }
.chips { display:flex; flex-wrap:wrap; gap:8px; margin:20px 0 0; padding:0; list-style:none; }
.chips li,.badge,.tag { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:28px; max-width:100%; padding:3px 12px; border-radius:var(--r-pill); background:var(--panel-2); color:var(--muted); font-size:var(--fs-13); line-height:1.5; overflow-wrap:anywhere; white-space:normal; }
.badge--primary { background:var(--accent-soft); color:var(--accent-dark); }
.badge--recommended { background:var(--bg); color:var(--success-ink); border:1px solid var(--border); }
.badge--archived { background:var(--bg); color:var(--muted); border:1px solid var(--border); }
.badge--warning { background:var(--bg); color:var(--warn-ink); border:1px solid var(--border); }
.badge--new::before { content:""; width:6px; height:6px; border-radius:var(--r-circle); background:var(--coral); color:var(--text); flex-shrink:0; }
.platforms { margin-top:28px; padding-top:20px; border-top:1px solid var(--border); }
.platforms__label { display:block; margin-bottom:12px; font-family:var(--font-mono); font-size:var(--fs-115); letter-spacing:.04em; color:var(--muted); }
.platforms__list { display:flex; flex-wrap:wrap; gap:8px 20px; margin:0; padding:0; list-style:none; }
.platforms__list a { display:inline-flex; align-items:center; gap:8px; font-size:var(--fs-135); color:var(--text); text-decoration:none; }
.platforms__icon { width:30px; height:30px; flex-shrink:0; display:grid; place-items:center; border:1px solid var(--border); border-radius:var(--r-circle); background:var(--panel); color:var(--text); transition:border-color .2s ease,color .2s ease; }
.platforms__icon svg { width:14px; height:14px; }
.platforms__list a:hover .platforms__icon { border-color:var(--accent); color:var(--accent); }
.hero__visual { --device-scale:1; justify-self:end; margin-right:-3vw; width:calc(736px * var(--device-scale)); height:calc(590px * var(--device-scale)); }
.rig { position:relative; width:736px; height:590px; transform:scale(var(--device-scale)); transform-origin:0 0; }
.win { position:absolute; left:0; top:0; width:700px; background:var(--panel); color:var(--text); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--shadow-win); overflow:hidden; animation:device-rise .6s var(--ease) .05s both; }
.win__chrome { position:relative; display:flex; align-items:center; height:38px; padding:0 16px; border-bottom:1px solid var(--border); }
.win__dots { display:flex; gap:7px; }
.win__dots i { width:10px; height:10px; flex-shrink:0; border-radius:var(--r-circle); background:var(--border); color:var(--text); }
.win__title { position:absolute; left:50%; transform:translateX(-50%); font-size:var(--fs-12); color:var(--muted); }
.win__body { display:flex; }
.side { width:164px; flex:none; padding:16px 12px; background:var(--bg); color:var(--text); border-right:1px solid var(--border); }
.side__brand { display:flex; align-items:center; gap:9px; padding:0 8px 16px; font-size:var(--fs-135); font-weight:var(--weight-medium); }
.side__mark { width:22px; height:22px; border-radius:var(--r-logo); flex-shrink:0; }
.side__nav { margin:0; padding:0; list-style:none; display:grid; gap:2px; }
.side__nav li { display:flex; align-items:center; gap:10px; height:32px; padding:0 10px; border-radius:var(--r-pill); font-size:var(--fs-13); color:var(--muted); }
.side__nav li.is-on { background:var(--panel-2); color:var(--text); }
.side__nav svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.pane { flex:1; min-width:0; padding:20px 24px 22px; }
.pane__head { display:flex; align-items:center; justify-content:space-between; height:26px; }
.pane__title { font-family:var(--font-display); font-size:var(--fs-18); font-weight:var(--weight-normal); }
.pane__tag { font-family:var(--font-mono); font-size:var(--fs-11); padding:3px 9px; border:1px solid var(--border); border-radius:var(--r-pill); background:var(--bg); color:var(--muted); }
.cfg { display:flex; align-items:center; gap:12px; margin-top:14px; padding:12px 14px; border:1px solid var(--border); border-radius:var(--r-md); }
.cfg__icon { width:32px; height:32px; flex:none; display:grid; place-items:center; border-radius:var(--r-sm); background:var(--bg); color:var(--muted); }
.cfg__icon svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.cfg__label { display:block; font-size:var(--fs-11); color:var(--muted); line-height:1.4; }
.cfg__value { display:block; font-size:var(--fs-135); line-height:1.4; }
.set { width:290px; max-width:100%; margin-top:16px; display:grid; gap:12px; }
.set__label { display:block; margin-bottom:8px; font-size:var(--fs-115); color:var(--muted); }
.seg { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); padding:3px; background:var(--bg); color:var(--muted); border:1px solid var(--border); border-radius:var(--r-sm); }
.seg span { display:grid; place-items:center; height:26px; border-radius:var(--r-xs); font-size:var(--fs-125); }
.seg span.is-on { background:var(--text); color:var(--panel); }
.rows { border:1px solid var(--border); border-radius:var(--r-md); padding:0 14px; }
.row { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:36px; font-size:var(--fs-13); }
.row + .row { border-top:1px solid var(--panel-2); }
.port { width:64px; padding:3px 10px; text-align:right; font-family:var(--font-mono); font-size:var(--fs-12); background:var(--bg); color:var(--text); border:1px solid var(--border); border-radius:var(--r-xs); }
.sw { position:relative; width:34px; height:20px; border-radius:var(--r-pill); background:var(--panel-2); color:var(--text); flex:none; }
.sw__fill { position:absolute; inset:0; border-radius:inherit; background:var(--accent); color:var(--panel); opacity:0; }
.sw__knob { position:absolute; left:2px; top:2px; width:16px; height:16px; border-radius:var(--r-circle); background:var(--panel); color:var(--text); box-shadow:var(--shadow-knob); }
.sw.is-on .sw__fill { opacity:1; }
.sw.is-on .sw__knob { transform:translateX(14px); }
.sw--anim .sw__fill { animation:tun-fill 18s linear 1.6s infinite both; }
.sw--anim .sw__knob { animation:tun-knob 18s var(--ease) 1.6s infinite both; }
.cursor { position:absolute; left:19px; top:11px; width:18px; height:18px; opacity:0; transform-origin:3px 2px; animation:cursor-path 18s cubic-bezier(.45,0,.25,1) 1.6s infinite both; z-index:2; }
.cursor path { fill:var(--text); stroke:var(--panel); stroke-width:1.2; stroke-linejoin:round; }
.rules { margin:0; padding:12px 14px; background:var(--bg); color:var(--text); border:1px solid var(--border); border-radius:var(--r-md); font-family:var(--font-mono); font-size:var(--fs-115); line-height:1.7; white-space:pre; }
.tk-key { color:var(--muted); }
.tk-pol { color:var(--accent); }
.phone { position:absolute; left:500px; top:130px; width:236px; height:460px; padding:7px; border-radius:var(--r-phone); background:var(--stage); color:var(--on-stage); box-shadow:inset 0 0 0 1px var(--stage-line),var(--shadow-phone); animation:device-slide .7s var(--ease) .25s both; }
.phone::before,.phone::after { content:""; position:absolute; right:-3px; width:3px; border-radius:var(--r-sidekey); background:var(--stage); color:var(--on-stage); }
.phone::before { top:112px; height:46px; }
.phone::after { top:176px; height:26px; }
.phone__screen { position:relative; height:100%; display:flex; flex-direction:column; border-radius:var(--r-screen); background:var(--panel); color:var(--text); overflow:hidden; }
.phone__status { position:relative; display:flex; align-items:center; justify-content:flex-end; height:32px; padding:0 20px; }
.phone__cam { position:absolute; left:50%; top:11px; width:10px; height:10px; margin-left:-5px; border-radius:var(--r-circle); background:var(--stage); color:var(--on-stage); }
.phone__icons { display:flex; align-items:center; gap:6px; color:var(--text); }
.phone__icons .ic-key { width:13px; height:13px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; }
.phone__icons .ic-sig { width:13px; height:13px; fill:currentColor; }
.phone__bar { padding:6px 20px 0; font-size:var(--fs-16); font-weight:var(--weight-medium); letter-spacing:-.01em; }
.phone__core { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; padding-bottom:6px; isolation:isolate; }
.power { position:relative; width:104px; height:104px; border-radius:var(--r-circle); display:grid; place-items:center; background:var(--accent); color:var(--panel); box-shadow:var(--shadow-accent); }
.power::before { content:""; position:absolute; inset:-14px; border-radius:var(--r-circle); background:var(--accent-soft); color:var(--accent-dark); z-index:-1; }
.power::after { content:""; position:absolute; inset:-28px; border-radius:var(--r-circle); border:1px solid var(--panel-2); z-index:-1; }
.power svg { width:36px; height:36px; fill:none; stroke:var(--panel); stroke-width:2.2; stroke-linecap:round; }
.phone__state { display:flex; align-items:center; gap:8px; margin:46px 0 0; font-size:var(--fs-13); color:var(--text); }
.phone__dot { width:7px; height:7px; flex-shrink:0; border-radius:var(--r-circle); background:var(--coral); color:var(--text); }
.phone__cfg { margin-top:10px; padding:5px 12px; border-radius:var(--r-pill); background:var(--bg); color:var(--muted); font-size:var(--fs-115); }
.phone__nav { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); padding:9px 6px 2px; border-top:1px solid var(--panel-2); }
.phone__nav span { display:flex; flex-direction:column; align-items:center; gap:4px; font-size:var(--fs-10); color:var(--muted); }
.phone__nav i { display:grid; place-items:center; width:42px; height:24px; border-radius:var(--r-pill); }
.phone__nav svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.phone__nav .is-on { color:var(--text); }
.phone__nav .is-on i { background:var(--accent-soft); color:var(--accent); }
.phone__home { display:block; width:78px; height:4px; margin:8px auto; border-radius:var(--r-pill); background:var(--text); color:var(--panel); }
.facts { display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; padding-block:16px; border-top:1px solid var(--border); font-family:var(--font-mono); font-size:var(--fs-12); letter-spacing:.02em; color:var(--muted); }
.facts__sep { color:var(--border); }
.stage { background:var(--stage); color:var(--on-stage); padding-top:96px; padding-bottom:104px; }
.stage__eyebrow { margin:0; text-align:center; font-size:var(--fs-135); color:var(--on-stage-muted); }
.stage__title { margin:14px 0 0; text-align:center; font-family:var(--font-display); font-weight:var(--weight-normal); font-size:var(--fs-h2); line-height:1.25; letter-spacing:-.01em; }
.stage__lead { max-width:640px; margin:16px auto 0; text-align:center; font-size:var(--fs-155); line-height:1.7; color:var(--on-stage-muted); }
.dl-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:16px; margin:48px 0 0; padding:0; list-style:none; }
.dl-grid > * { min-width:0; }
.dl-card { display:flex; flex-direction:column; gap:6px; height:100%; padding:22px; border:1px solid var(--stage-line); border-radius:var(--r-card); background:var(--stage-2); color:var(--on-stage); text-decoration:none; transition:transform .25s var(--ease),border-color .25s ease; }
.dl-card:hover { transform:translateY(-2px); border-color:var(--on-stage-muted); color:var(--on-stage); }
.dl-card__icon { width:42px; height:42px; margin-bottom:14px; display:grid; place-items:center; border:1px solid var(--coral); border-radius:var(--r-circle); color:var(--on-stage); flex-shrink:0; }
.dl-card__icon svg { width:18px; height:18px; }
.dl-card__name { font-size:var(--fs-16); font-weight:var(--weight-medium); }
.dl-card__meta { font-size:var(--fs-13); color:var(--on-stage-muted); }
.dl-card__go { margin-top:auto; padding-top:14px; font-size:var(--fs-135); text-decoration:underline; text-underline-offset:4px; text-decoration-color:var(--stage-line); }
/* 胶囊分段控件、详情切片。 */
.tab-list { display:flex; align-items:center; gap:8px; max-width:100%; overflow-x:auto; padding:4px 2px 12px; scrollbar-width:thin; }
.tab-list [role="tab"] { position:relative; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:11px 20px; border:1px solid var(--border); border-radius:var(--r-pill); background:var(--panel); color:var(--muted); font-size:var(--fs-14); line-height:1.5; }
.tab-list [role="tab"][aria-selected="true"] { background:var(--text); color:var(--panel); border-color:var(--text); }
.tab-list [role="tab"]::after { content:""; position:absolute; left:18px; right:18px; bottom:0; height:2px; border-radius:var(--r-line); background:var(--accent); color:var(--panel); transform:scaleX(0); transform-origin:left; }
.tab-list [role="tab"][aria-selected="true"]::after { transform:scaleX(1); }
.is-playing .tab-list [role="tab"][aria-selected="true"]::after { animation:tab-progress 6s linear both; }
[role="tabpanel"] { min-width:0; }
.feature-panel { display:grid; grid-template-columns:45fr 55fr; gap:32px; align-items:center; padding:48px; border:1px solid var(--border); border-radius:var(--r-xl); background:var(--panel); color:var(--text); box-shadow:var(--shadow-card); }
.feature-panel h3 { margin:0 0 20px; }
.feature-panel p { color:var(--muted); line-height:var(--line-copy); }
.feature-slice { position:relative; padding:12px 52px 48px 0; min-width:0; }
.feature-slice__window { padding:24px; border:1px solid var(--border); border-radius:var(--r-lg); background:var(--panel); color:var(--text); box-shadow:var(--shadow-win); }
.feature-slice__phone { position:absolute; right:0; bottom:0; width:150px; min-height:180px; padding:18px; border:1px solid var(--border); border-radius:var(--r-lg); background:var(--bg); color:var(--text); box-shadow:var(--shadow-card); }
.feature-slice__phone p { font-size:var(--fs-12); }
/* 目录必须直接放在覆盖全部章节的父容器内。 */
.toc { position:sticky; top:16px; z-index:4; display:flex; flex-wrap:wrap; gap:8px; padding:12px; border:1px solid var(--border); border-radius:var(--r-card); background:var(--panel); color:var(--text); box-shadow:var(--shadow-card); }
.toc a { display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:10px 14px; border-radius:var(--r-pill); color:var(--muted); text-decoration:none; font-size:var(--fs-14); }
.toc a:hover,.toc a[aria-current="location"] { background:var(--accent-soft); color:var(--accent-dark); }
.toc--flow { position:static; }
.faq-item { border-bottom:1px solid var(--border); background:var(--panel); color:var(--text); }
.faq-item:first-child { border-top:1px solid var(--border); }
.faq-item summary { position:relative; padding:24px 48px 24px 20px; cursor:pointer; list-style:none; font-size:var(--fs-18); }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary::after { content:"+"; position:absolute; right:20px; top:24px; color:var(--accent); }
.faq-item[open] summary::after { content:"−"; }
.faq-item__answer { padding:0 20px 24px; color:var(--muted); }
.faq-item__answer p:last-child { margin-bottom:0; }
.term-card { padding:28px; border:1px solid var(--border); border-radius:var(--r-card); background:var(--panel); color:var(--text); }
.term-card h3 { margin:12px 0; font-size:var(--fs-22); }
.term-card__key { color:var(--muted); font-family:var(--font-mono); font-size:var(--fs-12); }
.term-card p { color:var(--muted); margin-bottom:0; }
.client-card { position:relative; display:flex; flex-direction:column; gap:20px; padding:28px; min-width:0; border:1px solid var(--border); border-radius:var(--r-xl); background:var(--panel); color:var(--text); box-shadow:var(--shadow-card); }
.client-card--first { border-color:var(--accent); }
.client-card__head { display:flex; align-items:flex-start; flex-wrap:wrap; gap:12px; }
.client-card__head h3 { margin:0; font-size:var(--fs-24); }
.client-card__head .badge { margin-left:auto; }
.client-card__body { color:var(--muted); }
.client-card__body p:last-child { margin-bottom:0; }
.client-card__actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:auto; }
.client-card [data-ver]:empty { display:none; }
.post-card { display:flex; flex-direction:column; align-items:flex-start; min-width:0; padding:28px; border:1px solid var(--border); border-radius:var(--r-xl); background:var(--panel); color:var(--text); box-shadow:var(--shadow-card); }
.post-card__meta { display:flex; flex-wrap:wrap; align-items:center; gap:12px; color:var(--muted); font-size:var(--fs-12); }
.post-card h3 { margin:20px 0 16px; font-size:var(--fs-22); }
.post-card h3 a { color:var(--text); text-decoration:none; }
.post-card h3 a:hover { color:var(--accent); }
.post-card p { color:var(--muted); font-size:var(--fs-14); }
.post-card__link { display:inline-flex; align-items:center; gap:8px; min-height:44px; margin-top:auto; font-size:var(--fs-14); }
.callout { margin:24px 0; padding:20px 24px; border:1px solid var(--border); border-left:3px solid var(--accent); border-radius:var(--r-md); background:var(--panel); color:var(--text); }
.callout p:last-child { margin-bottom:0; }
.callout--warning { border-left-color:var(--warn); }
.callout--error { border-left-color:var(--error); }
.callout__title { display:block; margin-bottom:8px; font-weight:var(--weight-medium); }
.table-scroll { overflow-x:auto; max-width:100%; min-width:0; border:1px solid var(--border); border-radius:var(--r-md); overscroll-behavior-inline:contain; }
.data-table { width:100%; border-collapse:collapse; text-align:left; background:var(--panel); color:var(--text); font-size:var(--fs-14); }
.data-table th,.data-table td,.prose table th,.prose table td { min-width:7em; padding:16px 20px; border-bottom:1px solid var(--border); vertical-align:top; overflow-wrap:normal; word-break:normal; }
.data-table th { background:var(--bg); color:var(--text); font-weight:var(--weight-medium); }
.data-table tr:last-child td { border-bottom:0; }
.prose table { display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; max-width:100%; min-width:0; border-collapse:collapse; }
.prose table code,.data-table code { overflow-wrap:anywhere; }
.article-download { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:24px; padding:32px; border:1px solid var(--border); border-radius:var(--r-xl); background:var(--panel); color:var(--text); }
.article-download h2 { font-size:var(--fs-24); margin:0 0 8px; }
.article-download p { margin:0; color:var(--muted); }
.dl-fab { position:fixed; right:24px; bottom:24px; z-index:10; display:inline-flex; align-items:center; justify-content:center; gap:12px; max-width:calc(100% - 40px); min-height:56px; padding:14px 20px; border:1px solid var(--border); border-radius:var(--r-pill); background:var(--panel); color:var(--text); box-shadow:var(--shadow-win); text-decoration:none; }
.dl-fab:hover { color:var(--accent); border-color:var(--accent); }
.dl-fab svg { width:22px; height:22px; fill:none; stroke:var(--accent); stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.dl-fab__copy { display:block; font-size:var(--fs-14); }
.dl-fab__note { display:block; color:var(--muted); font-size:var(--fs-11); }
/* 预览页家具，不影响正式页面。 */
.preview-section-title { margin:0 0 32px; }
.palette-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.swatch { margin:0; border:1px solid var(--border); border-radius:var(--r-md); background:var(--panel); color:var(--text); overflow:hidden; }
.swatch__paint { height:80px; border-bottom:1px solid var(--border); }
.swatch figcaption { padding:12px; font-size:var(--fs-12); font-family:var(--font-mono); overflow-wrap:anywhere; }
.paint-bg { background:var(--bg); color:var(--text); }
.paint-panel { background:var(--panel); color:var(--text); }
.paint-panel-2 { background:var(--panel-2); color:var(--text); }
.paint-border { background:var(--border); color:var(--text); }
.paint-accent { background:var(--accent); color:var(--panel); }
.paint-accent-dark { background:var(--accent-dark); color:var(--panel); }
.paint-accent-soft { background:var(--accent-soft); color:var(--text); }
.paint-text { background:var(--text); color:var(--panel); }
.paint-muted { background:var(--muted); color:var(--panel); }
.paint-success { background:var(--success); color:var(--panel); }
.paint-success-ink { background:var(--success-ink); color:var(--panel); }
.paint-warn { background:var(--warn); color:var(--text); }
.paint-warn-ink { background:var(--warn-ink); color:var(--panel); }
.paint-error { background:var(--error); color:var(--panel); }
.paint-coral { background:var(--coral); color:var(--text); }
.paint-stage { background:var(--stage); color:var(--on-stage); }
.paint-stage-2 { background:var(--stage-2); color:var(--on-stage); }
.paint-stage-line { background:var(--stage-line); color:var(--on-stage); }
.paint-on-stage { background:var(--on-stage); color:var(--stage); }
.paint-on-stage-muted { background:var(--on-stage-muted); color:var(--stage); }
.paint-veil { background:var(--veil); color:var(--text); }
.paint-transparent { background:var(--transparent); color:var(--text); }
.type-display { font-family:var(--font-display); font-size:var(--fs-h1); font-weight:var(--weight-normal); line-height:var(--line-title); }
.type-mono { font-family:var(--font-mono); font-size:var(--fs-13); }
.preview-states { display:flex; flex-wrap:wrap; gap:20px; align-items:center; }
.preview-static .win,.preview-static .phone,.preview-static .cursor,.preview-static .sw__fill,.preview-static .sw__knob { animation:none; }
@keyframes device-rise { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:none; } }
@keyframes device-slide { from { opacity:0; transform:translate(28px,24px); } to { opacity:1; transform:none; } }
@keyframes tun-knob { 0%,22.5% { transform:translateX(0); } 25.5%,72.5% { transform:translateX(14px); } 75.5%,100% { transform:translateX(0); } }
@keyframes tun-fill { 0%,22.5% { opacity:0; } 25.5%,72.5% { opacity:1; } 75.5%,100% { opacity:0; } }
@keyframes cursor-path {
  0% { opacity:0; transform:translate(-150px,92px); }
  6% { opacity:1; transform:translate(-150px,92px); }
  20% { opacity:1; transform:translate(0,0) scale(1); }
  22% { transform:translate(0,0) scale(.86); }
  24.5% { transform:translate(0,0) scale(1); }
  34% { opacity:1; transform:translate(-96px,70px); }
  42%,50% { opacity:0; transform:translate(-150px,92px); }
  56% { opacity:1; transform:translate(-150px,92px); }
  70% { opacity:1; transform:translate(0,0) scale(1); }
  72% { transform:translate(0,0) scale(.86); }
  74.5% { transform:translate(0,0) scale(1); }
  84% { opacity:1; transform:translate(-96px,70px); }
  92%,100% { opacity:0; transform:translate(-150px,92px); }
}
@keyframes tab-progress { from { transform:scaleX(0); } to { transform:scaleX(1); } }
@media (max-width:1368px) { .hero__visual { --device-scale:.86; } }
@media (max-width:1180px) { .hero__visual { --device-scale:.72; margin-right:-2vw; } .dl-card { padding:18px; } }
@media (max-width:1023px) {
  .hero__main { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .hero__visual { --device-scale:.58; margin-right:-3vw; }
  .platforms__list { gap:8px 12px; }
  .dl-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .feature-panel { padding:32px; gap:24px; }
}
@media (max-width:768px) {
  .hero { min-height:0; }
  .hero__main { grid-template-columns:minmax(0,1fr); gap:40px; padding-block:48px 32px; }
  .hero__copy { max-width:580px; }
  .hero__title { font-size:var(--fs-h1-mobile); }
  .hero__visual { --device-scale:.72; justify-self:center; margin-right:0; }
  .feature-panel { grid-template-columns:minmax(0,1fr); }
  .palette-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .stage { padding-top:64px; padding-bottom:64px; }
  .toc { position:static; flex-wrap:nowrap; overflow-x:auto; }
  .toc a { flex-shrink:0; }
}
@media (max-width:640px) {
  .hero__visual { --device-scale:.48; }
  .hero__main { gap:32px; padding-top:36px; }
  .lead { font-size:var(--fs-15); }
  .hero .chips { flex-direction:row; flex-wrap:wrap; }
  .dl-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
  .dl-card { padding:20px; }
  .feature-panel { padding:24px; }
  .feature-slice { padding-right:36px; padding-bottom:72px; }
  .feature-slice__window { padding:16px; }
  .feature-slice__phone { width:130px; min-height:150px; padding:14px; }
  .palette-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .dl-fab { right:20px; bottom:20px; }
  .type-display { font-size:var(--fs-h1-mobile); }
}
@media (max-width:389px) { .hero__visual { --device-scale:.41; } }
@media (max-width:359px) { .hero__visual { --device-scale:.38; } .dl-card { padding:16px; } }
@media (prefers-reduced-motion:reduce) {
  .sw--anim .sw__fill { opacity:1; }
  .sw--anim .sw__knob { transform:translateX(14px); }
  .cursor { opacity:0; }
}