@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700&family=Playfair+Display:ital,wght@0,700;0,800;1,700&display=swap');
:root{--ink:#1f1c1a;--muted:#766f69;--paper:#fffaf3;--cream:#f5ecdf;--orange:#ff5722;--orange-dark:#df3d10;--line:#e9dfd3;--green:#187a59}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}.app-shell{max-width:640px;margin:auto;min-height:100vh;background:var(--paper)}header{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid var(--line)}.brand{color:var(--ink);font-family:'DM Mono';font-size:14px;font-weight:500;letter-spacing:1px;text-decoration:none;display:flex;align-items:center;gap:8px}.brand span{background:var(--orange);color:white;display:grid;place-items:center;border-radius:7px;font:bold 21px 'Playfair Display';width:29px;height:29px}.user-chip{border:0;background:none;font:500 14px 'DM Sans';color:var(--ink);cursor:pointer}.user-chip b{color:var(--orange);margin-left:7px}.page-head{padding:46px 24px 26px;position:relative}.page-head h1,.game-header h1{font:800 38px/1.03 'Playfair Display';letter-spacing:-1.5px;margin:7px 0}.eyebrow{font:500 11px 'DM Mono';letter-spacing:1.2px;color:var(--orange);margin:0}.create{position:absolute;right:24px;bottom:28px}.primary{background:var(--orange);border:0;border-radius:11px;color:#fff;padding:14px 18px;font:600 14px 'DM Sans';cursor:pointer;box-shadow:0 3px 0 var(--orange-dark)}.primary:hover{background:var(--orange-dark)}.primary b{font-size:18px;margin-left:12px}.game-list{padding:0 24px 40px;display:grid;gap:12px}.game-card{display:block;border:1px solid var(--line);border-radius:16px;padding:18px;text-decoration:none;color:var(--ink);transition:.15s;background:#fffdf9}.game-card:hover{border-color:#c9b9a9;transform:translateY(-1px)}.card-top{display:flex;justify-content:space-between;align-items:center}.card-top small{color:var(--muted);font:12px 'DM Mono'}.status{font:500 10px 'DM Mono';letter-spacing:.6px;color:var(--orange);background:#fff0e9;border-radius:10px;padding:5px 8px}.status.done{background:#e5f4ee;color:var(--green)}.game-card h2{font:700 21px 'Playfair Display';margin:15px 0 5px}.game-card p,.muted{margin:0;color:var(--muted);font-size:14px}.game-card p b{margin:0 5px;color:#d9cdc1}.mini-players{display:flex;margin-top:16px}.mini-players span,.avatar{display:inline-grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#f7d7c5;border:2px solid #fff;font:500 11px 'DM Mono';color:#9b391d;margin-left:-5px}.mini-players span:first-child{margin-left:0}.auth-card{padding:60px 30px 35px;max-width:440px;margin:auto}.hero-mark{width:65px;height:65px;display:grid;place-items:center;background:var(--orange);border-radius:18px;transform:rotate(-6deg);box-shadow:5px 5px 0 #f3c9af;margin-bottom:40px}.hero-mark span{font:800 47px 'Playfair Display';color:#fff}.auth-card h1{font:800 42px/1.04 'Playfair Display';letter-spacing:-1.5px;margin:9px 0 16px}.auth-card h1 i{color:var(--orange)}.auth-card .muted{line-height:1.5;margin-bottom:30px}form label{display:grid;gap:7px;font-size:13px;font-weight:600;margin-bottom:18px}input{width:100%;border:1px solid #d8ccbf;background:#fffdf9;border-radius:9px;padding:13px 14px;font:15px 'DM Sans';outline-color:var(--orange)}form .primary{width:100%;margin-top:5px}.tiny{text-align:center;color:var(--muted);font-size:11px;margin-top:24px}.compact{padding-top:28px;padding-left:72px}.back{border:0;background:var(--cream);border-radius:9px;width:38px;height:38px;color:var(--ink);font-size:21px;cursor:pointer}.compact .back{position:absolute;left:24px;top:28px}.form-page{padding:0 24px 50px}.form-heading{margin:36px 0 15px}.form-heading h2,.section-title h2{font:700 23px 'Playfair Display';margin:0 0 4px}.form-heading p,.section-title p{margin:0;color:var(--muted);font-size:13px}.invite-list{border-top:1px solid var(--line);margin-bottom:26px}.person{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line);cursor:pointer}.person input{width:18px;height:18px;order:3;margin-left:auto;accent-color:var(--orange)}.person .avatar{margin:0;width:35px;height:35px}.person b{font-size:19px;color:var(--orange);order:2;margin-left:auto}.person input:checked~b{display:none}.notice{padding:15px;background:#fff1e8;border-radius:10px;color:#8b4a31;font-size:13px;line-height:1.4;margin-bottom:25px}.empty{text-align:center;border:1px dashed #d8ccbf;border-radius:16px;padding:48px 25px;margin-top:14px}.empty div{font-size:38px;color:var(--orange)}.empty h2{font:700 22px 'Playfair Display';margin:12px 0 5px}.empty p{color:var(--muted);font-size:14px;margin:0 0 22px}.game-header{padding:27px 24px 24px;display:flex;gap:14px;align-items:flex-start}.game-header h1{font-size:31px}.dots{margin-left:auto;border:0;background:none;font-weight:bold;font-size:16px;letter-spacing:2px;color:var(--muted);padding:7px;cursor:pointer}.score-summary{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fffdf9}.score-summary div{padding:17px 14px;text-align:center;border-right:1px solid var(--line)}.score-summary div:last-child{border:0}.score-summary span{display:block;color:var(--muted);font:9px 'DM Mono';letter-spacing:.4px}.score-summary strong{font:700 24px 'Playfair Display';display:block;margin-top:4px}.table,.rounds{padding:28px 24px 0}.players{margin-top:16px;border-top:1px solid var(--line)}.player{display:flex;align-items:center;gap:12px;padding:13px 3px;border-bottom:1px solid var(--line)}.player .avatar{margin:0;width:39px;height:39px;font-size:13px}.player-name{display:grid;gap:3px;flex:1}.player-name strong{font-size:14px}.player-name strong small{color:var(--orange);font:9px 'DM Mono';margin-left:4px}.player-name span{font-size:12px;color:var(--muted)}.score{text-align:right;display:grid;line-height:1}.score b{font:700 25px 'Playfair Display'}.score small{font:9px 'DM Mono';color:var(--muted)}.add-score{margin-left:7px;border:0;background:var(--orange);color:#fff;border-radius:50%;width:29px;height:29px;font-size:21px;cursor:pointer}.out{opacity:.48;background:#faf7f3}.out .score b{text-decoration:line-through}.rounds{padding-bottom:42px}.rounds .section-title{margin-bottom:8px}.rounds>p{display:flex;justify-content:space-between;margin:0;padding:11px 0;border-bottom:1px solid var(--line);font-size:13px}.rounds>p span{color:var(--muted)}.rounds>p b{color:var(--orange)}.winner-banner{margin:6px 24px 0;background:#fff0cf;border:1px solid #f0d49b;padding:15px;border-radius:13px;display:flex;gap:12px;align-items:center}.winner-banner>span,.trophy{font-size:34px;color:#e79a00}.winner-banner small{color:#aa7216;font:10px 'DM Mono';letter-spacing:1px}.winner-banner strong{display:block;font:700 20px 'Playfair Display'}.winner-banner p{margin:1px 0 0;font-size:12px;color:#806b44}.modal-backdrop{position:fixed;inset:0;background:#2b1e1880;z-index:3;display:grid;place-items:center;padding:20px}.modal{position:relative;width:min(100%,390px);background:var(--paper);border-radius:18px;padding:32px 27px;text-align:center;box-shadow:0 20px 70px #29120b55}.modal h2{font:700 29px 'Playfair Display';margin:8px 0}.modal .muted{line-height:1.45;margin:0 0 22px}.modal input{font:700 42px 'Playfair Display';text-align:center;margin-bottom:20px}.close{position:absolute;right:12px;top:8px;border:0;background:none;font-size:26px;cursor:pointer;color:var(--muted)}.victory .modal{animation:pop .45s cubic-bezier(.18,.89,.32,1.28)}.confetti{color:var(--orange);letter-spacing:26px;font-size:20px;margin:0 0 5px 18px;animation:float 1.3s ease-in-out infinite alternate}.trophy{font-size:58px;line-height:1;margin-bottom:8px}@keyframes pop{from{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}@keyframes float{to{transform:translateY(-8px) rotate(5deg)}}@media(max-width:430px){.page-head h1,.auth-card h1{font-size:36px}.create{position:static;margin-top:20px}.page-head{padding-bottom:22px}}
