.projects-page{--accent:var(--brand);--accent-soft:color-mix(in oklab, var(--brand) 65%, #fff);--ink:var(--foreground);--ink-2:var(--secondary-foreground);--paper:var(--card);--bg:var(--background);--line:var(--border);--line-strong:color-mix(in oklab, var(--foreground) 22%, transparent);--muted:var(--muted-foreground);--muted-2:color-mix(in oklab, var(--muted-foreground) 50%, transparent);--surface:var(--secondary);--good:#31aa40;--warn:#f29520;--r-lg:12px;--r-md:8px;--sans:var(--kc-sans);--mono:var(--kc-mono)}@supports (color:lab(0% 0 0)){.projects-page{--good:lab(61.5358% -50.6384 43.17);--warn:lab(70.485% 30.103 69.4647)}}.pgrid-sec{margin-bottom:80px}.pgrid-toolbar{border-bottom:1px dashed var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding-bottom:16px;display:flex}.pgrid-filters{flex-wrap:wrap;gap:6px;display:flex}.pgrid-filter{border:1px solid var(--line);font-family:var(--mono);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:8px;padding:7px 12px 7px 10px;font-size:12px;transition:border-color .12s,color .12s,background .12s;display:inline-flex}.pgrid-filter:hover{border-color:var(--ink)}.pgrid-filter.on{border-color:var(--ink);background:var(--ink);color:var(--bg)}.pgrid-dot{background:var(--muted);border-radius:50%;width:6px;height:6px}.pgrid-dot-all{background:var(--ink)}.pgrid-dot-live{background:var(--good)}.pgrid-dot-wip{background:var(--warn)}.pgrid-dot-archived{background:var(--muted-2)}.pgrid-filter.on .pgrid-dot-all{background:var(--bg)}.pgrid-count{font-family:var(--mono);color:var(--muted);border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:1px 6px;font-size:10px}.pgrid-filter.on .pgrid-count{color:var(--bg);border-color:color-mix(in oklab, var(--bg) 35%, transparent);background:0 0}.pgrid-legend{color:var(--muted);letter-spacing:.04em;font-size:11px;font-family:var(--mono)}.pgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}@media (max-width:1000px){.pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.pgrid{grid-template-columns:1fr}}.pcard{--pcard-pad:22px;padding:var(--pcard-pad);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);min-height:320px;color:inherit;isolation:isolate;grid-template-rows:auto 1fr auto auto;gap:14px;text-decoration:none;transition:border-color .22s,transform .22s,box-shadow .22s,background .22s;display:grid;position:relative;overflow:hidden}.pcard:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(620px 240px at 100% 0%, color-mix(in oklab, var(--accent) 14%, transparent) 0%, transparent 62%);opacity:0;transition:opacity .25s;position:absolute;inset:0}.pcard:after{content:"";left:var(--pcard-pad);right:var(--pcard-pad);background:var(--line);pointer-events:none;height:1px;position:absolute;bottom:64px}.pcard-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.pcard-mark{background:var(--surface);width:34px;height:34px;color:var(--ink);border:1px solid var(--line);font-family:var(--mono);border-radius:8px;place-items:center;font-size:15px;font-weight:600;transition:background .22s,color .22s,border-color .22s,transform .22s;display:grid}.pcard-headmeta{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.pcard-status{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);align-items:center;gap:6px;font-size:10px;line-height:1;display:inline-flex}.pcard-status:before{content:"";background:var(--good);border-radius:50%;width:6px;height:6px}.pcard-status.wip:before{background:var(--warn)}.pcard-status.archived:before{background:var(--muted-2)}.pcard-num{font-family:var(--mono);color:var(--muted-2);letter-spacing:.04em;font-size:10px}.pcard-body{flex-direction:column;gap:6px;display:flex}.pcard-kind{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:10px}.pcard-title{letter-spacing:-.018em;color:var(--ink);font-size:22px;font-weight:600;line-height:1.15;transition:color .22s}.pcard-dek{color:var(--muted);text-wrap:pretty;-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:13.5px;line-height:1.55;transition:opacity .2s;display:-webkit-box;overflow:hidden}.pcard-preview{left:var(--pcard-pad);right:var(--pcard-pad);top:calc(var(--pcard-pad) + 56px);opacity:0;pointer-events:none;justify-content:center;align-items:stretch;transition:opacity .22s,transform .22s;display:flex;position:absolute;bottom:64px;transform:translateY(8px)}.pcard-preview>*{align-self:center;width:100%}.pcard-foot{font-family:var(--mono);color:var(--muted);justify-content:space-between;align-items:center;gap:10px;font-size:11px;display:flex}.pcard-stack{flex-wrap:wrap;align-items:center;gap:6px;min-height:14px;display:inline-flex}.pcard-sep{color:var(--muted-2)}.pcard-open{color:var(--ink);align-items:center;gap:6px;font-weight:500;transition:color .22s,gap .22s;display:inline-flex}.pcard-open svg{transition:transform .22s}.pcard:hover{border-color:var(--accent);background:var(--paper);box-shadow:0 1px 0 var(--line), 0 18px 40px -28px color-mix(in oklab, var(--accent) 60%, transparent);transform:translateY(-2px)}.pcard:hover:before{opacity:1}.pcard:hover:after{opacity:0}.pcard:hover .pcard-mark{background:var(--accent);border-color:var(--accent);color:#fff}.pcard:hover .pcard-dek{opacity:0}.pcard:hover .pcard-preview{opacity:1;transform:translateY(0)}.pcard:hover .pcard-open{color:var(--accent);gap:8px}.pcard:hover .pcard-open svg{transform:translate(2px)}.pcard:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab, var(--accent) 22%, transparent);outline:none}.pcard:focus-visible:before{opacity:1}.pcard:focus-visible .pcard-mark{background:var(--accent);border-color:var(--accent);color:#fff}.pcard:focus-visible .pcard-dek{opacity:0}.pcard:focus-visible .pcard-preview{opacity:1;transform:translateY(0)}.pp-mono{font-family:var(--mono);color:var(--ink-2);font-size:11px}.pp-mute{color:var(--muted)}.pp-acc{color:var(--accent)}.pp-flash{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);text-align:center;flex-direction:column;gap:10px;padding:14px;display:flex}.pp-flash-head{font-family:var(--mono);color:var(--muted);justify-content:space-between;align-items:center;font-size:10px;display:flex}.pp-pill{border:1px solid var(--line-strong);color:var(--ink-2);border-radius:999px;align-items:center;gap:6px;padding:2px 8px;display:inline-flex}.pp-pill span{background:var(--accent);border-radius:50%;width:5px;height:5px}.pp-flash-word{letter-spacing:-.01em;color:var(--ink);font-size:24px;font-weight:600}.pp-flash-pron{font-family:var(--mono);color:var(--muted);font-size:11px}.pp-flash-rates{grid-template-columns:repeat(4,1fr);gap:4px;margin-top:4px;display:grid}.pp-flash-rates span{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:4px;padding:5px 4px;font-size:10px;font-weight:600}.pp-flash-rates [data-r=again]{border-bottom:2px solid var(--accent)}.pp-flash-rates [data-r=hard]{border-bottom:2px solid var(--warn)}.pp-flash-rates [data-r=good]{border-bottom:2px solid var(--ink)}.pp-flash-rates [data-r=easy]{border-bottom:2px solid var(--good)}.pp-flash-q{text-wrap:balance;font-size:17px;line-height:1.3}.pp-pulse{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);flex-direction:column;gap:10px;width:100%;padding:13px 14px;display:flex}.pp-pulse-head{font-family:var(--mono);color:var(--ink-2);justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.pp-pulse-head .pp-pill,.pp-pulse-head .pp-mono{white-space:nowrap}.pp-pulse-spark{width:100%;height:52px;display:block}.pp-pulse-ai{border-top:1px dashed var(--line);color:var(--ink-2);text-wrap:pretty;align-items:flex-start;gap:8px;padding-top:10px;font-size:12px;line-height:1.5;display:flex}.pp-pulse-tag{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid color-mix(in oklab, var(--accent) 35%, transparent);border-radius:999px;flex:none;margin-top:1px;padding:2px 6px;font-size:9px;font-weight:600;line-height:1}.pp-cms{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);flex-direction:column;gap:10px;width:100%;padding:13px 14px;display:flex}.pp-cms-head{font-family:var(--mono);color:var(--ink-2);justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.pp-cms-head .pp-pill,.pp-cms-head .pp-mono{white-space:nowrap}.pp-cms-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.pp-cms-list li{border-top:1px dashed var(--line);color:var(--ink-2);align-items:center;gap:10px;padding:8px 0;font-size:13px;display:flex}.pp-cms-list li:first-child{border-top:0}.pp-cms-name{color:var(--ink);white-space:nowrap;flex:1;font-weight:500}.pp-cms-count{font-family:var(--mono);color:var(--muted);font-size:11px}.pp-cms-status{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);white-space:nowrap;justify-content:flex-end;align-items:center;gap:6px;min-width:74px;font-size:9px;display:inline-flex}.pp-cms-status:before{content:"";background:var(--muted);border-radius:50%;width:6px;height:6px}.pp-cms-status.published:before{background:var(--good)}.pp-cms-status.draft:before{background:var(--warn)}.pcard-cadence{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);border:1px solid var(--line);background:var(--paper);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:9px;line-height:1;display:inline-flex}.pcard:hover .pcard-cadence{border-color:color-mix(in oklab, var(--accent) 35%, transparent);color:var(--accent)}.pgrid-empty{text-align:center;border:1px dashed var(--line);border-radius:var(--r-lg);background:repeating-linear-gradient(-45deg, var(--paper) 0 8px, var(--surface) 8px 9px);max-width:1080px;margin:0 auto;padding:56px 0}.pgrid-empty .mono{font-family:var(--mono);color:var(--muted-2);font-size:12px}.pgrid-live{flex-wrap:wrap;justify-content:center;gap:18px;max-width:1080px;margin:0 auto;display:flex}.pgrid-live .pcard{flex:300px;max-width:360px}@media (max-width:720px){.pgrid-live{max-width:380px}}.pgrid-teaser{justify-content:flex-start;max-width:none}.pgrid-teaser .pcard{max-width:380px}.pgrid-live .pp-pill{white-space:nowrap}.pgrid-live .pp-flash-head{gap:8px}.pgrid-live .pcard{min-height:372px}.pgrid-live .pcard-dek{-webkit-line-clamp:2;max-height:90px;transition:opacity .16s,max-height .3s,margin .24s}.pgrid-live .pcard-preview{opacity:.62;filter:saturate(.45);pointer-events:none;max-height:150px;margin-top:14px;transition:opacity .26s,filter .26s,max-height .32s,margin-top .24s;position:static;inset:auto;overflow:hidden;transform:none}.pgrid-live .pcard:hover .pcard-preview,.pgrid-live .pcard:focus-visible .pcard-preview{opacity:1;filter:none;max-height:260px}.pgrid-live .pcard:hover .pcard-dek,.pgrid-live .pcard:focus-visible .pcard-dek{opacity:0;max-height:0;margin:0}.pag{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:32px;padding-top:22px;display:flex}.pag-meta{font-family:var(--mono);color:var(--muted);font-size:11px}.pag-ctrls{align-items:center;gap:12px;display:inline-flex}.pag-btn{background:var(--paper);border:1px solid var(--line);font-family:var(--mono);color:var(--ink-2);cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:7px 12px;font-size:11px;transition:border-color .12s,color .12s,background .12s;display:inline-flex}.pag-btn:hover:not(:disabled){border-color:var(--ink);color:var(--ink)}.pag-btn:disabled{opacity:.4;cursor:not-allowed}.pag-btn svg{display:block}.pag-btn-prev svg{transform:rotate(180deg)}.pag-pages{align-items:center;gap:2px;padding:0 4px;display:inline-flex}.pag-page{min-width:30px;font-family:var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 8px;font-size:11px;transition:color .12s,background .12s,border-color .12s}.pag-page:hover{color:var(--ink)}.pag-page.on{color:var(--ink);background:var(--paper);border-color:var(--ink)}@media (max-width:640px){.pag{flex-direction:column;align-items:flex-start}.pag-ctrls{justify-content:space-between;align-self:stretch}}
