.culhane-project-grid{--culhane-gap:clamp(1rem,2vw,1.75rem);display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:var(--culhane-gap);margin:2rem 0}@media(min-width:720px){.culhane-columns-2,.culhane-columns-3,.culhane-columns-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1040px){.culhane-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.culhane-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.culhane-project-card{border:1px solid color-mix(in srgb,currentColor 14%,transparent);border-radius:1.25rem;overflow:hidden;background:color-mix(in srgb,canvas 96%,currentColor 4%);box-shadow:0 12px 32px rgba(0,0,0,.06);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.culhane-project-card:hover{transform:translateY(-3px);box-shadow:0 18px 42px rgba(0,0,0,.1);border-color:color-mix(in srgb,currentColor 26%,transparent)}.culhane-project-link{color:inherit;text-decoration:none;display:block;height:100%}.culhane-project-image{aspect-ratio:4/3;background:#eee;overflow:hidden}.culhane-project-image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s ease}.culhane-project-image.is-contain img{object-fit:contain;background:color-mix(in srgb,canvas 92%,currentColor 8%);padding:.75rem}.culhane-project-card:hover .culhane-project-image img{transform:scale(1.035)}.culhane-project-placeholder{display:grid;place-items:center;font-size:.8rem;text-transform:uppercase;letter-spacing:.12em;opacity:.65}.culhane-project-body{padding:clamp(1rem,2vw,1.35rem)}.culhane-project-kicker{font-size:.76rem;text-transform:uppercase;letter-spacing:.12em;opacity:.68;margin-bottom:.45rem}.culhane-project-card h3{margin:0 0 .55rem;font-size:clamp(1.2rem,2vw,1.55rem);line-height:1.12}.culhane-project-subtitle{margin:0 0 .8rem;opacity:.82;line-height:1.45}.culhane-project-meta{margin:0;font-size:.9rem;opacity:.68}.culhane-project-badge{display:inline-block;margin:.75rem 0 0;padding:.3rem .55rem;border-radius:999px;font-size:.75rem;background:color-mix(in srgb,currentColor 8%,transparent);opacity:.76}
.culhane-project-hero{margin:0 0 clamp(1.5rem,4vw,3rem);border-radius:clamp(1rem,2vw,2rem);overflow:hidden}.culhane-hero-image{background:color-mix(in srgb,canvas 92%,currentColor 8%)}.culhane-hero-image img{width:100%;display:block;max-height:74vh;object-fit:cover}.culhane-project-hero.is-contain .culhane-hero-image img{object-fit:contain;padding:clamp(.75rem,2vw,1.5rem)}.culhane-hero-text{padding:clamp(1.25rem,3vw,2.25rem);background:color-mix(in srgb,canvas 94%,currentColor 6%)}.culhane-hero-text h1{margin:.15rem 0 .5rem;line-height:1.02}.culhane-hero-text p{font-size:clamp(1.05rem,2vw,1.35rem);margin:0;opacity:.82}.culhane-project-hero.layout-split{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);align-items:stretch;background:color-mix(in srgb,canvas 94%,currentColor 6%)}.layout-split .culhane-hero-image img{height:100%;min-height:420px}.layout-split .culhane-hero-text{display:flex;flex-direction:column;justify-content:center}.culhane-project-hero.layout-overlay{position:relative;background:#111}.layout-overlay .culhane-hero-image img{filter:brightness(.72)}.layout-overlay .culhane-hero-text{position:absolute;inset:auto 0 0 0;background:linear-gradient(transparent,rgba(0,0,0,.78));color:white;padding-top:6rem}@media(max-width:820px){.culhane-project-hero.layout-split{grid-template-columns:1fr}.layout-split .culhane-hero-image img{min-height:auto}.layout-overlay .culhane-hero-text{position:relative;background:#111}}
.culhane-showcase{margin:clamp(1.5rem,4vw,3rem) 0}.culhane-image-gallery,.culhane-logo-board,.culhane-comic-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:clamp(.75rem,2vw,1.25rem)}.culhane-showcase figure{margin:0;border-radius:1rem;overflow:hidden;background:color-mix(in srgb,canvas 92%,currentColor 8%);border:1px solid color-mix(in srgb,currentColor 10%,transparent)}.culhane-showcase img{width:100%;height:auto;display:block}.culhane-logo-board figure{display:grid;place-items:center;padding:clamp(1rem,3vw,2rem);min-height:180px}.culhane-logo-board img{max-height:360px;object-fit:contain}.culhane-comic-vertical{display:grid;gap:1rem;max-width:920px;margin-left:auto;margin-right:auto}.culhane-comic-vertical figure{border-radius:.5rem}.culhane-website-frame{border:1px solid color-mix(in srgb,currentColor 14%,transparent);border-radius:1.25rem;padding:clamp(.75rem,2vw,1.5rem);background:color-mix(in srgb,canvas 94%,currentColor 6%);box-shadow:0 18px 60px rgba(0,0,0,.08)}.culhane-website-frame img{border-radius:.75rem;border:1px solid color-mix(in srgb,currentColor 10%,transparent)}.culhane-font-preview{padding:clamp(1rem,4vw,2rem);border-radius:1.25rem;border:1px solid color-mix(in srgb,currentColor 14%,transparent);background:color-mix(in srgb,canvas 94%,currentColor 6%)}.culhane-font-preview p{font-size:clamp(2rem,8vw,6rem);line-height:1.05;margin:0;overflow-wrap:anywhere}
.culhane-project-panel{margin:2rem 0;padding:clamp(1rem,2vw,1.5rem);border-radius:1rem;border:1px solid color-mix(in srgb,currentColor 14%,transparent);background:color-mix(in srgb,canvas 94%,currentColor 6%)}.culhane-project-panel ul{margin:0 0 1rem 1.2rem;padding:0}.culhane-project-panel li{margin:.35rem 0}.culhane-interactionz-note{font-size:.95rem;opacity:.8}.culhane-project-button{display:inline-block;padding:.7rem 1rem;border-radius:999px;border:1px solid currentColor;text-decoration:none}.culhane-empty{opacity:.7;font-style:italic}

/* Optional cleanup for themes that print title/author/date above the content. */
body.culhane-hide-theme-header.single-culhane_project .entry-header,
body.culhane-hide-theme-header.single-culhane_project header.entry-header,
body.culhane-hide-theme-header.single-culhane_project .wp-block-post-title,
body.culhane-hide-theme-header.single-culhane_project .wp-block-post-date,
body.culhane-hide-theme-header.single-culhane_project .wp-block-post-author,
body.culhane-hide-theme-header.single-culhane_project .wp-block-post-author-name,
body.culhane-hide-theme-header.single-culhane_project .wp-block-post-terms,
body.culhane-hide-theme-header.single-culhane_project .post-meta,
body.culhane-hide-theme-header.single-culhane_project .entry-meta{display:none!important}
.culhane-project-hero.no-hero-text .culhane-hero-image img{max-height:none}.culhane-project-hero.no-hero-text{margin-top:0}

/* Sequential art / comic flip-through reader */
.culhane-comic-reader{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:clamp(.35rem,1.5vw,.75rem);max-width:1100px;margin-left:auto;margin-right:auto}.culhane-reader-stage{min-width:0}.culhane-reader-page{display:none;margin:0!important;border-radius:.75rem!important}.culhane-reader-page.is-active{display:block}.culhane-reader-page img{max-height:82vh;width:auto;max-width:100%;margin:auto;object-fit:contain}.culhane-reader-arrow{appearance:none;border:1px solid color-mix(in srgb,currentColor 20%,transparent);background:color-mix(in srgb,canvas 92%,currentColor 8%);color:inherit;width:clamp(2.4rem,5vw,3.5rem);height:clamp(2.4rem,5vw,3.5rem);border-radius:999px;font-size:clamp(2rem,5vw,3rem);line-height:1;display:grid;place-items:center;cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.08);z-index:2}.culhane-reader-arrow:hover{background:color-mix(in srgb,canvas 82%,currentColor 18%)}.culhane-reader-count{grid-column:1/-1;text-align:center;font-size:.9rem;opacity:.7;margin-top:.35rem}.culhane-reader-arrow[disabled]{opacity:.35;cursor:not-allowed}@media(max-width:720px){.culhane-comic-reader{grid-template-columns:1fr}.culhane-reader-arrow{position:absolute;top:50%;transform:translateY(-50%);background:color-mix(in srgb,canvas 88%,currentColor 12%)}.culhane-reader-prev{left:.25rem}.culhane-reader-next{right:.25rem}.culhane-reader-stage{padding:0 1.25rem}.culhane-reader-count{margin-top:.75rem}}

/* Font specimen mode */
.culhane-font-specimen{display:grid;gap:clamp(1rem,3vw,2rem)}
.culhane-font-hero{padding:clamp(1rem,4vw,2.5rem);border-radius:1.25rem;border:1px solid color-mix(in srgb,currentColor 14%,transparent);background:color-mix(in srgb,canvas 94%,currentColor 6%)}
.culhane-font-hero p{font-size:clamp(2.4rem,9vw,7rem);line-height:1.05;margin:0;overflow-wrap:anywhere}
.culhane-font-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}.culhane-font-row span{display:grid;place-items:center;min-height:120px;border:1px solid color-mix(in srgb,currentColor 12%,transparent);border-radius:1rem;background:color-mix(in srgb,canvas 96%,currentColor 4%);font-size:clamp(2rem,6vw,4rem)}
.culhane-font-heading{margin:0;font-size:clamp(1.25rem,2vw,1.8rem)}
.culhane-glyph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));border-top:1px solid color-mix(in srgb,currentColor 14%,transparent);border-left:1px solid color-mix(in srgb,currentColor 14%,transparent)}
.culhane-glyph-cell{min-height:92px;padding:.35rem;border-right:1px solid color-mix(in srgb,currentColor 14%,transparent);border-bottom:1px solid color-mix(in srgb,currentColor 14%,transparent);background:color-mix(in srgb,canvas 98%,currentColor 2%);display:grid;grid-template-rows:auto auto 1fr;align-items:end}.culhane-glyph-label{font-size:.85rem;opacity:.5}.culhane-glyph-code{font-size:.62rem;opacity:.38}.culhane-glyph-cell b{font-size:2.1rem;line-height:1.05;font-weight:400;align-self:center;justify-self:center}

/* Tool / destination cards */
.culhane-project-card.mode-tool .culhane-project-image{aspect-ratio:16/9}
.culhane-tools-grid .culhane-project-card{border-style:dashed}
.culhane-tool-showcase{display:grid;gap:1rem;place-items:start}.culhane-tool-images{border-radius:1rem;overflow:hidden;border:1px solid color-mix(in srgb,currentColor 12%,transparent);background:color-mix(in srgb,canvas 94%,currentColor 6%)}.culhane-tool-images img{display:block;width:100%;height:auto}

/* Comic / sequential image lightbox */
.culhane-lightbox-link{display:block;cursor:zoom-in}.culhane-lightbox-link img{transition:transform .18s ease}.culhane-lightbox-link:hover img{transform:scale(1.015)}
.culhane-lightbox{position:fixed;inset:0;z-index:99999;display:none;place-items:center;background:rgba(0,0,0,.88);padding:clamp(.75rem,2vw,2rem)}.culhane-lightbox.is-open{display:grid}.culhane-lightbox figure{margin:0;max-width:min(96vw,1400px);max-height:92vh;display:grid;gap:.65rem;place-items:center}.culhane-lightbox img{max-width:100%;max-height:86vh;width:auto;height:auto;object-fit:contain;box-shadow:0 20px 80px rgba(0,0,0,.35)}.culhane-lightbox figcaption{color:white;font-size:.95rem;opacity:.82;text-align:center}.culhane-lightbox-close,.culhane-lightbox-arrow{appearance:none;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.12);color:#fff;border-radius:999px;display:grid;place-items:center;cursor:pointer;line-height:1}.culhane-lightbox-close{position:absolute;top:1rem;right:1rem;width:2.75rem;height:2.75rem;font-size:2rem}.culhane-lightbox-arrow{position:absolute;top:50%;transform:translateY(-50%);width:clamp(2.75rem,6vw,4rem);height:clamp(2.75rem,6vw,4rem);font-size:clamp(2.25rem,6vw,3.6rem)}.culhane-lightbox-prev{left:1rem}.culhane-lightbox-next{right:1rem}.culhane-lightbox-arrow[disabled]{opacity:.25;cursor:not-allowed}.culhane-lightbox-open{overflow:hidden}@media(max-width:720px){.culhane-lightbox{padding:.5rem}.culhane-lightbox-prev{left:.35rem}.culhane-lightbox-next{right:.35rem}.culhane-lightbox-close{top:.5rem;right:.5rem}}

/* Font download / support buttons */
.culhane-font-actions{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.culhane-tip-button{border-style:dashed}

/* Project themes / creative worlds */
.culhane-theme-grid{--culhane-gap:clamp(1rem,2vw,1.75rem);display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:var(--culhane-gap);margin:2rem 0}@media(min-width:720px){.culhane-theme-grid.culhane-columns-2,.culhane-theme-grid.culhane-columns-3,.culhane-theme-grid.culhane-columns-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1040px){.culhane-theme-grid.culhane-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.culhane-theme-grid.culhane-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.culhane-theme-card{border:1px solid color-mix(in srgb,currentColor 14%,transparent);border-radius:1.25rem;overflow:hidden;background:color-mix(in srgb,canvas 96%,currentColor 4%);box-shadow:0 12px 32px rgba(0,0,0,.06);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.culhane-theme-card:hover{transform:translateY(-3px);box-shadow:0 18px 42px rgba(0,0,0,.1);border-color:color-mix(in srgb,currentColor 26%,transparent)}.culhane-theme-link{color:inherit;text-decoration:none;display:block;height:100%}.culhane-theme-image{aspect-ratio:16/9;background:color-mix(in srgb,canvas 92%,currentColor 8%);overflow:hidden}.culhane-theme-image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s ease}.culhane-theme-card:hover .culhane-theme-image img{transform:scale(1.035)}.culhane-theme-body{padding:clamp(1rem,2vw,1.35rem)}.culhane-theme-body h3{margin:0 0 .55rem;font-size:clamp(1.25rem,2vw,1.65rem);line-height:1.08}.culhane-theme-body p{margin:0;opacity:.82;line-height:1.45}
.culhane-theme-intro{margin:clamp(1.5rem,4vw,3rem) 0;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:clamp(1rem,3vw,2rem);align-items:center;padding:clamp(1rem,3vw,2rem);border:1px solid color-mix(in srgb,currentColor 12%,transparent);border-radius:clamp(1rem,2vw,1.5rem);background:color-mix(in srgb,canvas 95%,currentColor 5%)}.culhane-theme-intro-image{border-radius:1rem;overflow:hidden;background:color-mix(in srgb,canvas 92%,currentColor 8%)}.culhane-theme-intro-image img{width:100%;height:auto;display:block}.culhane-theme-intro-text h2{margin:.1rem 0 .6rem;line-height:1.05;font-size:clamp(2rem,5vw,4rem)}.culhane-theme-subtitle{font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.4;opacity:.84;margin:.2rem 0 1rem}.culhane-theme-description{opacity:.82}.culhane-theme-description p:last-child{margin-bottom:0}@media(max-width:820px){.culhane-theme-intro{grid-template-columns:1fr}.culhane-theme-intro-image{order:-1}}

/* v0.9: story, examples, thumbnail focus, font details, related projects */
.culhane-project-image img{object-position:var(--culhane-focus,50% 50%)}
.culhane-hero-image img{object-position:var(--culhane-focus,50% 50%)}
.culhane-project-story{margin:clamp(1.5rem,4vw,3rem) 0;padding:clamp(1rem,3vw,2rem);border-radius:1.25rem;border:1px solid color-mix(in srgb,currentColor 12%,transparent);background:color-mix(in srgb,canvas 96%,currentColor 4%)}
.culhane-project-story h2,.culhane-example-gallery h2,.culhane-related-projects h2{margin:0 0 1rem;line-height:1.1;font-size:clamp(1.35rem,2.4vw,2rem)}
.culhane-story-text{font-size:1.05rem;line-height:1.65;opacity:.88;max-width:78ch}.culhane-story-text p:last-child{margin-bottom:0}
.culhane-example-gallery{margin:clamp(1.5rem,4vw,3rem) 0}.culhane-example-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:clamp(.75rem,2vw,1.25rem)}
.culhane-example-grid figure{margin:0;border-radius:1rem;overflow:hidden;background:color-mix(in srgb,canvas 92%,currentColor 8%);border:1px solid color-mix(in srgb,currentColor 10%,transparent)}.culhane-example-grid img{width:100%;height:auto;display:block}.culhane-example-grid figcaption{padding:.55rem .75rem;font-size:.9rem;opacity:.72}
.culhane-font-details{display:flex;gap:.5rem 1rem;flex-wrap:wrap;list-style:none;margin:0;padding:0}.culhane-font-details li{padding:.45rem .7rem;border-radius:999px;background:color-mix(in srgb,currentColor 7%,transparent);font-size:.9rem}.culhane-font-details strong{font-weight:650}
.culhane-related-projects{margin:clamp(2rem,5vw,4rem) 0;padding-top:clamp(1rem,3vw,2rem);border-top:1px solid color-mix(in srgb,currentColor 12%,transparent)}

/* v1.0: workshop shelf, process, timelines, support, font playground */
.culhane-workshop-shelf{display:grid;gap:clamp(2rem,5vw,4rem);margin:clamp(1.5rem,4vw,3rem) 0}.culhane-workshop-shelf>section>h2,.culhane-tax-group>h3{margin:0 0 1rem;line-height:1.1;font-size:clamp(1.45rem,3vw,2.3rem)}.culhane-wander-box{padding:clamp(1rem,3vw,2rem);border:1px dashed color-mix(in srgb,currentColor 20%,transparent);border-radius:1.25rem;background:color-mix(in srgb,canvas 94%,currentColor 6%)}
.culhane-process-gallery{margin:clamp(1.5rem,4vw,3rem) 0}.culhane-process-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:clamp(.75rem,2vw,1rem)}.culhane-process-strip figure{margin:0;border-radius:1rem;overflow:hidden;border:1px solid color-mix(in srgb,currentColor 10%,transparent);background:color-mix(in srgb,canvas 92%,currentColor 8%)}.culhane-process-strip img{display:block;width:100%;height:auto}.culhane-process-strip figcaption{padding:.55rem .75rem;font-size:.9rem;opacity:.72}
.culhane-project-timeline{margin:clamp(1.5rem,4vw,3rem) 0;padding:clamp(1rem,3vw,2rem);border-left:4px solid color-mix(in srgb,currentColor 30%,transparent);background:color-mix(in srgb,canvas 96%,currentColor 4%);border-radius:0 1.25rem 1.25rem 0}.culhane-project-timeline h2{margin-top:0}.culhane-project-timeline ol{list-style:none;margin:0;padding:0;display:grid;gap:.85rem}.culhane-project-timeline li{display:grid;grid-template-columns:minmax(5rem,.25fr) 1fr;gap:1rem;align-items:start}.culhane-project-timeline time{font-weight:700;opacity:.75}.culhane-help-text{font-size:.85rem;opacity:.6;margin:.9rem 0 0}.culhane-help-text code{font-size:.82em}
.culhane-audio-note,.culhane-support-section{margin:clamp(1.5rem,4vw,3rem) 0;padding:clamp(1rem,3vw,2rem);border:1px solid color-mix(in srgb,currentColor 12%,transparent);border-radius:1.25rem;background:color-mix(in srgb,canvas 96%,currentColor 4%)}.culhane-audio-note audio{width:100%;max-width:720px}.culhane-support-section h2,.culhane-audio-note h2{margin-top:0}.culhane-support-section p:last-child{margin-bottom:0}
.culhane-font-playground{margin:1rem 0 1.5rem;display:grid;gap:.75rem}.culhane-font-playground label{display:grid;gap:.4rem;font-weight:650}.culhane-font-playground-input{font:inherit;padding:.75rem 1rem;border-radius:.75rem;border:1px solid color-mix(in srgb,currentColor 18%,transparent);background:canvas;color:inherit}.culhane-font-playground-output{font-size:clamp(2rem,8vw,6rem);line-height:1.05;padding:clamp(1rem,3vw,2rem);border-radius:1rem;background:color-mix(in srgb,canvas 92%,currentColor 8%);word-break:break-word}.culhane-tax-group{margin:clamp(1.5rem,4vw,3rem) 0}.culhane-project-panel li strong{font-weight:700}
@media(max-width:640px){.culhane-project-timeline li{grid-template-columns:1fr;gap:.2rem}}

/* v1.1: richer no-thumbnail/text placeholders */
.culhane-project-placeholder{position:relative;display:grid;place-items:center;min-height:100%;background:linear-gradient(135deg,color-mix(in srgb,canvas 90%,currentColor 10%),color-mix(in srgb,canvas 98%,currentColor 2%));overflow:hidden}
.culhane-project-placeholder:before{content:"";position:absolute;inset:10%;border:1px solid color-mix(in srgb,currentColor 10%,transparent);border-radius:.85rem;pointer-events:none}
.culhane-project-placeholder>span,.culhane-project-placeholder>b{position:relative;z-index:1;font-size:clamp(2.1rem,8vw,4.4rem);font-weight:650;line-height:1;opacity:.68;letter-spacing:-.06em}
.culhane-project-placeholder.placeholder-glyph>span{font-family:Georgia,serif;font-size:clamp(3rem,9vw,5.4rem)}
.culhane-project-placeholder.placeholder-mark>span,.culhane-project-placeholder.placeholder-tool>span,.culhane-project-placeholder.placeholder-initials>span{font-size:clamp(2.4rem,8vw,4.8rem)}
.culhane-placeholder-paper{position:relative;z-index:1;width:min(86%,360px);min-height:66%;padding:clamp(1rem,3vw,1.45rem);border-radius:.35rem;background:color-mix(in srgb,canvas 98%,currentColor 2%);box-shadow:0 12px 34px rgba(0,0,0,.08);transform:rotate(-1.2deg);display:grid;align-content:center;gap:.6rem}.culhane-placeholder-paper:before{content:"";position:absolute;left:1.05rem;top:.8rem;bottom:.8rem;border-left:1px solid color-mix(in srgb,currentColor 10%,transparent)}.culhane-placeholder-paper:after{content:"";position:absolute;left:.65rem;right:.65rem;top:50%;height:1px;background:color-mix(in srgb,currentColor 8%,transparent);box-shadow:0 -1.65rem 0 color-mix(in srgb,currentColor 8%,transparent),0 1.65rem 0 color-mix(in srgb,currentColor 8%,transparent)}.culhane-placeholder-paper p{position:relative;z-index:1;margin:0 0 0 .8rem;font-size:clamp(.92rem,1.55vw,1.1rem);line-height:1.35;opacity:.78}.culhane-placeholder-mark{position:relative;z-index:1;display:block;margin-left:.8rem;font-size:1.8rem;line-height:1;opacity:.36}.placeholder-quote .culhane-placeholder-paper{transform:none;border-radius:1rem}.placeholder-quote .culhane-placeholder-mark{font-size:3.2rem;margin-bottom:-1rem}.placeholder-quote .culhane-placeholder-paper:before,.placeholder-quote .culhane-placeholder-paper:after{display:none}
.culhane-placeholder-panels{position:relative;z-index:1;width:min(72%,300px);display:grid;grid-template-columns:1fr 1fr;gap:.55rem;transform:rotate(.8deg)}.culhane-placeholder-panels span{display:block;aspect-ratio:1.25;border:2px solid color-mix(in srgb,currentColor 40%,transparent);border-radius:.35rem;background:color-mix(in srgb,canvas 88%,currentColor 12%)}.placeholder-panels>b{position:absolute;z-index:2;bottom:11%;right:12%;font-size:2rem;letter-spacing:0;background:canvas;border-radius:999px;padding:.25rem .55rem;border:1px solid color-mix(in srgb,currentColor 16%,transparent)}
.culhane-placeholder-browser{position:relative;z-index:1;width:min(82%,360px);min-height:62%;border:1px solid color-mix(in srgb,currentColor 18%,transparent);border-radius:.8rem;background:color-mix(in srgb,canvas 97%,currentColor 3%);box-shadow:0 16px 40px rgba(0,0,0,.08);padding:2rem 1rem 1rem}.culhane-placeholder-browser:before{content:"";position:absolute;left:0;right:0;top:0;height:1.35rem;border-bottom:1px solid color-mix(in srgb,currentColor 13%,transparent);background:color-mix(in srgb,currentColor 7%,transparent);border-radius:.8rem .8rem 0 0}.culhane-placeholder-browser span{position:absolute;top:.43rem;width:.42rem;height:.42rem;border-radius:99px;background:color-mix(in srgb,currentColor 28%,transparent)}.culhane-placeholder-browser span:nth-child(1){left:.65rem}.culhane-placeholder-browser span:nth-child(2){left:1.35rem}.culhane-placeholder-browser span:nth-child(3){left:2.05rem}.culhane-placeholder-browser p{margin:0;font-size:.95rem;line-height:1.35;opacity:.72}
.culhane-placeholder-paper p,.culhane-placeholder-browser p,.culhane-project-hero.layout-text blockquote p{white-space:pre-line;overflow-wrap:anywhere}
.culhane-placeholder-map{position:relative;z-index:1;width:78%;height:68%;border-radius:1rem;border:1px solid color-mix(in srgb,currentColor 15%,transparent);background:radial-gradient(circle at 30% 35%,color-mix(in srgb,currentColor 12%,transparent),transparent 28%),radial-gradient(circle at 70% 66%,color-mix(in srgb,currentColor 10%,transparent),transparent 32%)}.culhane-placeholder-map b{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:2.3rem;opacity:.52}.culhane-placeholder-map span{position:absolute;height:1px;background:color-mix(in srgb,currentColor 22%,transparent);transform-origin:left center}.culhane-placeholder-map span:nth-child(2){left:12%;right:16%;top:36%;transform:rotate(-8deg)}.culhane-placeholder-map span:nth-child(3){left:18%;right:12%;top:62%;transform:rotate(9deg)}.culhane-placeholder-map span:nth-child(4){left:42%;top:16%;bottom:14%;width:1px;height:auto}
.culhane-project-hero.layout-text{padding:clamp(1.25rem,4vw,3rem);border:1px solid color-mix(in srgb,currentColor 12%,transparent);border-radius:clamp(1rem,2vw,1.5rem);background:linear-gradient(135deg,color-mix(in srgb,canvas 96%,currentColor 4%),color-mix(in srgb,canvas 100%,currentColor 0%));margin:clamp(1.5rem,4vw,3rem) 0}.culhane-project-hero.layout-text .culhane-hero-text{max-width:850px}.culhane-project-hero.layout-text h1{font-size:clamp(2.1rem,6vw,5rem);line-height:.98;margin:.15rem 0 .75rem}.culhane-project-hero.layout-text blockquote{margin:1.2rem 0 0;padding:clamp(1rem,3vw,1.6rem);border-left:4px solid color-mix(in srgb,currentColor 24%,transparent);background:color-mix(in srgb,canvas 96%,currentColor 4%);border-radius:0 1rem 1rem 0;display:grid;gap:.25rem}.culhane-project-hero.layout-text blockquote span{font-size:2.2rem;line-height:1;opacity:.38}.culhane-project-hero.layout-text blockquote p{margin:0;max-width:65ch;font-size:clamp(1rem,2vw,1.2rem);line-height:1.55;opacity:.82}

/* v1.3: font-card polish, reliable thumbnail focus, safer no-image layouts */
.culhane-project-image img,.culhane-hero-image img{object-position:var(--culhane-focus,50% 50%)}
.culhane-project-card{display:flex;flex-direction:column;min-width:0}.culhane-project-link{display:flex;flex-direction:column;min-height:100%}.culhane-project-body{display:block;min-width:0}.culhane-project-card h3{display:block!important;color:inherit!important;opacity:1!important;visibility:visible!important;overflow-wrap:anywhere}.culhane-project-card.no-thumbnail .culhane-project-body{border-top:1px solid color-mix(in srgb,currentColor 8%,transparent)}
.culhane-placeholder-title{position:relative;z-index:2;display:block;margin-top:.65rem;max-width:82%;font-size:.78rem;line-height:1.2;text-transform:none;letter-spacing:.02em;text-align:center;opacity:.75;overflow-wrap:anywhere}.culhane-project-placeholder>span+.culhane-placeholder-title{margin-top:.75rem}
.culhane-font-card-placeholder{isolation:isolate;display:grid!important;grid-template-rows:1fr auto;align-items:stretch;justify-items:stretch;padding:clamp(1rem,3vw,1.35rem);background:radial-gradient(circle at 12% 18%,color-mix(in srgb,currentColor 13%,transparent),transparent 30%),linear-gradient(135deg,color-mix(in srgb,canvas 91%,currentColor 9%),color-mix(in srgb,canvas 99%,currentColor 1%))}.culhane-font-card-placeholder:before{inset:.75rem;border-radius:1rem}.culhane-font-card-sample{position:relative;z-index:1;display:grid;place-items:center;min-height:7.25rem;font-size:clamp(4rem,10vw,7.5rem);line-height:.85;letter-spacing:-.08em;opacity:.78;text-transform:none}.culhane-font-card-title{position:relative;z-index:1;border-radius:.9rem;padding:.8rem .9rem;background:color-mix(in srgb,canvas 96%,currentColor 4%);box-shadow:0 10px 28px rgba(0,0,0,.055);border:1px solid color-mix(in srgb,currentColor 10%,transparent)}.culhane-font-card-title strong{display:block;font-size:1rem;line-height:1.15;letter-spacing:0;text-transform:none;opacity:.92;overflow-wrap:anywhere}.culhane-font-card-title span{display:block;margin-top:.25rem;font-size:.78rem;line-height:1.25;letter-spacing:.02em;text-transform:none;opacity:.62;overflow-wrap:anywhere}.culhane-project-card.mode-font.no-thumbnail .culhane-project-kicker{opacity:.58}.culhane-project-card.mode-font.no-thumbnail .culhane-project-subtitle:empty{display:none}
.culhane-font-warning{margin:0 0 1rem;padding:.9rem 1rem;border:1px solid color-mix(in srgb,currentColor 14%,transparent);border-radius:.9rem;background:color-mix(in srgb,canvas 94%,currentColor 6%);font-size:.95rem}.culhane-font-hero{border:1px solid color-mix(in srgb,currentColor 12%,transparent);border-radius:1.25rem;overflow:hidden;background:linear-gradient(135deg,color-mix(in srgb,canvas 96%,currentColor 4%),color-mix(in srgb,canvas 90%,currentColor 10%))}.culhane-font-hero p{margin:0;padding:clamp(1.25rem,4vw,3rem);font-size:clamp(2.4rem,9vw,7rem);line-height:1.02;letter-spacing:-.035em;overflow-wrap:anywhere}.culhane-font-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.75rem;margin:1rem 0 1.25rem}.culhane-font-row span{display:grid;place-items:center;min-height:5.75rem;border-radius:1rem;background:color-mix(in srgb,canvas 94%,currentColor 6%);border:1px solid color-mix(in srgb,currentColor 10%,transparent);font-size:clamp(2.2rem,5vw,4.4rem);line-height:1}.culhane-font-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin:1.25rem 0}.culhane-font-heading{margin:clamp(1.8rem,4vw,3rem) 0 1rem}.culhane-glyph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:.6rem}.culhane-glyph-cell{position:relative;min-height:88px;border:1px solid color-mix(in srgb,currentColor 10%,transparent);border-radius:.8rem;background:color-mix(in srgb,canvas 96%,currentColor 4%);padding:.55rem;display:grid;align-content:end;overflow:hidden}.culhane-glyph-cell b{display:block;font-size:clamp(2rem,5vw,3.8rem);line-height:1;text-align:center;font-weight:400}.culhane-glyph-label{position:absolute;left:.5rem;top:.42rem;font-size:.7rem;opacity:.45}.culhane-glyph-code{position:absolute;right:.5rem;top:.42rem;font-size:.62rem;opacity:.42}
@media(max-width:640px){.culhane-font-card-sample{min-height:5.75rem}.culhane-glyph-grid{grid-template-columns:repeat(auto-fill,minmax(72px,1fr))}.culhane-glyph-cell{min-height:76px}}

/* v1.4: softer card polish + lighter font handling */
.culhane-project-card{
  background:color-mix(in srgb,canvas 98%,currentColor 2%);
  border-color:color-mix(in srgb,currentColor 10%,transparent);
  box-shadow:0 10px 28px rgba(0,0,0,.055);
}
.culhane-project-card.has-thumbnail .culhane-project-body{
  position:relative;
  z-index:2;
  margin:-2.35rem .85rem .85rem;
  padding:.85rem .95rem;
  border:1px solid color-mix(in srgb,currentColor 9%,transparent);
  border-radius:1rem;
  background:color-mix(in srgb,canvas 82%,transparent);
  box-shadow:0 12px 30px rgba(0,0,0,.07);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}
.culhane-project-card.no-thumbnail .culhane-project-body{
  margin:.85rem;
  padding:.85rem .95rem;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent);
  border-radius:1rem;
  background:color-mix(in srgb,canvas 86%,transparent);
  box-shadow:0 10px 24px rgba(0,0,0,.045);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
.culhane-project-card .culhane-project-kicker{font-size:.68rem;margin-bottom:.35rem;letter-spacing:.11em;opacity:.56}
.culhane-project-card h3{font-size:clamp(1.02rem,1.7vw,1.28rem)!important;margin-bottom:.35rem!important;letter-spacing:-.02em}
.culhane-project-subtitle{font-size:.92rem;margin-bottom:.55rem;line-height:1.38;opacity:.72}
.culhane-project-meta{font-size:.8rem}.culhane-project-badge{font-size:.68rem;padding:.22rem .48rem;margin-top:.45rem}
.culhane-project-image{background:color-mix(in srgb,canvas 92%,currentColor 8%)}
.culhane-font-card-placeholder{
  padding:.9rem;
  background:
    radial-gradient(circle at 16% 18%,color-mix(in srgb,currentColor 10%,transparent),transparent 30%),
    linear-gradient(135deg,color-mix(in srgb,canvas 94%,currentColor 6%),color-mix(in srgb,canvas 99%,currentColor 1%));
}
.culhane-font-card-placeholder:before{inset:.65rem;border-radius:.9rem;opacity:.75}
.culhane-font-card-sample{min-height:6.6rem;font-size:clamp(3.3rem,8vw,6.6rem);opacity:.66}
.culhane-font-card-title{
  border-radius:.85rem;
  padding:.68rem .75rem;
  background:color-mix(in srgb,canvas 84%,transparent);
  border-color:color-mix(in srgb,currentColor 9%,transparent);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
.culhane-font-card-title strong{font-size:.94rem}.culhane-font-card-title span{font-size:.72rem;opacity:.58}
.culhane-project-card.mode-font.no-thumbnail .culhane-project-body{margin:.75rem .85rem .85rem}
.culhane-font-playground{border:1px solid color-mix(in srgb,currentColor 10%,transparent);border-radius:1rem;padding:1rem;background:color-mix(in srgb,canvas 96%,currentColor 4%);display:grid;gap:.75rem}.culhane-font-playground label{display:grid;gap:.4rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.09em;opacity:.7}.culhane-font-playground input{width:100%;box-sizing:border-box;border:1px solid color-mix(in srgb,currentColor 15%,transparent);border-radius:.7rem;padding:.65rem .75rem;background:canvas;color:inherit}.culhane-font-playground-output{font-size:clamp(2rem,7vw,5.5rem);line-height:1.04;overflow-wrap:anywhere}
.culhane-font-warning{border-left:4px solid color-mix(in srgb,currentColor 24%,transparent)}
@media(max-width:640px){.culhane-project-card.has-thumbnail .culhane-project-body{margin:-1.5rem .65rem .65rem}.culhane-project-card.no-thumbnail .culhane-project-body{margin:.65rem}.culhane-project-card h3{font-size:1.05rem!important}}

/* v1.5: unified workshop-shelf card treatment
   Make all thumbnail cards feel like the font cards: quiet image/object, small translucent title plate. */
.culhane-project-card{
  border-radius:1.15rem;
  overflow:hidden;
  background:color-mix(in srgb,canvas 97%,currentColor 3%);
  border:1px solid color-mix(in srgb,currentColor 10%,transparent);
  box-shadow:0 10px 28px rgba(0,0,0,.052);
}
.culhane-project-card:hover{
  transform:translateY(-2px);
  box-shadow:0 16px 34px rgba(0,0,0,.08);
}
.culhane-project-card .culhane-project-link{
  position:relative;
  min-height:100%;
  border-radius:inherit;
  overflow:hidden;
}
.culhane-project-card .culhane-project-image{
  aspect-ratio:1/1.08;
  min-height:0;
  background:
    radial-gradient(circle at 16% 14%,color-mix(in srgb,currentColor 5%,transparent),transparent 30%),
    linear-gradient(135deg,color-mix(in srgb,canvas 96%,currentColor 4%),color-mix(in srgb,canvas 99%,currentColor 1%));
}
.culhane-project-card.has-thumbnail .culhane-project-image img{
  height:100%;
  width:100%;
  object-fit:cover;
  object-position:var(--culhane-focus,50% 50%);
}
.culhane-project-card.has-thumbnail.mode-logo .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-font .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-website .culhane-project-image img{
  object-fit:contain;
  padding:.55rem;
  box-sizing:border-box;
  background:color-mix(in srgb,canvas 96%,currentColor 4%);
}
.culhane-project-card.has-thumbnail.mode-gallery .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-comic .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-illustration .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-default .culhane-project-image img{
  object-fit:cover;
}
.culhane-project-card .culhane-project-body{
  position:absolute;
  left:.78rem;
  right:.78rem;
  bottom:.78rem;
  margin:0!important;
  padding:.68rem .78rem!important;
  border-radius:.85rem;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent);
  background:color-mix(in srgb,canvas 80%,transparent);
  box-shadow:0 10px 24px rgba(0,0,0,.055);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  z-index:3;
}
.culhane-project-card.no-thumbnail .culhane-project-body{
  border-top:1px solid color-mix(in srgb,currentColor 8%,transparent)!important;
}
.culhane-project-card.mode-font.no-thumbnail .culhane-project-body{
  display:none!important;
}
.culhane-project-card .culhane-project-kicker{
  font-size:.62rem!important;
  line-height:1.2;
  margin:0 0 .25rem!important;
  letter-spacing:.09em;
  opacity:.55;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.culhane-project-card h3{
  font-size:clamp(.93rem,1.4vw,1.08rem)!important;
  line-height:1.08!important;
  margin:0!important;
  letter-spacing:-.015em;
}
.culhane-project-card .culhane-project-subtitle{
  margin:.23rem 0 0!important;
  font-size:.72rem!important;
  line-height:1.25!important;
  opacity:.58;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.culhane-project-card .culhane-project-meta{
  margin:.28rem 0 0!important;
  font-size:.68rem!important;
  line-height:1.2;
  opacity:.48;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.culhane-project-card .culhane-project-badge{
  display:inline-block;
  margin:.35rem .25rem 0 0!important;
  padding:.18rem .42rem;
  font-size:.58rem!important;
  line-height:1.2;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent);
  background:color-mix(in srgb,canvas 72%,transparent);
}
.culhane-font-card-placeholder{
  aspect-ratio:1/1.08;
  padding:.9rem!important;
}
.culhane-font-card-sample{
  min-height:auto!important;
  font-size:clamp(3.1rem,7.5vw,6.3rem)!important;
}
.culhane-font-card-title{
  margin:0;
  padding:.68rem .75rem!important;
  border-radius:.85rem!important;
  background:color-mix(in srgb,canvas 80%,transparent)!important;
  box-shadow:0 10px 24px rgba(0,0,0,.055)!important;
}
.culhane-font-card-title strong{
  font-size:.93rem!important;
  line-height:1.08!important;
}
.culhane-font-card-title span{
  font-size:.72rem!important;
  line-height:1.25!important;
  opacity:.58!important;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
/* Let text / writing cards breathe a little while still keeping the same title-plate language. */
.culhane-project-card.mode-writing .culhane-project-image,
.culhane-project-card.mode-poetry .culhane-project-image{
  aspect-ratio:1/1.18;
}
.culhane-project-card.mode-writing .culhane-project-body,
.culhane-project-card.mode-poetry .culhane-project-body{
  background:color-mix(in srgb,canvas 86%,transparent);
}
@media(max-width:640px){
  .culhane-project-card .culhane-project-body{left:.62rem;right:.62rem;bottom:.62rem;padding:.62rem .68rem!important}
  .culhane-project-card h3{font-size:.98rem!important}
  .culhane-project-card .culhane-project-subtitle{font-size:.72rem!important}
}

/* v1.6: true unified shelf cards
   Earlier versions had project-type aspect-ratio rules fighting each other.
   This sets one frame for every card and lets the image/placeholder fill it. */
.culhane-project-grid{
  align-items:start;
}
.culhane-project-card{
  position:relative!important;
  border-radius:1.12rem!important;
  overflow:hidden!important;
  background:color-mix(in srgb,canvas 97%,currentColor 3%)!important;
  border:1px solid color-mix(in srgb,currentColor 10%,transparent)!important;
  box-shadow:0 10px 26px rgba(0,0,0,.05)!important;
}
.culhane-project-card .culhane-project-link{
  position:relative!important;
  display:block!important;
  height:auto!important;
  min-height:0!important;
  aspect-ratio:1 / 1.08!important;
  border-radius:inherit!important;
  overflow:hidden!important;
  color:inherit!important;
  text-decoration:none!important;
}
.culhane-project-card .culhane-project-image,
.culhane-project-card.mode-tool .culhane-project-image,
.culhane-project-card.mode-writing .culhane-project-image,
.culhane-project-card.mode-poetry .culhane-project-image,
.culhane-project-card .culhane-project-placeholder,
.culhane-project-card .culhane-font-card-placeholder{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  aspect-ratio:auto!important;
  overflow:hidden!important;
  border-radius:0!important;
  background:
    radial-gradient(circle at 16% 14%,color-mix(in srgb,currentColor 5%,transparent),transparent 31%),
    linear-gradient(135deg,color-mix(in srgb,canvas 96%,currentColor 4%),color-mix(in srgb,canvas 99%,currentColor 1%))!important;
}
.culhane-project-card.has-thumbnail .culhane-project-image img{
  width:100%!important;
  height:100%!important;
  display:block!important;
  object-position:var(--culhane-focus,50% 50%)!important;
  object-fit:cover!important;
  padding:0!important;
  background:transparent!important;
  box-sizing:border-box!important;
}
/* These are usually marks/screenshots/type samples, so show them like objects on the shelf rather than cropping them. */
.culhane-project-card.has-thumbnail.mode-logo .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-font .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-website .culhane-project-image img{
  object-fit:contain!important;
  padding:clamp(.65rem,2vw,1rem)!important;
}
/* Tool projects should behave like illustrated projects by default. This fixes the odd Wayfarer's Turning blank/stretching. */
.culhane-project-card.has-thumbnail.mode-tool .culhane-project-image img{
  object-fit:cover!important;
  padding:0!important;
}
.culhane-project-card:hover .culhane-project-image img{
  transform:scale(1.025)!important;
}
.culhane-project-card.has-thumbnail.mode-logo:hover .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-font:hover .culhane-project-image img,
.culhane-project-card.has-thumbnail.mode-website:hover .culhane-project-image img{
  transform:scale(1.012)!important;
}
.culhane-project-card .culhane-project-body{
  position:absolute!important;
  left:.72rem!important;
  right:.72rem!important;
  bottom:.72rem!important;
  z-index:4!important;
  margin:0!important;
  padding:.62rem .72rem!important;
  border-radius:.82rem!important;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent)!important;
  background:color-mix(in srgb,canvas 84%,transparent)!important;
  box-shadow:0 10px 24px rgba(0,0,0,.05)!important;
  backdrop-filter:blur(12px)!important;
  -webkit-backdrop-filter:blur(12px)!important;
  max-height:44%;
  overflow:hidden;
}
.culhane-project-card .culhane-project-kicker{
  margin:0 0 .22rem!important;
  font-size:.58rem!important;
  line-height:1.15!important;
  letter-spacing:.08em!important;
  text-transform:uppercase!important;
  opacity:.52!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.culhane-project-card h3{
  margin:0!important;
  font-size:clamp(.9rem,1.25vw,1.04rem)!important;
  line-height:1.08!important;
  letter-spacing:-.01em!important;
}
.culhane-project-card .culhane-project-subtitle{
  margin:.22rem 0 0!important;
  font-size:.68rem!important;
  line-height:1.22!important;
  opacity:.58!important;
  display:-webkit-box!important;
  -webkit-line-clamp:2!important;
  -webkit-box-orient:vertical!important;
  overflow:hidden!important;
}
.culhane-project-card .culhane-project-meta,
.culhane-project-card .culhane-project-badge{
  display:none!important;
}
/* No-image font cards already carry their own internal title plate, so avoid a duplicate card body. */
.culhane-project-card.mode-font.no-thumbnail .culhane-project-body{
  display:none!important;
}
.culhane-font-card-placeholder{
  display:grid!important;
  grid-template-rows:1fr auto!important;
  gap:.55rem!important;
  padding:.8rem!important;
  isolation:isolate!important;
}
.culhane-font-card-sample{
  display:grid!important;
  place-items:center!important;
  min-height:0!important;
  font-size:clamp(3.1rem,7vw,6.1rem)!important;
  line-height:.9!important;
  letter-spacing:-.06em!important;
  opacity:.64!important;
}
.culhane-font-card-title{
  position:relative!important;
  z-index:3!important;
  margin:0!important;
  padding:.62rem .72rem!important;
  border-radius:.82rem!important;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent)!important;
  background:color-mix(in srgb,canvas 84%,transparent)!important;
  box-shadow:0 10px 24px rgba(0,0,0,.05)!important;
  backdrop-filter:blur(12px)!important;
  -webkit-backdrop-filter:blur(12px)!important;
}
.culhane-font-card-title strong{
  font-size:clamp(.9rem,1.25vw,1.04rem)!important;
  line-height:1.08!important;
}
.culhane-font-card-title span{
  margin-top:.22rem!important;
  font-size:.68rem!important;
  line-height:1.22!important;
  opacity:.58!important;
  display:-webkit-box!important;
  -webkit-line-clamp:2!important;
  -webkit-box-orient:vertical!important;
  overflow:hidden!important;
}
/* No-thumbnail writing/poetry cards still use the same frame, but keep the preview text calm and readable. */
.culhane-project-card.no-thumbnail:not(.mode-font) .culhane-project-placeholder{
  display:grid!important;
  place-items:center!important;
  padding:1rem!important;
}
.culhane-project-card.no-thumbnail:not(.mode-font) .culhane-placeholder-paper,
.culhane-project-card.no-thumbnail:not(.mode-font) .culhane-placeholder-browser,
.culhane-project-card.no-thumbnail:not(.mode-font) .culhane-placeholder-map{
  max-width:80%;
  opacity:.72;
}
@media(max-width:640px){
  .culhane-project-card .culhane-project-body,
  .culhane-font-card-title{
    left:.58rem!important;
    right:.58rem!important;
    bottom:.58rem!important;
    padding:.58rem .64rem!important;
  }
  .culhane-project-card h3,
  .culhane-font-card-title strong{font-size:.96rem!important}
  .culhane-project-card .culhane-project-subtitle,
  .culhane-font-card-title span{font-size:.68rem!important}
}

/* v1.7: calmer font specimen page + always-lightweight playground */
.culhane-project-custom-content{
  margin:clamp(1.25rem,3vw,2rem) 0;
}
.culhane-project-custom-content > *:first-child{margin-top:0}
.culhane-project-custom-content > *:last-child{margin-bottom:0}
.culhane-font-specimen{
  display:grid!important;
  gap:clamp(1rem,2.6vw,1.6rem)!important;
  max-width:1040px;
  margin-left:auto!important;
  margin-right:auto!important;
}
.culhane-font-panel{
  border:1px solid color-mix(in srgb,currentColor 10%,transparent);
  border-radius:clamp(1rem,2vw,1.45rem);
  background:
    radial-gradient(circle at 8% 0%,color-mix(in srgb,currentColor 6%,transparent),transparent 31%),
    linear-gradient(135deg,color-mix(in srgb,canvas 97%,currentColor 3%),color-mix(in srgb,canvas 93%,currentColor 7%));
  box-shadow:0 18px 50px rgba(0,0,0,.055);
  padding:clamp(1rem,3vw,1.55rem);
  overflow:hidden;
}
.culhane-font-specimen-head{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:1rem;
  align-items:start;
  margin-bottom:clamp(1rem,2.4vw,1.4rem);
}
.culhane-font-specimen-head h2{
  margin:.1rem 0 0!important;
  font-size:clamp(1.35rem,3vw,2.2rem)!important;
  line-height:1.05!important;
}
.culhane-font-details{
  list-style:none!important;
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:.45rem;
  margin:0!important;
  padding:0!important;
  max-width:520px;
}
.culhane-font-details li{
  display:flex;
  align-items:center;
  gap:.35rem;
  margin:0!important;
  padding:.42rem .58rem;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent);
  border-radius:999px;
  background:color-mix(in srgb,canvas 78%,transparent);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  font-size:.75rem;
  line-height:1.15;
  white-space:nowrap;
}
.culhane-font-details strong{
  opacity:.52;
  font-weight:600;
}
.culhane-font-details span{
  opacity:.82;
}
.culhane-font-warning{
  margin:0 0 1rem!important;
  padding:.85rem 1rem!important;
  border-radius:.9rem!important;
  background:color-mix(in srgb,canvas 92%,currentColor 8%)!important;
}
.culhane-font-playground{
  border:1px solid color-mix(in srgb,currentColor 9%,transparent)!important;
  border-radius:1.1rem!important;
  padding:0!important;
  background:color-mix(in srgb,canvas 82%,transparent)!important;
  overflow:hidden;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35);
}
.culhane-font-playground-controls{
  display:grid;
  grid-template-columns:minmax(240px,1fr) minmax(160px,.35fr);
  gap:.7rem;
  align-items:end;
  padding:.8rem;
  border-bottom:1px solid color-mix(in srgb,currentColor 8%,transparent);
  background:color-mix(in srgb,canvas 88%,transparent);
}
.culhane-font-playground label{
  display:grid!important;
  gap:.36rem!important;
  font-size:.68rem!important;
  font-weight:600!important;
  line-height:1.2!important;
  text-transform:uppercase!important;
  letter-spacing:.1em!important;
  opacity:.72!important;
}
.culhane-font-playground input[type="text"]{
  width:100%!important;
  min-height:2.55rem;
  box-sizing:border-box!important;
  border:1px solid color-mix(in srgb,currentColor 10%,transparent)!important;
  border-radius:.72rem!important;
  padding:.65rem .78rem!important;
  background:color-mix(in srgb,canvas 95%,currentColor 5%)!important;
  color:inherit!important;
  font:inherit!important;
  letter-spacing:normal!important;
  text-transform:none!important;
  opacity:1!important;
}
.culhane-font-size-control{
  min-width:0;
}
.culhane-font-size-control span{
  font-variant-numeric:tabular-nums;
  opacity:.62;
}
.culhane-font-playground input[type="range"]{
  width:100%;
  accent-color:currentColor;
  margin:.6rem 0 .45rem;
}
.culhane-font-playground-output{
  display:block!important;
  min-height:clamp(180px,28vw,320px);
  padding:clamp(1.2rem,4vw,2.6rem)!important;
  font-size:var(--culhane-playground-size,clamp(2.8rem,8vw,7.2rem))!important;
  line-height:1.02!important;
  letter-spacing:-.025em;
  overflow-wrap:anywhere!important;
  word-break:break-word;
  background:
    radial-gradient(circle at 12% 10%,rgba(255,255,255,.45),transparent 36%),
    color-mix(in srgb,canvas 94%,currentColor 6%);
}
.culhane-font-hero{
  border-radius:1.1rem!important;
  border:1px solid color-mix(in srgb,currentColor 9%,transparent)!important;
  background:color-mix(in srgb,canvas 92%,currentColor 8%)!important;
}
.culhane-font-hero p{
  padding:clamp(1.2rem,4vw,2.6rem)!important;
}
.culhane-font-row{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:.65rem!important;
  margin:clamp(.85rem,2vw,1.1rem) 0 0!important;
}
.culhane-font-row span{
  min-height:clamp(64px,9vw,92px)!important;
  border-radius:.85rem!important;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent)!important;
  background:color-mix(in srgb,canvas 86%,transparent)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28);
  font-size:clamp(2rem,5vw,4.25rem)!important;
}
.culhane-font-actions{
  display:flex!important;
  gap:.6rem!important;
  flex-wrap:wrap!important;
  margin:clamp(1rem,2vw,1.2rem) 0 0!important;
}
.culhane-font-actions .culhane-project-button{
  padding:.55rem .82rem!important;
  border-radius:999px!important;
  font-size:.82rem!important;
  background:color-mix(in srgb,canvas 88%,transparent);
  box-shadow:0 6px 16px rgba(0,0,0,.045);
}
.culhane-font-character-set{
  border:1px solid color-mix(in srgb,currentColor 10%,transparent);
  border-radius:1.15rem;
  background:color-mix(in srgb,canvas 97%,currentColor 3%);
  overflow:hidden;
}
.culhane-font-character-set summary{
  cursor:pointer;
  list-style:none;
  display:flex;
  justify-content:space-between;
  gap:1rem;
  align-items:center;
  padding:.85rem 1rem;
  border-bottom:1px solid color-mix(in srgb,currentColor 8%,transparent);
}
.culhane-font-character-set summary::-webkit-details-marker{display:none}
.culhane-font-character-set summary span{
  font-weight:700;
  font-size:clamp(1rem,2vw,1.25rem);
}
.culhane-font-character-set summary small{
  opacity:.55;
}
.culhane-font-character-set:not([open]) summary{border-bottom:0}
.culhane-font-character-set .culhane-glyph-grid{
  display:grid!important;
  grid-template-columns:repeat(auto-fill,minmax(72px,1fr))!important;
  gap:.45rem!important;
  border:0!important;
  padding:.85rem!important;
}
.culhane-font-character-set .culhane-glyph-cell{
  min-height:78px!important;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent)!important;
  border-radius:.72rem!important;
  background:color-mix(in srgb,canvas 92%,currentColor 8%)!important;
  padding:.45rem!important;
  box-shadow:none!important;
}
.culhane-font-character-set .culhane-glyph-cell b{
  font-size:clamp(1.8rem,4vw,3.3rem)!important;
}
.culhane-font-character-set .culhane-glyph-label{font-size:.66rem!important;opacity:.42!important}
.culhane-font-character-set .culhane-glyph-code{font-size:.56rem!important;opacity:.35!important}
/* Tidy the generated no-image font hero at the top of font projects. */
.culhane-project-single .culhane-project-hero.placeholder-glyph,
.culhane-project-single .culhane-project-hero.layout-text.placeholder-glyph{
  max-width:1040px;
  margin-left:auto!important;
  margin-right:auto!important;
  border:1px solid color-mix(in srgb,currentColor 8%,transparent)!important;
  box-shadow:0 12px 34px rgba(0,0,0,.04);
  background:color-mix(in srgb,canvas 97%,currentColor 3%)!important;
}
.culhane-project-single .culhane-project-hero.placeholder-glyph .culhane-hero-text{
  background:transparent!important;
  padding:clamp(1.1rem,3vw,2rem)!important;
}
.culhane-project-single .culhane-project-hero.placeholder-glyph blockquote{
  border-left:0!important;
  border-radius:1rem!important;
  background:color-mix(in srgb,canvas 91%,currentColor 9%)!important;
  padding:1rem!important;
}
@media(max-width:720px){
  .culhane-font-specimen-head{grid-template-columns:1fr}
  .culhane-font-details{justify-content:flex-start}
  .culhane-font-playground-controls{grid-template-columns:1fr}
  .culhane-font-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .culhane-font-row span:last-child{grid-column:span 2}
  .culhane-font-playground-output{min-height:150px}
}

/* Interactionz referral block */
.culhane-interactionz-referral{
  width:min(100%,1040px);
  margin:clamp(2rem,5vw,4rem) auto;
  display:grid;
  grid-template-columns:minmax(0,1.4fr) minmax(220px,.7fr);
  gap:clamp(1rem,3vw,2rem);
  align-items:center;
  padding:clamp(1rem,3vw,1.65rem);
  border:1px solid color-mix(in srgb,currentColor 9%,transparent);
  border-radius:1.35rem;
  background:
    radial-gradient(circle at 8% 0%,rgba(255,255,255,.55),transparent 34%),
    color-mix(in srgb,canvas 95%,currentColor 5%);
  box-shadow:0 14px 38px rgba(0,0,0,.045);
}
.culhane-interactionz-referral h2{
  margin:.12rem 0 .65rem!important;
  font-size:clamp(1.45rem,3vw,2rem)!important;
  line-height:1.05!important;
}
.culhane-interactionz-kicker{
  margin:0!important;
  font-size:.72rem!important;
  letter-spacing:.14em;
  text-transform:uppercase;
  opacity:.56;
}
.culhane-interactionz-text p{
  margin:.4rem 0!important;
  max-width:64ch;
}
.culhane-story-text,
.culhane-support-section,
.culhane-theme-description,
.culhane-interactionz-text,
.culhane-interactionz-smallnote,
.culhane-project-timeline li span{
  overflow-wrap:anywhere;
  word-break:normal;
}
.culhane-story-text p,
.culhane-support-section p,
.culhane-interactionz-smallnote p{
  white-space:normal;
}
.culhane-interactionz-smallnote p{
  margin:.25rem 0!important;
}
.culhane-interactionz-smallnote{
  margin:.8rem 0 0!important;
  font-size:.86rem!important;
  opacity:.64;
  max-width:58ch;
}
.culhane-interactionz-mark{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:.85rem;
  min-height:160px;
  border-radius:1.05rem;
  background:rgba(255,255,255,.46);
  border:1px solid rgba(255,255,255,.55);
  padding:1.1rem;
}
.culhane-interactionz-logo-link{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  text-decoration:none!important;
}
.culhane-interactionz-logo-img{
  display:block;
  max-width:min(220px,100%);
  max-height:110px;
  width:auto;
  height:auto;
  object-fit:contain;
}
.culhane-interactionz-wordmark{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:84px;
  width:100%;
  border-radius:.9rem;
  font-weight:800;
  font-size:clamp(1.4rem,3vw,2.1rem);
  letter-spacing:.01em;
  color:currentColor;
  background:color-mix(in srgb,canvas 88%,currentColor 12%);
}
.culhane-interactionz-button{
  font-size:.86rem!important;
  padding:.6rem .9rem!important;
}
@media(max-width:760px){
  .culhane-interactionz-referral{grid-template-columns:1fr}
  .culhane-interactionz-mark{align-items:flex-start;min-height:0}
  .culhane-interactionz-logo-link{justify-content:flex-start}
}

/* v2.0: settings-first colour system
   Keep the shelf warm/paper-based instead of falling back to browser canvas grey. */
:root{
  --culhane-paper-bg:#fbf7ee;
  --culhane-card-bg:#fffaf3;
  --culhane-panel-bg:#fff9ee;
  --culhane-soft-bg:#f8f0e3;
  --culhane-interactionz-bg:#f7ead5;
  --culhane-interactionz-panel-bg:#fff8ec;
  --culhane-card-title-font:inherit;
  --culhane-card-title-weight:700;
}
.culhane-project-card,
.culhane-theme-card,
.culhane-term-card{
  background:var(--culhane-card-bg)!important;
}
.culhane-project-card .culhane-project-image,
.culhane-project-card .culhane-project-placeholder,
.culhane-project-card .culhane-font-card-placeholder{
  background:
    radial-gradient(circle at 16% 14%,rgba(0,0,0,.035),transparent 31%),
    linear-gradient(135deg,var(--culhane-soft-bg),var(--culhane-card-bg))!important;
}
.culhane-project-card.has-thumbnail .culhane-project-image img{
  background:var(--culhane-soft-bg)!important;
}
.culhane-project-card .culhane-project-body,
.culhane-font-card-title{
  background:color-mix(in srgb,var(--culhane-panel-bg) 88%,transparent)!important;
}
@supports not (background:color-mix(in srgb, white 50%, transparent)){
  .culhane-project-card .culhane-project-body,
  .culhane-font-card-title{background:var(--culhane-panel-bg)!important;}
}
.culhane-project-card h3,
.culhane-font-card-title strong{
  font-family:var(--culhane-card-title-font)!important;
  font-weight:var(--culhane-card-title-weight)!important;
}
.culhane-project-story,
.culhane-project-custom-content,
.culhane-project-panel,
.culhane-project-support,
.culhane-related-projects,
.culhane-showcase-section,
.culhane-example-gallery,
.culhane-process-gallery,
.culhane-timeline,
.culhane-audio-note,
.culhane-theme-intro,
.culhane-wander-box,
.culhane-font-specimen,
.culhane-font-panel,
.culhane-font-hero,
.culhane-font-playground,
.culhane-glyph-cell{
  background:var(--culhane-card-bg)!important;
}
.culhane-font-panel,
.culhane-font-playground,
.culhane-font-hero,
.culhane-glyph-cell,
.culhane-font-row span,
.culhane-font-details li{
  background:color-mix(in srgb,var(--culhane-panel-bg) 88%,transparent)!important;
}
.culhane-font-preview,
.culhane-font-playground-output,
.culhane-font-character-strip{
  background:linear-gradient(135deg,var(--culhane-soft-bg),var(--culhane-card-bg))!important;
}
.culhane-interactionz-referral{
  background:radial-gradient(circle at 8% 0%,rgba(255,255,255,.45),transparent 34%),var(--culhane-interactionz-bg)!important;
}
.culhane-interactionz-mark{
  background:var(--culhane-interactionz-panel-bg)!important;
}
.culhane-placeholder-paper,
.culhane-placeholder-browser,
.culhane-placeholder-map{
  background:color-mix(in srgb,var(--culhane-panel-bg) 86%,transparent)!important;
}

/* v2.1 stability pass */
.culhane-reader-page img[data-src]{opacity:.25;min-height:240px;background:var(--culhane-soft-bg,#f8f0e3);}
.culhane-comic-reader .culhane-reader-stage{background:var(--culhane-card-bg,#fffaf3);border-radius:18px;overflow:hidden;}
.culhane-comic-vertical figure,.culhane-comic-grid figure,.culhane-example-gallery figure,.culhane-process-gallery figure{margin:0;}
.culhane-comic-vertical img,.culhane-comic-grid img,.culhane-example-gallery img,.culhane-process-gallery img{display:block;max-width:100%;height:auto;border-radius:14px;}
.culhane-font-warning{background:#fff3cd;border:1px solid rgba(160,110,20,.25);border-radius:12px;padding:12px 14px;margin:14px 0;color:#513b08;}
.culhane-font-character-set summary{cursor:pointer;}
.culhane-font-playground-output{overflow-wrap:anywhere;word-break:break-word;}

/* v2.2.4 — custom comic reader arrows using Dylan's hand-drawn chevrons */
.culhane-comic-reader .culhane-reader-arrow{
  background: color-mix(in srgb, var(--culhane-card-bg, #fffaf3) 86%, transparent);
  border: 1px solid color-mix(in srgb, currentColor 10%, transparent);
  box-shadow: 0 8px 22px rgba(0,0,0,.07);
  color: transparent;
  font-size: 0;
  overflow: hidden;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.culhane-comic-reader .culhane-reader-arrow::before{
  content: "";
  display: block;
  width: 54%;
  height: 54%;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  opacity: .9;
  transition: transform .16s ease, opacity .16s ease;
}
.culhane-comic-reader .culhane-reader-prev::before{
  background-image: url('culhane-arrow-left.png');
}
.culhane-comic-reader .culhane-reader-next::before{
  background-image: url('culhane-arrow-right.png');
}
.culhane-comic-reader .culhane-reader-arrow:hover::before{
  opacity: 1;
  transform: scale(1.08);
}
.culhane-comic-reader .culhane-reader-arrow[disabled]::before{
  opacity: .22;
  transform: none;
}
@media(max-width:720px){
  .culhane-comic-reader .culhane-reader-arrow{
    background: color-mix(in srgb, var(--culhane-card-bg, #fffaf3) 78%, transparent);
  }
  .culhane-comic-reader .culhane-reader-arrow::before{
    width: 60%;
    height: 60%;
  }
}

/* v2.2.5 archive pages: make /projects and taxonomy archives feel like the homepage shelf sections */
.culhane-project-archive-page{max-width:min(1120px,calc(100% - 2rem));margin:0 auto;padding:clamp(2rem,5vw,4rem) 0;background:transparent}
.culhane-project-archive-intro{margin:0 0 clamp(1.5rem,4vw,2.75rem);padding:clamp(1.1rem,3vw,2rem);border:1px solid var(--culhane-border,rgba(0,0,0,.10));border-radius:1.25rem;background:var(--culhane-section-bg,#fbf6ec);box-shadow:0 12px 32px rgba(0,0,0,.045)}
.culhane-project-archive-intro h1{margin:.1rem 0 .5rem;line-height:1.05}
.culhane-project-archive-intro p,.culhane-archive-description{max-width:68ch;margin:0;opacity:.82;line-height:1.55}
.culhane-project-taxonomy-page .culhane-theme-intro,.culhane-project-taxonomy-page .culhane-collection-intro{margin-top:0}

/* v2.2.6 — calmer default project surfaces */
.culhane-showcase figure,
.culhane-image-gallery figure,
.culhane-logo-board figure,
.culhane-comic-grid figure,
.culhane-comic-vertical figure,
.culhane-example-grid figure,
.culhane-process-strip figure{
  background:var(--culhane-showcase-bg, #fff) !important;
}
.culhane-hero-text{
  background:var(--culhane-hero-panel-bg, #fff) !important;
}
.culhane-image-gallery .culhane-lightbox-link,
.culhane-example-grid .culhane-lightbox-link,
.culhane-process-strip .culhane-lightbox-link{
  display:block;
  width:100%;
  height:100%;
}
.culhane-image-gallery .culhane-lightbox-link img{
  cursor:zoom-in;
}


/* v2.2.8 — consistent small-gallery treatment and sortable media previews */
.culhane-logo-board,
.culhane-example-grid,
.culhane-process-strip,
.culhane-image-gallery,
.culhane-tool-gallery{
  align-items:start;
}
.culhane-logo-board figure,
.culhane-example-grid figure,
.culhane-process-strip figure,
.culhane-image-gallery figure,
.culhane-tool-gallery figure,
.culhane-website-frame,
.culhane-tool-images,
.culhane-showcase figure{
  background:var(--culhane-showcase-bg, #fff) !important;
}
.culhane-logo-board .culhane-lightbox-link,
.culhane-image-gallery .culhane-lightbox-link,
.culhane-example-grid .culhane-lightbox-link,
.culhane-process-strip .culhane-lightbox-link,
.culhane-website-frame .culhane-lightbox-link,
.culhane-tool-images .culhane-lightbox-link,
.culhane-tool-gallery .culhane-lightbox-link,
.culhane-comic-grid .culhane-lightbox-link,
.culhane-comic-vertical .culhane-lightbox-link{
  display:block;
  width:100%;
  height:100%;
}
.culhane-logo-board .culhane-lightbox-link img,
.culhane-image-gallery .culhane-lightbox-link img,
.culhane-example-grid .culhane-lightbox-link img,
.culhane-process-strip .culhane-lightbox-link img,
.culhane-website-frame .culhane-lightbox-link img,
.culhane-tool-images .culhane-lightbox-link img,
.culhane-tool-gallery .culhane-lightbox-link img,
.culhane-comic-grid .culhane-lightbox-link img,
.culhane-comic-vertical .culhane-lightbox-link img{
  cursor:zoom-in;
}
.culhane-tool-gallery .culhane-showcase figure,
.culhane-tool-gallery figure{min-height:auto;}
.culhane-website-frame > a{display:block;}
.culhane-logo-board figcaption,
.culhane-example-grid figcaption,
.culhane-process-strip figcaption{
  padding:.55rem .75rem;
  font-size:.9rem;
  opacity:.72;
}

/* admin media reordering */
.culhane-media-preview{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;min-height:24px}
.culhane-media-preview-item{position:relative;display:flex;align-items:center;justify-content:center;width:74px;height:74px;padding:6px;border:1px solid #d0d5dc;border-radius:10px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.culhane-media-preview-item img{width:100%;height:100%;object-fit:cover;border-radius:6px;display:block}
.culhane-preview-handle,.culhane-preview-remove{position:absolute;top:4px;width:20px;height:20px;border:0;border-radius:999px;display:grid;place-items:center;font-size:12px;line-height:1;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.culhane-preview-handle{left:4px;background:#f6f7f7;color:#50575e;cursor:grab}
.culhane-preview-remove{right:4px;background:#b42318;color:#fff}
.culhane-media-preview-item .culhane-file-pill{max-width:100%;font-size:11px;text-align:center;line-height:1.25;padding:4px 6px;white-space:normal;border-radius:8px}
.culhane-media-preview-placeholder{width:74px;height:74px;border:1px dashed #8c8f94;border-radius:10px;background:#f6f7f7}


/* v2.2.9 — unified workshop page surfaces */
.single-culhane_project .culhane-project-story,
.single-culhane_project .culhane-project-custom-content,
.single-culhane_project .culhane-project-panel,
.single-culhane_project .culhane-project-support,
.single-culhane_project .culhane-related-projects,
.single-culhane_project .culhane-example-gallery,
.single-culhane_project .culhane-process-gallery,
.single-culhane_project .culhane-project-timeline,
.single-culhane_project .culhane-audio-note,
.single-culhane_project .culhane-showcase:not(.culhane-comic-reader):not(.culhane-image-gallery):not(.culhane-logo-board):not(.culhane-comic-grid):not(.culhane-comic-vertical){
  border:1px solid var(--culhane-border,rgba(0,0,0,.10));
  border-radius:1.25rem;
  background:var(--culhane-card-bg,#fff);
  box-shadow:0 12px 32px rgba(0,0,0,.045);
  padding:clamp(1rem,2.4vw,1.5rem);
}
.single-culhane_project .culhane-project-story h2,
.single-culhane_project .culhane-example-gallery h2,
.single-culhane_project .culhane-process-gallery h2,
.single-culhane_project .culhane-project-timeline h2,
.single-culhane_project .culhane-audio-note h2,
.single-culhane_project .culhane-related-projects h2{
  margin-top:0;
  line-height:1.1;
}
.culhane-showcase,
.culhane-example-gallery,
.culhane-process-gallery,
.culhane-project-story,
.culhane-project-panel,
.culhane-project-support,
.culhane-related-projects{
  margin-block:clamp(1.25rem,4vw,2.75rem);
}
.culhane-image-gallery,
.culhane-logo-board,
.culhane-example-grid,
.culhane-process-strip,
.culhane-tool-gallery{
  gap:clamp(.85rem,2vw,1.25rem);
}
.culhane-image-gallery figure,
.culhane-logo-board figure,
.culhane-example-grid figure,
.culhane-process-strip figure,
.culhane-tool-gallery figure,
.culhane-comic-grid figure,
.culhane-comic-vertical figure{
  box-shadow:0 8px 22px rgba(0,0,0,.045);
}
.culhane-logo-board figure{
  min-height:clamp(150px,22vw,240px);
}
.culhane-lightbox-link:focus-visible{
  outline:3px solid currentColor;
  outline-offset:4px;
  border-radius:.75rem;
}
.culhane-lightbox-link:hover img{
  filter:saturate(1.03) contrast(1.01);
}
.culhane-website-frame .culhane-lightbox-link img,
.culhane-tool-images .culhane-lightbox-link img{
  display:block;
  width:100%;
  height:auto;
}
@media(max-width:720px){
  .single-culhane_project .culhane-project-story,
  .single-culhane_project .culhane-project-custom-content,
  .single-culhane_project .culhane-project-panel,
  .single-culhane_project .culhane-project-support,
  .single-culhane_project .culhane-related-projects,
  .single-culhane_project .culhane-example-gallery,
  .single-culhane_project .culhane-process-gallery,
  .single-culhane_project .culhane-project-timeline,
  .single-culhane_project .culhane-audio-note{
    border-radius:1rem;
  }
}


/* v2.2.10 — lightbox image wrapper for transparent artwork/logos */
.culhane-lightbox figure{
  width:min(96vw,1400px);
}
.culhane-lightbox-image-wrap{
  display:grid;
  place-items:center;
  max-width:100%;
  max-height:86vh;
  padding:clamp(.75rem,2.5vw,2rem);
  border-radius:clamp(.75rem,2vw,1.35rem);
  background:var(--culhane-lightbox-active-bg,var(--culhane-lightbox-image-bg,#fff));
  box-shadow:0 20px 80px rgba(0,0,0,.35);
}
.culhane-lightbox.has-lightbox-bg-light .culhane-lightbox-image-wrap{
  background:var(--culhane-lightbox-image-bg,#fff);
}
.culhane-lightbox.has-lightbox-bg-dark .culhane-lightbox-image-wrap{
  background:var(--culhane-lightbox-image-bg-dark,#141414);
}
.culhane-lightbox .culhane-lightbox-image-wrap img{
  max-width:100%;
  max-height:calc(86vh - clamp(1.5rem,5vw,4rem));
  width:auto;
  height:auto;
  object-fit:contain;
  box-shadow:none;
  background:transparent;
}
.culhane-lightbox-bg-toggle{
  appearance:none;
  position:absolute;
  top:1rem;
  right:4.25rem;
  width:2.75rem;
  height:2.75rem;
  border:1px solid rgba(255,255,255,.28);
  border-radius:999px;
  background:rgba(255,255,255,.12);
  color:#fff;
  display:grid;
  place-items:center;
  cursor:pointer;
  line-height:1;
  font-size:1.25rem;
}
.culhane-lightbox-bg-toggle:hover,
.culhane-lightbox-close:hover,
.culhane-lightbox-arrow:hover{
  background:rgba(255,255,255,.2);
}
@media(max-width:720px){
  .culhane-lightbox-bg-toggle{
    top:.5rem;
    right:3.65rem;
    width:2.5rem;
    height:2.5rem;
  }
  .culhane-lightbox-image-wrap{
    padding:.75rem;
    border-radius:.9rem;
  }
}


/* v2.2.11 — smoother upload flow */
.culhane-upload-flow{
  display:grid;
  grid-template-columns:minmax(220px,.8fr) minmax(320px,1.4fr);
  gap:14px;
  margin:0 0 14px;
}
.culhane-project-checklist,
.culhane-admin-mode-help,
.culhane-story-prompts{
  background:#fff;
  border:1px solid #dcdcde;
  border-radius:14px;
  padding:14px 16px;
}
.culhane-project-checklist h3,
.culhane-admin-mode-help h3{
  margin:0 0 10px;
  font-size:14px;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:#50575e;
}
.culhane-project-checklist ul{
  margin:0;
  padding:0;
  list-style:none;
}
.culhane-project-checklist li{
  display:flex;
  align-items:center;
  gap:8px;
  margin:7px 0;
  color:#646970;
}
.culhane-project-checklist li::before{
  content:"○";
  color:#8c8f94;
}
.culhane-project-checklist li.is-complete{
  color:#1e7d37;
}
.culhane-project-checklist li.is-complete::before{
  content:"✓";
  font-weight:700;
}
.culhane-admin-mode-help > div,
.culhane-story-prompts p{
  display:none;
}
.culhane-admin-mode-help > div.is-active,
.culhane-story-prompts p.is-active{
  display:block;
}
.culhane-admin-mode-help ul{
  margin:.5rem 0 0 1.2rem;
}
.culhane-admin-mode-help li{
  margin:.35rem 0;
}
.culhane-story-prompts{
  background:#f7f3ea;
  border-color:#e5dbc8;
  margin:0 0 14px;
}
.culhane-story-prompts strong{
  display:block;
  margin:0 0 6px;
}
.culhane-story-prompts p{
  margin:.2rem 0 0;
  color:#50575e;
}
.culhane-quick-add-wrap{
  max-width:1160px;
}
.culhane-quick-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:16px;
  margin-top:18px;
}
.culhane-quick-grid section{
  background:#fff;
  border:1px solid #dcdcde;
  border-radius:14px;
  padding:16px;
}
.culhane-quick-grid h2{
  margin-top:0;
}
.culhane-quick-grid label{
  display:block;
  font-weight:600;
  margin:0 0 14px;
}
.culhane-quick-grid input,
.culhane-quick-grid textarea,
.culhane-quick-grid select{
  margin-top:6px;
}
@media(max-width:900px){
  .culhane-upload-flow{
    grid-template-columns:1fr;
  }
}

/* slightly calmer generated project rhythm */
.single-culhane_project .culhane-project-story,
.single-culhane_project .culhane-project-custom-content,
.single-culhane_project .culhane-project-panel,
.single-culhane_project .culhane-project-support,
.single-culhane_project .culhane-related-projects,
.single-culhane_project .culhane-example-gallery,
.single-culhane_project .culhane-process-gallery{
  max-width:1100px;
}


/* v2.2.12 — generic partner/referral link options */
.culhane-partner-link .culhane-interactionz-logo-img{
  max-width:var(--culhane-partner-logo-max-width, 260px);
  width:100%;
  height:auto;
  object-fit:contain;
}
.culhane-partner-link .culhane-interactionz-wordmark{
  font-size:clamp(1.8rem,4vw,3rem);
}
.culhane-partner-link .culhane-interactionz-button,
.culhane-interactionz-referral .culhane-interactionz-button{
  background:var(--culhane-partner-button-bg, #8d78bf) !important;
  color:var(--culhane-partner-button-text, #ffffff) !important;
  border-color:color-mix(in srgb, var(--culhane-partner-button-bg, #8d78bf) 75%, black 10%) !important;
}
.culhane-partner-link .culhane-interactionz-button:hover,
.culhane-interactionz-referral .culhane-interactionz-button:hover{
  filter:brightness(.96);
  transform:translateY(-1px);
}
.culhane-partner-link .culhane-interactionz-mark{
  min-width:min(320px,100%);
}


/* v2.2.17 - unified project action buttons */
:root{
  --culhane-action-bg:#8d78bf;
  --culhane-action-text:#ffffff;
  --culhane-action-border:#7c67ad;
  --culhane-action-bg-soft:color-mix(in srgb, var(--culhane-action-bg) 12%, var(--culhane-card-bg, #fff));
  --culhane-action-text-soft:#4b3f72;
}
.culhane-project-actions,
.culhane-font-actions{
  display:flex!important;
  flex-wrap:wrap!important;
  gap:.65rem!important;
  align-items:center!important;
  margin:clamp(.9rem,2vw,1.2rem) 0 0!important;
}
.culhane-project-button,
.culhane-font-actions .culhane-project-button,
.culhane-interactionz-button{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:.45em!important;
  min-height:44px!important;
  min-width:min(100%, 11.5rem)!important;
  padding:.72rem 1.08rem!important;
  border-radius:999px!important;
  border:1px solid var(--culhane-action-border)!important;
  background:var(--culhane-action-bg)!important;
  color:var(--culhane-action-text)!important;
  text-decoration:none!important;
  font-size:.92rem!important;
  font-weight:750!important;
  line-height:1.12!important;
  letter-spacing:.005em!important;
  box-shadow:0 8px 22px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.22)!important;
  transition:transform .16s ease, filter .16s ease, box-shadow .16s ease, background .16s ease!important;
}
.culhane-project-button:hover,
.culhane-project-button:focus-visible,
.culhane-font-actions .culhane-project-button:hover,
.culhane-interactionz-button:hover{
  color:var(--culhane-action-text)!important;
  text-decoration:none!important;
  filter:brightness(.98) saturate(1.04)!important;
  transform:translateY(-1px)!important;
  box-shadow:0 10px 26px rgba(0,0,0,.11), inset 0 1px 0 rgba(255,255,255,.26)!important;
}
.culhane-project-button:focus-visible{
  outline:3px solid color-mix(in srgb, var(--culhane-action-bg) 35%, white)!important;
  outline-offset:3px!important;
}
.culhane-project-button-secondary,
.culhane-tip-button:not(.culhane-support-button){
  background:var(--culhane-action-bg-soft)!important;
  color:var(--culhane-action-text-soft)!important;
  border-color:color-mix(in srgb, var(--culhane-action-bg) 45%, transparent)!important;
  box-shadow:0 6px 16px rgba(0,0,0,.045)!important;
  border-style:solid!important;
}
.culhane-project-button-secondary:hover,
.culhane-tip-button:not(.culhane-support-button):hover,
.culhane-project-button-secondary:focus-visible,
.culhane-tip-button:not(.culhane-support-button):focus-visible{
  background:color-mix(in srgb, var(--culhane-action-bg) 18%, var(--culhane-card-bg, #fff))!important;
  color:var(--culhane-action-text-soft)!important;
}
.culhane-website-frame{
  display:grid!important;
  gap:clamp(.85rem,2vw,1.15rem)!important;
}
.culhane-website-frame .culhane-website-actions{
  justify-content:center!important;
  margin-top:.15rem!important;
  padding-top:.25rem!important;
}
.culhane-website-button{
  min-width:min(100%, 16rem)!important;
  padding-inline:1.5rem!important;
}
.culhane-tool-actions,
.culhane-support-actions{
  justify-content:flex-start!important;
}
.culhane-support-section .culhane-support-actions{
  margin-top:1rem!important;
}
.culhane-font-actions{
  align-items:stretch!important;
}
.culhane-font-actions .culhane-project-button{
  flex:0 1 auto!important;
  min-width:min(100%, 12.5rem)!important;
}
.culhane-project-panel .culhane-panel-actions{
  margin-top:.85rem!important;
}
@media(max-width:640px){
  .culhane-project-button,
  .culhane-font-actions .culhane-project-button,
  .culhane-interactionz-button{
    width:100%!important;
    min-width:0!important;
  }
  .culhane-project-actions,
  .culhane-font-actions{
    align-items:stretch!important;
  }
}


/* v2.2.18 — filterable project archive / project shelf */
.culhane-project-index{
  display:grid;
  gap:clamp(1rem,2vw,1.5rem);
  margin:clamp(1rem,3vw,2rem) 0;
}
.culhane-project-index-intro{
  max-width:780px;
}
.culhane-project-index-intro h2{
  margin:.1rem 0 .45rem;
}
.culhane-project-index-intro p{
  margin:.25rem 0 0;
  color:rgba(0,0,0,.68);
}
.culhane-project-index-controls{
  display:grid;
  grid-template-columns:minmax(220px,1fr) minmax(0,2fr) auto;
  gap:.8rem 1rem;
  align-items:end;
  padding:clamp(.85rem,2vw,1.1rem);
  border:1px solid rgba(0,0,0,.08);
  border-radius:18px;
  background:color-mix(in srgb,var(--culhane-card-bg,#fff) 88%,var(--culhane-paper-bg,#fbf7ee));
  box-shadow:0 10px 30px rgba(0,0,0,.04);
}
.culhane-project-index-search span,
.culhane-project-index-sort span,
.culhane-project-index-filter-group>span{
  display:block;
  margin:0 0 .35rem;
  font-size:.76rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:rgba(0,0,0,.58);
  font-weight:700;
}
.culhane-project-index-search input,
.culhane-project-index-sort select{
  width:100%;
  min-height:42px;
  padding:.65rem .8rem;
  border:1px solid rgba(0,0,0,.12);
  border-radius:999px;
  background:#fff;
  color:inherit;
}
.culhane-project-index-filter-group{
  grid-column:span 1;
}
.culhane-project-index-chips{
  display:flex;
  flex-wrap:wrap;
  gap:.45rem;
}
.culhane-project-index-chips button{
  min-height:34px;
  padding:.42rem .68rem;
  border:1px solid rgba(0,0,0,.10);
  border-radius:999px;
  background:#fff;
  color:inherit;
  cursor:pointer;
  font-size:.86rem;
  font-weight:650;
  transition:background .16s ease, color .16s ease, border-color .16s ease, transform .16s ease;
}
.culhane-project-index-chips button:hover{
  transform:translateY(-1px);
  border-color:rgba(0,0,0,.22);
}
.culhane-project-index-chips button.is-active{
  background:var(--culhane-partner-button-bg,#8d78bf);
  border-color:var(--culhane-partner-button-bg,#8d78bf);
  color:var(--culhane-partner-button-text,#fff);
}
.culhane-project-index-count{
  grid-column:1/-1;
  margin:.1rem 0 0;
  color:rgba(0,0,0,.58);
  font-size:.9rem;
}
.culhane-project-index-grid{
  align-items:stretch;
}
.culhane-project-index-item{
  min-width:0;
}
.culhane-project-index-item[hidden]{
  display:none!important;
}
.culhane-project-index-empty{
  margin:0;
}
@media(max-width:820px){
  .culhane-project-index-controls{
    grid-template-columns:1fr;
    align-items:stretch;
  }
  .culhane-project-index-filter-group,
  .culhane-project-index-sort,
  .culhane-project-index-search{
    grid-column:1/-1;
  }
  .culhane-project-index-chips{
    overflow-x:auto;
    flex-wrap:nowrap;
    padding-bottom:.15rem;
  }
  .culhane-project-index-chips button{
    white-space:nowrap;
  }
}


/* v2.2.19 — compact project archive controls */
.culhane-project-index{
  gap:clamp(.85rem,1.8vw,1.25rem);
}
.culhane-project-index-controls{
  grid-template-columns:minmax(150px,190px) minmax(0,1fr) minmax(130px,185px);
  gap:.5rem .7rem;
  align-items:start;
  padding:.62rem .7rem .58rem;
  border-radius:14px;
  box-shadow:0 6px 18px rgba(0,0,0,.032);
}
.culhane-project-index-search{grid-column:1;grid-row:1;}
.culhane-project-index-sort{grid-column:1;grid-row:2;}
.culhane-project-index-filter-group[data-filter-group="mode"]{grid-column:2;grid-row:1 / span 2;}
.culhane-project-index-filter-group[data-filter-group="status"]{grid-column:3;grid-row:1;}
.culhane-project-index-count{grid-column:3;grid-row:2;align-self:end;text-align:right;margin:0;font-size:.74rem;}
.culhane-project-index-search span,
.culhane-project-index-sort span,
.culhane-project-index-filter-group>span{
  margin:0 0 .22rem;
  font-size:.62rem;
  letter-spacing:.075em;
  line-height:1;
}
.culhane-project-index-search input,
.culhane-project-index-sort select{
  min-height:32px;
  padding:.42rem .62rem;
  font-size:.78rem;
  border-radius:12px;
}
.culhane-project-index-chips{
  gap:.28rem;
  align-items:center;
}
.culhane-project-index-chips button{
  min-height:28px;
  padding:.27rem .48rem;
  font-size:.74rem;
  line-height:1;
  border-radius:999px;
  box-shadow:0 1px 0 rgba(0,0,0,.025);
}
.culhane-project-index-chips button:hover{
  transform:translateY(-.5px);
}
.culhane-project-index-intro{
  margin-bottom:.2rem;
}
.culhane-project-index-intro h2{
  margin-bottom:.28rem;
}
.culhane-project-index-intro p{
  font-size:.95rem;
}
@media(max-width:920px){
  .culhane-project-index-controls{
    grid-template-columns:1fr 1fr;
    align-items:stretch;
  }
  .culhane-project-index-search{grid-column:1;grid-row:1;}
  .culhane-project-index-sort{grid-column:2;grid-row:1;}
  .culhane-project-index-filter-group[data-filter-group="mode"]{grid-column:1/-1;grid-row:2;}
  .culhane-project-index-filter-group[data-filter-group="status"]{grid-column:1/-1;grid-row:3;}
  .culhane-project-index-count{grid-column:1/-1;grid-row:4;text-align:left;}
}
@media(max-width:640px){
  .culhane-project-index-controls{
    padding:.58rem;
    border-radius:12px;
    gap:.48rem;
  }
  .culhane-project-index-search,
  .culhane-project-index-sort,
  .culhane-project-index-filter-group[data-filter-group="mode"],
  .culhane-project-index-filter-group[data-filter-group="status"],
  .culhane-project-index-count{
    grid-column:1/-1;
    grid-row:auto;
  }
  .culhane-project-index-chips{
    display:flex;
    flex-wrap:nowrap;
    overflow-x:auto;
    gap:.25rem;
    padding:.02rem 0 .2rem;
    -webkit-overflow-scrolling:touch;
  }
  .culhane-project-index-chips button{
    white-space:nowrap;
    min-height:27px;
    font-size:.72rem;
    padding:.25rem .45rem;
  }
  .culhane-project-index-search input,
  .culhane-project-index-sort select{
    min-height:34px;
  }
}


/* v2.2.21 — Load More / paged project archive */
.culhane-project-index-pagination{
  display:flex;
  justify-content:center;
  margin:clamp(1.2rem,3vw,2rem) 0 0;
}
.culhane-project-load-more{
  min-width:min(260px,100%);
}
.culhane-project-load-more.is-loading{
  opacity:.72;
  cursor:wait;
}
.culhane-project-index.is-loading-projects .culhane-project-index-grid{
  opacity:.72;
  transition:opacity .18s ease;
}
@media(max-width:640px){
  .culhane-project-index-pagination{margin-top:1rem}
  .culhane-project-load-more{width:100%}
}

/* v2.2.24 — Culhane Music Albums integration */
.culhane-music-showcase{
  margin:clamp(1.5rem,3vw,2.5rem) 0;
  padding:clamp(1rem,3vw,1.5rem);
  border:1px solid rgba(36,31,26,.12);
  border-radius:24px;
  background:var(--culhane-card-bg,#fffaf0);
  box-shadow:0 18px 40px rgba(36,31,26,.06);
}
.culhane-music-showcase>h2{margin:0 0 1rem;}
.culhane-music-showcase .cma-project-block{
  margin:0;
  max-width:100%;
}
.culhane-music-showcase.layout-player{
  padding:0;
  overflow:hidden;
  background:transparent;
  border:0;
  box-shadow:none;
}
.culhane-music-showcase.layout-player>h2{padding:0 clamp(.25rem,1vw,.5rem);}
.culhane-music-actions{margin:.75rem 0 0;}
.culhane-project-placeholder.placeholder-music{
  background:radial-gradient(circle at 28% 18%,rgba(141,120,191,.23),transparent 34%),linear-gradient(135deg,#f8f0de,#eee5d3)!important;
}
.culhane-project-placeholder.placeholder-music>span{font-size:clamp(3rem,7vw,5.5rem);}
@media (max-width:700px){
  .culhane-music-showcase{border-radius:18px;padding:1rem;}
}
