:root{--orange: #fe6604;--orange-dark: #e25a00;--black: #111111;--grey-900: #1f1f1f;--grey-600: #5b5b5b;--grey-400: #9a9a9a;--grey-200: #e4e4e4;--grey-100: #efefef;--grey-50: #f6f6f6;--white: #ffffff;--red: #d23b3b;--green: #2f9e44;--sidebar-w: 232px;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .06)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--black);background:var(--grey-50);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--orange);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:22px;margin:0 0 4px}h2{font-size:16px;margin:0 0 12px}h3{font-size:13px;margin:0 0 8px;text-transform:uppercase;letter-spacing:.04em;color:var(--grey-600)}.shell{display:flex;min-height:100%}.sidebar{width:var(--sidebar-w);background:var(--white);border-right:1px solid var(--grey-200);display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0}.sidebar .brand{font-size:20px;font-weight:800;letter-spacing:-.02em;padding:22px 20px 18px}.sidebar .brand b{color:var(--orange)}.sidebar nav{flex:1;padding:6px 10px}.sidebar nav a{display:block;padding:9px 12px;margin:2px 0;border-radius:6px;color:var(--grey-900);font-weight:500}.sidebar nav a:hover{background:var(--grey-100);text-decoration:none}.sidebar nav a.active{background:var(--black);color:var(--white)}.user-menu{border-top:1px solid var(--grey-200);padding:12px;position:relative}.user-menu .user{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;cursor:pointer;padding:6px;border-radius:6px;text-align:left}.user-menu .user:hover{background:var(--grey-100)}.user-menu .avatar{width:32px;height:32px;border-radius:50%;background:var(--orange);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0;object-fit:cover}.user-menu .uname{font-weight:600;font-size:13px}.user-menu .urole{font-size:11px;color:var(--grey-400);text-transform:capitalize}.user-menu .dropdown{position:absolute;bottom:64px;left:12px;right:12px;background:#fff;border:1px solid var(--grey-200);border-radius:6px;box-shadow:var(--shadow);overflow:hidden}.user-menu .dropdown button{display:block;width:100%;text-align:left;padding:10px 12px;background:none;border:0;cursor:pointer;font-size:13px}.user-menu .dropdown button:hover{background:var(--grey-100)}.content{margin-left:var(--sidebar-w);flex:1;padding:28px 32px;max-width:1180px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.page-head .sub{color:var(--grey-600)}.card{background:#fff;border:1px solid var(--grey-200);border-radius:var(--radius);padding:18px;margin-bottom:16px}.card.flush{padding:0}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:6px;border:1px solid var(--grey-200);background:#fff;color:var(--black);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.btn:hover{background:var(--grey-100);text-decoration:none}.btn.primary{background:var(--orange);border-color:var(--orange);color:#fff}.btn.primary:hover{background:var(--orange-dark)}.btn.dark{background:var(--black);border-color:var(--black);color:#fff}.btn.dark:hover{background:var(--grey-900)}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.danger:hover{filter:brightness(.92)}.btn.sm{padding:5px 10px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-link{background:none;border:0;color:var(--orange);cursor:pointer;font-size:13px;padding:0}.btn-link.danger{color:var(--red)}label.field{display:block;margin-bottom:14px}label.field>span{display:block;font-size:12px;font-weight:600;color:var(--grey-600);margin-bottom:4px}input,select,textarea{width:100%;padding:8px 10px;font-size:13px;font-family:inherit;border:1px solid var(--grey-200);border-radius:6px;background:#fff;color:var(--black)}input:focus,select:focus,textarea:focus{outline:2px solid var(--orange);outline-offset:-1px}textarea{resize:vertical;min-height:70px}.row{display:flex;gap:12px}.row>*{flex:1}.hint{font-size:12px;color:var(--grey-400)}.error-text{color:var(--red);font-size:13px}table{width:100%;border-collapse:collapse}thead th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--grey-600);padding:10px 12px;border-bottom:1px solid var(--grey-200);white-space:nowrap}thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}thead th.sortable:hover{color:var(--black)}tbody td{padding:11px 12px;border-bottom:1px solid var(--grey-100)}tbody tr:last-child td{border-bottom:0}tbody tr.clickable{cursor:pointer}tbody tr.clickable:hover{background:var(--grey-50)}.num{text-align:right;font-variant-numeric:tabular-nums}.muted{color:var(--grey-400)}.empty{padding:32px;text-align:center;color:var(--grey-400)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.badge.new{background:#e7f0ff;color:#1a5fd0}.badge.pending{background:#fff2dd;color:#b9740a}.badge.waiting{background:#f0e8ff;color:#6b3fcf}.badge.done{background:#e3f7e8;color:#237a35}.badge.cancelled{background:var(--grey-100);color:var(--grey-600)}.badge.role-admin{background:var(--black);color:#fff}.badge.role-bestie{background:var(--grey-100);color:var(--grey-900)}.badge.suspended{background:#fde8e8;color:var(--red)}.badge.active{background:#e3f7e8;color:#237a35}.pill-due{color:var(--red);font-weight:700}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:5px 11px;border-radius:999px;border:1px solid var(--grey-200);background:#fff;font-size:12px;font-weight:600;cursor:pointer;color:var(--grey-600)}.chip.on{background:var(--black);border-color:var(--black);color:#fff}.chip-count{opacity:.6;margin-left:4px}.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:16px}.filters .field-inline{display:flex;flex-direction:column;gap:4px}.filters .field-inline>span{font-size:11px;font-weight:600;color:var(--grey-600)}.filters input,.filters select{width:auto;min-width:150px}.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.tile{background:#fff;border:1px solid var(--grey-200);border-radius:var(--radius);padding:20px;cursor:pointer;text-align:left;display:block}.tile:hover{border-color:var(--orange);text-decoration:none}.tile .tval{font-size:34px;font-weight:800;line-height:1}.tile .tlabel{color:var(--grey-600);margin-top:8px;font-weight:600}.tile.accent .tval{color:var(--orange)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--grey-200);margin-bottom:18px}.tabs button{padding:10px 16px;background:none;border:0;border-bottom:2px solid transparent;cursor:pointer;font-size:13px;font-weight:600;color:var(--grey-600);margin-bottom:-1px}.tabs button.on{color:var(--black);border-bottom-color:var(--orange)}.modal-backdrop{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.modal{background:#fff;border-radius:var(--radius);width:100%;max-width:460px;padding:22px;box-shadow:0 12px 40px #00000040;max-height:90vh;overflow:auto}.modal.wide{max-width:600px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.bulk-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--black);color:#fff;border-radius:6px;margin-bottom:12px}.bulk-bar select{width:auto}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px}.pagination{display:flex;align-items:center;gap:12px;justify-content:flex-end;margin-top:14px}.spinner-wrap{display:flex;align-items:center;justify-content:center;padding:60px;color:var(--grey-400)}.kv{display:grid;grid-template-columns:130px 1fr;gap:6px 14px}.kv dt{color:var(--grey-600);font-weight:600}.kv dd{margin:0}.total-row td{font-weight:700;border-top:2px solid var(--grey-200)}.inline-form td{background:var(--grey-50)}.center-screen{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-card{background:#fff;border:1px solid var(--grey-200);border-radius:12px;padding:40px;width:360px;text-align:center}.login-card .brand{font-size:30px;font-weight:800;margin-bottom:6px}.login-card .brand b{color:var(--orange)}.flash{padding:10px 14px;border-radius:6px;margin-bottom:14px;font-size:13px}.flash.err{background:#fde8e8;color:var(--red)}.flash.ok{background:#e3f7e8;color:#237a35}.section-gap{margin-top:22px}.checkbox-cell{width:36px}
