@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/nuss-dm-sans-normal-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 500 600;
  font-display: swap;
  src: url('/nuss-playfair-display-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url('/nuss-playfair-display-normal-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{--pink:#d72e7c;--ink:#65324b;--muted:#9b6c81}*{box-sizing:border-box}body{margin:0;color:var(--ink);font-family:'DM Sans',sans-serif;background:radial-gradient(ellipse at 50% 48%,#ffe5f3 0,transparent 48%),linear-gradient(130deg,#fff8fa,#fce6ed 65%,#fff3f8);min-height:100vh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #a52a69;outline-offset:5px}#fx{position:fixed;inset:0;pointer-events:none;z-index:8;width:100%;height:100%}header{max-width:1450px;margin:auto;padding:28px 5%;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #edd1dc}.brand{text-decoration:none;color:var(--pink);font-size:29px;display:flex;align-items:center;gap:12px}.brand span{font-size:11px;letter-spacing:2.4px;font-weight:700}.controls{display:flex;gap:8px}.controls button{border:1px solid #eccddc;background:#ffffff80;border-radius:30px;padding:9px 13px;color:var(--ink);font-size:11px}main{max-width:1420px;margin:auto;padding:0 5%}.intro{text-align:center;padding:28px 0 26px}.eyebrow{font-size:10px;letter-spacing:3px;color:#b9698b;font-weight:700}h1{font:500 clamp(25px,3vw,42px)/1.16 'Playfair Display',Georgia,serif;margin:14px 0 9px}h1 em{font-size:clamp(54px,6vw,83px);color:var(--pink);font-weight:500;line-height:1.1}.hearts{font-size:26px;display:inline-block;transform:rotate(-12deg);margin-left:14px}p{line-height:1.7}.intro p{font-size:12px;color:var(--muted);margin:12px 0}.game{display:grid;grid-template-columns:1fr 1.28fr 1fr;gap:34px;align-items:center}.panel{background:#fff9fbb3;border:1px solid #fff;border-radius:22px;padding:25px;box-shadow:0 12px 50px #b64e7510}.section-title{letter-spacing:1.8px;font-size:9px;color:#b16e8b;font-weight:700}h2{font:500 25px/1.25 'Playfair Display',Georgia,serif;margin:12px 0}.muted{font-size:11px;color:var(--muted);margin:0 0 24px}.milestone{display:flex;gap:12px;text-align:left;align-items:center;border:0;border-bottom:1px solid #eddce4;padding:17px 0;width:100%;background:none;color:var(--ink)}.milestone:disabled{cursor:default;opacity:.5}.milestone .icon{width:36px;height:36px;display:grid;place-items:center;background:#f9e9f0;border-radius:50%;font-size:16px}.milestone strong{display:block;font-size:12px}.milestone small{font-size:10px;display:block;margin-top:5px;color:var(--muted)}.milestone .end{margin-left:auto}.note{font:500 17px/1.6 'Playfair Display',Georgia,serif;margin-top:27px}.note i{color:var(--pink)}.note span{display:block;font:10px 'DM Sans',sans-serif;margin-top:17px;color:var(--muted)}.click-area{text-align:center;min-width:0}.counter>span{font:600 53px/1.1 'Playfair Display',Georgia,serif;color:var(--pink);font-variant-numeric:tabular-nums}.counter small{display:block;font-size:9px;letter-spacing:2.6px;margin:7px 0 12px}.rate{display:flex;gap:10px;justify-content:center;font-size:11px;color:var(--muted)}.portrait-wrap{position:relative;width:290px;height:290px;margin:37px auto 19px;display:grid;place-items:center}.orbit{position:absolute;inset:0;border:1px dashed #e7a9c7;border-radius:50%;animation:spin 45s linear infinite}.orbit.two{inset:12px;border:1px solid #edb7cf;animation:none}.one:after{content:'✦';position:absolute;top:0;color:#de71a5;font-size:25px}.crown{position:absolute;z-index:3;top:-28px;font-size:48px;transform:rotate(-8deg);filter:drop-shadow(0 5px 4px #d38d7733)}#portrait{width:242px;height:242px;border-radius:50%;border:7px solid white;padding:0;box-shadow:0 0 0 2px #f5c6df,0 15px 45px #e54b9740;overflow:hidden;position:relative;transition:transform .1s;touch-action:manipulation;background:#f5c3dc;user-select:none}#portrait:hover{transform:scale(1.025)}#portrait:active{transform:scale(.94)}#portrait img{width:100%;height:100%;object-fit:cover;pointer-events:none}.spark{position:absolute;color:#dd73a5;font-size:35px;animation:float 3s ease-in-out infinite;z-index:2;pointer-events:none}.s1{left:-10px;top:66px}.s2{right:-9px;top:145px;animation-delay:-1s}.s3{left:34px;bottom:0;animation-delay:-2s}.click-label{position:absolute;bottom:4px;background:#fff3fa;padding:7px 17px;border:1px solid #f1c6da;border-radius:30px;transform:rotate(-5deg);font-size:11px;pointer-events:none;z-index:3}#combo{font-size:9px;letter-spacing:1.8px;color:#bd7293;height:28px}.chaos{background:linear-gradient(110deg,#df448e,#ec78b1);color:white;border:0;border-radius:13px;padding:13px 25px;box-shadow:0 8px 20px #dd5d9433;font-size:12px;letter-spacing:1.5px;font-weight:700}.chaos small{display:block;letter-spacing:0;font-size:9px;font-weight:400;opacity:.85;margin-top:5px}.chaos:disabled{opacity:.6;cursor:default}.progress-label{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);margin:22px 12px 8px}.progress{height:5px;background:#efd6e3;border-radius:5px;margin:0 12px;overflow:hidden}#progress-bar{height:100%;width:0;background:#df6a9f;transition:width .3s}.shop h2 span{color:#db76a6}.upgrade{width:100%;display:flex;align-items:center;gap:12px;border:1px solid #eed4e0;border-radius:13px;padding:13px 12px;margin:10px 0;background:#fff9fc;text-align:left;color:var(--ink);transition:transform .2s,border-color .2s}.upgrade:not(:disabled):hover{transform:translateY(-3px);border-color:#de69a0;background:white}.upgrade:disabled{opacity:.52;cursor:not-allowed}.upgrade .icon{font-size:27px}.upgrade strong{font-size:12px;display:block}.upgrade small{font-size:9px;display:block;color:var(--muted);margin-top:5px}.price{margin-left:auto;font-size:11px;font-weight:700;white-space:nowrap;color:var(--pink)}.price small{text-align:right;font-weight:400}.shop-bottom{font-size:10px;text-align:center;color:var(--muted);margin-top:24px}footer{text-align:center;font-size:10px;color:#b78298;padding:36px 0 22px}footer span{color:#d84c8c}footer small{display:block;margin-top:8px;font-size:9px}.ambient{position:fixed;font-size:500px;opacity:.025;left:-100px;bottom:-140px;pointer-events:none}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,25px);opacity:0;background:#7b3659;color:white;padding:13px 22px;border-radius:50px;font-size:12px;z-index:20;transition:.25s;pointer-events:none;max-width:90vw;text-align:center}#toast.show{transform:translate(-50%,0);opacity:1}dialog{border:1px solid white;background:#fff0f7;color:var(--ink);border-radius:24px;padding:40px;text-align:center;max-width:420px;width:90%;box-shadow:0 30px 120px #862c6140}dialog::backdrop{background:#71314f66;backdrop-filter:blur(8px)}dialog h2{font-size:35px;color:var(--pink)}dialog p{font-size:14px}#close{position:absolute;right:15px;top:10px;border:0;background:none;font-size:28px;color:var(--ink)}.gift-icon{font-size:50px;margin-bottom:15px}.floating{position:fixed;pointer-events:none;z-index:10;color:#c72878;font-weight:700;font-size:22px;animation:rise 1s ease-out forwards}.party .portrait-wrap{filter:drop-shadow(0 0 20px #ff76bb)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{50%{transform:translateY(-12px) rotate(10deg)}}@keyframes rise{to{transform:translateY(-100px) rotate(12deg);opacity:0}}body.calm *{animation:none!important}body.calm .floating{display:none}@media(max-width:1000px){.game{gap:16px}.panel{padding:18px}.portrait-wrap{width:260px;height:260px}#portrait{width:220px;height:220px}}@media(max-width:760px){header{padding:18px 5%}.brand span{font-size:9px;letter-spacing:1.4px}.controls button{padding:8px;font-size:10px}main{padding:0 6%}.intro{padding:27px 0 20px}.intro h1{font-size:28px}.intro h1 em{font-size:67px}.intro p{max-width:260px;margin:14px auto;font-size:12px}.game{display:flex;flex-direction:column;gap:25px}.click-area{order:0;width:100%;max-width:370px}.shop{order:1}.journey{order:2}.panel{width:100%;padding:23px}.portrait-wrap{width:285px;height:285px;margin-top:33px}#portrait{width:240px;height:240px}.counter>span{font-size:47px}.shop .muted{margin-bottom:16px}.upgrade{padding:15px}.upgrade strong{font-size:14px}.upgrade small{font-size:11px}.price{font-size:13px}.note{text-align:center}footer{line-height:1.7}.hearts{font-size:22px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}

/* Keep the reference still when effects or operating-system motion are disabled. */
body.calm *{transition:none!important}
body.calm #portrait:hover,body.calm #portrait:active,body.calm .upgrade:not(:disabled):hover{transform:none}
@media(prefers-reduced-motion:reduce){*{transition:none!important}#portrait:hover,#portrait:active,.upgrade:not(:disabled):hover{transform:none}}

/* Registration and the shared scoreboard retain the reference's pink panels. */
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.scoreboard{min-width:0}
.scoreboard h2 span{color:#db76a6}
.scoreboard .muted{margin-bottom:17px}
.player-label{margin:0 0 14px;color:var(--pink);font-size:12px;font-weight:600;overflow-wrap:anywhere}
.player-label:empty,.panel-status:empty,.game-status:empty{display:none}
.panel-status{margin:14px 0;color:var(--muted);font-size:12px;line-height:1.7;overflow-wrap:anywhere}
.panel-status[data-kind="error"],.game-status[data-kind="error"]{color:#a52a69}
#scoreboard-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:12px}
#scoreboard-table th{padding:0 0 10px;color:var(--muted);font-size:9px;font-weight:600;letter-spacing:.06em;text-align:left}
#scoreboard-table th:first-child{width:17%}
#scoreboard-table th:last-child{width:30%;text-align:right}
#scoreboard-table td{padding:12px 0;border-top:1px solid #eddce4;vertical-align:top;overflow-wrap:anywhere;line-height:1.6}
#scoreboard-table td+td{padding-left:8px}
#scoreboard-table td:first-child,#scoreboard-table td:last-child{font-variant-numeric:tabular-nums}
#scoreboard-table td:last-child{color:var(--pink);font-weight:600;text-align:right}
#scoreboard-table tr[data-self="true"],#scoreboard-table tr.is-self{background:#fce7f1}
.scoreboard-self{margin-top:16px;padding:13px;border:1px solid #efc7da;border-radius:12px;background:#fff0f7;font-size:12px;line-height:1.7;overflow-wrap:anywhere}
.scoreboard-empty{margin:18px 0;color:var(--muted);font-size:12px;line-height:1.7}
.retry-button{min-height:48px;padding:12px 17px;border:1px solid #e4bad0;border-radius:12px;color:var(--ink);background:#fff8fc;font-size:12px;font-weight:600;line-height:1.5}
.retry-button:not(:disabled):hover{border-color:#d770a1;background:white}
.retry-button:disabled,#player-submit:disabled{cursor:wait;opacity:.6}
.game-status{max-width:360px;margin:16px auto 10px;color:var(--muted);font-size:12px;line-height:1.7;overflow-wrap:anywhere}
#portrait:disabled{cursor:default}
#portrait:disabled:hover,#portrait:disabled:active{transform:none}
.keepsakes{margin-top:34px}
.keepsakes-heading{text-align:center}
.keepsakes-heading .muted{margin-bottom:13px}
.keepsakes #milestones{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.keepsakes .milestone{min-width:0;min-height:92px;padding:16px 0;border-bottom:0}
.keepsakes .milestone>span:nth-child(2){min-width:0;overflow-wrap:anywhere}
.keepsakes .note{max-width:700px;margin:20px auto 0;padding-top:19px;border-top:1px solid #eddce4;text-align:center;font-size:16px}
.keepsakes .note span{margin-top:13px}
#player-dialog{width:min(460px,calc(100% - 32px));max-width:460px;max-height:calc(100svh - 32px);padding:34px;overflow:auto;border-color:#efcade;background:#fff3f9}
#player-dialog h2{margin:12px 0 15px;font-size:36px}
#player-dialog .eyebrow{font-size:9px;letter-spacing:1.7px}
.registration-icon{margin-bottom:12px;color:var(--pink);font-size:38px;line-height:1}
#player-help{margin:0 0 24px;color:var(--muted);font-size:13px;line-height:1.8}
#player-form{text-align:left}
#player-form label{display:block;margin-bottom:10px;font-size:12px;font-weight:600}
#player-name{display:block;width:100%;min-width:0;min-height:52px;padding:12px 14px;border:1px solid #d7a2bc;border-radius:12px;background:#fffafd;color:var(--ink);font:16px/1.5 'DM Sans',sans-serif}
#player-name:focus-visible{outline:3px solid #a52a69;outline-offset:4px}
#player-name[aria-invalid="true"]{border-color:#a52a69}
#player-name:disabled{opacity:.7}
#player-name-error{margin:9px 0 0;color:#a52a69;font-size:12px;line-height:1.7}
#player-submit{width:100%;min-height:50px;margin-top:20px;letter-spacing:.5px}
#player-status{margin-bottom:0}
#player-retry{width:100%;margin-top:16px}

@media(max-width:760px){
  .scoreboard{order:1}
  .shop{order:2}
  .keepsakes{margin-top:25px}
  .keepsakes #milestones{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .keepsakes .milestone{position:relative;flex-direction:column;align-items:center;gap:9px;padding:16px 6px;text-align:center}
  .keepsakes .milestone .end{position:absolute;top:12px;right:5px;margin:0}
  .keepsakes .note{font-size:16px}
  #scoreboard-table{font-size:13px}
  #player-dialog{padding:29px 24px}
}
@media(max-width:350px){
  #player-dialog{padding:26px 20px}
  #player-dialog h2{font-size:32px}
  .keepsakes #milestones{gap:8px}
}

@media(max-width:480px){.keepsakes #milestones{grid-template-columns:minmax(0,1fr)}.keepsakes .milestone{flex-direction:row;align-items:center;gap:12px;padding:16px 0;text-align:left}.keepsakes .milestone .end{position:static;margin-left:auto}}
