/* A character-first fan clubhouse: paper, stickers, and a little cyber light. */
:root {
  --bg: #fffaf0;
  --panel: #ffffff;
  --ink: #22303b;
  --muted: #53636d;
  --mint: #087f79;
  --amber: #a95324;
  --violet: #7450ad;
  --line: #ccd4cc;
  color-scheme: light;
}
body { background-image: radial-gradient(#63857a20 .8px, transparent .8px); background-size: 16px 16px; }
.site-header { max-width: none; background: var(--bg); border-bottom: 2px solid var(--ink); }
.brand-mark { border-width: 2px; }
.brand-mark span { background: var(--bg); }
.site-header a:hover { color: #087f79; }
.eyebrow { font-weight: 800; }
.button { border: 2px solid var(--ink); border-radius: 12px; box-shadow: 3px 4px 0 var(--ink); }
.button.primary { background: #d5f377; color: #20303b; }
.button.primary:hover { background: #e2ff95; color: #20303b; box-shadow: 5px 6px 0 var(--ink); }
.button.ghost { background: #fffdf4; border: 2px solid var(--ink); }
.button.ghost:hover { background: #fff2c5; color: #20303b; }
.button:hover { transform: translate(-1px,-2px); }
.fan-hero { height: auto; max-height: none; min-height: 690px; background: #d9eee6; border-bottom: 2px solid var(--ink); }
.fan-hero::before { content: ''; position: absolute; inset: 0; z-index: -1; background: radial-gradient(circle at 85% 20%, #f7d987 0, #f7d987 12%, transparent 12.2%), radial-gradient(circle at 43% 85%, #b9d9f1 0, #b9d9f1 15%, transparent 15.2%), repeating-linear-gradient(90deg, transparent, transparent 79px, #166b5120 80px), repeating-linear-gradient(0deg, transparent, transparent 79px, #166b5120 80px); }
.fan-hero .hero-content { display: grid; grid-template-columns: .9fr 1.1fr; align-items: center; gap: 40px; padding-block: 66px 78px; }
.fan-hero .eyebrow { font-size: 12px; letter-spacing: .18em; }
.hello-sticker { display: inline-block; padding: 4px 13px; background: #ffd29d; border: 1.5px solid #22303b; border-radius: 6px; transform: rotate(-3deg); font-size: 12px; font-weight: 700; margin-bottom: 17px; }
.fan-hero h1 { font-size: clamp(39px, 4.2vw, 65px); line-height: 1.5; letter-spacing: .02em; }
.fan-hero h1 em { color: #087f79; text-decoration: underline; text-decoration-color: #fac66c; text-decoration-thickness: 11px; text-underline-offset: -2px; text-decoration-skip-ink: none; }
.fan-hero .hero-lede { color: #35505a; font-size: 14px; line-height: 2.1; }
.hero-small { margin-top: 27px; font-size: 9px; letter-spacing: .15em; color: #46625f; }
.hero-cast { position: relative; display: grid; grid-template-columns: repeat(3,1fr); gap: 20px 17px; padding: 12px 0 20px; }
.hero-sticker { background: #fffdf6; padding: 8px 8px 0; border: 2px solid #22303b; border-radius: 15px; box-shadow: 5px 6px 0 #22303b; transform: rotate(-5deg); transition: transform .2s, box-shadow .2s; position: relative; z-index: 1; min-width: 0; }
.hero-sticker:nth-child(2n) { transform: rotate(5deg) translateY(8px); }
.hero-sticker:nth-child(3n) { transform: rotate(-2deg) translateY(-5px); }
.hero-sticker:hover { transform: rotate(0deg) translateY(-7px); box-shadow: 7px 10px 0 #22303b; z-index: 3; color: #22303b; }
.hero-sticker>div { height: 178px; overflow: hidden; border-radius: 8px; background: #d8f0e4; }
.hero-sticker:nth-child(2)>div { background: #e9f2ba; }
.hero-sticker:nth-child(3)>div,.hero-sticker:nth-child(4)>div { background: #f7d9b8; }
.hero-sticker:nth-child(5)>div,.hero-sticker:nth-child(6)>div { background: #e5d8f7; }
.hero-sticker .portrait { width: 100%; height: 100%; object-fit: cover; object-position: center 18%; }
.hero-sticker .portrait-shiro,.hero-sticker .portrait-pico { object-fit: contain; object-position: center bottom; }
.hero-sticker .symbol { width: 100%; height: 100%; padding: 20px; color: #7450ad; }
.hero-sticker>span { display: flex; justify-content: space-between; padding: 8px 4px; font-size: 10px; font-weight: 800; letter-spacing: .1em; }
.hero-sticker b { color: #087f79; }
.float-star { position: absolute; color: #087f79; font-size: 60px; z-index: 2; pointer-events: none; }
.star-one { right: -21px; bottom: -28px; transform: rotate(14deg); }
.star-two { left: -30px; top: -23px; color: #c46d2b; font-size: 45px; }
.hello-bubble { position: absolute; top: -27px; right: 10px; background: #fffdf4; font-size: 11px; padding: 8px 17px; border: 2px solid #22303b; border-radius: 50%; transform: rotate(8deg); z-index: 3; font-weight: 700; }
.fan-ticker { overflow: hidden; white-space: nowrap; background: #d5f377; border-top: 2px solid #22303b; padding: 11px 24px; color: #22303b; font-size: 13px; font-weight: 800; letter-spacing: .2em; text-align: center; }
.fan-corner { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; padding-top: 48px; }
.encounter-box,.expression-box { border: 2px solid #22303b; border-radius: 20px; background: #fffdf7; padding: 25px; box-shadow: 4px 5px 0 #e6d7bb; }
.encounter-box { display: flex; flex-direction: column; }
.encounter { display: grid; grid-template-columns: 135px 1fr; gap: 22px; align-items: center; flex: 1; }
.encounter-art { aspect-ratio: 1; background: #dcefe2; border-radius: 50%; overflow: hidden; border: 1px solid #add3bd; }
.encounter-art img { height: 100%; width: 100%; object-fit: cover; object-position: center 20%; }
.encounter-art .portrait-shiro,.encounter-art .portrait-pico { object-fit: contain; }
.encounter-art .symbol { height: 100%; width: 100%; padding: 12px; }
.encounter h2 { font-size: 25px; margin-top: 9px; }
.encounter p { font-size: 12px; color: #53636d; margin-block: 10px; }
.encounter .eyebrow { font-size: 8px; }
.shuffle-button { align-self: flex-end; margin-top: 20px; background: #e7dcf9; border: 1.5px solid #22303b; border-radius: 100px; padding: 9px 17px; font-size: 11px; font-weight: 700; }
.shuffle-button:hover { background: #d8c5f5; }
.expression-box { text-align: center; background: #f7f1de; }
.expression-images { display: flex; justify-content: center; gap: 12px; height: 145px; margin-block: 7px 10px; }
.expression-images img { object-fit: contain; width: 43%; height: 100%; transition: transform .2s; }
.expression-images img:hover { transform: rotate(-5deg) scale(1.04); }
.expression-controls { justify-content: center; margin: 0; }
.filters button { border-radius: 50px; }
.expression-controls button { padding: 5px 12px; font-size: 9px; }
.expression-controls button[aria-pressed=true] { background: #087f79; color: white; }
html:not(.js) [data-shuffle],html:not(.js) .expression-controls { display: none; }
.series-card { border: 2px solid #22303b; border-radius: 22px; box-shadow: 5px 6px 0 #d5dfd5; }
.series-card:hover { border-color: #22303b; box-shadow: 7px 9px 0 #b9d8c8; color: #22303b; }
.series-card .series-art { background: #cfe9de; color: #087f79; border-bottom: 2px solid #22303b; }
.series-card.amber .series-art { background: #f5d7b9; }
.series-card.violet .series-art { background: #e2d5f0; }
.series-card .era { border-radius: 5px; background: #22303b; color: #fffdf7; }
.series-card .portrait-shiro,.series-card .portrait-pico { object-fit: contain; object-position: bottom; padding-top: 12px; }
.series-copy { background: #fffdf7; }
.series-copy h3 { font-size: 26px; }
.card-bottom b { color: #087f79; }
.works-section { background: #ffead1; border-block: 1px solid #d9bda0; }
.work-art { background: #cdece0; border: 2px solid #22303b; border-radius: 16px; box-shadow: 3px 4px 0 #22303b; }
.work-art.tamaki { background: #e2d5f0; }
.work-art.shiropico { background: #d4eedf; }
.work-art>img { filter: none; }
.work-art .portrait-shiro,.work-art .portrait-pico { object-fit: contain; padding-top: 9px; }
.work-copy { border-bottom: 1px dashed #a59883; }
.status { font-weight: 700; }
.cast-preview { grid-template-columns: repeat(6,1fr); gap: 17px; }
.cast-art { border: 2px solid #22303b; border-radius: 20px 20px 8px 8px; background: #d5ede0; color: #087f79; }
.cast-card .cast-art:after { content: 'HELLO, GHOST!'; color: #22303b; background: #fffdf5; border: 1px solid #22303b; border-radius: 4px; padding: 1px 5px; transform: rotate(-4deg); }
.cast-art:before { display: none; }
.cast-art .portrait-shiro,.cast-art .portrait-pico { object-fit: contain; object-position: center bottom; padding-top: 10px; }
.cast-card.tamaki .cast-art { background: #e6daf5; color: #7450ad; }
.cast-preview .cast-art { height: 200px; }
.cast-preview .cast-copy h3 { font-size: 18px; }
.cast-preview .cast-copy .role { font-size: 9px; line-height: 1.7; }
.art-note { display: block; font-size: 9px; color: #7450ad; margin-top: 4px; }
.world-band { --ink: #f3f5eb; --muted: #c4d5d6; --mint: #78e6d0; --line: #42606a; background: #19343d; color: var(--ink); }
.world-band h2,.world-band h3 { color: #fffdf1; }
.world-principles article { border-color: #688a8e; }
.world-band .fine-note { color: #c4d5d6; }
.game-emblem { border-radius: 28px; background: #d7ebdf; border: 2px dashed #8cb9a3; }
.game-emblem:before,.game-emblem:after { display: none; }
.section-heading h2 { font-weight: 750; }
.series-detail { border: 2px solid #22303b; border-radius: 24px; overflow: hidden; box-shadow: 5px 6px 0 #d6ddce; }
.series-detail-art { background: #d4ecdf; }
.series-detail.violet .series-detail-art { background: #e3d7f0; }
.series-detail-art .portrait-shiro,.series-detail-art .portrait-pico { object-fit: contain; padding-top: 22px; }
.notice { border-radius: 0 15px 15px 0; background: #f1ead8; }
.filters button[aria-pressed=true] { color: white; }
.featured-game { border: 2px solid #22303b; border-radius: 25px; background: #e4f0e2; }
.game-details article { border: 2px solid #22303b; border-radius: 23px; box-shadow: 4px 5px 0 #e0ddcd; }
.site-footer { --ink: #f3f5eb; --muted: #c1d0d0; --mint: #78e6d0; --line: #42606a; color: var(--ink); background: #19343d; border-top: 3px solid #22303b; }
.site-footer .text-link:hover { color: #78e6d0; }
@media(max-width:1100px) {
  .fan-hero .hero-content { gap: 25px; }
  .hero-sticker>div { height: 145px; }
  .hero-cast { gap: 17px 13px; }
  .fan-hero .hero-actions { flex-direction: column; align-items: flex-start; }
  .fan-hero .hero-actions .button { min-width: 200px; }
  .encounter { grid-template-columns: 95px 1fr; gap: 16px; }
  .encounter h2 { font-size: 21px; }
  .encounter p { font-size: 11px; }
  .cast-preview { grid-template-columns: repeat(3,1fr); gap: 25px; }
  .cast-preview .cast-art { height: 260px; }
}
@media(max-width:780px) {
  #main-nav { background: #fffaf0; }
  .fan-hero { min-height: 0; }
  .fan-hero .hero-content { display: block; padding-block: 39px 50px; }
  .fan-hero .hero-copy { position: relative; }
  .fan-hero .eyebrow { font-size: 10px; margin-bottom: 17px; }
  .hello-sticker { font-size: 10px; margin-bottom: 14px; }
  .fan-hero h1 { font-size: 43px; line-height: 1.42; }
  .fan-hero .hero-lede { font-size: 12px; margin-top: 20px; }
  .fan-hero .hero-actions { flex-direction: row; margin-top: 22px; gap: 12px; }
  .fan-hero .hero-actions .button { min-width: 0; gap: 15px; font-size: 10px; }
  .hero-small { margin-top: 22px; font-size: 8px; }
  .hero-cast { margin-top: 45px; padding: 4px 7px 4px 0; gap: 18px 12px; }
  .hero-sticker { padding: 5px 5px 0; border-radius: 10px; box-shadow: 3px 4px 0 #22303b; }
  .hero-sticker>div { height: 125px; border-radius: 5px; }
  .hero-sticker>span { padding: 6px 2px; font-size: 8px; letter-spacing: .07em; }
  .hello-bubble { top: -31px; right: 9px; font-size: 9px; padding: 6px 12px; }
  .float-star { font-size: 39px; }
  .star-one { right: -4px; bottom: -28px; }
  .star-two { left: -10px; top: -24px; font-size: 32px; }
  .fan-ticker { font-size: 10px; text-align: left; padding: 10px 20px; letter-spacing: .13em; }
  .fan-corner { grid-template-columns: 1fr; padding-top: 30px; gap: 20px; }
  .encounter-box,.expression-box { padding: 21px; border-radius: 17px; }
  .encounter { grid-template-columns: 95px 1fr; }
  .encounter h2 { font-size: 23px; }
  .encounter p { font-size: 11px; }
  .shuffle-button { font-size: 10px; padding: 7px 13px; }
  .expression-images { height: 160px; margin-top: 15px; }
  .expression-controls button { font-size: 9px; padding: 6px 11px; }
  .series-card { border-radius: 17px; }
  .series-card .series-art { border-bottom: 0; border-right: 2px solid #22303b; }
  .series-card .portrait-shiro,.series-card .portrait-pico { object-fit: contain; padding-top: 8px; }
  .series-copy h3 { font-size: 21px; }
  .cast-preview { grid-template-columns: 1fr 1fr; gap: 23px 18px; }
  .cast-preview .cast-art { height: 225px; }
  .cast-art { border-radius: 17px 17px 7px 7px; }
  .cast-preview .cast-copy h3 { font-size: 19px; }
  .cast-preview .cast-copy .role { font-size: 9px; }
  .cast-card .cast-art:after { font-size: 7px; right: 7px; }
  .game-emblem { border-radius: 15px; }
  .series-detail { border-radius: 18px; }
  .series-detail-art .portrait-shiro,.series-detail-art .portrait-pico { padding-top: 15px; }
}
@media(max-width:370px) { .hero-sticker>div { height: 105px; } .fan-hero h1 { font-size: 37px; } .cast-preview .cast-art { height: 190px; } }
