:root{color-scheme:light;--paper:#faf6ef;--ink:#362331;--muted:#7d6872;--wine:#672f49;--rose:#af647b;--line:#dfd0ca;font-family:system-ui,"Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 8%,#f2e1e5,transparent 50%),var(--paper)}[hidden]{display:none!important}a{color:inherit}button,input{font:inherit}button,a{touch-action:manipulation}button{color:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--rose);outline-offset:5px}button:not(.choose){border:1px solid var(--line);border-radius:999px;padding:12px 20px;background:#fffaf5;min-height:44px}.primary{display:inline-block;background:var(--wine)!important;color:#fff!important;border:1px solid var(--wine)!important;border-radius:999px;padding:14px 24px;text-decoration:none;text-align:center;font-weight:650}button:not(:disabled):hover{border-color:var(--rose)}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:24px clamp(20px,5vw,80px);border-bottom:1px solid var(--line)}.brand{text-decoration:none;font:700 .8rem Georgia,serif;letter-spacing:.15em}.brand span{color:var(--rose)}nav{display:flex;gap:24px;font-size:.85rem}nav a{text-decoration:none}
main{max-width:1080px;width:calc(100% - 40px);margin:auto}.intro{padding:48px 0 26px;text-align:center}.eyebrow{font-size:.68rem;font-weight:700;letter-spacing:.16em;color:var(--rose);margin:0 0 12px}h1{font:500 clamp(2.1rem,4.2vw,3.9rem)/1.3 "Songti SC","SimSun",serif;margin:0}h1 em{font-style:normal;color:var(--wine)}.intro>p:last-child,.result-header>p:last-child{color:var(--muted);line-height:1.7;margin:16px 0 0}.notice{max-width:750px;margin:0 auto 18px;text-align:center;color:var(--wine);line-height:1.7;font-size:.85rem}.notice:empty{display:none}.loading,.problem{text-align:center;padding:90px 16px;line-height:1.8}.loading-dot{display:inline-block;width:16px;height:16px;border-radius:50%;background:var(--rose);animation:pulse 1s ease-in-out 4}.problem button{margin:8px}.round-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.round-heading h2{font-size:1.1rem;font-weight:500;margin:0}.round-heading .eyebrow{margin:0 0 8px}#counter{color:var(--wine);font:500 1.5rem Georgia,serif;white-space:nowrap}.progress{height:3px;background:#e8d8dc;margin:18px 0 22px;border-radius:4px;overflow:hidden}.progress>div{height:100%;background:var(--wine);width:0;transition:width .25s ease}
.duel-stage{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,4vw,60px);max-width:930px;margin:auto}.photo-choice{min-width:0;text-align:center}.choose{position:relative;display:block;width:100%;padding:10px;background:#fffdfa;border:1px solid var(--line);border-radius:6px;box-shadow:0 10px 30px #58283d09;transition:transform .18s,border-color .18s}.choose:not(:disabled):hover{transform:translateY(-3px);border-color:var(--rose)}.choose.picked{border-color:var(--wine);box-shadow:0 0 0 3px #672f4925}.photo-frame{display:flex;align-items:center;justify-content:center;overflow:hidden;background:#eee7e2;height:clamp(260px,46vh,510px);border-radius:2px}.photo-frame img{display:block;width:100%;height:100%;object-fit:contain}.choice-label{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:16px 4px 8px;font-size:.85rem}.choice-label strong{font-weight:600}.photo-number{color:var(--muted);font:500 .8rem Georgia,serif}.versus{position:absolute;top:43%;left:50%;transform:translate(-50%,-50%);border-radius:50%;width:42px;height:42px;display:grid;place-items:center;background:var(--paper);border:1px solid var(--line);font:italic .8rem Georgia,serif;z-index:2}.photo-choice .zoom{margin:7px 0 0;font-size:.78rem;padding:8px 14px;border:0;background:transparent}.game-tools{display:flex;justify-content:space-between;gap:10px;max-width:930px;margin:16px auto 0}.game-tools button{font-size:.78rem}.small-note{text-align:center;color:var(--muted);font-size:.75rem;margin:36px 0 42px}
.result-header{text-align:center;margin:8px 0 32px}.result-header h2{font:500 clamp(2.6rem,6vw,4rem)/1.2 "Songti SC",serif;margin:0}.result-layout{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,70px);align-items:center}.champion{margin:0;background:#fffdfa;border:1px solid var(--line);padding:14px;box-shadow:0 18px 50px #672f4910}.champion>div{height:480px;background:#efe7e0;display:flex}.champion img{display:block;width:100%;height:100%;object-fit:contain}.champion figcaption{padding:16px 6px 4px;display:flex;justify-content:space-between;gap:12px;font:.8rem Georgia,serif;letter-spacing:.08em;color:var(--wine)}.result-copy h3{font:500 clamp(2.2rem,4vw,3.3rem)/1.35 "Songti SC",serif;margin:0 0 22px}.result-copy>p:not(.eyebrow){line-height:1.9;color:var(--muted)}.result-actions{display:grid;gap:12px;margin-top:24px}.result-links{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.result-links button{font-size:.75rem;padding:8px 12px}.wish-link{display:inline-block;margin-top:20px;text-underline-offset:5px;color:var(--wine);font-size:.85rem}.history{margin:40px 0 0;padding-top:22px;border-top:1px solid var(--line)}summary{cursor:pointer;font-size:1rem}#history{list-style:none;padding:0;margin:24px 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.history li{padding:12px;background:#fffaf6;border:1px solid var(--line);border-radius:6px;min-width:0}.history li>p{margin:0 0 10px;color:var(--muted);font-size:.72rem}.history-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.history-pair figure{margin:0;min-width:0}.history-pair img{width:100%;height:90px;object-fit:contain;background:#f1e9e2;display:block;border:2px solid transparent}.history-pair .winner img{border-color:var(--wine)}.history-pair figcaption{font-size:.68rem;text-align:center;padding-top:5px;color:var(--muted)}.history-pair .winner figcaption{color:var(--wine);font-weight:650}footer{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;padding:28px 20px;border-top:1px solid var(--line);font-size:.75rem;color:var(--muted)}
dialog{border:1px solid var(--line);border-radius:16px;background:var(--paper);color:var(--ink);padding:22px;max-width:min(640px,calc(100% - 28px));max-height:90dvh;box-shadow:0 24px 80px #25102040}dialog::backdrop{background:#21111dcc;backdrop-filter:blur(4px)}dialog .close{display:block;margin:0 0 16px auto;font-size:.8rem}#full-photo{display:block;max-width:100%;max-height:70dvh;margin:auto;object-fit:contain}#photo-modal p{font-size:.8rem}#poster-modal{width:480px}#poster-modal p{font-size:.85rem}#poster{width:100%;display:block;margin:0 auto 18px}#download{width:100%}#share-modal{width:520px}#share-modal h2{font:500 1.6rem "Songti SC",serif}#share-modal p{color:var(--muted);line-height:1.7;font-size:.9rem}#share-modal label{display:block;font-size:.8rem;margin:20px 0 10px}#share-url{display:block;width:100%;min-width:0;font-size:16px;padding:12px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);margin-bottom:16px}.confirm-actions{display:flex;gap:12px;flex-wrap:wrap}#confirm-modal p{line-height:1.7}
@keyframes pulse{50%{opacity:.3;transform:scale(.7)}}@media(max-width:650px){.topbar{padding:19px 16px}nav{gap:14px;font-size:.75rem}.brand{font-size:.7rem}main{width:calc(100% - 28px)}.intro{padding:30px 0 24px}.intro .eyebrow{font-size:.59rem}.intro>p:last-child{font-size:.82rem}h1{font-size:clamp(1.6rem,6.6vw,2.5rem)}.round-heading h2{font-size:.9rem}.round-heading .eyebrow{font-size:.62rem}#counter{font-size:1.2rem}.progress{margin:14px 0 18px}.duel-stage{gap:12px}.choose{padding:6px}.photo-frame{height:clamp(235px,39vh,350px)}.choice-label{padding:13px 2px 9px;font-size:.73rem}.photo-number{font-size:.65rem}.versus{width:28px;height:28px;font-size:.55rem}.game-tools{margin-top:8px}.game-tools button{padding:10px 12px;font-size:.73rem}.small-note{margin:26px 0 32px}.result-layout{grid-template-columns:1fr;gap:26px}.champion{max-width:380px;width:100%;margin:auto}.champion>div{height:380px}.result-copy{text-align:center}.result-copy h3{font-size:2rem}.result-copy h3 br{display:none}.result-links{justify-content:center}.result-actions{max-width:380px;margin:22px auto 0}#history{grid-template-columns:repeat(2,minmax(0,1fr))}.history-pair img{height:90px}.result-header{margin-top:0}.result-header h2{font-size:2.4rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.choose:not(:disabled):hover{transform:none}}
