.detail-wrap{color:var(--ink);font-family:var(--font);max-width:1040px;padding-top:128px;padding-bottom:18px}.detail-wrap p{color:var(--muted)}.detail-wrap a{transition:color .2s,border-color .2s,background .2s,transform .2s}.detail-wrap a:hover{color:var(--accent)}.back-link{color:var(--muted);align-items:center;gap:10px;font-size:.88rem;display:inline-flex}.back-link span{color:var(--accent);font-size:1.1rem}.project-header{max-width:790px;padding:74px 0 40px}.project-category{font-family:var(--mono);letter-spacing:.08em;font-size:.72rem;color:var(--accent)!important}.project-header h1{color:var(--ink);letter-spacing:-.075em;overflow-wrap:anywhere;margin-top:14px;font-size:clamp(3.5rem,8vw,6.7rem);font-weight:500;line-height:.95}.project-deck{max-width:670px;color:var(--muted);margin-top:26px;font-size:clamp(1.15rem,2.2vw,1.5rem);line-height:1.45}.project-header .tech-list{margin-top:27px}.detail-wrap .tech-list li{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:999px;padding:5px 11px;font-size:11px}.project-meta{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:.82fr 1.2fr 1fr;gap:28px;margin:16px 0 0;padding:21px 0;display:grid}.project-meta dt{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;font-size:.65rem}.project-meta dd{max-width:250px;color:var(--ink);margin:8px 0 0;font-size:.9rem;line-height:1.45}.detail-wrap h2{color:var(--ink);letter-spacing:-.045em;font-size:clamp(1.65rem,3vw,2.15rem)}.detail-overview{grid-template-columns:235px 1fr;gap:34px;padding:74px 0 78px;display:grid}.detail-overview p{max-width:680px;font-size:1.08rem;line-height:1.75}.detail-architecture{border-top:1px solid var(--line);grid-template-columns:275px minmax(0,1fr);align-items:start;gap:58px;padding:54px 0 70px;display:grid}.detail-section-intro p{max-width:280px;margin-top:17px;font-size:.94rem;line-height:1.65}.detail-architecture .book-flow,.detail-architecture .architecture-panel{width:100%}.architecture-panel,.detail-architecture .book-flow{border:1px solid var(--line);background:var(--surface);border-radius:22px;overflow:hidden;box-shadow:0 20px 55px #392d6f14}.architecture-panel{text-align:center;padding:32px 26px}.arch-row{justify-content:center;align-items:center;gap:12px;display:flex}.arch-node{border:1px solid var(--line);min-width:0;color:var(--ink);font-family:var(--mono);background:#ffffff4d;border-radius:13px;flex:1;padding:14px 10px;font-size:.72rem;line-height:1.5}.arch-node small{color:var(--muted);font-family:var(--font);margin-top:5px;font-size:.67rem;line-height:1.45;display:block}.arch-node.accent-node{border-color:var(--accent);background:var(--accent);color:#fff}.arch-node.accent-node small{color:#f0edff}.arch-connector,.arch-down{color:var(--accent)}.arch-down{font-size:1.45rem;line-height:1.8}.arch-down.protocol{font-family:var(--mono);padding:8px;font-size:.65rem}.arch-down.protocol span{font-family:var(--font);font-size:1.3rem;line-height:1.1;display:block}.narrow-node{width:76%;margin-inline:auto}.arch-support{color:var(--muted);font-family:var(--mono);background:#5f4daf17;border-radius:10px;margin-top:21px;padding:10px 8px;font-size:.62rem;line-height:1.7}.diagram-caption{color:var(--muted);margin-top:17px;font-size:.68rem;line-height:1.55}.arch-boundary{border:1px dashed var(--accent);border-radius:15px;padding:18px}.boundary-label{font-family:var(--mono);text-align:left;margin-bottom:17px;font-size:.64rem;color:var(--accent)!important}.detail-architecture .book-flow{transform:none}.detail-architecture .flow-header{border-bottom-color:var(--line);color:var(--ink);background:0 0}.detail-architecture .flow-footer{border-top-color:var(--line);background:0 0}.detail-architecture .flow-footer a,.detail-architecture .mobile-flow{display:none}.features-section,.screenshot-section,.repository-section{border-top:1px solid var(--line)}.features-section{padding:58px 0 66px}.features-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:42px 60px;margin-top:34px;display:grid}.features-grid article{border-left:2px solid color-mix(in srgb, var(--accent), transparent 60%);padding-left:17px}.features-grid h3{color:var(--ink);font-size:1.08rem}.features-grid p{max-width:420px;margin-top:11px;font-size:.92rem;line-height:1.65}.screenshot-section{padding:58px 0 66px}.section-heading{margin-bottom:28px}.screenshot-section .section-heading a{color:var(--accent);font-size:.8rem}.project-screenshot{border:1px solid var(--line);background:var(--surface);border-radius:22px;margin:0;padding:clamp(10px,2vw,20px)}.project-screenshot img{border:1px solid var(--line);border-radius:12px;width:100%;height:auto;display:block}.project-screenshot.portrait img{max-width:390px;margin-inline:auto}.project-screenshot figcaption{color:var(--muted);text-align:center;margin-top:14px;font-size:.7rem}.repository-section{grid-template-columns:235px 1fr;gap:34px;padding:52px 0 62px;display:grid}.repository-links a{border-bottom:1px solid var(--line);color:var(--accent);justify-content:space-between;align-items:center;gap:18px;padding:13px 0;font-size:.9rem;display:flex}.repository-links a:first-child{padding-top:0}.repository-links a span:last-child{font-size:1.15rem}.flow-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:15px;padding:18px 22px;font-size:14px;font-weight:500;display:flex}.mono{font:10px var(--mono);color:var(--muted)}.flow-svg{background:#f7f8fc;width:100%;display:block}.flow-line{stroke:#2457db;fill:none;stroke-width:1.6px}.diagram-title{font:500 18px var(--font);fill:#242631}.diagram-small{font:13px var(--font);fill:#5c606d}.diagram-code{font:11px var(--mono);fill:#5c606d}.inverse{fill:#fff}.flow-footer{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:8px;padding:14px 18px;font-size:10px;display:flex}.flow-dot{background:var(--accent);border-radius:50%;width:5px;height:5px}@media (width<=800px){.detail-wrap{width:calc(100% - 48px);padding-top:109px}.project-header{padding-top:42px}.project-header h1{font-size:clamp(3.35rem,16vw,5rem)}.project-meta{grid-template-columns:1fr;gap:17px}.project-meta dd{max-width:none}.detail-overview,.detail-architecture,.repository-section{grid-template-columns:1fr;gap:24px}.detail-overview{padding:52px 0 58px}.detail-overview p,.detail-section-intro p{max-width:620px}.detail-architecture{padding:45px 0 58px}.architecture-panel,.detail-architecture .book-flow{max-width:650px;margin-inline:auto}.features-grid{gap:28px 32px}}@media (width<=390px){.detail-wrap{width:calc(100% - 32px);padding-top:105px}.project-header{padding-top:35px}.project-header h1{font-size:3.1rem}.project-deck{font-size:1.08rem}.features-grid{grid-template-columns:1fr;gap:24px}.architecture-panel{padding:24px 13px}.arch-row{gap:7px}.arch-node{padding:11px 6px;font-size:.62rem}.arch-node small{font-size:.59rem}.narrow-node{width:90%}.detail-architecture .flow-header{padding-inline:15px}.detail-architecture .flow-svg{display:none}.detail-architecture .mobile-flow{flex-direction:column;align-items:center;gap:9px;padding:24px 16px;display:flex}.mobile-flow-node{border:1px solid var(--line);width:min(100%,230px);color:var(--ink);background:#ffffff59;border-radius:13px;flex-direction:column;gap:3px;padding:12px 14px;display:flex}.mobile-flow-node strong{font-size:.84rem}.mobile-flow-node span,.mobile-flow-node small{color:var(--muted);font-size:.68rem}.mobile-flow-api{border-color:var(--accent);background:var(--accent);color:#fff}.mobile-flow-api span,.mobile-flow-api small{color:#f0edff}.mobile-flow-arrow{color:var(--accent)}.flow-header{font-size:12px}.mono{font-size:8px}}@media (width<=320px){.detail-wrap{width:calc(100% - 24px)}.project-header h1{font-size:2.75rem}.project-meta dd,.detail-overview p{font-size:.86rem}.repository-links a{font-size:.78rem}}@media (prefers-reduced-motion:reduce){.detail-wrap a{transition:none}}html[data-theme=dark] .arch-node.accent-node,html[data-theme=dark] .arch-node.accent-node small,html[data-theme=dark] .mobile-flow-api,html[data-theme=dark] .mobile-flow-api span,html[data-theme=dark] .mobile-flow-api small{color:#252235}html[data-theme=dark] .arch-node:not(.accent-node),html[data-theme=dark] .mobile-flow-node:not(.mobile-flow-api){background:var(--surface)}
