:root{--bg-color: #050811;--gold-color: #D4AF37;--gold-glow: 0 0 10px rgba(212, 175, 55, .5);--grid-bg: rgba(20, 30, 50, .8);--text-light: #E0E0E0}body{margin:0;padding:0;background-color:var(--bg-color);background-image:radial-gradient(circle at center,#0f172a,#000);color:var(--gold-color);font-family:Cinzel,serif;display:flex;flex-direction:column;align-items:center;min-height:100vh;overflow-x:hidden;user-select:none;-webkit-user-select:none}.top-controls{position:absolute;top:15px;right:15px;display:flex;gap:10px;z-index:1000}.header-btn{background:#00000080;border:1px solid var(--gold-color);color:var(--gold-color);padding:5px 15px;font-family:Cinzel,serif;cursor:pointer;border-radius:4px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);transition:background .2s}.header-btn:hover{background:#d4af3733}.icon-btn{padding:6px 10px;display:flex;align-items:center;justify-content:center}.icon-btn svg{display:block}h1{font-size:2.5rem;margin:15px 0 5px;letter-spacing:5px;text-shadow:var(--gold-glow);text-align:center}.screen{display:none;flex-direction:column;align-items:center;width:100%;max-width:500px;padding:20px;box-sizing:border-box}.screen.active{display:flex}.setup-box{background:#0009;border:1px solid var(--gold-color);padding:20px;border-radius:10px;width:100%;text-align:center;box-shadow:0 0 20px #d4af3733;margin-top:20px}.player-count-btns{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:15px 0}.num-btn{background:transparent;border:1px solid var(--gold-color);color:var(--gold-color);padding:10px 15px;font-family:Cinzel,serif;cursor:pointer;border-radius:5px}.num-btn.selected{background:#d4af374d;box-shadow:var(--gold-glow)}.player-inputs{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.player-inputs input{background:#ffffff0d;border:1px solid rgba(212,175,55,.5);color:#fff;padding:10px;font-family:Cinzel,serif;text-align:center;font-size:1.1rem;border-radius:4px}.player-inputs input:focus{outline:none;border-color:var(--gold-color);box-shadow:var(--gold-glow)}.status-bar{font-size:1.2rem;margin-bottom:10px;color:var(--text-light);text-align:center}.current-player-name{font-size:1.5rem;color:var(--gold-color);text-shadow:var(--gold-glow);margin-bottom:5px;font-weight:700;margin-top:20px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:15px;width:100%;max-width:300px;position:relative}.grid-cell{background:var(--grid-bg);border:1px solid rgba(212,175,55,.3);aspect-ratio:1;display:flex;justify-content:center;align-items:center;font-size:1.8rem;font-weight:700;color:#ffffff4d;border-radius:8px;transition:all .3s ease;box-shadow:inset 0 0 10px #000c}.grid-cell.active{color:var(--gold-color);border-color:var(--gold-color);box-shadow:0 0 15px #d4af3799,inset 0 0 15px #d4af3733;text-shadow:0 0 8px var(--gold-color)}.grid-cell.trinity{box-shadow:0 0 25px #d4af37cc,inset 0 0 20px #d4af3780}.grid-cell.ordered-trinity{box-shadow:0 0 35px #0ff,inset 0 0 25px #0ff;color:#0ff;border-color:#0ff}.grid-cell.quad{box-shadow:0 0 50px #f0f,inset 0 0 30px #f0f;color:#f0f;border-color:#f0f}.controls{display:flex;flex-direction:column;align-items:center;width:100%;gap:10px}.mode-selector{display:flex;gap:10px;margin-bottom:5px;justify-content:center;flex-wrap:wrap}.mode-btn{background:transparent;border:1px solid var(--gold-color);color:var(--gold-color);padding:8px 15px;font-family:Cinzel,serif;cursor:pointer;border-radius:4px;transition:all .2s}.mode-btn.selected{background:#d4af3733;box-shadow:var(--gold-glow)}.primary-btn{background:linear-gradient(135deg,#b8860b,#d4af37,#b8860b);color:#000;border:none;padding:15px 40px;font-size:1.5rem;font-weight:700;font-family:Cinzel,serif;cursor:pointer;border-radius:50px;box-shadow:0 4px 15px #d4af3766;transition:transform .1s,box-shadow .1s}.primary-btn:active{transform:scale(.95)}.primary-btn:disabled{background:#555;color:#222;cursor:not-allowed;box-shadow:none}#dice-canvas-container{width:100%;height:200px;margin-bottom:10px;display:flex;justify-content:center;align-items:center;position:relative}#three-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}#dice-result-overlay{position:absolute;z-index:20;font-size:4rem;color:var(--gold-color);text-shadow:0 0 20px #000,0 0 30px var(--gold-color);opacity:0;pointer-events:none;transition:opacity .3s}#message-area{height:30px;color:#fff;text-shadow:0 0 5px var(--gold-color);margin-bottom:10px;font-size:1.2rem;font-weight:700;text-align:center}.history-box{width:100%;max-width:350px;background:#00000080;border:1px solid rgba(212,175,55,.3);border-radius:8px;padding:10px;margin-bottom:15px;height:120px;overflow-y:auto;font-family:sans-serif;font-size:.9rem;color:#ccc}.history-box::-webkit-scrollbar{width:5px}.history-box::-webkit-scrollbar-thumb{background:#d4af3780;border-radius:5px}.history-entry{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px dashed rgba(255,255,255,.1)}.history-entry span.score-highlight{color:var(--gold-color);font-weight:700}.history-entry.forfeited{opacity:.35;text-decoration:line-through}.history-entry.header-row{color:#888;font-size:.8rem;border-bottom:1px solid rgba(212,175,55,.35)}#quad-dialog{display:none;position:absolute;top:80px;left:50%;transform:translate(-50%);width:90%;max-width:400px;z-index:100;flex-direction:column;align-items:center}.quad-box{background:#0a0f19f2;border:2px solid var(--gold-color);padding:25px;text-align:center;border-radius:10px;box-shadow:0 0 30px #d4af37cc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:100%;box-sizing:border-box}.quad-box h2{color:#0ff;text-shadow:0 0 10px #00ffff;margin-top:0;font-size:1.5rem}.quad-btn-group{display:flex;gap:15px;margin-top:20px;justify-content:center;flex-wrap:wrap}.quad-btn{padding:10px 20px;font-family:Cinzel,sans-serif;font-size:1rem;cursor:pointer;background:#00000080;color:var(--gold-color);border:1px solid var(--gold-color);border-radius:5px}.quad-btn:hover{background:#d4af3733}.quad-btn.risk{border-color:#f44;color:#f44}.quad-btn.risk:hover{background:#f003}#confirm-dialog,#player-left-dialog{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:2000;flex-direction:column;justify-content:center;align-items:center}.confirm-box{background:#111;border:1px solid var(--gold-color);padding:30px;text-align:center;border-radius:10px;box-shadow:0 0 20px #d4af374d;font-family:sans-serif;color:#fff}.confirm-box h3{margin-top:0;color:var(--gold-color);font-family:Cinzel,serif}.confirm-btn-group{display:flex;gap:15px;margin-top:20px;justify-content:center}.confirm-btn{padding:8px 20px;font-size:1rem;cursor:pointer;background:transparent;color:#ccc;border:1px solid #555;border-radius:5px}.confirm-btn.yes{color:#f44;border-color:#f44}#scorecard-container{width:100%;max-width:600px;background:#0a0a0a;background-image:radial-gradient(circle at center,#151a25,#050505);border:2px solid var(--gold-color);padding:30px;box-sizing:border-box;border-radius:10px;color:#fff;position:relative;margin-bottom:20px;margin-top:20px}.scorecard-header{text-align:center;margin-bottom:20px;border-bottom:1px solid rgba(212,175,55,.5);padding-bottom:15px}.scorecard-header h2{font-size:2rem;color:var(--gold-color);margin:0 0 5px;text-shadow:0 0 15px rgba(212,175,55,.8)}.scorecard-header .timestamp{font-size:.9rem;color:#888;font-family:sans-serif}.scorecard-header .team-total{font-size:1.2rem;color:#0ff;font-family:sans-serif;margin-top:8px}.players-grid{display:flex;flex-direction:column;gap:20px}.player-card{background:#ffffff08;border:1px solid rgba(212,175,55,.2);border-radius:8px;padding:15px}.player-header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px dashed rgba(212,175,55,.3);padding-bottom:10px;margin-bottom:10px}.player-name{font-size:1.8rem;color:var(--gold-color);margin:0}.player-total{font-size:2.2rem;font-weight:700;color:#fff;text-shadow:0 0 10px var(--gold-color)}.player-xp{font-family:sans-serif;font-size:.9rem;color:#0ff;margin-top:4px}.round-log-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:5px;font-family:sans-serif;font-size:.85rem;color:#bbb}.round-log-item{display:flex;justify-content:space-between;background:#0000004d;padding:4px 8px;border-radius:3px}.round-log-item span.pts{color:var(--gold-color);font-weight:700}.error-text{color:#f66;font-family:sans-serif;font-size:.9rem;min-height:20px;margin-bottom:8px}.auth-links{display:flex;justify-content:space-between;margin-top:15px;font-family:sans-serif}.auth-links a{color:#aaa;text-decoration:none;font-size:.9rem}.auth-links a:hover{color:var(--gold-color)}.profile-bar{display:flex;gap:15px;align-items:center;justify-content:center;font-family:sans-serif;color:var(--text-light);margin-top:10px;font-size:.95rem}.profile-bar .lv-badge{background:#d4af3733;border:1px solid var(--gold-color);border-radius:10px;padding:2px 10px;color:var(--gold-color);font-weight:700}.xp-bar-outer{width:120px;height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden}.xp-bar-inner{height:100%;background:linear-gradient(90deg,#b8860b,#d4af37)}.lobby-btns{display:flex;flex-direction:column;gap:12px;margin-bottom:15px}.lobby-btn{font-size:1.1rem;padding:12px 20px}.join-row{display:flex;gap:10px;justify-content:center;align-items:stretch;margin-bottom:5px}.join-row input{background:#ffffff0d;border:1px solid rgba(212,175,55,.5);color:#fff;padding:8px;font-family:Cinzel,serif;text-align:center;font-size:1.1rem;border-radius:4px;width:140px;letter-spacing:3px}.room-code{color:#0ff;letter-spacing:5px;text-shadow:0 0 10px #00ffff}.room-players{display:flex;flex-direction:column;gap:8px;margin:15px 0;font-family:sans-serif}.room-player-row{display:flex;justify-content:space-between;background:#ffffff0d;padding:8px 15px;border-radius:5px;color:var(--text-light)}.room-player-row .host-tag{color:var(--gold-color);font-size:.85rem}.room-player-row.offline{opacity:.4}.score-swiper{display:flex;width:100%;max-width:350px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-bottom:2px}.score-swiper::-webkit-scrollbar{display:none}.score-swiper{cursor:grab}.score-swiper.dragging{scroll-snap-type:none;cursor:grabbing}.score-page{flex:0 0 100%;scroll-snap-align:center;margin-bottom:0;box-sizing:border-box}.score-page+.score-page{margin-left:8px}.swiper-dots{display:flex;gap:6px;justify-content:center;margin:8px 0 12px}.swiper-dots .dot{width:10px;height:10px;border-radius:50%;background:#d4af374d;cursor:pointer;padding:2px}.swiper-dots .dot.active{background:var(--gold-color)}.team-score{color:var(--gold-color);font-weight:700}#dice-canvas-container.rollable{cursor:pointer}#dice-canvas-container.rollable #three-canvas{filter:drop-shadow(0 0 6px rgba(212,175,55,.45))}.grid.rollable{cursor:pointer}.turn-timer{color:#f44;font-weight:700;margin-left:10px;font-family:sans-serif}.online-scores{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;font-family:sans-serif;font-size:.85rem;margin-bottom:8px;max-width:400px}.online-score-chip{background:#00000080;border:1px solid rgba(212,175,55,.3);padding:3px 10px;border-radius:12px;color:#ccc}.online-score-chip.current{border-color:#0ff;color:#0ff;box-shadow:0 0 8px #0ff6}.online-score-chip.forfeited{opacity:.35;text-decoration:line-through}.lb-list{font-family:sans-serif;margin:15px 0;max-height:350px;overflow-y:auto}.lb-row{display:flex;justify-content:space-between;gap:10px;padding:7px 12px;border-bottom:1px dashed rgba(255,255,255,.1);color:var(--text-light);font-size:.95rem}.lb-row .rank{color:var(--gold-color);font-weight:700;width:30px;text-align:left}.lb-row .lb-name{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-row .lb-score{color:var(--gold-color);font-weight:700}.rules-box{text-align:left;max-height:65vh;overflow-y:auto}.rules-content{font-family:sans-serif;font-size:.95rem;color:var(--text-light);line-height:1.6}.rules-content h3{color:var(--gold-color);font-family:Cinzel,serif;margin:14px 0 6px}.rules-content h3:first-child{margin-top:0}.rules-content p{margin:6px 0}.rules-content b{color:var(--gold-color)}@media(max-width:480px){body{zoom:.88}.screen{padding:16px 22px}h1{font-size:2.2rem;letter-spacing:4px}.primary-btn{font-size:1.3rem;padding:13px 32px}}
