@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@500;600&family=IBM+Plex+Sans:wght@400;500;600&family=VT323&display=swap";:root{--colour-bg:#080b14;--colour-bg-alt:#0d0b16;--colour-surface:#10131f;--colour-surface-raised:#171225;--colour-surface-inset:#0b0e17;--colour-text:#f7f4f8;--colour-text-soft:#d7d0dc;--colour-text-muted:#a99fad;--colour-pink:#d7257b;--colour-pink-bright:#ef3f91;--colour-purple:#7c3aed;--colour-border:#d8d2dc;--colour-border-muted:#494252;--colour-focus:#ffb703;--font-display:"VT323", ui-monospace, monospace;--font-body:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;font-family:var(--font-body);color:var(--colour-text);background:var(--colour-bg);font-synthesis:none}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5.5rem}body{min-width:320px;margin:0;font-size:clamp(1rem,.25vw + .96rem,1.1rem);line-height:1.65}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.6;cursor:wait}img,svg{max-width:100%;display:block}::selection{background:var(--colour-pink);color:#fff}:focus-visible{outline:3px solid var(--colour-focus);outline-offset:4px}.wrap{width:min(100% - clamp(2rem,6vw,4rem),1240px);margin-inline:auto}.skip-link{z-index:2000;background:var(--colour-focus);color:var(--colour-bg);padding:.65rem .9rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:100;border-bottom:1px solid var(--colour-border-muted);background:var(--colour-bg);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:1.5rem;min-height:68px;display:flex}.wordmark{font:1.4rem var(--font-display);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:.75rem;display:inline-flex}.wordmark img{width:24px;height:32px}.wordmark:hover,.brand-divider{color:var(--colour-pink-bright)}.portfolio-link,.footer-inner>a{min-height:44px;font:1.08rem var(--font-display);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:.4rem;display:inline-flex}.portfolio-link:hover,.footer-inner>a:hover{color:var(--colour-pink-bright);text-underline-offset:5px;text-decoration:underline}.site-footer{border-top:1px solid var(--colour-border-muted);background:var(--colour-surface-inset)}.footer-inner{justify-content:space-between;align-items:center;gap:1rem;min-height:76px;display:flex}.footer-inner p{color:var(--colour-text-muted);font:.85rem var(--font-mono);margin:0}.eyebrow,.section-index{color:var(--colour-pink-bright);font:1.15rem var(--font-display);letter-spacing:.08em;text-transform:uppercase}.brutal-panel{border:2px solid var(--colour-border-muted);background:var(--colour-surface);border-radius:2px}.button-primary{border:2px solid var(--colour-pink-bright);background:var(--colour-pink);min-height:46px;box-shadow:4px 4px 0 var(--colour-purple);color:#fff;font:1.1rem / 1 var(--font-display);letter-spacing:.04em;text-transform:uppercase;border-radius:0;justify-content:center;align-items:center;gap:.65rem;padding:.65rem 1rem;transition:transform .12s,box-shadow .12s;display:inline-flex}.button-primary:hover{box-shadow:2px 2px 0 var(--colour-purple);transform:translate(2px,2px)}.button-primary:active{box-shadow:none;transform:translate(4px,4px)}.catalog{background:var(--colour-bg-alt);min-height:calc(100dvh - 145px);padding:clamp(2rem,3vw,2.75rem) 0 clamp(3.5rem,7vw,5.5rem)}.catalog-intro{border-bottom:1px solid var(--colour-border-muted);margin-bottom:1.5rem;padding-bottom:1.5rem}.catalog-intro .eyebrow{margin:0 0 .7rem}.catalog-intro h1{font:400 clamp(3.2rem, 4vw, 4rem) / .9 var(--font-display);text-transform:uppercase;margin:0}.catalog-intro h1 span{color:var(--colour-pink-bright)}.catalog-intro>p:last-child{max-width:62ch;color:var(--colour-text-soft);margin:.65rem 0 0}.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(.875rem,2vw,1.5rem);display:grid}.tool-card{border-color:var(--colour-pink);min-height:330px;box-shadow:5px 5px 0 var(--colour-purple);flex-direction:column;padding:clamp(1.2rem,3vw,1.7rem);transition:transform .12s,box-shadow .12s;display:flex}.tool-card:hover{box-shadow:3px 3px 0 var(--colour-purple);transform:translate(2px,2px)}.card-top{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.number-badge{background:var(--colour-pink);color:#fff;width:40px;height:40px;font:1.35rem / 1 var(--font-display);flex:none;place-items:center;display:inline-grid}.status-label{color:var(--colour-pink-bright);font:.95rem var(--font-display);letter-spacing:.05em;text-transform:uppercase}.card-icon{border:1px solid var(--colour-purple);background:var(--colour-surface-inset);width:52px;height:52px;color:var(--colour-pink-bright);font:2.1rem / 1 var(--font-display);place-items:center;margin:1.2rem 0 0;display:grid;overflow:hidden}.card-icon img,.detail-icon img{object-fit:cover;width:100%;height:100%}.card-content{flex:1}.card-content h2{font:400 clamp(1.55rem, 2.5vw, 2rem) / 1.05 var(--font-display);margin:.9rem 0 .65rem}.card-content h2 a:hover{color:var(--colour-pink-bright);text-underline-offset:5px;text-decoration:underline}.card-content p{max-width:58ch;color:var(--colour-text-soft);margin:0;font-size:.98rem;line-height:1.6}.tag-list{flex-wrap:wrap;gap:.45rem;margin-top:1rem;display:flex}.tag{border:1px solid var(--colour-purple);background:var(--colour-surface-inset);min-height:28px;color:var(--colour-text-soft);font:.9rem / 1 var(--font-display);letter-spacing:.04em;text-transform:uppercase;align-items:center;padding:.15rem .55rem;display:inline-flex}.card-actions{flex-wrap:wrap;gap:.65rem;margin-top:1rem;display:flex}.card-bottom,.card-download{border:1px solid var(--colour-pink-bright);min-height:46px;font:1.05rem var(--font-display);text-transform:uppercase;white-space:nowrap;flex:1;justify-content:space-between;align-items:center;gap:1rem;padding:.55rem .75rem;display:inline-flex}.card-bottom:hover,.card-download:hover{background:var(--colour-pink);color:#fff}.empty-state{border-color:var(--colour-pink);box-shadow:5px 5px 0 var(--colour-purple);padding:2rem}.empty-state h2{font:400 2rem var(--font-display);text-transform:uppercase;margin:1.2rem 0 .5rem}.empty-state p{color:var(--colour-text-soft)}.detail-page,.form-page,.admin-page{padding-block:clamp(3rem,6vw,5rem) clamp(4rem,7vw,6rem)}.back-link{min-height:44px;color:var(--colour-pink-bright);font:1.1rem var(--font-display);text-transform:uppercase;display:inline-block}.back-link:hover{text-underline-offset:5px;text-decoration:underline}.detail-hero{border-bottom:1px solid var(--colour-border-muted);justify-content:space-between;align-items:end;gap:2rem;padding:1.5rem 0 2rem;display:flex}.detail-hero h1,.form-page h1,.admin-page h1{font:400 clamp(4rem, 8vw, 7rem) / .76 var(--font-display);text-transform:uppercase;overflow-wrap:anywhere;margin:.6rem 0 1.25rem}.detail-dot{color:var(--colour-pink-bright)}.detail-summary{max-width:48ch;color:var(--colour-text-soft);margin:0}.detail-icon{border:2px solid var(--colour-border);background:var(--colour-surface);width:122px;height:122px;box-shadow:5px 5px 0 var(--colour-purple);color:var(--colour-pink-bright);font:5rem var(--font-display);flex:none;place-items:center;display:grid;overflow:hidden}.detail-overview{grid-template-columns:minmax(0,7fr) minmax(280px,3fr);align-items:start;gap:clamp(2rem,5vw,5rem);padding-top:clamp(2.5rem,5vw,4.5rem);display:grid}.detail-description{grid-area:1/1}.detail-description h2,.detail-section-heading h2,.admin-columns h2{font:400 2rem var(--font-display);text-transform:uppercase;margin:.5rem 0 1.25rem}.long-description{color:var(--colour-text-soft);white-space:pre-line;margin:0}.download-panel{border-color:var(--colour-pink);box-shadow:5px 5px 0 var(--colour-purple);grid-area:1/2;padding:clamp(1.25rem,2vw,1.75rem);display:grid}.download-panel h2{font:400 2rem / 1 var(--font-display);margin:.75rem 0 .25rem}.download-panel p{color:var(--colour-text-soft);margin:.3rem 0}.download-panel .download-meta{color:var(--colour-text-muted);font:.72rem / 1.5 var(--font-mono)}.download-primary,.download-secondary{justify-content:space-between;width:100%;margin-top:1.5rem;display:flex}.download-secondary{border:1px solid var(--colour-border);background:var(--colour-surface-inset);min-height:46px;font:1.1rem var(--font-display);text-transform:uppercase;align-items:center;padding:.55rem .75rem}.download-secondary:hover{border-color:var(--colour-pink-bright);color:var(--colour-pink-bright)}.latest-changelog,.other-versions{border-top:1px solid var(--colour-border-muted);margin-top:clamp(2.5rem,5vw,4.5rem);padding-top:clamp(2rem,4vw,3rem)}.detail-section-heading{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.25rem;display:flex}.detail-section-heading h2{margin-bottom:0}.changelog-version,.archive-count{color:var(--colour-text-muted);font:.8rem var(--font-mono);white-space:nowrap}.changelog-copy,.changelog-preview{color:var(--colour-text-soft);white-space:pre-wrap;overflow-wrap:anywhere}.changelog-copy{max-width:100ch;line-height:1.75}.latest-changelog>.changelog-copy,.latest-changelog-expand{border:1px solid var(--colour-border-muted);border-left:4px solid var(--colour-pink-bright);background:var(--colour-surface);max-width:none;padding:clamp(1.25rem,2.5vw,2rem)}.changelog-empty,.version-no-notes{color:var(--colour-text-muted);margin:0}.latest-changelog-expand summary,.version-changelog summary{cursor:pointer;list-style:none}.latest-changelog-expand summary::-webkit-details-marker{display:none}.version-changelog summary::-webkit-details-marker{display:none}.latest-changelog-expand summary{gap:1rem;display:grid}.changelog-preview{max-width:100ch;line-height:1.75;display:block}.changelog-expand-label,.changelog-collapse-label,.version-changelog summary{color:var(--colour-pink-bright);font:1.1rem var(--font-display);text-transform:uppercase}.changelog-collapse-label,.latest-changelog-expand[open] .changelog-preview,.latest-changelog-expand[open] .changelog-expand-label{display:none}.latest-changelog-expand[open] .changelog-collapse-label{display:inline}.version-changelog .changelog-copy{margin-top:1rem}.latest-changelog-expand[open] .changelog-copy{border-top:1px solid var(--colour-border-muted);margin-top:1rem;padding-top:1rem}.version-list{gap:.85rem;display:grid}.version-item{border:1px solid var(--colour-border-muted);background:var(--colour-surface);padding:1.2rem clamp(1.2rem,2vw,1.7rem)}.version-item-top{justify-content:space-between;align-items:center;gap:1rem;display:flex}.version-item h3{font:400 1.75rem var(--font-display);margin:0}.version-item-top p{color:var(--colour-text-muted);font:.72rem / 1.6 var(--font-mono);overflow-wrap:anywhere;margin:.35rem 0 0}.download-link{border:1px solid var(--colour-pink-bright);min-height:44px;font:1.1rem var(--font-display);text-transform:uppercase;white-space:nowrap;flex:none;align-items:center;gap:.75rem;padding:.4rem .65rem;display:inline-flex}.download-link:hover{background:var(--colour-pink)}.version-changelog,.version-no-notes{border-top:1px solid var(--colour-border-muted);margin-top:1rem;padding-top:.75rem}.version-changelog summary:hover{text-underline-offset:4px;text-decoration:underline}.version-changelog summary:after{content:"+";margin-left:.35rem}.version-changelog[open] summary:after{content:"−"}.form-page{max-width:800px}.form-page>p,.admin-actions p{color:var(--colour-text-soft)}.editor-form{gap:1.25rem;margin-top:2rem;display:grid}.editor-form label,.icon-upload label{color:var(--colour-text-soft);gap:.5rem;font-size:.95rem;display:grid}.editor-form input,.editor-form textarea,.icon-upload input{border:2px solid var(--colour-border-muted);background:var(--colour-surface);width:100%;color:var(--colour-text);border-radius:0;padding:.75rem .85rem}.editor-form input:focus,.editor-form textarea:focus{border-color:var(--colour-pink-bright)}.editor-form input:disabled{opacity:.6}.editor-form textarea{resize:vertical}.editor-form .button-primary{justify-self:start}.error,.status-message{color:var(--colour-pink-bright)}.admin-heading,.admin-actions{justify-content:space-between;align-items:end;gap:1.5rem;display:flex}.admin-actions{border-top:1px solid var(--colour-border-muted);border-bottom:1px solid var(--colour-border-muted);margin-top:2.5rem;padding:1.25rem 0}.text-button{color:var(--colour-pink-bright);font:1.1rem var(--font-display);text-transform:uppercase;background:0 0;border:0;padding:.5rem}.text-button:hover{text-decoration:underline}.danger{color:#ff7a68}.admin-row{border-bottom:1px solid var(--colour-border-muted);justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 0;display:flex}.admin-row>div:first-child{gap:.25rem;display:grid}.admin-row strong{font:1.6rem var(--font-display)}.admin-row>div span{color:var(--colour-text-muted);font-size:.85rem}.admin-row>div:last-child{align-items:center;gap:1rem;display:flex}.admin-row a{color:var(--colour-pink-bright);font:1.1rem var(--font-display);text-transform:uppercase}.admin-columns{grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);margin-top:3rem;display:grid}.icon-upload{gap:1rem;margin-top:3rem;display:grid}.icon-upload img{object-fit:cover}.admin-releases{margin-top:2rem}.admin-releases .admin-row strong{font-size:1.3rem}@media (width<=767px){.tool-grid,.detail-overview,.admin-columns{grid-template-columns:1fr}.detail-description,.download-panel{grid-area:auto}.tool-card{min-height:0}.detail-hero{align-items:start}.detail-icon{width:76px;height:76px;font-size:3rem}.admin-row>div:last-child{flex-wrap:wrap}.version-item-top{flex-wrap:wrap;align-items:flex-start}}@media (width<=620px){.wordmark{gap:.45rem;font-size:1.15rem}.wordmark img{width:18px;height:25px}.portfolio-link{font-size:.95rem}.footer-inner{flex-direction:column;align-items:flex-start;padding-block:1.25rem}.admin-heading{align-items:start}.detail-hero{gap:1rem}.detail-hero h1{font-size:clamp(3rem,12vw,4.5rem)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.button-primary,.tool-card{transition:none}}
