/* === BINGO — Dark Compact === */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
    --bg:#111318;
    --bg2:#1a1d25;
    --bg3:#232731;
    --bdr:#2a2e3a;
    --acc:#6c5ce7;
    --ac2:#7c6ff7;
    --ok:#00e676;
    --err:#ff5252;
    --warn:#ffab40;
    --tx:#e4e6ed;
    --tx2:#9298a8;
    --tx3:#5a5f70;
    --r:8px;
    --t:.15s;
}

body{
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
    background:var(--bg);
    color:var(--tx);
    line-height:1.5;
    min-height:100vh;
    -webkit-font-smoothing:antialiased;
}

/* SVG ICONS */
.svi{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;flex-shrink:0}
.svi.sm{width:16px;height:16px}
.svi.lg{width:28px;height:28px}
.svi.xl{width:48px;height:48px}

/* HEADER */
.hdr{
    display:flex;align-items:center;justify-content:space-between;
    padding:0 1rem;height:44px;
    background:var(--bg2);border-bottom:1px solid var(--bdr);
    position:sticky;top:0;z-index:100;gap:1rem;
}
.hdr a{color:var(--tx);text-decoration:none;transition:color var(--t)}
.hdr .logo{font-weight:700;display:flex;align-items:center;gap:6px;color:var(--acc)}
.hdr nav{display:flex;gap:1rem;align-items:center}
.hdr nav a{font-size:.9rem;font-weight:500;opacity:.7;display:flex;align-items:center;gap:4px}
.hdr nav a:hover{opacity:1;color:var(--acc)}
.usr{display:flex;align-items:center;gap:4px;font-size:.85rem;color:var(--tx2)}

/* CONTAINER */
.ctr{max-width:1000px;margin:0 auto;padding:1rem;width:100%}

/* FLASH */
.flm{max-width:1000px;margin:0 auto;padding:0 .5rem}
.fl{background:var(--bg2);border:1px solid var(--bdr);padding:.5rem 1rem;border-radius:var(--r);margin-bottom:2px;font-size:.9rem;font-weight:500}
.fl.ok{color:var(--ok);border-color:rgba(0,230,118,.2)}
.fl.err{color:var(--err);border-color:rgba(255,82,82,.2)}

/* HERO */
.hero{text-align:center;padding:1.5rem 0 1rem}
.hero h1{font-size:1.8rem;font-weight:800;color:var(--acc);display:flex;align-items:center;justify-content:center;gap:.4rem}

/* SEARCH */
.search{margin:0 auto 1.5rem;max-width:500px}
.search input{
    width:100%;padding:.55rem 1rem;
    background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r);
    color:var(--tx);font-size:.95rem;transition:border var(--t)
}
.search input:focus{outline:none;border-color:var(--acc)}

/* BUTTONS */
.btn{
    display:inline-flex;align-items:center;gap:4px;
    padding:.4rem .9rem;border-radius:6px;text-decoration:none;
    font-weight:600;font-size:.85rem;cursor:pointer;border:none;
    transition:all var(--t);white-space:nowrap
}
.btn1{background:var(--acc);color:#fff}.btn1:hover{background:var(--ac2)}
.btn2{background:var(--bg3);color:var(--tx);border:1px solid var(--bdr)}.btn2:hover{background:var(--bdr)}
.btn3{background:var(--ok);color:#111318}.btn3:hover{filter:brightness(1.1)}
.btn4{background:var(--err);color:#fff}
.btn.lg{padding:.55rem 1.2rem;font-size:.95rem}
.btn:disabled{opacity:.4;cursor:not-allowed}

/* BINGO CARDS (home) */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:.75rem}
.card{
    background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r);
    display:flex;gap:1rem;padding:1rem;transition:all var(--t)
}
.card:hover{border-color:var(--acc)}
.cicon{
    width:56px;height:56px;border-radius:6px;background:var(--bg3);
    display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden
}
.cicon img{width:100%;height:100%;object-fit:cover}
.cbody{flex:1;min-width:0}
.cbody h3{font-size:1rem;margin-bottom:4px}
.cbody h3 a{color:var(--tx);text-decoration:none}.cbody h3 a:hover{color:var(--acc)}
.cmeta{display:flex;gap:.75rem;flex-wrap:wrap;font-size:.8rem;color:var(--tx3);margin-bottom:8px}
.cacts{display:flex;gap:6px}

/* FORMS */
.fcard{background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r);padding:1.25rem;max-width:560px;margin:0 auto}
.fg{margin-bottom:1rem}
.fg label{display:block;font-weight:600;margin-bottom:3px;font-size:.85rem;color:var(--tx2)}
.fg input,.fg select{
    width:100%;padding:.5rem .75rem;
    background:var(--bg3);border:1px solid var(--bdr);border-radius:6px;
    color:var(--tx);font-size:.9rem;transition:border var(--t)
}
.fg input:focus,.fg select:focus{outline:none;border-color:var(--acc)}
.tinp{margin-bottom:4px}

/* DETAIL */
.dhead{display:flex;gap:1.25rem;align-items:center;flex-wrap:wrap;margin-bottom:1.25rem;padding:1rem;background:var(--bg2);border-radius:var(--r);border:1px solid var(--bdr)}
.dicon{
    width:80px;height:80px;border-radius:var(--r);overflow:hidden;
    background:var(--bg3);display:flex;align-items:center;justify-content:center;flex-shrink:0
}
.dicon img{width:100%;height:100%;object-fit:cover}
.dinfo h1{font-size:1.4rem;margin-bottom:3px}
.dinfo p{font-size:.85rem;color:var(--tx2)}
.dacts{display:flex;gap:.5rem;margin-bottom:1.25rem;flex-wrap:wrap;align-items:center}

/* TEXT LIST */
.tlist{list-style:none;display:grid;gap:3px}
.tlist li{
    display:flex;justify-content:space-between;align-items:center;
    padding:.45rem .75rem;background:var(--bg2);border:1px solid var(--bdr);
    border-radius:6px;gap:.5rem;font-size:.9rem
}
.tauth{font-size:.8rem;color:var(--tx3);white-space:nowrap}
.tmeta{display:flex;align-items:center;gap:.5rem;flex-shrink:0}
.delbtn{background:none;border:none;cursor:pointer;color:var(--tx3);padding:2px;border-radius:4px;transition:all var(--t)}
.delbtn:hover{color:var(--err);background:rgba(255,82,82,.1)}

/* EDIT */
.ehead{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:.5rem}
.elayout{display:grid;grid-template-columns:1fr 280px;gap:1rem}
.eside .card{background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem;position:sticky;top:56px}
.eside .card h3{font-size:.9rem;margin-bottom:.5rem}
.eside .card p{color:var(--tx2);margin-bottom:4px;font-size:.85rem}
.atform{display:flex;gap:6px;margin-bottom:1rem}
.atform input{flex:1;padding:.5rem .75rem;background:var(--bg3);border:1px solid var(--bdr);border-radius:6px;color:var(--tx);font-size:.9rem}
.atform input:focus{outline:none;border-color:var(--acc)}
.hint{color:var(--tx3);font-size:.8rem;margin-bottom:.5rem}
.iprev{margin-bottom:.5rem}.iprev img,.iprev svg{border-radius:6px}
.iform{margin-bottom:.5rem}.iform input{font-size:.8rem;color:var(--tx2)}

/* GAME */
.ghdr{margin-bottom:.75rem}
.ghdr h1{font-size:1.3rem}
.gmeta{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-top:2px;color:var(--tx2);font-size:.85rem}

.glayout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:.75rem;align-items:start}

/* BOARD */
.board{display:grid;gap:2px;background:var(--bdr);padding:2px;border-radius:var(--r);max-width:480px}
.b3{grid-template-columns:repeat(3,1fr)}
.b4{grid-template-columns:repeat(4,1fr)}
.b5{grid-template-columns:repeat(5,1fr)}

.cell{
    background:var(--bg2);aspect-ratio:1;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    cursor:pointer;user-select:none;transition:all var(--t);
    padding:2px;text-align:center;border-radius:3px;border:2px solid transparent;overflow:hidden
}
.cell:hover{background:var(--bg3);border-color:var(--bdr)}
.cell.checked{background:rgba(0,230,118,.08);border-color:var(--ok)}
.ctext{font-size:.68rem;word-break:break-word;line-height:1.1;font-weight:500}
.ccheck{display:none;color:var(--ok)}
.cell.checked .ccheck{display:block;margin-top:1px}
.cell.checked .ctext{text-decoration:line-through;opacity:.4}

.winban{text-align:center;font-size:1.2rem;font-weight:700;color:var(--ok);background:rgba(0,230,118,.08);padding:.75rem;border-radius:var(--r);margin-top:.5rem;border:1px solid rgba(0,230,118,.2);animation:pulse 1.5s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

.joinp{text-align:center;padding:3rem 1rem;background:var(--bg2);border-radius:var(--r);border:1px solid var(--bdr)}
.joinp h2{margin-bottom:.5rem;font-size:1.2rem}

/* CHAT */
.chat{background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r);display:flex;flex-direction:column;height:400px}
.chat h3{padding:.5rem .75rem;border-bottom:1px solid var(--bdr);font-size:.9rem;display:flex;align-items:center;gap:5px}
.cmsg{flex:1;overflow-y:auto;padding:.5rem .75rem;display:flex;flex-direction:column;gap:4px}
.cmsg::-webkit-scrollbar{width:4px}
.cmsg::-webkit-scrollbar-thumb{background:var(--bdr);border-radius:2px}
.cm{font-size:.82rem;padding:2px 0;animation:fadeIn .2s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.cma{font-weight:700;color:var(--acc)}.cm-own .cma{color:var(--ok)}
.cmt{word-break:break-word;color:var(--tx2)}
.cf{display:flex;gap:3px;padding:.5rem .75rem;border-top:1px solid var(--bdr)}
.cf input{flex:1;padding:.4rem .6rem;background:var(--bg3);border:1px solid var(--bdr);border-radius:6px;color:var(--tx);font-size:.82rem}
.cf input:focus{outline:none;border-color:var(--acc)}
.cf button{padding:.4rem .7rem;background:var(--acc);color:#fff;border:none;border-radius:6px;cursor:pointer;display:flex;align-items:center}
.cf button:hover{background:var(--ac2)}

/* PLAYERS */
.plist{margin-top:.75rem;background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r);padding:.75rem 1rem}
.plist h3{font-size:.9rem;margin-bottom:.35rem}
.plist ul{list-style:none;display:flex;gap:.5rem;flex-wrap:wrap}
.plist li{padding:2px 10px;background:var(--bg3);border-radius:12px;font-size:.82rem}

/* SHARE */
.slink{width:100%;padding:.4rem .6rem;background:var(--bg3);border:1px solid var(--bdr);border-radius:6px;font-size:.82rem;color:var(--tx);margin:4px 0}
.slink:focus{outline:none;border-color:var(--acc)}
.sinfo{margin-top:.5rem;padding:.75rem;background:rgba(0,230,118,.06);border-radius:var(--r);border:1px solid rgba(0,230,118,.15);font-size:.85rem}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000}
.modal{background:var(--bg2);padding:2rem;border-radius:var(--r);text-align:center;max-width:380px;width:90%;border:1px solid var(--bdr)}
.modal h2{margin-bottom:4px;font-size:1.3rem}
.modal p{color:var(--tx2);margin-bottom:4px;font-size:.9rem}
.modal input{width:100%;padding:.6rem .75rem;margin:.75rem 0;background:var(--bg3);border:1px solid var(--bdr);border-radius:6px;font-size:.95rem;color:var(--tx)}
.modal input:focus{outline:none;border-color:var(--acc)}
.modal button{padding:.5rem 1.5rem;background:var(--acc);color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer}
.modal button:hover{background:var(--ac2)}

/* EMPTY */
.empty{text-align:center;padding:2rem 1rem;color:var(--tx3)}

/* MISC */
h2{font-size:1.1rem;margin-bottom:.5rem}
.card{background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r)}

/* RESPONSIVE */
@media(max-width:700px){
    .glayout{grid-template-columns:1fr}
    .elayout{grid-template-columns:1fr}
    .dhead{flex-direction:column;text-align:center}
    .card{flex-direction:column;align-items:center;text-align:center}
    .cacts{justify-content:center}
    .chat{height:300px}
    .board{max-width:100%}
}
