:root{color-scheme:light dark;--bg:#f5f6f8;--surface:#fff;--soft:#eef1f5;--ink:#1b2530;--muted:#66727f;--faint:#8d98a4;--line:#dce2e8;--accent:#276fe3;--accent-soft:#e8f0ff;--green:#26956b;--red:#cc5d59;--amber:#a47724;--code:#edf0f3;--max:1240px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
@media(prefers-color-scheme:dark){:root{--bg:#111416;--surface:#191d21;--soft:#22282d;--ink:#f1f4f6;--muted:#a6b0ba;--faint:#7e8a95;--line:#343c44;--accent:#70a2ff;--accent-soft:#1d3153;--code:#252c32}}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}code{padding:2px 5px;border-radius:4px;background:var(--code);color:var(--ink);font-size:.88em}
.topbar{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - var(--max))/2));border-bottom:1px solid var(--line);background:var(--surface)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:-.02em}.brand-mark{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px var(--accent-soft)}.topbar-meta{display:flex;align-items:center;gap:22px;color:var(--muted);font-size:12px}.topbar-meta a{color:var(--accent);font-weight:700}
.layout{display:grid;grid-template-columns:220px minmax(0,860px);gap:78px;width:min(calc(100% - 48px),var(--max));margin:0 auto}.sidebar{position:sticky;top:0;align-self:start;height:calc(100vh - 64px);padding:48px 0 28px;display:flex;flex-direction:column}.sidebar-label,.kicker,.card-tag,.code-label{color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.13em}.sidebar-label{margin:0 0 19px}.sidebar nav{display:flex;flex-direction:column;gap:2px;border-left:1px solid var(--line)}.sidebar nav a{padding:6px 0 6px 14px;color:var(--muted);font-size:13px;border-left:2px solid transparent;margin-left:-1px}.sidebar nav a:hover,.sidebar nav a:focus{color:var(--ink);border-left-color:var(--accent)}.sidebar-foot{display:flex;align-items:flex-start;gap:9px;margin-top:auto;color:var(--muted);font-size:12px}.sidebar-foot small{color:var(--faint)}.status-dot{display:block;width:7px;height:7px;margin-top:7px;border-radius:50%;background:var(--green)}
.content{min-width:0}.doc-intro{padding:82px 0 86px;border-bottom:1px solid var(--line)}.kicker{margin-bottom:18px}h1,h2,h3,p{margin-top:0}h1{margin-bottom:22px;font-size:clamp(38px,5vw,60px);line-height:1.12;letter-spacing:-.065em}.lead{max-width:720px;margin-bottom:34px;color:var(--muted);font-size:18px}.intro-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.intro-grid div{padding:14px 15px 14px 0;border-right:1px solid var(--line)}.intro-grid div:not(:first-child){padding-left:15px}.intro-grid div:last-child{border-right:0}.intro-grid span{display:block;color:var(--faint);font-size:11px}.intro-grid strong{display:block;margin-top:3px;font-size:13px}
.doc-section{padding:74px 0;border-bottom:1px solid var(--line);scroll-margin-top:20px}.section-title{display:flex;align-items:baseline;gap:15px;margin-bottom:20px}.section-title>span{color:var(--accent);font:800 11px ui-monospace,monospace}h2{margin-bottom:0;font-size:31px;line-height:1.2;letter-spacing:-.045em}h3{margin-bottom:8px;font-size:17px;line-height:1.35;letter-spacing:-.02em}p{color:var(--muted)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:55px;align-items:start}.check-list{padding:0;margin:22px 0 0;list-style:none;color:var(--muted)}.check-list li{padding:7px 0 7px 20px;border-top:1px solid var(--line);position:relative;font-size:13px}.check-list li::before{content:"✓";position:absolute;left:0;color:var(--green);font-weight:800}.boundary-card{border:1px solid var(--line);background:var(--surface)}.boundary-row{display:grid;grid-template-columns:60px 1fr;gap:14px;padding:15px;border-bottom:1px solid var(--line)}.boundary-row:last-child{border-bottom:0}.boundary-row p{margin:0;font-size:13px}.pill{align-self:start;width:max-content;padding:2px 6px;border-radius:4px;font:800 9px ui-monospace,monospace}.pill.yes{background:#e2f4eb;color:var(--green)}.pill.no{background:#fae7e5;color:var(--red)}.pill.later{background:#f7efd9;color:var(--amber)}
.architecture-diagram{margin:29px 0 24px;padding:24px;background:var(--surface);border:1px solid var(--line)}.arch-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.arch-node,.arch-service,.arch-database{padding:14px 15px;border:1px solid var(--line);text-align:center}.arch-node{background:var(--soft)}.arch-service{border-color:var(--accent);background:var(--accent-soft)}.arch-database{background:var(--soft)}.architecture-diagram b{display:block;font-size:14px}.architecture-diagram small{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.5}.arch-connector{display:grid;grid-template-columns:repeat(3,1fr);height:28px;margin:0 16.5%;border-left:1px dashed var(--accent);border-right:1px dashed var(--accent)}.arch-connector i{display:block;width:0;margin:0 auto;border-left:1px dashed var(--accent)}.arch-connector.single{width:0;height:28px;margin:0 auto;border-left:1px dashed var(--accent)}.note,.warning{display:flex;gap:15px;padding:14px 16px;border-left:3px solid var(--accent);background:var(--surface)}.note strong,.warning strong{flex:0 0 auto;font-size:12px}.note span,.warning span{color:var(--muted);font-size:13px}
.flow-list{border-top:1px solid var(--line)}.flow-step{display:grid;grid-template-columns:42px 1fr;gap:18px;padding:19px 0;border-bottom:1px solid var(--line)}.flow-step>b{color:var(--accent);font:800 11px ui-monospace,monospace}.flow-step strong{font-size:15px}.flow-step p{margin:4px 0 0;font-size:13px}.security-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:28px 0;background:var(--line);border:1px solid var(--line)}.security-grid article{min-height:210px;padding:22px 20px;background:var(--surface)}.security-grid h3{margin-top:13px}.security-grid p{font-size:13px}.card-tag{color:var(--muted);font-size:10px}.warning{border-left-color:var(--amber);margin-top:22px}
.model-table{margin:28px 0 22px;border:1px solid var(--line);background:var(--surface);font-size:13px}.model-table>div{display:grid;grid-template-columns:150px 1fr 1.35fr;gap:18px;padding:12px 14px;border-bottom:1px solid var(--line)}.model-table>div:last-child{border-bottom:0}.model-head{color:var(--faint);font-size:11px;font-weight:700}.model-table span{color:var(--muted)}.code-card{padding:16px 18px;background:var(--code);border:1px solid var(--line)}.code-label{color:var(--muted)}pre{overflow:auto;margin:10px 0 0;font-size:12px;line-height:1.7}
.rule-stack{border-top:1px solid var(--line)}.rule-stack div{display:grid;grid-template-columns:75px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.rule-stack span{color:var(--muted);font-size:13px}.endpoint-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:28px;padding:13px 15px;background:var(--code);border:1px solid var(--line);font-size:12px}.endpoint-strip span{color:var(--accent);font:800 10px ui-monospace,monospace}.endpoint-strip code{padding:0;background:none}.endpoint-strip.compact{margin-top:23px}
.reminder-timeline{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:30px 0}.reminder-timeline>div{position:relative;padding:18px 16px 0 0;border-top:1px solid var(--accent)}.timeline-dot{position:absolute;top:-4px;width:7px;height:7px;border-radius:50%;background:var(--accent)}.reminder-timeline b{display:block;margin-top:13px;font-size:14px}.reminder-timeline p{margin:5px 14px 0 0;font-size:12px}.integration-table{border-top:1px solid var(--line)}.integration-table>div{display:grid;grid-template-columns:70px 155px 1fr;gap:15px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--line)}.integration-table p{margin:0;font-size:13px}.method{width:max-content;padding:2px 6px;border-radius:4px;font:800 9px ui-monospace,monospace}.method.get{color:#356bb5;background:#e5efff}.method.post{color:#7958b4;background:#eee8fd}.method.ics{color:#a47724;background:#f7efd9}.method.data{color:var(--green);background:#e2f4eb}
.ops-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:28px 0;background:var(--line);border:1px solid var(--line)}.ops-grid>div{min-height:185px;padding:20px;background:var(--surface)}.ops-grid h3{margin-top:12px}.ops-grid p{font-size:13px}.ops-grid pre{font-size:11px}.path-list{border-top:1px solid var(--line)}.path-list div{display:grid;grid-template-columns:190px 1fr;gap:18px;padding:10px 0;border-bottom:1px solid var(--line)}.path-list span{color:var(--muted);font-size:13px}.non-goals{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.non-goals>div{padding:18px;background:var(--surface);border:1px solid var(--line)}.non-goals b{font-size:14px}.non-goals p{margin:8px 0 0;font-size:13px}.doc-footer{display:flex;justify-content:space-between;gap:20px;padding:28px 0 48px;color:var(--faint);font-size:11px}
@media(max-width:900px){.layout{display:block;width:min(calc(100% - 40px),860px)}.sidebar{position:relative;height:auto;padding:22px 0 0}.sidebar nav{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:20px}.sidebar-foot{display:none}.sidebar-label{margin-bottom:8px}.sidebar nav a{padding:4px 0 4px 9px}}
@media(max-width:650px){.topbar{padding:0 18px}.topbar-meta span{display:none}.layout{width:calc(100% - 32px)}.sidebar nav{grid-template-columns:repeat(2,1fr)}.doc-intro{padding:52px 0 55px}h1{font-size:40px}.lead{font-size:16px}.intro-grid{grid-template-columns:repeat(2,1fr)}.intro-grid div:nth-child(2){border-right:0}.intro-grid div:nth-child(3){padding-left:0;border-top:1px solid var(--line)}.intro-grid div:nth-child(4){border-top:1px solid var(--line)}.doc-section{padding:52px 0}.two-col,.security-grid,.ops-grid,.non-goals{grid-template-columns:1fr;gap:1px}.architecture-diagram{padding:15px 10px}.arch-row{grid-template-columns:1fr;gap:8px}.arch-connector{height:26px;margin:0 50%;grid-template-columns:1fr;border:0}.arch-connector i{display:none}.arch-connector i:first-child{display:block}.model-table>div{grid-template-columns:1fr;gap:3px}.model-head{display:none!important}.reminder-timeline{grid-template-columns:1fr 1fr;gap:20px 0}.integration-table>div{grid-template-columns:65px 1fr;gap:9px}.integration-table p{grid-column:2}.path-list div{grid-template-columns:1fr;gap:3px}.doc-footer{flex-direction:column}}
