:root{--accent:oklch(70% .18 300);--accent-bright:oklch(78% .15 300);--accent-soft:oklch(32% .09 300);--cyan:oklch(84% .12 195);--cyan-dim:oklch(66% .14 195);--green:oklch(78% .16 155);--primary:var(--accent-bright);--background:#08080a;--page-glow:radial-gradient(120% 60% at 50% 0%, #191426 0%, #0d0d11 45%, #0a0a0c 100%);--secondary-background:#101013;--card:#111116;--elevated:#ffffff17;--border:#ffffff17;--hairline:#ffffff0f;--text:#f2f0f5;--secondary-text:#f2f0f5b3;--muted:#f2f0f573;--faint:#f2f0f566;--chip-background:#ffffff0d;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:14px;--radius-xxl:18px;--radius-hero:22px;--radius-pill:999px;--screen-gutter:16px;--font-display:"Space Grotesk", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, monospace;--font:"Instrument Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color:var(--text);background:var(--background);font-family:var(--font);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{background:var(--background);min-width:320px;min-height:100%}body{background:var(--background);min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}#root{min-height:100vh}.eyebrow{color:var(--faint);font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:7px;margin:0;font-size:10.5px;font-weight:400;display:flex}.eyebrow svg{flex:none;width:11px;height:11px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes hub-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes hub-fade{0%{opacity:0}}@keyframes hub-pulse{0%,to{opacity:.5}50%{opacity:1}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.atmosphere{z-index:0;pointer-events:none;background:var(--page-glow);position:fixed;inset:0;overflow:hidden}.bloom{filter:blur(110px);opacity:.32;will-change:transform;border-radius:50%;position:absolute}.bloom-one{background:radial-gradient(circle at 30% 30%,oklch(45% .17 300),#0000 66%);width:76vw;height:76vw;animation:26s ease-in-out infinite drift-one;top:-26vw;left:-18vw}.bloom-two{opacity:.26;background:radial-gradient(circle at 60% 40%,oklch(42% .14 265),#0000 66%);width:66vw;height:66vw;animation:32s ease-in-out infinite drift-two;top:2vh;right:-24vw}.bloom-three{opacity:.16;background:radial-gradient(circle,oklch(40% .11 195),#0000 70%);width:86vw;height:86vw;animation:38s ease-in-out infinite drift-three;top:46vh;left:8vw}.grain,.vignette{z-index:1;pointer-events:none;position:fixed;inset:0}.grain{opacity:.04;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.vignette{background:radial-gradient(120% 90% at 50% 0,#0000 55%,#0000009e 100%)}.shell{z-index:2;max-width:1180px;min-height:100vh;padding:0 var(--screen-gutter) 70px;margin:0 auto;position:relative}main{scroll-margin-top:72px}.topbar{z-index:20;margin:0 calc(-1 * var(--screen-gutter));padding:12px var(--screen-gutter);border-bottom:1px solid var(--hairline);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0a0a0cd1;justify-content:space-between;align-items:center;gap:14px;display:flex;position:sticky;top:0}.brand{color:inherit;align-items:center;gap:10px;text-decoration:none;display:flex}.brand-mark{box-sizing:border-box;object-fit:cover;border:1px solid #ffffff1f;border-radius:9px;width:30px;height:30px;display:block;box-shadow:0 6px 20px oklch(50% .16 300/.4)}.brand-name{color:var(--text);font-family:var(--font-display);letter-spacing:-.02em;font-size:17px;font-weight:700}.brand-name span{color:var(--faint);font-weight:500}.gallery-intro{max-width:720px;margin:26px 0 16px}.content-eyebrow{color:var(--cyan);font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;margin:0 0 9px;font-size:10.5px;font-weight:400}.gallery-intro h1{color:var(--text);font-family:var(--font-display);letter-spacing:-.03em;text-wrap:pretty;margin:0;font-size:clamp(28px,5vw,40px);font-weight:700;line-height:1.04}.gallery-description{max-width:640px;color:var(--secondary-text);text-wrap:pretty;margin:36px 0 0;font-size:14.5px;line-height:1.55}.controls{padding-top:4px}.search-row{align-items:center;gap:8px;display:flex}.search{border-radius:var(--radius-xl);background:#ffffff0e;border:1px solid #ffffff14;flex:1;align-items:center;gap:9px;min-width:0;height:46px;padding:0 13px;transition:border-color .16s,background .16s;display:flex}.search:focus-within{border-color:color-mix(in oklab, var(--accent) 55%, transparent);background:#ffffff14}.search>svg{width:16px;height:16px;color:var(--muted);stroke:currentColor;stroke-width:2px;fill:none;flex:none}.search input{min-width:0;color:var(--text);background:0 0;border:0;outline:0;flex:1;font-size:14.5px}.search input::-webkit-search-cancel-button{display:none}.search input::placeholder{color:var(--muted)}.clear-button{width:24px;height:24px;color:var(--secondary-text);cursor:pointer;background:#ffffff1a;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.clear-button svg{stroke:currentColor;stroke-width:2.4px;width:12px;height:12px}.nsfw-pill{height:46px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;cursor:pointer;border-radius:var(--radius-xl);background:#ffffff0e;border:1px solid #ffffff1a;flex:none;padding:0 14px;font-size:12px;transition:color .16s,background .16s,border-color .16s}.nsfw-pill:hover{color:var(--text);background:#ffffff17}.nsfw-pill[aria-pressed=true]{color:#fff;background:oklch(42% .14 20);border-color:oklch(66% .18 20)}.icon-button{width:46px;height:46px;color:var(--text);cursor:pointer;border-radius:var(--radius-xl);background:#ffffff0e;border:1px solid #ffffff1a;flex:none;place-items:center;transition:background .16s;display:grid}.icon-button:hover{background:#ffffff1a}.icon-button svg{stroke:currentColor;stroke-width:1.7px;fill:none;width:18px;height:18px}.mood-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 14px;margin-top:20px;display:flex}.mood-head .eyebrow{flex:240px}.mood-head .segmented{margin-left:auto}.segmented{background:#ffffff0f;border-radius:11px;flex:none;gap:2px;padding:3px;display:flex}.segmented-option{color:var(--muted);font-family:var(--font-display);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600;transition:color .16s,background .16s}.segmented-option:hover{color:var(--secondary-text)}.segmented-option.active{color:var(--text);background:#ffffff21}.filters{margin:11px calc(-1 * var(--screen-gutter)) 0;padding:2px var(--screen-gutter) 4px;scroll-snap-type:x proximity;scrollbar-width:none;gap:9px;display:flex;overflow-x:auto}.filters::-webkit-scrollbar{display:none}.scroller::-webkit-scrollbar{display:none}.mood{color:var(--secondary-text);cursor:pointer;-webkit-user-select:none;user-select:none;scroll-snap-align:start;background:#ffffff0d;border:1px solid #ffffff14;border-radius:13px;flex-direction:column;flex:none;align-items:flex-start;gap:1px;padding:9px 14px;transition:color .18s,background .18s,border-color .18s;display:flex}.mood:hover{border-color:#ffffff2e}.mood.active{color:#fff;background:oklch(.32 .09 var(--mood-hue));border-color:oklch(.62 .16 var(--mood-hue))}.mood-label{font-family:var(--font-display);letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:6px;font-size:14px;font-weight:600;display:inline-flex}.mood-label svg{width:12px;height:12px}.mood-count{font-family:var(--font-mono);opacity:.6;font-size:10px}.spotlight{margin-top:26px}.spotlight-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:9px;display:flex}.spotlight-eyebrow{color:var(--cyan)}.reroll{color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;flex:none;padding:0;font-size:10.5px;transition:color .16s}.reroll:hover{color:var(--text)}.spotlight-card{border-radius:var(--radius-hero);border:1px solid #ffffff1a;animation:.5s both hub-rise;position:relative;overflow:hidden}.spotlight-art{cursor:pointer;background:repeating-linear-gradient(58deg, #ffffff0e 0 9px, #fff0 9px 18px), radial-gradient(120% 90% at 30% 15%, oklch(.42 .11 var(--spot-hue)) 0%, oklch(.24 .06 var(--spot-hue)) 55%, #131318 100%);border:0;width:100%;height:clamp(380px,92vw,460px);padding:0;display:block;position:relative}.spotlight-art img{object-fit:cover;object-position:center 22%;width:100%;height:100%;position:absolute;inset:0}.spotlight-scrim{background:linear-gradient(#08080a14 0%,#08080a80 54%,#08080af5 100%);position:absolute;inset:0}.spotlight-frame{border:1px solid #ffffff12;border-radius:15px;position:absolute;inset:13px}.spotlight-body{pointer-events:none;padding:18px;position:absolute;inset:auto 0 0}.spotlight-body button{pointer-events:auto}.spotlight-tags{flex-wrap:wrap;gap:6px;margin-bottom:9px;display:flex}.spotlight-tag{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;background:#ffffff24;border:1px solid #ffffff1f;border-radius:6px;padding:4px 8px;font-size:9.5px}.spotlight-name{color:var(--text);font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(27px,6vw,34px);font-weight:700;line-height:1.05}.spotlight-creator{color:var(--muted);margin:4px 0 0;font-size:13px}.spotlight-quote{color:#f2f0f5e0;border-left:2px solid var(--accent);text-wrap:pretty;max-width:560px;margin:12px 0 0;padding-left:11px;font-size:14.5px;font-style:italic;line-height:1.4}.spotlight-facts{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.spotlight-fact{color:oklch(86% .09 195);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;background:oklch(30% .06 195/.5);border:1px solid oklch(60% .11 195/.35);border-radius:7px;padding:5px 8px;font-size:9.5px}.spotlight-actions{gap:9px;max-width:420px;margin-top:15px;display:flex}.primary-action{color:#0a0a0c;height:44px;font-family:var(--font-display);cursor:pointer;background:var(--text);border-radius:var(--radius-md);border:0;flex:1;padding:0 18px;font-size:14.5px;font-weight:600;transition:filter .16s,transform .16s}.primary-action:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-1px)}.primary-action:disabled{cursor:progress;opacity:.7}.heart-action{width:44px;height:44px;color:var(--secondary-text);cursor:pointer;border-radius:var(--radius-md);background:0 0;border:1px solid #ffffff29;flex:none;place-items:center;transition:color .16s,background .16s,border-color .16s;display:grid}.heart-action svg{width:17px;height:17px}.heart-action:hover{background:#ffffff14}.heart-action.active{color:#ff6b81;border-color:#ff6b8173}.spotlight-error{color:#ff9aa9;margin:10px 0 0;font-size:12px}.row-head{justify-content:space-between;align-items:flex-end;gap:12px;margin:30px 0 12px;display:flex}.row-title,.results-head{color:var(--text);font-family:var(--font-display);letter-spacing:-.025em;margin:0;font-size:20px;font-weight:700;line-height:1.1}.row-title span,.results-head span{color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;margin-left:9px;font-size:11px;font-weight:400}.row-blurb{color:var(--muted);margin:4px 0 0;font-size:12.5px;line-height:1.4}.see-all{color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:5px;padding:4px 0;font-size:10.5px;transition:color .16s;display:inline-flex}.see-all:hover{color:var(--text)}.see-all svg{stroke:currentColor;stroke-width:2.4px;width:12px;height:12px}.featured-section{content-visibility:auto;contain-intrinsic-size:auto 420px}.scroller{margin:0 calc(-1 * var(--screen-gutter));padding:4px var(--screen-gutter) 10px;scrollbar-width:none;gap:11px;display:flex;overflow-x:auto}.scroller .character-card{flex:none;width:clamp(158px,46vw,196px)}.character-grid{grid-template-columns:repeat(auto-fill,minmax(min(168px,50% - 5.5px),1fr));align-items:start;gap:11px;margin-top:4px;display:grid}.character-card{aspect-ratio:2/3;content-visibility:auto;width:100%;color:inherit;text-align:left;cursor:pointer;background:var(--card);border-radius:var(--radius-lg);border:1px solid #ffffff17;padding:0;text-decoration:none;transition:transform .16s,border-color .18s;display:block;position:relative;overflow:hidden}.character-card:hover{border-color:#ffffff38;transform:translateY(-2px)}.character-card:active{transform:scale(.97)}.character-card:focus-visible,.mood:focus-visible,.segmented-option:focus-visible,.see-all:focus-visible,.reroll:focus-visible,.clear-button:focus-visible,.nsfw-pill:focus-visible,.icon-button:focus-visible,.spotlight-art:focus-visible,.primary-action:focus-visible,.heart-action:focus-visible,.brand:focus-visible,.empty-state button:focus-visible,.pagination-step:focus-visible,.pagination-page:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px}.portrait{background:repeating-linear-gradient(58deg, #ffffff0e 0 9px, #fff0 9px 18px), radial-gradient(60% 55% at 30% 22%, color-mix(in srgb, var(--c1) 80%, transparent), transparent 70%), linear-gradient(180deg, color-mix(in srgb, var(--c1) 34%, #000), #0c0c0f);display:block;position:absolute;inset:0;overflow:hidden}.hero-image{object-fit:cover;object-position:center;width:100%;height:100%;display:block;position:absolute;inset:0}.character-card[data-animate=true] .hero-image{animation:13s ease-in-out infinite ken-burns;animation-delay:var(--animation-delay)}@media (prefers-reduced-motion:reduce){.character-card[data-animate=true] .hero-image{animation:none}}.portrait-scrim{background:linear-gradient(#0000 38%,#08080ab8 68%,#08080af2 100%);display:block;position:absolute;inset:0}.card-overlay{z-index:3;padding:11px 11px 10px;display:block;position:absolute;bottom:0;left:0;right:0}.character-name{color:var(--text);font-family:var(--font-display);letter-spacing:-.02em;font-size:14.5px;font-weight:600;line-height:1.15;display:block}.character-creator{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11.5px;line-height:1.2;display:block;overflow:hidden}.stats{align-items:center;gap:9px;margin-top:7px;display:flex}.card-tag{min-width:0;color:var(--secondary-text);font-family:var(--font-mono);letter-spacing:.06em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;background:#ffffff21;border-radius:5px;flex:0 auto;padding:3px 6px;font-size:9.5px;overflow:hidden}.stat{color:var(--muted);font-family:var(--font-mono);flex:none;align-items:center;gap:4px;font-size:10px;display:inline-flex}.stat svg{stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;fill:none;width:12px;height:12px}.stat.likes svg{color:#ff6b81;stroke:none;fill:currentColor}.pagination{justify-content:center;align-items:center;gap:8px;margin-top:30px;display:flex}.pagination-pages{align-items:center;gap:5px;display:flex}.pagination-item{align-items:center;gap:5px;display:inline-flex}.pagination-step,.pagination-page{min-width:36px;height:36px;color:var(--secondary-text);font-family:var(--font-mono);cursor:pointer;background:#ffffff0d;border:1px solid #ffffff14;border-radius:11px;padding:0;font-size:11.5px;transition:color .16s,background .16s,border-color .16s}.pagination-step{place-items:center;display:grid}.pagination-step:first-child svg{transform:rotate(180deg)}.pagination-step svg{stroke:currentColor;stroke-width:2.2px;fill:none;width:15px;height:15px}.pagination-step:hover:not(:disabled),.pagination-page:hover:not(:disabled){color:var(--text);border-color:#fff3}.pagination-page.active{color:#fff;background:var(--accent-soft);border-color:var(--accent)}.pagination-step:disabled,.pagination-page:disabled{cursor:default;opacity:.4}.pagination-ellipsis{min-width:14px;color:var(--faint);font-family:var(--font-mono);text-align:center;font-size:11px}.pagination-summary{min-width:92px;color:var(--muted);font-family:var(--font-mono);text-align:center;font-size:11px;display:none}.empty-state{color:var(--secondary-text);text-align:center;flex-direction:column;align-items:center;padding:64px 20px;display:flex}.empty-icon{border:1px solid var(--border);background:#ffffff0a;border-radius:50%;place-items:center;width:58px;height:58px;margin-bottom:16px;display:grid}.empty-icon svg{width:24px;height:24px;color:var(--muted);stroke:currentColor;stroke-width:2px;fill:none}.empty-state h2{color:var(--text);font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 6px;font-size:19px;font-weight:700}.empty-state p{margin:0;font-size:13.5px}.empty-state button{color:var(--text);font-family:var(--font-display);cursor:pointer;border:1px solid var(--border);border-radius:var(--radius-md);background:#ffffff14;margin-top:18px;padding:10px 18px;font-size:13px;font-weight:600}.request-status,.request-error{min-height:180px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-align:center;justify-content:center;align-items:center;gap:10px;font-size:11.5px;display:flex}.loading-spinner{border:2px solid #ffffff1a;border-top-color:var(--accent-bright);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.request-error{font-family:var(--font);letter-spacing:normal;flex-direction:column;font-size:13px}.request-error p{margin:0}.request-error button{color:var(--text);font-family:var(--font-display);cursor:pointer;border:1px solid var(--border);border-radius:var(--radius-md);background:#ffffff14;padding:9px 16px;font-size:13px;font-weight:600}.privacy-note{border-radius:var(--radius-xxl);background:#ffffff09;border:1px solid #ffffff14;margin-top:28px;padding:16px}.privacy-note-label{color:oklch(82% .13 155);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:7px;margin:0 0 7px;font-size:10px;display:flex}.privacy-note-dot{background:var(--green);border-radius:50%;width:6px;height:6px;animation:2.4s ease-in-out infinite hub-pulse}.privacy-note-copy{max-width:640px;color:var(--secondary-text);text-wrap:pretty;margin:0;font-size:14px;line-height:1.5}.gallery-information{border-radius:var(--radius-hero);background:#ffffff09;border:1px solid #ffffff14;gap:28px;margin-top:44px;padding:clamp(20px,4vw,32px);display:grid}.gallery-information-intro{max-width:720px}.gallery-information h2{color:var(--text);font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:22px;font-weight:700;line-height:1.15}.gallery-information-intro>p:last-child{color:var(--secondary-text);text-wrap:pretty;margin:11px 0 0;font-size:14px;line-height:1.6}.gallery-faq{gap:13px;display:grid}.gallery-faq>h2{font-size:18px}.gallery-faq-grid{gap:10px;display:grid}.gallery-faq article{border-radius:var(--radius-md);background:#ffffff08;border:1px solid #ffffff12;padding:15px}.gallery-faq h3{color:var(--text);font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:14.5px;font-weight:600;line-height:1.3}.gallery-faq article p{color:var(--secondary-text);margin:7px 0 0;font-size:13.5px;line-height:1.55}.page-footer{border-top:1px solid var(--hairline);margin-top:44px;padding-top:30px}.app-download-links{text-align:center;justify-items:center;gap:13px;display:grid}.app-download-links p{color:var(--muted);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:10.5px}.app-download-badges{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;display:flex}.app-download-badges a{border-radius:8px;line-height:0;transition:opacity .16s,transform .16s;display:block}.app-download-badges a:hover{opacity:.88;transform:translateY(-1px)}.app-download-badges a:focus-visible{outline:2px solid var(--accent-bright);outline-offset:4px}.app-download-badges img{width:auto;height:44px;display:block}.character-modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#060608b8;place-items:center;padding:18px;animation:.18s ease-out hub-fade;display:grid;position:fixed;inset:0;overflow-y:auto}.character-modal{--modal-surface:#101013;background:var(--modal-surface);scrollbar-color:#ffffff2e transparent;border:1px solid #ffffff1f;border-radius:26px;width:min(100%,620px);max-height:min(880px,100dvh - 36px);animation:.32s cubic-bezier(.22,1,.36,1) modal-in;position:relative;overflow:hidden auto;box-shadow:0 30px 90px #000000a6}.character-modal-banner{background:repeating-linear-gradient(58deg, #ffffff0d 0 9px, #fff0 9px 18px), radial-gradient(120% 90% at 30% 15%, var(--modal-accent), transparent 60%), linear-gradient(145deg, var(--modal-accent-soft), #131318 68%);height:clamp(230px,42vw,320px);position:relative;overflow:hidden}.character-modal-banner img{object-fit:cover;object-position:center 22%;width:100%;height:100%}.character-modal-banner:before,.character-modal-banner:after{content:"";pointer-events:none;position:absolute}.character-modal-banner:before{border:1px solid #ffffff12;border-radius:15px;inset:13px}.character-modal-banner:after{background:linear-gradient(180deg, transparent, var(--modal-surface));height:62%;bottom:0;left:0;right:0}.character-modal-close{z-index:4;width:36px;height:36px;color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#08080ab3;border:1px solid #ffffff24;border-radius:11px;place-items:center;padding:0;transition:background .16s;display:grid;position:absolute;top:14px;right:14px}.character-modal-close:hover{background:#1e1e24e6}.character-modal-close svg{stroke:currentColor;stroke-width:2.2px;fill:none;width:17px;height:17px}.character-modal-avatar{z-index:3;color:#fff;width:92px;height:92px;font-family:var(--font-display);background:linear-gradient(145deg, var(--modal-accent), var(--modal-accent-soft));border:3px solid var(--modal-surface);border-radius:20px;place-items:center;font-size:34px;font-weight:700;display:grid;position:absolute;top:clamp(160px,42vw - 68px,250px);left:20px;overflow:hidden;box-shadow:0 14px 35px #0000007a}.character-modal-avatar img{object-fit:cover;width:100%;height:100%}.character-modal-content{padding:22px clamp(20px,5vw,32px) 30px}.character-modal-heading{text-align:left}.character-modal-eyebrow{color:var(--cyan);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 8px;font-size:10px}.character-modal-heading h2{color:var(--text);font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(26px,6vw,34px);font-weight:700;line-height:1.06}.character-modal-creator{color:var(--muted);margin:5px 0 0;font-size:13.5px}.character-modal-stats{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);justify-content:flex-start;gap:22px;margin:18px 0 0;padding:14px 0;display:flex}.character-modal-stats>span,.character-modal-like{color:var(--muted);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;grid-template-columns:auto auto;align-items:center;column-gap:7px;font-size:9.5px;display:grid}.character-modal-like{color:var(--muted);font:inherit;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;text-align:left;background:0 0;border:0;padding:0;font-size:9.5px;position:relative}.character-modal-stats>span>svg,.character-modal-like-icon>svg:first-child{width:17px;height:17px;color:var(--accent-bright);stroke:currentColor;stroke-width:2px;fill:none;grid-row:1/3}.character-modal-like-icon{color:#ff6b81;grid-row:1/3;place-items:center;width:17px;height:17px;display:grid;position:relative}.character-modal-like-icon>svg:first-child{color:#ff6b81;stroke:none;fill:currentColor;transition:transform .14s}.character-modal-like:hover .character-modal-like-icon>svg:first-child{transform:scale(1.12)}.character-modal-like:active .character-modal-like-icon>svg:first-child{transform:scale(.92)}.character-modal-floating-heart{pointer-events:none;filter:drop-shadow(0 3px 5px #ff325a59);width:14px;height:14px;animation:.7s ease-out forwards character-heart-float;position:absolute;bottom:2px;left:2px}.character-modal-like:focus-visible{outline:2px solid var(--text);outline-offset:5px;border-radius:4px}.character-modal-stats strong{color:var(--text);font-family:var(--font-display);letter-spacing:-.01em;font-size:14px;font-weight:700;line-height:1}@keyframes character-heart-float{0%{opacity:1;transform:translate(0,0)rotate(0)scale(.65)}45%{opacity:1;transform:translateY(-25px)rotate(0)scale(1)}to{opacity:0;transform:translate3d(var(--heart-offset), -52px, 0) rotate(var(--heart-rotation)) scale(.8)}}@media (prefers-reduced-motion:reduce){.character-modal-floating-heart{animation-duration:.25s}}.character-modal-actions{justify-items:stretch;margin-top:18px;display:grid}.character-modal-action-buttons{gap:10px;display:flex}.character-modal-action-button{height:50px;font-family:var(--font-display);cursor:pointer;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:15px;font-weight:600;transition:filter .16s,background .16s,transform .16s;display:inline-flex}.tavern-png-button{color:#0a0a0c;background:var(--text);border:0;flex:1}.share-button{color:var(--secondary-text);background:0 0;border:1px solid #ffffff29;flex:none}.character-modal-action-button svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;fill:none;flex:none;width:18px;height:18px}.character-modal-action-button:hover:not(:disabled){transform:translateY(-1px)}.tavern-png-button:hover:not(:disabled){filter:brightness(1.06)}.share-button:hover{color:var(--text);background:#ffffff14}.character-modal-action-button:disabled{cursor:not-allowed;filter:grayscale(.5);opacity:.5}.character-modal-action-button:focus-visible,.character-modal-close:focus-visible,.character-modal-share button:focus-visible,.character-modal-share input:focus-visible,.character-modal-section-copy:focus-visible{outline:2px solid var(--text);outline-offset:3px}.character-modal-export-error{color:#ff9aa9;margin:10px 0 0;font-size:12.5px;line-height:1.45}.character-modal-share{width:100%;margin-top:14px}.character-modal-share label{color:var(--muted);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:7px;font-size:9.5px;display:block}.character-modal-share-control{gap:8px;display:flex}.character-modal-share input{min-width:0;color:var(--secondary-text);font-family:var(--font-mono);text-overflow:ellipsis;border-radius:var(--radius-md);background:#ffffff0d;border:1px solid #ffffff1a;flex:1;padding:11px 12px;font-size:11.5px;overflow:hidden}.character-modal-share button{color:var(--text);font-family:var(--font-display);cursor:pointer;border-radius:var(--radius-md);background:#ffffff17;border:1px solid #ffffff1f;align-items:center;gap:6px;padding:11px 14px;font-size:12.5px;font-weight:600;display:inline-flex}.character-modal-share button:hover{background:#ffffff24}.character-modal-share button svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;fill:none;width:15px;height:15px}.character-modal-share p{color:#ff9aa9;margin:7px 0 0;font-size:11.5px}.character-modal-tags{flex-wrap:wrap;gap:6px;margin-top:18px;display:flex}.character-modal-tags span{color:var(--secondary-text);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;background:#ffffff14;border:1px solid #ffffff1a;border-radius:7px;padding:5px 9px;font-size:9.5px}.character-modal-details{margin-top:26px}.character-modal-details section+section{border-top:1px solid var(--hairline);margin-top:24px;padding-top:22px}.character-modal-section-heading{align-items:center;gap:8px;margin-bottom:10px;display:flex}.character-modal-details h3{color:var(--muted);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:10px;font-weight:400}.character-modal-section-copy{width:26px;height:26px;color:var(--muted);cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:8px;place-items:center;padding:0;transition:background .16s,color .16s;display:grid}.character-modal-section-copy:hover{color:var(--text);background:#ffffff1f}.character-modal-section-copy svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;fill:none;width:13px;height:13px}.character-modal-copy-feedback{color:var(--cyan);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:9.5px}.character-modal-copy-feedback.error{color:#ff9aa9}.character-modal-details p{color:var(--secondary-text);white-space:pre-line;text-wrap:pretty;margin:0;font-size:14.5px;line-height:1.62}.character-modal-details section[data-section=opening-message] p{color:#f2f0f5e6;background:#ffffff0e;border:1px solid #ffffff12;border-radius:16px 16px 16px 5px;padding:14px 15px;font-size:15px;font-style:italic;line-height:1.48}.character-modal-download-links{border-top:1px solid var(--hairline);margin-top:30px;padding-top:26px}.character-modal-download-links .app-download-badges a:focus-visible{outline-color:var(--text)}@keyframes modal-in{0%{opacity:0;transform:translateY(16px)scale(.985)}}@keyframes drift-one{50%{transform:translate(6vw,4vh)scale(1.12)}}@keyframes drift-two{50%{transform:translate(-5vw,5vh)scale(1.08)}}@keyframes drift-three{50%{transform:translate(-4vw,-5vh)scale(1.15)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ken-burns{0%,to{transform:scale(1.05)}50%{transform:scale(1.13)}}@media (width<=719px){.gallery-intro h1{font-size:clamp(24px,6vw,28px)}}@media (width>=720px){:root{--screen-gutter:28px}.shell{padding-bottom:90px}.character-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.scroller{gap:14px}.spotlight-art{height:clamp(390px,34vw,470px)}.spotlight-scrim{background:linear-gradient(90deg,#08080ae0 0%,#08080a73 42%,#08080a0d 72%),linear-gradient(#08080a0d 0%,#08080a59 45%,#08080aeb 100%)}.spotlight-body{max-width:620px;padding:30px}.gallery-faq-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=540px){.pagination{gap:6px}.pagination-step{min-width:34px;height:34px}.pagination-pages{display:none}.pagination-summary{display:block}.character-modal-backdrop{place-items:end center;padding:0}.character-modal{border-bottom:0;border-left:0;border-right:0;border-radius:26px 26px 0 0;width:100%;max-height:94dvh}.character-modal-action-buttons{flex-wrap:wrap}.app-download-badges img{height:40px}}
