*{box-sizing:border-box;margin:0;padding:0}body{background:#0b1220;font-family:Karla,system-ui,sans-serif}.app-root{background:var(--bg);min-height:100vh;color:var(--tx);--bg:#0b1220;--panel:#141d2b;--bd:#ffffff14;--tx:#d7e0ec;--mut:#7d8aa0;--hd:#f2f6fb;--ac:#8fa2f0;--acx:#101a45;--gold:#d9a441}.app-root[data-theme=light]{--bg:#eef1f7;--panel:#fff;--bd:#2b3a8c24;--tx:#34405a;--mut:#6b7590;--hd:#1f2a55;--ac:#2b3a8c;--acx:#fff;--gold:#b7841f}a{color:var(--gold);text-decoration:none}h1,h2,h3,.serif{font-family:Zilla Slab,serif}.panel{background:var(--panel);border:1px solid var(--bd);border-radius:18px}.portal-header{text-align:center;padding:48px 32px 16px}.portal-header h1{color:var(--hd);font-size:2.5rem}.portal-header p{color:var(--mut);margin-top:8px}.tile-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;max-width:960px;margin:0 auto;padding:16px 32px 48px;display:grid}.tile-grid-empty{max-width:960px;color:var(--mut);text-align:center;margin:0 auto;padding:16px 32px 48px}.tile{color:var(--tx);padding:24px;transition:transform .15s;display:block}.tile:hover{border-color:var(--ac);transform:translateY(-2px)}.tile-logo{width:56px;height:56px;margin-bottom:12px}.tile h2{color:var(--hd);margin-bottom:8px}.tile p{color:var(--mut)}.header-account{max-width:960px;color:var(--mut);justify-content:flex-end;align-items:center;gap:12px;margin:0 auto;padding:0 32px;font-size:14px;display:flex}.header-account a,.header-account button{color:var(--tx)}.header-account button{cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.auth-view{max-width:420px;margin:48px auto;padding:32px}.auth-view h1{color:var(--hd);margin-bottom:8px}.auth-view p{color:var(--mut);margin-bottom:24px}.field{margin-bottom:16px;display:block}.field-label{color:var(--mut);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.field input{border:1px solid var(--bd);background:var(--bg);width:100%;color:var(--tx);border-radius:10px;padding:10px 14px;font-size:15px}.form-error{color:#e0574d;margin-bottom:16px;font-size:14px}.form-success{color:#6ecb8c;margin-bottom:16px;font-size:14px}.btn-primary{background:var(--ac);color:var(--acx);cursor:pointer;border:none;border-radius:12px;width:100%;padding:12px 20px;font-size:15px;font-weight:700}.btn-primary:disabled{opacity:.6;cursor:default}.btn-google{box-sizing:border-box;text-align:center;border:1px solid var(--bd);background:var(--panel);color:var(--tx);border-radius:12px;width:100%;margin-bottom:16px;padding:12px 20px;font-size:15px;font-weight:700;display:block}.btn-google:hover{border-color:var(--ac)}.auth-view-divider{color:var(--mut);text-align:center;margin-bottom:16px;font-size:13px}.auth-view-footer{margin-top:16px;font-size:14px}.btn-link{color:var(--gold);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.btn-link:disabled{opacity:.5;cursor:default}.admin-view{max-width:960px;margin:0 auto;padding:32px}.admin-view-header{justify-content:space-between;align-items:baseline;margin-bottom:24px;display:flex}.admin-view-header h1{color:var(--hd)}.admin-tabs{border-bottom:1px solid var(--bd);gap:8px;margin-bottom:24px;display:flex}.admin-tab{color:var(--mut);cursor:pointer;font:inherit;background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 4px;font-weight:600}.admin-tab-active{color:var(--hd);border-bottom-color:var(--ac)}.admin-panel{margin-bottom:24px;padding:24px}.admin-table-timestamp{white-space:nowrap;color:var(--mut)}.admin-panel h2{color:var(--hd);margin-bottom:16px;font-size:1.2rem}.admin-invite-form{max-width:420px}.admin-checkbox-field{align-items:center;gap:8px;display:flex}.admin-checkbox-field input{width:auto}.admin-grant-row{color:var(--tx);justify-content:space-between;align-items:center;gap:12px;padding:4px 0;font-size:14px;display:flex}.admin-grant-row select,.admin-table select{background:var(--bg);color:var(--tx);border:1px solid var(--bd);font:inherit;border-radius:8px;padding:4px 8px}.admin-table-wrap{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:14px}.admin-table th{text-align:left;color:var(--mut);border-bottom:1px solid var(--bd);padding:8px 10px;font-size:13px;font-weight:600}.admin-table td{border-bottom:1px solid var(--bd);color:var(--tx);vertical-align:top;padding:10px}.admin-table-actions{white-space:nowrap;flex-direction:column;align-items:flex-start;gap:6px;display:flex}.admin-row-toggle{font:inherit;color:inherit;text-align:left;cursor:default;background:0 0;border:none;margin:0;padding:0;display:inline}.admin-row-caret{display:none}@media (width<=960px){.admin-table-wrap{overflow-x:visible}.admin-table{display:block}.admin-table thead{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.admin-table tbody,.admin-table tr,.admin-table td{width:auto;display:block}.admin-table tr{border:1px solid var(--bd);border-radius:12px;margin-bottom:12px;padding:4px 14px}.admin-table tr:last-child{margin-bottom:0}.admin-table td{border-bottom:1px solid var(--bd);flex-direction:column;padding:8px 0;display:flex}.admin-table tr td:last-child{border-bottom:none}.admin-table td:before{content:attr(data-label);color:var(--mut);margin-bottom:2px;font-size:12px;font-weight:600}.admin-table td[data-label=""]:before{display:none}.admin-table-actions{gap:8px;padding-top:2px}.admin-table-actions .btn-link{padding:2px 0}.admin-table--accordion td.admin-row-header{border-bottom:none;padding:0}.admin-table--accordion td.admin-row-header:before{display:none}.admin-row-toggle{cursor:pointer;width:100%;color:var(--tx);justify-content:space-between;align-items:center;gap:12px;padding:12px 0;font-weight:600;display:flex}.admin-row-caret{border-right:2px solid var(--mut);border-bottom:2px solid var(--mut);flex:none;width:8px;height:8px;transition:transform .2s;display:block;transform:rotate(45deg)}.admin-table--accordion tbody tr td:not(.admin-row-header){display:none}.admin-table--accordion tbody tr[data-open=true] td:not(.admin-row-header){display:flex}.admin-table--accordion tbody tr[data-open=true] td.admin-row-header{border-bottom:1px solid var(--bd);margin-bottom:2px}.admin-table--accordion tbody tr[data-open=true] .admin-row-caret{transform:rotate(225deg)}}@media (width<=640px){.admin-view{padding:20px 16px}.admin-panel{padding:16px}.admin-tabs{flex-wrap:wrap}.admin-view-header{gap:12px}}
