.navbar[data-v-066a1704]{background:var(--bg-card);border-bottom:1px solid var(--border);z-index:50;position:sticky;top:0}.navbar-inner[data-v-066a1704]{max-width:1100px;height:var(--nav-height);align-items:center;gap:2rem;margin:0 auto;padding:0 1.5rem;display:flex}.navbar-brand[data-v-066a1704]{color:var(--accent);white-space:nowrap;letter-spacing:-.02em;font-size:1.1rem;font-weight:800;text-decoration:none}.navbar-links[data-v-066a1704]{flex-wrap:wrap;flex:1;gap:.25rem;display:flex}.navbar-links a[data-v-066a1704]{color:var(--text);border-radius:var(--radius);padding:.3em .7em;font-size:.9rem;text-decoration:none;transition:background .15s,color .15s}.navbar-links a[data-v-066a1704]:hover,.navbar-links a.router-link-active[data-v-066a1704]{background:var(--accent-subtle);color:var(--accent)}.admin-link[data-v-066a1704]{color:var(--warning)}.navbar-user[data-v-066a1704]{white-space:nowrap;align-items:center;gap:.75rem;display:flex}.navbar-username[data-v-066a1704]{color:var(--text);font-size:.85rem;text-decoration:none;transition:color .15s}.navbar-username[data-v-066a1704]:hover{color:var(--accent)}.hamburger[data-v-066a1704]{cursor:pointer;border-radius:var(--radius);background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;margin-left:auto;padding:.4rem;transition:background .15s;display:none}.hamburger[data-v-066a1704]:hover{background:var(--accent-subtle)}.hamburger span[data-v-066a1704]{background:var(--text-heading);border-radius:2px;width:22px;height:2px;transition:transform .2s,opacity .2s;display:block}.hamburger[aria-expanded=true] span[data-v-066a1704]:first-child{transform:translateY(7px)rotate(45deg)}.hamburger[aria-expanded=true] span[data-v-066a1704]:nth-child(2){opacity:0}.hamburger[aria-expanded=true] span[data-v-066a1704]:nth-child(3){transform:translateY(-7px)rotate(-45deg)}@media (width<=640px){.hamburger[data-v-066a1704]{display:flex}.navbar-user[data-v-066a1704]{display:none}.navbar-links[data-v-066a1704]{top:var(--nav-height);background:var(--bg-card);border-bottom:1px solid var(--border);flex-direction:column;gap:.25rem;padding:.5rem 1rem 1rem;display:none;position:absolute;left:0;right:0}.navbar-links.open[data-v-066a1704]{display:flex}.navbar-links a[data-v-066a1704]{padding:.6em .75em;font-size:1rem}.navbar-links a.router-link-active[data-v-066a1704]{background:var(--accent-subtle);color:var(--accent)}}.alertify .ajs-dimmer{z-index:1981;opacity:.5;background-color:#252525;margin:0;padding:0;position:fixed;inset:0}.alertify .ajs-modal{z-index:1981;padding:0;position:fixed;inset:0;overflow-y:auto}.alertify .ajs-dialog{background-color:#fff;outline:0;max-width:500px;min-height:110px;margin:5% auto;padding:24px 24px 0;position:relative}.alertify .ajs-dialog.ajs-capture:before{content:"";z-index:1;display:block;position:absolute;inset:0}.alertify .ajs-reset{opacity:0!important;width:0!important;height:0!important;display:inline!important;position:absolute!important}.alertify .ajs-commands{z-index:2;margin:-14px 24px 0 0;position:absolute;right:4px}.alertify .ajs-commands button{cursor:pointer;background-color:#0000;background-position:50%;background-repeat:no-repeat;border:0;width:10px;height:10px;margin-left:10px;padding:10px;display:none}.alertify .ajs-commands button.ajs-close{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAh0lEQVQYlY2QsQ0EIQwEB9cBAR1CJUaI/gigDnwR6NBL/7/xWLNrZ2b8EwGotVpr7eOitWa1VjugiNB7R1UPrKrWe0dEAHBbXUqxMQbeewDmnHjvyTm7C3zDwAUd9c63YQdUVdu6EAJzzquz7HXvTiklt+H9DQFYaxFjvDqllFyMkbXWvfpXHjJrWFgdBq/hAAAAAElFTkSuQmCC)}.alertify .ajs-commands button.ajs-maximize{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAOUlEQVQYlWP8//8/AzGAhYGBgaG4uBiv6t7eXkYmooxjYGAgWiELsvHYFMCcRX2rSXcjoSBiJDbAAeD+EGu+8BZcAAAAAElFTkSuQmCC)}.alertify .ajs-header{background-color:#fff;margin:-24px -24px 0;padding:16px 24px}.alertify .ajs-body{min-height:56px}.alertify .ajs-body .ajs-content{padding:16px 24px 16px 16px}.alertify .ajs-footer{background-color:#fff;min-height:43px;margin-left:-24px;margin-right:-24px;padding:4px}.alertify .ajs-footer .ajs-buttons.ajs-primary{text-align:right}.alertify .ajs-footer .ajs-buttons.ajs-primary .ajs-button{margin:4px}.alertify .ajs-footer .ajs-buttons.ajs-auxiliary{float:left;clear:none;text-align:left}.alertify .ajs-footer .ajs-buttons.ajs-auxiliary .ajs-button{margin:4px}.alertify .ajs-footer .ajs-buttons .ajs-button{min-width:88px;min-height:35px}.alertify .ajs-handle{z-index:1;cursor:se-resize;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMS8xNEDQYmMAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQ0lEQVQYlaXNMQoAIAxD0dT7H657l0KX3iJuUlBUNOsPPCGJm7VDp6ryeMxMuDsAQH7owW3pyn3RS26iKxERMLN3ugOaAkaL3sWVigAAAABJRU5ErkJggg==);width:10px;height:10px;display:none;position:absolute;bottom:0;right:0;transform:scaleX(1)}.alertify.ajs-no-overflow .ajs-body .ajs-content{overflow:hidden!important}.alertify.ajs-no-padding.ajs-maximized .ajs-body .ajs-content{padding:0;left:0;right:0}.alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body{margin-left:-24px;margin-right:-24px}.alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body .ajs-content{padding:0}.alertify.ajs-no-padding.ajs-resizable .ajs-body .ajs-content{left:0;right:0}.alertify.ajs-maximizable .ajs-commands button.ajs-maximize,.alertify.ajs-maximizable .ajs-commands button.ajs-restore,.alertify.ajs-closable .ajs-commands button.ajs-close{display:inline-block}.alertify.ajs-maximized .ajs-dialog{width:100%!important;max-width:none!important;height:100%!important;margin:0 auto!important;top:0!important;left:0!important}.alertify.ajs-maximized.ajs-modeless .ajs-modal{min-height:100%!important;max-height:none!important;margin:0!important;position:fixed!important}.alertify.ajs-maximized .ajs-commands button.ajs-maximize{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAASklEQVQYlZWQ0QkAMQhDtXRincOZX78KVtrDCwgqJNEoIB3MPLj7lRUROlpyVXGzby6zWuY+kz6tj5sBMTMAyVV3/595RbOh3cAXsww1raeiOcoAAAAASUVORK5CYII=)}.alertify.ajs-maximized .ajs-dialog,.alertify.ajs-resizable .ajs-dialog{padding:0}.alertify.ajs-maximized .ajs-commands,.alertify.ajs-resizable .ajs-commands{margin:14px 24px 0 0}.alertify.ajs-maximized .ajs-header,.alertify.ajs-resizable .ajs-header{margin:0;padding:16px 24px;position:absolute;top:0;left:0;right:0}.alertify.ajs-maximized .ajs-body,.alertify.ajs-resizable .ajs-body{min-height:224px;display:inline-block}.alertify.ajs-maximized .ajs-body .ajs-content,.alertify.ajs-resizable .ajs-body .ajs-content{position:absolute;inset:50px 24px;overflow:auto}.alertify.ajs-maximized .ajs-footer,.alertify.ajs-resizable .ajs-footer{margin:0;position:absolute;bottom:0;left:0;right:0}.alertify.ajs-resizable:not(.ajs-maximized) .ajs-dialog{min-width:548px}.alertify.ajs-resizable:not(.ajs-maximized) .ajs-handle{display:block}.alertify.ajs-movable:not(.ajs-maximized) .ajs-header{cursor:move}.alertify.ajs-modeless .ajs-dimmer,.alertify.ajs-modeless .ajs-reset{display:none}.alertify.ajs-modeless .ajs-modal{max-width:none;max-height:0;overflow:visible}.alertify.ajs-modeless.ajs-pinnable .ajs-commands button.ajs-pin{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQklEQVQYlcWPMQ4AIAwCqU9u38GbcbHRWN1MvKQDhQFMEpKImGJA0gCgnYw0V0rwxseg5erT4oSkQVI5d9f+e9+xA0NbLpWfitPXAAAAAElFTkSuQmCC);display:inline-block}.alertify.ajs-modeless.ajs-unpinned .ajs-modal{position:absolute}.alertify.ajs-modeless.ajs-unpinned .ajs-commands button.ajs-pin{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAO0lEQVQYlWP8//8/AzGAiShV6AqLi4txGs+CLoBLMYbC3t5eRmyaWfBZhwwYkX2NTxPRvibKjRhW4wMAhxkYGbLu3pEAAAAASUVORK5CYII=)}.alertify.ajs-modeless:not(.ajs-unpinned) .ajs-body{max-height:500px;overflow:auto}.alertify.ajs-basic .ajs-header{opacity:0}.alertify.ajs-basic .ajs-footer{visibility:hidden}.alertify.ajs-frameless .ajs-header{opacity:0;z-index:1;min-height:60px;margin:0;padding:0;position:absolute;top:0;left:0;right:0}.alertify.ajs-frameless .ajs-footer{display:none}.alertify.ajs-frameless .ajs-body .ajs-content{position:absolute;inset:0}.alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog{padding-top:0}.alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog .ajs-commands{margin-top:0}.ajs-no-overflow{outline:0;overflow:hidden!important}.ajs-no-overflow.ajs-fixed{position:fixed;inset:0;overflow-y:scroll!important}.ajs-no-selection,.ajs-no-selection *{-webkit-user-select:none;user-select:none}@media screen and (width<=568px){.alertify .ajs-dialog{min-width:150px}.alertify:not(.ajs-maximized) .ajs-modal{padding:0 5%}.alertify:not(.ajs-maximized).ajs-resizable .ajs-dialog{min-width:initial;min-width:auto}}@-moz-document url-prefix(){.alertify button:focus{outline:1px dotted #3593d2}}.alertify .ajs-dimmer,.alertify .ajs-modal{transition-property:opacity,visibility;transition-duration:.25s;transition-timing-function:linear;transform:translate(0,0)}.alertify.ajs-hidden .ajs-dimmer,.alertify.ajs-hidden .ajs-modal{visibility:hidden;opacity:0}.alertify.ajs-in:not(.ajs-hidden) .ajs-dialog{animation-duration:.5s}.alertify.ajs-out.ajs-hidden .ajs-dialog{animation-duration:.25s}.alertify .ajs-dialog.ajs-shake{animation-name:ajs-shake;animation-duration:.1s;animation-fill-mode:both}@keyframes ajs-shake{0%,to{transform:translate(0,0)}10%,30%,50%,70%,90%{transform:translate(-10px)}20%,40%,60%,80%{transform:translate(10px)}}.alertify.ajs-slide.ajs-in:not(.ajs-hidden) .ajs-dialog{animation-name:ajs-slideIn;animation-timing-function:cubic-bezier(.175,.885,.32,1.275)}.alertify.ajs-slide.ajs-out.ajs-hidden .ajs-dialog{animation-name:ajs-slideOut;animation-timing-function:cubic-bezier(.6,-.28,.735,.045)}.alertify.ajs-zoom.ajs-in:not(.ajs-hidden) .ajs-dialog{animation-name:ajs-zoomIn}.alertify.ajs-zoom.ajs-out.ajs-hidden .ajs-dialog{animation-name:ajs-zoomOut}.alertify.ajs-fade.ajs-in:not(.ajs-hidden) .ajs-dialog{animation-name:ajs-fadeIn}.alertify.ajs-fade.ajs-out.ajs-hidden .ajs-dialog{animation-name:ajs-fadeOut}.alertify.ajs-pulse.ajs-in:not(.ajs-hidden) .ajs-dialog{animation-name:ajs-pulseIn}.alertify.ajs-pulse.ajs-out.ajs-hidden .ajs-dialog{animation-name:ajs-pulseOut}.alertify.ajs-flipx.ajs-in:not(.ajs-hidden) .ajs-dialog{animation-name:ajs-flipInX}.alertify.ajs-flipx.ajs-out.ajs-hidden .ajs-dialog{animation-name:ajs-flipOutX}.alertify.ajs-flipy.ajs-in:not(.ajs-hidden) .ajs-dialog{animation-name:ajs-flipInY}.alertify.ajs-flipy.ajs-out.ajs-hidden .ajs-dialog{animation-name:ajs-flipOutY}@keyframes ajs-pulseIn{0%,to,20%,40%,60%,80%{transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale(1)}}@keyframes ajs-pulseOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes ajs-zoomIn{0%{opacity:0;transform:scale3d(.25,.25,.25)}to{opacity:1;transform:scale(1)}}@keyframes ajs-zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale3d(.25,.25,.25)}}@keyframes ajs-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes ajs-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes ajs-flipInX{0%{opacity:0;transition-timing-function:ease-in;transform:perspective(400px)rotateX(90deg)}40%{transition-timing-function:ease-in;transform:perspective(400px)rotateX(-20deg)}60%{opacity:1;transform:perspective(400px)rotateX(10deg)}80%{transform:perspective(400px)rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes ajs-flipOutX{0%{transform:perspective(400px)}30%{opacity:1;transform:perspective(400px)rotateX(-20deg)}to{opacity:0;transform:perspective(400px)rotateX(90deg)}}@keyframes ajs-flipInY{0%{opacity:0;transition-timing-function:ease-in;transform:perspective(400px)rotateY(90deg)}40%{transition-timing-function:ease-in;transform:perspective(400px)rotateY(-20deg)}60%{opacity:1;transform:perspective(400px)rotateY(10deg)}80%{transform:perspective(400px)rotateY(-5deg)}to{transform:perspective(400px)}}@keyframes ajs-flipOutY{0%{transform:perspective(400px)}30%{opacity:1;transform:perspective(400px)rotateY(-15deg)}to{opacity:0;transform:perspective(400px)rotateY(90deg)}}@keyframes ajs-slideIn{0%{margin-top:-100%}to{margin-top:5%}}@keyframes ajs-slideOut{0%{margin-top:5%}to{margin-top:-100%}}.alertify-notifier{z-index:1982;width:0;position:fixed;overflow:visible;transform:translate(0,0)}.alertify-notifier .ajs-message{opacity:0;width:260px;max-height:0;margin:0;padding:0;transition-duration:.25s;transition-timing-function:linear;position:relative;transform:translate(0,0)}.alertify-notifier .ajs-message.ajs-visible{opacity:1;max-height:100%;margin-top:10px;padding:15px;transition-duration:.5s;transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}.alertify-notifier .ajs-message.ajs-success{background:#5bbd72f2}.alertify-notifier .ajs-message.ajs-error{background:#d95c5cf2}.alertify-notifier .ajs-message.ajs-warning{background:#fcf8d7f2}.alertify-notifier .ajs-message .ajs-close{cursor:pointer;background-color:#00000080;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAFBJREFUGBl1j0EKADEIA+ve/P9f9bh1hEihNBfjVCO1v7RKVqJK4h8gM5cAPR42AkQEpSXPwMTyoi13n5N9YqJehm3Fnr7nL1D0ZEbD5OubGyC7a9gx+9eNAAAAAElFTkSuQmCC);background-position:50%;background-repeat:no-repeat;border-top-right-radius:2px;width:16px;height:16px;position:absolute;top:0;right:0}.alertify-notifier.ajs-top{top:10px}.alertify-notifier.ajs-bottom{bottom:10px}.alertify-notifier.ajs-right{right:10px}.alertify-notifier.ajs-right .ajs-message{right:-320px}.alertify-notifier.ajs-right .ajs-message.ajs-visible{right:290px}.alertify-notifier.ajs-left{left:10px}.alertify-notifier.ajs-left .ajs-message{left:-300px}.alertify-notifier.ajs-left .ajs-message.ajs-visible{left:0}.alertify-notifier.ajs-center{left:50%}.alertify-notifier.ajs-center .ajs-message{transform:translate(-50%)}.alertify-notifier.ajs-center .ajs-message.ajs-visible{transition-timing-function:cubic-bezier(.57,.43,.1,.65);left:50%}.alertify-notifier.ajs-center.ajs-top .ajs-message{top:-300px}.alertify-notifier.ajs-center.ajs-top .ajs-message.ajs-visible{top:0}.alertify-notifier.ajs-center.ajs-bottom .ajs-message{bottom:-300px}.alertify-notifier.ajs-center.ajs-bottom .ajs-message.ajs-visible{bottom:0}.ajs-no-transition.alertify .ajs-dialog,.ajs-no-transition.alertify .ajs-dimmer,.ajs-no-transition.alertify .ajs-modal,.ajs-no-transition.alertify-notifier .ajs-message{transition:none!important;animation:none!important}@media (prefers-reduced-motion:reduce){.alertify .ajs-dialog,.alertify .ajs-dimmer,.alertify .ajs-modal,.alertify-notifier .ajs-message{transition:none!important;animation:none!important}}:root{--bg:#1a1a2e;--bg-card:#16213e;--bg-input:#0f3460;--border:#2a2a4a;--text:#c8c8d4;--text-heading:#e8e8f0;--accent:#e94560;--accent-hover:#ff6b6b;--accent-subtle:#e9456026;--success:#4ade80;--warning:#fbbf24;--danger:#f87171;--radius:8px;--nav-height:60px;--shadow:0 4px 20px #0006}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);min-height:100vh;margin:0;padding:0;font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.6}#app{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3{color:var(--text-heading);margin:0 0 .5em;font-weight:700}h1{font-size:2.25rem}h2{font-size:1.5rem}h3{font-size:1.125rem}p{margin:0 0 1em}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}.page{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:2rem 1.5rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.btn{border-radius:var(--radius);cursor:pointer;border:none;align-items:center;gap:.4em;padding:.5em 1.2em;font-size:.9rem;font-weight:600;transition:opacity .15s,transform .1s;display:inline-flex}.btn:hover{opacity:.88}.btn-primary:hover{background:var(--accent-hover);opacity:1}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-secondary{background:var(--bg-input);color:var(--text-heading);border:1px solid var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-ghost{color:var(--text);border:1px solid var(--border);background:0 0}.btn-sm{padding:.3em .8em;font-size:.8rem}.form-group{flex-direction:column;gap:.3em;margin-bottom:1em;display:flex}label{color:var(--text);font-size:.85rem;font-weight:500}input,textarea,select{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-heading);outline:none;width:100%;padding:.5em .75em;font-size:.95rem;transition:border-color .2s}input:focus,textarea:focus,select:focus{border-color:var(--accent)}textarea{resize:vertical;min-height:100px;font-family:inherit}.tabs{border-bottom:2px solid var(--border);gap:.25rem;margin-bottom:1.5rem;display:flex}.tab-btn{color:var(--text);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:.6em 1.2em;font-size:.95rem;transition:color .2s,border-color .2s}.tab-btn:hover{color:var(--text-heading)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.search-input{margin-bottom:1rem;position:relative}.search-input input{padding-left:2.2em}.search-input:before{content:"🔍";pointer-events:none;font-size:.9rem;position:absolute;top:50%;left:.6em;transform:translateY(-50%)}.alert{border-radius:var(--radius);margin-bottom:1em;padding:.75em 1em;font-size:.9rem}.alert-error{border:1px solid var(--danger);color:var(--danger);background:#f8717126}.alert-success{border:1px solid var(--success);color:var(--success);background:#4ade8026}.alert-info{background:var(--accent-subtle);border:1px solid var(--accent);color:var(--accent)}.loading{color:var(--text);justify-content:center;align-items:center;gap:.75rem;padding:3rem;display:flex}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty{text-align:center;color:var(--text);opacity:.7;padding:3rem 1rem}.badge{border-radius:999px;padding:.2em .6em;font-size:.75rem;font-weight:600;display:inline-block}.badge-admin{background:var(--accent-subtle);color:var(--accent)}.badge-pending{color:var(--warning);background:#fbbf2426}.badge-active{color:var(--success);background:#4ade8026}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--text);border-bottom:2px solid var(--border);text-transform:uppercase;letter-spacing:.05em;padding:.6em .75em;font-size:.8rem}td{border-bottom:1px solid var(--border);padding:.7em .75em;font-size:.9rem}tr:last-child td{border-bottom:none}tr:hover td{background:#ffffff0a}.modal-overlay{z-index:100;background:#000000b3;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:480px;max-height:90vh;box-shadow:var(--shadow);padding:2rem;overflow-y:auto}.modal-title{color:var(--text-heading);margin-bottom:1.25rem;font-size:1.25rem;font-weight:700}@media (width<=640px){.page{padding:1rem}h1{font-size:1.75rem}.card{padding:1rem}}.alertify .ajs-dimmer{background-color:#000000b3!important}.alertify .ajs-modal{background:0 0!important}.alertify .ajs-dialog{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background-color:var(--bg-card)!important}.alertify .ajs-header{border-bottom:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;font-weight:700;background-color:var(--bg-card)!important;color:var(--text-heading)!important}.alertify .ajs-body,.alertify .ajs-body .ajs-content{color:var(--text)!important}.alertify .ajs-footer{border-top:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);background-color:var(--bg-card)!important}.alertify .ajs-footer .ajs-buttons .ajs-button{border-radius:var(--radius);cursor:pointer;border:1px solid #0000;padding:.45em 1.1em;font-family:inherit;font-size:.9rem;font-weight:600;transition:opacity .15s,background-color .15s}.alertify .ajs-footer .ajs-buttons .ajs-button.ajs-primary{border-color:var(--accent);background-color:var(--accent)!important;color:#fff!important}.alertify .ajs-footer .ajs-buttons .ajs-button.ajs-primary:hover{border-color:var(--accent-hover);background-color:var(--accent-hover)!important}.alertify .ajs-footer .ajs-buttons .ajs-button:not(.ajs-primary){border-color:var(--border);color:var(--text)!important;background-color:#0000!important}.alertify .ajs-footer .ajs-buttons .ajs-button:not(.ajs-primary):hover{background-color:#ffffff0f!important}.alertify-notifier .ajs-message{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:.9rem;background-color:var(--bg-card)!important;color:var(--text-heading)!important}.alertify-notifier .ajs-message.ajs-success{border-left:3px solid var(--success);background-color:var(--bg-card)!important;color:var(--text-heading)!important}.alertify-notifier .ajs-message.ajs-error{border-left:3px solid var(--danger);background-color:var(--bg-card)!important;color:var(--text-heading)!important}.alertify-notifier .ajs-message.ajs-warning{border-left:3px solid var(--warning);background-color:var(--bg-card)!important;color:var(--text-heading)!important}
