*{box-sizing:border-box}body{margin:0;font-family:Georgia,Times New Roman,serif;background:#e8dfc8;color:#2b2118;font-size:15px}a{color:#1a3a6b;text-decoration:none}h1,h2,h3{font-family:Georgia,Times New Roman,serif}.shell{display:flex;min-height:100vh}.sidebar{width:210px;background:#1a3a6b;color:#f3ead2;padding:14px 10px;position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;border-right:4px double #c9a227}.sidebar h2{color:#f3ead2;margin:0 6px 14px;font-size:19px;text-align:center;padding-bottom:10px;border-bottom:1px dashed #c9a227;letter-spacing:.05em}.sidebar a{display:block;padding:8px 12px;margin-bottom:3px;color:#f3ead2;border:1px solid transparent}.sidebar a:hover{background:#274b86;border:1px solid #c9a227}.sidebar a.active{background:#f3ead2;color:#1a3a6b;border:1px solid #c9a227;font-weight:700}.main,.sidebar .spacer{flex:1 1}.main{padding:22px;min-width:0}.main h1{margin:0 0 16px;font-size:26px;padding-bottom:6px;border-bottom:3px double #7a5c2e;color:#4a3519}.card{background:#f8f2e0;border:2px solid #7a5c2e;padding:14px;box-shadow:3px 3px 0 #b8a67a}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:14px;gap:14px;margin-bottom:18px}.stat .label{color:#6b5532;font-size:12px;text-transform:uppercase;letter-spacing:.08em}.stat .value{font-size:28px;font-weight:700;margin-top:6px;color:#1a3a6b}.table-wrap{overflow-x:auto;border:2px solid #7a5c2e;box-shadow:3px 3px 0 #b8a67a;background:#f8f2e0}table{width:100%;border-collapse:collapse}td,th{padding:8px 10px;text-align:left;border:1px solid #c9b88a;white-space:nowrap}th{background:#d9c99b;font-size:13px;color:#3b2a10;text-transform:uppercase;letter-spacing:.05em}tr:nth-child(2n) td{background:#f0e8cf}td.wrap{white-space:normal;min-width:200px}.avatar{width:32px;height:32px;object-fit:cover;background:#d9c99b;border:1px solid #7a5c2e;display:inline-block;vertical-align:middle}.avatar.ph{display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:#4a3519}.userCell{display:flex;align-items:center;gap:8px}.btn,button{font-family:inherit;border:2px outset #d9d2bd;padding:5px 12px;cursor:pointer;font-size:14px;background:#d9d2bd;color:#2b2118}button:active{border-style:inset}button:hover{background:#e6dfc9}button.primary{background:#1a3a6b;color:#f3ead2;border-color:#4d6aa0 #0e2347 #0e2347 #4d6aa0}button.danger{background:#8b1e1e;color:#fff;border-color:#c25a5a #4d0e0e #4d0e0e #c25a5a}button.success{background:#2f6b2f;color:#fff;border-color:#6aa36a #173b17 #173b17 #6aa36a}button:disabled{opacity:.5;cursor:not-allowed}.actions{display:flex;gap:6px}input,select,textarea{width:100%;font-family:inherit;padding:7px 8px;border:2px inset #cfc6ad;font-size:15px;background:#fffdf5;color:#2b2118}.toolbar{display:flex;gap:10px;margin-bottom:14px;align-items:center;flex-wrap:wrap}.toolbar input{max-width:280px}.tabs{display:flex;gap:4px;margin-bottom:14px}.tabs button.active{background:#f8f2e0;font-weight:700;border-style:inset}.badge{padding:1px 8px;font-size:12px;border:1px solid #7a5c2e;background:#e9deb8}.badge.green{background:#cfe6c3}.badge.red{background:#f0c4c4}.badge.gold{background:#f1de9a}.pager{display:flex;gap:10px;align-items:center;margin-top:14px}.empty,.muted{color:#6b5532;padding:14px}.error{color:#8b1e1e;margin:8px 0;font-weight:700}.overlay{position:fixed;inset:0;background:rgba(43,33,24,.5);display:flex;align-items:center;justify-content:center;z-index:10;padding:16px}.modal{background:#f8f2e0;border:3px double #7a5c2e;padding:18px;width:100%;max-width:420px}.modal h3{margin-top:0;border-bottom:1px dashed #7a5c2e;padding-bottom:6px}.field{margin-bottom:12px}.field label{display:block;font-size:12px;color:#6b5532;margin-bottom:4px;text-transform:uppercase;letter-spacing:.05em}.formgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:12px;gap:12px}.loginWrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.loginWrap .card{width:100%;max-width:360px;border:3px double #7a5c2e}.loginWrap h2{text-align:center;color:#1a3a6b;padding-bottom:8px}.loginWrap h2,.sectionTitle{border-bottom:1px dashed #7a5c2e}.sectionTitle{margin:22px 0 10px;font-size:17px}.switchRow{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}@media (max-width:760px){.shell{flex-direction:column}.sidebar{height:auto;position:static;flex-direction:row;flex-wrap:wrap;gap:4px;border-right:0;border-bottom:4px double #c9a227}.sidebar,.sidebar h2{width:100%}.sidebar .spacer{display:none}.main{padding:14px}}.sidebar{overflow-y:auto}.sidebar .grp{margin:12px 8px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#c9a227}.modal{max-height:90vh;overflow-y:auto}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:14px;gap:14px}.imgcard{background:#f8f2e0;border:2px solid #7a5c2e;box-shadow:3px 3px 0 #b8a67a;padding:10px;display:flex;flex-direction:column;gap:8px}.imgcard .pic{height:130px;background:#d9c99b;border:1px solid #7a5c2e;display:flex;align-items:center;justify-content:center;overflow:hidden}.imgcard .pic img{max-width:100%;max-height:100%;object-fit:contain}.thumb{width:48px;height:48px;object-fit:contain;background:#d9c99b;border:1px solid #7a5c2e;vertical-align:middle}.chips{display:flex;gap:6px;flex-wrap:wrap}.chips button{padding:3px 8px;font-size:13px}.chips button.on{background:#2f6b2f;color:#fff;border-color:#6aa36a #173b17 #173b17 #6aa36a}.modal.wide{max-width:640px}.thumb.sq{width:56px;height:56px;object-fit:cover}.commentRow{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed #c9b88a}audio{height:32px;max-width:220px}pre{background:#fffdf5;border:1px solid #c9b88a;padding:8px;overflow-x:auto;white-space:pre-wrap}code{background:#e9deb8;padding:0 4px}.modal.xl{max-width:920px}.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-gap:10px 16px;gap:10px 16px}.kv b{display:block;font-size:11px;font-weight:400;color:#6b5532;text-transform:uppercase;letter-spacing:.05em}.kv span{font-size:15px;word-break:break-word}