:root{--bg:#f6f7f9;--surface:#fff;--ink:#18212b;--muted:#5d6b79;--line:#dde2e8;--accent:#0b5f8a;--accent-ink:#fff;--danger:#b42318;--ok:#1a7f37;--l0:#fff;--l1:#e7eaee;--l2:#f8c9c4;--l3:#fbe29a;--l4:#b9e6c1;--l5:#6fcf97;--l1-ink:#3c4752;--l2-ink:#7a1d14;--l3-ink:#6b4d00;--l4-ink:#135c2a;--l5-ink:#0b3d1c;--radius:8px;color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);margin:0}body{font-size:15px;line-height:1.45}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{letter-spacing:-.01em;margin:0 0 4px;font-size:1.45rem}h2{margin:28px 0 10px;font-size:1.1rem}.sub{color:var(--muted);margin:0 0 18px}.top{background:var(--surface);border-bottom:1px solid var(--line);z-index:20;position:sticky;top:0}.top .inner{flex-wrap:wrap;align-items:center;gap:22px;max-width:1600px;margin:0 auto;padding:10px 20px;display:flex}.brand{color:var(--ink);white-space:nowrap;font-weight:700}.brand small{color:var(--muted);margin-left:6px;font-weight:400}.nav{flex-wrap:wrap;flex:1;gap:4px;display:flex}.nav a{color:var(--ink);border-radius:6px;padding:6px 10px}.nav a:hover{background:var(--bg);text-decoration:none}.who{color:var(--muted);align-items:center;gap:10px;font-size:.9rem;display:flex}main{max-width:1600px;margin:0 auto;padding:22px 20px 60px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.narrow{max-width:440px;margin:48px auto}label{margin:12px 0 4px;font-size:.9rem;font-weight:600;display:block}input[type=text],input[type=email],input[type=password],input[type=number],select,textarea{border:1px solid var(--line);width:100%;font:inherit;color:var(--ink);background:#fff;border-radius:6px;padding:8px 10px}textarea{min-height:60px}button,.btn{border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);font:inherit;cursor:pointer;border-radius:6px;padding:8px 14px;font-weight:600;display:inline-block}button.secondary,.btn.secondary{color:var(--accent);background:#fff}button.small{padding:4px 10px;font-size:.85rem}.linkbtn{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-weight:400}.msg{border-radius:6px;margin:12px 0;padding:10px 12px}.msg.err{color:var(--danger);background:#fdecea}.msg.ok{color:var(--ok);background:#e8f5ec}.hint{color:var(--muted);font-size:.88rem}.toolbar{flex-wrap:wrap;align-items:end;gap:10px;margin:14px 0;display:flex}.toolbar label{color:var(--muted);margin:0 0 4px;font-size:.8rem}.toolbar input,.toolbar select{width:auto;min-width:150px}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;margin:6px 0 12px;display:flex}.tabs a{color:var(--muted);border:1px solid #0000;border-radius:6px 6px 0 0;margin-bottom:-1px;padding:8px 12px}.tabs a.on{color:var(--ink);background:var(--surface);border-color:var(--line);border-bottom-color:var(--surface);font-weight:600}.legend{color:var(--muted);flex-wrap:wrap;gap:8px 14px;font-size:.85rem;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.lv{border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;min-width:26px;height:24px;padding:0 6px;font-size:.85rem;font-weight:700;display:inline-flex;position:relative}.lv-0{background:var(--l0);color:#b3bcc6;border-color:var(--line);font-weight:400}.lv-1{background:var(--l1);color:var(--l1-ink)}.lv-2{background:var(--l2);color:var(--l2-ink)}.lv-3{background:var(--l3);color:var(--l3-ink)}.lv-4{background:var(--l4);color:var(--l4-ink)}.lv-5{background:var(--l5);color:var(--l5-ink)}.lv .pend{background:var(--accent);border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:-5px;right:-5px}.lv.wide{min-width:0;padding:0 9px;font-weight:600}.matrix-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);max-height:calc(100vh - 250px);overflow:auto}table.matrix{border-collapse:separate;border-spacing:0;font-size:.85rem}table.matrix th,table.matrix td{border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;padding:4px 5px}table.matrix thead th{background:var(--surface);z-index:2;vertical-align:bottom;height:185px;position:sticky;top:0}table.matrix thead th .rot{writing-mode:vertical-rl;text-align:left;text-overflow:ellipsis;max-height:175px;font-weight:600;overflow:hidden;transform:rotate(180deg)}table.matrix thead th a{color:var(--ink)}table.matrix th.name,table.matrix td.name{background:var(--surface);text-align:left;z-index:1;border-right:1px solid var(--line);position:sticky;left:0}table.matrix thead th.name{z-index:3;vertical-align:bottom}table.matrix td.name a{color:var(--ink);font-weight:600}table.matrix td.name .meta{color:var(--muted);margin-left:4px;font-size:.78rem;font-weight:400}table.matrix tbody tr:hover td{background:#f1f6fa}table.matrix td a.cell:hover{filter:brightness(.95);text-decoration:none}table.list{border-collapse:collapse;background:var(--surface);width:100%}table.list th,table.list td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 10px}table.list th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.8rem;font-weight:600}table.list input,table.list select{padding:5px 7px}.apt-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(180px,1.2fr) 150px minmax(320px,2fr);align-items:center;gap:14px;padding:10px 14px;display:grid}.apt-row:last-child{border-bottom:0}.apt-row .nm{font-weight:600}.apt-row .nm small{color:var(--muted);font-weight:400;display:block}.rate-form{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.rate-form select{width:auto}.rate-form input[type=text]{flex:1;width:auto;min-width:140px}.mine{color:var(--muted);font-size:.8rem}.others{color:var(--muted);margin-top:4px;font-size:.8rem}.groups{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.groups .card h3{align-items:center;gap:8px;margin:0 0 8px;font-size:1rem;display:flex}.groups ul{margin:0;padding-left:18px}@media (max-width:760px){.apt-row{grid-template-columns:1fr;gap:6px}main{padding:16px 12px 40px}}.apt-row.dirty{box-shadow:inset 4px 0 0 var(--accent);background:#fff8e1}.savebar{z-index:10;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:var(--muted);justify-content:flex-end;align-items:center;gap:14px;margin-top:18px;padding:12px 16px;display:flex;position:sticky;bottom:0;box-shadow:0 -4px 14px #0000000f}.savebar.on{border-color:var(--accent);color:var(--ink);font-weight:600}.savebar button:disabled{opacity:.45;cursor:default}
