/* PIXIER — Nintendo Pixel Art Theme v4
   Canvas-first. Compact topbar with menu. Floating dock. Leaderboard. Game phases. */
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Nunito:wght@400;600;700;800&display=swap');
:root {
    --red:#e60012;--blue:#049cd8;--yellow:#fbd000;--green:#43b047;
    --sky:#63cdff;--coin:#ffc107;--bg:#1a1c2e;--bg2:#252842;--bg-card:rgba(37,40,66,0.92);
    --text:#f5f5f5;--text2:#a0a4c4;--text3:#6b6f94;
    --border:rgba(255,255,255,0.08);--border-hi:rgba(99,205,255,0.3);
    --r:8px;--r-lg:12px;
    --pix:'Press Start 2P',monospace;--body:'Nunito',system-ui,sans-serif;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
body{font-family:var(--body);background:var(--bg);color:var(--text);height:100vh;overflow:hidden;line-height:1.5}
body::before{content:'';position:fixed;inset:0;background-image:linear-gradient(rgba(255,255,255,0.012) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.012) 1px,transparent 1px);background-size:24px 24px;pointer-events:none;z-index:0}

/* ── TOPBAR ── */
.topbar{position:fixed;top:0;left:0;right:0;height:46px;display:flex;align-items:center;justify-content:space-between;padding:0 0.75rem;background:var(--bg-card);backdrop-filter:blur(16px);border-bottom:2px solid var(--border);z-index:800;gap:0.5rem}
.logo{font-family:var(--pix);font-size:0.75rem;color:var(--yellow);cursor:default;user-select:none;white-space:nowrap;text-shadow:2px 2px 0 rgba(0,0,0,0.4);flex-shrink:0}
.topbar-center{display:flex;align-items:center;gap:0.4rem;flex:1;justify-content:center;min-width:0}
.topbar-center input{font-family:var(--body);padding:0.25rem 0.5rem;border:2px solid var(--border);border-radius:var(--r);background:var(--bg2);color:var(--text);font-size:0.75rem;width:110px}
.topbar-center input:focus{outline:none;border-color:var(--sky)}
.topbar-center select{font-family:var(--body);padding:0.2rem 0.3rem;border:2px solid var(--border);border-radius:var(--r);background:var(--bg2);color:var(--text);font-size:0.7rem}
.topbar-user{display:flex;align-items:center;gap:0.4rem;font-family:var(--pix);font-size:0.5rem;color:var(--green);text-shadow:1px 1px 0 rgba(0,0,0,0.3)}
.topbar-right{display:flex;align-items:center;gap:0.6rem;flex-shrink:0}
.mini-stat{display:flex;flex-direction:column;align-items:center;line-height:1}
.mini-stat-label{font-size:0.42rem;color:var(--text3);text-transform:uppercase;letter-spacing:0.05em}
.mini-stat-val{font-family:var(--pix);font-size:0.5rem;color:var(--coin);text-shadow:1px 1px 0 rgba(0,0,0,0.3)}
/* Menu hamburger in topbar */
.menu-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:transparent;border:2px solid var(--border);border-radius:var(--r);cursor:pointer;font-size:1rem;color:var(--text2);transition:all .15s}
.menu-btn:hover,.menu-btn.active{background:rgba(99,205,255,0.1);border-color:var(--sky);color:var(--sky)}

/* ── BUTTONS ── */
.btn{font-family:var(--body);padding:0.3rem 0.75rem;border:none;border-radius:var(--r);font-size:0.72rem;font-weight:700;cursor:pointer;transition:all .12s;display:inline-flex;align-items:center;gap:0.25rem;text-shadow:1px 1px 0 rgba(0,0,0,0.15)}
.btn:active{transform:scale(0.95)}.btn:disabled{opacity:0.4;cursor:not-allowed;transform:none!important}
.btn-red{background:var(--red);color:#fff;border-bottom:3px solid #aa0000}
.btn-blue{background:var(--blue);color:#fff;border-bottom:3px solid #0370a0}
.btn-green{background:var(--green);color:#fff;border-bottom:3px solid #2e8031}
.btn-yellow{background:var(--yellow);color:var(--bg);border-bottom:3px solid #c9a200}
.btn-ghost{background:rgba(255,255,255,0.05);color:var(--text2);border:2px solid var(--border)}
.btn-sm{padding:0.2rem 0.5rem;font-size:0.65rem}
.btn-red:hover:not(:disabled),.btn-blue:hover:not(:disabled),.btn-green:hover:not(:disabled),.btn-yellow:hover:not(:disabled){filter:brightness(1.12)}

/* ── TEAM BADGES ── */
.team-badge{font-family:var(--pix);font-size:0.4rem;padding:0.12rem 0.4rem;border-radius:100px}
.team-red{background:rgba(230,0,18,0.2);color:#ff6666;border:1px solid rgba(230,0,18,0.4)}
.team-blue{background:rgba(4,156,216,0.2);color:#66ccff;border:1px solid rgba(4,156,216,0.4)}
.team-green{background:rgba(67,176,71,0.2);color:#88dd88;border:1px solid rgba(67,176,71,0.4)}
.team-yellow{background:rgba(251,208,0,0.2);color:#ffee66;border:1px solid rgba(251,208,0,0.4)}

/* ── CANVAS ── */
.canvas-viewport{position:fixed;top:46px;left:0;right:0;bottom:0;overflow:hidden;z-index:1;display:flex;align-items:center;justify-content:center;background:#0d0e1a}
#pixelCanvas{display:block;image-rendering:pixelated;image-rendering:crisp-edges;transform-origin:0 0;border:3px solid var(--border-hi);border-radius:4px;box-shadow:0 0 40px rgba(99,205,255,0.06);cursor:crosshair;max-width:calc(100vw - 1rem);max-height:calc(100vh - 46px - 70px - 1rem)}
.coord-tooltip{position:absolute;bottom:8px;left:8px;z-index:10;background:rgba(26,28,46,0.9);color:var(--sky);padding:0.1rem 0.4rem;border-radius:4px;font-size:0.55rem;font-family:var(--pix);pointer-events:none;border:1px solid var(--border-hi)}
.zoom-bar{position:absolute;top:6px;right:6px;z-index:10;display:flex;gap:0.15rem;align-items:center;background:rgba(26,28,46,0.9);padding:0.15rem 0.3rem;border-radius:100px;border:1px solid var(--border)}
.zoom-bar span{font-family:var(--pix);font-size:0.45rem;color:var(--sky);min-width:2rem;text-align:center}
.zoom-btn{padding:0.12rem 0.3rem;font-size:0.6rem;min-width:1.3rem;border-radius:100px}

/* ── FLOATING DOCK (cooldown + palette + tools) ── */
.dock{position:fixed;bottom:0.6rem;left:50%;transform:translateX(-50%);z-index:600;display:flex;align-items:center;gap:0.2rem;background:var(--bg-card);backdrop-filter:blur(16px);border:2px solid var(--border);border-radius:100px;padding:0.3rem 0.5rem;box-shadow:0 6px 24px rgba(0,0,0,0.4);max-width:calc(100vw - 1rem);overflow-x:auto;scrollbar-width:none}
.dock::-webkit-scrollbar{display:none}
.color-opt{width:26px;height:26px;border:2px solid transparent;border-radius:50%;cursor:pointer;transition:all .12s;flex-shrink:0}
.color-opt:hover{transform:scale(1.15)}.color-opt.sel{transform:scale(1.25);border-color:#fff;box-shadow:0 0 8px rgba(255,255,255,0.4)}
.dock-sep{width:2px;height:22px;background:var(--border);margin:0 0.1rem;flex-shrink:0;border-radius:1px}
.tool-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:2px solid transparent;border-radius:50%;font-size:0.95rem;cursor:pointer;transition:all .12s;flex-shrink:0}
.tool-btn.active{background:rgba(99,205,255,0.12);border-color:var(--sky);box-shadow:0 0 8px rgba(99,205,255,0.2)}
.cooldown-chip{font-family:var(--pix);font-size:0.5rem;color:var(--text2);padding:0.2rem 0.5rem;white-space:nowrap;flex-shrink:0;position:sticky;left:0;z-index:1;background:var(--bg-card);border-radius:100px}
.cooldown-chip.active{color:var(--coin);background:rgba(251,208,0,0.12);animation:blink 1s ease infinite}
@keyframes blink{50%{opacity:.6}}

/* ── SIDE DRAWER ── */
.side-drawer{position:fixed;top:46px;right:0;width:300px;height:calc(100vh - 46px);overflow-y:auto;display:flex;flex-direction:column;gap:0.5rem;padding:0.65rem;background:var(--bg-card);backdrop-filter:blur(20px);border-left:2px solid var(--border);z-index:500;transform:translateX(100%);transition:transform .3s cubic-bezier(.16,1,.3,1);scrollbar-width:thin;scrollbar-color:var(--sky) var(--bg2)}
.side-drawer.open{transform:translateX(0);box-shadow:-6px 0 30px rgba(0,0,0,0.4)}
.card{background:rgba(37,40,66,0.5);border:1px solid var(--border);border-radius:var(--r-lg);padding:0.75rem}
.card h3{font-family:var(--pix);font-size:0.5rem;color:var(--coin);margin-bottom:0.45rem;text-shadow:1px 1px 0 rgba(0,0,0,0.3)}
.scroll-list{max-height:180px;overflow-y:auto}

/* Leaderboard */
.lb-row{display:flex;justify-content:space-between;align-items:center;padding:0.3rem 0;border-bottom:1px solid var(--border);font-size:0.72rem}
.lb-row:last-child{border:none}
.lb-rank{font-family:var(--pix);font-size:0.45rem;color:var(--coin);width:1.5rem;text-align:center}
.lb-name{flex:1;font-weight:600;color:var(--sky);margin:0 0.3rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-score{font-family:var(--pix);font-size:0.42rem;color:var(--green)}
.lb-bar{height:4px;border-radius:2px;margin-top:0.15rem;transition:width .5s ease}
.user-item{display:flex;justify-content:space-between;align-items:center;padding:0.3rem 0;border-bottom:1px solid var(--border);font-size:0.75rem}.user-item:last-child{border:none}
.user-name{color:var(--sky);font-weight:600}.user-stat{font-family:var(--pix);font-size:0.42rem;color:var(--green)}
.log-entry{font-size:0.68rem;color:var(--text3);margin-bottom:0.3rem}.log-entry .ts{font-family:var(--pix);font-size:0.42rem;color:var(--blue)}.log-entry .you{color:var(--green);font-weight:700}

/* ── GAME PHASE BANNER ── */
.phase-banner{position:fixed;top:52px;left:50%;transform:translateX(-50%);z-index:700;background:var(--yellow);color:var(--bg);padding:0.35rem 1.25rem;border-radius:0 0 var(--r-lg) var(--r-lg);font-family:var(--pix);font-size:0.5rem;box-shadow:0 4px 16px rgba(251,208,0,0.3);border:2px solid var(--yellow);border-top:none;text-shadow:none;animation:dropIn .4s cubic-bezier(.16,1,.3,1)}
@keyframes dropIn{from{transform:translateX(-50%) translateY(-100%)}to{transform:translateX(-50%) translateY(0)}}

/* ── GAME OVER OVERLAY ── */
.gameover-overlay{position:fixed;inset:0;background:rgba(13,14,26,0.92);backdrop-filter:blur(10px);z-index:2000;display:none;align-items:center;justify-content:center;flex-direction:column;gap:1rem;animation:fadeIn .3s ease}
.gameover-overlay.open{display:flex}
.gameover-title{font-family:var(--pix);font-size:1.2rem;color:var(--yellow);text-shadow:3px 3px 0 rgba(0,0,0,0.4);text-align:center;animation:bounceTitle 0.6s ease}
@keyframes bounceTitle{0%{transform:scale(0.3);opacity:0}60%{transform:scale(1.1)}100%{transform:scale(1);opacity:1}}
.gameover-box{background:var(--bg2);border:3px solid var(--coin);border-radius:var(--r-lg);padding:1.5rem;max-width:500px;width:90vw;max-height:70vh;overflow-y:auto;text-align:center}
.gameover-box h3{font-family:var(--pix);font-size:0.55rem;color:var(--sky);margin:0.75rem 0 0.4rem}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ── CONFETTI (CSS-only) ── */
.confetti{position:fixed;top:-10px;width:8px;height:8px;border-radius:1px;z-index:2001;animation:confettiFall linear forwards;pointer-events:none}
@keyframes confettiFall{0%{transform:translateY(0) rotate(0deg);opacity:1}100%{transform:translateY(100vh) rotate(720deg);opacity:0}}

/* ── TOASTS ── */
.toast-container{position:fixed;top:52px;right:0.5rem;z-index:9999;display:flex;flex-direction:column;gap:0.3rem;pointer-events:none}
.toast{padding:0.4rem 0.85rem;border-radius:var(--r);font-family:var(--pix);font-size:0.45rem;max-width:280px;pointer-events:auto;border-bottom:3px solid rgba(0,0,0,0.2);animation:toastIn .3s cubic-bezier(.16,1,.3,1),toastOut .3s ease 3.7s forwards}
.toast-success{background:var(--green);color:#fff}.toast-error{background:var(--red);color:#fff}
.toast-warning{background:var(--yellow);color:var(--bg)}.toast-info{background:var(--blue);color:#fff}
@keyframes toastIn{from{opacity:0;transform:translateX(60px)}to{opacity:1;transform:translateX(0)}}
@keyframes toastOut{from{opacity:1}to{opacity:0;transform:translateY(-15px)}}
.error-bar{position:fixed;top:52px;left:50%;transform:translateX(-50%);z-index:850;background:var(--red);color:#fff;padding:0.4rem 1rem;border-radius:var(--r);font-size:0.75rem;font-weight:700;border-bottom:3px solid #aa0000;box-shadow:0 4px 16px rgba(230,0,18,0.3);animation:toastIn .2s ease;max-width:90vw;text-align:center}

/* ── ADMIN OVERLAY ── */
.admin-overlay{position:fixed;inset:0;background:rgba(13,14,26,0.88);backdrop-filter:blur(8px);z-index:900;display:none;align-items:center;justify-content:center;animation:fadeIn .2s ease}
.admin-overlay.open{display:flex}
.admin-panel{background:var(--bg2);border:2px solid var(--border);border-radius:var(--r-lg);padding:1.25rem;width:90vw;max-width:780px;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,0.6)}
.admin-panel h2{font-family:var(--pix);font-size:0.65rem;color:var(--coin);margin-bottom:0.85rem;text-align:center}
.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0.7rem}
.ctrl-group{background:var(--bg-card);padding:0.7rem;border-radius:var(--r);border:1px solid var(--border)}
.ctrl-group h4{font-family:var(--pix);font-size:0.42rem;color:var(--sky);margin-bottom:0.4rem}
.ctrl-group label{display:block;font-size:0.72rem;color:var(--text2);margin-bottom:0.2rem}
.ctrl-group input,.ctrl-group select{width:100%;padding:0.35rem 0.5rem;margin-bottom:0.35rem;border:2px solid var(--border);border-radius:var(--r);background:var(--bg);color:var(--text);font-size:0.75rem;font-family:var(--body)}
.ctrl-group input:focus,.ctrl-group select:focus{outline:none;border-color:var(--sky)}
.color-editor{display:grid;grid-template-columns:repeat(4,1fr);gap:0.3rem;margin:0.3rem 0}
.color-input{width:100%;height:28px;border:2px solid var(--border);border-radius:var(--r);cursor:pointer}
.hint{font-size:0.65rem;color:var(--text3);margin-top:0.15rem}

/* ── CHAT ── */
.chat-toggle{position:fixed;bottom:3.5rem;right:0.6rem;width:42px;height:42px;background:var(--red);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.1rem;cursor:pointer;z-index:600;border-bottom:3px solid #aa0000;box-shadow:0 3px 12px rgba(230,0,18,0.3);transition:all .15s}
.chat-toggle:hover{transform:scale(1.08)}
.chat-badge{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;background:var(--yellow);color:var(--bg);border-radius:100px;display:none;align-items:center;justify-content:center;font-family:var(--pix);font-size:0.35rem;font-weight:700;padding:0 2px}
.chat-panel{position:fixed;bottom:6.5rem;right:0.6rem;width:300px;height:350px;background:var(--bg-card);backdrop-filter:blur(20px);border:2px solid var(--border);border-radius:var(--r-lg);box-shadow:0 10px 36px rgba(0,0,0,0.5);z-index:599;display:none;flex-direction:column;animation:slideUp .25s cubic-bezier(.16,1,.3,1)}
.chat-panel.open{display:flex}@keyframes slideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.chat-head{display:flex;justify-content:space-between;align-items:center;padding:0.5rem 0.7rem;border-bottom:1px solid var(--border)}
.chat-head h4{font-family:var(--pix);font-size:0.48rem;color:var(--red)}
.chat-close{background:none;border:none;color:var(--text3);font-size:1.1rem;cursor:pointer;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s}.chat-close:hover{background:var(--bg2);color:var(--text)}
.chat-messages{flex:1;overflow-y:auto;padding:0.5rem;font-size:0.72rem;scrollbar-width:thin}
.chat-msg{margin-bottom:0.4rem}.chat-msg-head{display:flex;justify-content:space-between;margin-bottom:0.05rem}
.chat-msg-user{font-weight:700;color:var(--sky);font-size:0.65rem}.chat-msg-time{font-size:0.5rem;color:var(--text3)}
.chat-msg-text{color:var(--text);word-wrap:break-word}.chat-msg.own .chat-msg-user{color:var(--green)}
.chat-input-bar{display:flex;gap:0.25rem;padding:0.5rem;border-top:1px solid var(--border)}
.chat-input-bar input{flex:1;padding:0.35rem 0.5rem;border:2px solid var(--border);border-radius:var(--r);background:var(--bg);color:var(--text);font-size:0.72rem;font-family:var(--body)}.chat-input-bar input:focus{border-color:var(--sky);outline:none}
.chat-input-bar button{padding:0.35rem 0.6rem;background:var(--red);color:#fff;border:none;border-bottom:2px solid #aa0000;border-radius:var(--r);font-size:0.68rem;cursor:pointer;font-weight:700}.chat-input-bar button:disabled{opacity:.35}

/* ── TIMELAPSE ── */
.modal-overlay{position:fixed;inset:0;background:rgba(13,14,26,0.88);backdrop-filter:blur(8px);z-index:5000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}
.modal-content{background:var(--bg2);border:2px solid var(--border);border-radius:var(--r-lg);padding:1rem;max-width:90vw;max-height:90vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,0.5)}
.timelapse-modal{display:flex;flex-direction:column;gap:0.6rem;align-items:center}
.modal-head{display:flex;justify-content:space-between;align-items:center;width:100%}
.modal-head h3{font-family:var(--pix);font-size:0.55rem;color:var(--sky)}
#timelapseCanvas{image-rendering:pixelated;border:2px solid var(--border-hi);border-radius:4px;max-width:100%;height:auto;background:#0d0e1a}
.timelapse-controls{display:flex;align-items:center;gap:0.4rem;flex-wrap:wrap;justify-content:center}
.timelapse-controls input[type="range"]{width:90px;accent-color:var(--sky)}
#tlProgress{font-family:var(--pix);font-size:0.4rem;color:var(--text2);min-width:60px;text-align:center}
.timelapse-status{font-size:0.68rem;color:var(--text3);text-align:center}

/* ── RESPONSIVE ── */
@media(hover:none){.tool-btn:hover{background:transparent;border-color:transparent}.color-opt:hover{transform:none}.canvas-viewport{touch-action:none}.coord-tooltip{display:none!important}}
@media(max-width:768px){
    .topbar{height:40px;padding:0 0.4rem;gap:0.25rem}
    .logo{font-size:0.55rem}
    .topbar-center input{width:75px;font-size:0.68rem;padding:0.2rem 0.35rem}
    .topbar-center select{font-size:0.62rem;padding:0.15rem 0.2rem}
    .topbar-right .mini-stat{display:none}
    .canvas-viewport{top:40px}
    .dock{bottom:0.4rem;padding:0.2rem 0.35rem;gap:0.12rem}
    .color-opt{width:22px;height:22px}
    .tool-btn{width:28px;height:28px;font-size:0.85rem}
    .cooldown-chip{font-size:0.38rem}
    .side-drawer{width:100%;height:50vh;top:auto;bottom:0;right:0;left:0;transform:translateY(100%);border-left:none;border-top:3px solid var(--blue);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:0 -6px 24px rgba(0,0,0,0.5)}
    .side-drawer.open{transform:translateY(0)}
    .chat-toggle{bottom:3rem;right:0.4rem;width:38px;height:38px;font-size:0.95rem}
    .chat-panel{bottom:5.5rem;right:0.4rem;width:280px;height:320px}
}
@media(max-width:480px){
    .topbar-center select{font-size:0.6rem;padding:0.12rem 0.15rem;max-width:55px}
    .color-opt{width:20px;height:20px}
    .dock{gap:0.08rem;padding:0.15rem 0.25rem}
}
