/* Sewn edge tabs: attached to the page frame, with a longer active tab. */
@media (any-hover:hover) and (any-pointer:fine){
  html{--dino-cursor:url('assets/axolotl-cursor.svg')}
  html.dino-blinking{--dino-cursor:url('assets/axolotl-cursor-blink.svg')}
  html,body{cursor:var(--dino-cursor) 5 4,auto}
  button,a,label,select{cursor:var(--dino-cursor) 5 4,pointer}
  input,textarea,[contenteditable="true"]{cursor:text}
}
.paper footer{font-size:13px;font-weight:500;line-height:1.8;color:#354967;letter-spacing:.2px;flex-wrap:wrap;gap:8px 20px;padding:16px 0 18px}
.paper footer strong{font-size:14px;color:#2e4468;border-color:#a6adc1}
@media(max-width:720px){.paper footer{font-size:12px;justify-content:center;text-align:center;gap:6px 14px}.paper footer > span:nth-child(2){flex-basis:100%}}
.scene{width:min(1540px,94vw);grid-template-columns:minmax(0,1fr) 158px;gap:0}
.paper{--paper-gutter:40px}
.card:nth-child(n) .card-art{height:auto;aspect-ratio:16 / 10;background:#fff7eb}
.card-art img{display:block;width:100%;height:100%;object-fit:cover}
.card .card-art img{position:absolute;inset:0}
.card:not(:nth-child(2)) .card-art img{object-fit:contain}
.card:nth-child(2) .card-art img{object-position:center 22%}
#game-detail .card-art{height:230px;background:#fff7eb}
#game-detail .card-art img{object-fit:contain}
#game-detail .card-art:after{display:none}
.card-art .new{top:auto;bottom:0;right:0;min-width:30%;height:19%;min-height:16px;display:grid;place-items:center;padding:0 7px;line-height:1;border-radius:14px 0 0 0}
.paper > .frame-tabs{position:absolute;left:calc(100% + 5px);top:40px;width:150px;display:grid;gap:9px;margin:0;z-index:4}
.paper > .frame-tabs:before{display:none}
.paper > .frame-tabs a{
  position:relative;display:flex;align-items:center;gap:9px;min-height:48px;width:100%;
  padding:10px 14px 10px 16px;border:1px solid #90768f;border-left:0;border-radius:0 11px 11px 0;
  background:linear-gradient(180deg,#c9b4ca,#b5a0bd);color:#fffaf2;font-size:16px;font-weight:600;letter-spacing:1px;
  text-shadow:0 1px 1px #79648055;box-shadow:inset 0 1px 0 #fff9,0 3px 4px #8c6f8826;
  transform:none;transition:width .22s ease,background .22s ease,color .22s ease;
}
.paper > .frame-tabs a span{margin:0;width:23px;font-size:20px;line-height:1;text-align:center}
.paper > .frame-tabs a:before{content:'';position:absolute;inset:5px 5px 5px 0;border:1px dashed #fff7ebaa;border-left:0;border-radius:0 7px 7px 0;pointer-events:none}
.paper > .frame-tabs a:nth-child(n){transform:none}
.paper > .frame-tabs a:hover{width:calc(100% + 6px);background:linear-gradient(#d4c1d8,#c2abcb);transform:none}
.paper > .frame-tabs a.selected{width:calc(100% + 12px);background:linear-gradient(#fff9ee,#f1dfdf);color:#7e617d;border-color:#b08ea4;text-shadow:0 1px #fff;box-shadow:inset 0 1px 0 #fff,0 3px 5px #9f7a922b;transform:none}
.paper > .frame-tabs a.selected:before{border-color:#c396ac}
.paper > .frame-tabs a:after{right:7px;top:-8px;font-size:17px}
.scene > aside{padding-top:340px}
.scene > aside .hanging-note{width:145px;padding:15px 10px;margin-left:8px}
.scene > aside .small-note{width:130px;margin-left:8px}
@media(max-width:1250px){
  .scene{width:91vw}
  .scene > aside{padding-top:0;display:flex;gap:18px;flex-wrap:wrap;justify-content:center;align-items:center}
  .scene > aside .hanging-note,.scene > aside .small-note{margin:12px 0}
  .paper > .frame-tabs{position:relative;left:auto;top:auto;width:calc(100% + var(--paper-gutter) * 2);margin:15px calc(var(--paper-gutter) * -1) 0;padding:0 9px;display:flex;justify-content:center;flex-wrap:wrap;gap:6px}
  .paper > .frame-tabs a{flex:0 1 auto;width:auto;min-height:38px;padding:8px 12px;border-left:1px solid #90768f;border-radius:0 0 10px 10px;font-size:13px;gap:5px}
  .paper > .frame-tabs a span{width:18px;font-size:17px}
  .paper > .frame-tabs a:before{inset:0 4px 4px;border-left:1px dashed #fff7ebaa;border-top:0;border-radius:0 0 6px 6px}
  .paper > .frame-tabs a:hover,.paper > .frame-tabs a.selected{width:auto;transform:none}
  .paper > .frame-tabs a.selected{border-left-color:#b08ea4;box-shadow:inset 0 1px 0 #fff,0 3px 5px #9f7a9233}
  .paper > .frame-tabs a.selected:before{border-left-color:#c396ac}
}
@media(max-width:1100px){.paper{--paper-gutter:25px}}
@media(max-width:720px){
  .paper{--paper-gutter:20px}
  .paper > .frame-tabs{gap:5px;padding:0 6px;margin-top:18px}
  .paper > .frame-tabs a{min-width:44px;min-height:44px;font-size:12px;padding:8px;gap:3px;letter-spacing:0}
  .paper > .frame-tabs a span{display:none}
}

/* Pink crystal frame and the homepage's illustrated character panel. */
.paper{display:flex;flex-direction:column;border-width:12px;border-radius:19px;background:linear-gradient(115deg,#fffcfaf7,#fff3f8f5) padding-box,linear-gradient(130deg,#ac8cac,#e9c7dc 20%,#b897bc 40%,#f6daea 65%,#a78cae) border-box;background-size:100% 100%,200% 200%;box-shadow:0 0 0 2px #8e738f,0 0 0 5px #fce7f3,0 0 0 6px #ae8fa7,0 15px 40px #7d5c8233;animation:none}
.paper footer{margin-top:auto}
.paper:before{inset:8px;border-color:#ba94b5;border-radius:9px;box-shadow:inset 0 0 0 2px #fff9fc,inset 0 0 0 3px #dfc1d7}
.paper > .frame-tabs{left:calc(100% + 10px)}
.paper > .frame-tabs a:after{display:none}
.home-layout{display:grid;grid-template-columns:minmax(210.6px,27.54%) minmax(0,1fr);gap:42px;align-items:start;padding:30px 0 28px}
.home-copy .welcome h2{margin-top:10px;line-height:1.6;letter-spacing:0}
.home-copy .welcome p{margin:26px 0 0 44px;letter-spacing:1px;line-height:2.2}
.home-copy .tiny-flower{display:none}
.home-copy .section-title{margin-top:64px}
.home-copy .updates{padding-top:18px}
.home-copy .updates ul{line-height:2.5;letter-spacing:.3px}
.home-copy .updates time{width:115px}
.character-showcase{margin:0;padding:7px;border:2px solid #a77d9d;border-radius:12px;background:linear-gradient(145deg,#fff5fb,#e9c5dd);box-shadow:inset 0 0 0 1px #fff,0 6px 16px #ae80aa26;overflow:hidden}
.character-showcase figcaption{display:flex;justify-content:flex-end;align-items:center;padding:4px 5px 11px;color:#76576f;font-size:14px;letter-spacing:2px}
.character-showcase figcaption small{font-size:10px;letter-spacing:2px;color:#95748d}
.character-picture{position:relative;overflow:hidden;border:1px solid #c39bb4;border-radius:5px;background:#f6d8e5;isolation:isolate}
.character-picture img{display:block;width:100%;height:auto}
.portrait-glitter{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.portrait-glitter:before{content:'';position:absolute;inset:-30% -80%;background:linear-gradient(110deg,transparent 43%,#fff0 46%,#fff9 50%,#ffe2f477 52%,transparent 56%);transform:translateX(-65%);animation:portrait-sheen 6.5s ease-in-out infinite;mix-blend-mode:screen;will-change:transform,opacity}
.portrait-glitter i{position:absolute;left:var(--x);top:var(--y);width:var(--s);height:var(--s);background:radial-gradient(circle,#fff 0 22%,#fff4e8 30%,#ffd4ed 60%,transparent 72%);clip-path:polygon(50% 0,61% 38%,100% 50%,61% 62%,50% 100%,39% 62%,0 50%,39% 38%);filter:drop-shadow(0 0 3px white);animation:portrait-twinkle 3.6s ease-in-out var(--d) infinite}
@keyframes portrait-twinkle{0%,100%{opacity:.08;transform:scale(.35)}24%{opacity:.25;transform:scale(.6)}42%{opacity:1;transform:scale(1.1)}62%{opacity:.18;transform:scale(.5)}}
@keyframes portrait-sheen{0%,24%{opacity:0;transform:translateX(-65%)}30%{opacity:.65}54%{opacity:.65}64%,100%{opacity:0;transform:translateX(65%)}}
@media(max-width:1250px){.paper > .frame-tabs{left:auto}.home-layout{gap:30px;grid-template-columns:minmax(202.5px,29.16%) minmax(0,1fr)}.home-copy .welcome p{margin-left:12px}.home-copy .updates time{width:100px}.home-copy .updates ul{font-size:12px}}
@media(max-width:720px){
  body{background-position:center top}
  .paper{border-width:9px;border-radius:15px;min-height:0}
  .paper:before{inset:6px;border-radius:6px}
  .home-layout{grid-template-columns:1fr;gap:28px;padding:20px 0 24px}
  .home-copy .welcome p{margin:16px 0 0 8px}
  .home-copy .section-title{margin-top:28px}
  .home-copy .updates{padding:10px 0 0}
  .home-copy .updates time{width:90px}
  .home-copy .updates ul{font-size:11px}
  .character-showcase{width:100%;max-width:275.4px;justify-self:center}
}
@media(prefers-reduced-motion:reduce){.portrait-glitter:before{display:none}.portrait-glitter i{animation:none;opacity:.65;transform:scale(.7)}}

/* Sparse falling stars use CSS transforms, with no per-frame JS or mouse tracking. */
.falling-stars{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:4;contain:strict}
.falling-stars > span{position:absolute;top:-24px;left:var(--x);width:var(--s);height:var(--s);filter:drop-shadow(0 0 3px #fff4ef);animation:star-descent var(--t) linear var(--delay) infinite;will-change:transform}
.falling-stars i{display:block;width:100%;height:100%;background:linear-gradient(145deg,#fff,#fff4d5 48%,#f8bddd);clip-path:polygon(50% 0,62% 35%,100% 38%,71% 61%,80% 100%,50% 79%,20% 100%,29% 61%,0 38%,38% 35%);animation:falling-star-twinkle 2.6s ease-in-out var(--delay) infinite}
.falling-stars > span:nth-child(3n) i{animation-duration:1.9s}
.falling-stars > span:nth-child(2n) i{animation-duration:3.2s}
@keyframes star-descent{from{transform:translate3d(0,-20px,0) rotate(-15deg)}to{transform:translate3d(var(--drift),calc(100vh + 55px),0) rotate(155deg)}}
@keyframes falling-star-twinkle{0%,100%{opacity:.2;transform:scale(.65)}45%{opacity:1;transform:scale(1.12)}70%{opacity:.45;transform:scale(.85)}}
@media(max-width:720px){.falling-stars > span:nth-child(n+7){display:none}}
@media(prefers-reduced-motion:reduce){.falling-stars{display:none}}

.pixel-sprites{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.falling-notes{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:4;contain:strict}
.falling-notes > span{position:absolute;top:-40px;left:var(--x);width:var(--s);height:calc(var(--s) * 1.22);animation:note-descent var(--t) linear var(--delay) infinite;will-change:transform}
.falling-notes i{display:block;position:relative;width:100%;height:100%;animation:note-shimmer 3.2s ease-in-out var(--delay) infinite}
.falling-notes svg{display:block;width:100%;height:100%;fill:var(--c);shape-rendering:crispEdges;filter:drop-shadow(1px 1px 0 #fff) drop-shadow(0 0 3px #fff8)}
.falling-notes i:after{content:'';position:absolute;right:-5px;top:0;width:7px;height:7px;background:#fff7dd;clip-path:polygon(50% 0,65% 35%,100% 50%,65% 65%,50% 100%,35% 65%,0 50%,35% 35%)}
@keyframes note-descent{from{transform:translate3d(0,-25px,0) rotate(-14deg)}to{transform:translate3d(var(--drift),calc(100vh + 80px),0) rotate(18deg)}}
@keyframes note-shimmer{0%,100%{opacity:.4}45%{opacity:1}70%{opacity:.65}}
.pixel-hangers{display:flex;justify-content:space-between;align-items:flex-start;max-width:370px;height:180px;margin:30px 0 0 44px;padding:12px 12px 0;pointer-events:none}
.pixel-charm{display:block;position:relative;flex:none;transform-origin:50% 0;will-change:transform}
.pixel-charm img{display:block;image-rendering:pixelated;filter:drop-shadow(2px 3px 0 #d8bedc44)}
.charm-heart{padding-top:28px;animation:heart-sway 5.8s ease-in-out infinite}
.charm-heart:before{content:'';position:absolute;top:0;left:47px;width:2px;height:28px;background:repeating-linear-gradient(#b794b9 0 2px,#fff0 2px 4px)}
.charm-balloons{animation:balloon-bob 4.6s ease-in-out -.9s infinite}
.frame-balloons{--balloon-offset:max(-58px,calc(7px - 4vw));position:absolute;left:var(--balloon-offset);top:105px;width:96px;height:128px;pointer-events:none;z-index:3}
.frame-balloons:after{content:'';position:absolute;left:calc(-8px - var(--balloon-offset));top:121px;width:9px;height:5px;border:1px solid #fff8f5;background:#bb8da9;box-shadow:0 1px 1px #a57eac55}
@keyframes heart-sway{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}
@keyframes balloon-bob{0%,100%{transform:translate3d(0,5px,0) rotate(-3deg)}50%{transform:translate3d(0,-9px,0) rotate(3deg)}}
@media(max-width:1250px){.pixel-hangers{margin-left:12px}}
@media(max-width:720px){.falling-notes > span:nth-child(n+5){display:none}.pixel-hangers{margin:18px auto 0;max-width:240px;height:160px;padding-top:0}.frame-balloons{--balloon-offset:max(-40px,calc(-7px - 4.5vw));top:175px;width:72px;height:96px}.frame-balloons img{width:72px;height:96px}.frame-balloons:after{left:calc(-5px - var(--balloon-offset));top:91px;width:7px;height:4px}}
@media(prefers-reduced-motion:reduce){.falling-notes{display:none}.pixel-charm{animation:none;will-change:auto}}

/* About page: a large translucent portrait behind the introduction. */
#about{position:relative;isolation:isolate;padding:35px 0 24px}
.about-card{display:grid;grid-template-columns:minmax(0,44%) minmax(0,56%);width:min(800px,100%);margin:0 auto;min-height:520px;align-items:stretch}
.about-backdrop{position:relative;pointer-events:none;overflow:hidden;opacity:.3;border-radius:12px 0 0 12px}
.about-backdrop img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center;mix-blend-mode:multiply}
.about-details{position:relative;width:100%;margin:0;padding:28px 25px 24px;border:2px solid #c5a6bd;border-radius:12px;background:linear-gradient(135deg,#fffaf8f5,#faedf5f5);box-shadow:inset 0 0 0 4px #fff8fb,4px 5px 0 #d6bcd12b;font-family:inherit;color:var(--ink)}
.about-details:before{content:'';position:absolute;inset:7px;border:1px dashed #dec4d6;border-radius:6px;pointer-events:none}
#about h3{margin:20px 0 10px}
#about .about-details > h3{font-size:19px;font-weight:700;line-height:1.7;letter-spacing:0}
#about .about-details > h3:first-child{margin-top:0}
.about-contact{width:min(380px,100%);margin:25px auto 22px;padding:19px 22px;border-top:1px solid #dcc3d4;border-bottom:1px solid #dcc3d4;text-align:left;font-size:14px}
.about-contact > div{display:grid;grid-template-columns:100px minmax(0,1fr);gap:10px;align-items:baseline;margin-bottom:14px}
.about-contact > div:last-child{margin-bottom:0}
.about-contact dt{font-weight:600;line-height:1.8;font-size:16px}
.about-contact dd{margin:0;line-height:1.8;overflow-wrap:anywhere}
.contact-placeholder{color:#a68ca0;font-size:12px;letter-spacing:1px}
.tip-card{width:min(380px,100%);margin:0 auto;padding:17px 15px 14px;border:1px solid #d6c5d2;border-radius:12px;background:#fffdfbcc;text-align:left}
#about .tip-card h3{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0;font-size:17px;font-weight:500;line-height:1.6}
.tip-card h3 > span{color:#8f7b8b;font-size:19px;line-height:1}
.tip-card > p{margin:10px 0 12px;font-size:14px;line-height:1.7}
.tip-methods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tip-method{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;min-height:90px;padding:12px 8px;border-radius:8px;background:#f1ecef;color:#725b6f;font-size:14px}
.tip-method img{display:block}
.tip-card > small{display:block;margin-top:12px;text-align:center;color:#927e8e;font-size:12px;line-height:1.5}
@media(max-width:720px){#about{padding-top:28px}.about-card{grid-template-columns:1fr;min-height:0}.about-backdrop{height:280px;border-radius:12px 12px 0 0}.about-backdrop img{object-position:center 30%}.about-details{padding:24px 18px}.about-contact{padding:16px 10px;font-size:13px}.about-contact > div{grid-template-columns:90px minmax(0,1fr)}}
