/* The card album shares the novel's paper, lavender and pixel edges. */
.wallet-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:48px;min-height:42px;padding:6px 8px;border:1px solid #c2b0f640;border-radius:7px;background:#14192de8;color:var(--gold);position:relative;font-size:13px;font-variant-numeric:tabular-nums}
.wallet-btn svg{width:19px;height:19px}.wallet-btn small{display:block;font:8px/1.1 monospace;color:var(--muted);letter-spacing:.08em}.wallet-btn i{width:5px;height:5px;position:absolute;right:4px;top:4px;background:var(--gold);box-shadow:0 0 7px #e9c98a80}.topbar>.row{gap:2px}.home-top>.eyebrow{max-width:190px}.home-top>.row{gap:7px}
.daily-ritual{margin:0 24px 22px;padding:18px;border:1px solid #c2b0f63d;border-radius:8px;background:linear-gradient(135deg,#c2b0f610,#e9c98a06)}
.ritual-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:11px}.ritual-heading .eyebrow{font-size:9px;letter-spacing:.12em}.point-total{font:25px/1 Georgia,serif;color:var(--gold);white-space:nowrap}.point-total small{font:9px sans-serif;margin-left:5px;color:var(--muted)}.ritual-body{display:flex;align-items:center;gap:12px}.daily-ritual h2{font:21px/1.2 Georgia,serif;font-weight:400;margin:0 0 9px}.daily-ritual p{font-size:11px;line-height:1.65;color:var(--muted)}.daily-check{display:flex;align-items:center;justify-content:center;width:29px;height:29px;flex:none;border:1px solid #9dd5bf70;border-radius:50%;color:var(--teal)}.daily-check svg{width:17px;height:17px}.ritual-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #c2b0f61a;margin-top:12px;padding-top:3px}.ritual-footer>span{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:5px}.ritual-footer>span svg{width:14px;height:14px;color:var(--gold)}.ritual-footer .text-btn{font-size:10px;padding:9px 0 4px;min-height:37px;gap:4px}.daily-ritual.compact{margin:22px 0 0;text-align:left}.compact .ritual-heading{margin:0 0 9px}.chapter-finish .daily-ritual p{margin:0}
.album-heading{padding-bottom:21px}.album-totals{display:flex;gap:30px;margin-top:24px}.album-totals>span{font:32px/1 Georgia,serif;color:var(--gold)}.album-totals small{font:11px/1 sans-serif;margin-left:5px;color:var(--muted)}.album-ritual{padding:18px 18px 16px}.streak-label{font:10px monospace;color:var(--gold);white-space:nowrap}.practice-week{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin:18px 0 20px}.practice-day{text-align:center;color:#8187a5}.practice-day>span{display:block;font:10px/1 monospace;margin-bottom:9px}.practice-day i{display:flex;align-items:center;justify-content:center;aspect-ratio:1;border:1px solid #c2b0f62b;border-radius:4px;font:18px/1 monospace;font-style:normal;background:#0c0f1d55}.practice-day svg{width:17px;height:17px}.practice-day.done i{background:#c2b0f61e;border-color:#c2b0f680;color:var(--lav)}.practice-day.today i{box-shadow:0 0 0 2px #111424,0 0 0 3px #e9c98a77}.ritual-footnote{font-size:10px;line-height:1.7;color:var(--muted);margin:13px 0 0}.album-ritual>.pixel-btn{margin-top:15px;padding:11px;min-height:44px;font-size:12px}
.card-pack-panel{display:flex;align-items:center;gap:18px;margin:0 24px 28px;padding:20px 16px;background:#1b2033;border:1px solid #63577b;border-radius:8px;overflow:hidden}.pack-picture{flex:0 0 92px;aspect-ratio:2/3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;border:1px solid #e9c98a77;outline:1px solid #e9c98a24;outline-offset:-6px;background:repeating-linear-gradient(135deg,transparent 0 12px,#c2b0f608 12px 13px),#14192b;box-shadow:4px 4px #0c0f1d;transform:rotate(-5deg);color:var(--gold)}.pack-picture>span{font:27px/1.2 serif;letter-spacing:.12em}.pack-picture>svg{width:25px;height:25px;color:var(--lav)}.pack-picture small{font:6px monospace;letter-spacing:.06em}.pack-copy{flex:1;min-width:0}.pack-copy .eyebrow{font-size:8px;letter-spacing:.1em}.pack-copy h2{font:23px/1.15 Georgia,serif;font-weight:400;margin:7px 0 10px}.pack-copy p{font-size:10px;line-height:1.7;color:var(--muted)}.pack-copy .pixel-btn{padding:11px 7px;min-height:43px;font-size:11px;margin-top:13px;gap:6px}.pack-copy .pixel-btn svg{width:16px;height:16px}.pack-copy>small{display:block;font-size:9px;color:var(--muted);line-height:1.5;margin-top:9px}
.collection-top{margin:0 24px 15px;display:flex;align-items:center;justify-content:space-between;gap:10px}.collection-top>h2{font:22px Georgia,serif;font-weight:400}.collection-top>h2 span{font:10px monospace;color:var(--muted);margin-left:5px}.collection-top .filters{margin:0;padding:0;gap:5px}.collection-top .chip{font-size:10px;padding:6px 10px;min-height:34px}
.trading-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px;padding:0 24px 24px}.trading-slot{padding:0;text-align:left;min-width:0}.trading-slot:disabled{opacity:1;cursor:default}.trading-preview{position:relative;aspect-ratio:2/3;border:1px solid #827598;background:#161a2b;border-radius:5px;overflow:hidden;box-shadow:3px 4px #05081180}.owned .trading-preview{outline:1px solid #e9c98a50;outline-offset:-5px}.trading-preview>img{height:100%;width:100%;object-fit:cover;image-rendering:pixelated}.trading-preview:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#080b1ab0,transparent 40%)}.trading-slot.detour.owned .trading-preview{border-color:var(--gold)}.card-corner{position:absolute;top:9px;left:9px;font:7px monospace;letter-spacing:.08em;background:#111424c9;color:var(--cream);padding:5px 6px;border:1px solid #e9c98a60}.preview-word{position:absolute;bottom:13px;right:13px;z-index:1;color:var(--cream);font:31px/1 serif;text-shadow:0 2px 4px #000}.card-back{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:17px;position:relative;color:#9486af;background:repeating-linear-gradient(45deg,transparent 0 13px,#c2b0f608 13px 14px),#161b2c;outline:1px solid #c2b0f62e;outline-offset:-8px}.card-back>span{font:38px/1.13 serif;text-align:center;letter-spacing:.14em;padding-left:.14em;border:1px solid #c2b0f638;padding:12px 8px 10px 14px}.card-back svg{width:17px;height:17px;opacity:.5}.card-back small{font:6px/1 monospace;letter-spacing:.12em;text-transform:uppercase}.slot-caption{padding:11px 2px 0}.slot-caption .tiny{font-size:7px;letter-spacing:.08em;color:var(--gold)}.sealed .slot-caption .tiny{color:#7e809d}.slot-caption h3{font:15px/1.25 Georgia,serif;font-weight:400;margin-top:5px}.sealed h3{color:#9c9bb4}.album-notes{margin:0 24px 30px;padding-top:17px;border-top:1px solid var(--line)}.album-notes p{font-size:10px;line-height:1.75;color:var(--muted);margin-bottom:10px}.album-empty{margin:10px 24px 30px;color:var(--muted);font:14px/1.5 Georgia,serif}
.card-reveal-footer{text-align:center;padding:14px 0 8px}.card-earned{font:10px/1.6 monospace!important;color:var(--teal)!important}.card-reveal-footer .pixel-btn{margin-top:8px}.card-reveal.fresh{animation:card-arrive .45s ease-out both}@keyframes card-arrive{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@media(max-width:370px){.daily-ritual,.card-pack-panel{margin-left:17px;margin-right:17px}.trading-grid{padding-left:17px;padding-right:17px}.pack-picture{flex-basis:75px}.card-pack-panel{gap:15px;padding:16px 12px}.home-top>.eyebrow{max-width:125px;font-size:8px}.topbar .brand{font-size:20px;gap:6px}.topbar .brand small{font-size:8px}.practice-week{gap:5px}.ritual-footer .text-btn{font-size:9px}}
@media(prefers-reduced-motion:reduce){.card-reveal.fresh{animation:none}}
.reduced-motion .card-reveal.fresh{animation:none}

/* A real two-sided card: the entire surface is a keyboard and touch button.
   Orthographic rotation keeps every frame inside the card box, including on iOS. */
.card-flip-stage{width:min(100%,max(180px,calc(56.6667dvh - 153px)));margin:0 auto}
.card-turner{display:block;width:100%;aspect-ratio:2/3;padding:0;background:transparent;border:0;text-align:left;border-radius:8px}
.card-turner-inner{display:block;position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.2,.7,.2,1)}
.card-turner.is-flipped .card-turner-inner{transform:rotateY(180deg)}
.card-face{display:flex;position:absolute;inset:0;flex-direction:column;overflow:hidden;border:1px solid #a08abd;border-radius:8px;box-shadow:0 10px 28px #05081166;background:#1b2033;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:1px solid #c2b0f640;outline-offset:-6px}
.special .card-face{border-color:var(--gold)}
.card-front>img{display:block;width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
.card-front-caption{position:absolute;inset:auto 0 0;padding:48px 17px 20px;background:linear-gradient(transparent,#111424eb 45%,#111424);color:var(--cream)}
.card-front-caption>.eyebrow{display:block;font-size:8px;margin-bottom:7px}
.card-front-title{display:block;font:26px/1.12 Georgia,serif;font-weight:400}
.card-reverse{transform:rotateY(180deg);align-items:center;justify-content:center;text-align:center;padding:17px 20px;background:repeating-linear-gradient(135deg,transparent 0 15px,#c2b0f606 15px 16px),radial-gradient(ellipse at 50% 30%,#302a46,#171d2e 80%)}
.reverse-topline{display:flex;flex-direction:column;gap:5px;margin:0 0 auto;font:7px/1.5 monospace;letter-spacing:.12em;color:var(--gold)}
.reverse-topline>span{color:var(--muted);font-size:6px}
.reverse-seal{font:27px/1 serif;letter-spacing:.14em;padding-left:.14em;color:var(--gold);margin:13px 0}
.reverse-title{font:23px/1.15 Georgia,serif;color:var(--cream);margin:0 0 13px}
.reverse-vocab{display:flex;flex-direction:column;align-items:center;gap:5px;border-top:1px solid #c2b0f640;border-bottom:1px solid #c2b0f640;padding:12px 13px;min-width:75%;color:var(--lav)}
.reverse-vocab>span:first-child{font:37px/1.2 serif;letter-spacing:.04em}
.reverse-vocab>span:nth-child(2){font:11px/1.4 sans-serif;color:var(--muted)}
.reverse-vocab>span:last-child{font:16px/1.4 Georgia,serif;color:var(--gold)}
.reverse-note{font:italic 13px/1.65 Georgia,serif;color:var(--muted);margin:16px 0}
.reverse-date{margin-top:auto;font:7px/1.8 monospace;color:var(--muted);letter-spacing:.04em}
.card-flip-hint{font:10px/1.5 monospace!important;text-align:center;margin:13px 0 0!important;color:var(--gold)!important}
.card-reveal-footer{padding:7px 0 0}.card-learning-tools{display:flex;align-items:center;justify-content:center;gap:12px;min-height:43px}
.card-learning-tools .chinese{font-size:20px;line-height:1.5}.card-learning-tools rt{font-size:8px}
.card-learning-tools .text-btn{font-size:10px}.card-reveal-footer .pixel-btn{min-height:45px;padding:11px 15px}
@media(max-height:720px){.card-front-title{font-size:21px}.card-reverse{padding:13px 17px}.reverse-seal{font-size:21px;margin:8px 0}.reverse-title{font-size:19px;margin-bottom:9px}.reverse-vocab{padding:8px}.reverse-vocab>span:first-child{font-size:30px}.reverse-note{font-size:11px;line-height:1.5;margin:11px 0}}
@media(prefers-reduced-motion:reduce){.card-turner-inner{transition:none}}
.reduced-motion .card-turner-inner{transition:none}
.card-face-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.album-set-filters{display:flex;flex-wrap:wrap;gap:7px;margin:0 24px 18px}.album-set-filters .chip{font-size:9px;min-height:36px;padding:7px 10px}.slot-caption .tiny{display:block;line-height:1.6}
