.device {grid-column:1;grid-row:1;align-self:start;height:calc(100% - 4px);margin:0;min-width:0}
.window {height:100%;display:grid;grid-template-columns:172px minmax(0,1fr);overflow:hidden;border:1px solid var(--line);border-radius:var(--r-window);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-window);animation:window-rise .9s var(--ease) both}
@keyframes window-rise {from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.w-side {display:flex;flex-direction:column;gap:4px;padding:0 12px 14px;background:var(--grad-side);color:var(--ink)}
.w-side-head {display:flex;align-items:center;height:48px;padding-left:12px;font:700 11px/1 var(--font-body);letter-spacing:.08em;color:var(--ink-2)}
.w-item {display:flex;align-items:center;gap:10px;min-height:40px;padding:8px 12px;border-radius:var(--r-chip);font:600 13.5px/1.4 var(--font-body)}
.w-item svg {width:17px;height:17px;flex-shrink:0}
.w-item.is-current {background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card);font-weight:700}
.w-main {display:grid;grid-template-rows:48px minmax(0,1fr) 64px;min-width:0;background:var(--surface);color:var(--ink)}
.w-bar {position:relative;display:flex;align-items:center;padding:0 18px;border-bottom:1px solid var(--line)}
.dots {display:flex;gap:8px}
.dot {width:12px;height:12px;border-radius:var(--r-round);flex-shrink:0}
.dot-r {background:var(--error);color:var(--ink)}
.dot-y {background:var(--warn);color:var(--ink)}
.dot-g {background:var(--success);color:var(--ink)}
.w-title {position:absolute;left:50%;transform:translateX(-50%);font:700 13px/1 var(--font-body);color:var(--ink)}
.w-body {display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:16px;min-height:0;padding:18px}
.w-list {display:flex;flex-direction:column;gap:12px;min-width:0;min-height:0}
.w-tabs {display:flex;align-items:stretch;justify-content:space-between;gap:10px;height:36px;border-bottom:1px solid var(--line)}
.w-tab {position:relative;display:flex;align-items:center;padding:0 4px;font:700 13px/1 var(--font-body);color:var(--ink);white-space:nowrap}
.w-tab::after {content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;border-radius:var(--r-pill);background:var(--grad)}
.w-filter {align-self:center;display:flex;align-items:center;gap:6px;width:150px;height:28px;padding:0 10px;border-radius:var(--r-pill);background:var(--surface-tint);color:var(--ink-3);font:500 12px/1 var(--font-body)}
.w-filter svg {width:13px;height:13px;flex-shrink:0}
.w-thead {display:grid;grid-template-columns:52px 1fr 1fr 44px;gap:8px;align-items:center;min-height:32px;padding:4px 12px;border-radius:var(--r-small);background:var(--surface-tint);color:var(--ink-3);font:600 11.5px/1.4 var(--font-body)}
.w-empty {flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px 20px;border:1.5px dashed var(--line-strong);border-radius:var(--r-card);text-align:center}
.w-empty-ico {display:grid;place-items:center;width:48px;height:48px;flex-shrink:0;margin-bottom:6px;border-radius:var(--r-chip);background:var(--surface-tint);color:var(--ink-2)}
.w-empty-ico svg {width:22px;height:22px}
.w-empty-cap {font:600 12px/1.4 var(--font-body);color:var(--ink-3)}
.w-empty-main {display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;font:700 14px/1.4 var(--font-body);color:var(--ink)}
.kbd {display:inline-block;padding:5px 7px;border:1px solid var(--line-strong);border-radius:var(--r-small);background:var(--surface);box-shadow:0 1px 0 var(--line-strong);color:var(--ink-2);font:600 11.5px/1 var(--font-mono)}
.kbd-join {color:var(--ink-3);font:600 11.5px/1 var(--font-mono)}
.w-empty-sub {font:500 13px/1.5 var(--font-body);color:var(--ink-2)}
.w-empty-sub b {color:var(--ink);font-weight:700}
.w-card {align-self:start;display:flex;flex-direction:column;padding:16px 16px 18px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card)}
.w-sec {margin:0 0 10px;padding-left:2px;font:700 11px/1.4 var(--font-body);letter-spacing:.06em;color:var(--ink-3)}
.w-radio {display:flex;align-items:center;gap:10px;min-height:38px;padding:8px 10px;border-radius:var(--r-chip);color:var(--ink-2);font:600 13px/1.4 var(--font-body)}
.w-radio.is-on {background:var(--surface-tint);color:var(--ink)}
.ring {position:relative;flex-shrink:0;width:16px;height:16px;border:1.5px solid var(--line-strong);border-radius:var(--r-round)}
.is-on .ring {border:0;background:var(--grad)}
.is-on .ring::after {content:"";position:absolute;inset:5px;border-radius:var(--r-round);background:var(--surface)}
.w-sep {height:1px;margin:14px 0;background:var(--line)}
.w-select {display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:38px;padding:8px 12px;border:1px solid var(--line-strong);border-radius:var(--r-chip);color:var(--ink);font:600 13px/1.4 var(--font-body)}
.w-select svg {width:14px;height:14px;color:var(--ink-3);flex-shrink:0}
.w-toggle {display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px;padding:8px 2px;color:var(--ink-2);font:600 13px/1.4 var(--font-body)}
.switch {position:relative;flex-shrink:0;width:34px;height:20px;border-radius:var(--r-pill);background:var(--track)}
.switch::after {content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--r-round);background:var(--surface);box-shadow:var(--shadow-knob)}
.w-status {display:flex;align-items:flex-start;gap:10px;padding:13px 18px 0;border-top:1px solid var(--line);background:var(--surface-tint);color:var(--ink-2);font:500 12.5px/18px var(--font-mono)}
.live {flex-shrink:0;width:8px;height:8px;margin-top:5px;border-radius:var(--r-round);background:var(--success);box-shadow:0 0 0 3px var(--success-ring)}
.tabs {min-width:0;border-radius:var(--r-panel);background:var(--panel);color:var(--ink);box-shadow:var(--shadow-window);overflow:hidden}
.tab-list,[role="tablist"] {display:flex;align-items:stretch;gap:8px;min-width:0;max-width:100%;overflow-x:auto;padding:18px 24px 0;border-bottom:1px solid var(--line);scrollbar-width:thin}
.tab-list [role="tab"] {position:relative;flex-shrink:0;min-height:54px;padding:12px 22px;border:0;border-radius:var(--r-chip) var(--r-chip) 0 0;background:var(--surface-tint);color:var(--ink-2);font-weight:700}
.tab-list [role="tab"][aria-selected="true"] {background:var(--panel);color:var(--ink)}
.tab-list [role="tab"][aria-selected="true"]::after {content:"";position:absolute;bottom:0;left:12px;right:12px;height:3px;border-radius:var(--r-pill);background:var(--grad)}
.tab-panel {padding:40px;min-width:0}
.feature-detail {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;align-items:center}
.feature-detail>* {min-width:0}
.feature-detail pre {margin:0}
.tab-panel a:not(.btn) {color:var(--ink);font-weight:700}
.toc {position:sticky;top:16px;z-index:5;display:flex;flex-wrap:wrap;gap:8px;padding:12px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card)}
.toc a {display:block;padding:8px 14px;border-radius:var(--r-pill);text-decoration:none;font-size:14px;min-height:44px}
.toc a:hover,.toc a[aria-current] {background:var(--surface-tint);color:var(--ink)}
.faq-item {border:1px solid var(--line);border-radius:var(--r-card);background:var(--panel);color:var(--ink);box-shadow:var(--shadow-card)}
.faq-item+.faq-item {margin-top:12px}
.faq-item summary {position:relative;cursor:pointer;list-style:none;min-height:64px;padding:20px 56px 20px 24px;font-weight:700}
.faq-item summary::-webkit-details-marker {display:none}
.faq-item summary::after {content:"+";position:absolute;right:24px;top:17px;font:500 24px/1.2 var(--font-mono)}
.faq-item[open] summary::after {content:"−"}
.faq-answer {padding:0 24px 24px;color:var(--ink-2)}
.faq-answer p:last-child {margin-bottom:0}
.term-card {border-top:4px solid var(--bg)}
.term-card dt {font:900 22px/1.3 var(--font-display);margin-bottom:12px}
.term-card dd {margin:0;color:var(--ink-2)}
.term-alias {display:block;margin-top:6px;font:500 12px/1.6 var(--font-mono);color:var(--ink-3)}
.download-card {position:relative;min-width:0}
.download-card.is-featured {border:2px solid var(--bg);box-shadow:var(--shadow-window)}
.client-head {display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin-bottom:20px}
.client-head img {width:56px;height:56px;flex-shrink:0}
.client-head h3 {margin:0}
.client-head p {margin:4px 0 0;font-size:14px;color:var(--ink-2)}
.download-options {display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.badge {display:inline-block;max-width:100%;padding:5px 11px;overflow:hidden;overflow-wrap:anywhere;border-radius:var(--r-pill);background:var(--surface-tint);color:var(--ink-2);font:700 12px/1.5 var(--font-body);vertical-align:middle}
.badge-first,.badge-recommended {background:var(--grad);color:var(--ink)}
.badge-retired {background:var(--ink);color:var(--text)}
.badge-warn {background:var(--warn);color:var(--ink)}
.badge-success {background:var(--success);color:var(--ink)}
.badge-error {background:var(--error);color:var(--ink)}
.article-card {display:flex;flex-direction:column;align-items:start;gap:16px}
.article-card h3 {margin:0;font-size:22px}
.article-card p {color:var(--ink-2);margin:0}
.article-card time {font:500 12px/1.5 var(--font-mono);color:var(--ink-3)}
.article-card .article-link {margin-top:auto;font-weight:700}
.callout {margin:24px 0;padding:24px 28px;border-left:4px solid var(--bg);border-radius:0 var(--r-card) var(--r-card) 0;background:var(--surface-tint);color:var(--ink-2)}
.callout strong {color:var(--ink)}
.callout p:last-child {margin-bottom:0}
.callout-warning {border-left-color:var(--warn)}
.table-scroll {max-width:100%;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);color:var(--ink)}
.data-table {width:100%;border-collapse:collapse;background:var(--surface);color:var(--ink);font-size:14px}
.data-table th,.data-table td,.prose table th,.prose table td {min-width:7em;padding:16px 20px;text-align:left;vertical-align:top;overflow-wrap:normal;word-break:normal;border-bottom:1px solid var(--line)}
.data-table th,.prose table th {background:var(--surface-tint);color:var(--ink);font-weight:700}
.prose table {display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;min-width:0;border-collapse:collapse;background:var(--surface);color:var(--ink);margin-block:24px}
.prose table code,.data-table code {overflow-wrap:anywhere;word-break:normal}
.dl-fab {position:fixed;right:24px;bottom:24px;z-index:20;display:flex;align-items:center;gap:12px;max-width:calc(100% - 32px);min-height:64px;padding:12px 22px 12px 12px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--ink);color:var(--text);text-decoration:none;box-shadow:var(--shadow-window)}
.dl-fab svg {width:22px;height:22px;flex-shrink:0}
.dl-fab strong {display:block;font-size:14px}
.dl-fab small {display:block;font-size:12px;color:var(--text-muted)}
.article-download {display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:48px;padding:32px;border-radius:var(--r-window);background:var(--surface-tint);color:var(--ink)}
.article-download h2 {font-size:24px;margin:0 0 8px}
.article-download p {margin:0;color:var(--ink-2)}
.preview-section h2 {margin-bottom:32px}
.preview-states {display:flex;flex-wrap:wrap;align-items:center;gap:20px}
.swatch-grid {display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px}
.swatch {padding:12px;border-radius:var(--r-card);border:1px solid var(--line);background:var(--surface);color:var(--ink);font:500 12px/1.5 var(--font-mono)}
.swatch::before {content:"";display:block;height:76px;margin-bottom:12px;border:1px solid var(--line);border-radius:var(--r-chip);background:var(--swatch-color)}
.sw-bg {--swatch-color:var(--bg)}
.sw-deep {--swatch-color:var(--bg-deep)}
.sw-lift {--swatch-color:var(--bg-lift)}
.sw-panel {--swatch-color:var(--panel)}
.sw-surface {--swatch-color:var(--surface)}
.sw-tint {--swatch-color:var(--surface-tint)}
.sw-ink {--swatch-color:var(--ink)}
.sw-hover {--swatch-color:var(--ink-hover)}
.sw-ink2 {--swatch-color:var(--ink-2)}
.sw-ink3 {--swatch-color:var(--ink-3)}
.sw-muted {--swatch-color:var(--text-muted)}
.sw-accent {--swatch-color:var(--accent)}
.sw-dark {--swatch-color:var(--accent-dark)}
.sw-readable {--swatch-color:var(--accent-readable)}
.sw-apricot {--swatch-color:var(--apricot)}
.sw-pink {--swatch-color:var(--pink)}
.sw-peach {--swatch-color:var(--peach)}
.sw-success {--swatch-color:var(--success)}
.sw-warn {--swatch-color:var(--warn)}
.sw-error {--swatch-color:var(--error)}
.sw-line {--swatch-color:var(--line)}
.sw-strong {--swatch-color:var(--line-strong)}
.sw-track {--swatch-color:var(--track)}
.sw-veil {--swatch-color:var(--veil)}
.sw-scrim {--swatch-color:var(--scrim)}
.sw-clear {--swatch-color:var(--clear)}
.sw-mask {--swatch-color:var(--mask-solid)}
.sw-mistpink {--swatch-color:var(--mist-pink)}
.sw-mistpeach {--swatch-color:var(--mist-apricot)}
.sw-ring {--swatch-color:var(--success-ring)}
.sw-gradink {--swatch-color:var(--ink-on-grad)}
@media (max-width:1240px) {
  .window {grid-template-columns:150px minmax(0,1fr)}
  .w-body {grid-template-columns:minmax(0,1fr) 240px}
}
@media (max-width:1020px) {
  .device {grid-column:1;grid-row:2;height:620px}
}
@media (max-width:768px) {
  .feature-detail {grid-template-columns:minmax(0,1fr);gap:24px}
  .tab-list {padding:16px;gap:8px}
  .tab-list [role="tab"] {border-radius:var(--r-pill);min-height:44px;padding:10px 18px}
  .tab-list [role="tab"][aria-selected="true"] {background:var(--grad);color:var(--ink)}
  .tab-list [role="tab"][aria-selected="true"]::after {display:none}
  .tab-panel {padding:24px 20px}
  .toc {position:static}
  .article-download {align-items:flex-start;flex-direction:column;padding:24px}
  .dl-fab {right:16px;bottom:16px;padding-right:18px}
}
@media (max-width:720px) {
  .device {height:520px}
  .window {grid-template-columns:minmax(0,1fr)}
  .w-side,.w-card {display:none}
  .w-body {grid-template-columns:minmax(0,1fr)}
  .w-filter {width:120px}
  .w-status {font-size:11px;padding-inline:12px}
}
@media (prefers-reduced-motion:reduce) {
  .window {animation:none}
}