
:root{
 --bg:#f7f7f5;--surface:#fff;--ink:#171717;--muted:#6e6e68;--faint:#96968f;--line:#e6e6e1;--line2:#d7d7d1;
 --green:#1d6a48;--green-bg:#eef7f1;--amber:#83591d;--amber-bg:#faf3e7;--lav:#f2f0fb;--blue:#eef4f7;--sage:#edf4ef;--sand:#f6f1e8;
 --black:#151515;--shadow:0 12px 34px rgba(22,22,22,.06);--radius:14px;--max:1160px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}.hidden{display:none!important}.shell{max-width:var(--max);margin:0 auto;padding:0 28px}.view{display:none}.view.active{display:block}
.topbar{height:72px;border-bottom:1px solid var(--line);background:rgba(247,247,245,.94);backdrop-filter:blur(16px);position:sticky;top:0;z-index:60}.nav{height:100%;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:13px;font-weight:780;letter-spacing:-.02em}.brandtext{display:flex;align-items:baseline;gap:9px}.brandname{font-size:19px;font-weight:820;letter-spacing:-.035em}.brandtag{font-size:11.5px;color:#8f8f88}.brandmark{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.brandmark svg,.brandmark img{width:30px;height:30px;display:block}.nav-note{font-size:11px;color:#9a9a94}
/* discover hero — Raycast × OpenAlternative */
.discover-hero{position:relative;padding:72px 0 38px;text-align:center;isolation:isolate}.discover-hero::before{content:'';position:absolute;left:50%;top:0;width:min(1080px,94vw);height:380px;transform:translateX(-50%);background-image:linear-gradient(rgba(26,26,26,.060) 1px,transparent 1px),linear-gradient(90deg,rgba(26,26,26,.060) 1px,transparent 1px),radial-gradient(ellipse at 50% 18%,rgba(116,103,190,.105),rgba(116,103,190,.040) 30%,rgba(255,255,255,0) 70%);background-size:32px 32px,32px 32px,100% 100%;background-position:center top,center top,center top;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.92) 0%,rgba(0,0,0,.68) 58%,rgba(0,0,0,.18) 88%,transparent 100%);mask-image:linear-gradient(180deg,rgba(0,0,0,.92) 0%,rgba(0,0,0,.68) 58%,rgba(0,0,0,.18) 88%,transparent 100%);z-index:-1;pointer-events:none}.discover-hero::after{content:'';position:absolute;left:50%;bottom:8px;width:min(940px,84vw);height:1px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#dfdfda 16%,#dfdfda 84%,transparent);z-index:-1}.hero-copy{max-width:850px;margin:0 auto}.hero-copy h1{font-size:48px;line-height:1.07;letter-spacing:-.058em;margin:0;font-weight:770}.hero-copy p{font-size:15.5px;line-height:1.72;color:#64645f;max-width:720px;margin:18px auto 0}.hero-copy strong{color:#242421}.submit-box{max-width:930px;margin:38px auto 0;padding:0;background:transparent;border:0;box-shadow:none}.submit-head{display:flex;align-items:center;justify-content:center;gap:9px;margin:0 0 10px}.submit-head strong{font-size:11.5px;color:#5f5f5a;font-weight:690}.submit-head span{font-size:10px;color:#9a9a94}.submit-head span::before{content:'·';margin-right:9px;color:#b8b8b1}.submit-form{display:grid;grid-template-columns:1fr 1.55fr 1.65fr auto;gap:0;max-width:900px;margin:0 auto;background:#fff;border:1px solid #dcdcd7;border-radius:13px;padding:5px;box-shadow:0 10px 30px rgba(20,20,20,.055),0 1px 1px rgba(20,20,20,.03);overflow:hidden}.submit-form input{height:42px;border:0;border-right:1px solid #ecece8;background:transparent;padding:0 12px;font-size:11.5px;outline:0;min-width:0}.submit-form input:focus{background:#fafaf8;box-shadow:none}.submit-form button{height:42px;border:0;border-radius:9px;background:#171717;color:#fff;padding:0 16px;margin-left:5px;font-size:11px;font-weight:760;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(255,255,255,.05)}.submit-form button:hover{background:#292929}.submit-foot{display:flex;justify-content:center;gap:14px;margin-top:9px;font-size:9.5px;color:#a0a09a}.submit-foot span{display:inline-flex;align-items:center;gap:5px}.submit-foot i{width:3px;height:3px;border-radius:50%;background:#bdbdb6}
/* featured */
.featured-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:26px 0 34px}.feature-card{border:1px solid var(--line);border-radius:14px;padding:17px;min-height:158px;display:flex;flex-direction:column;cursor:pointer;transition:.16s;background:#fff}.feature-card:nth-child(1){background:var(--lav)}.feature-card:nth-child(2){background:var(--blue)}.feature-card:nth-child(3){background:var(--sage)}.feature-card:nth-child(4){background:var(--sand)}.feature-card:hover{transform:translateY(-2px);border-color:#cfcfc8;box-shadow:var(--shadow)}.mini-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.mini-icon{width:35px;height:35px;border-radius:10px;background:rgba(255,255,255,.72);border:1px solid rgba(0,0,0,.06);display:grid;place-items:center;overflow:hidden}.mini-icon img{width:25px;height:25px}.mini-state{font-size:10px;color:#66665f;font-weight:700}.feature-card h3{font-size:16px;margin:19px 0 5px}.feature-card p{font-size:12px;line-height:1.5;color:#62625d;margin:0}.mini-arrow{margin-top:auto;padding-top:13px;font-size:10.5px;color:#5f5f59;font-weight:650}
/* directory */
.directory-head{padding:12px 0 18px;display:grid;grid-template-columns:1fr 420px;gap:42px;align-items:end}.directory-head h2{font-size:26px;letter-spacing:-.04em;margin:0 0 5px}.directory-head p{margin:0;color:var(--muted);font-size:13px}.search{height:43px;border:1px solid var(--line2);background:#fff;border-radius:10px;display:flex;align-items:center;gap:10px;padding:0 12px}.search input{border:0;outline:0;background:transparent;width:100%;font-size:13px}.search span{font-size:15px;color:#8f8f88}.directory-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:0 0 15px;border-bottom:1px solid var(--line);margin-bottom:16px}.filters{display:flex;gap:5px}.filter{border:0;background:transparent;border-radius:8px;padding:8px 11px;font-size:12px;color:#777770;cursor:pointer}.filter:hover{background:#ededeb;color:#222}.filter.active{background:#e8e8e4;color:#171717;font-weight:740}.directory-meta{font-size:11px;color:#989891}
.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.project-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px 17px 14px;min-height:325px;display:flex;flex-direction:column;transition:.16s;cursor:pointer}.project-card:hover{border-color:#c8c8c1;box-shadow:var(--shadow);transform:translateY(-1px)}.pc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.pc-identity{display:flex;align-items:center;gap:11px;min-width:0}.appicon{width:42px;height:42px;border:1px solid #e5e5e0;border-radius:11px;background:#fafaf8;display:grid;place-items:center;overflow:hidden;flex:none}.appicon img{width:28px;height:28px;object-fit:contain}.appicon .fallback{font-size:11px;font-weight:850}.pc-name{min-width:0}.pc-name h3{font-size:17px;letter-spacing:-.025em;line-height:1.2;margin:0 0 4px}.pc-cat{font-size:11px;color:#8b8b86;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tagrow{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}.state{font-size:10px;font-weight:760;padding:5px 8px;border-radius:999px;white-space:nowrap}.state.a{color:var(--green);background:var(--green-bg)}.state.b{color:var(--amber);background:var(--amber-bg)}.license-tag{font-size:9.5px;color:#62625d;background:#f1f1ee;border-radius:999px;padding:5px 7px;white-space:nowrap}.pc-purpose{font-size:13.5px;color:#464642;margin:14px 0 13px;min-height:42px}.decision-block{border-top:1px solid #eeeeea;padding-top:12px}.decision-label{font-size:10px;font-weight:760;color:#85857e;letter-spacing:.02em;margin-bottom:7px}.decision-list{list-style:none;margin:0;padding:0;display:grid;gap:5px}.decision-list li{font-size:12px;color:#3d3d39;display:grid;grid-template-columns:10px 1fr;gap:7px}.decision-list li::before{content:'•';color:#659072}.caveat-line{font-size:11.5px;color:#725329;background:#faf6ed;border-radius:8px;padding:7px 9px;margin-top:10px}.pc-facts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #eeeeea;margin-top:auto;padding-top:12px}.pc-fact{min-width:0;padding-right:9px}.pc-fact+.pc-fact{padding-left:9px;border-left:1px solid #eeeeea}.pc-fact span{display:block;font-size:9.5px;color:#989891;margin-bottom:3px}.pc-fact b{display:block;font-size:11.5px;font-weight:690;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pc-actions{display:flex;align-items:center;justify-content:flex-end;padding-top:11px;margin-top:11px;border-top:1px solid #f1f1ed}.compare-check{font-size:10.5px;color:#7e7e78;display:flex;align-items:center;gap:5px;cursor:pointer}.compare-check input{accent-color:#111}.empty{grid-column:1/-1;text-align:center;padding:70px 0;color:#8b8b86;font-size:13px}
.pagination{display:flex;align-items:center;justify-content:center;gap:5px;margin:28px 0 58px}.pagebtn{min-width:34px;height:34px;border:1px solid var(--line);background:#fff;border-radius:8px;color:#66665f;font-size:11.5px;cursor:pointer}.pagebtn:hover{border-color:#bbb}.pagebtn.active{background:#171717;color:#fff;border-color:#171717}.pagebtn:disabled{opacity:.4;cursor:default}
/* detail — Raycast-inspired split product page */
.detail-shell{max-width:1160px;margin:0 auto;padding:0 28px 84px}.breadcrumb{padding:24px 0 18px;font-size:11.5px;color:#8b8b86}.breadcrumb button{border:0;background:none;padding:0;color:inherit;cursor:pointer}
.product-hero{padding:6px 0 25px}.product-hero-row{display:flex;justify-content:space-between;gap:44px;align-items:flex-start}.product-main{min-width:0}.product-id{display:flex;align-items:center;gap:15px}.detail-icon{width:64px;height:64px;border:1px solid var(--line);border-radius:16px;background:#fff;display:grid;place-items:center;overflow:hidden;box-shadow:0 1px 0 rgba(0,0,0,.02)}.detail-icon img{width:42px;height:42px;object-fit:contain}.detail-icon .fallback{font-size:14px;font-weight:850}.product-copy h1{font-size:42px;line-height:1.02;letter-spacing:-.055em;margin:0 0 5px}.product-cat{font-size:11.5px;color:#85857e}.product-purpose{font-size:17px;line-height:1.58;color:#42423e;max-width:760px;margin:18px 0 0}.hero-side{display:flex;align-items:flex-end;flex-direction:column;gap:13px;min-width:176px}.detail-state{font-size:11px;font-weight:760;padding:7px 10px;border-radius:999px;white-space:nowrap}.detail-state.a{color:var(--green);background:var(--green-bg)}.detail-state.b{color:var(--amber);background:var(--amber-bg)}.hero-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.btn{border:1px solid var(--line2);background:#fff;border-radius:9px;padding:8px 11px;font-size:11.5px;font-weight:690;cursor:pointer}.btn.primary{background:#171717;border-color:#171717;color:#fff}
.product-metrics{display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 0 36px}.metric{padding:14px 13px 13px;border-right:1px solid #ededE9;min-width:0}.metric:first-child{padding-left:0}.metric:last-child{border-right:0}.metric span{display:block;font-size:9.5px;color:#999991;margin-bottom:4px}.metric b{display:block;font-size:11.5px;font-weight:720;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metrics-note{font-size:9.5px;color:#9a9a94;margin:-26px 0 34px;text-align:right}
.detail-sticky-head{position:sticky;top:72px;z-index:48;background:rgba(247,247,245,.97);backdrop-filter:blur(18px);padding-bottom:2px;box-shadow:0 12px 24px rgba(247,247,245,.92)}
.detail-sticky-head .breadcrumb{padding-top:14px;padding-bottom:10px}.detail-sticky-head .product-hero{padding:2px 0 14px}.detail-sticky-head .detail-icon{width:54px;height:54px;border-radius:14px}.detail-sticky-head .detail-icon img{width:36px;height:36px}.detail-sticky-head .product-copy h1{font-size:35px}.detail-sticky-head .product-purpose{font-size:14px;line-height:1.5;margin-top:11px}.detail-sticky-head .hero-side{gap:9px}.detail-sticky-head .product-metrics{margin:0 0 8px}.detail-sticky-head .metric{padding-top:9px;padding-bottom:9px}.detail-sticky-head .metrics-note{margin:0 0 10px;font-size:9px}
.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:52px;align-items:start;padding-top:28px}.detail-main{min-width:0}.detail-aside{min-width:0}.detail-aside-inner{position:sticky;top:318px;display:grid;gap:14px}
.project-intro{padding:0 0 26px;margin:0 0 28px;border-bottom:1px solid var(--line)}.project-intro h2{font-size:20px;letter-spacing:-.03em;margin:0 0 15px;color:var(--ink);font-weight:700}.project-intro p{font-size:13.25px;line-height:1.78;color:#74746e;margin:0 0 9px;max-width:720px}.project-intro p:last-child{margin-bottom:0}.intro-meta{font-size:11.5px!important;color:#989890!important}
.decision-flow{padding:0 0 30px;margin:0 0 30px;border-bottom:1px solid var(--line)}.decision-flow-head{display:flex;align-items:baseline;gap:14px;margin:0 0 6px}.decision-flow-head span{font-size:10px;font-weight:760;letter-spacing:.08em;color:#9a9a93}.decision-flow-head p{font-size:11.5px;color:#85857e;margin:0}.decision-step{display:grid;grid-template-columns:48px minmax(0,1fr);gap:0;padding:8px 0 0}.step-rail{display:flex;flex-direction:column;align-items:center;min-height:100%}.step-rail span{width:26px;height:26px;border:1px solid #d9d9d3;border-radius:50%;display:grid;place-items:center;background:#fff;color:#777770;font-size:9.5px;font-weight:760}.step-rail i{width:1px;background:#ddddD7;flex:1;min-height:34px;margin-top:7px}.step-content{padding:0 0 24px}.decision-step.last .step-content{padding-bottom:2px}.step-content h2{font-size:17px;letter-spacing:-.025em;margin:2px 0 10px}.plain-list{list-style:none;margin:0;padding:0}.plain-list li{font-size:12.8px;line-height:1.68;padding:8px 0;border-top:1px solid #eeeeea;display:grid;grid-template-columns:14px 1fr;gap:7px}.plain-list.good li::before{content:'✓';color:var(--green);font-size:10px;font-weight:850;margin-top:4px}.plain-list.warn li::before{content:'!';color:var(--amber);font-size:11px;font-weight:850;margin-top:2px}.plain-list.cap li::before{content:'•';color:#76766f;font-size:11px;font-weight:850;margin-top:2px}.capability-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:26px}.capability-grid li:nth-child(-n+2){border-top:1px solid #eeeeea}.triad-install{margin-top:10px;border-top:1px solid #eeeeea;display:grid;grid-template-columns:1fr 1fr;column-gap:24px}.triad-install .install-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:8px 0;border-bottom:1px solid #eeeeea;font-size:11.5px}.triad-install .install-row span{color:#83837d}.triad-install .install-row b{font-weight:690;text-align:right}.dep-text{font-size:11.5px;line-height:1.65;color:#696963;margin:10px 0 0}
.editorial-section{padding:0 0 31px;margin:0 0 31px;border-bottom:1px solid var(--line)}.editorial-section:last-child{border-bottom:0}.editorial-section h2{font-size:20px;letter-spacing:-.03em;margin:0 0 15px}.section-lead{font-size:13px;color:#74746e;margin:-5px 0 16px}.fit-split{display:grid;grid-template-columns:1fr 1fr;gap:34px}.fit-text{padding-top:10px;border-top:2px solid #252522}.fit-text.no{border-top-color:#b9b9b3}.fit-text span{font-size:10px;color:#92928b;font-weight:760}.fit-text p{font-size:13.5px;color:#494945;margin:8px 0 0;line-height:1.7}.flow-list{counter-reset:s;list-style:none;margin:0;padding:0;border-top:1px solid #eeeeea}.flow-list li{counter-increment:s;display:grid;grid-template-columns:34px 1fr;gap:12px;padding:13px 0;border-bottom:1px solid #eeeeea;font-size:13.5px}.flow-list li::before{content:counter(s);width:23px;height:23px;border-radius:50%;background:#efefeb;color:#66665f;display:grid;place-items:center;font-size:10px}.related-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.related-card{border:1px solid var(--line);border-radius:12px;padding:14px 15px 13px;background:#fff;cursor:pointer;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease;min-height:132px;display:flex;flex-direction:column}.related-card:hover{border-color:#c9c9c2;transform:translateY(-1px);box-shadow:0 8px 22px rgba(0,0,0,.045)}.related-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.related-identity{display:flex;align-items:center;gap:11px;min-width:0}.related-name{font-size:13.5px;font-weight:760;letter-spacing:-.01em}.related-status{font-size:10px;color:#777770;white-space:nowrap}.related-desc{font-size:12.25px;line-height:1.62;color:#6f6f69;margin:9px 0 12px}.related-link{font-size:11px;color:#4f4f49;font-weight:700;margin-top:auto}.related-card:hover .related-link{text-decoration:underline}
.side-panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px 17px 15px;box-shadow:0 8px 28px rgba(22,22,22,.035)}.side-panel h2{font-size:15px;letter-spacing:-.02em;margin:0 0 12px}.side-panel .side-lead{font-size:11.5px;line-height:1.6;color:#74746e;margin:-4px 0 12px}.usability-list{border-top:1px solid #eeeeea}.u-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #eeeeea}.u-row span{font-size:11.5px;color:#6f6f69}.u-row strong{font-size:11.5px}.u-line{grid-column:1/-1;height:2px;background:#ecece8;position:relative;margin-top:-3px}.u-line i{display:block;height:100%;background:#62625d}.agent-quick{display:grid;gap:10px}.agent-quick p{font-size:11.8px;line-height:1.65;color:#55554f;margin:0}.agent-meta{display:grid;gap:0;border-top:1px solid #eeeeea}.agent-meta-row{display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px solid #eeeeea;font-size:11px}.agent-meta-row span{color:#85857e}.agent-meta-row b{font-weight:700;text-align:right}.agent-context-preview{background:#f8f8f5;border-radius:9px;padding:10px 11px;font:10px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;color:#5c5c56;max-height:116px;overflow:auto;white-space:pre-wrap;word-break:break-word}.agent-actions{display:flex;gap:7px}.agent-actions button{flex:1;border:1px solid var(--line2);background:#fff;border-radius:8px;padding:8px 9px;font-size:10.5px;font-weight:720;cursor:pointer}.agent-actions button.primary{background:#171717;border-color:#171717;color:#fff}
@media(max-width:960px){.detail-sticky-head{position:sticky;top:72px}.detail-layout{grid-template-columns:1fr;padding-top:22px}.detail-aside-inner{position:static;grid-template-columns:1fr 1fr}.product-hero-row{flex-direction:column;gap:14px}.hero-side{align-items:flex-start;min-width:0}.hero-actions{justify-content:flex-start}.product-metrics{grid-template-columns:repeat(3,1fr)}.metric:nth-child(3){border-right:0}.capability-grid{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.detail-shell{padding-left:16px;padding-right:16px}.detail-sticky-head{top:72px}.detail-sticky-head .product-copy h1{font-size:29px}.product-metrics{grid-template-columns:repeat(2,1fr)}.metric:nth-child(2n){border-right:0}.metric:first-child{padding-left:13px}.detail-aside-inner{grid-template-columns:1fr}.fit-split{grid-template-columns:1fr}.related-list{grid-template-columns:1fr}.product-purpose{font-size:14px}.decision-flow-head{display:block}.decision-flow-head p{margin-top:4px}.decision-step{grid-template-columns:38px 1fr}.capability-grid,.triad-install{grid-template-columns:1fr}}
/* compare + overlays */
.compare-dock{position:fixed;left:50%;bottom:20px;transform:translate(-50%,110px);z-index:80;display:flex;align-items:center;gap:12px;background:#171717;color:#fff;border-radius:999px;padding:9px 10px 9px 15px;box-shadow:0 14px 38px rgba(0,0,0,.22);transition:.22s;font-size:11.5px}.compare-dock.show{transform:translate(-50%,0)}.compare-dock .dock-status{color:#deded8}.compare-dock button{border:0;background:#fff;color:#171717;border-radius:999px;padding:8px 12px;font-size:10.5px;font-weight:760;cursor:pointer}.overlay{position:fixed;inset:0;background:rgba(20,20,20,.38);z-index:90;display:none;padding:32px;overflow:auto}.overlay.show{display:block}.modal{max-width:1080px;margin:0 auto;background:#fff;border-radius:16px;box-shadow:0 28px 80px rgba(0,0,0,.2)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}.modal-head strong{font-size:13px}.modal-head button{border:0;background:none;font-size:20px;cursor:pointer}.modal-body{padding:18px;overflow:auto}.ctable{width:100%;border-collapse:collapse;min-width:800px}.ctable th,.ctable td{text-align:left;padding:11px;border-bottom:1px solid #eeeeea;font-size:11.5px;vertical-align:top}.ctable th{background:#fafaf8;color:#777770;font-size:10.5px}.compare-empty{text-align:center;color:#888881;padding:60px}
.toast{position:fixed;right:24px;bottom:24px;background:#171717;color:#fff;border-radius:10px;padding:11px 13px;font-size:11.5px;z-index:100;opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}
footer{border-top:1px solid var(--line);padding:28px 0 34px;text-align:center;font-size:11px;color:#888881}footer strong{color:#353531}
@media(max-width:980px){.featured-row{grid-template-columns:repeat(2,1fr)}.directory-head{grid-template-columns:1fr}.submit-form{grid-template-columns:1fr 1fr}.submit-form button{grid-column:2}.fact-strip{grid-template-columns:repeat(3,1fr)}.fact-cell:nth-child(3){border-right:0}.deploy-grid,.usability-grid{grid-template-columns:repeat(2,1fr)}.steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.shell,.detail-shell{padding-left:16px;padding-right:16px}.nav-note{display:none}.brandtag{display:none}.brandname{font-size:18px}.brandmark svg,.brandmark img{width:28px;height:28px}.discover-hero{padding-top:54px}.hero-copy h1{font-size:36px}.submit-form{grid-template-columns:1fr;padding:6px}.submit-form input{border-right:0;border-bottom:1px solid #ecece8}.submit-form input:nth-of-type(3){border-bottom:0}.submit-form button{grid-column:auto;margin:5px 0 0}.submit-foot{flex-wrap:wrap;gap:7px 12px}.featured-row,.project-grid,.dual,.fit-grid,.related-grid,.caps{grid-template-columns:1fr}.directory-toolbar{align-items:flex-start;flex-direction:column}.dh-top{flex-direction:column}.fact-strip{grid-template-columns:repeat(2,1fr)}.fact-cell{border-bottom:1px solid var(--line)}.fact-cell:nth-child(2n){border-right:0}.deploy-grid,.usability-grid,.steps{grid-template-columns:1fr}.compare-dock{width:calc(100% - 32px);justify-content:space-between}.overlay{padding:14px}.pc-purpose{min-height:auto}}

/* Production bindings: same visual geometry, without inline styles or handlers. */
.u-line i.level-30{width:30%}.u-line i.level-58{width:58%}.u-line i.level-88{width:88%}.u-line i.level-unknown{width:0}
.u-line i[data-level="30"]{width:30%}.u-line i[data-level="58"]{width:58%}.u-line i[data-level="88"]{width:88%}.u-line i[data-level="unknown"]{width:0}
.brand{cursor:pointer}.mini-icon .fallback{font-size:10px;font-weight:850}
.compare-page{padding-top:32px;padding-bottom:84px}
@media(max-width:720px){.pagination{flex-wrap:wrap}}
@media(min-width:961px){.detail-aside{align-self:stretch}}

/* Source-backed detail paragraphs and a quieter inactive comparison control. */
.detail-sources{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:14px;font-size:11.5px}.detail-sources a{color:#62625c;text-decoration:underline;text-underline-offset:3px}.compare-dock{opacity:.62;box-shadow:0 5px 18px rgba(0,0,0,.08)}.compare-dock:hover,.compare-dock:focus-within,.compare-dock.engaged{opacity:1;box-shadow:0 14px 38px rgba(0,0,0,.22)}@media(prefers-reduced-motion:reduce){.compare-dock{transition:none}}

/* Approved desktop directory presentation. */

/* Keep the current header geometry and give its two links clear states. */
.primary-nav{display:flex;align-items:center;gap:8px;margin-left:24px}
.primary-nav a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 12px;border-radius:8px;font-size:12px;font-weight:690;color:var(--muted);transition:background-color .16s,color .16s}
.primary-nav a:hover{background:#ededeb;color:var(--ink)}
.primary-nav a[aria-current="page"]{background:var(--sage);color:var(--green)}
.primary-nav a:focus-visible,.project-card:focus-visible,.feature-card:focus-visible,.curator-rows>.curator-card a:focus-visible,.curator-tools :where(input,select):focus-visible{outline:2px solid var(--green);outline-offset:4px;border-radius:4px}

/* Three complete cards across the existing desktop container. */
.project-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.project-card{min-width:0;min-height:0;height:auto;max-height:none;overflow:visible}
.pc-name h3,.pc-name h3 a{overflow-wrap:anywhere}
.pc-cat{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.tagrow{justify-content:flex-start;max-width:100%;gap:5px}
.license-tag{white-space:normal;overflow-wrap:anywhere}
.pc-purpose,.decision-list li,.caveat-line{overflow-wrap:anywhere}
.pc-fact b{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}

/* Fixed preview budgets preserve a stable rhythm across every project row. */
.pc-head{height:77px;min-height:77px;flex:none;display:grid;grid-template-columns:minmax(0,1fr) max-content;grid-template-rows:minmax(0,1fr) 17.05px;column-gap:8px;row-gap:2px;align-items:start}
.pc-identity{grid-column:1;grid-row:1;width:auto;height:100%;min-height:0;align-items:center}
.pc-name h3{max-height:none;line-height:18.7px;margin:0}
.pc-head .tagrow{grid-column:2;grid-row:1;align-self:start;justify-self:end;justify-content:flex-end;max-width:none}
.pc-head>.pc-cat{grid-column:1/-1;grid-row:2;line-height:17.05px}
.preview-copy{display:block;white-space:normal;overflow:hidden;overflow-wrap:anywhere;line-height:var(--preview-line-height);height:calc(var(--preview-lines)*var(--preview-line-height))}
.preview-copy[data-max-lines="1"]{--preview-lines:1}
.preview-copy[data-max-lines="2"]{--preview-lines:2}
.preview-copy[data-max-lines="3"]{--preview-lines:3}
.preview-tail{white-space:nowrap;overflow-wrap:normal;word-break:normal}
.pc-purpose{--preview-line-height:20.925px;min-height:62.775px;flex:none;margin-top:14px;margin-bottom:13px}
.decision-list{gap:5px}
.decision-list li{grid-template-columns:10px minmax(0,1fr);align-items:start;line-height:19.2px}
.decision-list .preview-copy{--preview-line-height:19.2px}
.caveat-line{line-height:17.825px;flex:none}
.caveat-line .preview-copy{--preview-line-height:17.825px}
.pc-facts{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));row-gap:0;margin-top:12px}
.pc-fact:last-child{grid-column:auto;margin:0;padding:0 0 0 9px;border-top:0;border-left:1px solid var(--line)}
.pc-actions{justify-content:space-between;align-items:flex-end;gap:14px}
.pc-footer-license{min-width:0;flex:1}
.license-caption{display:block;font-size:9.5px;line-height:14.725px;color:var(--muted);margin-bottom:3px}
.pc-footer-license b{--preview-line-height:17.25px;font-size:11.5px;font-weight:690}
.compare-check{flex:none;min-height:18px;align-self:flex-end}
.featured-purpose{--preview-line-height:18.6px;flex:none}
@media(max-width:720px){.pc-purpose{min-height:62.775px}.pc-head{height:77px}.pc-footer-license{min-width:0}}

/* Three, two, and one columns retain the existing shell width. */
@media(max-width:980px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.primary-nav{gap:2px;margin-left:12px}.primary-nav a{padding:8px 10px}.project-grid{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.primary-nav a,.project-card,.feature-card,.related-card,.search,.compare-dock,.toast{transition:none}.project-card:hover,.feature-card:hover,.related-card:hover{transform:none}}

/* Stable three-line introduction and two primary destination links. */
.detail-presentation .product-main{flex:1 1 0;min-width:0}
.detail-presentation .product-purpose{--preview-line-height:21px;--preview-lines:3;font-size:14px;line-height:21px;height:63px;min-height:63px;max-height:63px;overflow:hidden}
.detail-presentation .hero-side{width:276px;min-width:276px;flex:0 0 276px}
.detail-presentation #detailActions{width:100%;flex-wrap:nowrap}
.detail-presentation #detailActions .btn{flex:1 1 0;min-width:0;text-align:center;white-space:nowrap}

/* The existing native comparison button becomes a quiet sidebar action. */
.detail-compare-actions{margin-top:14px;padding-top:13px;border-top:1px solid var(--line)}
.detail-compare-status{margin:0 0 6px;font-size:11.5px;line-height:1.6;color:var(--muted)}
.detail-compare-status[data-selected="true"]{color:var(--accent)}
.detail-compare-button{display:inline-block;min-height:28px;padding:4px 0;border:0;border-radius:3px;background:transparent;color:var(--accent);font:inherit;font-size:12px;font-weight:690;line-height:1.5;text-align:left;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.detail-compare-button:hover{color:var(--accent-hover)}
.detail-compare-button:focus-visible{outline:2px solid var(--accent);outline-offset:4px}

@media(max-width:960px){
 .detail-presentation .product-main{width:100%;flex:none}
 .detail-presentation .hero-side{width:min(100%,276px);min-width:0;flex:0 0 auto}
}

/* Approved single-accent color system, shared across public pages. */
/* Preserve layout, type, logo, spacing, and information architecture. */
:root{
 color-scheme:light;
 --bg:#f5f6f7;--surface:#fcfcfd;--ink:#262a30;
 --body:#42474f;--muted:#5a616d;--faint:#646b76;
 --line:#d9dde3;--line2:#c9cfd7;--control-line:#858f9d;
 --accent:#34528a;--accent-hover:#29436f;--accent-soft:#e8edf5;
 --surface-alt:#eef0f3;--graphite:#30343a;--graphite-raised:#434851;
 --on-dark:#f4f5f7;--on-dark-muted:#d3d7dd;--dark-line:#565d66;
 /* Legacy semantic tokens resolve into the same single-accent palette. */
 --green:var(--accent);--green-bg:var(--accent-soft);
 --amber:#4e5866;--amber-bg:#eceff2;
 --lav:var(--surface);--blue:var(--surface);--sage:var(--surface-alt);--sand:var(--surface);
 --black:var(--graphite);
 --shadow:0 12px 34px rgba(51,59,69,.075);
}
body{background:var(--bg);color:var(--ink)}
::selection{background:#d8e2f1;color:var(--ink)}

/* The existing hero texture uses the same quiet blue-gray palette. */
.topbar{background:rgba(245,246,247,.96);border-bottom-color:var(--line)}
.brand{color:var(--ink)}
.brandtag,.nav-note{color:var(--muted)}
.primary-nav a{color:var(--muted)}
.primary-nav a:hover{background:var(--surface-alt);color:var(--ink)}
.primary-nav a[aria-current="page"],.primary-nav a[aria-current="page"]:hover{background:var(--accent-soft);color:var(--accent)}
.discover-hero::before{
 background-image:linear-gradient(rgba(90,97,109,.065) 1px,transparent 1px),linear-gradient(90deg,rgba(90,97,109,.065) 1px,transparent 1px),radial-gradient(ellipse at 50% 12%,rgba(52,82,138,.075),rgba(52,82,138,.028) 42%,transparent 78%);
 background-size:32px 32px,32px 32px,100% 100%;
 background-position:center top;
}
.discover-hero::after{background:linear-gradient(90deg,transparent,var(--line) 16%,var(--line) 84%,transparent)}
.hero-copy h1,.hero-copy strong{color:var(--ink)}
.hero-copy p{color:var(--muted)}

/* Form surfaces, label contrast, and the same blue interaction feedback. */
.submit-head strong{color:var(--body)}
.submit-head span,.submit-foot,.submit-head span::before{color:var(--muted)}
.submit-foot i{background:var(--control-line)}
.submit-form{background:var(--surface);border-color:var(--line2);box-shadow:0 10px 30px rgba(51,59,69,.055),0 1px 1px rgba(51,59,69,.035)}
.submit-form input{color:var(--ink);border-color:var(--line);background:transparent}
.submit-form input:focus{background:var(--surface-alt);box-shadow:inset 0 0 0 1px var(--accent)}
.submit-form input::placeholder,.search input::placeholder,.curator-search input::placeholder{color:var(--muted);opacity:1}
.submit-form button{background:var(--accent);color:var(--surface);box-shadow:inset 0 0 0 1px rgba(252,252,253,.1)}
.submit-form button:hover{background:var(--accent-hover)}
.search,.curator-search,.curator-sort select{background:var(--surface);border-color:var(--control-line);color:var(--ink)}
.search input,.curator-search input{color:var(--ink)}
.search span,.curator-sort label,.curator-result-count{color:var(--muted)}
.search:focus-within,.curator-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #dfe7f3}
.filter{color:var(--muted);background:transparent}
.filter:hover{background:var(--surface-alt);color:var(--ink)}
.filter.active,.filter.active:hover{background:var(--accent-soft);color:var(--accent)}
.directory-head p,.directory-meta{color:var(--muted)}
.directory-toolbar{border-color:var(--line)}
.pagebtn{background:var(--surface);border-color:var(--line2);color:var(--muted)}
.pagebtn:hover{border-color:var(--control-line);background:var(--surface-alt)}
.pagebtn.active{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.pagebtn.active:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.pagebtn:disabled{opacity:1;background:var(--surface-alt);border-color:var(--line2);color:var(--muted)}

/* All featured cards use the same nearly white surface and a neutral edge. */
.featured-row .feature-card,.featured-row .feature-card:nth-child(n){background:var(--surface);background-image:none;border-color:var(--line);box-shadow:none}
.featured-row .feature-card:hover{background:var(--surface);border-color:var(--control-line);box-shadow:var(--shadow)}
.feature-card h3,.pc-name h3,.related-name{color:var(--ink)}
.feature-card p{color:var(--muted)}
.mini-icon{background:var(--surface-alt);border-color:var(--line)}
.mini-state,.mini-arrow{color:var(--muted)}
.project-card,.related-card,.side-panel{background:var(--surface);border-color:var(--line)}
.project-card:hover,.related-card:hover{border-color:var(--control-line);box-shadow:var(--shadow)}
.project-card:hover .pc-name h3 a,.feature-card:hover h3 a,.related-card:hover .related-name{color:var(--accent)}
.appicon,.detail-icon{background:var(--surface-alt);border-color:var(--line)}
.detail-icon{box-shadow:0 1px 0 rgba(51,59,69,.045)}
.pc-cat,.decision-label,.pc-fact span,.compare-check{color:var(--muted)}
.pc-purpose,.decision-list li{color:var(--body)}
.decision-list li::before{color:var(--accent)}
.decision-block,.pc-facts,.pc-fact+.pc-fact,.pc-fact:last-child,.pc-actions{border-color:var(--line)}
.pc-fact b{color:var(--ink)}
.license-tag{background:var(--surface-alt);color:var(--muted)}
.state.a,.detail-state.a{background:var(--accent-soft);color:#394e71}
.state.b,.detail-state.b{background:#eceff2;color:#4e5866}
.caveat-line{background:var(--surface-alt);color:var(--body)}
.compare-check input{accent-color:var(--accent)}
.empty,.compare-empty,.curator-empty{color:var(--muted)}

/* Long-form detail pages inherit the same reading hierarchy and feedback. */
.breadcrumb,.product-cat,.metric span,.metrics-note{color:var(--muted)}
.product-purpose,.plain-list li,.fit-text p,.flow-list li{color:var(--body)}
.metric b,.side-panel h2,.u-row strong,.agent-meta-row b{color:var(--ink)}
.product-metrics,.metric,.project-intro,.decision-flow,.editorial-section{border-color:var(--line)}
.detail-sticky-head{background:rgba(245,246,247,.97);box-shadow:0 12px 24px rgba(245,246,247,.92)}
.project-intro p,.section-lead,.decision-flow-head span,.decision-flow-head p,.dep-text{color:var(--muted)}
.intro-meta{color:var(--muted)!important}
.detail-sources a{color:var(--accent)}
.step-rail span{background:var(--surface);border-color:var(--line2);color:var(--muted)}
.step-rail i{background:var(--line2)}
.plain-list li,.capability-grid li:nth-child(-n+2),.triad-install,.triad-install .install-row{border-color:var(--line)}
.plain-list.good li::before{color:var(--accent)}
.plain-list.warn li::before,.plain-list.cap li::before{color:var(--muted)}
.triad-install .install-row span,.fit-text span,.related-status,.related-desc{color:var(--muted)}
.fit-text{border-top-color:var(--ink)}
.fit-text.no{border-top-color:var(--line2)}
.flow-list,.flow-list li{border-color:var(--line)}
.flow-list li::before{background:var(--surface-alt);color:var(--muted)}
.related-link{color:var(--accent)}
.side-panel{box-shadow:0 8px 28px rgba(51,59,69,.04)}
.side-panel .side-lead,.u-row span,.agent-quick p,.agent-meta-row span{color:var(--muted)}
.usability-list,.u-row,.agent-meta,.agent-meta-row{border-color:var(--line)}
.u-line{background:#dfe3e9}
.u-line i{background:var(--control-line)}
.agent-context-preview{background:var(--surface-alt);color:var(--body)}
.btn,.agent-actions button{background:var(--surface);border-color:var(--line2);color:var(--body)}
.btn:hover,.agent-actions button:hover{background:var(--surface-alt);border-color:var(--control-line);color:var(--ink)}
.btn.primary,.agent-actions button.primary{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.btn.primary:hover,.agent-actions button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--surface)}

/* Comparison remains readable in both the dark dock and light table. */
.compare-dock,.toast{background:var(--graphite);color:var(--on-dark);box-shadow:0 12px 34px rgba(51,59,69,.2)}
.compare-dock{opacity:1}
.compare-dock:hover,.compare-dock:focus-within,.compare-dock.engaged{opacity:1;box-shadow:0 14px 38px rgba(51,59,69,.2)}
.compare-dock .dock-status{color:var(--on-dark-muted)}
.compare-dock button{background:var(--surface);color:var(--graphite)}
.compare-dock button:hover{background:#e3e8f0;color:var(--accent)}
.overlay{background:rgba(38,42,48,.4)}
.modal{background:var(--surface);box-shadow:0 28px 80px rgba(51,59,69,.22)}
.modal-head{border-color:var(--line)}
.modal-head strong,.modal-head button{color:var(--ink)}
.modal-head button:hover{background:var(--surface-alt);color:var(--accent)}
.ctable th,.ctable td{border-color:var(--line);color:var(--body)}
.ctable th{background:var(--surface-alt);color:var(--muted)}
.ctable th a{color:var(--accent)}
footer{border-color:var(--line);color:var(--muted)}
footer strong{color:var(--body)}

/* Solid focus rings, never a colored glow. Existing dimensions stay intact. */
:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.primary-nav a:focus-visible,.project-card:focus-visible,.feature-card:focus-visible,.curator-rows>.curator-card a:focus-visible,.curator-tools :where(input,select):focus-visible,.curator-card a:focus-visible,.curator-text-link:focus-visible,.curator-provenance a:focus-visible,.curator-more-provenance summary:focus-visible{outline-color:var(--accent)}
.submit-form input:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.search input:focus-visible,.curator-search input:focus-visible{outline:0}
.compare-dock button:focus-visible,.curator-row-profile a:focus-visible,.curator-card-identity a:focus-visible{outline-color:#aac0e5}

/* Project logos sit on pure white; curator portrait surfaces stay unchanged. */
.appicon,.mini-icon,.detail-icon,.curator-mini-project .mini-icon,.curator-row-project .mini-icon,.related-card .appicon,.related-card .mini-icon{background:#fff}

/* The unavailable submission preview keeps the original visual scale. */
.submit-form[data-submission-enabled="false"]{grid-template-columns:1fr 1.55fr auto}
.submit-form[data-submission-enabled="false"] :disabled{opacity:1;cursor:not-allowed;-webkit-text-fill-color:currentColor}
.submit-form[data-submission-enabled="false"] button:disabled:hover{background:var(--accent)}
@media(max-width:720px){.submit-form[data-submission-enabled="false"]{grid-template-columns:1fr}.submit-form[data-submission-enabled="false"] input:last-of-type{border-bottom:0}}

/* Keyboard entry and bounded comparison surfaces preserve their existing behavior. */
.skip-link{position:fixed;left:20px;top:12px;z-index:120;padding:10px 16px;border:2px solid var(--accent);border-radius:8px;background:var(--surface);color:var(--ink);font-size:14px;font-weight:700;transform:translateY(-150%)}
.skip-link:focus{transform:none}
.compare-dock{max-width:calc(100vw - 48px);gap:14px;border-radius:14px;padding:12px 14px;opacity:1;font-size:13px;transform:translate(-50%,calc(100% + 24px))}
.compare-dock[hidden]{display:none}
.compare-dock .dock-status{white-space:nowrap}
.compare-dock button{font-size:12px;min-height:38px;padding:9px 14px}
.dock-projects{display:flex;flex-wrap:wrap;gap:6px;min-width:0;max-width:620px}
.dock-project{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:4px 5px 4px 10px;background:var(--graphite-raised);border:1px solid var(--dark-line);border-radius:8px;color:var(--on-dark);font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.compare-dock .dock-remove{display:inline-flex;align-items:center;justify-content:center;flex:none;min-height:28px;width:28px;padding:0;border-radius:5px;background:var(--dark-line);color:var(--on-dark);font-size:17px;line-height:1}
.compare-dock .dock-remove:hover{background:#67717f;color:var(--on-dark)}
.overlay{overflow:hidden}
.overlay.show{display:flex;align-items:center;justify-content:center}
.overlay .modal{display:flex;flex-direction:column;width:100%;max-height:calc(100dvh - 64px);margin:0}
.modal-head{flex:none;gap:20px}
.modal-head button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:7px}
.modal-body{min-height:0;overscroll-behavior:contain;scrollbar-gutter:stable}
.ctable{border-collapse:separate;border-spacing:0;table-layout:fixed}
.ctable th,.ctable td{overflow-wrap:anywhere;background:var(--surface)}
.ctable th{background:var(--surface-alt)}
.ctable thead th{position:sticky;top:0;z-index:2}
.ctable th:first-child,.ctable td:first-child{position:sticky;left:0;width:180px;z-index:1;background:var(--surface-alt);border-right:1px solid var(--line2);font-weight:650}
.ctable tbody th[scope="row"]{position:sticky;top:auto;left:0;z-index:1;background:var(--surface-alt)}
.ctable thead th:first-child{z-index:3}
.ctable th a{text-decoration:underline;text-underline-offset:3px}
.compare-column-remove{display:block;margin-top:6px;border:1px solid var(--line2);border-radius:6px;padding:6px 8px;background:var(--surface);color:var(--muted);font-size:12px;line-height:1.4;cursor:pointer;transition:background-color .15s,border-color .15s}
.compare-column-remove:hover{background:var(--surface-alt);border-color:var(--control-line);color:var(--ink)}
.compare-page .modal-body{max-height:calc(100dvh - 300px)}
.compare-page-title{font-size:25px;line-height:1.25;letter-spacing:-.035em;margin:0}
@media(max-width:980px){.compare-dock{gap:10px;flex-wrap:wrap;width:min(720px,calc(100vw - 32px))}.dock-projects{order:3;flex-basis:100%;max-width:none}}
@media(max-width:720px){.compare-dock{max-width:calc(100vw - 24px);width:calc(100vw - 24px);bottom:12px;padding:10px 12px}.compare-dock .dock-status{font-size:12px}.compare-dock button{padding:8px 12px}.overlay{padding:12px}.overlay .modal{max-height:calc(100dvh - 24px)}.modal-head{padding:12px 14px}.ctable th:first-child,.ctable td:first-child{width:140px}.compare-page .modal-head{align-items:flex-start;flex-wrap:wrap;gap:12px}.compare-page-title{font-size:22px}.compare-page .modal-body{max-height:calc(100dvh - 260px)}}
