/* Hallmark · macrostructure: Workbench · tone: dark doujin shop · anchor hue: pink
 * theme: custom · paper oklch(16.8% .016 281) · accent oklch(73% .193 354)
 * fonts: Noto Sans SC + Space Grotesk · axes: dark / heavy sans / pink · nav: N12 · footer: Ft4
 * pre-emit critique: P4 H5 E4 S5 R5 V4 */
@import url('tokens.css');
@import url('fonts.css');
*{box-sizing:border-box}html,body{margin:0;overflow-x:clip}html{scroll-behavior:smooth;scroll-padding-top:100px}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-body);line-height:1.8;padding-bottom:var(--space-4xl)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:var(--color-panel);border:var(--rule-width) solid var(--color-rule);cursor:pointer}a,button,summary{-webkit-tap-highlight-color:var(--color-transparent)}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--color-focus);outline-offset:4px}button:disabled,[aria-disabled=true]{opacity:.55;cursor:not-allowed}a:active,button:active{transform:translateY(1px)}button[data-state=loading]{cursor:progress}button[data-state=error]{border-color:var(--color-error)}button[data-state=success]{border-color:var(--color-success)}p{margin:0 0 var(--space-lg);color:var(--color-muted)}h1,h2,h3{font-family:var(--font-display);font-style:normal;line-height:1.3;overflow-wrap:anywhere;min-width:0;margin:0 0 var(--space-lg);letter-spacing:-.035em}h2{font-size:var(--text-h2);font-weight:800}h3{font-size:var(--text-h3);font-weight:700}img{display:block;max-width:100%;height:auto}figure,dl,dd{margin:0}figcaption{font-size:var(--text-small);color:var(--color-muted)}section[id],article section[id]{scroll-margin-top:110px}.wrap{width:calc(100% - 32px);max-width:1200px;margin-inline:auto}.skip{position:fixed;top:-80px;left:16px;background:var(--color-cyan);color:var(--color-paper);padding:var(--space-md);z-index:1000}.skip:focus{top:8px}.site-header{position:sticky;top:-36px;z-index:100;background:var(--color-paper)}.announcement{height:36px;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-inline:max(16px,calc((100% - 1200px)/2));background:var(--color-raised);color:var(--color-muted);font-size:var(--text-small)}.announcement span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.announcement a{display:none;white-space:nowrap;color:var(--color-cyan)}.nav-bar{height:76px;display:flex;align-items:center;gap:var(--space-md)}.brand{display:flex;align-items:center;gap:var(--space-sm);font-size:1.15rem;font-weight:800;white-space:nowrap;margin-right:auto}.brand img{width:36px;height:36px;border-radius:50%;object-fit:cover}.brand-sub{display:none}.nav-bar nav{position:absolute;top:112px;left:0;right:0;background:var(--color-panel);padding:var(--space-md);display:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.nav-bar nav.is-open{display:grid}.nav-bar nav a{display:flex;align-items:center;min-height:44px;padding-inline:var(--space-md);white-space:nowrap;color:var(--color-muted);font-size:.9rem}.nav-bar nav a:hover,.nav-bar nav a[aria-current]{color:var(--color-ink);background:var(--color-raised)}.menu-toggle{min-height:44px;padding:var(--space-sm) var(--space-md)}.button{display:inline-flex;justify-content:center;align-items:center;gap:var(--space-lg);min-height:52px;padding:var(--space-sm) var(--space-lg);font-weight:700;white-space:nowrap;font-size:var(--text-body);border-radius:var(--radius-sm);border:var(--rule-width) solid var(--color-rule);transition:transform var(--dur-short) var(--ease-out)}.button.primary{background:var(--color-accent);color:var(--color-accent-ink);border-color:var(--color-accent);position:relative;overflow:hidden}.button.primary:after{content:'';position:absolute;inset:0 auto 0 -60%;width:35%;background:var(--color-ink);opacity:.22;transform:skewX(-24deg);pointer-events:none}.button.primary:hover:after{transform:translateX(500%) skewX(-24deg);transition:transform 480ms var(--ease-out)}.button.primary:active{transform:translateY(2px)}.nav-cta{display:none}.secondary{background:var(--color-panel);color:var(--color-ink)}.secondary:hover{border-color:var(--color-cyan)}.text-link,.secondary-link,.breadcrumb{display:inline-flex;align-items:center;min-height:44px;white-space:nowrap}.text-link{color:var(--color-cyan);font-size:.95rem}.text-link:hover,.secondary-link:hover,.footer-nav a:hover{ text-decoration:underline;text-underline-offset:5px}.hero{position:relative;isolation:isolate;padding:var(--space-lg) 0 var(--space-2xl);border-bottom:var(--rule-width) solid var(--color-rule)}.hero-scene{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,var(--color-scrim),var(--color-paper)),url('images/emojiang-screenshot-04.webp') center/cover;opacity:.9}.hero-inner{display:grid;gap:var(--space-xl)}.hero-copy{grid-row:1}.tags{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-lg)}.tags span{border:var(--rule-width) solid var(--color-rule);font-size:var(--text-small);padding:0 var(--space-sm);color:var(--color-muted)}.tags span:first-child{border-color:var(--color-cyan);color:var(--color-cyan)}.hero h1{font-size:var(--text-display);font-weight:900;line-height:1.18;margin-bottom:var(--space-lg)}.hero h1 span{color:var(--color-accent)}.hero h1 small{display:block;font-family:var(--font-latin);font-size:1rem;letter-spacing:0;font-weight:400;color:var(--color-muted);line-height:1.5;margin-top:var(--space-md)}.hero-lede{font-size:var(--text-body);line-height:1.8;max-width:45ch}.hero-spec{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md);margin-bottom:var(--space-lg)}dt{color:var(--color-muted);font-size:var(--text-small)}dd{font-size:.92rem;color:var(--color-ink)}.hero-copy>.primary{width:100%;min-height:60px;justify-content:space-between}.secondary-link{font-size:.875rem;color:var(--color-muted);margin-top:var(--space-sm)}.hero-media{align-self:center;min-width:0}.hero-media>img{width:100%;aspect-ratio:1.747;object-fit:cover}.media-caption{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);font-size:var(--text-small);padding-block:var(--space-sm);color:var(--color-muted)}.media-caption a{color:var(--color-cyan);white-space:nowrap;min-height:44px;display:flex;align-items:center}.hero-thumbnails{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm)}.hero-thumbnails a{border:1px solid var(--color-rule)}.hero-thumbnails a:hover{border-color:var(--color-cyan)}.hero-thumbnails img{aspect-ratio:16/9;object-fit:cover;width:100%}.info-strip{padding-block:var(--space-lg)}.info-strip dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg)}.info-strip dt{margin-bottom:var(--space-xs)}.section{padding-block:var(--space-2xl)}.story-grid{display:grid;gap:var(--space-xl)}.story-copy p{max-width:65ch}.story-portrait{position:relative;background:var(--color-panel);display:flex;align-items:end;overflow:hidden;max-height:360px}.story-portrait img{width:52%;object-fit:cover;align-self:stretch}.story-portrait figcaption{padding:var(--space-lg);display:grid;gap:var(--space-sm)}.story-portrait strong{font-size:1.3rem;color:var(--color-ink)}.feature-section{background:var(--color-panel);color:var(--color-ink)}.section-head{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-xl)}.section-head h2{margin-bottom:var(--space-sm)}.section-head p{margin:0}.feature-layout{display:grid;gap:var(--space-xl)}.feature-layout figure img{width:100%;aspect-ratio:16/9;object-fit:cover}.feature-layout figcaption{padding-top:var(--space-sm)}.feature-list article{padding-block:var(--space-lg);border-top:1px solid var(--color-rule)}.feature-list article:first-child{padding-top:0;border-top:0}.feature-list article:last-child{padding-bottom:0}.feature-list h3{margin-bottom:var(--space-sm)}.feature-list p{margin:0;font-size:.95rem}.gallery-grid{display:grid;gap:var(--space-lg)}.gallery-item{min-width:0}.gallery-item[hidden]{display:none}.image-link{position:relative;display:block;overflow:hidden;background:var(--color-panel)}.image-link img{width:100%;aspect-ratio:16/9;object-fit:cover;transition:transform var(--dur-short) var(--ease-out)}.image-link:hover img{transform:scale(1.025)}.enlarge{position:absolute;bottom:var(--space-sm);right:var(--space-sm);width:32px;height:32px;text-align:center;background:var(--color-overlay);color:var(--color-ink)}.gallery-item figcaption{display:flex;justify-content:space-between;gap:var(--space-sm);padding-top:var(--space-sm)}.gallery-item figcaption small{font-size:.75rem}.guide-promo{border:1px solid var(--color-rule);display:grid;padding:var(--space-lg);gap:var(--space-xl);margin-block:var(--space-xl);background:var(--color-panel);color:var(--color-ink)}.small-label{display:block;font-size:var(--text-small);color:var(--color-cyan);margin-bottom:var(--space-md)}.guide-promo nav{display:grid;align-content:center}.guide-promo nav a{display:flex;gap:var(--space-md);align-items:center;padding-block:var(--space-md);border-bottom:1px solid var(--color-rule);white-space:nowrap}.guide-promo nav a:hover{color:var(--color-cyan)}.guide-promo nav span{font-family:var(--font-latin);color:var(--color-muted)}.guide-promo nav b{margin-left:auto}.audience{display:grid;gap:var(--space-lg)}.audience p{padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-rule)}.audience strong{display:block;color:var(--color-ink);font-size:var(--text-lg);margin-bottom:var(--space-sm)}.release{padding:var(--space-lg);background:var(--color-panel);color:var(--color-ink)}.release h2{font-size:var(--text-h3)}.release summary{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.release summary span{margin-left:auto}.release time{font-family:var(--font-latin);color:var(--color-cyan);font-size:.875rem}.release details p{margin-top:var(--space-md)}summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center;gap:var(--space-md)}summary::-webkit-details-marker{display:none}summary:hover{color:var(--color-cyan)}summary:active{opacity:.8}details[open]>summary{color:var(--color-cyan)}.faq-list{border-top:1px solid var(--color-rule)}.faq-list details{padding:var(--space-md) 0;border-bottom:1px solid var(--color-rule)}.faq-list summary{font-size:1rem;font-weight:600;justify-content:space-between}.faq-list summary span:after{content:'+';font-size:1.5rem;font-family:var(--font-latin)}.faq-list details[open] summary span:after{content:'−'}.faq-list details p{max-width:75ch;margin:var(--space-sm) var(--space-xl) var(--space-sm) 0;font-size:.95rem}.final-call{display:flex;flex-direction:column;align-items:start;gap:var(--space-lg);border-block:1px solid var(--color-rule);padding-block:var(--space-2xl);margin-top:var(--space-lg)}.final-call p{margin:0}.final-call h2{margin-bottom:var(--space-sm)}.site-footer{padding-top:var(--space-2xl)}.footer-top{display:flex;align-items:start;justify-content:space-between;gap:var(--space-md)}.footer-top strong{font-size:var(--text-lg)}.footer-top p{font-size:var(--text-small);margin-top:var(--space-sm)}.footer-top>.text-link{font-size:var(--text-small)}.footer-nav{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-lg);font-size:var(--text-small);padding-bottom:var(--space-lg)}.footer-nav a{min-height:44px;display:flex;align-items:center;white-space:nowrap}.related{border-block:1px solid var(--color-rule);font-size:var(--text-small);padding:var(--space-sm) 0}.related summary:after{content:'+';margin-left:auto}.related[open] summary:after{content:'−'}.related-links{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-lg);padding-bottom:var(--space-md)}.related-links a{display:flex;align-items:center;min-height:44px}.legal{font-size:.75rem;color:var(--color-muted);padding-block:var(--space-lg)}.legal p{margin-bottom:var(--space-sm)}.legal summary{font-size:var(--text-small)}.mobile-cta{position:fixed;bottom:0;left:0;right:0;z-index:90;background:var(--color-panel);color:var(--color-ink);border-top:1px solid var(--color-rule);padding:var(--space-sm) var(--space-md) max(8px,env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.mobile-cta strong{font-size:.8125rem;display:block}.mobile-cta small{font-size:.75rem;color:var(--color-muted);display:block}.mobile-cta .button{min-height:44px;font-size:.875rem;padding:var(--space-sm) var(--space-md);gap:var(--space-sm)}.page-intro{padding-block:var(--space-xl) var(--space-2xl)}.breadcrumb{font-size:var(--text-small);color:var(--color-muted);margin-bottom:var(--space-lg)}.page-intro h1{font-size:clamp(2.25rem,4vw,3.75rem);font-weight:900;max-width:22ch}.page-intro>p{font-size:var(--text-lg);margin-bottom:0}.filters{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.filters button{min-height:44px;padding:var(--space-sm) var(--space-md);font-size:.875rem;white-space:nowrap}.filters button:hover{border-color:var(--color-cyan)}.filters button[aria-pressed=true]{background:var(--color-cyan);color:var(--color-paper);border-color:var(--color-cyan)}.gallery-note{font-size:var(--text-small);margin-block:var(--space-md) var(--space-xl)}.gallery-page{padding-bottom:var(--space-2xl)}.download-panel{display:grid;gap:var(--space-xl);padding:var(--space-lg);background:var(--color-panel);color:var(--color-ink);border:1px solid var(--color-rule)}.download-panel .small{font-size:var(--text-small);margin:var(--space-md) 0 0}.download-panel dl{align-self:center}.download-panel dl div{padding-block:var(--space-md);border-bottom:1px solid var(--color-rule)}.steps{list-style:none;counter-reset:step;padding:0;margin:var(--space-xl) 0 0;display:grid;gap:var(--space-xl)}.steps li{counter-increment:step;border-top:1px solid var(--color-rule);padding-top:var(--space-lg)}.steps li:before{content:'0' counter(step);font-family:var(--font-latin);font-size:2rem;color:var(--color-cyan);display:block;margin-bottom:var(--space-md)}.steps p{margin:0;font-size:.95rem}.requirements{display:grid;gap:var(--space-lg)}.requirements article{background:var(--color-panel);color:var(--color-ink);padding:var(--space-lg)}.requirements h3{padding-bottom:var(--space-md);border-bottom:1px solid var(--color-rule)}.requirements dl div{display:grid;gap:var(--space-xs);padding-block:var(--space-sm)}.requirements dd{font-size:.95rem}.reading-layout{display:grid;gap:var(--space-xl)}.toc{background:var(--color-panel);color:var(--color-ink);padding:var(--space-lg);align-self:start;display:grid;gap:var(--space-sm)}.toc strong{margin-bottom:var(--space-sm)}.toc a{font-size:.9rem;min-height:44px;display:flex;align-items:center;white-space:nowrap}.toc a:hover{color:var(--color-cyan)}.article-body{min-width:0}.article-body section{padding-block:var(--space-xl);border-top:1px solid var(--color-rule)}.article-body p,.long-article p{line-height:1.95;max-width:70ch}.article-body .intro-text,.long-article .intro-text{font-size:var(--text-lg);color:var(--color-ink);margin-bottom:var(--space-xl)}.article-lead{font-weight:700;color:var(--color-ink)}.note{padding:var(--space-lg);background:var(--color-panel);color:var(--color-ink)}.note strong{font-size:var(--text-small);color:var(--color-cyan)}.note p{margin:var(--space-sm) 0 0}.article-body ul{padding-left:var(--space-lg);color:var(--color-muted)}.long-article{max-width:800px}.long-article h2{margin-top:var(--space-2xl)}.long-article figure{margin-block:var(--space-xl)}.long-article figure img{width:100%;aspect-ratio:16/9;object-fit:cover}.long-article figcaption{margin-top:var(--space-sm)}.article-links{display:flex;flex-wrap:wrap;gap:var(--space-lg);margin-block:var(--space-xl)}dialog{border:1px solid var(--color-rule);background:var(--color-paper);color:var(--color-ink);padding:var(--space-md);width:min(1100px,calc(100% - 24px));max-height:calc(100dvh - 24px)}dialog::backdrop{background:var(--color-overlay)}.lightbox-toolbar,.lightbox-bottom{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm)}dialog button{min-height:44px;padding:var(--space-sm) var(--space-md);white-space:nowrap;font-size:.875rem}dialog button:hover{border-color:var(--color-cyan)}.lightbox-toolbar{margin-bottom:var(--space-md);font-size:.875rem}.lightbox-media{text-align:center;min-height:160px;position:relative;display:grid;place-items:center}.lightbox-media img{max-height:70dvh;max-width:100%;object-fit:contain}.lightbox-media img.loading{opacity:.25}#image-status{margin:0;font-size:.875rem}#image-status:empty{display:none}#image-retry{margin:var(--space-md)}.lightbox-bottom{margin-top:var(--space-md);flex-wrap:wrap}.lightbox-bottom p{order:3;width:100%;font-size:.875rem;text-align:center;margin:0}[hidden]{display:none!important}
@media(min-width:640px){.wrap{width:calc(100% - 64px)}.brand-sub{display:inline}.announcement a{display:block}.nav-cta{display:inline-flex;min-height:44px;font-size:.875rem;padding:var(--space-sm) var(--space-md)}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.steps{grid-template-columns:repeat(3,minmax(0,1fr))}.requirements{grid-template-columns:repeat(2,minmax(0,1fr))}.download-panel{padding:var(--space-xl)}.final-call{flex-direction:row;justify-content:space-between;align-items:center}.lightbox-bottom{flex-wrap:nowrap}.lightbox-bottom p{order:0;width:auto}.info-strip dl{grid-template-columns:repeat(4,minmax(0,1fr))}.story-portrait{max-height:440px}}
@media(min-width:768px){.section{padding-block:var(--space-3xl)}.story-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:center;gap:var(--space-2xl)}.story-portrait{display:block;max-height:400px}.story-portrait img{width:100%;height:400px;object-fit:cover;object-position:50% 20%}.story-portrait figcaption{position:absolute;bottom:0;left:0;right:0;background:var(--color-overlay);padding:var(--space-md) var(--space-lg);display:flex;align-items:center;justify-content:space-between}.section-head{flex-direction:row;justify-content:space-between;align-items:end}.section-head p{max-width:50ch}.feature-layout{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;gap:var(--space-2xl)}.guide-promo{grid-template-columns:repeat(2,minmax(0,1fr));padding:var(--space-xl);gap:var(--space-2xl)}.audience{grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:var(--space-2xl)}.download-panel{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2xl)}}
@media(min-width:1024px){body{padding-bottom:0}.wrap{width:calc(100% - 96px)}.menu-toggle{display:none}.nav-bar nav{position:static;display:flex;padding:0;background:var(--color-transparent);gap:var(--space-xs)}.nav-bar nav a{padding-inline:var(--space-md)}.nav-bar{gap:var(--space-lg)}.nav-cta{min-height:44px}.hero{padding:var(--space-xl) 0 var(--space-2xl);min-height:calc(100svh - 112px);display:flex;align-items:center}.hero-inner{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--space-2xl);align-items:center}.hero-copy{grid-row:auto}.hero-spec{margin-bottom:var(--space-lg)}.hero h1{font-size:clamp(3.1rem,4.1vw,4.2rem)}.hero-thumbnails{gap:var(--space-md)}.hero-media>img{min-height:300px}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.full-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}.reading-layout{grid-template-columns:260px minmax(0,1fr);gap:var(--space-3xl);max-width:1120px}.toc{position:sticky;top:100px}.page-intro{padding-block:var(--space-2xl) var(--space-3xl)}.mobile-cta{display:none}.release{padding:var(--space-xl)}.release{display:grid;grid-template-columns:200px minmax(0,1fr);gap:var(--space-xl)}.release h2{margin:0}.download-panel{padding:var(--space-2xl)}.download-panel .primary{min-width:280px}.long-article{max-width:800px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.image-link:hover img,a:active,button:active,.button.primary:active{transform:none}.button.primary:after{display:none}}
