/* ============================================================
   PIXEL VOTING - retro pixel style, black & white
   ============================================================ */

:root{
  --bg:#ffffff;
  --fg:#000000;
  --dim:#8c8c8c;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  color-scheme:light dark;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){ --bg:#000000; --fg:#ffffff; --dim:#767676; }
}
:root[data-theme="dark"]{ --bg:#000000; --fg:#ffffff; --dim:#767676; }

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-padding-top:env(safe-area-inset-top,0px); }

body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:"Press Start 2P","Courier New",Courier,monospace;
  font-size:12px;
  line-height:1.9;
  -webkit-font-smoothing:none;
  image-rendering:pixelated;
  padding:20px 14px 60px;
}

/* scanline backdrop */
body::before{
  content:"";
  position:fixed; inset:0; pointer-events:none; z-index:0;
  background:repeating-linear-gradient(to bottom, transparent 0 3px, var(--fg) 3px 4px);
  opacity:.06;
}
.wrap{ position:relative; z-index:1; max-width:760px; margin:0 auto; }
.wrap.narrow{ max-width:420px; }

/* blocky pixel frame (no rounded corners) */
.pix{
  box-shadow:
    0 -4px 0 0 var(--fg), 0 4px 0 0 var(--fg),
    -4px 0 0 0 var(--fg), 4px 0 0 0 var(--fg);
  margin:4px;
}

header{ text-align:center; margin-bottom:26px; }
h1{ font-size:18px; letter-spacing:2px; margin:0 0 6px; text-transform:uppercase; }
.sub{ font-size:9px; color:var(--dim); letter-spacing:1px; }

nav{ display:flex; gap:14px; justify-content:center; margin:18px 0 6px; flex-wrap:wrap; }
nav a{ color:var(--fg); text-decoration:none; font-size:9px; padding:8px 10px; background:var(--bg); }
nav a[aria-current="page"]{ background:var(--fg); color:var(--bg); }
nav a:focus-visible{ outline:3px solid var(--fg); outline-offset:4px; }

h2{ font-size:13px; margin:30px 0 14px; letter-spacing:1px; text-transform:uppercase; }
.panel{ background:var(--bg); padding:16px 14px; margin-bottom:26px; }

/* inputs + buttons */
input[type=text],input[type=password]{
  font:inherit; font-size:11px; color:var(--fg); background:var(--bg);
  border:0; padding:12px 10px; width:100%; min-width:0;
  box-shadow:0 -3px 0 0 var(--fg),0 3px 0 0 var(--fg),-3px 0 0 0 var(--fg),3px 0 0 0 var(--fg);
  margin:3px;
}
input[type=text]::placeholder,input[type=password]::placeholder{ color:var(--dim); }
input[type=text]:focus,input[type=password]:focus{ outline:none; background:var(--fg); color:var(--bg); }
input[type=text]:focus::placeholder,input[type=password]:focus::placeholder{ color:var(--bg); opacity:.7; }

button,.btn{
  font:inherit; font-size:10px; cursor:pointer; display:inline-block;
  color:var(--fg); background:var(--bg); border:0; padding:11px 12px;
  box-shadow:0 -3px 0 0 var(--fg),0 3px 0 0 var(--fg),-3px 0 0 0 var(--fg),3px 0 0 0 var(--fg);
  margin:3px; text-transform:uppercase; letter-spacing:1px; text-decoration:none;
}
button:hover:not(:disabled),.btn:hover{ background:var(--fg); color:var(--bg); }
button:active:not(:disabled),.btn:active{ transform:translateY(3px); }
button:disabled{
  color:var(--dim); cursor:not-allowed;
  box-shadow:0 -3px 0 0 var(--dim),0 3px 0 0 var(--dim),-3px 0 0 0 var(--dim),3px 0 0 0 var(--dim);
}
button:focus-visible,.btn:focus-visible{ outline:3px solid var(--fg); outline-offset:5px; }

.addrow{ display:flex; gap:6px; align-items:stretch; flex-wrap:wrap; }
.addrow input{ flex:1 1 200px; }
.addrow button{ flex:0 0 auto; }

/* login form */
.loginbox{ padding:26px 18px; margin-top:20px; }
.loginbox label{ display:block; font-size:9px; color:var(--dim); margin-bottom:8px; letter-spacing:1px; }
.loginbox button{ width:100%; margin-top:10px; font-size:11px; padding:13px; }
.loginerr{ font-size:9px; color:var(--fg); background:var(--bg); box-shadow:0 -3px 0 0 var(--fg),0 3px 0 0 var(--fg),-3px 0 0 0 var(--fg),3px 0 0 0 var(--fg); padding:10px; margin:4px 4px 18px; }

/* admin list */
.entry{
  padding:14px 12px; margin:14px 4px; background:var(--bg);
  box-shadow:0 -4px 0 0 var(--fg),0 4px 0 0 var(--fg),-4px 0 0 0 var(--fg),4px 0 0 0 var(--fg);
}
.entry-top{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; }
.entry-name{ font-size:12px; word-break:break-word; }
.entry-pts{ font-size:10px; white-space:nowrap; }
.entry-tally{ font-size:9px; color:var(--dim); margin-top:4px; }
.entry-btns{ display:flex; flex-wrap:wrap; margin-top:8px; align-items:center; }
.entry-btns .del{ margin-left:auto; font-size:9px; }

/* results */
ol.results{ list-style:none; padding:0; margin:0; }
ol.results li{
  display:flex; align-items:center; gap:12px;
  padding:14px 12px; margin:14px 4px; background:var(--bg);
  box-shadow:0 -4px 0 0 var(--fg),0 4px 0 0 var(--fg),-4px 0 0 0 var(--fg),4px 0 0 0 var(--fg);
}
ol.results li.top{ background:var(--fg); color:var(--bg); }
ol.results li.top .medal{ color:var(--bg); }
.rank{ font-size:14px; min-width:2.4em; }
.medal{ font-size:14px; }
.rname{ flex:1 1 auto; font-size:12px; word-break:break-word; }
.rname.hidden{ letter-spacing:3px; color:var(--dim); }
ol.results li.top .rname.hidden{ color:var(--bg); opacity:.55; }
.rpts{ font-size:11px; white-space:nowrap; }
.rbreak{ display:block; font-size:8px; color:var(--dim); margin-top:2px; }
ol.results li.top .rbreak{ color:var(--bg); opacity:.7; }

.reveal{ animation:blip .28s steps(2) 1; }
@keyframes blip{ 0%{opacity:0;transform:translateX(-4px)} 100%{opacity:1;transform:none} }

.bigbtn{ display:block; width:100%; font-size:12px; padding:16px 12px; margin:4px 4px 18px; }

.empty{ color:var(--dim); font-size:10px; padding:16px 4px; }
.legend{ font-size:9px; color:var(--dim); margin:0 4px 16px; line-height:2.1; }
.status{ font-size:8px; color:var(--dim); text-align:center; margin-top:34px; letter-spacing:1px; }
.danger{ font-size:9px; }
.hr{ height:4px; background:var(--fg); margin:26px 4px; }
.topbar{ display:flex; justify-content:flex-end; margin:-10px 4px 10px; }
.topbar button{ font-size:8px; }
[hidden]{ display:none !important; }
