:root{--ink:#17212b;--muted:#5c6f82;--brand:#125c63;--line:#d8e1ea;--soft:#edf6f3}
figure{margin:20px 0}img{display:block;max-width:100%;height:auto}figcaption{font-size:13px;color:#5c6f82}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:#f8fafb;font-family:"Noto Sans CJK SC","Microsoft YaHei","PingFang SC",sans-serif;line-height:1.8}
a{color:var(--brand);text-underline-offset:4px}a:focus-visible,button:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.project-page{width:min(1040px,calc(100% - 64px));margin:40px auto 70px}.project-hero{padding:38px 40px;background:#fff;border:1px solid var(--line);border-top:4px solid var(--brand);border-radius:12px}.eyebrow{font-size:13px;letter-spacing:1px;color:var(--brand);font-weight:700}h1{font-size:clamp(27px,4vw,40px);line-height:1.3;margin:14px 0}h2{font-size:25px;line-height:1.4;color:var(--brand);margin:0 0 20px}h3{font-size:19px}.lead{font-size:18px;color:var(--muted)}.status,.tag,.badge{display:inline-block;border-radius:20px;padding:4px 12px;background:var(--soft);color:var(--brand);font-size:13px}.actions,.project-links{display:flex;flex-wrap:wrap;gap:16px;margin-top:22px}section{padding:32px 40px;margin:22px 0;background:white;border:1px solid var(--line);border-radius:10px}section[id],h2[id],h3[id]{scroll-margin-top:28px}p,li,figcaption{overflow-wrap:anywhere}p{margin:12px 0}li{margin:8px 0}code{font-size:.92em;background:var(--soft);padding:1px 4px;border-radius:4px;white-space:normal;overflow-wrap:anywhere}ul,ol{padding-left:24px}.architecture{margin:24px 0 0;background:#f6f9fb;border:1px solid var(--line);border-radius:8px;padding:18px;overflow:auto}.architecture svg{display:block;width:100%;height:auto;min-width:660px;font-family:"Noto Sans CJK SC","Microsoft YaHei",sans-serif}.architecture figcaption{margin:14px 0 0;font-size:13px;color:var(--muted)}.note{border-left:3px solid var(--brand);padding:12px 16px;background:var(--soft)}footer{color:var(--muted);font-size:14px;padding:24px 0}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.card{min-width:0;padding:20px;background:#f6f9fb;border:1px solid var(--line);border-radius:8px}
.line-share-layer{position:absolute;left:0;top:0;width:100%;height:0;pointer-events:none;z-index:12}.line-share-button{position:absolute;width:22px;height:22px;padding:0;border:0;border-radius:4px;background:var(--soft);color:var(--brand);font-size:13px;line-height:22px;cursor:pointer;pointer-events:auto;opacity:.16}.line-share-button:hover,.line-share-button:focus-visible{opacity:1;outline:2px solid var(--brand)}.line-share-button.is-active{opacity:.72}.line-target{background:var(--soft)}.share-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap}
@media(hover:none){.line-share-button{opacity:.55}}@media(max-width:700px){.project-page{width:calc(100% - 56px);margin-top:22px}.project-hero,section{padding:22px 18px}.cards{grid-template-columns:1fr}.architecture{padding:12px}.lead{font-size:16px}}
@media print{body{background:white}.project-page{width:100%;margin:0}.line-share-layer{display:none}.project-hero,section{border:0;padding:12px 0}.architecture svg{min-width:0}.architecture{break-inside:avoid}}
