:root{--ink: #11120f;--ink-soft: #3c3f37;--paper: #f6f1e9;--accent: #d9512c;--accent-2: #0f5b5b;--accent-3: #e4b046;--shadow: rgba(17, 18, 15, .16);--card: rgba(255, 255, 255, .82);--glass: rgba(255, 255, 255, .7);--stroke: rgba(17, 18, 15, .12);--radius: 20px;--radius-lg: 28px;--font-display: "DM Serif Display", serif;--font-body: "Space Grotesk", sans-serif}*{box-sizing:border-box}body{margin:0;font-family:var(--font-body);color:var(--ink);background:radial-gradient(circle at top left,#ffe8c5,transparent 45%),radial-gradient(circle at 80% 20%,#d7f0ee,transparent 45%),linear-gradient(135deg,#f7f1e7,#f0e8dd);min-height:100vh}a{color:inherit;text-decoration:none}.page{min-height:100vh;padding:40px 6vw 60px;position:relative;overflow:hidden;background:radial-gradient(circle at top left,#ffe8c5,transparent 45%),radial-gradient(circle at 80% 20%,#d7f0ee,transparent 45%),linear-gradient(135deg,#f7f1e7,#f0e8dd);background-size:120% 120%;animation:bgFlow 20s ease-in-out infinite alternate}.page-animated{background:radial-gradient(circle at 15% 20%,#ffd9c2,transparent 38%),radial-gradient(circle at 85% 30%,#c8f0ff,transparent 38%),radial-gradient(circle at 40% 80%,#ffe0f0,transparent 45%),linear-gradient(135deg,#f4ede6,#f5efe7);background-size:140% 140%;animation:bgFlowSoft 16s ease-in-out infinite alternate}@keyframes bgFlow{0%{background-position:0% 0%}50%{background-position:100% 50%}to{background-position:0% 100%}}@keyframes bgFlowSoft{0%{background-position:0% 10%}50%{background-position:90% 60%}to{background-position:0% 90%}}.container{position:relative;z-index:1;max-width:1200px;margin:0 auto}.hero{display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}.title{font-family:var(--font-display);font-size:clamp(2.4rem,3vw + 1.6rem,4rem);margin:0 0 12px}.subtitle{color:var(--ink-soft);font-size:1.05rem;max-width:620px}.card{background:var(--card);border:1px solid var(--stroke);box-shadow:0 24px 60px var(--shadow);border-radius:var(--radius-lg);padding:28px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.grid{display:grid;gap:24px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.label{font-weight:600;font-size:.9rem;color:var(--ink-soft)}input,select{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--stroke);font-family:var(--font-body);font-size:1rem;background:#fff;transition:border-color .2s ease,box-shadow .2s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:#0f5b5b8c;box-shadow:0 0 0 3px #0f5b5b1f}textarea{width:100%;min-height:120px;padding:12px 14px;border-radius:12px;border:1px solid var(--stroke);font-family:var(--font-body);font-size:1rem;background:#fff;transition:border-color .2s ease,box-shadow .2s ease;resize:vertical}button{border:none;padding:12px 18px;border-radius:999px;font-family:var(--font-body);font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease}button:hover{transform:translateY(-2px);box-shadow:0 10px 24px #11120f1f}button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-primary{background:var(--accent);color:#fff}.btn-secondary{background:var(--accent-2);color:#fff}.btn-outline{background:transparent;border:1px solid var(--ink)}.badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:#ffffffb3;border:1px solid var(--stroke);font-size:.85rem}.ws-open{background:#0f5b5b26;border-color:#0f5b5b66}.ws-closed,.ws-error{background:#d9512c26;border-color:#d9512c66}.ws-connecting{background:#e4b04626;border-color:#e4b04673}.display-screen{display:grid;gap:28px}.scoreboard{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;padding:18px 24px;border-radius:var(--radius-lg);background:var(--glass);border:1px solid var(--stroke);box-shadow:inset 0 0 0 1px #fff6}.team-block{display:flex;flex-direction:column;gap:8px}.team-avatar{width:64px;height:64px;border-radius:16px;overflow:hidden;border:1px solid var(--stroke);background:#fff}.team-avatar img{width:100%;height:100%;object-fit:cover}.team-name{font-size:1.6rem;font-weight:600}.team-score{font-size:3rem;font-family:var(--font-display)}.center-block{text-align:center;font-size:1.1rem}.lock-pill{margin-top:8px;display:inline-flex;padding:6px 12px;border-radius:999px;background:#d9512c26;border:1px solid rgba(217,81,44,.4);font-size:.85rem}.tie-pill{margin-top:8px;display:inline-flex;padding:6px 12px;border-radius:999px;background:#e4b0462e;border:1px solid rgba(228,176,70,.5);font-size:.85rem}.winner{animation:winnerGlow 1.4s ease-in-out infinite;border-radius:16px;padding:8px 12px;background:linear-gradient(120deg,#fff4d6e6,#fff9)}@keyframes winnerGlow{0%{box-shadow:0 0 #e4b04633;transform:translateY(0)}50%{box-shadow:0 12px 30px #e4b04659;transform:translateY(-2px)}to{box-shadow:0 0 #e4b04633;transform:translateY(0)}}.bar-wrap{display:flex;height:26px;border-radius:999px;overflow:hidden;background:#11120f14}.bar-a{background:linear-gradient(90deg,#f1c75b,#e4b046)}.bar-b{background:linear-gradient(90deg,#0f5b5b,#1c7a73)}.qr-area{display:grid;gap:16px;place-items:center;text-align:center}.qr-box{background:#fff;padding:16px;border-radius:18px;border:1px solid var(--stroke)}.pill-row{display:flex;flex-wrap:wrap;gap:12px}.notice{padding:12px 16px;border-radius:12px;background:#ffffffb3;border:1px dashed var(--stroke)}.vote-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px}.vote-buttons.locked{opacity:.6}.vote-card{padding:24px;border-radius:18px;border:1px solid var(--stroke);background:#fff;display:grid;gap:12px}.vote-card h3{margin:0;font-size:1.2rem}.vote-card p{margin:0;color:var(--ink-soft)}.chat-window{height:280px;overflow-y:auto;border:1px solid var(--stroke);border-radius:16px;padding:12px;background:#fff;display:grid;gap:8px}.chat-empty{color:var(--ink-soft);text-align:center;padding:20px 0}.chat-line{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:8px 10px;border-radius:12px;background:#11120f0a}.chat-name{font-weight:600;font-size:.9rem;display:inline-flex;align-items:center;gap:8px}.chat-badge{font-size:.7rem;padding:2px 8px;border-radius:999px;background:#0f5b5b26}.chat-text{color:var(--ink-soft)}.chat-avatar{width:38px;height:38px;border-radius:50%;overflow:hidden;border:1px solid var(--stroke);background:#fff}.chat-avatar img{width:100%;height:100%;object-fit:cover}.chat-body{display:grid;gap:4px}.upload-field{margin-top:6px}.upload-btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:10px;background:#0f5b5b1f;border:1px solid rgba(15,91,91,.4);cursor:pointer;font-weight:600}.upload-btn input{display:none}.upload-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.avatar-preview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.avatar-preview{border-radius:16px;border:1px dashed var(--stroke);background:#fffc;min-height:140px;display:grid;place-items:center;overflow:hidden}.avatar-preview img{width:100%;height:100%;object-fit:cover}.avatar-preview.empty{color:var(--ink-soft);font-size:.9rem}.color-picker{display:grid;gap:12px}.color-presets{display:flex;flex-wrap:wrap;gap:10px}.color-swatch{width:28px;height:28px;border-radius:999px;border:2px solid rgba(17,18,15,.15);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.color-swatch.active{box-shadow:0 0 0 3px #11120f33;transform:scale(1.05)}.color-input-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.color-input{width:52px;height:44px;padding:0;border-radius:12px;border:1px solid var(--stroke);background:#fff}.color-text{min-width:120px;flex:1}.chat-form{display:grid;grid-template-columns:1fr auto;gap:12px;margin-top:12px}.admin-actions{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.list{margin:0;padding:0;list-style:none;display:grid;gap:8px}.list li{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:12px;background:#fff9;border:1px solid var(--stroke)}.tag{margin-left:8px;padding:2px 8px;border-radius:999px;background:#11120f14;font-size:.75rem}.fade-in{animation:fadeIn .6s ease both}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.admin-layout{display:grid;grid-template-columns:240px 1fr;gap:24px;align-items:start;position:relative}.admin-sidebar{position:sticky;top:24px;height:fit-content}.admin-nav{display:grid;gap:10px;margin-top:16px}.admin-tab-btn{border-radius:14px;padding:10px 14px;text-align:left;background:#fff9;border:1px solid var(--stroke);font-weight:600;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.admin-tab-btn.active{background:#d9512c26;border-color:#d9512c66}.admin-content .hero{margin-bottom:16px}.admin-bottom-nav{display:none}@media (max-width: 760px){.scoreboard{grid-template-columns:1fr;text-align:center}.team-block{align-items:center}.admin-layout{grid-template-columns:1fr;padding-bottom:70px}.admin-sidebar{display:none}.admin-bottom-nav{position:fixed;bottom:16px;left:16px;right:16px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:10px;border-radius:18px;background:#ffffffd9;border:1px solid var(--stroke);box-shadow:0 18px 40px #11120f33}.admin-bottom-nav .admin-tab-btn{text-align:center;padding:8px 6px;font-size:.8rem}}.spinner{width:56px;height:56px;border:6px solid rgba(17,18,15,.12);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loader-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#f6f1e9b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:999}.lock-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:900;pointer-events:none;opacity:0;transform:translateY(-16px);transition:opacity .3s ease,transform .3s ease;background:#f6f1e9bf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lock-overlay.visible{opacity:1;transform:translateY(0);pointer-events:auto}.lock-card{display:grid;gap:12px;padding:18px;border-radius:18px;background:#ffffffeb;border:1px solid var(--stroke);box-shadow:0 16px 40px #0000001f;text-align:center}.lock-icon{font-size:3rem;line-height:1}.lock-text{font-size:1.2rem;font-weight:600;color:var(--ink)}.footer{margin-top:32px;text-align:center;color:var(--ink-soft);font-size:.95rem}.overlay-panel{position:fixed;top:0;left:0;right:0;padding:10px 18px;z-index:850;pointer-events:none;opacity:0;transform:translateY(-20px);transition:opacity .3s ease,transform .3s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.overlay-panel.visible{opacity:1;transform:translateY(0);pointer-events:auto}.banner-overlay-inner,.qr-overlay-inner{max-width:1200px;margin:0 auto;background:#ffffffeb;border:1px solid var(--stroke);box-shadow:0 8px 20px #00000014;border-radius:16px;padding:10px 14px;display:flex;align-items:center;gap:12px}.banner-text{font-weight:600;color:var(--ink)}.banner-preview{border-radius:14px;border:1px solid var(--stroke);padding:10px 14px;background:#ffffffb3}.banner-preview-inner{font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:1200;padding:20px;opacity:0;transform:translateY(-10px);transition:opacity .25s ease,transform .25s ease}.modal-backdrop.show{opacity:1;transform:translateY(0)}.modal-card{background:#fff;border-radius:16px;border:1px solid var(--stroke);box-shadow:0 24px 60px #00000040;padding:20px 24px;max-width:360px;width:min(90vw,360px);display:grid;gap:12px;opacity:0;transform:translateY(-14px);transition:opacity .25s ease,transform .25s ease}.modal-card.show{opacity:1;transform:translateY(0)}.modal-title{font-weight:700;font-size:1.1rem}.modal-body{color:var(--ink-soft);line-height:1.5}.modal-actions{display:flex;justify-content:flex-end;gap:10px}.phase-progress{position:relative;height:10px;border-radius:999px;background:#11120f14;overflow:hidden}.phase-progress-bar{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#f1c75b,#1c7a73)}.phase-label-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:8px}.phase-label{text-align:center;font-weight:600;font-size:.9rem;color:#11120f73}.phase-label.active{color:#0f5b5b}.phase-label.done{color:#d9512c}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--stroke);background:#fff;font-size:1rem;font-family:var(--font-body);background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 18px) center,calc(100% - 12px) center;background-size:6px 6px,6px 6px;background-repeat:no-repeat}.select-root{position:relative;width:100%}.select-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid var(--stroke);background:#fff;font-size:1rem;font-family:var(--font-body)}.select-placeholder{color:var(--ink-soft)}.select-caret{width:8px;height:8px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(45deg);transition:transform .2s ease}.select-caret.open{transform:rotate(225deg)}.select-menu{position:absolute;left:0;right:0;top:calc(100% + 8px);background:#fff;border:1px solid var(--stroke);border-radius:14px;box-shadow:0 18px 40px #11120f2e;padding:6px;display:grid;gap:4px;z-index:50}.select-option{text-align:left;padding:10px 12px;border-radius:10px;background:transparent}.select-option:hover{background:#d9512c1f}.select-option.active{background:#d9512c33}.select-root.disabled .select-trigger{opacity:.6;cursor:not-allowed}.tab-panel{animation:panelIn .45s ease both}@keyframes panelIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.page .container{animation:pageEnter .5s ease both}@keyframes pageEnter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.qr-full-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#f6f1e9b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:880;opacity:0;transform:translateY(-18px);pointer-events:none;transition:opacity .3s ease,transform .3s ease}.qr-full-overlay.visible{opacity:1;transform:translateY(0);pointer-events:auto}.qr-full-inner{display:grid;gap:14px;padding:18px;border-radius:18px;background:#ffffffeb;border:1px solid var(--stroke);box-shadow:0 16px 40px #0000001f;text-align:center}
