button,input{font-family:inherit}
:root{--lavender:#ece5fa;--white:#fff;--ink:#514760;--muted:#968b9f;--line:#eee9f4;--accent:#786291;--light:#f8f5fc}*{box-sizing:border-box}body{margin:0;background:var(--white);color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer;background:none;border:0;color:inherit;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .15s,border-color .15s}button:disabled{cursor:default;opacity:.5}button:focus-visible,input:focus-visible{outline:3px solid #dbcef0;outline-offset:3px}input{min-width:0;color:var(--ink)}svg{flex-shrink:0}h1,h2,h3,p{margin:0}.site-shell{max-width:1060px;padding:0 44px;margin:auto;min-height:100vh}.topbar{height:84px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand-button{font-size:24px;letter-spacing:-.8px;font-weight:650;padding:0;color:#655177}.topbar nav{display:flex;align-items:center;gap:27px;height:100%}.nav-link{font-size:12px;color:var(--muted);height:100%;padding:0 2px;position:relative}.nav-link.active{color:var(--accent)}.nav-link.active:after{content:"";position:absolute;bottom:-1px;height:2px;width:24px;background:#cdbce4;left:50%;transform:translateX(-50%)}.lobby{max-width:520px;margin:47px auto 70px}.page-heading{margin-bottom:27px}.page-heading h1,.room-intro h1{font-size:25px;font-weight:550;letter-spacing:.5px}.page-heading p{font-size:12px;color:var(--muted);margin-top:11px;line-height:1.8}.setup-card{border:1px solid var(--line);background:var(--white);border-radius:14px;overflow:hidden}.card-tabs{display:grid;grid-template-columns:1fr 1fr;background:var(--light);padding:6px;gap:5px;border-bottom:1px solid var(--line)}.card-tabs button{font-size:12px;height:42px;border-radius:8px;color:#9a8ea5}.card-tabs .selected{color:var(--accent);background:var(--white);box-shadow:0 1px 4px #705b8710;font-weight:550}.setup-card form{padding:8px 30px 22px}.field-label{display:flex;align-items:center;justify-content:space-between;margin:25px 0 12px;font-size:12px}.field-label label{font-weight:500}.field-label>span{font-size:10px;color:#a498ad}.player-options,.time-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.player-option{border:1px solid var(--line);border-radius:8px;height:66px;color:#9b8fa7;gap:10px;position:relative}.player-option b{font-size:14px;font-weight:500}.player-option>svg:last-child:not(:first-child){position:absolute;top:7px;right:7px;width:12px;height:12px}.chosen{border-color:#d1bfe7!important;background:var(--lavender)!important;color:var(--accent)!important}.player-option:hover,.time-option:hover{border-color:#d9cbe9}.time-option{height:44px;border:1px solid var(--line);border-radius:8px;font-size:12px;gap:7px}.time-option svg{width:13px}.custom-time{display:flex;gap:11px;align-items:center;font-size:11px;color:var(--muted);margin-top:11px}.custom-time input{width:100px;padding:9px 11px;border:1px solid var(--line);border-radius:7px}.nickname-input{height:46px;border:1px solid var(--line);border-radius:8px;display:flex;align-items:center;padding:0 13px;gap:10px}.nickname-input:focus-within{border-color:#cdbce4}.nickname-input input{background:none;border:0;outline:none;width:100%;height:100%;font-size:12px}.nickname-input input::placeholder,.join-field input::placeholder{color:#b0a5b9}.nickname-input button{color:#b3a4c0;padding:4px}.primary{min-height:46px;padding:0 20px;border:1px solid #e0d4f1;border-radius:8px;background:var(--lavender);color:#6b5385;font-size:13px;font-weight:550;letter-spacing:.3px}.primary:hover:not(:disabled){background:#dfd2f2;border-color:#d1bde9}.create-button{width:100%;margin-top:28px;justify-content:space-between}.form-note{font-size:10px;line-height:1.9;text-align:center;color:#a599af;margin-top:12px}.recent-room{width:100%;justify-content:space-between;padding:15px 30px;border-top:1px solid var(--line);font-size:11px;color:#9b88b0}.recent-room span{display:flex;gap:8px;align-items:center;font-family:monospace;font-size:11px}.join-field{margin-top:25px}.join-field label{font-size:12px;display:block;margin-bottom:12px}.join-field input{width:100%;padding:13px;border:1px solid var(--line);border-radius:8px;font-size:12px}.inline-error{font-size:11px;line-height:1.8;padding:10px 12px;background:#fbf2ef;color:#aa796b;border-radius:7px;margin-top:15px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.room-intro{display:flex;justify-content:space-between;align-items:center;margin:37px 0 24px}.text-button{color:#9e90ab;font-size:11px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:22px;margin-bottom:25px}.game-card{border:1px solid var(--line);border-radius:13px;overflow:hidden;min-width:0}.room-top{display:flex;align-items:center;justify-content:space-between;padding:20px 23px 9px;gap:10px}.room-code{font-size:11px;color:#a093ad}.room-code b{font-family:monospace;font-size:13px;letter-spacing:1.5px;color:#806795;margin-left:6px;font-weight:500}.secondary{border:1px solid var(--line);border-radius:7px;padding:8px 11px;font-size:11px;color:#9882ad;background:#fff}.secondary:hover{background:var(--light)}.invite-url{font-size:9px;color:#b0a3ba;padding:0 23px 18px;overflow-wrap:anywhere;user-select:all}.progress-steps{padding:17px 20px;display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--light)}.progress-steps>div{display:flex;align-items:center;gap:6px;font-size:10px;color:#b6a9c0}.progress-steps>div>span{width:20px;height:20px;border-radius:50%;border:1px solid #e7dff0;display:grid;place-items:center;font-size:9px}.progress-steps .current{color:#806397}.progress-steps .current>span{background:var(--lavender);border-color:#d7c7eb}.progress-steps .complete{color:#a08ab3}.game-body{text-align:center;padding:39px 23px 35px;min-height:330px}.game-body h2{font-size:21px;font-weight:500;line-height:1.6;letter-spacing:.5px}.stage-description{font-size:11px;color:var(--muted);line-height:1.9;margin-top:11px}.player-seats{display:flex;justify-content:center;gap:10px;margin:28px 0 14px}.player-seat{min-width:0;flex:1;display:flex;flex-direction:column;align-items:center;gap:9px;padding:18px 6px;border:1px dashed #e5dced;border-radius:9px}.player-seat.filled{border-style:solid;background:var(--light);border-color:var(--line)}.avatar{width:42px;height:42px;border-radius:50%;background:var(--lavender);color:#9b80b4;display:grid;place-items:center;font-size:16px;flex-shrink:0}.player-seat:not(.filled) .avatar{background:#fff;border:1px dashed #e4daec;color:#c0afd0;font-size:23px}.player-seat b{font-size:11px;font-weight:500;overflow-wrap:anywhere;max-width:100%}.player-seat small{font-size:9px;color:#b0a1bc}.stage-button{min-width:240px;max-width:100%;margin-top:23px;gap:10px;font-size:12px}.room-sidebar{min-width:0}.companions{border:1px solid var(--line);border-radius:13px;padding:21px 18px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.section-heading h3{font-size:12px;font-weight:500}.section-heading>span{font-size:10px;color:#b1a2bd}.companion{display:flex;align-items:center;gap:9px;margin-top:21px}.avatar.small{width:31px;height:31px;font-size:12px}.companion>div{min-width:0}.companion b{font-size:10px;font-weight:500;display:flex;align-items:center;gap:5px;overflow-wrap:anywhere}.companion em{font-size:8px;font-style:normal;background:var(--light);color:#ab97ba;padding:1px 4px;white-space:nowrap}.companion>div>span{font-size:8px;display:block;margin-top:4px;color:#b3a5be}.player-state{margin-left:auto;font-size:8px;white-space:nowrap;color:#b1a1bd}.player-state.done{color:#9c82b2}.rules-link{margin-top:20px;font-size:11px;color:#b09cc0;width:100%}.round-eyebrow{font-size:11px;letter-spacing:1px;color:#b29ac4;margin-bottom:17px}.timer{margin:0 auto 23px;border-radius:50%;width:78px;height:78px;display:grid;place-items:center;background:conic-gradient(#c6afdf var(--progress),#f5f0fa 0);padding:3px;transform:rotate(-90deg)}.timer>div{transform:rotate(90deg);border-radius:50%;background:#fff;width:72px;height:72px;display:flex;align-items:baseline;justify-content:center;padding-top:18px;gap:3px}.timer strong{font-size:27px;font-weight:450;font-variant-numeric:tabular-nums;color:#a28abb}.timer span{font-size:9px;color:#b8a8c5}.timer.urgent{background:conic-gradient(#bba0cf var(--progress),#f5f0fa 0)}.word-input{display:flex;align-items:center;gap:8px;max-width:370px;height:61px;margin:25px auto 0;padding:5px 15px;background:#fff;border:1px solid #e7ddef;border-radius:8px}.word-input:focus-within{border-color:#c7acde;box-shadow:0 0 0 3px var(--light)}.word-input input{width:100%;height:100%;border:0;outline:none;background:none;text-align:center;font-size:23px;letter-spacing:2px;padding-left:23px;color:#8f6fa9}.word-input input::placeholder{font-size:16px;color:#c5b4d3}.word-input>span{font-size:9px;color:#baa9c8;font-family:monospace;white-space:nowrap}.word-input.locked{background:var(--light);color:#c4b0d4}.word-input input:disabled{-webkit-text-fill-color:#aa8fbd;opacity:1}.reveal-words{display:flex;flex-wrap:wrap;justify-content:center;gap:11px;margin:27px 0 4px}.reveal-word{min-width:100px;max-width:210px;flex:1;border:1px solid #e7ddef;border-radius:9px;background:var(--light);padding:19px 10px;display:flex;flex-direction:column;align-items:center;gap:19px}.reveal-word>span{font-size:10px;color:#b29ac1;overflow-wrap:anywhere;max-width:100%}.reveal-word>strong{font-size:23px;font-weight:500;letter-spacing:2px;overflow-wrap:anywhere;max-width:100%;color:#9476ac}.history{border:1px solid var(--line);border-radius:12px;margin:0 0 40px;overflow:hidden}.history .section-heading{padding:20px 23px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:center;font-size:11px}th{background:var(--light);color:#ac98bc;font-size:10px;font-weight:500;padding:13px;min-width:75px}td{border-top:1px solid var(--line);padding:17px 13px;max-width:180px;overflow-wrap:anywhere}.round-num{font-family:monospace;color:#ac98bc}.muted{font-size:10px;color:#b4a7bf}.match-label{font-size:10px;color:#9774b2}.connection-notice{font-size:11px;line-height:1.8;background:#fbf4ee;color:#b29175;padding:9px;text-align:center}.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--white);border:1px solid #e8ddf0;padding:14px 21px;border-radius:9px;box-shadow:0 6px 25px #70538412;font-size:12px;color:#9376a9;display:flex;align-items:center;gap:9px;z-index:80;max-width:90vw;width:max-content}.modal-backdrop{position:fixed;inset:0;background:#4d3f5e38;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:22px;z-index:90}.rules-modal{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;width:490px;max-width:100%;max-height:90vh;overflow:auto;padding:31px}.close-modal{position:absolute;top:15px;right:15px;color:#b5a1c4;padding:5px}.rules-modal h2{font-size:23px;font-weight:500}.rules-modal ol{margin:27px 0 0;padding-left:21px}.rules-modal li{padding-left:5px;color:#b49bc7;margin-bottom:20px}.rules-modal li b{color:#81698f;font-size:12px;font-weight:500}.rules-modal li p{font-size:11px;line-height:1.9;color:#a394ae;margin-top:6px}.modal-tip{display:flex;align-items:flex-start;gap:9px;background:var(--lavender);padding:13px;border-radius:8px;color:#ac92c0}.modal-tip p{font-size:10px;line-height:1.9;color:#9b80b0}.rules-modal>.primary{width:100%;margin-top:21px}
@media(max-width:760px){.site-shell{padding:0 23px}.topbar{height:71px}.brand-button{font-size:22px}.topbar nav{gap:22px}.nav-link{font-size:11px}.lobby{margin:33px auto 45px}.page-heading{margin-bottom:23px}.page-heading h1,.room-intro h1{font-size:23px}.page-heading p{font-size:11px;margin-top:10px}.setup-card form{padding:3px 22px 20px}.field-label{margin-top:24px}.player-options,.time-options{gap:9px}.player-option{height:64px;gap:7px}.player-option b{font-size:13px}.player-option>svg:first-child{width:17px}.card-tabs{padding:5px}.card-tabs button{height:41px;font-size:11px}.time-option{font-size:11px}.recent-room{padding:14px 22px;font-size:10px}.recent-room span{font-size:10px}.room-intro{margin:28px 0 22px}.text-button{font-size:10px}.game-layout{grid-template-columns:1fr;gap:17px}.room-top{padding:18px 17px 9px}.room-code{font-size:10px}.room-code b{font-size:12px}.secondary{font-size:10px;padding:8px 10px}.invite-url{padding:0 17px 16px;font-size:8px}.progress-steps{padding:16px 13px;gap:8px}.progress-steps>div{font-size:8px;gap:4px}.progress-steps>div>span{width:18px;height:18px;font-size:8px}.game-body{padding:31px 17px;min-height:320px}.game-body h2{font-size:19px}.stage-description{font-size:10px}.player-seats{gap:7px;margin-top:24px}.player-seat{padding:15px 4px;gap:8px}.player-seat b{font-size:10px}.player-seat small{font-size:8px}.avatar{width:35px;height:35px;font-size:13px}.stage-button{min-width:230px;font-size:11px}.companions{padding:21px}.companion{margin-top:17px}.companion b{font-size:11px}.companion>div>span,.player-state{font-size:9px}.room-sidebar .rules-link{margin-top:17px}.history .section-heading{padding:19px 17px}.reveal-word{min-width:calc(50% - 8px);max-width:200px;padding:18px 10px}.reveal-word strong{font-size:23px}.rules-modal{padding:28px 24px}.rules-modal h2{font-size:21px}.rules-modal li p{font-size:10px}.toast{font-size:11px;bottom:21px;padding:13px 18px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:760px){.nickname-input input,.join-field input,.custom-time input{font-size:16px}.nickname-input button{width:34px;height:40px;flex-shrink:0}.text-button{min-height:36px}.secondary{min-height:40px}}
