*,:after,:before{box-sizing:border-box}:root{--bg:#ece9d8;--bg2:#d4d0c8;--bg3:silver;--border:grey;--border-light:#fff;--border-dark:#404040;--text:#000;--text2:#444;--text3:grey;--accent:#0a246a;--accent-light:#3a6ea5;--titlebar:linear-gradient(180deg,#0a246a,#3a6ea5);--green:green;--red:#c00;--yellow:olive;--blue:#00c;--btn-face:#ece9d8}body{margin:0;background:#3a6ea5;color:var(--text);font-family:Tahoma,"MS Sans Serif",Arial,sans-serif;font-size:11px;min-height:100vh;cursor:default}input,textarea{cursor:text}select{cursor:default}[role=button],a,button{cursor:pointer!important}div,h1,h2,h3,h4,h5,h6,p,span,td,th{cursor:default}a{color:var(--blue);text-decoration:underline}a:hover{color:#00f}.mono{font-weight:700}.mono,input,select,textarea{font-family:Tahoma,Arial,sans-serif}input,select,textarea{background:#fff;border-color:#7f9db9 #fff #fff #7f9db9;border-style:solid;border-width:1px;outline:1px solid #7f9db9;color:#000;padding:2px 4px;font-size:11px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid #0a246a}input::placeholder{color:grey}button{cursor:pointer!important;font-family:Tahoma,Arial,sans-serif;font-size:11px;background:var(--btn-face);color:#000;border-color:#fff #404040 #404040 #fff;border-style:solid;border-width:1px;outline:1px solid grey;padding:3px 12px;min-width:60px}button:hover{background:#c1d2ee;border-color:#316ac5;outline:1px solid #316ac5}button:active{border-color:#404040 #fff #fff #404040;border-style:solid;border-width:1px}button:disabled{color:grey;cursor:default!important}.btn-primary{background:var(--btn-face);color:#000;font-weight:700;outline:2px solid #000}.btn-primary:hover{background:#c1d2ee}.btn-ghost{background:var(--btn-face)}.btn-danger{color:#c00}.btn-danger,.btn-success{background:var(--btn-face);font-weight:700}.btn-success{color:#006400}.btn-sm{padding:2px 8px;font-size:11px;min-width:50px}.btn-lg{padding:5px 20px;font-size:12px}.card{background:var(--bg);outline:1px solid #404040;padding:8px}.badge,.card{border-color:#fff grey grey #fff;border-style:solid;border-width:1px}.badge{display:inline-block;padding:1px 6px;font-size:11px;font-weight:700}.badge-green{background:#c8e8c8;color:#006400}.badge-red{background:#f0c0c0;color:#c00}.badge-yellow{background:#f0e8a0;color:#806000}.badge-blue{background:#c0d8f0;color:#00008b}.badge-purple{background:#e0d0f0;color:#400080}table{width:100%;border-collapse:collapse;font-size:11px;cursor:default}th{text-align:left;padding:3px 6px;background:linear-gradient(180deg,#eef4fc,#ddeaf8);border:1px solid #9ebef5;color:#000;font-weight:700;cursor:pointer!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}th:hover{background:linear-gradient(180deg,#c8d8f0,#a8c0e8)}td{padding:3px 6px;border-bottom:1px solid #d4d0c8;vertical-align:middle;cursor:default}tr:hover td{background:#316ac5;color:#fff;cursor:default}tr:last-child td{border-bottom:none}.form-group{display:flex;flex-direction:column;gap:3px}.form-group label{font-size:11px;font-weight:700;color:#000;cursor:default}.grid-2{grid-template-columns:1fr 1fr;grid-gap:8px}.grid-2,.grid-3{display:grid;gap:8px}.grid-3{grid-template-columns:1fr 1fr 1fr;grid-gap:8px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:8px;gap:8px}@media (max-width:768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.spinner{width:16px;height:16px;border:2px solid #d4d0c8;border-top-color:#316ac5;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}.toast{position:fixed;bottom:48px;right:8px;padding:8px 12px;font-size:11px;font-family:Tahoma,Arial,sans-serif;z-index:9999;animation:slideUp .2s ease;max-width:280px;border-color:#fff #404040 #404040 #fff;border-style:solid;border-width:1px;outline:1px solid grey}.toast-ok{background:#c8e8c8;color:#006400}.toast-err{background:#f0c0c0;color:#c00}@keyframes slideUp{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.empty-state{text-align:center;padding:40px 20px;color:var(--text3);cursor:default}.empty-state .icon{font-size:32px;margin-bottom:8px}.empty-state p{margin:0;font-size:11px}.sort-asc:after{content:" ▲";font-size:9px}.sort-desc:after{content:" ▼";font-size:9px}