:root{
    --bg:#0f0f0f;
    --card:#181818;
    --card-2:#202020;
    --border:#2c2c2c;
    --text:#f2f2f2;
    --muted:#9a9a9a;
    --accent:#27ae60;
    --accent-dim:#1d7a45;
    --danger:#c0392b;
    --warn:#e1b12c;
}
*{box-sizing:border-box}
html, body{
    background-color: var(--bg);
    color: var(--text);
    font-family: Arial, Helvetica, sans-serif;
    margin:0;
}
body{line-height:1.45}

.center{
    text-align: center;
    align-items: center;
    justify-content: center;
}

a:link, a:visited{
    color: inherit;
    text-decoration: none;
    border-bottom: 1px solid transparent;
}
a:hover, a:active{
    color: inherit;
    text-decoration: underline;
    cursor: pointer;
}

/* ---------- Layout ---------- */
.nav{
    display:flex;align-items:center;gap:18px;
    padding:12px 20px;background:var(--card);border-bottom:1px solid var(--border);
    flex-wrap:wrap;
}
.nav .brand{font-weight:bold;font-size:1.1rem;letter-spacing:.02em}
.nav .spacer{flex:1}
.nav .who{color:var(--muted);font-size:.9rem}
.nav a.active{border-bottom-color:var(--accent)}
.wrap{max-width:1000px;margin:0 auto;padding:20px}
.wrap.narrow{max-width:420px;padding-top:12vh}
h1{font-size:1.5rem;margin:.2em 0 .8em}
h2{font-size:1.1rem;margin:0 0 .8em}
.card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:18px;margin-bottom:18px}
.muted{color:var(--muted)}
.small{font-size:.85rem}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.between{justify-content:space-between}
.grow{flex:1;min-width:0}
.hidden{display:none !important}

/* ---------- Formulär ---------- */
label{display:block;margin:12px 0 5px;font-weight:bold;font-size:.9rem}
input, select{
    background:var(--card-2);color:var(--text);border:1px solid var(--border);
    border-radius:4px;padding:9px;font-size:1rem;font-family:inherit;width:100%;
}
input:focus, select:focus{outline:2px solid var(--accent-dim);border-color:var(--accent-dim)}
input:disabled{opacity:.6}
.btn{
    background:var(--card-2);color:var(--text);border:1px solid var(--border);
    padding:9px 14px;border-radius:4px;cursor:pointer;font-weight:bold;font-size:.95rem;
    font-family:inherit;white-space:nowrap;
}
.btn:hover{border-color:#555}
.btn:disabled{opacity:.5;cursor:default}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-primary:hover{border-color:#fff}
.btn-danger{background:transparent;color:#e74c3c;border-color:#5a2a25}
.btn-sm{padding:4px 9px;font-size:.8rem}
.msg{padding:10px 12px;border-radius:4px;margin-top:12px;font-size:.92rem}
.msg.err{background:#3a1b18;color:#ff9a8f;border:1px solid #5a2a25}
.msg.ok{background:#14301f;color:#8be0ae;border:1px solid #1d5a35}

/* ---------- Skyttelista ---------- */
table{width:100%;border-collapse:collapse}
th, td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border)}
th{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}
tr.link{cursor:pointer}
tr.link:hover td{background:var(--card-2)}
td.num, th.num{text-align:right}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:.8rem;font-weight:bold;background:var(--card-2);border:1px solid var(--border)}
.pill.medal{background:#3a3010;border-color:#6b5a1a;color:var(--warn)}
.pill.none{color:var(--muted)}
.pill.hel{background:#14301f;border-color:#1d5a35;color:#8be0ae}
.pill.halv{background:#2d2b12;border-color:#5f5a1c;color:#e8d36a}

/* ---------- Medaljframsteg ---------- */
.bar{height:10px;background:var(--card-2);border-radius:99px;overflow:hidden;margin:10px 0 6px}
.bar > div{height:100%;background:var(--accent);transition:width .3s}
.banner{background:#14301f;border:1px solid #1d5a35;color:#8be0ae;padding:12px 14px;border-radius:6px;margin-top:12px;font-weight:bold}

/* ---------- Serieinmatning ---------- */
.series-box{background:var(--card-2);border-radius:6px;padding:12px;margin-bottom:12px;border-left:4px solid var(--accent-dim)}
.shots{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:8px}
@media (min-width:560px){.shots{grid-template-columns:repeat(10,1fr)}}
.shots input{text-align:center;padding:8px 2px;background:var(--bg)}
.shots input.bad{border-color:var(--danger);outline-color:var(--danger)}

/* ---------- Historik ---------- */
.hist{border-top:1px solid var(--border);padding:12px 0}
.hist:first-child{border-top:0}
.hist.old{opacity:.55}
.hist .shotline{font-family:Consolas,monospace;font-size:.85rem;color:var(--muted);margin-top:4px;word-spacing:.35em}

/* ---------- Poängkrav ---------- */
.req input{width:80px;text-align:center}
.btn-block{width:100%}
.date-input{width:auto}
details{margin-top:12px}
summary{cursor:pointer}

/* ---------- Banner (banner.txt) ---------- */
.site-banner{background:#8a5200;color:#fff;padding:10px 20px;text-align:center;font-weight:bold;white-space:pre-line;border-bottom:2px solid #e1b12c}

/* ---------- Sortering ---------- */
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.toolbar input{flex:2;min-width:180px}
.toolbar select{flex:1;min-width:180px;width:auto}
@media (max-width:640px){.hide-sm{display:none}}

/* ---------- Konto ---------- */
.token-box{font-family:Consolas,monospace;font-size:1.15rem;letter-spacing:.06em;background:var(--card-2);border:1px solid var(--border);border-radius:6px;padding:14px;text-align:center;margin:12px 0;word-break:break-all}

/* ---------- Användare ---------- */
.pill.ok{background:#14301f;border-color:#1d5a35;color:#8be0ae}
.pill.off{background:#3a1b18;border-color:#5a2a25;color:#ff9a8f}
tr.revoked td{opacity:.5}
.log div{padding:4px 0;border-bottom:1px solid var(--border)}
.log div:last-child{border-bottom:0}

/* ---------- Flikar (grenar) ---------- */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.tab{background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 12px;cursor:pointer;font-family:inherit;font-size:.92rem}
.tab:hover{border-color:#555}
.tab.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:bold}
.tab .pill{margin-left:6px;font-size:.72rem;padding:1px 7px}
.tab.active .pill{background:rgba(0,0,0,.25);border-color:transparent;color:#fff}
.tab.dim{opacity:.55}
.tabs select{width:auto;padding:8px;background:var(--card)}

.check{display:flex;align-items:center;gap:8px;font-weight:normal;color:var(--muted);margin:2px 0 0}
.check input{width:auto}

/* ---------- Markera flera ---------- */
input.sel{
    appearance:none;-webkit-appearance:none;
    width:18px;height:18px;padding:0;margin:0;
    background-color:var(--card-2);
    border:1px solid var(--border);border-radius:4px;
    background-repeat:no-repeat;background-position:center;background-size:14px 14px;
    cursor:pointer;
}
input.sel:hover{border-color:#555}
/* Bocken och strecket är ritade i CSS (SVG), så de ser likadana ut i alla webbläsare */
input.sel:checked{
    background-color:var(--accent);border-color:var(--accent);
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M2.5 7.5l3 3 6-7' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
input.sel:indeterminate{
    background-color:var(--accent-dim);border-color:var(--accent-dim);
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7h8' fill='none' stroke='white' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}
.sel-cell{width:34px;padding-right:0 !important}
tr.picked td{background:#14301f}
.bulkbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--card-2);border:1px solid var(--accent-dim);border-radius:6px;padding:8px 12px;margin:10px 0}
.bulkbar select{width:auto;padding:5px 8px;font-size:.9rem}
input.sel.pick{margin-right:10px;vertical-align:middle}
.check input.sel{margin:0}

/* ---------- Länkar som ser ut som knappar (Google) ---------- */
a.btn{display:inline-block;text-align:center;border-bottom:1px solid var(--border)}
a.btn-primary{border-bottom-color:var(--accent)}
a.btn:hover{text-decoration:none}
a.btn.btn-block{display:block}
#google p{margin:0 0 12px}
#googleBox p{margin:12px 0 0}
/* ---------- Tabeller som inte ryms (mobil) ---------- */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.actions{gap:6px;justify-content:flex-end}
code{background:var(--card-2);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:.85em}

/* ---------- Filväljare ---------- */
input[type=file]{padding:6px}
input[type=file]::file-selector-button{
    background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:4px;
    padding:6px 10px;margin-right:10px;font-family:inherit;font-weight:bold;cursor:pointer;
}
input[type=file]::file-selector-button:hover{border-color:#555}

/* ---------- Mobil ---------- */
.pill{white-space:nowrap}
td.num{white-space:nowrap}
.req input{width:100%;max-width:80px;min-width:52px}

/* Pekskärmar: större träffytor */
@media (pointer:coarse){
    .btn{min-height:42px}
    .btn-sm{min-height:36px;padding:6px 11px}
    .tab{padding:10px 13px}
    input.sel{width:22px;height:22px;background-size:16px 16px}
    .sel-cell{width:42px}
    .nav a{padding:6px 0}
}

@media (max-width:640px){
    .wrap{padding:12px}
    .wrap.narrow{padding-top:6vh}
    .card{padding:14px;margin-bottom:14px}
    h1{font-size:1.35rem}
    th,td{padding:9px 5px}
    .hide-xs{display:none}

    /* Menyn: kompakt, namn och "Logga ut" hamnar på egen rad om det inte ryms */
    .nav{padding:8px 12px;gap:4px 14px}
    .nav .brand{font-size:1rem}
    .nav .spacer{display:none}
    .nav .who{margin-left:auto;max-width:45vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

    /* Grenflikar: en rad som går att svepa i sidled istället för många rader */
    .tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;-webkit-overflow-scrolling:touch}
    .tab{flex:0 0 auto;white-space:nowrap}
    .tabs select{flex:0 0 auto}

    .toolbar input,.toolbar select{flex:1 1 100%}
    .date-input{width:100%}
    .req th,.req td{padding:7px 3px}
    .req th{font-size:.7rem}

    /* Tabeller med knappar i raderna (Användare, Backup) blir staplade kort */
    table.stack thead{display:none}
    table.stack,table.stack tbody,table.stack tr,table.stack td{display:block;width:100%}
    table.stack tr{position:relative;padding:10px 0 10px 38px;border-bottom:1px solid var(--border)}
    table.stack tr:last-child{border-bottom:0}
    table.stack td{border:0;padding:3px 0;text-align:left}
    table.stack td.hide-sm{display:block}
    table.stack td.num{text-align:left;white-space:normal}
    table.stack td[data-label]::before{content:attr(data-label) ": ";color:var(--muted);font-size:.8rem}
    table.stack td.sel-cell{position:absolute;left:0;top:12px;width:auto;padding:0 !important}
    table.stack .actions{justify-content:flex-start;margin-top:4px}
    table.stack:not(:has(.sel-cell)) tr{padding-left:0}
    tr.picked{background:#14301f}
}
