@charset "UTF-8";
:root{--ink:#174e40;--mint:#167c60;--cream:#fffcef;--gold:#dcc58e;font-family:"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:#f5f5e9;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,select,input{font:inherit}button{cursor:pointer;border:0}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #d3a744;outline-offset:4px}button:disabled{cursor:wait;opacity:.55}.ambient{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 15% 60%,#d9e8d4 0,transparent 45%),radial-gradient(ellipse at 90% 10%,#e4eddb 0,transparent 45%);z-index:-1}header{height:100px;max-width:1600px;margin:auto;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #1b664219}.brand{text-decoration:none;color:var(--ink);display:flex;gap:12px;font-size:21px;font-weight:750;align-items:center;letter-spacing:2px}.brand-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--ink);color:#e1e9bc;font-size:35px}.brand small{display:block;font-size:8px;letter-spacing:2px;margin-top:5px;font-weight:500}nav{display:flex;gap:12px;align-items:center}nav button{color:var(--ink);background:transparent;padding:11px 14px;font-size:13px;border-radius:9px}nav button:hover{background:#dce7d6}#historyCount{display:inline-block;padding:2px 6px;border-radius:6px;background:#e3e9d8;font-size:11px;margin-left:5px}#fullscreen{font-size:23px;border:1px solid #cdd9c7;padding:5px 12px}main{max-width:1440px;margin:auto;padding:28px 5% 0}.heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.eyebrow{font-size:10px;font-weight:650;letter-spacing:2.5px;margin:0 0 13px;color:#728b72}.eyebrow span{display:inline-block;background:#d8b369;width:6px;height:6px;border-radius:50%;margin-right:8px}h1{font-size:clamp(22px,2.6vw,38px);font-weight:650;letter-spacing:1px;margin:0 0 12px}h1 span{color:#bca56e;font-size:25px;display:inline-block;margin-left:17px}.subtitle{font-size:13px;color:#7b8c79;margin:0}.round{border-left:1px solid #cdd8c5;padding-left:27px;display:grid;grid-template-columns:1fr;min-width:100px}.round span{font-size:10px;letter-spacing:2px}.round strong{font-size:44px;line-height:1.2;font-family:Georgia,serif;font-weight:400}.round small{font-size:8px;letter-spacing:3px;color:#82907c}.machine{position:relative;border-radius:30px;background:linear-gradient(145deg,#65be97,#238768 60%,#81b693);padding:14px 16px 0;border:1px solid #92c9a5;box-shadow:inset 0 2px 2px #e9f9d7,0 9px 0 #23674f,0 14px 0 #b0bd97,0 24px 45px #31624723}.machine-top{height:39px;display:flex;align-items:center;justify-content:space-between;padding:0 15px 12px;color:#f1f8df;font-size:11px;letter-spacing:2px}.machine-label{font-size:13px;font-weight:600}.status{display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:1px}.status i{width:5px;height:5px;background:#e8edb1;border-radius:50%;box-shadow:0 0 8px #ffffba}.edition{font-size:8px;letter-spacing:2px;opacity:.8}.stage{position:relative;overflow:hidden;padding:28px 4% 25px;border:7px solid #226b53;border-radius:18px;background:radial-gradient(ellipse at 50% 25%,#fffef3,#e2ead5 76%);box-shadow:inset 0 5px 15px #456e6035;perspective:1400px}.stage:before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,#fff5 35%,#fff1 55%,transparent 55%);pointer-events:none}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;max-width:1000px;margin:auto;position:relative;z-index:2;perspective:1800px}.card{position:relative;aspect-ratio:0.69;max-height:43vh;min-height:220px;transform-style:preserve-3d;will-change:transform;justify-self:center;width:100%}.card-inner{width:100%;height:100%;position:relative;transform-style:preserve-3d;transition:transform 1s cubic-bezier(.2,.7,.15,1)}.card.revealed .card-inner{transform:rotateY(180deg)}.card-front,.card-back{position:absolute;inset:0;border-radius:14px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 12px 20px #19493725}.card-back{border:1px solid #e9e6ba;background:linear-gradient(135deg,#25896b,#0d5e48);padding:12px;color:#eff1d7}.back-border{height:100%;border:1px solid #c9d79b88;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;background:radial-gradient(circle at center,#a7d1a112,transparent 70%)}.back-border:before,.back-border:after{content:'✧';position:absolute;color:#d4dbaa;font-size:18px}.back-border:before{top:12px;left:12px}.back-border:after{bottom:12px;right:12px}.back-border small{letter-spacing:4px;font-size:8px;opacity:.75}.emblem{font-family:Georgia,serif;display:grid;place-items:center;width:90px;height:110px;margin:20px 0;border:1px solid #c9d79b99;border-radius:50%;font-size:60px;background:radial-gradient(#7dbb9138,transparent)}.back-border strong{font-weight:500;letter-spacing:5px;font-size:15px}.back-border .number{position:absolute;bottom:18px;font-size:10px;letter-spacing:3px;opacity:.6}.card-front{transform:rotateY(180deg);background:#fffcf0;padding:7px;display:flex;flex-direction:column;border:1px solid #d8c998}.card-front img{display:block;width:100%;flex:1;min-height:0;object-fit:contain;background:#eff0e9;border-radius:8px}.card-info{padding:9px 2px 4px;display:flex;align-items:center;justify-content:space-between;gap:4px}.card-info strong{font-size:17px;white-space:nowrap}.card-info span{font-size:10px;color:#81917f}.card-info small{font-size:9px;color:#81917f;display:block;margin-top:3px}.stage-floor{position:absolute;bottom:-20px;left:-5%;width:110%;height:60px;border-radius:50%;background:#d6dfc6;box-shadow:0 -1px 0 #c9d5bb}.stage-spark{position:absolute;color:#97ae85}.s1{left:1%;top:22%;font-size:35px}.s2{right:1%;bottom:15%;font-size:26px}.machine-bottom{height:49px;display:flex;align-items:center;justify-content:center;gap:28px}.slot{width:100px;height:8px;background:#164634;border-radius:10px;box-shadow:0 2px 0 #b3d4a0}.machine-bottom>span{font-size:8px;letter-spacing:2.5px;color:#e5efd8}.lamp{height:19px;width:19px;border-radius:50%;background:#e4f1b2;border:4px solid #639b70;box-shadow:0 0 0 2px #b5d39b,0 0 15px #c8fb8d99}.control{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:39px}.pool{display:grid;grid-template-columns:auto auto;gap:8px 12px;align-items:center}.pool label{font-size:11px;color:#7e8b75}.pool select{background:transparent;border:0;border-bottom:1px solid #bac8ae;color:var(--ink);padding:6px;font-size:13px;max-width:150px}.pool>span{grid-column:2;font-size:10px;color:#74836b}.draw-control{text-align:center}.primary{border:1px solid #226344;background:linear-gradient(#328365,#14684f);box-shadow:inset 0 1px 0 #7dbd93,0 4px 0 #0d4c39,0 10px 18px #255d4020;color:#f9f8dc;padding:18px 28px;min-width:285px;border-radius:13px;font-size:16px;letter-spacing:2px;display:flex;align-items:center;justify-content:space-between;gap:20px;transition:filter .2s,transform .2s}.primary:hover{filter:brightness(1.1);transform:translateY(-2px)}.draw-control small{display:block;font-size:10px;color:#95a088;margin-top:14px;letter-spacing:1px}.rule{text-align:right}.rule strong{display:block;font-size:11px;font-weight:500;margin-bottom:8px}.rule span{font-size:10px;color:#87937d}footer{max-width:1440px;padding:22px 5%;margin:auto;display:flex;justify-content:space-between;font-size:10px;color:#8c9782;letter-spacing:1px}.intro{position:fixed;inset:0;z-index:20;background:#0f3127;transition:opacity .8s;display:grid;place-items:center}.intro.hidden{opacity:0;pointer-events:none}.intro video{width:100%;height:100%;object-fit:contain;position:absolute}.intro-shade{position:absolute;inset:0;background:linear-gradient(0deg,#103b33eb,transparent 80%);transition:opacity .6s}.intro-copy{position:relative;text-align:center;align-self:end;margin-bottom:9vh;color:#fff8df}.intro-copy h2{font-size:60px;letter-spacing:10px;margin:15px 0}.intro-copy p{font-size:12px;letter-spacing:4px}.intro-copy .primary{margin:28px auto 0}.intro.playing .intro-copy,.intro.playing .intro-shade{opacity:0;pointer-events:none}.skip{position:absolute;right:30px;bottom:26px;border:1px solid #fff6;color:white;background:#163f34a6;padding:10px 17px;border-radius:25px;font-size:12px}.intro.hidden video{visibility:hidden}dialog{border:1px solid #d3dcc5;background:#f9faef;color:var(--ink);width:min(900px,94vw);max-height:85vh;border-radius:22px;padding:30px;box-shadow:0 20px 100px #092d3555}dialog::backdrop{background:#14382ab5;backdrop-filter:blur(6px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.dialog-header h2{margin:0;font-size:25px}.dialog-header button{background:#e7eddf;border-radius:50%;width:35px;height:35px;color:var(--ink)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:15px 0}.toolbar button,.record-actions button{padding:9px 13px;border-radius:8px;background:#deead8;color:var(--ink)}.toolbar .danger{background:#f4e4db;color:#a24f3e}input[type=search]{width:100%;padding:13px;border:1px solid #ccd9bf;border-radius:8px;background:white;color:var(--ink)}.note{font-size:12px;line-height:1.8;color:#7a8874}.roster{max-height:45vh;overflow:auto}.person{display:flex;align-items:center;gap:12px;border-bottom:1px solid #dfe6d5;padding:9px 0}.person img{width:45px;height:58px;object-fit:contain;border-radius:5px;background:#e2e9dc}.person input{width:130px;border:1px solid #d9e3cf;background:#fffdf6;padding:7px;border-radius:5px;color:var(--ink)}.person small{color:#7e8e72;font-size:11px}.person span{flex:1}.person button{font-size:12px;color:var(--ink);padding:7px;border-radius:5px;background:#e0ebd8}.history-row{border-bottom:1px solid #d8e1ca;padding:16px 0}.history-row h3{font-size:13px;font-weight:500;margin:0 0 14px}.history-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.history-person{background:#e8eddf;border-radius:10px;padding:8px;text-align:center;font-size:12px}.history-person img{height:100px;max-width:100%;object-fit:contain;display:block;margin:0 auto 7px}.toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,30px);opacity:0;background:#194e3f;color:#fff9df;padding:12px 20px;border-radius:12px;font-size:13px;z-index:40;transition:.3s;pointer-events:none;max-width:90vw}.toast.show{transform:translate(-50%,0);opacity:1}#confetti{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:hidden}.confetti{position:absolute;width:7px;height:12px;top:-15px;border-radius:2px;animation:fall 2.5s cubic-bezier(.15,.5,.6,1) forwards}@keyframes fall{to{transform:translate3d(var(--drift),500px,0) rotate(600deg);opacity:0}}.drawing .lamp{animation:pulse .4s infinite alternate}@keyframes pulse{to{box-shadow:0 0 0 2px #c4dfab,0 0 30px #e3ff9b}}@media(min-width:1600px){.card{max-height:44vh}.stage{padding-top:36px;padding-bottom:36px}main{padding-top:40px}.heading{margin-bottom:32px}}@media(max-width:850px){header{height:80px;padding:0 4%}nav{gap:0}nav button{font-size:11px;padding:9px}.brand{font-size:16px}.brand small{font-size:6px}.brand-icon{width:33px;height:33px;font-size:26px}main{padding:25px 4% 0}.cards{gap:12px}.card{min-height:160px}.stage{padding:20px 2%}.emblem{width:58px;height:75px;font-size:40px}.back-border strong{font-size:12px;letter-spacing:1px}.back-border small{font-size:6px;letter-spacing:1px}.card-info{display:block;text-align:center}.card-info strong{font-size:14px}.card-info small{display:none}.control{flex-wrap:wrap;justify-content:center}.pool{order:2}.rule{order:3}.draw-control{width:100%}.primary{margin:auto}.edition{display:none}}@media(max-width:520px){.brand small{display:none}nav button{font-size:10px;padding:6px}#fullscreen{display:none}.brand{font-size:14px;letter-spacing:0}.brand-icon{display:none}h1{font-size:22px;max-width:270px}.round{min-width:65px;padding-left:14px}.round strong{font-size:32px}.cards{grid-template-columns:repeat(2,1fr);max-width:340px}.card{max-height:235px;min-height:195px}.machine{padding:10px 8px 0;border-radius:22px}.machine-top{padding:0 6px 10px}.stage{padding:14px;border:4px solid #226b53}.machine-bottom>span{font-size:6px;letter-spacing:1px}.slot{width:50px}.machine-bottom{gap:18px}.rule{display:none}.intro-copy h2{font-size:40px}.history-grid{grid-template-columns:repeat(2,1fr)}.person input{width:100px}.person small{font-size:9px}footer{font-size:8px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}.card{will-change:auto}}
@media(min-width:851px) and (max-height:850px){header{height:70px}main{padding-top:18px}.heading{margin-bottom:18px}.heading .eyebrow{margin-bottom:9px}h1{font-size:28px;margin-bottom:8px}.round strong{font-size:32px}.card{max-height:34vh;min-height:175px;max-width:calc(34vh * .69)}.stage{padding-top:18px;padding-bottom:18px}.machine-top{height:31px;padding-bottom:10px}.machine-bottom{height:35px}.control{margin-top:28px}.primary{padding:14px 24px}.draw-control small{margin-top:10px}footer{padding-top:16px;padding-bottom:12px}.emblem{width:65px;height:80px;margin:12px 0;font-size:45px}.card-info strong{font-size:15px}.card-info{padding-top:6px}}

/* One card enters at a time; reserved slots keep the stage stable. */
.card.pending{opacity:0;pointer-events:none}
.drawing .card-inner{transition-duration:.8s}
