:root{--bg:#f3f5f7;--surface:#fff;--surface-2:#f7f8fa;--text:#18212f;--muted:#6f7b8a;--line:#dfe4ea;--line-soft:#edf0f3;--primary:#17663b;--primary-hover:#115330;--primary-soft:#eaf3ee;--sidebar:#111a24;--sidebar-2:#172330;--sidebar-text:#d9e1e9;--sidebar-muted:#8fa0b2;--sidebar-active:#213b31;--shadow:0 8px 24px rgba(20,31,44,.07);--shadow-soft:0 2px 10px rgba(20,31,44,.045)}
:root[data-theme="navy"]{--bg:#f1f4f8;--surface:#fff;--surface-2:#f6f8fb;--text:#172033;--muted:#6d788a;--line:#dbe2eb;--line-soft:#e9eef4;--primary:#245f9c;--primary-hover:#194f87;--primary-soft:#eaf2fb;--sidebar:#101b2d;--sidebar-2:#17263d;--sidebar-text:#dce6f2;--sidebar-muted:#8fa3bc;--sidebar-active:#1e3b5d}
:root[data-theme="light"]{--bg:#f5f4f1;--surface:#fff;--surface-2:#f8f7f4;--text:#242a30;--muted:#747a80;--line:#dfddd7;--line-soft:#eceae5;--primary:#536d61;--primary-hover:#40584d;--primary-soft:#edf1ee;--sidebar:#f7f6f2;--sidebar-2:#efede7;--sidebar-text:#30373b;--sidebar-muted:#7b827f;--sidebar-active:#e2e9e4;--shadow:0 8px 24px rgba(43,47,43,.065)}

html{background:var(--bg)}
body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.55}
a{color:var(--primary)}
.app-shell{grid-template-columns:248px minmax(0,1fr)}
.side-nav{background:var(--sidebar);color:var(--sidebar-text);padding:22px 14px;box-shadow:4px 0 18px rgba(15,23,42,.06)}
.side-brand{margin:0 4px 15px;padding:0 8px 19px;border-color:color-mix(in srgb,var(--sidebar-text) 13%,transparent)}
.side-brand strong{color:var(--sidebar-text);font-size:17px;letter-spacing:.01em}
.side-brand span{color:var(--sidebar-muted);font-size:12px}
.side-nav nav>a,.nav-group-links>a{color:var(--sidebar-text);border-radius:6px}
.side-nav nav>a:hover,.nav-group-links>a:hover{background:var(--sidebar-2);color:var(--sidebar-text)}
.side-nav a.active{background:var(--sidebar-active);color:var(--sidebar-text);box-shadow:inset 3px 0 0 var(--primary)}
.side-nav .module-manager-link{border-color:color-mix(in srgb,var(--sidebar-text) 12%,transparent);background:var(--sidebar-2);color:var(--sidebar-text)}
.nav-group{border-color:color-mix(in srgb,var(--sidebar-text) 10%,transparent)}
.nav-group-title{color:var(--sidebar-muted);font-size:12px;letter-spacing:.025em}
.nav-group-title:hover{background:var(--sidebar-2);color:var(--sidebar-text)}
.nav-group-arrow{color:var(--sidebar-muted)}
.app-shell .page{padding:28px 30px 38px}
.toolbar{margin-bottom:18px}
.toolbar h1,.form-panel h1{color:var(--text);font-size:25px;font-weight:700;letter-spacing:-.025em}
.toolbar .hint{margin-top:4px}
.form-panel,.filters,.item,.stats>div,.download-toolbar{border:1px solid var(--line);border-radius:9px;background:var(--surface);box-shadow:var(--shadow-soft)}
.form-panel{padding:22px;margin-bottom:18px}
.form-panel h2{margin:0 0 17px;color:var(--text);font-size:18px}
.form-grid{column-gap:16px;row-gap:14px}
.form-panel label,.login-card label{color:#405063;font-size:12.5px;font-weight:600}
.form-panel input,.form-panel select,.form-panel textarea,.filters input,.filters select,.filters textarea,.ops input,.download-choice select{border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
.form-panel input:focus,.form-panel select:focus,.form-panel textarea:focus,.filters input:focus,.filters select:focus,.filters textarea:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent)}
button,.btn{min-height:36px;border-radius:6px;background:var(--primary);font-weight:600;box-shadow:0 1px 2px rgba(15,23,42,.08);transition:background .15s ease,transform .08s ease}
button:hover,.btn:hover{background:var(--primary-hover);color:#fff}
button:active,.btn:active{transform:translateY(1px)}
.btn.ghost,button.ghost,.secondary{border:1px solid var(--line);background:var(--surface-2);color:var(--text);box-shadow:none}
.btn.ghost:hover,button.ghost:hover,.secondary:hover{background:var(--line-soft);color:var(--text)}
.danger-btn{background:#b44646}.danger-btn:hover{background:#983939}
.filters{padding:14px;gap:11px;box-shadow:none}
.filter-label{color:var(--muted);font-weight:600}
.table-wrap{border-radius:8px}
.table{border:1px solid var(--line);background:var(--surface)}
.table th{padding:11px 12px;border-color:var(--line);background:var(--surface-2);color:#465568;font-size:12px;font-weight:700}
.table td{padding:12px;border-color:var(--line-soft);color:#334155}
.table tbody tr:hover{background:color-mix(in srgb,var(--primary-soft) 42%,var(--surface))}
.empty{border:0;background:var(--surface);color:var(--muted)}
.stats{gap:14px}.stats>div{padding:20px}.stats strong{color:var(--text);font-size:28px}.stats span{color:var(--muted)}
.item{padding:18px}.item h2{color:var(--text)}
.badge{border-radius:5px;font-weight:650}.badge.done{background:#e5f3ea;color:#236a42}.badge.pending{background:#fff3d6;color:#8a6111}.badge.late{background:#fff0df;color:#a24f13}.badge.overdue{background:#fbe7e7;color:#a23d3d}
.flash{border:1px solid #bce0c8;background:#edf8f1}.flash.bad{border-color:#efc3c3;background:#fdf0f0}
.hint{color:var(--muted)}
.pager{color:var(--muted)}
.compact-multi summary,.expandable-search summary{border-color:var(--line);background:var(--surface);color:var(--primary)}
.compact-multi-options,.expandable-search-panel{border-color:var(--line);background:var(--surface);box-shadow:var(--shadow)}
.special-rule-card,.special-rule-list{border-color:var(--line);background:var(--surface)}
.special-rule-note{border-color:var(--primary);background:var(--primary-soft);color:var(--muted)}
.theme-switcher{margin-top:18px;padding:13px 10px 4px;border-top:1px solid color-mix(in srgb,var(--sidebar-text) 10%,transparent)}
.theme-switcher label{display:block;color:var(--sidebar-muted);font-size:11px;font-weight:700;letter-spacing:.04em}
.theme-switcher select{width:100%;height:34px;margin-top:7px;padding:0 9px;border:1px solid color-mix(in srgb,var(--sidebar-text) 15%,transparent);border-radius:6px;background:var(--sidebar-2);color:var(--sidebar-text);font-size:12px}
.login-theme-picker{position:fixed;top:18px;right:20px;z-index:10}
.login-theme-picker select{height:34px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--text)}
.login-page,.login-page .login-wrap{background:var(--bg)}
.login-page .login-card{border-color:var(--line);border-top-color:var(--primary);background:var(--surface);box-shadow:var(--shadow)}
.login-brand-mark{border-color:var(--line);background:var(--primary-soft);color:var(--primary)}
.login-page .login-card h1{color:var(--text)}
.login-page .login-card input{border-color:var(--line);background:var(--surface-2);color:var(--text)}
.login-page .login-submit{background:var(--primary)}
.login-page .login-submit:hover{background:var(--primary-hover)}
@media(max-width:900px){.app-shell .page{padding:18px}.side-nav{position:static;height:auto}.theme-switcher{max-width:260px}.toolbar h1{font-size:22px}}
@media(max-width:600px){.login-theme-picker{position:static;display:flex;justify-content:flex-end;padding:12px 14px 0}.login-page .login-wrap{min-height:calc(100vh - 46px);padding-top:10px}}
