:root{--green-900:#0f1a14;--green-700:#1e3327;--green-100:#e8efe9;--gold:#a8853f;--grey-50:#fafaf8;--grey-100:#f1f0ec;--grey-300:#d9d7d0;--grey-600:#5f5d57;--grey-900:#1c1c1a;--red:#a3352b;--blue:#2c5d7c;--radius:8px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:17px;line-height:1.5;color:var(--grey-900);background:var(--grey-50)}a{color:var(--green-700)}.topbar{background:var(--green-900);color:#fff;padding:14px 24px;display:flex;align-items:center;gap:28px;flex-wrap:wrap}.topbar .brand{font-size:1.25rem;font-weight:600;letter-spacing:.5px}.topbar nav{display:flex;gap:6px;flex-wrap:wrap}.topbar nav a{color:#cfd8d1;text-decoration:none;padding:9px 16px;border-radius:var(--radius);font-size:1.02rem}.topbar nav a:hover{background:rgba(255,255,255,.1);color:#fff}.topbar nav a.active{background:var(--gold);color:#fff;font-weight:600}.yearbar{background:var(--green-100);border-bottom:2px solid var(--grey-300);padding:12px 24px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.yearbar .label{font-weight:600;color:var(--green-700)}.yearbar a{text-decoration:none;padding:8px 20px;border:2px solid var(--grey-300);border-radius:var(--radius);background:#fff;color:var(--grey-900);font-size:1.05rem;font-weight:600}.yearbar a.on{background:var(--green-700);border-color:var(--green-700);color:#fff}main{padding:28px 24px 120px;max-width:1280px;margin:0 auto}h1{font-size:1.7rem;margin:0 0 6px}h2{font-size:1.25rem;margin:32px 0 12px}.hint{color:var(--grey-600);margin:0 0 22px}.tablewrap{overflow-x:auto;border:1px solid var(--grey-300);border-radius:var(--radius);background:#fff}table{border-collapse:collapse;width:100%}td,th{padding:10px 12px;text-align:left;border-bottom:1px solid var(--grey-100);white-space:nowrap}th{background:var(--grey-100);font-size:.82rem;text-transform:uppercase;letter-spacing:.6px;color:var(--grey-600);position:-webkit-sticky;position:sticky;top:0}tbody tr:hover{background:#fbfaf6}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.muted{color:var(--grey-600)}.pos{color:var(--green-700)}.neg,.pos{font-weight:600}.neg{color:var(--red)}input[type=number],input[type=text]{font:inherit;padding:7px 10px;border:1px solid var(--grey-300);border-radius:6px;background:#fff;width:100%;min-width:90px}input:focus{outline:3px solid #cfe0d4;border-color:var(--green-700)}input.changed{border-color:var(--gold);background:#fffdf5;box-shadow:0 0 0 2px #f0e3c6}td.num input{text-align:right}.savebar{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:2px solid var(--grey-300);padding:14px 24px;display:flex;align-items:center;gap:16px;box-shadow:0 -4px 16px rgba(0,0,0,.07)}button{font:inherit;font-weight:600;padding:12px 30px;border:0;border-radius:var(--radius);background:var(--green-700);color:#fff;cursor:pointer}button:hover{background:var(--green-900)}button:disabled{background:var(--grey-300);color:var(--grey-600);cursor:default}.ok,.warn{padding:12px 16px;border-radius:var(--radius);margin-bottom:20px;font-weight:500}.ok{background:#e6f2e8;border:1px solid #b6d6bd;color:#1d5129}.warn{background:#fdf3e0;border:1px solid #e8cf9a;color:#7a5310}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:14px;gap:14px;margin-bottom:12px}.card{background:#fff;border:1px solid var(--grey-300);border-radius:var(--radius);padding:18px}.card .k{font-size:.8rem;text-transform:uppercase;letter-spacing:.6px;color:var(--grey-600)}.card .v{font-size:1.9rem;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-top:4px}.card .u{font-size:.85rem;color:var(--grey-600)}.loginwrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(160deg,var(--green-900) 0,var(--green-700) 100%)}.loginbox{background:#fff;border-radius:12px;padding:40px 36px;width:100%;max-width:420px;box-shadow:0 20px 50px rgba(0,0,0,.25)}.loginbox h1{font-size:1.4rem;margin:0 0 6px;letter-spacing:1px}.loginbox label{display:block;margin:18px 0 6px;font-weight:600;font-size:.95rem}.loginbox input{width:100%;padding:12px;font-size:1.05rem}.loginbox button{width:100%;margin-top:26px;padding:14px;font-size:1.05rem}input[type=password]{font:inherit;padding:7px 10px;border:1px solid var(--grey-300);border-radius:6px;background:#fff}.who{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:.95rem}.who .name{color:#fff}.who .role{background:rgba(255,255,255,.16);color:#e8efe9;padding:3px 11px;border-radius:20px;font-size:.82rem}.who button{background:transparent;border:1px solid rgba(255,255,255,.35);color:#cfd8d1;padding:7px 15px;font-size:.92rem;font-weight:500}.who button:hover{background:rgba(255,255,255,.12);color:#fff}.small{font-size:.9rem;color:var(--grey-600);margin-top:20px;text-align:center}.small code{background:var(--grey-100);padding:4px 8px;border-radius:4px;letter-spacing:1px}.steps{margin:0 0 18px;padding-left:20px;color:var(--grey-600);font-size:.95rem}.steps li{margin-bottom:6px}.qr{display:block;margin:0 auto 14px;border-radius:8px}input.code{font-size:1.9rem;letter-spacing:10px;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding:12px}.panel{background:#fff;border:1px solid var(--grey-300);border-radius:var(--radius);padding:22px;margin-bottom:32px}.panel h2{margin-top:0}.inviteform{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:14px;gap:14px;align-items:end}.inviteform label{font-weight:600;font-size:.88rem;margin-bottom:5px}.inviteform .check{display:flex;align-items:center;gap:8px;font-weight:500;padding-bottom:9px}.inviteform .check input{width:auto}select{font:inherit;padding:7px 10px;border:1px solid var(--grey-300);border-radius:6px;background:#fff;width:100%}.linkbox{margin-top:10px;font-family:ui-monospace,Menlo,monospace;font-size:.85rem;background:#fff}.actions{display:flex;gap:6px;flex-wrap:wrap}button.mini{padding:6px 12px;font-size:.85rem;font-weight:500;background:var(--grey-100);color:var(--grey-900);border:1px solid var(--grey-300)}button.mini:hover{background:var(--grey-300)}button.mini.danger{color:var(--red);border-color:#e3bdb8}button.mini.danger:hover{background:#f7e6e4}.tag{display:inline-block;margin-left:6px;padding:2px 9px;border-radius:20px;background:var(--grey-100);color:var(--grey-600);font-size:.78rem}.tag.ok-tag{background:#e6f2e8;color:#1d5129}tr.inactive{opacity:.55}.editbar{display:flex;align-items:center;gap:14px;margin-bottom:14px}.tablewrap.editing{box-shadow:0 0 0 3px #f0e3c6;border-color:var(--gold)}input.locked{border-color:transparent;background:transparent;cursor:default;padding-left:0;padding-right:0}input.locked:focus{outline:none}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:18px 0 14px}.filters input[type=text]{max-width:340px}.filters select{max-width:280px}.filters .mini{display:inline-block;text-decoration:none;line-height:1.4}input[type=file]{font:inherit;padding:10px;border:1px dashed var(--grey-300);border-radius:var(--radius);background:var(--grey-50);width:100%}tr.clickable{cursor:pointer}tr.clickable:hover{background:var(--green-100)}tr.detailrow>td{background:var(--grey-50);padding:0 12px 14px}table.detail{width:auto;min-width:620px;margin:0;background:#fff;border:1px solid var(--grey-300);border-radius:var(--radius);overflow:hidden}table.detail th{background:#fff;border-bottom:1px solid var(--grey-300);font-size:.74rem;position:static}table.detail td{padding:8px 12px}table.detail tr:last-child td{border-bottom:0}table.detail input{min-width:90px}th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}th.sortable:hover{background:var(--green-100);color:var(--green-700)}.yearbar .addyear{border-style:dashed;background:transparent;color:var(--green-700);font-weight:600}.yearbar .addyear:hover:not(:disabled){background:#fff;border-style:solid}.userpanel{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:24px;gap:24px;padding:14px 4px 6px}.userpanel h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.6px;color:var(--grey-600);margin:0 0 10px}.accessform{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.accessform label{display:grid;grid-template-columns:150px 1fr;align-items:center;grid-gap:10px;gap:10px;width:100%}.accessform label span{font-size:.88rem;color:var(--grey-600)}.btnrow{display:flex;flex-wrap:wrap;gap:8px}.btnrow button{font-size:.85rem;padding:7px 12px;background:#fff;border:1px solid var(--grey-300);color:inherit;border-radius:var(--radius);cursor:pointer}.btnrow button:hover:not(:disabled){border-color:var(--grey-600)}.btnrow button.danger{color:#9b2226;border-color:#e6c3c4}.btnrow button:disabled{opacity:.5;cursor:default}.inviteform .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:0 18px;gap:0 18px}.inviteform .grid p{margin:0 0 12px}.inviteform label{display:block;font-size:.85rem;color:var(--grey-600);margin-bottom:4px}.inviteform input,.inviteform select{width:100%}.inviteform .radios{display:flex;gap:20px;margin:6px 0 14px}.inviteform .radios label{display:flex;align-items:center;gap:7px;color:inherit;margin:0}.inviteform .radios input{width:auto}details.panel>summary{cursor:pointer;font-weight:600}.topbar .menu{position:relative;display:inline-flex}.topbar .menu>button{background:none;border:none;font:inherit;color:inherit;cursor:pointer;padding:6px 10px;border-radius:var(--radius);opacity:.85;display:inline-flex;align-items:center;gap:5px}.topbar .menu>button:hover{opacity:1}.topbar .menu>button.active{opacity:1;font-weight:600}.topbar .menu .caret{font-size:.7em;opacity:.7}.topbar .dropdown{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:190px;padding:6px;background:#fff;color:#1a1a1a;border:1px solid var(--grey-300);border-radius:var(--radius);box-shadow:0 8px 24px rgba(0,0,0,.14);display:flex;flex-direction:column}.topbar .dropdown a{padding:8px 10px;border-radius:6px;text-decoration:none;color:inherit;opacity:1;font-size:.93rem}.topbar .dropdown a:hover{background:var(--grey-100,#f4f4f4)}.topbar .dropdown a.active{font-weight:600}.loginbox .brandmark.small{display:block;height:46px;width:auto;margin:0 0 18px}.topbar .navmark{height:30px;width:auto;display:block;flex:0 0 auto}.topbar .brand{margin-left:2px}