/* ============================================================
   Sitewide pixel pass
   ============================================================ */
:root{--px-ink:#f9f3ff;--px-muted:#b8adc9;--px-panel:#171020;--px-panel2:#21172e;--px-line:#090611;--px-hi:#ff9bc7;--px-blue:#8fb8ff;--px-gold:#ffd27f}
body:not(.is-home){background:
  repeating-linear-gradient(90deg,rgba(255,255,255,.03) 0 1px,transparent 1px 8px),
  repeating-linear-gradient(0deg,rgba(255,255,255,.022) 0 1px,transparent 1px 8px),
  var(--bg)}
body:not(.is-home) .aurora{display:none}
.site-header,.site-header.scrolled,body:not(.is-home) .site-header{
  background:var(--surf2);border-bottom:4px solid var(--px-line);box-shadow:0 6px 0 rgba(0,0,0,.35);backdrop-filter:none}
.logo{font-family:'Press Start 2P',monospace;font-size:15px;letter-spacing:1px;text-shadow:3px 3px 0 #000}
.nav a{font-family:'Press Start 2P',monospace;font-size:8px;letter-spacing:0;padding:7px 0;color:var(--px-muted)}
.nav a.cur,.nav a:hover{color:var(--px-gold);text-shadow:2px 2px 0 #000}
/* CJK 在像素字体下会回退 monospace 8px 太小 → 非英文用 Noto Sans 放大 */
html[lang="zh-Hans"] .nav a,html[lang="zh-Hant"] .nav a,html[lang="ko"] .nav a,html[lang="ja"] .nav a{
  font-family:'Noto Sans SC','Noto Sans',sans-serif;font-size:13px;font-weight:700;letter-spacing:1px;padding:6px 0}
.nav-toggle{font-family:'Press Start 2P',monospace;border:3px solid var(--px-line);background:var(--px-panel2);color:#fff;box-shadow:4px 4px 0 #000}
section.page{background:
  repeating-linear-gradient(90deg,rgba(255,255,255,.03) 0 1px,transparent 1px 8px),
  repeating-linear-gradient(0deg,rgba(255,255,255,.022) 0 1px,transparent 1px 8px)}
.section.alt{background:
  repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,transparent 1px 8px),
  linear-gradient(180deg,var(--surf2),#100b19);border-top:4px solid var(--px-line);border-bottom:4px solid var(--px-line)}
.section-head{padding:18px 22px;background:var(--surf2);border:4px solid var(--px-line);box-shadow:8px 8px 0 #000;margin-bottom:46px}
.sec-idx,.section-head h2,.sub-head,.shelf-label,.tv-brand,.gm-top{font-family:'Press Start 2P',monospace;letter-spacing:0}
.section-head h2{font-size:clamp(21px,3vw,34px);line-height:1.3;text-shadow:3px 3px 0 #000;color:#fff}
.section-head p,.note,.legend{color:var(--px-muted)}
.legend,.note code{border:3px solid var(--px-line);border-radius:0;background:var(--px-panel2);box-shadow:4px 4px 0 #000}
.album-card,.content-card,.link-card,.guest-row,.cheer-base,.cal-page .cal-detail,.lr-pop,.cal-note{
  border:4px solid var(--px-line);border-radius:0;background:var(--px-panel);box-shadow:8px 8px 0 rgba(0,0,0,.55)}
.album-card:hover,.content-card:hover,.link-card:hover{transform:translate(-2px,-4px);box-shadow:10px 12px 0 rgba(0,0,0,.6);border-color:var(--px-hi)}
.album-cover{border-radius:0;background:
  repeating-linear-gradient(90deg,rgba(0,0,0,.18) 0 4px,transparent 4px 8px),
  linear-gradient(150deg,var(--g1),var(--g2))}
.album-cover:before,.ac-disc{display:none}
.ac-type,.ac-soon,.cc-tag,.bk-tag,.csc-mbti,.cd-st,.tv-ch .ch-name em{border-radius:0;border:2px solid var(--px-line);box-shadow:3px 3px 0 rgba(0,0,0,.45)}
.play-btn,.tl,.gr-lk,.bk-lk,.cheer-body .links a,.lr-pop .pop-link,.cd-lk{
  border:3px solid var(--px-line);border-radius:0;background:var(--px-panel2);color:#f7efff;box-shadow:4px 4px 0 rgba(0,0,0,.45);font-family:'Press Start 2P',monospace;font-size:8px;letter-spacing:0}
.play-btn:hover,.tl:hover,.gr-lk:hover,.bk-lk:hover{transform:translate(-1px,-2px);box-shadow:5px 6px 0 rgba(0,0,0,.55)}
.track,.t-links .tl,.tl-grp{border-radius:0}
.tv-set,.tv-frame,.tv-screen-big,.tv-channels,.tv-ch,.char-select,.cs-roster,.cs-tab,.csc,.csc-portrait,.csc-rows,.csc-bar,.phone,.ph-screen,.ph-dock,.ai-tile,.bookcase,.book,.shelf-page .guest-row,.cal-page .cal-mon,.cal-page .cal-d,.gacha-machine,.gm-dome,.gm-body,.gm-cap,.gm-knob,.gm-tray,.gm-tray-cap{
  border-radius:0!important}
.tv-set,.char-select,.phone,.shelf-page .bookcase,.gacha-machine{
  border:6px solid var(--px-line);background:var(--px-panel);box-shadow:10px 10px 0 rgba(0,0,0,.58),inset 0 0 0 4px rgba(255,255,255,.04)}
.tv-frame,.tv-channels,.cs-roster,.csc,.ph-screen,.ph-dock,.gm-dome,.gm-body,.gm-tray{
  border:4px solid var(--px-line);box-shadow:6px 6px 0 rgba(0,0,0,.45);background:#100b19}
.tv-screen-big{border:4px solid #05030a;background:
  repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0 2px,transparent 2px 5px),
  radial-gradient(120% 90% at 50% 0%,var(--px-panel),#06040a 82%)}
.tv-screen-big:before,.tv-glass{border-radius:0}
.tv-ch{border:3px solid var(--px-line);background:var(--px-panel2);box-shadow:4px 4px 0 rgba(0,0,0,.4)}
.tv-ch:hover{transform:translate(-2px,-2px)}
.tv-ch.on{background:#8f5bff;border-color:var(--px-line);box-shadow:5px 5px 0 #000}
.tv-ch .ch-no{border-radius:0;border:2px solid var(--px-line);background:#100b19}
.cs-roster{padding:10px}
.cs-tab{border:3px solid var(--px-line);background:var(--px-panel2);box-shadow:4px 4px 0 rgba(0,0,0,.45)}
.cs-tab.on{background:#8f5bff;box-shadow:5px 5px 0 #000}
.csc-portrait{background:
  repeating-linear-gradient(90deg,rgba(0,0,0,.16) 0 5px,transparent 5px 10px),
  linear-gradient(160deg,var(--c1,#9b8bff),var(--c2,#ff84bd))}
.csc-portrait:before{background:linear-gradient(transparent 45%,rgba(8,6,16,.55))}
.csc-emoji{filter:drop-shadow(5px 5px 0 rgba(0,0,0,.5));animation:cscEmoji 3.5s steps(2,end) infinite}
.csc-bar{border:3px solid var(--px-line);height:14px;background:#0b0711}
.csc-bar i{border-radius:0;background:linear-gradient(90deg,var(--c1,#9b8bff),var(--c2,#ff84bd))}
.csc-rows{border:3px solid var(--px-line)}
.phone-page .phone-wrap::before,.ai-tile::after{display:none}
.phone-page .phone{animation:none;background:var(--surf2);padding:12px}
.ph-notch,.ph-home{border-radius:0;background:#090611}
.ai-tile{border:3px solid var(--px-line);background:var(--ac);box-shadow:4px 4px 0 rgba(0,0,0,.48),inset 0 4px 0 rgba(255,255,255,.2)}
.app-grid .app-ico{animation:appBob 3.2s steps(2,end) infinite}
.shelf-page .bookcase{background:linear-gradient(180deg,var(--surf),var(--surf-d))}
.shelf-label{border-radius:0;box-shadow:4px 4px 0 #000}
.book{border:3px solid var(--edge);box-shadow:5px 7px 0 rgba(0,0,0,.5);background:linear-gradient(180deg,var(--bc),var(--bc2))}
.book:before{width:4px;background:rgba(255,255,255,.45)}.book:after{display:none}
.shelf-page .guest-row{border:3px solid var(--edge);box-shadow:5px 5px 0 rgba(0,0,0,.45);background:linear-gradient(180deg,var(--surf-l),var(--surf))}
.shelf-page .guest-row:before,.shelf-page .guest-row:after{border-radius:0}
.shelf-plank{border-radius:0!important;box-shadow:4px 4px 0 rgba(0,0,0,.4),0 0 10px -1px rgba(255,132,189,.4)}
.cal-page .cal-mon{border:4px solid var(--px-line);background:var(--px-panel);box-shadow:6px 6px 0 rgba(0,0,0,.45)}
.cal-page .cal-mon.has-ev{box-shadow:6px 6px 0 rgba(0,0,0,.45),inset 0 0 0 3px rgba(255,155,199,.2)}
.cal-page .cal-mon h4{font-family:'Press Start 2P',monospace;font-size:11px}
.cal-page .cal-d{background:#100b19;border:2px solid rgba(255,255,255,.05)}
.cal-page .cal-d.hit{background:var(--px-panel2);border-color:var(--px-line);box-shadow:3px 3px 0 rgba(0,0,0,.42)}
.cal-page .cal-d.hit:hover,.cal-page .cal-d.sel{transform:translate(-1px,-2px) scale(1.08)}
.cal-page .cal-d.today:after{border-radius:0;border:3px solid var(--px-gold)}
.cal-note{background:#fff1a8;color:#2a1708;border-color:#170d07;box-shadow:8px 8px 0 rgba(0,0,0,.55)}
.cal-note .cn-x{border-radius:0;border:3px solid #170d07;box-shadow:3px 3px 0 rgba(0,0,0,.35)}
.gacha-machine,.gm-body,.gm-tray{background:var(--px-panel)}
.gm-dome{background:
  repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 4px,transparent 4px 8px),
  linear-gradient(180deg,rgba(180,200,255,.05),rgba(120,140,200,.04))}
.gm-cap{border:3px solid var(--px-line);background:linear-gradient(180deg,#fff 0 18%,var(--cap) 18% 58%,color-mix(in srgb,var(--cap) 65%,#000) 58%);box-shadow:5px 5px 0 rgba(0,0,0,.45);animation:gmFloat 4.5s steps(2,end) infinite}
.gm-knob,.gm-tray-cap{background:#9b8bff;box-shadow:inset -5px -5px 0 rgba(0,0,0,.22),4px 4px 0 rgba(0,0,0,.42)}
.gm-coinslot,.gm-slot{border-radius:0}
.page-fx .fx-wipe,.fx-vs,.fx-badge{image-rendering:pixelated}

/* ---- Stardew pass: pixel texture stays, but curvature comes back ---- */
/* panels/cards: gentle pixel corner instead of razor square */
.album-card,.content-card,.link-card,.guest-row,.cheer-base,.cal-page .cal-detail,.lr-pop,.cal-note,
.section-head,.legend,.note code,.album-cover,.tv-set,.tv-frame,.tv-screen-big,.tv-channels,.tv-ch,
.char-select,.cs-roster,.cs-tab,.csc,.csc-portrait,.csc-rows,.phone,.ph-screen,.ph-dock,.ai-tile,
.bookcase,.book,.cal-page .cal-mon,.cal-page .cal-d,.gacha-machine,.gm-body,.gm-tray,
.play-btn,.tl,.gr-lk,.bk-lk,.lr-pop .pop-link,.cd-lk,.shelf-label,.cal-note .cn-x,
.ac-type,.ac-soon,.cc-tag,.bk-tag,.csc-mbti,.cd-st,.tv-ch .ch-name em,
.lr-window,.lr-cal,.lr-shelf,.lr-banner .bn-screen,.lr-banner .bn-base,.lr-rug{border-radius:5px!important}
/* genuinely round objects */
.gm-cap,.gm-knob,.gm-tray-cap,.lr-clock{border-radius:50%!important}
/* 沙发上的是抱枕，不是球：圆角方形 */
.lr-person{border-radius:34%!important}
.lr-person:before{border-radius:50%!important}
.gm-dome{border-radius:14px!important}
.lr-sky .cloud{border-radius:5px!important}

/* ===== 大屏自适应：客厅文字 / emoji / 摆件随视口缩放 ===== */
@media(min-width:721px){
  .lr-title{font-size:clamp(22px,3.1vw,50px)}
  .lr-title em{font-size:clamp(8px,1.05vw,17px)}
  .cal-month{font-size:clamp(8px,1vw,16px)}
  .cal-grid i{font-size:clamp(4px,.62vw,11px)}
  .shelf-row i b{font-size:clamp(4.5px,.66vw,12px)}
  .lr-poster .po-cap{font-size:clamp(6px,.8vw,14px)}
  .lr-sign{font-size:clamp(8px,0.85vw,13px)}
  .lr-banner .bn-screen i:first-child{font-size:clamp(7px,.95vw,17px)}
  .lr-banner .bn-screen i:last-child{font-size:clamp(5px,.66vw,12px)}
  .lr-prow.back .lr-person,.lr-prow.front .lr-person{--ps:clamp(40px,4.1vw,70px)}
  /* 抱枕以两行中线为轴缩放，不再从底排下移 */
  .lr-people{justify-content:center;top:55.7%}
  .lr-plush{left:79.6%;top:auto;bottom:1%;right:auto;width:clamp(80px,11vw,150px);height:clamp(80px,12vw,160px)}
  .lr-plush .plush-doll{font-size:clamp(34px,4.6vw,76px)}
  .lr-plush .plush-doll.d2{font-size:clamp(20px,2.7vw,46px);margin-left:clamp(-26px,-1.6vw,-12px)}
  /* 海报：大头海报，emoji 更大、错落有致 */
  .lr-poster{width:13%;height:25%}
  .lr-poster .po-img i:nth-child(1){left:3%;top:7%;font-size:clamp(13px,1.5vw,26px)}
  .lr-poster .po-img i:nth-child(2){left:38%;top:2%;font-size:clamp(16px,1.85vw,32px);z-index:3}
  .lr-poster .po-img i:nth-child(3){left:70%;top:8%;font-size:clamp(13px,1.5vw,26px)}
  .lr-poster .po-img i:nth-child(4){left:16%;top:38%;font-size:clamp(19px,2.2vw,40px);z-index:4}
  .lr-poster .po-img i:nth-child(5){left:48%;top:34%;font-size:clamp(22px,2.6vw,46px);z-index:5}
  .lr-poster .po-img i:nth-child(6){left:6%;top:64%;font-size:clamp(18px,2.1vw,38px);z-index:4}
  .lr-poster .po-img i:nth-child(7){left:56%;top:64%;font-size:clamp(21px,2.5vw,44px);z-index:6}
  .lr-poster .po-img i.po-fox-i{left:78%;top:46%;font-size:clamp(15px,1.8vw,32px);z-index:7}
}
/* 小屏只显示前几本书，避免太挤 */
@media(max-width:720px){
  .lr-shelf .shelf-row i:nth-child(n+5){display:none}
}

/* ---- books: keep a book-like curve, spine rounded on the left ---- */
.book{border-radius:4px 9px 9px 4px!important}
.shelf-page .guest-row{border-radius:14px 6px 6px 14px!important;overflow:hidden}
.shelf-page .guest-row:before{border-radius:14px 0 0 14px!important}
.shelf-page .guest-row:after{border-radius:4px!important}

/* ---- retro CRT television ---- */
.tv-set{background:linear-gradient(165deg,#bb7d43,#894e24)!important;border:6px solid #46280f!important;
  box-shadow:10px 10px 0 rgba(0,0,0,.5),inset 0 0 0 4px rgba(255,222,176,.14)!important}
.tv-frame{background:#0c140d!important;border:5px solid #2a1a0c!important;
  box-shadow:inset 0 0 0 4px #d9c49a,7px 7px 0 rgba(0,0,0,.4)!important}
.tv-screen-big{background:radial-gradient(120% 90% at 50% 0%,#16331f,#050f0a 82%)!important}
.tv-brand{color:#ffe3b0!important}
.tv-knob{background:radial-gradient(circle at 36% 30%,#ecd2a3,#8a5a2c)!important;
  box-shadow:inset 0 0 0 2px rgba(0,0,0,.32),3px 3px 0 rgba(0,0,0,.4)!important}
.tv-vent{background:repeating-linear-gradient(90deg,#46280f 0 3px,transparent 3px 7px)!important}

/* ---- calendar: seasonal accents, weekend tint, livelier event days ---- */
.cal-page .cal-mon{position:relative;overflow:hidden;padding-top:16px!important}
.cal-page .cal-mon:before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:var(--mon,#9b8bff)}
.cal-page .cal-mon h4{color:var(--mon,#fff)!important;text-shadow:2px 2px 0 #000}
.cal-page .cal-mon:nth-child(1),.cal-page .cal-mon:nth-child(2),.cal-page .cal-mon:nth-child(12){--mon:#8fb8ff}
.cal-page .cal-mon:nth-child(3),.cal-page .cal-mon:nth-child(4),.cal-page .cal-mon:nth-child(5){--mon:#7fe0c0}
.cal-page .cal-mon:nth-child(6),.cal-page .cal-mon:nth-child(7),.cal-page .cal-mon:nth-child(8){--mon:#ffd27f}
.cal-page .cal-mon:nth-child(9),.cal-page .cal-mon:nth-child(10),.cal-page .cal-mon:nth-child(11){--mon:#ffb892}
.cal-page .cal-wk span:first-child{color:#ff9bc7}
.cal-page .cal-wk span:last-child{color:#8fb8ff}
.cal-page .cal-d.hit{background:rgba(255,255,255,.06)}
.cal-page .cal-d.hit i{color:var(--mon,#fff)}
.cal-page .cal-d.ev{box-shadow:inset 0 0 0 2px rgba(255,155,199,.5)}
.cal-page .cal-d.bday{box-shadow:inset 0 0 0 2px rgba(255,210,127,.55)}

/* ---- official/social: brighter phone + daytime pixel wallpaper ---- */
.phone-page .phone{background:linear-gradient(160deg,#7d6cae,#564980)!important;border-color:#2a2142!important;
  box-shadow:0 0 0 6px #2f2750,0 22px 46px -16px rgba(0,0,0,.6),inset 0 0 0 2px rgba(255,255,255,.1)!important;padding:13px 13px 11px!important}
.ph-screen{position:relative;overflow:hidden;
  background:linear-gradient(180deg,#8fd6ff 0 56%,#bfe9ff 56% 62%)!important}
.ph-wall{position:absolute;inset:0;z-index:0;pointer-events:none}
.pw-sun{position:absolute;right:15%;top:9%;width:34px;height:34px;border-radius:50%;background:#ffe27a;
  box-shadow:0 0 0 7px rgba(255,240,150,.35)}
.pw-cloud{position:absolute;height:9px;background:#fff;border-radius:6px;
  box-shadow:11px 0 0 -1px #fff,-11px 1px 0 -2px #fff,5px -7px 0 -1px #fff}
.pw-cloud.a{width:34px;top:18%;left:14%}.pw-cloud.b{width:24px;top:30%;left:60%}
.pw-mtn{position:absolute;left:0;right:0;bottom:28%;height:22%;background:#7088c0;
  clip-path:polygon(0 100%,12% 46%,24% 100%,38% 28%,52% 100%,64% 42%,80% 100%,92% 52%,100% 100%)}
.pw-grass{position:absolute;left:0;right:0;bottom:0;height:28%;background:linear-gradient(180deg,#86c95a,#5fa547)}
.pw-grass:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:#a3e472}
.pw-zoo{position:absolute;left:0;right:0;bottom:0;height:28%;pointer-events:none;overflow:hidden}
.pw-zoo i{position:absolute;left:0;bottom:32%;font-style:normal;font-size:16px;line-height:1;
  filter:drop-shadow(0 2px 1px rgba(0,0,0,.3));will-change:transform,left}
.ph-greet,.app-grid,.ph-dots{position:relative;z-index:1}
.ph-greet{color:#1f1540!important;text-shadow:0 1px 0 rgba(255,255,255,.4)}
.phone-page .ai-label{color:#1f1540;text-shadow:0 1px 0 rgba(255,255,255,.45)}
@media(prefers-reduced-motion:reduce){.pw-zoo i{animation:none}}

@media(max-width:860px){
  .cal-page .year-cal{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:560px){
  .cal-page .year-cal{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .cal-page .cal-mon{padding:9px 8px 10px}
  .cal-page .cal-d i{font-size:9.5px}
  .cal-page .cd-cat{flex-basis:64px}
  .shelf-page .bookcase{padding:14px 12px 6px}
  .gm-cap{flex-basis:96px;height:96px}
  .gm-cap .cap-ico{font-size:24px}
  .gm-cap .cap-name{font-size:11px}
  .gm-dome{padding:52px 14px 22px;min-height:300px}
}
@media(prefers-reduced-motion:reduce){
  .gm-cap{animation:none}
  .fx-shelf .fx-wipe,.fx-flip .fx-wipe,.fx-capsule .fx-wipe,.on .fx-badge{animation:none}
  .cal-page .cd-st.st-live{animation:none}
}
