:root{--bg: #f5f6f8;--surface: #ffffff;--text: #1c2230;--muted: #6b7384;--border: #dfe3ea;--primary: #5b8c00;--primary-hover: #4a7400;--primary-text: #ffffff;--danger: #c0392b;--warn: #b7791f;--ok: #2f7d32;--sidebar: #141a26;--sidebar-text: #c9d1e0;--radius: 6px}@media (prefers-color-scheme: dark){:root{--bg: #0f131c;--surface: #181e2b;--text: #e6e9f0;--muted: #8f98ab;--border: #2a3245;--primary: #8bc34a;--primary-hover: #a0d45f;--primary-text: #0f131c;--danger: #ef7566;--warn: #e0b04f;--ok: #7ccf80;--sidebar: #0a0d14}}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1{font-size:1.4rem;margin:.25rem 0 .5rem}h2{font-size:1.1rem;margin:0}a{color:var(--primary)}.muted{color:var(--muted)}.mono{font-family:ui-monospace,Menlo,Consolas,monospace}.spacer{flex:1}.layout{display:flex;min-height:100vh}.sidebar{width:220px;flex:none;background:var(--sidebar);color:var(--sidebar-text);padding:1rem 0}.brand{padding:0 1.25rem 1rem;font-weight:700;font-size:1.1rem;color:#fff}.brand span{color:var(--primary)}.sidebar nav a{display:block;padding:.6rem 1.25rem;color:var(--sidebar-text);text-decoration:none}.sidebar nav a:hover{background:#ffffff0f}.sidebar nav a.router-link-active{background:#8bc34a29;color:#fff;border-left:3px solid var(--primary);padding-left:calc(1.25rem - 3px)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;justify-content:flex-end;align-items:center;gap:1rem;padding:.6rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border)}.content{padding:1.25rem 1.5rem}@media (max-width: 720px){.layout{flex-direction:column}.sidebar{width:100%;padding:.5rem 0}.sidebar nav{display:flex;overflow-x:auto}.brand{padding-bottom:.25rem}.content{padding:1rem}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.45rem .9rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;text-decoration:none}.btn:hover:not(:disabled){border-color:var(--muted)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text);font-weight:600}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{color:var(--danger)}.btn-sm{padding:.25rem .6rem;font-size:.85rem}.btn-block{width:100%}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.45rem .6rem;max-width:100%}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.9rem}.field label{font-weight:600;font-size:.85rem}.field-check{flex-direction:row;align-items:center;gap:.5rem}.field-check label{order:2;font-weight:500}.req,.err{color:var(--danger)}.help{color:var(--muted);font-size:.8rem}.alert-error{background:color-mix(in srgb,var(--danger) 12%,transparent);border:1px solid var(--danger);color:var(--danger);padding:.5rem .75rem;border-radius:var(--radius);margin:0 0 .9rem}.crud-toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.9rem}.crud-toolbar .search{min-width:220px}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:.55rem .75rem;border-bottom:1px solid var(--border);white-space:nowrap}.table th{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.table tr:last-child td{border-bottom:0}.actions-col{text-align:right!important;display:table-cell}.actions-col>*{margin-left:.35rem}.pager{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:.9rem}.badge{display:inline-block;padding:.05rem .5rem;border-radius:999px;font-size:.8rem;border:1px solid var(--border);color:var(--muted);margin-right:.35rem}.badge.ok{color:var(--ok);border-color:var(--ok)}.badge.warn{color:var(--warn);border-color:var(--warn)}.badge.bad{color:var(--danger);border-color:var(--danger)}.detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border);margin-bottom:1rem;overflow-x:auto}.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:.55rem .9rem;font:inherit;color:var(--muted);cursor:pointer;white-space:nowrap}.tabs button.active{color:var(--text);border-bottom-color:var(--primary);font-weight:600}.kv{display:grid;grid-template-columns:160px 1fr;gap:.4rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.kv dt{color:var(--muted)}.kv dd{margin:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;padding:4vh 1rem;overflow-y:auto;z-index:50}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:560px;padding:1.25rem;box-shadow:0 10px 40px #0000004d}.modal.modal-wide{max-width:720px}.modal fieldset{border:0;border-top:1px solid var(--border, #ddd);margin:0 0 1rem;padding:.5rem 0 0;min-width:0}.modal legend{font-weight:600;padding:0 .5rem 0 0}.field-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0 .75rem}.modal h2{margin-bottom:1rem}.modal-body{max-height:65vh;overflow-y:auto;padding-right:.25rem}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem}.login-card h1{text-align:center;margin-bottom:1.25rem}.login-card h1 span{color:var(--primary)}.toasts{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:100}.toast{background:var(--surface);border:1px solid var(--ok);color:var(--text);border-left-width:4px;padding:.6rem .9rem;border-radius:var(--radius);box-shadow:0 4px 16px #00000040;cursor:pointer;max-width:360px}.toast.error{border-color:var(--danger)}
