:root{--bg: #0c0b09;--bg-soft: #15130f;--panel: #1b1814;--panel-2: #221e18;--line: #34302a;--ink: #f3ede2;--ink-dim: #b3aa9a;--ink-faint: #7d7567;--accent: #d8b572;--accent-2: #8fb3a4;--radius: 16px;--maxw: 1320px;--font-display: "Bricolage Grotesque", system-ui, sans-serif;--font-body: "Source Serif 4", Georgia, serif;--font-mono: "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(1200px 600px at 85% -10%,rgba(216,181,114,.08),transparent 60%),radial-gradient(900px 500px at -10% 20%,rgba(143,179,164,.06),transparent 55%),var(--bg);color:var(--ink);font-family:var(--font-body);line-height:1.55;-webkit-font-smoothing:antialiased}a{color:inherit}.skip-link{position:absolute;left:-999px;top:0;background:var(--accent);color:#1a1407;padding:.6rem 1rem;z-index:100;font-family:var(--font-display)}.skip-link:focus{left:1rem;top:1rem}.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:.9rem clamp(1rem,4vw,3rem);background:#0c0b09d1;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:.65rem;font-family:var(--font-display);font-weight:700;letter-spacing:-.01em;text-decoration:none;font-size:1.02rem}.brand-mark{width:14px;height:14px;border-radius:4px;background:linear-gradient(135deg,var(--accent),var(--accent-2));box-shadow:0 0 0 4px #d8b5721f}.nav-links{display:flex;gap:clamp(.8rem,2vw,1.8rem);font-family:var(--font-display);font-size:.82rem;font-weight:600}.nav-links a{text-decoration:none;color:var(--ink-dim);transition:color .2s}.nav-links a:hover{color:var(--accent)}@media(max-width:720px){.nav-links a:not(:last-child){display:none}}.hero{max-width:var(--maxw);margin:0 auto;padding:clamp(3rem,8vw,6rem) clamp(1rem,4vw,3rem) 1.5rem}.eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.28em;font-size:.7rem;color:var(--accent);margin:0 0 1rem}.hero h1{font-family:var(--font-display);font-weight:800;letter-spacing:-.02em;line-height:1.02;font-size:clamp(2.2rem,6vw,4.2rem);margin:0 0 1.2rem;max-width:18ch}.hero-lede{max-width:60ch;color:var(--ink-dim);font-size:clamp(1rem,1.4vw,1.2rem);margin:0 0 2rem}.hero-stats{display:flex;flex-wrap:wrap;gap:1rem}.hero-stat{border:1px solid var(--line);border-radius:12px;padding:.85rem 1.2rem;background:var(--panel);min-width:120px}.hero-stat strong{display:block;font-family:var(--font-display);font-size:1.7rem;line-height:1;color:var(--accent)}.hero-stat span{font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint)}.how{max-width:var(--maxw);margin:0 auto;padding:1.5rem clamp(1rem,4vw,3rem) 1rem}.how-title{font-family:var(--font-display);font-size:.8rem;text-transform:uppercase;letter-spacing:.2em;color:var(--ink-faint);margin:0 0 1rem}.how-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;list-style:none;padding:0;margin:0;counter-reset:step}.how-steps li{counter-increment:step;position:relative;padding:1rem 1rem 1rem 2.6rem;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink-dim);font-size:.92rem}.how-steps li:before{content:counter(step);position:absolute;left:.9rem;top:.9rem;font-family:var(--font-mono);color:var(--accent);font-weight:600}.how-steps strong{color:var(--ink)}.layout{max-width:var(--maxw);margin:1.5rem auto 4rem;padding:0 clamp(1rem,4vw,3rem);display:grid;grid-template-columns:1fr 340px;gap:2rem;align-items:start}@media(max-width:980px){.layout{grid-template-columns:1fr}}.catalog-toolbar{position:sticky;top:64px;z-index:20;background:#0c0b09e6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:.75rem 0 1rem;margin-bottom:.5rem}.search{width:100%;padding:.8rem 1rem;border-radius:12px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-family:var(--font-body);font-size:1rem}.search:focus{outline:2px solid var(--accent);border-color:var(--accent)}.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.chip{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.05em;padding:.4rem .8rem;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--ink-dim);cursor:pointer;transition:all .18s}.chip:hover{color:var(--ink);border-color:var(--ink-faint)}.chip[aria-pressed=true]{background:var(--accent);color:#1a1407;border-color:var(--accent);font-weight:600}.category{margin-bottom:2.5rem;scroll-margin-top:130px}.category-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:.7rem;margin-bottom:1.2rem}.category-title{font-family:var(--font-display);font-weight:700;font-size:clamp(1.3rem,2.5vw,1.8rem);letter-spacing:-.01em;margin:0;display:flex;align-items:center;gap:.6rem}.category-title .dot{width:10px;height:10px;border-radius:3px;background:var(--cat-accent, var(--accent))}.category-desc{color:var(--ink-dim);font-size:.92rem;margin:.2rem 0 0;max-width:60ch}.category-count{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-faint);letter-spacing:.1em;white-space:nowrap}.versions{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.9rem}.vcard{position:relative;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--panel-2),var(--panel));padding:0;overflow:hidden;transition:border-color .18s,transform .18s,box-shadow .18s}.vcard:hover{border-color:var(--v-accent, var(--accent));transform:translateY(-2px);box-shadow:0 12px 30px -18px #000c}.vcard.is-selected{border-color:var(--v-accent, var(--accent));box-shadow:0 0 0 1px var(--v-accent, var(--accent)) inset}.vcard-swatch{height:56px;background:linear-gradient(135deg,var(--v-accent, var(--accent)) 0%,transparent 75%),repeating-linear-gradient(45deg,rgba(255,255,255,.04) 0 8px,transparent 8px 16px);display:flex;align-items:flex-end;justify-content:space-between;padding:.55rem .7rem}.vcard-type{font-family:var(--font-mono);font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;color:#ffffffeb;background:#0006;padding:.15rem .45rem;border-radius:6px}.vcard-origin{font-family:var(--font-mono);font-size:.62rem;color:#0009;background:#ffffffbf;padding:.15rem .45rem;border-radius:6px;font-weight:600}.vcard-body{padding:.7rem .8rem .8rem}.vcard-name{font-family:var(--font-display);font-weight:600;font-size:.98rem;margin:0 0 .15rem}.vcard-label{font-size:.78rem;color:var(--ink-dim);margin:0 0 .5rem}.vcard-style{font-family:var(--font-mono);font-size:.66rem;color:var(--ink-faint);letter-spacing:.04em;margin:0 0 .7rem}.vcard-foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.vcard-check{display:inline-flex;align-items:center;gap:.45rem;cursor:pointer;font-family:var(--font-display);font-size:.8rem;font-weight:600;-webkit-user-select:none;user-select:none}.vcard-check input{appearance:none;width:18px;height:18px;border:1.5px solid var(--ink-faint);border-radius:5px;display:grid;place-content:center;cursor:pointer;transition:all .15s}.vcard-check input:before{content:"";width:10px;height:10px;transform:scale(0);transition:transform .12s;background:#1a1407;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%)}.vcard-check input:checked{background:var(--v-accent, var(--accent));border-color:var(--v-accent, var(--accent))}.vcard-check input:checked:before{transform:scale(1)}.vcard-check input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.vcard-open{font-family:var(--font-mono);font-size:.68rem;text-decoration:none;color:var(--ink-dim);border:1px solid var(--line);padding:.25rem .5rem;border-radius:7px;transition:all .15s}.vcard-open:hover{color:var(--ink);border-color:var(--v-accent, var(--accent))}.empty{color:var(--ink-faint);font-family:var(--font-mono);font-size:.82rem;padding:2rem 0;text-align:center}.builder{position:sticky;top:80px}@media(max-width:980px){.builder{position:static}}.builder-inner{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg,var(--panel-2),var(--panel));padding:1.1rem 1.1rem 1.3rem;max-height:calc(100vh - 100px);overflow:auto}.builder-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}.builder-head h2{font-family:var(--font-display);font-size:1.2rem;margin:0}.builder-count{font-family:var(--font-mono);font-size:.95rem;background:var(--accent);color:#1a1407;padding:.1rem .6rem;border-radius:999px;font-weight:700}.builder-hint{color:var(--ink-faint);font-size:.85rem;margin:.3rem 0 1rem}.builder-list{list-style:none;padding:0;margin:0 0 1rem;display:flex;flex-direction:column;gap:.4rem}.builder-item{display:flex;align-items:center;gap:.6rem;border:1px solid var(--line);border-left:3px solid var(--bi-accent, var(--accent));border-radius:9px;padding:.5rem .6rem;background:var(--bg-soft)}.builder-item .bi-type{font-family:var(--font-mono);font-size:.62rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint)}.builder-item .bi-name{font-family:var(--font-display);font-weight:600;font-size:.84rem;flex:1;min-width:0}.builder-item .bi-origin{font-family:var(--font-mono);font-size:.66rem;color:var(--ink-dim)}.builder-item button{appearance:none;border:none;background:none;color:var(--ink-faint);cursor:pointer;font-size:1.1rem;line-height:1;padding:0 .2rem}.builder-item button:hover{color:#e0796b}.builder-actions{display:grid;gap:.5rem}.btn{appearance:none;font-family:var(--font-display);font-weight:600;font-size:.86rem;padding:.6rem .9rem;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;transition:all .15s}.btn:hover:not(:disabled){border-color:var(--ink-faint)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#1a1407;border-color:var(--accent)}.btn-primary:hover:not(:disabled){filter:brightness(1.06)}.btn-ghost{background:transparent;color:var(--ink-dim)}.builder-sources{display:block;margin-top:.9rem;text-align:center;font-family:var(--font-mono);font-size:.74rem;color:var(--accent-2);text-decoration:none}.builder-sources:hover{text-decoration:underline}.page-footer{border-top:1px solid var(--line);padding:2rem clamp(1rem,4vw,3rem);text-align:center;color:var(--ink-faint);font-family:var(--font-mono);font-size:.74rem;letter-spacing:.05em}.vcard-name,.vcard-label{cursor:zoom-in}.vcard-name{position:relative}.vcard-name:after{content:"⤢";font-family:var(--font-mono);font-size:.7rem;color:var(--v-accent, var(--accent));margin-left:.4rem;opacity:0;transition:opacity .15s}.vcard:hover .vcard-name:after{opacity:.8}.modal-backdrop{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:clamp(.8rem,3vw,2.5rem);background:#060504bd;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .2s ease}.modal-backdrop.open{opacity:1;pointer-events:auto}.modal{width:min(1140px,100%);height:min(760px,88vh);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--m-accent, var(--accent));border-radius:16px;overflow:hidden;box-shadow:0 40px 120px -30px #000000e6;transform:translateY(10px) scale(.99);transition:transform .22s ease}.modal-backdrop.open .modal{transform:none}.modal-head{display:flex;align-items:center;gap:.9rem;padding:.75rem 1rem;border-bottom:1px solid var(--line);background:var(--panel-2)}.modal-dot{width:11px;height:11px;border-radius:3px;background:var(--m-accent, var(--accent));flex:none}.modal-titles{min-width:0;flex:1}.modal-title{font-family:var(--font-display);font-weight:700;font-size:1rem;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-sub{font-family:var(--font-mono);font-size:.68rem;color:var(--ink-faint);letter-spacing:.04em;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-open{font-family:var(--font-mono);font-size:.72rem;text-decoration:none;color:var(--ink);border:1px solid var(--line);padding:.4rem .7rem;border-radius:8px;white-space:nowrap;transition:all .15s}.modal-open:hover{border-color:var(--m-accent, var(--accent))}.modal-close{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--ink);width:34px;height:34px;border-radius:8px;font-size:1.2rem;line-height:1;cursor:pointer;flex:none;transition:all .15s}.modal-close:hover{border-color:#e0796b;color:#e0796b}.modal-stage{position:relative;flex:1;background:#0a0908;overflow:hidden}.modal-frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#fff;opacity:0;transition:opacity .3s ease}.modal-frame.loaded{opacity:1}.modal-loading{position:absolute;inset:0;display:grid;place-content:center;gap:.8rem;justify-items:center;color:var(--ink-dim);font-family:var(--font-mono);font-size:.78rem}.modal-spinner{width:30px;height:30px;border:3px solid var(--line);border-top-color:var(--m-accent, var(--accent));border-radius:50%;animation:spin .8s linear infinite}.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.55rem 1rem;border-top:1px solid var(--line);background:var(--panel-2);font-family:var(--font-mono);font-size:.68rem;color:var(--ink-faint)}.modal-foot .modal-add{appearance:none;font-family:var(--font-display);font-weight:600;font-size:.8rem;padding:.45rem .9rem;border-radius:8px;border:1px solid var(--m-accent, var(--accent));background:var(--m-accent, var(--accent));color:#1a1407;cursor:pointer}.modal-foot .modal-add.is-in{background:transparent;color:var(--ink)}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.modal,.modal-backdrop,.modal-frame{transition:none}.modal-spinner{animation:none}}.toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%) translateY(20px);background:var(--accent);color:#1a1407;font-family:var(--font-display);font-weight:600;font-size:.88rem;padding:.7rem 1.2rem;border-radius:10px;box-shadow:0 14px 40px -16px #000000b3;opacity:0;transition:opacity .25s,transform .25s;z-index:100}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}.vcard,.toast,.vcard-check input:before{transition:none}}
