.home-a{--grid: #DDE8E9}.ha-hero{grid-template-columns:1fr 1fr}.ha-hero h1{font-size:clamp(30px,4.2vw,52px)}.ha-link{font-size:14px;text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:2px}.ha-link:hover{border-color:var(--ink)}@media(max-width:900px){.ha-hero{grid-template-columns:1fr}}.ha-fig{margin:0;min-width:0}.ha-map{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:18px 16px;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:24px 24px}.ha-map-head{display:flex;justify-content:space-between;gap:16px;margin-bottom:6px;color:var(--muted)}#svc-head{transition:opacity .6s}.ha-map-cols{position:relative;height:420px}.ha-map-cols ul{display:contents;list-style:none}.ha-map svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:0}.ha-map svg path{fill:none;stroke:var(--line);stroke-width:1.2}.ha-map svg path.on{stroke:var(--accent);stroke-width:2.2;stroke-linecap:round}.ha-map svg circle{fill:var(--accent)}.ha-map svg circle.halo{opacity:.18}.ha-map svg path.neck{fill:#d2e6e8;stroke:#98c2c5;stroke-width:1.2}.ha-cell{position:absolute;left:0;top:0;z-index:1;width:var(--d, 96px);height:var(--d, 96px);opacity:0;will-change:transform;transform-origin:center}.ha-issue,.ha-svcn{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;font:inherit;font-size:11.5px;letter-spacing:-.02em;line-height:1.4;text-align:center;padding:4%;white-space:pre;background:radial-gradient(ellipse 30% 20% at 32% 20%,rgb(255 255 255 / .9),transparent 70%),radial-gradient(circle at 22% 62%,rgb(31 111 120 / .22) 0 1.5%,transparent 2.5%),radial-gradient(circle at 74% 30%,rgb(31 111 120 / .2) 0 1.2%,transparent 2.2%),radial-gradient(circle at 66% 78%,rgb(31 111 120 / .18) 0 1.8%,transparent 3%),radial-gradient(circle at 36% 84%,rgb(31 111 120 / .16) 0 1%,transparent 2%),radial-gradient(circle at 84% 56%,rgb(31 111 120 / .16) 0 1.4%,transparent 2.4%),radial-gradient(circle at 50% 50%,#e8f3f4 0 52%,#d2e6e8 80%,#f3fafa 96%);border:1px solid rgb(255 255 255 / .95);box-shadow:0 0 0 1px #a6cbce,inset 0 0 5px 2px #ffffffd9,inset 0 -10px 18px #1f6f7829,0 6px 16px -6px #1048504d}.ha-issue:before,.ha-svcn:before{content:"";position:absolute;width:58%;height:54%;left:52%;top:54%;transform:translate(-50%,-50%) rotate(-12deg);border-radius:48% 52% 50% 50%;z-index:-1;background:radial-gradient(circle at 30% 40%,rgb(31 111 120 / .2) 0 6%,transparent 10%),radial-gradient(circle at 64% 62%,rgb(31 111 120 / .18) 0 7%,transparent 12%),radial-gradient(circle at 48% 46%,rgb(31 111 120 / .22),rgb(31 111 120 / .12) 60%,transparent 72%);filter:blur(.4px)}.ha-issue{color:var(--ink);cursor:pointer}.ha-issue:hover{box-shadow:0 0 0 1.5px var(--accent),inset 0 0 5px 2px #ffffffd9,inset 0 -10px 18px #1f6f7829,0 6px 16px -6px #1048504d}.ha-issue[aria-pressed=true]{font-weight:700;box-shadow:0 0 0 2px var(--accent),inset 0 0 5px 2px #ffffffd9,inset 0 -12px 20px #1f6f783d,0 8px 20px -6px #10485066}.ha-svcn{color:var(--muted);transition:color .3s,box-shadow .3s}.ha-svcn{text-decoration:none;cursor:pointer}.ha-svcn:hover{color:var(--accent);box-shadow:0 0 0 1.5px var(--accent),inset 0 0 5px 2px #ffffffd9,inset 0 -10px 18px #1f6f7829,0 6px 16px -6px #1048504d}.ha-svcn.on:hover{color:#fff;box-shadow:0 0 0 2px #124950,inset 0 0 5px 2px #ffffff59,inset 0 -10px 18px #08282e40,0 8px 20px -6px #10485073}.ha-svcn.on{color:#fff;font-weight:700;background:radial-gradient(ellipse 30% 20% at 32% 20%,rgb(255 255 255 / .55),transparent 70%),radial-gradient(circle at 24% 64%,rgb(255 255 255 / .18) 0 1.5%,transparent 2.5%),radial-gradient(circle at 74% 32%,rgb(255 255 255 / .16) 0 1.2%,transparent 2.2%),radial-gradient(circle at 50% 50%,#3a8790 0 50%,#1f6f78 80%,#7cb4b9 97%);box-shadow:0 0 0 1px #185c64,inset 0 0 5px 2px #ffffff59,inset 0 -10px 18px #08282e40,0 8px 20px -6px #10485073;text-shadow:0 1px 2px rgb(8 40 46 / .35)}.ha-svcn.on:before{background:radial-gradient(circle at 48% 46%,rgb(8 46 52 / .3),rgb(8 46 52 / .15) 60%,transparent 72%)}.ha-bokeh{position:absolute;inset:0;z-index:0;pointer-events:none}.ha-bokeh i{position:absolute;border-radius:50%;opacity:.55;filter:blur(2px);background:radial-gradient(circle at 50% 50%,#1f6f7824 0 28%,#dbecee 34% 72%,#fffc 92%);box-shadow:0 0 0 1px #1f6f781f;animation:ha-drift 18s ease-in-out infinite alternate}@keyframes ha-drift{to{transform:translate(14px,-18px)}}@media(max-width:480px){.ha-issue,.ha-svcn{font-size:11px;padding:6%}}.ha-fig figcaption{display:flex;gap:12px;margin-top:12px;font-size:13px;color:var(--muted);line-height:1.6}.ha-fig figcaption b{font-family:var(--f-display);font-style:italic;font-weight:400;color:var(--ink);white-space:nowrap}.ha-only,.ha-ai{display:grid;grid-template-columns:200px 1fr;gap:40px}.ha-only{padding-block:28px;border-top:1px solid var(--ink)}.ha-only p{margin:0;font-size:clamp(17px,1.9vw,21px);line-height:1.7;max-width:40em}.ha-only strong{color:var(--accent)}.ha-ai{padding-block:28px 40px;border-top:1px solid var(--line)}.ha-ai h2{margin:0;font-size:clamp(20px,2.4vw,26px);line-height:1.5}.ha-three{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:18px}.ha-three>div{min-width:0;display:flex;flex-direction:column;gap:6px}.ha-three b{font-family:var(--f-display);font-style:italic;font-weight:400;font-size:20px;color:var(--accent)}.ha-three h3{margin:0;font-size:17px}.ha-three p{margin:0;font-size:14px;color:var(--muted);line-height:1.8}.ha-only .mono,.ha-ai>.mono,.ha-margin .mono{color:var(--muted);text-transform:uppercase}@media(max-width:820px){.ha-only,.ha-ai{grid-template-columns:1fr;gap:8px}.ha-three{grid-template-columns:1fr;gap:14px}}.ha-sec{display:grid;grid-template-columns:200px 1fr;gap:40px;padding-block:clamp(56px,8vw,88px);border-top:1px solid var(--line)}.ha-margin{display:flex;flex-direction:column;gap:8px;min-width:0}.ha-num{font-family:var(--f-display);font-weight:300;font-size:40px;line-height:1;color:var(--accent)}.ha-note{font-size:12px;color:var(--muted);line-height:1.7;max-width:16em}.ha-body{min-width:0}.ha-body>h2{margin:0;font-size:clamp(24px,3vw,36px);line-height:1.4}.ha-intro{color:var(--muted);max-width:38em;margin:16px 0 40px}.ha-gap{margin-top:28px}@media(max-width:820px){.ha-sec{grid-template-columns:1fr;gap:16px}.ha-margin{flex-direction:row;align-items:baseline;gap:14px}.ha-note{display:none}}.ha-panel{margin:0 0 40px;padding:24px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.ha-panel h3{margin:6px 0 0;font-size:clamp(18px,2vw,22px)}.ha-panel-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:18px}.ha-panel-cols>div{min-width:0}.ha-panel-cols .mono{color:var(--accent)}.ha-panel ul{list-style:none;margin:8px 0 0;padding:0;font-size:15px;line-height:1.9}.ha-fn{font-size:12px;color:var(--muted);margin:16px 0 0}@media(max-width:700px){.ha-panel-cols{grid-template-columns:1fr;gap:16px}}.ha-bs{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:start}.ha-bs dl{margin:0;border-top:1px solid var(--ink)}.ha-bs dl>div{display:grid;grid-template-columns:44px 1fr;gap:4px 16px;padding:14px 0;border-bottom:1px solid var(--line)}.ha-bs dt{grid-row:span 2;font-family:var(--f-mono);font-size:12px;color:var(--accent);padding-top:3px}.ha-bs dd{margin:0;min-width:0}.ha-bs dd:first-of-type{font-weight:700}.ha-bs dd+dd{font-size:14px;color:var(--muted)}.ha-methods{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.ha-methods span{font-size:13px;border:1px solid var(--line);border-radius:999px;padding:3px 12px;color:var(--muted)}.ha-sheet{margin:0;background:var(--surface);border:1px solid var(--line);padding:22px;min-width:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px);background-size:100% 30px}.ha-sheet .mono{color:var(--muted)}.ha-q{font-weight:700;margin:10px 0 12px;line-height:1.6}.ha-sheet label{display:flex;gap:10px;align-items:center;font-size:14px;padding:3px 0}.ha-sheet input{accent-color:var(--accent)}.ha-sheet figcaption{margin-top:14px;font-size:12px;color:var(--muted)}@media(max-width:900px){.ha-bs{grid-template-columns:1fr}}.ha-entries{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}.ha-entry{display:flex;flex-direction:column;gap:10px;min-width:0;padding-top:16px;border-top:1px solid var(--ink)}.ha-entry .mono{color:var(--muted)}.ha-entry h3{margin:0;font-size:19px;line-height:1.5}.ha-entry p{margin:0;color:var(--muted);font-size:15px;line-height:1.8}.ha-entry a{margin-top:auto;font-size:14px;color:var(--accent);text-decoration:none;font-weight:500}@media(max-width:900px){.ha-entries{grid-template-columns:1fr;gap:28px}}.ha-steps{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}.ha-steps li{display:grid;grid-template-columns:90px 200px 1fr;gap:16px 24px;padding:18px 0;border-bottom:1px solid var(--line);align-items:baseline}.ha-n{font-family:var(--f-mono);font-size:12px;color:var(--accent)}.ha-steps h3{margin:0;font-size:17px}.ha-steps p{margin:0;font-size:15px;color:var(--muted);min-width:0}@media(max-width:640px){.ha-steps li{grid-template-columns:auto 1fr}.ha-steps p{grid-column:1 / -1}}.ha-bm{display:grid;grid-template-columns:.9fr 1.1fr;gap:40px;align-items:start}.ha-cats{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}.ha-cats li{display:grid;grid-template-columns:150px 1fr;gap:4px 16px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px}.ha-cats b{font-size:15px}.ha-cats span{color:var(--muted);min-width:0}.ha-loop{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:20px;font-size:13px}.ha-loop span{border:1px solid var(--accent);border-radius:999px;padding:3px 12px}.ha-loop i{font-style:normal;color:var(--accent)}.ha-feed-title{margin:0 0 8px;font-size:15px}.ha-toc li{grid-template-columns:100px 80px 1fr}@media(max-width:900px){.ha-bm{grid-template-columns:1fr}}@media(max-width:480px){.ha-cats li{grid-template-columns:1fr}}@media(max-width:640px){.ha-toc li{grid-template-columns:auto 1fr}}@media(prefers-reduced-motion:reduce){#svc-head,.ha-svcn{transition:none}.ha-bokeh i{animation:none}}
