/* Original romantic-night theme. No third-party artwork or fonts. */
:root{--bg:#1b1019;--panel:#2b1a28;--line:#5a3549;--muted:#bda5b1;--text:#fff3ed;--aqua:#ff9aab;--purple:#e8c697;--danger:#ffc0c7;--rose:#ff738f;--gold:#edcba0;--ink:#26131f}
body{background:radial-gradient(ellipse at 16% 30%,#54233744,transparent 47%),radial-gradient(ellipse at 95% 5%,#64334c28,transparent 43%),#1b1019;color:var(--text)}
body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(circle at 18% 21%,#e7bc8b88 0 1px,transparent 1.8px),radial-gradient(circle at 81% 35%,#ffc1c466 0 1px,transparent 1.8px),radial-gradient(circle at 60% 79%,#e7bc8b55 0 1px,transparent 1.8px);background-size:520px 530px,740px 690px,650px 730px}
.ambient-one{background:#a6405f22;width:700px;height:700px;filter:blur(110px)}
.ambient-two{background:#975c4d16;filter:blur(110px)}
.site-header{border-color:#d4a8b51a}.brand{color:#fff0e8}.brand svg{stroke:#edcba0}.brand small{color:#bda5b1}
.header-right .text-button{color:#cbb0bb}.local-badge{color:#e3c9b4;border-color:#715341;background:#34241e55}.local-badge i{background:#e9c599;box-shadow:0 0 9px #e9c59933}
.hero .eyebrow{color:#e9c599;font-size:10px;letter-spacing:2.8px}.eyebrow:before{background:#e9c599}.hero h1{font-weight:450;letter-spacing:1px;color:#fff3ed}
h1 .gradient-text{background-image:linear-gradient(100deg,#ffb2bd,#f3d1b0);color:transparent}.hero-description{color:#c9adb9;line-height:2.05}
.hero-art{margin-top:28px}.art-glow{background:radial-gradient(ellipse,#a94b623d,transparent 70%)}
.orbit{border-color:#dcae8429}.orbit:after{border-color:#f2b2ca19}.art-spark{color:#efc49ba6}
.sample-card{border-color:#b4818988;box-shadow:0 24px 50px #0d050958}
.front-card{background:radial-gradient(ellipse at 0% 0%,#a95b7044,transparent 62%),linear-gradient(150deg,#693b4e,#392332 70%);border-color:#dcaf9a99}
.front-card:after{border-color:#efc7a82b}.sample-meta{color:#f1d0c1}.card-symbol{stroke:#edcba0;opacity:.6}.sample-title{color:#fff0e8}.sample-bottom{color:#d1abb6}
.back-card{background:linear-gradient(150deg,#5d394d,#302333);color:#e4bfae}.mini-waves{stroke:#e2b8a3}
.hero-note{border-color:#a36e802e;color:#bda4b1}.hero-note strong{color:#ead2d5}.note-icon{border-color:#947060;color:#e9c59e;background:#51332e33}
.setup-panel{background:radial-gradient(ellipse at 100% 0%,#69364a24,transparent 62%),linear-gradient(145deg,#31202eec,#241824f5);border-color:#8b5b704f;box-shadow:0 24px 75px #0b050a33,inset 0 1px #ffd9cb0d}
.panel-heading{margin-bottom:23px}.panel-heading h2{color:#fff0e9}.panel-heading p{color:#bfa4b1}.step-number{color:#9d7486;font-size:29px}
.field-title{color:#ecd4dd;font-size:12px}.section-index{color:#cc9aaa}.optional-label{color:#b39aa8}.field label{color:#cbb1be;font-size:12px}
.field input,.field select,.field textarea,.unlock-panel input[type=text]{background:#201520;border-color:#70506477;color:#fff3ed;min-height:45px;box-shadow:inset 0 2px 5px #0c050a12}
.field input::placeholder{color:#9c8091}.field input:focus,.field textarea:focus{border-color:#e5a0ae}
.mode-option{background:#2a1c2a;border-color:#73506566;border-radius:12px;min-height:98px;padding-top:15px}
.mode-option .mode-icon{color:#f7afbd;font-size:22px}.mode-option:nth-child(2) .mode-icon{color:#e9c599}.mode-option:nth-child(3) .mode-icon{color:#d3b4df}
.mode-option strong{color:#f1dce4;font-size:13px}.mode-option small{font-size:10px;color:#b99bad;letter-spacing:0}
.mode-option[aria-pressed=true]{background:linear-gradient(145deg,#6d3b4c88,#472a3e99);border-color:#efb0ba;box-shadow:inset 0 1px #ffd9d01c,0 5px 16px #0d050a22}
.mode-option[aria-pressed=true]:after{color:#ffb8c3}.mode-option.is-locked{background:linear-gradient(145deg,#3b2932,#2a1c29);border-color:#b08a6255}.mode-option.is-locked small{color:#dec09c}.mode-lock{color:#edcba0}
.scene-option{background:#281b29;color:#c9afbd;border-color:#73506566;min-height:42px}.scene-option[aria-pressed=true]{background:#553244;border-color:#c68a9c;color:#ffe4e9}.scene-option span{color:#ecc6ab}.scene-hint{color:#bda4b2;font-size:11px}
.primary{background:linear-gradient(110deg,#ff91a6,#f47794);color:#351722;box-shadow:0 6px 22px #e8638430,inset 0 1px #ffe5de66;font-size:14px;min-height:48px;border:1px solid #ffb4c144}
.primary:hover:not(:disabled){background:linear-gradient(110deg,#ffa6b7,#ff8eaa);box-shadow:0 8px 26px #e8638444;filter:none}
.primary:disabled{box-shadow:none}.under-button{color:#b69aa9;font-size:10px}.setup-start{margin-top:20px}.setup-bottom{border-color:#8b5b703f}.setup-bottom .text-button{color:#c7a8b8;font-size:11px}.invite-label{color:#b098aa}.soon{border-color:#8a687955;color:#bda6b5}
.site-footer{color:#b497a7;font-size:11px}.secondary{background:#432b3e;border-color:#89607977;color:#f0d8e2}.text-button{color:#c6a8b8}.link-button{color:#ffb4c3}.privacy{color:#b59baa}
.soft-badge{border-color:#b2899666;color:#e1c1ce;background:#6a3a4922}.success-text{color:#ffd3ba!important}.error-text,.form-error,.field-error{color:#ffc0c7}.unlock-panel,.custom-panel{background:#291c2b;border-color:#82607966}.unlock-panel p,.custom-panel p{color:#c3a9b9}.custom-count{color:#e1c6d3;border-color:#81536866}.deck-choice-list label{border-color:#82607955;background:#36233455}
input[type=checkbox],input[type=radio]{accent-color:#f59ab0}.toast{background:#4d2d3f;border-color:#bb889a;color:#fff1e9;box-shadow:0 12px 40px #0e050955}
.agreement-panel{background:linear-gradient(145deg,#342031e6,#261927);border-color:#91677b77}.agreement-panel .eyebrow{color:#edcba0}.agreement-intro,.promise-item p{color:#c4aabb}.promise-item strong{color:#f7e3e6}.promise-number{background:#563040;border-color:#996577;color:#ffc6c9}.stop-word{background:#241824;border-color:#98687977}.stop-word strong{color:#edcba0}.stop-word p{color:#c3a3b7}
.confirm-button{background:#42293b;border-color:#90647a;color:#efdae3}.confirm-button[aria-pressed=true]{background:#654050;border-color:#e4ad9c;color:#ffe6d2}.status-line,.back-link{color:#d3b5c5}
.game-hud{background:#1c111bf2}.game-top h1{color:#fff0eb}.game-meta{color:#c5a9ba}.pause-button{background:#422839;border-color:#ac7d9299;color:#f4d4df}
.player-box{background:#2d1c2c;border-color:#80506a66}.player-box.active{background:linear-gradient(115deg,#69344666,#43263788);border-color:#df96a6}.avatar{background:#56364d;color:#f2d8e4}.player-box.active .avatar{background:#a96779;color:#fff1e7}.player-role{color:#c5a4b9}.shields{color:#ebc7a2}.shields small{color:#bb9cae}.game-progress{color:#c6a7b9}.progress-track{background:#553448}.progress-fill{background:linear-gradient(90deg,#f797ad,#edcba0)}
.turn-announcement{color:#ead2dc}.turn-dot{background:#f0b3b5;box-shadow:0 0 10px #f0b3b533}
.card-stage{--tilt-x:3deg;--tilt-y:-3deg}.card-stage-glow{background:radial-gradient(ellipse,#b9517230,transparent 67%)}
.card-underlay{border-color:#a67d83;background:linear-gradient(135deg,#6c3f50,#342032 70%)}.card-underlay-back{background:#332032;border-color:#6a475e;box-shadow:12px 24px 38px #0b03085c}.card-underlay-front{border-color:#d6b294}
.card-stage .game-card{color:#fff0e7;border-color:#d4ac99;background:radial-gradient(ellipse at 5% 0%,#b6687b44,transparent 62%),linear-gradient(140deg,#633b4c,#40293c 65%,#3d2b40);box-shadow:inset 1px 1px #ffe8cb4a,inset -1px -1px #b58d9a66,0 0 35px #e49d880c}
.card-stage .game-card:before{border-color:#f5d2b82e}.card-stage .game-card:after{background:radial-gradient(ellipse at var(--shine-x) var(--shine-y),#ffe8d90d,transparent 62%),linear-gradient(125deg,#fff0cc0a,transparent 40%,#ffbdd309)}
.card-stage.is-interacting .game-card{box-shadow:inset 1px 1px #ffe8cb55,inset -1px -1px #b58d9a77,0 0 42px #da849111}
.card-category{color:#f4cebe}.card-category .soft-badge{color:#edcfce;border-color:#d1a29066;background:#d8b69b0a}.card-stage .task-title{transform:translateZ(15px);color:#fff4e8;text-shadow:0 3px 12px #250c1b44;font-weight:500}.card-stage .task-content{transform:translateZ(12px);color:#f5dfe3;font-weight:400;line-height:1.95}.task-assignee{color:#d9b6c7}.task-assignee strong{color:#ffe4ce}.card-footer{color:#c2a0b4}.game-card.card-back .water-glyph{stroke:#e9c3a1}.game-card.card-back p{color:#d3acbf}
.response-secondary button{background:#342237;border-color:#93677e77;color:#ead4e0;min-height:44px}.response-secondary .refuse{color:#ffd0d4}.feedback-rules{color:#c0a0b3;font-size:10px}.last-feedback{color:#f6c3b9}.exhausted{background:#312033;border-color:#b18a9d}.exhausted p{color:#c7a8bc}
dialog.app-dialog{background:radial-gradient(ellipse at 50% 0%,#7f425c33,transparent 62%),linear-gradient(150deg,#3c283c,#271a2c);border-color:#a17a8e;box-shadow:0 30px 100px #0a030955;color:#fff0e9}
dialog::backdrop{background:#130812bd;backdrop-filter:blur(9px)}.app-dialog p{color:#cbb0c1}.dialog-kicker{color:#e9c599}.pause-symbol{background:#644052;color:#f1ccb7}.danger-button{background:#502d3c;border-color:#aa6f80;color:#ffd0d6}.stat{background:#281b2c;border-color:#895f7866}.stat strong{color:#f4d2bc}.stat span{color:#c4a6b8}
.payment-dialog{padding:30px!important}.payment-emblem{background:linear-gradient(135deg,#80514d,#5e344d);border-color:#d1a885;color:#f3d2a7;box-shadow:0 9px 26px #bb76521a}.payment-heading h2{color:#fff1df;font-size:25px}.payment-heading p{font-size:12px}
.payment-benefits{border-color:#b0876760;background:#53383b33;padding:3px 17px}.payment-benefits>div{padding:14px 0}.payment-benefits>div+div{border-color:#b0876733}.payment-benefits strong{font-size:13px;color:#f5dfcd}.payment-benefits span{color:#cbb0bf;font-size:11px}
.payment-checkout{background:linear-gradient(135deg,#67454355,#4c2b4055);border-color:#c799756e;padding:19px}.payment-price{align-items:center;color:#eed0bd;font-size:13px}.payment-price span{font-size:38px;line-height:1.2;font-weight:550;letter-spacing:-1.4px;color:#f2cda0;font-variant-numeric:tabular-nums}.payment-checkout p{color:#d1b3c1;font-size:11px;line-height:1.8}.payment-checkout .primary:disabled{background:#bb7c8d;color:#291724;opacity:.72}.payment-activation summary{color:#ecc9a6}.payment-close{color:#c7a7b9}
.deck-manager{background:linear-gradient(145deg,#302032,#221626);border-color:#956b84;color:#ffefe9}.deck-manager::backdrop{background:#130812cc}.mgr-eyebrow{color:#edcba0}.mgr-intro,.mgr-safety{color:#c6aaba}.mgr-safety{border-color:#815a7366;background:#39263733}.mgr-safety summary{color:#edd0dc}.manager-status{color:#f1c6ad}.manager-status.mgr-error,.mgr-field-error{color:#ffc0c7}
.mgr-btn,.mgr-file-label{background:#432a3f;border-color:#8c637b77;color:#f1dae5}.mgr-btn:hover,.mgr-file-label:hover{background:#624057}.mgr-primary{background:#f59aaf;border-color:#f59aaf;color:#321522}.mgr-primary:hover{background:#ffb3c2}.mgr-danger{background:#542a3c;color:#ffd0d6;border-color:#ad6f8077}.mgr-quiet{background:transparent;border-color:transparent;color:#c7a8ba}.manager-toolbar,.manager-sidebar{border-color:#815a7366}
.mgr-deck-row.is-selected{background:#623d5188;border-color:#bb859c}.mgr-deck-select{color:#f2dce5}.mgr-deck-select span{color:#cca7ba}.mgr-card-item{background:#352236;border-color:#82566d77}.mgr-card-meta{color:#e4bd9f}.mgr-card-text{color:#ebd0dc}.mgr-card-scene,.mgr-hint{color:#c7a5ba}.mgr-lock-note{background:#ba7d8f0d;border-color:#d4a085;color:#deb8c3}.mgr-empty{color:#c1a2b7}.mgr-empty h3{color:#f5dee7}.mgr-empty-icon{color:#edcba0}
.mgr-field>label,.mgr-multiselect legend{color:#edd1df}.mgr-field input,.mgr-field textarea,.mgr-field select{background:#211624;border-color:#8b607a88;color:#fff0ed}.mgr-multiselect{border-color:#825a7488}.mgr-table th,.mgr-table td{border-color:#815a7366}.mgr-table th{color:#d5b4c5}.mgr-table caption{color:#edcba0}.mgr-confirm p,.mgr-import-preview>p{color:#cdb0c2}
.mgr-btn:focus-visible,.deck-manager input:focus-visible,.deck-manager select:focus-visible,.deck-manager textarea:focus-visible,.mgr-deck-select:focus-visible,.mgr-safety summary:focus-visible,.mgr-file-label:focus-within{outline-color:#ffc0c7}
@media(max-width:680px){main{padding-top:22px}.hero h1{font-size:34px;line-height:1.45;margin-top:14px}.hero-description{font-size:12px;line-height:1.9}.setup-layout{gap:23px}.setup-panel{padding:23px 20px}.form-section+.form-section{margin-top:17px}.mode-option{min-height:94px}.mode-option small{font-size:9px}.field .field-error{min-height:13px}.payment-dialog{padding:25px 21px!important}.payment-price span{font-size:36px}.site-footer{font-size:10px}.hero .eyebrow{font-size:8px;letter-spacing:2px}}
@media(max-width:355px){.setup-panel{padding:21px 15px}.mode-option small{font-size:8px}.mode-option strong{font-size:12px}.payment-benefits{padding:3px 12px}.payment-benefits span{font-size:10px}.payment-price span{font-size:32px}.payment-checkout{padding:14px}.hero h1{font-size:30px}.header-right{gap:9px}.game-meta{color:#c5a9ba}}

/* Short, purely decorative beats; no biometric readings or sound. */
.heart-mark{width:23px;height:23px;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;transform-origin:50% 55%}
.heartbeat-moment{display:flex;align-items:center;gap:10px;margin:19px 0 0;max-width:340px;color:#eeb2bf;min-height:39px}
.heartbeat-moment>span{font-size:11px;letter-spacing:1.4px;white-space:nowrap}.hero-heart{width:28px;height:28px;fill:#f494ab13;animation:gentle-heartbeat 1.55s ease-in-out 3}
.heartbeat-trace{width:112px;height:30px;min-width:38px;margin-left:4px;flex:1;overflow:visible}.heartbeat-track{stroke:#ad697e55;stroke-width:1.1}.heartbeat-light{stroke:#f4b9ad;stroke-width:1.35;stroke-linecap:round;stroke-dasharray:190;stroke-dashoffset:190;animation:heart-trace 1.9s ease-out 2;animation-fill-mode:forwards}
.setup-start .button-heart{width:20px;height:20px;stroke-width:1.8}.setup-start:hover .button-heart,.setup-start:focus-visible .button-heart{animation:gentle-heartbeat 1.3s ease-in-out 2}
.turn-heart{width:19px;height:19px;color:#f3a6b9;fill:#f494ab1a;animation:gentle-heartbeat 1.5s ease-in-out 2}.turn-announcement{gap:9px}
.card-heart-detail{display:flex;align-items:center;gap:7px;color:#d8b7b2}.card-heart{width:20px;height:20px;stroke:#e9c3a5;stroke-width:1.2}.is-revealing .card-heart{animation:gentle-heartbeat 1.3s ease-in-out 2}
@keyframes gentle-heartbeat{0%,38%,100%{transform:scale(1)}12%{transform:scale(1.12)}24%{transform:scale(1)}32%{transform:scale(1.07)}}
@keyframes heart-trace{0%{stroke-dashoffset:190;opacity:.4}75%,100%{stroke-dashoffset:0;opacity:.9}}
@media(max-width:680px){.heartbeat-moment{margin-top:13px;min-height:31px;max-width:305px;gap:8px}.heartbeat-moment>span{font-size:10px;letter-spacing:1px}.hero-heart{width:24px;height:24px}.heartbeat-trace{height:25px;width:100px}}
@media(prefers-reduced-motion:reduce){.hero-heart,.turn-heart,.card-heart,.button-heart,.heartbeat-light{animation:none!important;transform:none!important}.heartbeat-light{stroke-dashoffset:0;opacity:.8}}

/* Phone-first spacing and scroll-triggered decorative heart meteors. */
.heart-meteors{position:fixed;inset:0;z-index:18;pointer-events:none!important;overflow:hidden;contain:strict}
.heart-meteor{position:absolute;display:block;width:var(--meteor-size);height:var(--meteor-size);opacity:0;color:#ffabc0;pointer-events:none;animation:heart-meteor-fly var(--meteor-time) ease-out var(--meteor-delay) both;will-change:transform,opacity}
.heart-meteor svg{width:100%;height:100%;fill:#ffd0d833;stroke:currentColor;stroke-width:1.4;filter:drop-shadow(0 0 3px #f5a4bd44)}
.heart-meteor:after{content:"";position:absolute;left:75%;top:25%;width:45px;height:1px;background:linear-gradient(90deg,#ffbad055,transparent);transform:rotate(-48deg);transform-origin:left center}
@keyframes heart-meteor-fly{0%{opacity:0;transform:translate3d(0,0,0) scale(.6)}18%{opacity:.55}55%{opacity:.4}100%{opacity:0;transform:translate3d(var(--meteor-x),var(--meteor-y),0) scale(.85)}}
@media(max-width:1099px){
  .setup-layout{display:flex;flex-direction:column;max-width:460px;gap:17px;margin:0 auto}.hero{width:100%;padding:0}.hero-art,.hero-note{display:none}.hero h1{font-size:29px;line-height:1.4;margin:10px 0 9px}.hero-description{font-size:11px;line-height:1.7}.hero .eyebrow{font-size:8px;letter-spacing:2px}.heartbeat-moment{margin-top:9px;min-height:27px;max-width:285px}.hero-heart{width:22px;height:22px}.heartbeat-moment>span{font-size:10px}.heartbeat-trace{height:25px}.setup-panel{width:100%;padding:21px 20px}.panel-heading{margin-bottom:18px}.panel-heading h2{font-size:19px}.panel-heading p{font-size:11px}.step-number{font-size:26px}.form-section+.form-section{margin-top:15px}.field .field-error:empty{min-height:0;margin:0}.field .field-error:not(:empty){min-height:17px}.field-title{margin-bottom:8px}.field label{margin-bottom:5px}.field input{min-height:44px;padding:10px 12px}.mode-option{min-height:85px;padding:11px 5px 9px}.mode-option .mode-icon{height:25px;font-size:20px}.mode-option small{font-size:9px;margin-top:3px}.scene-option{min-height:42px}.scene-hint{margin-top:7px}.setup-start{margin-top:16px}.setup-bottom{margin-top:14px;padding-top:10px}.under-button{margin-top:8px}.site-footer{font-size:10px}
}
@media(max-width:680px){.site-header{padding:15px 18px}main{padding:16px 16px 14px}.brand{font-size:19px}.brand svg{width:29px}.header-right{gap:12px}.hero h1{font-size:28px}.setup-panel{border-radius:18px}.setup-layout{gap:16px}.site-footer{margin-top:7px;padding-top:8px}}
@media(max-width:355px){main{padding-left:12px;padding-right:12px}.site-header{padding-left:13px;padding-right:13px}.header-right{gap:8px}.hero h1{font-size:26px}.setup-panel{padding:19px 14px}.mode-option strong{font-size:12px}.mode-option small{font-size:8px}.scene-option{font-size:9px}.names-row{gap:10px}.heartbeat-moment{gap:7px}}
@media(prefers-reduced-motion:reduce){.heart-meteors{display:none}.heart-meteor{animation:none!important}}
.heartbeat-moment{max-width:370px;gap:8px}.heartbeat-trace{min-width:27px;margin-left:0}.hero-heart{animation-iteration-count:infinite}.heartbeat-light{stroke-dasharray:30 200;stroke-dashoffset:230;animation:heartbeat-stream 2.6s linear infinite;opacity:.85}
.motion-toggle{background:transparent;color:#cba4b8;border:1px solid #88607866;border-radius:7px;font-size:9px;white-space:nowrap;padding:6px;min-height:32px;flex-shrink:0}.motion-toggle:hover{background:#66415644}.motion-toggle[aria-pressed=true]{color:#f0cfb0;border-color:#b18b6b88}
@keyframes heartbeat-stream{from{stroke-dashoffset:230}to{stroke-dashoffset:0}}
.ambient-motion-stopped .hero-heart,.ambient-motion-stopped .heartbeat-light,.ambient-motion-stopped .turn-heart,.ambient-motion-stopped .card-heart,.ambient-motion-stopped .button-heart{animation:none!important;transform:none!important}.ambient-motion-stopped .heartbeat-light{stroke-dasharray:none;stroke-dashoffset:0;opacity:.7}
@media(max-width:1099px){.heartbeat-moment{max-width:340px}.heartbeat-moment>span{letter-spacing:.5px}.motion-toggle{font-size:9px}}
@media(max-width:355px){.heartbeat-moment{gap:5px}.heartbeat-moment>span{font-size:9px}.motion-toggle{padding:5px;font-size:8px}.heartbeat-trace{min-width:24px}}
@media(prefers-reduced-motion:reduce){.heartbeat-light{animation:none!important;stroke-dasharray:none;stroke-dashoffset:0}.hero-heart{animation:none!important}}

/* Parallel card planes prevent faces from intersecting while the phone tilts. */
.game-hud{background:transparent;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:none;box-shadow:none;border-radius:16px}
.card-stage{--tilt-x:2deg;--tilt-y:-2deg;margin-left:17px;margin-right:17px;overflow:visible}
.card-object{position:relative;transform-style:preserve-3d;transform:translate3d(var(--shift-x,0px),var(--shift-y,0px),0) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));transition:transform .18s ease-out}
.card-stage.is-interacting .card-object{transition:none}
.card-stage .card-underlay-back{transform:translate3d(0,7px,-12px)}.card-stage .card-underlay-front{transform:translate3d(0,3px,-5px)}
.card-stage .game-card,.card-stage button.game-card:active{transform:translateZ(7px);animation:none!important;z-index:1;backface-visibility:visible;-webkit-backface-visibility:visible;transition:box-shadow .25s}
.card-stage .game-card:before,.card-stage .game-card:after{transform:none;z-index:0}.card-stage .game-card>div,.card-stage .game-card>h2,.card-stage .game-card>p,.card-stage .game-card>svg{transform:none;position:relative;z-index:1}
.card-stage.is-revealing .card-object{animation:parallel-card-reveal .42s ease-out both}
@keyframes parallel-card-reveal{0%{opacity:.2;transform:rotateX(4deg) rotateY(-55deg)}100%{opacity:1;transform:translate3d(var(--shift-x,0px),var(--shift-y,0px),0) rotateX(var(--tilt-x)) rotateY(var(--tilt-y))}}
.card-motion-controls{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap;margin:10px 0 5px}.tilt-toggle{background:#422a3b;border:1px solid #a77c9088;border-radius:8px;padding:8px 12px;min-height:40px;color:#f4d5e0;font-size:11px}.card-motion-controls>span{color:#bca0b0;font-size:10px}
@media(max-width:355px){.card-stage{margin-left:15px;margin-right:15px}.card-motion-controls{gap:6px}.card-motion-controls>span{font-size:9px}}
@media(prefers-reduced-motion:reduce){.card-stage .card-object{animation:none!important;transition:none!important}}
.brand .brand-heart-logo{width:36px;height:36px;flex-shrink:0;object-fit:contain;filter:drop-shadow(0 3px 5px #10050b44)}
@media(max-width:680px){.brand .brand-heart-logo{width:32px;height:32px}.brand{gap:8px}.scene-option{padding-left:5px;padding-right:5px}}

/* Ruby-glass logo: allow the bevel and edge light to remain legible on phones. */
.brand .brand-heart-logo{width:42px;height:42px;filter:drop-shadow(1px 4px 4px #0b02094d)}
@media(max-width:680px){.brand .brand-heart-logo{width:37px;height:37px}}

/* A single, phone-sized reading column and a consistent spacing rhythm. */
.setup-layout{display:flex;flex-direction:column;width:100%;max-width:470px;margin:0 auto;gap:21px}
.hero{width:100%;padding:0 3px}.hero-art,.hero-note{display:none}
.hero h1{font-size:31px;line-height:1.4;margin:4px 0 12px;letter-spacing:.5px}.hero-description{font-size:12px;line-height:1.9;margin:0}
.heartbeat-moment{width:100%;max-width:none;margin-top:13px;gap:10px}.heartbeat-moment>span{font-size:11px}.heartbeat-trace{max-width:135px;margin-left:auto}.motion-toggle{padding:6px 8px;min-height:34px;font-size:10px}
.setup-panel{width:100%;padding:25px 24px 19px;border-radius:22px}.setup-panel .panel-heading{margin-bottom:19px;padding-bottom:16px;border-bottom:1px solid #a7798b26}.panel-heading h2{font-size:21px;letter-spacing:.4px}.panel-heading p{font-size:12px;margin-top:6px}
.field-title{font-size:13px;line-height:1.5;margin-bottom:10px}.section-index{font-size:10px;margin-right:8px}.optional-label{font-size:10px}.names-row{gap:12px}.field label{font-size:12px;margin-bottom:6px}.field input{min-height:46px;padding:11px 12px;font-size:14px;border-radius:10px}
.form-section+.form-section{margin-top:20px}.mode-grid{gap:9px}.mode-option{min-height:97px;padding:13px 5px 11px}.mode-option .mode-icon{height:28px;font-size:21px}.mode-option strong{font-size:14px;line-height:1.6}.mode-option small{font-size:10px;line-height:1.5;margin-top:3px;letter-spacing:-.2px}.mode-lock{top:8px;right:8px}
.scene-grid{gap:8px}.scene-option{min-height:44px;padding:10px 5px;font-size:12px}.scene-hint{font-size:11px;line-height:1.7;margin-top:8px}.setup-start{min-height:52px;margin-top:20px;font-size:14px;border-radius:12px}.under-button{font-size:10px;margin-top:9px;line-height:1.7}.setup-bottom{margin-top:17px;padding-top:12px;gap:8px;align-items:center}.setup-bottom .text-button{padding:5px 0;font-size:11px}.invite-label{font-size:10px}
.site-footer{max-width:560px;margin-top:9px;padding:15px 20px 22px;display:block;text-align:center;font-size:10px;line-height:1.9}.site-footer>span{display:block}
.game-top{align-items:center}.player-bar{gap:12px}.player-box{padding:13px 14px}.player-name{font-size:13px;line-height:1.5}.player-role{font-size:10px;margin-top:2px}.game-progress{gap:10px;font-size:11px}.turn-announcement{margin-top:3px;margin-bottom:17px;font-size:13px}.response-secondary button{min-height:45px;font-size:12px}.feedback-rules{max-width:440px;margin:11px auto 0;line-height:1.8}.last-feedback{font-size:11px;line-height:1.8;margin-top:10px}
.payment-dialog .payment-benefits{margin:22px 0 18px}.payment-dialog .payment-benefits>div{padding:13px 0}.payment-checkout{padding:18px}.payment-price{margin-bottom:16px}.payment-activation{margin-top:17px}.summary-stats{gap:11px}.stat{padding:15px 8px}.app-dialog .dialog-actions{margin-top:22px}
@media(min-width:1100px){main{padding-top:32px}.site-header{max-width:1160px}.hero h1{font-size:34px}.setup-layout{gap:24px}}
@media(max-width:680px){main{padding:18px 17px 12px}.site-header{padding:14px 17px}.hero h1{font-size:29px}.setup-layout{gap:19px}.setup-panel{padding:23px 20px 18px;border-radius:20px}.panel-heading h2{font-size:20px}.heartbeat-moment{gap:8px}.heartbeat-moment>span{font-size:10px;letter-spacing:.4px}.heartbeat-trace{max-width:112px}.motion-toggle{font-size:9px;min-height:32px}.mode-option small{font-size:9px}.scene-option{font-size:11px}.game-progress{font-size:10px}.response-secondary button{font-size:11px}.player-name{font-size:12px}}
@media(max-width:355px){main{padding-left:12px;padding-right:12px}.site-header{padding-left:12px;padding-right:12px}.hero h1{font-size:27px}.setup-panel{padding:21px 14px 17px}.panel-heading h2{font-size:19px}.panel-heading p{font-size:11px}.names-row{gap:9px}.field-title{font-size:12px}.mode-grid{gap:7px}.mode-option{min-height:92px}.mode-option strong{font-size:12px}.mode-option small{font-size:8px}.scene-grid{gap:6px}.scene-option{font-size:10px}.heartbeat-moment{gap:5px}.heartbeat-moment>span{font-size:9px}.heartbeat-trace{min-width:24px;max-width:70px}.motion-toggle{font-size:8px;padding:6px}.game-progress{font-size:9px;gap:7px}.response-secondary button{font-size:10px}.player-box{padding:11px 9px}.player-name{font-size:11px}}
@media(max-width:680px){.hero h1{line-height:1.35}.setup-layout{gap:17px}.setup-panel .panel-heading{padding-bottom:14px;margin-bottom:16px}}
.scene-option{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:49px}.scene-option strong{font-size:inherit;font-weight:400}.scene-option small{font-size:8px;line-height:1.3;color:#d4b596}.scene-option.is-locked{border-color:#aa845b66;background:linear-gradient(145deg,#3a283366,#2a1c29)}

/* Keep the complete expanded payment/activation flow visible on phone screens. */
dialog.app-dialog.payment-dialog{width:430px!important;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);padding:20px!important;border-radius:20px;overscroll-behavior:contain;scrollbar-width:thin;overflow-y:auto}
.payment-dialog .payment-emblem{width:29px;height:29px;margin:0 auto 8px;border-radius:10px;font-size:19px}
.payment-dialog .payment-heading h2{font-size:22px;line-height:1.35;margin:0 0 7px}
.payment-dialog .payment-heading p{font-size:11px;line-height:1.6;margin:0}
.payment-dialog .payment-benefits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:15px 0 12px;padding:0;border:0;background:none}
.payment-dialog .payment-benefits>div{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;min-width:0;padding:10px 11px;border:1px solid #b0876744;border-radius:9px;background:#53383b2b}
.payment-dialog .payment-benefits strong{font-size:12px;line-height:1.4}.payment-dialog .payment-benefits span{font-size:10px;line-height:1.5;text-align:left}
.payment-dialog .payment-checkout{padding:13px 14px;border-radius:11px}
.payment-dialog .payment-price{margin:0 0 10px;font-size:12px}.payment-dialog .payment-price span{font-size:33px;line-height:1.15}
.payment-dialog .payment-checkout .primary{min-height:44px;padding:9px 12px;font-size:13px;border-radius:9px}
.payment-dialog .payment-checkout p{font-size:10px;line-height:1.6;margin:7px 0 0}
.payment-dialog .payment-activation{margin-top:10px}
.payment-dialog .payment-activation summary{padding:7px 0;font-size:12px;line-height:1.5;min-height:32px}
.payment-dialog .payment-unlock{margin:5px 0 0;padding:11px 12px;border-radius:10px}
.payment-dialog .payment-unlock label{font-size:11px;line-height:1.6;align-items:flex-start;gap:7px}.payment-unlock label input{margin-top:2px}
.payment-dialog .payment-unlock .unlock-row{margin-top:9px;gap:8px;flex-wrap:nowrap}
.payment-dialog .payment-unlock input[type=text]{width:0;flex:1;min-width:0;min-height:44px;padding:9px 10px;font-size:16px;line-height:1.3}

/* 异地双人 */
.room-bar{background:rgba(24,10,20,.9);color:#f0dcea;border-bottom:1px solid rgba(255,170,205,.16)}
.room-bar.warn{color:#f5cd94}
.room-code{color:#ffd9ea;text-shadow:0 0 24px rgba(255,120,180,.3)}
.room-panel .primary{background:linear-gradient(135deg,#e06a95,#c0457a)}
.payment-dialog .payment-unlock .secondary{flex-shrink:0;min-height:44px;padding:9px 12px;font-size:12px}
.payment-dialog .payment-unlock .privacy{font-size:10px;line-height:1.5;margin:7px 0 0}
.payment-dialog #payment-unlock-error{font-size:11px;line-height:1.5;margin:6px 0 0}.payment-dialog #payment-unlock-error:empty{display:none}
.payment-dialog .payment-close{min-height:32px;padding:6px 10px;font-size:11px;margin:7px auto 0}
@media(max-width:355px){dialog.app-dialog.payment-dialog{padding:16px!important}.payment-dialog .payment-heading h2{font-size:20px}.payment-dialog .payment-benefits>div{padding:8px}.payment-dialog .payment-unlock{padding:10px}.payment-dialog .payment-unlock label{font-size:10px}.payment-dialog .payment-unlock .secondary{padding:9px;font-size:11px}.payment-dialog .payment-price span{font-size:30px}}
@media(max-height:700px){.payment-dialog .payment-emblem{display:none}.payment-dialog .payment-benefits{margin-top:11px;margin-bottom:10px}.payment-dialog .payment-benefits>div{padding-top:8px;padding-bottom:8px}.payment-dialog .payment-heading p{font-size:10px}.payment-dialog .payment-close{margin-top:4px}}
