@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.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}.login-page{--login-foreground:oklch(19% .02 250);--login-input:oklch(89% .01 240);--login-primary:oklch(57% .17 238);--login-muted:oklch(96% .008 240);--login-ring:oklch(57% .17 238);min-height:100vh;color:var(--login-foreground);background:#f8fafc;place-items:center;padding:16px;font-size:14px;line-height:1.5;display:grid}.login-page .login-card{width:100%;max-width:448px;box-shadow:0 0 0 1px color-mix(in oklch,var(--login-foreground),transparent 90%);background:#fff;border-radius:12px;flex-direction:column;gap:16px;padding:16px 0;display:flex}.login-page .login-header{gap:16px;padding:0 16px;display:grid}:is(.login-page,.app-layout) .login-language-row{justify-content:flex-end;width:100%;display:flex}.login-page .login-logo{justify-content:center;width:100%;display:flex}.login-page .login-logo img{width:191px;max-width:100%;height:auto;transform:translateY(-8px)}.login-page .login-content{padding:0 16px}.login-page .login-form{gap:16px;display:grid}.login-page .login-field{gap:8px;display:grid}.login-page label{font-size:14px;font-weight:500;line-height:1;display:block}.login-page .login-field input{border:1px solid var(--login-input);width:100%;min-width:0;height:32px;color:inherit;font:inherit;box-shadow:none;background:0 0;border-radius:8px;outline:none;padding:4px 10px;font-size:14px;transition:color .15s,border-color .15s}.login-page .login-field input::placeholder{color:oklch(52% .02 245)}.login-page .login-field input:focus-visible{border-color:var(--login-ring);box-shadow:0 0 0 1px color-mix(in oklch,var(--login-ring),transparent 50%)}.login-page .login-field input:disabled{opacity:.5;background:color-mix(in oklch,var(--login-input),transparent 50%);cursor:not-allowed}.login-page .login-password{position:relative}.login-page .login-password input{padding-right:36px}.login-page .login-password-toggle{width:24px;height:24px;color:inherit;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:4px;right:4px}.login-page .login-password-toggle:hover{background:var(--login-muted)}.login-page .login-remember{align-items:center;gap:8px;display:flex}.login-page .login-remember input{width:16px;height:16px;accent-color:var(--login-primary);flex-shrink:0;margin:0}.login-page .login-remember label{cursor:pointer;line-height:1.25}.login-page .login-submit{background:var(--login-primary);color:oklch(98% .01 238);width:100%;height:32px;font:inherit;white-space:nowrap;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:0 10px;font-weight:500;transition:background .15s;display:flex}.login-page .login-submit:hover{background:color-mix(in oklch,var(--login-primary),transparent 20%)}.login-page .login-submit:disabled{opacity:.5;pointer-events:none}.login-page button:focus-visible,.login-page summary:focus-visible,.login-page .login-remember input:focus-visible{outline:2px solid var(--login-ring);outline-offset:2px}.login-page .login-error{color:oklch(58% .22 27);margin:0;font-size:14px}:is(.login-page,.app-layout) .login-language{position:relative}:is(.login-page,.app-layout) .login-language summary{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:6px;height:28px;padding:0 10px;font-size:14px;font-weight:500;list-style:none;display:flex}:is(.login-page,.app-layout) .login-language summary::-webkit-details-marker{display:none}:is(.login-page,.app-layout) .login-language summary:hover,:is(.login-page,.app-layout) .login-language[open] summary{background:var(--login-muted)}:is(.login-page,.app-layout) .login-language-options{z-index:5;background:#fff;border:1px solid oklch(90% .01 240);border-radius:4px;min-width:128px;position:absolute;top:calc(100% + 4px);right:0;overflow:hidden;box-shadow:0 4px 10px #0f172a29}:is(.login-page,.app-layout) .login-language-options button{text-align:left;width:100%;min-height:32px;color:inherit;font:inherit;background:0 0;border:0;border-radius:0;padding:6px 14px;display:block}:is(.login-page,.app-layout) .login-language-options button:hover,:is(.login-page,.app-layout) .login-language-options button[data-active=true]{color:#1f2937;background:#eff6ff}@media (width<=767px){.login-page .login-field input{font-size:16px}}:root{color:oklch(19% .02 250);font-synthesis:none;--background:oklch(99% .003 240);--foreground:oklch(19% .02 250);--primary:oklch(57% .17 238);--muted:oklch(96% .008 240);--muted-foreground:oklch(52% .02 245);--border:oklch(90% .01 240);--input:oklch(89% .01 240);background:oklch(99% .003 240);font-family:Geist Variable,Geist,Arial,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}h1,h2,p{margin-top:0}.muted{color:var(--muted-foreground)}.app-layout{background:color-mix(in oklch,var(--muted) 40%,var(--background));min-height:100vh;font-size:14px;line-height:1.5}.app-header{border-bottom:1px solid var(--border);background:var(--background);justify-content:space-between;align-items:center;gap:16px;height:56px;padding:0 20px;display:flex}.brand{color:inherit;letter-spacing:-.025em;align-items:center;gap:8px;font-size:16px;font-weight:600;text-decoration:none;display:flex}.brand img{width:40px;height:auto}.header-actions{align-items:center;gap:4px;display:flex}.app-body{min-height:calc(100vh - 56px);display:flex}.sidebar{border-right:1px solid var(--border);background:var(--background);flex:none;width:256px;padding:12px}.nav-item{color:var(--muted-foreground);border-radius:6px;align-items:center;gap:12px;padding:8px 12px;font-weight:500;text-decoration:none;display:flex}.nav-item.active{color:#0369a1;background:#f0f9ff}.nav-item:hover{background:#e0f2fe}.main{flex:1;min-width:0;padding:24px}.content{max-width:1280px;margin:0 auto}.content>h1{letter-spacing:-.025em;margin:0 0 24px;font-size:24px;font-weight:600;line-height:32px}.card{box-shadow:0 0 0 1px color-mix(in oklch,var(--foreground),transparent 90%);background:#fff;border-radius:12px;padding:16px}.toolbar{align-items:center;gap:8px;margin-bottom:16px;display:flex}.search{flex:1;align-items:center;min-width:0;display:flex;position:relative}.search>svg{color:var(--muted-foreground);position:absolute;left:10px}input,select{border:1px solid var(--input);height:32px;color:inherit;background:0 0;border-radius:8px;outline:none;padding:4px 10px;font-size:14px}.search input{width:100%;padding-left:32px}.toolbar select{width:192px}.toolbar .primary{white-space:nowrap}input::placeholder{color:var(--muted-foreground)}input:focus-visible,select:focus-visible{border-color:var(--primary);box-shadow:0 0 0 1px color-mix(in oklch,var(--primary),transparent 50%)}.primary,.secondary{border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:6px;height:32px;padding:0 10px;font-size:14px;font-weight:500;display:inline-flex}.primary{background:var(--primary);color:oklch(98% .01 238)}.primary:hover:not(:disabled){background:color-mix(in oklch,var(--primary),transparent 20%)}.secondary{border-color:var(--border);background:var(--background);color:inherit}.secondary:hover{background:var(--muted)}.license-summary{color:var(--muted-foreground);flex-wrap:wrap;gap:8px 24px;margin-bottom:16px;font-size:12px;display:flex}.table-wrap{border:1px solid var(--border);border-radius:6px;overflow-x:auto}table{border-collapse:collapse;text-align:left;white-space:nowrap;width:100%;font-size:14px}th{text-align:left;height:40px;color:var(--foreground);padding:8px;font-weight:500}td{border-top:1px solid var(--border);padding:8px}tbody tr:hover{background:color-mix(in oklch,var(--muted),transparent 50%)}.status{color:var(--muted-foreground)}.status.enabled{color:#238451}.action,.icon-button{width:32px;height:32px;color:inherit;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.action:hover,.icon-button:hover{background:var(--muted)}.empty{text-align:center;height:128px;color:var(--muted-foreground)}.pagination{color:var(--muted-foreground);justify-content:space-between;align-items:center;gap:12px;padding-top:16px;font-size:14px;display:flex}.pagination>div{align-items:center;gap:12px;display:flex}.pagination button{border:1px solid var(--border);background:var(--background);height:28px;color:var(--foreground);border-radius:8px;padding:0 10px;font-size:14px}.pagination button:hover:not(:disabled){background:var(--muted)}.user-menu{position:relative}.user-menu summary{cursor:pointer;border-radius:8px;align-items:center;gap:6px;height:28px;padding:0 10px;font-weight:500;list-style:none;display:flex}.user-menu summary::-webkit-details-marker{display:none}.user-menu summary:hover,.user-menu[open] summary{background:var(--muted)}.user-menu-options{z-index:5;border:1px solid var(--border);background:#fff;border-radius:4px;min-width:144px;position:absolute;top:calc(100% + 4px);right:0;overflow:hidden;box-shadow:0 4px 10px #0f172a29}.user-menu-options button{width:100%;min-height:32px;color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:6px 14px;display:flex}.user-menu-options button:hover{background:#eff6ff}.app-layout .login-language summary>svg:first-child{display:none}.app-layout button:focus-visible,.app-layout summary:focus-visible,.app-layout a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.error{color:oklch(58% .22 27);margin:0;font-size:14px}.error.inset{margin-bottom:16px}.modal-backdrop{z-index:10;background:#0008;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--background);border:1px solid var(--border);border-radius:12px;width:min(100%,520px);max-height:calc(100vh - 32px);padding:24px;overflow:auto;box-shadow:0 10px 30px #0002}.modal-title{justify-content:space-between;align-items:start;gap:16px;margin-bottom:16px;display:flex}.modal-title h2{letter-spacing:-.025em;margin:0 0 4px;font-size:18px;font-weight:600}.modal-title p{color:var(--muted-foreground);margin:0;font-size:14px}.form-grid{gap:16px;display:grid}.form-grid label{gap:8px;font-size:14px;font-weight:500;display:grid}.form-grid input,.form-grid select{width:100%}.form-grid .hint{color:var(--muted-foreground);font-size:12px;font-weight:400}.password-input{border:1px solid var(--input);border-radius:8px;align-items:center;display:flex}.password-input input{border:0;min-width:0}.password-input:focus-within{border-color:var(--primary)}.password-input .icon-button{flex-shrink:0}.form-grid .check-label{align-items:center;gap:8px;display:flex}.check-label input{width:16px;height:16px;accent-color:var(--primary)}.modal-actions{justify-content:flex-end;gap:8px;padding-top:8px;display:flex}@media (width<=1199px){.toolbar{flex-wrap:wrap}.search{flex-basis:100%}.toolbar select{flex:1}.toolbar .primary{margin-left:auto}}@media (width<=760px){.app-header{padding:0 12px}.brand{font-size:14px}.user-menu summary span{text-overflow:ellipsis;white-space:nowrap;max-width:90px;overflow:hidden}.app-body{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--border);width:100%}.main{padding:16px}.pagination{flex-wrap:wrap}.license-summary{gap:4px 12px}}@media (width<=420px){.brand{gap:4px;font-size:12px}.header-actions{gap:0}.app-layout .login-language summary,.user-menu summary{padding:0 6px}.user-menu summary span{max-width:60px}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.batch-modal{flex-direction:column;gap:20px;width:calc(100vw - 32px);max-width:1152px;padding:20px;display:flex;position:relative}.batch-modal .modal-title{margin:0;padding-right:32px}.batch-modal .modal-title h2{margin:0}.batch-modal .modal-title>.icon-button{position:absolute;top:16px;right:16px}.batch-entry{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:12px;display:grid}.batch-entry label{gap:8px;font-size:14px;font-weight:500;display:grid}.batch-entry input,.batch-entry select{width:100%;min-width:0}.batch-password{gap:4px;display:flex}.batch-password input{flex:1;min-width:0}.batch-password .icon-button{border-color:var(--border);flex:none}.batch-table{min-height:380px;max-height:50vh;overflow:auto}.batch-table table{min-width:1000px}.batch-table th:first-child{width:40px}.batch-table th{background:var(--background);z-index:1;position:sticky;top:0}.batch-table input:not([type=checkbox]),.batch-table select{width:100%;min-width:144px}.batch-table input[type=email]{min-width:176px}.batch-table input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);margin:0}.batch-actions{text-align:right}.batch-row-actions{justify-content:flex-end;gap:4px;display:flex}.destructive{color:oklch(58% .22 27)}.batch-empty{text-align:center;height:192px;color:var(--muted-foreground)}.batch-footer{background:color-mix(in oklch,var(--muted),transparent 50%);border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin:0 -20px -20px;padding:16px 20px;display:flex}.batch-footer>.secondary{margin-right:auto}@media (width<=1023px){.batch-entry{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=639px){.batch-entry{grid-template-columns:1fr}.batch-footer{flex-wrap:wrap}.batch-table{min-height:260px}}
