@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f5f5f6;--card:#fff;--card2:#f0f1f2;--line:#e6e7ea;--line2:#ececee;--gray-bg:#f0f1f2;--ink:#202124;--ink2:#3a3d42;--muted:#6c7076;--faint:#9a9ea5;--faint2:#b3b6bb;--accent:#2f7fed;--accent-d:#2569c9;--accent-soft:#e6f1fb;--accent-bd:#b5d4f4;--accent-text:#185fa5;--green:#2fa35c;--green-bg:#e4f3e9;--green-bd:#a5d2b4;--green-text:#17542e;--amber:#ef9f27;--amber-bg:#faeeda;--amber-bd:#efd9a9;--amber-text:#854f0b;--violet:#8360d9;--violet-bg:#efe9fb;--violet-bd:#cebdf1;--violet-text:#4d2e97;--rose:#d6547c;--rose-bg:#fbe7ee;--rose-bd:#f0bdd0;--rose-text:#8c2f52;--teal:#17a2a6;--teal-bg:#e1f4f4;--teal-bd:#aadedf;--teal-text:#0e6467;--sans:"Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--shadow-card:0 8px 20px #20202014;--ease:cubic-bezier(.4, 0, .2, 1);--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-1:.12s;--dur-2:.16s;--radius-card:14px;--radius-pill:999px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:14px;line-height:1.45}h1{font-family:var(--sans);color:var(--ink);margin:0;font-weight:600}a{color:var(--accent-d);text-decoration:none}button{cursor:pointer;font-family:inherit}p{margin:0}.muted{color:var(--muted)}.page{max-width:1080px;margin:0 auto;padding:48px 26px 60px}.shell-head{margin-bottom:36px}.wordmark-text{color:#1bb6ea;font-size:26px}.shell-sub{margin-top:6px;font-size:14px}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;display:grid}.tile{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);text-align:left;min-height:148px;transition:transform var(--dur-2) var(--ease-out), box-shadow var(--dur-2) var(--ease-out), border-color var(--dur-2) var(--ease);flex-direction:column;align-items:flex-start;gap:6px;padding:22px 20px;display:flex;position:relative}.tile-live{cursor:pointer}.tile-live:hover{box-shadow:var(--shadow-card);border-color:var(--accent-bd);transform:translateY(-2px)}.tile-planned{opacity:.6;cursor:default}.tile-icon-wrap{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.tile-icon-wrap.tint-blue{background:var(--accent-soft);color:var(--accent)}.tile-icon-wrap.tint-violet{background:var(--violet-bg);color:var(--violet)}.tile-icon-wrap.tint-amber{background:var(--amber-bg);color:var(--amber)}.tile-icon-wrap.tint-green{background:var(--green-bg);color:var(--green)}.tile-icon-wrap.tint-rose{background:var(--rose-bg);color:var(--rose)}.tile-icon-wrap.tint-teal{background:var(--teal-bg);color:var(--teal)}.tile-icon-wrap.tint-neutral{background:var(--gray-bg);color:var(--muted)}.tile-name{color:var(--ink);font-size:16px;font-weight:600}.tile-desc{color:var(--muted);font-size:12.5px;line-height:1.5}.tile-modules{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.tile-planned-badge{position:absolute;top:16px;right:16px}.tile-skeleton{background:linear-gradient(90deg, var(--card2) 0%, var(--line2) 50%, var(--card2) 100%);background-size:200% 100%;border-color:#0000;animation:1.4s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.shell-error{flex-direction:column;align-items:flex-start;gap:12px;padding:32px 0;display:flex}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink2);transition:background var(--dur-1) var(--ease);border-radius:10px;padding:9px 15px;font-size:13.5px;font-weight:600}.btn:hover{background:var(--gray-bg)}.badge{border-radius:6px;padding:2px 8px;font-size:11px;font-weight:600}.badge.neutral{background:var(--gray-bg);color:var(--muted)}.chip{border-radius:var(--radius-pill);background:var(--gray-bg);color:var(--ink2);align-items:center;gap:5px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.small{font-size:12px}.section-title{color:var(--ink);margin:0;font-size:15px;font-weight:600}.field-label{color:var(--ink2);font-size:12px;font-weight:600}.input,.select{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;width:100%;padding:9px 11px;font-family:inherit;font-size:13.5px}.input:focus,.select:focus{outline:2px solid var(--accent-bd);border-color:var(--accent)}.input.small,.select.small{padding:6px 9px;font-size:12.5px}.btn-primary{background:var(--accent);border-color:var(--accent-d);color:#fff}.btn-primary:hover{background:var(--accent-d)}.btn-primary:disabled{opacity:.55;cursor:default}.btn.small{border-radius:8px;padding:6px 11px;font-size:12.5px}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);width:100%;max-width:380px;padding:34px 30px}.login-sub{margin-top:6px;margin-bottom:22px}.login-form{flex-direction:column;gap:7px;display:flex}.login-form .input{margin-bottom:6px}.login-submit{justify-content:center;margin-top:14px}.login-error{color:var(--rose-text);background:var(--rose-bg);border:1px solid var(--rose-bd);border-radius:8px;padding:8px 10px;font-size:12.5px}.shell-head-row{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.shell-nav{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.who{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.view-switch{background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:2px;display:inline-flex}.tab{color:var(--muted);background:0 0;border:0;border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600}.tab-active{background:var(--card);color:var(--ink);box-shadow:0 1px 2px #20202014}.admin-layout{grid-template-columns:300px 1fr;align-items:start;gap:24px;display:grid}.users-list{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--card);padding:14px}.users-list-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.users-ul{flex-direction:column;gap:4px;margin:8px 0 0;padding:0;list-style:none;display:flex}.user-row{text-align:left;background:0 0;border:1px solid #0000;border-radius:10px;flex-direction:column;gap:2px;width:100%;padding:9px 10px;display:flex}.user-row:hover{background:var(--card2)}.user-row-active{background:var(--accent-soft);border-color:var(--accent-bd)}.user-row-name{color:var(--ink);align-items:center;gap:6px;font-size:13.5px;font-weight:600;display:flex}.admin-badge{background:var(--accent-soft);color:var(--accent-text)}.create-user-form{background:var(--card2);border-radius:10px;flex-direction:column;gap:7px;margin-bottom:8px;padding:10px;display:flex}.admin-detail{min-width:0}.user-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.change-email-form{align-items:center;gap:8px;display:flex}.grant-editor-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.grant-section{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--card);margin-bottom:16px;padding:16px 18px}.grant-section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.grant-app-name{color:var(--ink);margin:0;font-size:14px;font-weight:600}.grant-section-tools{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.grant-section-tools .select{width:auto}.grant-groups{flex-direction:column;gap:12px;display:flex}.resource-grid{border:1px solid var(--line2);border-radius:10px;overflow:hidden}.resource-grid-row{grid-template-columns:160px repeat(auto-fit,minmax(60px,1fr));align-items:center;display:grid}.resource-grid-head{background:var(--card2);color:var(--muted);font-size:11.5px;font-weight:600}.resource-grid-row>*{padding:8px 10px}.resource-label{color:var(--ink2);font-size:12.5px;font-weight:600}.action-col{text-align:center}.resource-grid-head .action-col{text-transform:none}.action-checkbox{color:var(--ink2);align-items:center;gap:8px;margin-right:18px;padding:4px 0;font-size:12.5px;display:inline-flex}.save-as-role{gap:8px;margin-top:12px;display:flex}.save-as-role .input{max-width:280px}.empty-state{padding:40px 0}@media (width<=780px){.admin-layout{grid-template-columns:1fr}}
