/* Couleurs de la guilde : noir et jaune. Le jaune (--brand) sert de remplissage
   avec du texte noir ; --accent est sa version lisible en texte sur le fond. */
:root{
  color-scheme:light;
  --bg:#F3F1EC; --surface:#FFFFFF; --surface-2:#F8F6F1; --ink:#16150F; --muted:#69655A; --line:#DCD7CB;
  --brand:#E6B422; --on-brand:#14120C;
  --accent:#7A5C00; --accent-soft:#FBF1CF;
  --band-bg:#0B0B0A; --band-ink:#ECE9E1; --band-muted:#A8A395;
  --ok:#1F8A55; --ok-soft:#DDF2E6; --warn:#C2530E; --warn-soft:#FCE6D6;
  --danger:#C2392F; --danger-soft:#F9E0DD; --exempt:#5F5B94; --exempt-soft:#E7E6F4; --none:#CFCAC0;
  --display:"Barlow Condensed","Arial Narrow",system-ui,sans-serif;
  --body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root{
  color-scheme:dark;
  --bg:#0E0E0C; --surface:#171714; --surface-2:#1F1E1A; --ink:#ECE9E1; --muted:#9B978C; --line:#2C2A25;
  --accent:#EBC04A; --accent-soft:#2B2513;
  --ok:#4CC38A; --ok-soft:#173327; --warn:#F28B4F; --warn-soft:#3A2216; --danger:#F06B5F; --danger-soft:#3D1E1B;
  --exempt:#A9A5DA; --exempt-soft:#28263F; --none:#3A3832;
}}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.45}
.wrap{max-width:1180px;margin:0 auto;padding-inline:16px;padding-block:20px 120px}
a{color:var(--accent)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{cursor:default;opacity:.55}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
[hidden]{display:none!important}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}

header.band{background:var(--band-bg);color:var(--band-ink);border-bottom:3px solid var(--brand)}
.band-in{max-width:1180px;margin:0 auto;padding-inline:16px;padding-block:calc(16px + env(safe-area-inset-top,0px)) 14px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px}
.brand .eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--band-muted);font-weight:600}
.brand h1{font-family:var(--display);font-weight:700;font-size:34px;line-height:1;margin:0;letter-spacing:.04em;color:var(--brand)}
.who-am-i{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--band-muted)}
.band .linkbtn{color:var(--brand)}
.linkbtn{background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.weeknav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.weeknav button.arrow{width:34px;height:34px;border:1px solid var(--line);background:var(--surface);border-radius:8px;font-size:16px}
.weeknav select{height:34px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:0 10px;font-weight:600;max-width:260px}
.btn{height:34px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:0 12px;font-weight:600}
.btn.primary,.primary{background:var(--brand);color:var(--on-brand);border:0;border-radius:8px;padding:0 14px;height:36px;font-weight:600}
.btn.primary:hover,.primary:hover{filter:brightness(1.06)}

nav.tabs{display:flex;flex-wrap:wrap;gap:4px;margin:16px 0 18px}
.dpanel{display:flex;flex-direction:column;gap:18px}
.dpanel[hidden]{display:none}
nav.dtabs{display:flex;flex-wrap:wrap;gap:4px;margin:12px 0 4px;padding-bottom:8px;border-bottom:1px solid var(--line);position:sticky;top:-1px;background:var(--surface);z-index:2}
nav.dtabs button{border:1px solid transparent;background:transparent;padding:5px 11px;border-radius:999px;font-weight:600;font-size:13px;color:var(--muted)}
nav.dtabs button:hover{color:var(--ink);border-color:var(--line)}
nav.dtabs button[aria-selected="true"]{background:var(--brand);color:var(--on-brand)}
.pp{display:flex;flex-direction:column;gap:14px}
.pphead{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 18px}
.pptitle{display:flex;flex-direction:column;gap:6px;flex:1;min-width:220px}
.pptitle h2{font-family:var(--display);font-size:34px;margin:0;line-height:1}
nav.pptabs{display:flex;flex-wrap:wrap;gap:4px;padding-bottom:8px;border-bottom:1px solid var(--line)}
nav.pptabs button{border:1px solid transparent;background:transparent;padding:6px 12px;border-radius:999px;font-weight:600;font-size:13px;color:var(--muted)}
nav.pptabs button:hover{color:var(--ink);border-color:var(--line)}
nav.pptabs button[aria-selected="true"]{background:var(--brand);color:var(--on-brand)}
#ppBody{display:flex;flex-direction:column;gap:14px}
#ppBody > .card h3,#ppBody section h3{margin-top:0}
.ppcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.ppcard{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;border:1px solid var(--line);border-left:4px solid var(--c);background:var(--surface-2);border-radius:10px;padding:10px 12px;cursor:pointer;color:var(--ink)}
.ppcard:hover,.ppcard:focus-visible{border-color:var(--brand);border-left-color:var(--c)}
.ppcard-h{display:flex;align-items:center;gap:8px;font-size:15px}
.ppcard-f{display:flex;flex-wrap:wrap;gap:6px}
.ppmeta{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center}
.scores{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.score{display:inline-flex;align-items:center;gap:4px;font-size:12px;border-radius:999px;padding:1px 8px;border:1px solid var(--line)}
.score b{font-family:var(--mono)}
.score.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.score.mid{background:var(--surface-2)}
.score.low{background:var(--danger-soft);color:var(--danger);border-color:transparent}
.privnote{background:var(--exempt-soft);border-radius:6px;padding:4px 8px}
.crit-t td.c,.crit-t th.c{text-align:center}
.vods{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.vod{border-left:3px solid var(--brand);padding:4px 0 4px 10px}
.vodref{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--surface-2)}
.crits{display:grid;gap:6px}
.crit{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px}
.crit-n{font-size:13px;font-weight:600}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg label{display:inline-flex;cursor:pointer}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{display:inline-grid;place-items:center;width:30px;height:28px;font-weight:600;font-size:13px;border-left:1px solid var(--line)}
.seg label:first-child span{border-left:0}
.seg input:checked + span{background:var(--brand);color:var(--on-brand)}
.seg input:focus-visible + span{outline:2px solid var(--brand);outline-offset:-2px}
.seg .na span{color:var(--muted)}
.critadmin{display:grid;gap:10px;margin-top:8px}
.critcat{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.critadd input{height:28px;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:0 8px;width:170px}
.bcard h3 .tag{font-size:11px;vertical-align:middle;margin-left:6px}
button.tag{cursor:pointer;font:inherit}
.blink{margin-left:6px;padding:0 6px;font-size:11px}
.blink.none{opacity:.55}
.onb{max-width:820px;margin:20px auto;display:flex;flex-direction:column;gap:14px}
.onb h2{font-family:var(--display);font-size:32px;margin:0}
.onb-steps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.onb-steps li{border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-weight:600;font-size:13px;color:var(--muted)}
.onb-steps li.cur{border-color:var(--brand);color:var(--ink)}
.onb-steps li.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.cpBlock{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-top:10px}
.cpBlock.cp-todo{border-color:var(--brand)}
.cpBlock h4{margin:0 0 6px}
.profform .bad,.profform .req.bad{border-color:var(--bad,#c33)!important;box-shadow:0 0 0 1px var(--bad,#c33)}
.req.bad{border-radius:8px;padding:4px}
.rq-paste{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px dashed var(--line);border-radius:8px;cursor:pointer;font-size:12px;color:var(--muted);outline:none}
.rq-paste:focus{border-color:var(--brand);color:var(--ink);background:var(--surface-2)}
.rq-paste.has{border-style:solid;color:var(--ok)}
.rq-paste img{height:24px;width:auto;border-radius:4px}
.prof-submit ul{margin:6px 0 0;padding-left:18px}
.reqs{display:grid;gap:10px}
.reqposte{display:flex;flex-direction:column;gap:6px;border:1px solid var(--line);border-radius:10px;padding:10px}
.req{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px}
.req.ok{color:var(--ink)}
.req-h{font-weight:600;min-width:46px}
.req select,.req input[type=number]{height:32px;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:0 8px}
.req input[type=number]{width:90px}
.rq-file{cursor:pointer}
.onb-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}
nav.secnav{display:flex;flex-wrap:wrap;gap:4px;margin:16px 0 0}
nav.secnav button{border:0;background:transparent;padding:8px 16px;border-radius:8px 8px 0 0;font-family:var(--display);font-size:19px;font-weight:600;letter-spacing:.02em;color:var(--muted);border-bottom:3px solid transparent}
nav.secnav button:hover{color:var(--ink)}
nav.secnav button[aria-current="page"]{color:var(--brand);border-bottom-color:var(--brand)}
nav.subnav{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 18px;padding:8px 0;border-top:1px solid var(--line)}
nav.subnav button{border:1px solid transparent;background:transparent;padding:5px 12px;border-radius:999px;font-weight:600;font-size:13px;color:var(--muted)}
nav.subnav button:hover{color:var(--ink);border-color:var(--line)}
nav.subnav button[aria-selected="true"]{background:var(--brand);color:var(--on-brand)}
.subnav-gap{border-top:1px solid var(--line);margin-bottom:18px}
.mebtn{all:unset;cursor:pointer;display:inline-flex;align-items:baseline;gap:4px;padding:3px 8px;border-radius:6px}
.mebtn:hover,.mebtn:focus-visible,.mebtn[aria-current="page"]{background:color-mix(in srgb,var(--brand) 18%,transparent)}
.mebtn span{opacity:.75;font-size:12px}
nav.tabs button{border:0;background:transparent;padding:8px 14px;border-radius:8px;font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:.02em;color:var(--muted)}
nav.tabs button:hover{color:var(--ink)}
nav.tabs button[aria-selected="true"]{background:var(--brand);color:var(--on-brand)}

.meta{display:flex;flex-wrap:wrap;gap:6px 18px;color:var(--muted);font-size:13px;margin-bottom:14px}
.meta b{color:var(--ink);font-weight:600}

.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:18px}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px;text-align:left;display:flex;flex-direction:column;gap:2px}
button.tile:hover{border-color:var(--accent)}
.tile[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.tile .lbl{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}
.tile .val{font-family:var(--display);font-size:34px;font-weight:700;line-height:1.05}
.tile .sub{font-size:12px;color:var(--muted)}
.tile.todo .val{color:var(--accent)} .tile.warn .val{color:var(--warn)} .tile.danger .val{color:var(--danger)} .tile.ok .val{color:var(--ok)} .tile.exempt .val{color:var(--exempt)}

.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.search{flex:1 1 200px;max-width:320px;height:36px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:0 12px}
.chipset{display:flex;flex-wrap:wrap;gap:6px}
.chipset button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 12px;font-size:13px;font-weight:500}
.chipset button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chipset .n{font-family:var(--mono);font-size:12px;opacity:.75;margin-left:4px}

.list{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.row{display:grid;grid-template-columns:28px minmax(150px,1.3fr) 92px 120px minmax(250px,2fr);gap:10px 14px;align-items:center;padding:10px 14px;border-top:1px solid var(--line)}
.row:first-child{border-top:0}
.row.head{background:var(--surface-2);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600;padding-block:8px}
.row.sel{background:var(--accent-soft)}
.row input[type=checkbox]{width:16px;height:16px;accent-color:var(--brand)}
.who{min-width:0}
.name{background:none;border:0;padding:0;font-weight:600;font-size:15px;text-align:left;color:var(--ink);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;word-break:break-all}
.name:hover{text-decoration-color:var(--accent)}
.tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}
.tag{font-size:11px;font-weight:600;padding:1px 7px;border-radius:5px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line);white-space:nowrap;text-decoration:none}
.tag.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.tag.danger{background:var(--danger-soft);color:var(--danger);border-color:transparent}
.tag.exempt{background:var(--exempt-soft);color:var(--exempt);border-color:transparent}
.tag.new{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.att{display:flex;flex-direction:column;gap:4px}
.att .v{font-family:var(--mono);font-size:15px}
.att .v small{color:var(--muted);font-size:12px}
.bar{height:5px;background:var(--surface-2);border-radius:3px;overflow:hidden;border:1px solid var(--line)}
.bar i{display:block;height:100%;background:var(--warn)}
.bar i.zero{background:transparent}
.bar i.ok{background:var(--ok)}
.hist{display:flex;gap:3px;align-items:center}
.hist span{width:12px;height:18px;border-radius:3px;background:var(--none)}
.hist .ok{background:var(--ok)} .hist .low{background:var(--warn)} .hist .zero{background:var(--danger)} .hist .ex{background:var(--exempt)} .hist .out{background:transparent;border:1px dashed var(--line)}
.hist .cur{outline:2px solid var(--ink);outline-offset:1px}
.act{display:flex;flex-direction:column;gap:6px;min-width:0}
.seg{display:flex;flex-wrap:wrap;gap:4px}
.seg button{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:4px 9px;font-size:12.5px;font-weight:500;white-space:nowrap}
.seg button:hover{border-color:var(--muted)}
.seg button.sugg{border-color:var(--accent);color:var(--accent)}
.seg button[aria-pressed="true"].ok{background:var(--ok);border-color:var(--ok);color:var(--surface)}
.seg button[aria-pressed="true"].warn{background:var(--warn);border-color:var(--warn);color:var(--surface)}
.seg button[aria-pressed="true"].danger{background:var(--danger);border-color:var(--danger);color:var(--surface)}
.note{width:100%;border:1px solid var(--line);background:var(--surface-2);border-radius:7px;padding:5px 9px;font-size:13px}
.note::placeholder{color:var(--muted)}
.subseg{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.byline{font-size:11.5px;color:var(--muted)}
.empty{padding:32px 16px;text-align:center;color:var(--muted)}
.statusline{color:var(--muted);font-size:14px;padding:48px 0;text-align:center;max-width:520px;margin:0 auto}

.bulk{position:fixed;left:0;right:0;bottom:0;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:var(--band-bg);color:var(--band-ink);border-top:3px solid var(--brand);display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;z-index:20}
.bulk b{font-family:var(--display);font-size:18px;margin-right:6px;color:var(--brand)}
.bulk button{border:1px solid color-mix(in srgb,var(--band-ink) 30%,transparent);background:transparent;color:var(--band-ink);border-radius:7px;padding:5px 10px;font-size:13px}
.bulk button:hover{border-color:var(--brand);color:var(--brand)}
.bulk .sep{width:1px;height:22px;background:color-mix(in srgb,var(--band-ink) 25%,transparent)}

.ptable{width:100%;border-collapse:collapse;min-width:700px}
.ptable th{background:var(--surface-2);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600;text-align:left;padding:8px 12px}
.ptable td{border-top:1px solid var(--line);padding:9px 12px;vertical-align:middle}
.ptable td.r,.ptable th.r{text-align:right}
.scroll{overflow-x:auto}

.overlay{position:fixed;inset:0;background:rgb(10 14 20 / .45);z-index:30;display:flex}
.overlay.side{justify-content:flex-end}
.overlay.center{align-items:center;justify-content:center;padding:16px}
.drawer{background:var(--surface);width:min(560px,100%);height:100%;overflow-y:auto;padding:20px 20px 40px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:18px}
.modal{background:var(--surface);width:min(440px,100%);border-radius:14px;border:1px solid var(--line);padding:20px;display:flex;flex-direction:column;gap:14px;max-height:100%;overflow-y:auto}
.drawer h2,.modal h2{font-family:var(--display);font-size:30px;margin:0;line-height:1;word-break:break-all}
.drawer h3{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-weight:600}
.close{align-self:flex-end;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:4px 10px}
.form{display:grid;gap:10px}
.form label{display:grid;gap:4px;font-size:12px;color:var(--muted);font-weight:500}
.form select,.form input,.form textarea{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:7px 10px;font-size:14px}
.form textarea{min-height:70px;resize:vertical}
.form .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hint{font-size:12.5px;color:var(--muted);margin:0}
.msg{font-size:13px;padding:8px 10px;border-radius:8px}
.msg.err{background:var(--danger-soft);color:var(--danger)}
.msg.ok{background:var(--ok-soft);color:var(--ok)}
.saved{font-size:12px;color:var(--ok)}
.htable{width:100%;border-collapse:collapse;font-size:13px}
.htable td,.htable th{padding:6px 4px;border-top:1px solid var(--line);text-align:left;vertical-align:top}
.htable th{border-top:0;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.dec{font-weight:600}
.dec.ok{color:var(--ok)} .dec.warn{color:var(--warn)} .dec.danger{color:var(--danger)}
.toast{position:fixed;top:14px;left:50%;transform:translateX(-50%);padding:8px 14px;border-radius:8px;z-index:50;font-size:13px;max-width:calc(100% - 32px)}
.toast.err{background:var(--danger);color:#fff} .toast.ok{background:var(--ok);color:#fff}

.auth{max-width:380px;margin:8vh auto 0;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px;display:flex;flex-direction:column;gap:16px}
.auth h2{font-family:var(--display);font-size:28px;margin:0}
.auth .switch{display:flex;gap:4px;background:var(--surface-2);border-radius:9px;padding:3px}
.auth .switch button{flex:1;border:0;background:transparent;border-radius:7px;padding:6px;font-weight:600;color:var(--muted)}
.auth .switch button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgb(0 0 0 / .08)}
.auth .primary{width:100%}

.staffgrid{display:grid;gap:14px;max-width:640px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px}
.card h3{margin:0 0 10px;font-family:var(--display);font-size:20px}
.srow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--line);flex-wrap:wrap}
.srow:first-of-type{border-top:0}
.srow .ident{flex:1 1 180px;display:flex;flex-direction:column;min-width:0}
.srow .ident .mail{font-size:12px;color:var(--muted);word-break:break-all}
.badge{display:inline-block;min-width:20px;padding:0 6px;border-radius:999px;background:var(--danger);color:#fff;font-family:var(--mono);font-size:12px;line-height:20px;text-align:center;vertical-align:2px}
.hint.good{color:var(--ok)} .hint.bad{color:var(--danger)}
.btn.danger-btn{color:var(--danger)}
.btn.danger-btn[data-confirm="1"]{background:var(--danger);border-color:var(--danger);color:#fff}
.tag.role-owner{background:var(--brand);color:var(--on-brand);border-color:transparent}
.tag.role-admin{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.who-am-i b.me{color:var(--band-ink);font-weight:600}
.inline{display:flex;gap:8px;flex-wrap:wrap}
.inline input,.inline select{height:36px;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:0 10px}
.inline input{flex:1 1 200px}

/* fiches joueurs */
.alerts{display:grid;gap:8px;margin-bottom:14px}
.alert{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--muted);border-radius:10px;padding:10px 12px;display:grid;gap:8px}
.alert.danger{border-left-color:var(--danger)} .alert.warn{border-left-color:var(--warn)} .alert.new{border-left-color:var(--brand)}
.alert-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.alert-h b{font-family:var(--display);font-size:17px;letter-spacing:.02em}
.alert-h .n{font-family:var(--mono);font-size:12px;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:3px 4px 3px 9px;font-size:13px;font-weight:500}
.name.small{font-size:13px}
.mini{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:2px 8px;font-size:12px;font-weight:500;white-space:nowrap}
.mini:hover{border-color:var(--accent);color:var(--accent)}
.mini.danger-link{color:var(--danger);justify-self:start}
.pos b{font-weight:600}
.posrow{display:grid;grid-template-columns:130px 1fr auto;gap:6px;align-items:center}
.posrow select,.posrow input{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:6px 8px;font-size:14px;min-width:0}
#fPos{display:grid;gap:6px;margin-bottom:6px}
fieldset.checks{border:1px solid var(--line);border-radius:10px;padding:8px 12px 12px;margin:0;display:grid;gap:8px;min-width:0}
fieldset.checks legend{font-size:12px;color:var(--muted);font-weight:500;padding:0 4px}
label.check{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink)}
label.check input{width:16px;height:16px;accent-color:var(--brand)}
.form .inline input{flex:1 1 140px}
.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.actions p{flex-basis:100%;margin:0}
.msg:not(.err):not(.ok){background:var(--warn-soft);color:var(--warn)}
.timeline{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:13px}
.timeline li{border-left:2px solid var(--line);padding-left:10px}
.picks{display:grid;gap:4px;max-height:220px;overflow-y:auto}
.pick{display:flex;flex-wrap:wrap;align-items:center;gap:6px;text-align:left;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:6px 10px}
.pick:hover{border-color:var(--accent)}
.modal.wide{width:min(560px,100%)}
.rchip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:1px 8px 1px 6px;border-radius:999px;border:1px solid color-mix(in srgb,var(--c) 55%,transparent);background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--ink);white-space:nowrap}
.rchip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c)}
.rcell{display:flex;flex-wrap:wrap;gap:4px;max-width:260px}
.rdots{display:inline-flex;gap:3px;align-items:center}
.rdot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--c)}
.rfbtn .rdot{margin-right:6px}
.rfbtn[aria-pressed="true"]{background:color-mix(in srgb,var(--c) 22%,var(--surface))!important;color:var(--ink)!important;border-color:var(--c)!important}
.rtools{align-items:center}
.sortsel{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);margin-left:auto}
.sortsel select{height:32px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:0 8px}
.rchecks{display:flex;flex-wrap:wrap;gap:6px 14px}
.plan{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13px}
.plan ul{margin:6px 0 0;padding-left:18px;display:grid;gap:3px}
.addposte{display:grid;gap:8px;margin-bottom:14px}
.addposte .inline input{flex:1 1 180px}
.pcat{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--c);border-radius:10px;padding:8px 12px;margin-bottom:10px}
.pcat-h{display:flex;align-items:center;gap:8px;padding:4px 0 6px}
.pcat-h b{font-family:var(--display);font-size:18px}
.pcat-h .rdot{background:var(--c);width:11px;height:11px}
.pcat-h .n{font-family:var(--mono);font-size:12px;color:var(--muted)}
.prow{display:grid;grid-template-columns:minmax(150px,1.4fr) 120px minmax(120px,1fr) auto 70px auto;gap:6px;align-items:center;padding:4px 0;border-top:1px solid var(--line)}
.prow input,.prow select{height:30px;border:1px solid transparent;background:transparent;border-radius:6px;padding:0 6px;font-size:13.5px;min-width:0}
.prow input:hover,.prow select:hover,.prow input:focus,.prow select:focus{border-color:var(--line);background:var(--surface-2)}
.prow .pname{font-weight:600}
.pname-ro{font-weight:600}
@media (max-width:640px){.prow{grid-template-columns:1fr 1fr}}
.pchip{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:500;padding:1px 8px;border-radius:6px;border:1px solid color-mix(in srgb,var(--c) 50%,transparent);background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--ink);white-space:nowrap}
.pchip b{font-family:var(--mono);font-weight:600}
.catbar{display:flex;height:16px;border-radius:5px;overflow:hidden;margin:8px 0 2px;border:1px solid var(--line)}
.catbar span{background:var(--c);color:#111;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap}
.wmap{margin-top:16px}
.wmap h3{margin:0 0 6px;font-family:var(--display);font-size:20px}
.wmap details summary{cursor:pointer;padding:8px 0;font-weight:600}
.wrow{display:grid;grid-template-columns:minmax(200px,1.5fr) minmax(150px,1fr) 90px;gap:8px;align-items:center;padding:4px 0;border-top:1px solid var(--line)}
.wrow input{height:30px;border:1px solid var(--line);background:var(--surface-2);border-radius:6px;padding:0 8px;font-size:13.5px;min-width:0}
@media (max-width:640px){.wrow{grid-template-columns:1fr}}
.lvl{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;background:var(--c);color:#111;font-size:11px;font-weight:700;font-family:var(--mono)}
.posrow{grid-template-columns:110px 1fr 130px auto!important}
.posrow .pos-choice{grid-column:2 / 4;height:30px;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:0 8px;font-size:13px}
.parties{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:12px;align-items:start}
.party{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.party-h{display:flex;align-items:center;gap:8px;padding:2px 2px 8px}
.party-h b{font-family:var(--display);font-size:18px}
.party-h input{flex:1;height:30px;border:1px solid var(--line);background:var(--surface-2);border-radius:6px;padding:0 8px;font-weight:600}
.party-h .n{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--muted)}
.slot{display:grid;grid-template-columns:22px minmax(90px,1fr) minmax(120px,1.3fr) minmax(100px,1fr);gap:6px;align-items:center;padding:3px 4px 3px 6px;border-left:4px solid var(--c);border-radius:4px;margin-bottom:3px;background:color-mix(in srgb,var(--c) 7%,transparent)}
.slot.key{background:color-mix(in srgb,var(--c) 16%,transparent)}
.slot .star{border:0;background:none;color:var(--brand);font-size:15px;padding:0;line-height:1}
.slot .star[aria-pressed="false"]{color:var(--muted);opacity:.6}
.slot .sname{font-weight:600;font-size:13px;color:var(--ink)}
.slot .sholder{display:flex;align-items:center;gap:4px;min-width:0}
.slot .sinfo{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.slot .psel{min-width:0;flex:1;height:28px;border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:0 4px;font-size:12.5px}
.slot .ssub .psel{width:100%;opacity:.85}
.slot .sposte{grid-column:2 / 4;height:28px;border:1px solid var(--line);background:var(--surface-2);border-radius:6px;padding:0 6px}
.warnmark{color:var(--warn);font-weight:700}
.nowrap{flex-wrap:nowrap}
.addslot{margin:6px 0 2px}
.addparty{align-self:start}
@media (max-width:640px){.slot{grid-template-columns:22px 1fr}.slot .sholder,.slot .ssub{grid-column:2}}
.spill{display:inline-block;font-family:var(--mono);font-size:11.5px;font-weight:600;padding:0 6px;border-radius:5px;line-height:18px;white-space:nowrap;border:1px solid transparent}
.spill.ok{background:var(--ok-soft);color:var(--ok)} .spill.tol{background:var(--warn-soft);color:var(--warn)} .spill.low{background:var(--danger-soft);color:var(--danger)} .spill.none{background:var(--surface-2);color:var(--muted);border-color:var(--line)}
.spill.soft{opacity:.75}
.htable.spec td{vertical-align:middle}
.specline{display:grid;grid-template-columns:1fr auto 1fr auto;gap:6px}
.specline #spBranch{grid-column:1 / -1}
.specline select,.specline input{height:34px;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:0 8px;min-width:0}
.dropzone.small{padding:12px;font-size:13px}
@media (max-width:640px){.specline{grid-template-columns:1fr 1fr}}
.revs{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.rev{border-left:3px solid var(--line);padding:4px 0 4px 10px}
.rev-h{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:13px}
.rev-p{margin:3px 0 0;font-size:13px;line-height:1.45}
.ok-t{color:var(--ok);font-weight:700} .warn-t{color:var(--warn);font-weight:700}
.keystar{color:var(--brand)}
.revq td{vertical-align:middle}
.dposts{display:grid;gap:6px}
.dpost{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dpost select{height:30px;border:1px solid var(--line);background:var(--surface-2);border-radius:6px;padding:0 6px}
.tag.role-reviewer{background:var(--exempt-soft);color:var(--exempt);border-color:transparent}
.thsort{all:unset;cursor:pointer;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit}
.thsort.on{color:var(--ink)}
.thsort:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.perft td{white-space:nowrap}
.perfhelp{margin-top:12px} .perfhelp summary{cursor:pointer;font-weight:600;color:var(--ink)} .perfhelp p{margin:8px 0 0;line-height:1.5}
.mini-t{min-width:0} .mini-t td,.mini-t th{padding:6px 8px;white-space:nowrap}
.shots{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0}
.shot{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:4px;display:flex;flex-direction:column;gap:3px;align-items:center;font-size:11px;color:var(--muted);cursor:zoom-in}
.shot img{width:112px;height:68px;object-fit:cover;border-radius:5px;background:#000;display:block}
.shot:hover,.shot:focus-visible{border-color:var(--brand)}
.modal.shotm{width:min(1500px,100%);height:100%;gap:10px}
.shothead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px}
.shothead h2{margin:0}
.shotwrap{flex:1;min-height:0;overflow:auto;background:#000;border-radius:8px;text-align:center;display:flex;align-items:center;justify-content:center}
.shotwrap.zoomed{display:block;text-align:left}
.shotwrap img{cursor:zoom-in;display:block;margin:auto}
.shotwrap.zoomed img{cursor:zoom-out;margin:0}
.blayout{display:grid;grid-template-columns:230px 1fr;gap:14px;align-items:start}
@media (max-width:760px){ .blayout{grid-template-columns:1fr} .blist{max-height:220px} }
.blist{display:flex;flex-direction:column;gap:2px;max-height:72vh;overflow-y:auto;border:1px solid var(--line);border-radius:10px;padding:6px;background:var(--surface)}
.bpost{display:flex;align-items:center;gap:8px;text-align:left;border:0;background:none;border-radius:6px;padding:6px 8px;font-size:13px;color:var(--ink);cursor:pointer}
.bpost:hover,.bpost:focus-visible{background:var(--surface-2)}
.bpost.on{background:var(--surface-2);box-shadow:inset 3px 0 0 var(--brand);font-weight:600}
.bpost .n{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--muted)}
.bmainp{min-width:0;display:flex;flex-direction:column;gap:12px}
.bhead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}
.bhead h2,.bhead h3{margin:0}
.bslots{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin-top:10px}
.bslot{border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--surface-2);display:flex;flex-direction:column;gap:5px;min-width:0}
.bslot .bl{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.bmain{display:flex;align-items:center;gap:8px;font-size:13px}
.balts{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:12px}
.balt{display:inline-flex;align-items:center;gap:4px}
.bsp{font-size:12px;line-height:1.4;border-left:2px solid var(--brand);padding-left:6px}
.bnotes{margin:10px 0 0;font-size:13px;line-height:1.5;white-space:pre-line}
.iimg{flex:none;border-radius:6px;background:#0b0b0a}
.modal.buildm{width:min(980px,100%)}
.bedit{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:10px}
.bslotf{border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:6px;min-width:0}
.bslotf legend{font-weight:600;font-size:13px;padding:0 4px}
.bslotf input{height:32px;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:0 8px;min-width:0}
.ichips{display:flex;flex-direction:column;gap:4px}
.ichip{display:flex;align-items:center;gap:6px;font-size:12px;border:1px solid var(--line);border-radius:8px;padding:2px 4px}
.ichip.main{border-color:var(--brand)}
.ichip span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dbuild{margin:4px 0 8px}
.dbicons{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.cmp{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.cscore{font-family:var(--mono);font-weight:700;padding:1px 7px;border-radius:999px;font-size:12px}
.cscore.ok{background:var(--ok-soft);color:var(--ok)} .cscore.tol{background:var(--warn-soft);color:var(--warn)} .cscore.low{background:var(--danger-soft);color:var(--danger)} .cscore.none{color:var(--muted)}
.cslots{display:flex;flex-wrap:wrap;gap:6px}
.cslot{display:inline-flex;flex-direction:column;align-items:center;gap:2px;border:2px solid var(--line);border-radius:8px;padding:3px;position:relative}
.cslot.ok{border-color:var(--ok)} .cslot.tol{border-color:var(--warn)} .cslot.low{border-color:var(--danger)} .cslot.none{opacity:.55}
.cslot .cl{font-size:10px;color:var(--muted)}
.cslot:has(.carrow){flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:96px}
.cslot:has(.carrow) .cl{flex-basis:100%;text-align:center}
.carrow{font-size:12px;color:var(--danger);font-weight:700}
.cempty{display:inline-grid;place-items:center;width:34px;height:34px;color:var(--danger);font-weight:700}
.bplayers{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.cmpt td{vertical-align:middle}
.cgap{display:inline-block;font-size:12px;margin:1px 8px 1px 0;color:var(--warn)}
.discordbtn{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;height:46px;font-size:15px;background:#5865F2;border-color:#5865F2;color:#fff}
.discordbtn:hover{background:#4752c4;border-color:#4752c4}
.form .three{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media (max-width:640px){ .form .three{grid-template-columns:1fr} }
.actgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.actcard{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 14px;cursor:pointer;color:var(--ink)}
.actcard:hover,.actcard:focus-visible{border-color:var(--brand)}
.actwhen{font-size:12px;color:var(--brand);font-weight:600}
.actwhen::first-letter{text-transform:uppercase}
.acttitle{font-size:16px}
.actfoot{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.actmeta{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:14px}
.ok-msg{color:var(--ok)}
.actparties{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-top:10px}
.actparty{border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--surface-2)}
.actparty h4{margin:0 0 6px;font-size:13px}
.actslot{display:grid;grid-template-columns:1fr;gap:3px;padding:5px 6px 5px 9px;border-left:3px solid var(--c);margin-bottom:4px;border-radius:4px;background:var(--surface)}
.actslot.mine{outline:2px solid var(--brand)}
.actslot.dup{background:var(--danger-soft)}
.actposte{font-size:12px;font-weight:600}
.actwho{font-size:13px}
.actsel{height:30px;border:1px solid var(--line);background:var(--surface-2);border-radius:6px;padding:0 6px;min-width:0;width:100%}
.drmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:6px;margin-top:8px}
.drmap label{display:flex;align-items:center;gap:6px;font-size:13px}
.drmap input{flex:1;min-width:0;height:30px;border:1px solid var(--line);background:var(--surface-2);border-radius:6px;padding:0 6px}
.staffgrid.accounts{max-width:1100px}
.permgrid{min-width:0}
.permgrid th.vh{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;padding:8px 4px;text-align:left;font-size:11px}
.permgrid th.vh .rdot{margin-bottom:4px}
.permgrid td.c{text-align:center;padding:4px}
.permgrid td:first-child{font-size:13px;min-width:220px}
.permgrid input{width:16px;height:16px;cursor:pointer}
.accts{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.acct{border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:6px}
.acct-h{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.acct-r{display:flex;flex-wrap:wrap;align-items:center;gap:5px}
.rx{all:unset;cursor:pointer;color:var(--muted);font-size:11px;padding:0 2px}
.rx:hover,.rx:focus-visible{color:var(--danger)}
.addrole{height:26px;border:1px dashed var(--line);background:none;border-radius:999px;padding:0 8px;font-size:12px;color:var(--muted)}
.permlist{margin:6px 0 0;padding-left:18px;font-size:13px;line-height:1.6}
.dropzone{display:block;border:2px dashed var(--line);border-radius:12px;padding:22px 16px;text-align:center;color:var(--muted);cursor:pointer;font-size:14px}
.dropzone:hover,.dropzone:focus{border-color:var(--brand);color:var(--ink)}
.dcrows{display:grid;gap:6px}
.dcrow{display:grid;grid-template-columns:minmax(110px,1fr) 1.4fr 1.4fr auto;gap:6px;align-items:center;background:var(--surface-2);border-radius:8px;padding:6px 8px}
.dcrow input{height:30px;font-size:13px;flex:1 1 0;min-width:0}
.dcrow .inline{flex-wrap:nowrap;min-width:0}
.form label.chip{display:inline-flex;font-size:13px;color:var(--ink)}
.form label.check{display:flex;font-size:14px}
.form label.check input[type=date]{width:auto}
.modal.dc{width:min(860px,100%)}
.dcname{min-width:0;word-break:break-all}
@media (max-width:640px){.dcrow{grid-template-columns:1fr}}
textarea.export{min-height:320px;font-family:var(--mono);font-size:12.5px;line-height:1.5;white-space:pre;overflow:auto;resize:vertical}

@media (max-width:820px){
  .row{grid-template-columns:24px 1fr auto;grid-template-areas:"c w a" "c h h" "c x x"}
  .row.head{display:none}
  .row>.c{grid-area:c;align-self:start;margin-top:3px}
  .row>.who{grid-area:w}
  .row>.att{grid-area:a;min-width:80px}
  .row>.hist{grid-area:h}
  .row>.act{grid-area:x}
}
@media (prefers-reduced-motion:no-preference){.seg button,.tile,.chipset button{transition:background-color .12s,border-color .12s}}
.shotex{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0 12px}
.shotex figure{margin:0;display:flex;gap:10px;align-items:center;flex:1 1 280px;border:1px solid var(--line);border-radius:10px;padding:8px}
.shotex figure.ok{border-color:var(--ok)}
.shotex figure.ko{border-color:var(--bad,#c33);opacity:.85}
.shotex figcaption{font-size:13px}
.shotex svg{flex:none}
