:root{--bg:#f5f6f8;--panel:#fff;--ink:#1b2430;--muted:#5b6676;--line:#e2e6ec;--accent:#0b5cad;--accent-soft:#e6f0fa;--ok:#157347;--ok-soft:#e3f4ea;--warn:#9a6200;--warn-soft:#fdf3dc;--bad:#b3261e;--bad-soft:#fbe7e5;--neutral-soft:#eef0f3;--radius:8px;--side:232px;color:var(--ink);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent);cursor:pointer;text-decoration:none}a:hover{text-decoration:underline}h1{margin:0 0 4px;font-size:22px}h2{margin:0 0 12px;font-size:16px}h3{margin:16px 0 8px;font-size:14px}.muted{color:var(--muted)}.small{font-size:12px}.nowrap{white-space:nowrap}.right{text-align:right}.center{text-align:center}.topbar{color:#fff;z-index:10;background:#10243e;align-items:center;gap:16px;height:52px;padding:0 16px;display:flex;position:fixed;inset:0 0 auto}.topbar .brand{letter-spacing:.3px;width:calc(var(--side) - 16px);font-weight:700}.topbar .brand span{opacity:.6;font-weight:400}.topbar select{color:#fff;background:#1d3a5f;border:1px solid #2c4c75;border-radius:6px;padding:5px 8px}.topbar .spacer{flex:1}.topbar .user{opacity:.9;font-size:13px}.topbar .lang button{color:#cfe0f5;cursor:pointer;background:0 0;border:1px solid #2c4c75;border-radius:4px;padding:3px 8px}.topbar .lang button.on{color:#fff;background:#2c4c75}.side{width:var(--side);background:var(--panel);border-right:1px solid var(--line);padding:12px 8px;position:fixed;top:52px;bottom:0;left:0;overflow-y:auto}.side .group{text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:14px 8px 4px;font-size:11px}.side a{color:var(--ink);border-radius:6px;justify-content:space-between;align-items:center;padding:7px 10px;display:flex}.side a:hover{background:var(--neutral-soft);text-decoration:none}.side a.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.side a.off{color:#9aa3b0;cursor:default}.side a.off:hover{background:0 0}.side .count{background:var(--bad);color:#fff;border-radius:10px;padding:1px 7px;font-size:11px}.main{margin:52px 0 0 var(--side);max-width:1400px;padding:20px 28px 60px}.crumbs{color:var(--muted);margin-bottom:6px;font-size:12px}.head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;padding:16px;overflow-x:auto}.grid{gap:16px;display:grid}.g2{grid-template-columns:1fr 1fr}.g-side{grid-template-columns:1fr 320px}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;padding:14px 16px}.kpi .n{font-size:28px;font-weight:700}.kpi .l{color:var(--muted)}table{border-collapse:collapse;background:var(--panel);width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 10px}th{color:var(--muted);background:#fafbfc;font-size:12px;font-weight:600}tr.click:hover td{cursor:pointer;background:#f7faff}.tablewrap{border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}dl.kv{grid-template-columns:220px 1fr;gap:6px 16px;margin:0;display:grid}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0}.badge{background:var(--neutral-soft);color:var(--muted);white-space:nowrap;border-radius:10px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.info{background:var(--accent-soft);color:var(--accent)}.dot{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;font:inherit;border-radius:6px;padding:6px 12px}.btn:hover{border-color:#c4ccd7}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.bad{color:var(--bad)}.btn.small{padding:3px 8px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.btns{flex-wrap:wrap;align-items:center;gap:8px;display:flex}textarea{width:100%;min-height:60px}label.inline{align-items:center;gap:6px;display:inline-flex}.filters{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:16px;display:flex}.tabs a{color:var(--muted);border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px}.tabs a.on{color:var(--accent);border-color:var(--accent);font-weight:600}.tabs a:hover{color:var(--ink);text-decoration:none}.hint{border-left:4px solid var(--accent);background:var(--accent-soft);border-radius:4px;margin-bottom:8px;padding:10px 12px}.hint.warn{border-color:var(--warn);background:var(--warn-soft)}.hint.bad{border-color:var(--bad);background:var(--bad-soft)}.note{color:var(--muted);background:#fbfcfd;border:1px dashed #c9d1dc;border-radius:6px;margin-top:8px;padding:8px 10px;font-size:12px}.note b{color:var(--ink)}.progress{background:var(--neutral-soft);border-radius:4px;height:8px;overflow:hidden}.progress>div{background:var(--ok);height:100%}.item{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);margin-bottom:10px;padding:12px 14px;overflow-x:auto}.item.leagueonly{background:#fbf9ff;border-style:dashed}.item .top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.item .title{font-weight:600}.item .meta{color:var(--muted);margin-top:2px;font-size:12px}.versions{margin:8px 0 0;padding:0;list-style:none}.versions li{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px 10px;padding:4px 0;font-size:13px;display:flex}.versions li:last-child{border-bottom:0}.versions li>div{flex-basis:100%}.upload{margin-top:8px}.versions li.current{font-weight:600}.comments{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.comment{margin-bottom:6px;font-size:13px}.comment.leagueonly{background:#f6f1ff;border-radius:4px;padding:4px 6px}.matrix td,.matrix th{text-align:center;padding:6px 4px}.matrix td:first-child,.matrix th:first-child{text-align:left;padding-left:10px}.matrix th.rot{vertical-align:bottom;height:120px}.matrix th.rot div{writing-mode:vertical-rl;white-space:nowrap;margin:0 auto;transform:rotate(180deg)}.cell{border-radius:4px;width:22px;height:22px;font-size:12px;font-weight:700;line-height:22px;display:inline-block}.cell.ok{background:var(--ok-soft);color:var(--ok)}.cell.sub{background:var(--accent-soft);color:var(--accent)}.cell.bad{background:var(--bad-soft);color:var(--bad)}.cell.open{background:var(--neutral-soft);color:var(--muted)}.cell.na{color:#c3cad4}.backdrop{z-index:20;background:#10243e59;justify-content:center;align-items:flex-start;padding-top:10vh;display:flex;position:fixed;inset:0}.dialog{background:var(--panel);border-radius:10px;width:520px;max-width:calc(100vw - 32px);padding:20px;box-shadow:0 20px 50px #0003}.row{margin-bottom:12px}.row>label:not(.inline){color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.toasts{z-index:30;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{color:#fff;background:#10243e;border-radius:8px;max-width:420px;padding:10px 14px;box-shadow:0 6px 20px #0003}.toast.ok{background:var(--ok)}.person-head{align-items:center;gap:16px;display:flex}.avatar{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:flex}.lock{color:var(--muted);font-size:12px}.picker{min-width:280px;display:inline-block;position:relative}.picker-current{cursor:pointer;background:#fff;border:1px solid #cdd4de;border-radius:6px;padding:6px 8px}.th-sort{all:unset;cursor:pointer;white-space:nowrap}.th-sort:hover{text-decoration:underline}.th-sort:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.picker.fill{width:100%;min-width:0;display:block}.picker.fill .picker-current{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-pop{z-index:25;border:1px solid var(--line);background:#fff;border-radius:8px;width:360px;padding:8px;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 10px 30px #00000026}.picker-pop input{width:100%;margin-bottom:6px}.picker-item{cursor:pointer;border-radius:5px;padding:6px 8px}.picker-item:hover,.picker-item.on{background:var(--accent-soft)}.logo{border:1px solid var(--line);border-radius:12px;justify-content:center;align-items:center;width:96px;height:96px;font-size:24px;font-weight:800;display:flex}.logo.light{background:#fff}.logo.dark{background:#10243e;color:#fff!important}.logo.none{background:var(--neutral-soft);text-align:center;padding:6px;font-size:12px;font-weight:400;color:var(--muted)!important}.photo{color:#fff;vertical-align:middle;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:11px;font-weight:700;display:inline-flex}.photo.none{background:var(--neutral-soft);color:var(--muted);border:1px dashed #c3cad4}.reason{color:var(--muted);max-width:420px;margin-top:3px;font-size:12px;line-height:1.35}.reason:before{content:"ⓘ ";color:#8a95a5}.reason.warn{color:var(--warn)}.reason.warn:before{content:"⚠ ";color:var(--warn)}.side .off-item{color:#9aa3b0;padding:7px 10px}.side .off-item .reason{color:#a8b0bc;margin-top:1px}.login{max-width:980px;margin:48px auto;padding:0 16px}.login h1{margin-bottom:8px}.login .group-title{text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:24px 0 8px;font-size:12px}.login .people{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.person-card{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;font:inherit;color:inherit;padding:12px 14px}.person-card:hover{border-color:var(--accent);box-shadow:0 2px 8px #0b5cad1f}.person-card .name{font-weight:600}.person-card .role{color:var(--accent);margin-top:2px}.person-card .purpose{color:var(--muted);margin-top:4px;font-size:12px}.rights td.ok{color:var(--ok)}.check-ok{color:var(--ok);font-weight:600}.check-bad{color:var(--bad);font-weight:600}.topbar form{margin:0}.topbar .logout{color:#cfe0f5;cursor:pointer;background:0 0;border:1px solid #2c4c75;border-radius:4px;padding:4px 10px}.toast.bad{background:var(--bad)}fieldset.plain{border:0;min-width:0;margin:0;padding:0}input:not([type]),input[type=text],input[type=password],input[type=email],input[type=search],input[type=date],input[type=time],input[type=datetime-local],input[type=number],select,textarea{font:inherit;background:#fff;border:1px solid #cdd4de;border-radius:6px;padding:5px 8px}.dialog dl.kv{grid-template-columns:110px 1fr}.dialog{max-height:80vh;overflow-y:auto}.hints-toggle{color:#cfe0f5;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:13px;display:inline-flex}.hints-off .note{display:none}.hints-off .reason:not(.warn){cursor:help;vertical-align:middle;max-width:none;margin:0 4px 0 6px;font-size:0;display:inline-block}.hints-off .reason:not(.warn):before{font-size:14px}.hints-off .dialog .reason:not(.warn),.hints-off .side .reason:not(.warn){cursor:auto;max-width:420px;margin:3px 0 0;font-size:12px;display:block}.hints-off .dialog .reason:not(.warn):before,.hints-off .side .reason:not(.warn):before{font-size:inherit}.hint-tip{z-index:40;color:#fff;pointer-events:none;background:#10243e;border-radius:6px;max-width:360px;padding:7px 10px;font-size:12px;line-height:1.4;position:fixed;box-shadow:0 6px 20px #0003}.menu-toggle,.narrow-only,.side-backdrop{display:none}.menu-toggle{color:#fff;cursor:pointer;background:0 0;border:1px solid #2c4c75;border-radius:6px;padding:5px 9px;font-size:18px;line-height:1}.side-controls{border-bottom:1px solid var(--line);flex-direction:column;gap:8px;margin-bottom:8px;padding:4px 8px 12px;display:none}.side-controls select{width:100%}@media (width<=900px){.wide-only{display:none!important}.menu-toggle{display:inline-block}.narrow-only.side-controls{display:flex}.topbar{gap:10px;padding:0 12px}.topbar .brand{width:auto}.side{z-index:15;width:min(300px,85vw);transition:transform .2s;transform:translate(-100%);box-shadow:0 10px 30px #00000026}.side.open{transform:none}.side-backdrop{z-index:14;background:#10243e59;display:block;position:fixed;inset:52px 0 0}.main{margin-left:0;padding:16px 16px 48px}.head{flex-wrap:wrap;align-items:flex-start}.g2,.g3,.g-side{grid-template-columns:1fr}.g4{grid-template-columns:1fr 1fr}.panel{padding:12px}.panel>table{display:block;overflow-x:auto}.tabs{white-space:nowrap;scrollbar-width:none;overflow:auto hidden}.tabs a{margin-bottom:0}.backdrop{padding-top:16px}.dialog{width:calc(100vw - 16px);max-height:calc(100vh - 32px);padding:16px}.hint-tip{max-width:calc(100vw - 16px)}}@media (width<=600px){.topbar .brand span{display:none}dl.kv,.dialog dl.kv{grid-template-columns:1fr;gap:2px 0}dl.kv dd{margin-bottom:8px}.dialog .grid.g2{grid-template-columns:1fr}}.main,.grid>*{min-width:0}.topbar .user{white-space:nowrap}.topbar .person-select{width:auto;max-width:360px}@media (width<=1200px){.roomy-only{display:none!important}.topbar .brand{width:auto}.topbar .brand span{display:none}.topbar .person-select{max-width:260px}}.btns.wrap-narrow{flex-wrap:nowrap}@media (width<=1200px){.btns.wrap-narrow{flex-wrap:wrap}}
