:root { color-scheme: light; --ink: #17202a; --muted: #5d6670; --panel: #f7f4ec; --canvas: #101820; --accent: #ffb000; --accent-strong: #e04f2f; --line: #263241; --ok: #1d7f4f; --warn: #9a5b00; font-family: "Avenir Next", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; color: var(--ink); background: linear-gradient(90deg, rgba(23, 32, 42, 0.06) 1px, transparent 1px), linear-gradient(rgba(23, 32, 42, 0.05) 1px, transparent 1px), #fffaf0; background-size: 28px 28px; } button, input { font: inherit; } code { border: 1px solid rgba(23, 32, 42, 0.16); border-radius: 4px; padding: 0.08rem 0.28rem; background: rgba(255, 255, 255, 0.74); } .page-shell { width: min(1120px, calc(100vw - 32px)); margin: 0 auto; padding: 44px 0 56px; } .intro { display: grid; gap: 12px; margin-bottom: 28px; } .eyebrow { margin: 0; color: var(--accent-strong); font-size: 0.82rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; } h1, h2, p { margin: 0; } h1 { max-width: 760px; font-family: Georgia, "Times New Roman", serif; font-size: clamp(3rem, 6vw, 5.8rem); line-height: 0.92; letter-spacing: 0; } .lede { max-width: 760px; color: var(--muted); font-size: 1.06rem; line-height: 1.75; } .status-panel { width: fit-content; max-width: 100%; border: 1px solid rgba(23, 32, 42, 0.18); border-left: 6px solid var(--warn); border-radius: 6px; padding: 10px 14px; color: var(--warn); background: rgba(255, 255, 255, 0.72); font-weight: 700; } .status-panel[data-state="ok"] { border-left-color: var(--ok); color: var(--ok); } .status-panel[data-state="fail"] { border-left-color: var(--accent-strong); color: var(--accent-strong); } .demo-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(280px, 0.8fr); gap: 24px; align-items: stretch; } .canvas-stage { position: relative; display: grid; place-items: center; min-height: 480px; border: 1px solid rgba(23, 32, 42, 0.24); border-radius: 8px; padding: 22px; background: radial-gradient(circle at 24% 18%, rgba(255, 176, 0, 0.34), transparent 28%), linear-gradient(135deg, #1a2633 0%, #0d141b 100%); box-shadow: 0 24px 70px rgba(23, 32, 42, 0.18); } canvas { width: min(638px, 100%); height: auto; aspect-ratio: 638 / 318; border: 2px solid rgba(255, 176, 0, 0.9); border-radius: 6px; background: var(--canvas); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.16); } .fallback-preview { display: none; position: absolute; inset: 42px; place-items: center; gap: 14px; border: 1px dashed rgba(255, 176, 0, 0.72); border-radius: 6px; padding: 22px; background: rgba(16, 24, 32, 0.9); } body[data-api="fallback"] .fallback-preview { display: grid; } body[data-api="fallback"] canvas { opacity: 0.34; } .fallback-label { color: #ffd27c; font-size: 0.86rem; font-weight: 800; text-align: center; } .control-panel { width: 578px; color: #101820; } .control-panel fieldset { display: grid; gap: 12px; margin: 0; border: 2px solid #17202a; border-radius: 6px; padding: 18px; background: #fffaf0; } .control-panel legend { padding: 0 8px; font-weight: 900; } .field-row, .check-row { display: flex; gap: 10px; align-items: center; } .field-row { justify-content: space-between; } .field-row input[type="text"] { width: min(310px, 58%); border: 1px solid #17202a; border-radius: 4px; padding: 7px 9px; background: #ffffff; } .field-row input[type="range"] { width: min(300px, 58%); accent-color: var(--accent-strong); } .nested-fieldset { grid-template-columns: repeat(2, minmax(0, 1fr)); } .nested-fieldset legend { grid-column: 1 / -1; } .control-panel button { justify-self: end; border: 2px solid #17202a; border-radius: 4px; padding: 8px 18px; color: #17202a; background: var(--accent); font-weight: 900; cursor: pointer; } .preview-panel { width: min(578px, 100%); } .preview-panel input:disabled, .preview-panel button:disabled { cursor: not-allowed; opacity: 0.72; } .notes { display: grid; align-content: start; gap: 14px; border-left: 4px solid var(--line); padding: 20px 0 20px 22px; color: var(--muted); line-height: 1.7; } .notes h2 { color: var(--ink); font-size: 1rem; } .notes ul { display: grid; gap: 8px; margin: 0; padding-left: 1.2rem; } @media (max-width: 820px) { .page-shell { width: min(100vw - 22px, 680px); padding-top: 28px; } h1 { font-size: 3.1rem; } .demo-grid { grid-template-columns: 1fr; } .canvas-stage { min-height: 360px; padding: 14px; } .fallback-preview { inset: 24px; padding: 14px; } .nested-fieldset { grid-template-columns: 1fr; } .notes { border-left: 0; border-top: 4px solid var(--line); padding: 18px 0 0; } }