/* ============================================================ Chapter content styles — applied inside iframe ============================================================ */ :root { --bg: #fafaf7; --bg-2: #ffffff; --bg-3: #f3f3ee; --fg: #1d1d1f; --fg-2: #5a5a60; --fg-3: #8a8a92; --border: #e3e3dd; --border-2: #d4d4cd; --accent: #f5a524; --accent-2: #e69500; --accent-soft:#fff4dc; --link: #0a66c2; --code-bg: #f5f5ef; --code-fg: #2d2d33; --shadow: 0 1px 2px rgba(0,0,0,.04), 0 4px 12px rgba(0,0,0,.04); --radius: 8px; --mono: ui-monospace, "SF Mono", Menlo, Consolas, "Roboto Mono", monospace; --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Helvetica, Arial, sans-serif; } @media (prefers-color-scheme: dark) { :root { --bg: #16161a; --bg-2: #1d1d22; --bg-3: #25252b; --fg: #e8e8ea; --fg-2: #b0b0b8; --fg-3: #76767e; --border: #2d2d34; --border-2: #3a3a42; --accent: #f5a524; --accent-2: #ffbe3d; --accent-soft:#3a2f15; --link: #6db4ff; --code-bg: #25252b; --code-fg: #e6e6e8; } } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; font-family: var(--sans); font-size: 14px; line-height: 1.65; background: var(--bg); color: var(--fg); -webkit-font-smoothing: antialiased; } .page { max-width: 980px; margin: 0 auto; padding: 40px 48px 80px; } /* breadcrumbs */ .crumbs { font-family: var(--mono); font-size: 12px; color: var(--fg-3); margin-bottom: 8px; } .crumbs span { margin: 0 4px; color: var(--fg-3); } /* headings */ h1, h2, h3, h4 { color: var(--fg); line-height: 1.3; scroll-margin-top: 20px; } h1 { font-size: 30px; font-weight: 700; margin: 0 0 8px; letter-spacing: -.02em; } h1 .h-num { font-family: var(--mono); font-size: 18px; color: var(--accent-2); margin-right: 8px; font-weight: 500; } h2 { font-size: 22px; font-weight: 600; margin: 48px 0 12px; padding-top: 12px; border-top: 1px solid var(--border); } h2 .h-num { font-family: var(--mono); font-size: 14px; color: var(--accent-2); margin-right: 6px; font-weight: 500; } h3 { font-size: 17px; font-weight: 600; margin: 28px 0 8px; } h3 .h-num { font-family: var(--mono); font-size: 13px; color: var(--fg-3); margin-right: 6px; } h4 { font-size: 14px; font-weight: 600; margin: 20px 0 6px; color: var(--fg-2); } .lede { font-size: 16px; color: var(--fg-2); margin: 0 0 24px; line-height: 1.6; } /* paragraphs */ p { margin: 8px 0 14px; color: var(--fg); } /* links */ a { color: var(--link); text-decoration: none; } a:hover { text-decoration: underline; } /* lists */ ul, ol { padding-left: 24px; } li { margin: 3px 0; } /* inline code */ code { font-family: var(--mono); font-size: 12.5px; background: var(--code-bg); color: var(--code-fg); padding: 1px 6px; border-radius: 3px; border: 1px solid var(--border); } /* code block */ pre { background: var(--code-bg); color: var(--code-fg); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; overflow-x: auto; font-family: var(--mono); font-size: 12.5px; line-height: 1.55; } pre code { background: none; border: none; padding: 0; font-size: inherit; } /* keyword colors for code */ .k-kw { color: #c0392b; } .k-str { color: #16a085; } .k-num { color: #8e44ad; } .k-cmt { color: #95a5a6; font-style: italic; } .k-fn { color: #2980b9; } [data-theme="dark"] .k-kw { color: #ff7b7b; } [data-theme="dark"] .k-str { color: #6cdcc0; } [data-theme="dark"] .k-cmt { color: #707078; } /* tables */ table { width: 100%; border-collapse: collapse; margin: 14px 0 20px; font-size: 13px; } th, td { text-align: left; padding: 8px 12px; border-bottom: 1px solid var(--border); vertical-align: top; } th { background: var(--bg-3); color: var(--fg); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; } tbody tr:hover { background: var(--bg-3); } td code { font-size: 12px; padding: 0 4px; } td.method-GET { color: #16a085; font-family: var(--mono); font-weight: 600; } td.method-POST { color: #2980b9; font-family: var(--mono); font-weight: 600; } td.method-PUT { color: #e67e22; font-family: var(--mono); font-weight: 600; } td.method-DELETE { color: #c0392b; font-family: var(--mono); font-weight: 600; } td.method-PATCH { color: #8e44ad; font-family: var(--mono); font-weight: 600; } /* callout */ .callout { border-left: 3px solid var(--accent); background: var(--accent-soft); padding: 10px 14px; border-radius: 0 var(--radius) var(--radius) 0; margin: 14px 0 18px; font-size: 13px; color: var(--fg); } .callout-info { border-left-color: var(--link); background: rgba(10, 102, 194, .08); } .callout-warn { border-left-color: #e67e22; background: rgba(230, 126, 34, .1); } .callout-danger{ border-left-color: #c0392b; background: rgba(192, 57, 43, .1); } /* cards grid */ .cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; margin: 16px 0; } .card { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; box-shadow: var(--shadow); } .card-title { font-weight: 600; margin-bottom: 4px; font-size: 14px; } .card-meta { font-family: var(--mono); font-size: 11px; color: var(--fg-3); margin-bottom: 6px; } .card-body { color: var(--fg-2); font-size: 13px; } /* badges */ .badge { display: inline-block; font-family: var(--mono); font-size: 11px; padding: 1px 7px; border-radius: 9px; background: var(--bg-3); color: var(--fg-2); border: 1px solid var(--border); margin: 0 2px; } .badge-p0 { background: #fce4e4; color: #c0392b; border-color: #f5c6c6; } .badge-p1 { background: #fef0d4; color: #c87f0a; border-color: #f6d999; } .badge-p2 { background: #e6f0fa; color: #2364ab; border-color: #b9d4ee; } .badge-ok { background: #def5e3; color: #1e8449; border-color: #a9e0b8; } .badge-na { background: var(--bg-3); color: var(--fg-3); border-color: var(--border); } [data-theme="dark"] .badge-p0 { background: #4d2222; color: #ff8e85; } [data-theme="dark"] .badge-p1 { background: #4d3a14; color: #ffc966; } [data-theme="dark"] .badge-p2 { background: #1b3650; color: #8db8e0; } [data-theme="dark"] .badge-ok { background: #1f3d27; color: #8edf9e; } /* mermaid containers */ .mermaid { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; margin: 14px 0; overflow-x: auto; } /* svg blocks */ .svg-block { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px; margin: 14px 0; text-align: center; overflow-x: auto; } .svg-block svg { max-width: 100%; height: auto; } .caption { font-size: 12px; color: var(--fg-3); text-align: center; margin-top: 6px; } /* prototype mock */ .mock { background: var(--bg-2); border: 1px solid var(--border-2); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; margin: 14px 0; } .mock-bar { height: 28px; background: var(--bg-3); border-bottom: 1px solid var(--border); display: flex; align-items: center; padding: 0 10px; gap: 4px; font-family: var(--mono); font-size: 11px; color: var(--fg-3); } .mock-bar::before { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #ff5f56; box-shadow: 16px 0 #ffbd2e, 32px 0 #27c93f; margin-right: 36px; } .mock-body { padding: 0; } /* responsive */ @media (max-width: 720px) { .page { padding: 24px 18px 60px; } h1 { font-size: 24px; } h2 { font-size: 18px; } }