:root{--bg:#f5f7fa;--surface:#fff;--surface-2:#f0f3f7;--border:#e2e7ee;--border-strong:#cfd6e0;--text:#17202b;--text-2:#4d5968;--text-3:#6e7a89;--primary:#1d4ed8;--primary-hover:#1e40af;--primary-soft:#e8eefc;--focus:#2563eb;--green:#15803d;--green-soft:#e6f4ea;--blue:#1d4ed8;--blue-soft:#e8eefc;--yellow:#a16207;--yellow-soft:#fdf4d9;--orange:#c2410c;--orange-soft:#fdece2;--red:#b91c1c;--red-soft:#fde8e8;--gray:#5b6573;--gray-soft:#eef1f4;--radius:12px;--radius-sm:8px;--shadow:0 1px 2px #1018280d;--shadow-lg:0 12px 32px #10182829;--sidebar:236px;--topbar:60px;--bottomnav:64px;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f141a;--surface:#161d25;--surface-2:#1d2630;--border:#29333f;--border-strong:#37424f;--text:#e8edf3;--text-2:#b3bdc9;--text-3:#8b97a5;--primary:#5b8cff;--primary-hover:#7aa2ff;--primary-soft:#1b2a47;--focus:#7aa2ff;--green:#4ade80;--green-soft:#13301f;--blue:#7aa2ff;--blue-soft:#1b2a47;--yellow:#facc15;--yellow-soft:#33290b;--orange:#fb923c;--orange-soft:#3a220f;--red:#f87171;--red-soft:#3b1717;--gray:#a0abb8;--gray-soft:#232c36;--shadow:0 1px 2px #0006;--shadow-lg:0 12px 32px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;line-height:1.25}h1{font-size:22px;font-weight:650}h2{font-size:16px;font-weight:620}h3{font-size:14px;font-weight:620}p{margin:0}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--text-3)}.small{font-size:12.5px}.nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums}.right{text-align:right}.row{align-items:center;gap:8px;display:flex}.row-between{justify-content:space-between;align-items:center;gap:12px;display:flex}.wrap{flex-wrap:wrap}.stack{flex-direction:column;gap:16px;display:flex}.stack-sm{flex-direction:column;gap:8px;display:flex}.grow{flex:1;min-width:0}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app{min-height:100%;display:flex}.sidebar{width:var(--sidebar);background:var(--surface);border-right:1px solid var(--border);z-index:30;flex-direction:column;padding:16px 12px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:10px;padding:4px 8px 18px;display:flex}.brand img{border-radius:9px;width:34px;height:34px}.brand strong{font-size:15px;display:block}.brand span{color:var(--text-3);font-size:11px;line-height:1.2;display:block}.nav{flex-direction:column;gap:2px;display:flex}.nav a{border-radius:var(--radius-sm);color:var(--text-2);align-items:center;gap:10px;padding:9px 10px;font-weight:520;display:flex}.nav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav a.active{background:var(--primary-soft);color:var(--primary)}.nav .count{background:var(--red);color:#fff;border-radius:10px;margin-left:auto;padding:0 6px;font-size:11px;font-weight:600}.sidebar-foot{border-top:1px solid var(--border);margin-top:auto;padding:10px}.main{margin-left:var(--sidebar);flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:20;height:var(--topbar);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:0 24px;display:flex;position:sticky;top:0}.content{width:100%;max-width:1280px;margin:0 auto;padding:24px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.page-head p{color:var(--text-3);margin-top:4px}.bottomnav,.mobile-only{display:none}@media (width<=900px){.sidebar{display:none}.main{padding-bottom:calc(var(--bottomnav) + env(safe-area-inset-bottom));margin-left:0}.topbar{padding:0 12px}.content{padding:16px 12px}.desktop-only{display:none!important}.mobile-only{display:initial}.bottomnav{z-index:40;height:calc(var(--bottomnav) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottomnav a,.bottomnav button{color:var(--text-3);cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:48px;font-family:inherit;font-size:11px;font-weight:560;display:flex}.bottomnav a.active{color:var(--primary)}.bottomnav a:hover{text-decoration:none}h1{font-size:20px}}.fab{right:16px;bottom:calc(var(--bottomnav) + 16px + env(safe-area-inset-bottom));z-index:35;background:var(--primary);color:#fff;width:56px;height:56px;box-shadow:var(--shadow-lg);cursor:pointer;border:0;border-radius:28px;justify-content:center;align-items:center;display:none;position:fixed}@media (width<=900px){.fab{display:flex}}.sheet-backdrop{z-index:60;background:#0a0f1673;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);width:100%;max-width:560px;padding:12px 12px calc(16px + env(safe-area-inset-bottom));box-shadow:var(--shadow-lg);border-radius:16px 16px 0 0}.sheet a,.sheet button.sheet-item{color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;width:100%;padding:14px 12px;font-family:inherit;font-size:15px;display:flex}.sheet a:hover,.sheet button.sheet-item:hover{background:var(--surface-2);text-decoration:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:18px}.card-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.card-body{padding:14px 18px}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}@media (width<=1000px){.grid-2,.grid-3{grid-template-columns:1fr}}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}@media (width<=1100px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.stat{color:inherit;flex-direction:column;gap:4px;padding:14px 16px;display:flex}a.stat:hover{border-color:var(--border-strong);text-decoration:none}.stat .label{color:var(--text-3);align-items:center;gap:6px;font-size:12.5px;font-weight:540;display:flex}.stat .value{font-variant-numeric:tabular-nums;font-size:26px;font-weight:680}.stat.tone-red .value{color:var(--red)}.stat.tone-orange .value{color:var(--orange)}.stat.tone-yellow .value{color:var(--yellow)}.stat.tone-green .value{color:var(--green)}.dl{grid-template-columns:150px 1fr;gap:10px 16px;display:grid}.dl dt{color:var(--text-3)}.dl dd{overflow-wrap:anywhere;min-width:0;margin:0}@media (width<=600px){.dl{grid-template-columns:1fr;gap:2px}.dl dd{margin-bottom:10px}}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-flex}.badge .dot{background:currentColor;border-radius:50%;width:7px;height:7px}.b-green{background:var(--green-soft);color:var(--green)}.b-blue{background:var(--blue-soft);color:var(--blue)}.b-yellow{background:var(--yellow-soft);color:var(--yellow)}.b-orange{background:var(--orange-soft);color:var(--orange)}.b-red{background:var(--red-soft);color:var(--red)}.b-gray{background:var(--gray-soft);color:var(--gray)}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);height:38px;color:var(--text);font:560 14px var(--font);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:7px;padding:0 14px;display:inline-flex}.btn:hover{background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-danger{color:var(--red);border-color:color-mix(in srgb, var(--red) 40%, var(--border))}.btn-danger:hover{background:var(--red-soft)}.btn-ghost{background:0 0;border-color:#0000}.btn-sm{height:32px;padding:0 10px;font-size:13px}.btn-block{width:100%}@media (width<=900px){.btn{height:44px}.btn-sm{height:38px}}.icon-btn{width:36px;height:36px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;display:inline-flex;position:relative}.icon-btn:hover{background:var(--surface-2)}.icon-btn .pill{background:var(--red);color:#fff;border-radius:9px;justify-content:center;align-items:center;min-width:17px;height:17px;padding:0 4px;font-size:10.5px;font-weight:700;display:flex;position:absolute;top:3px;right:2px}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>span{color:var(--text-2);font-size:13px;font-weight:560}.field .hint{color:var(--text-3);font-size:12px}.field .err{color:var(--red);font-size:12.5px}.input,select.input,textarea.input{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);width:100%;height:38px;color:var(--text);font:14px var(--font);padding:0 11px}textarea.input{resize:vertical;height:auto;min-height:84px;padding:9px 11px}.input:focus{outline:2px solid color-mix(in srgb, var(--focus) 50%, transparent);border-color:var(--focus)}.input[aria-invalid=true]{border-color:var(--red)}@media (width<=900px){.input,select.input{height:44px;font-size:16px}}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;display:grid}.form-grid .full{grid-column:1/-1}@media (width<=700px){.form-grid{grid-template-columns:1fr}}.check{cursor:pointer;align-items:center;gap:8px;min-height:32px;display:inline-flex}.check input{width:18px;height:18px;accent-color:var(--primary)}.seg{background:var(--surface-2);border-radius:10px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.seg button{font:560 13px var(--font);color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:8px;min-height:32px;padding:6px 12px}.seg button[aria-pressed=true],.seg button[aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.searchbox{flex:1;max-width:460px;position:relative}.searchbox svg{color:var(--text-3);position:absolute;top:50%;left:11px;transform:translateY(-50%)}.searchbox .input{padding-left:34px}.search-results{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:50;max-height:70vh;position:absolute;top:44px;left:0;right:0;overflow:auto}.search-results .group{text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);padding:8px 12px 4px;font-size:11.5px;font-weight:650}.search-results a{color:var(--text);padding:8px 12px;display:block}.search-results a:hover,.search-results a.hl{background:var(--surface-2);text-decoration:none}.table-wrap{overflow-x:auto}table.table{border-collapse:collapse;width:100%;font-size:13.5px}.table th{text-align:left;color:var(--text-3);text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 12px;font-size:12px;font-weight:600}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:11px 12px}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:var(--surface-2)}.table th button{font:inherit;color:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.list{flex-direction:column;display:flex}.list-item{border-bottom:1px solid var(--border);color:inherit;align-items:center;gap:12px;padding:12px 18px;display:flex}.list-item:last-child{border-bottom:0}a.list-item:hover{background:var(--surface-2);text-decoration:none}.cards{display:none}@media (width<=760px){.table-responsive{display:none}.cards{flex-direction:column;gap:10px;display:flex}}.rcard{color:inherit;border-left:4px solid var(--border);padding:14px;display:block}a.rcard:hover{text-decoration:none}.rcard.s-overdue,.rcard.s-due_today,.rcard.s-urgent{border-left-color:var(--red)}.rcard.s-due_soon{border-left-color:var(--yellow)}.rcard.s-upcoming{border-left-color:var(--blue)}.rcard.s-active{border-left-color:var(--green)}.cat-icon{background:var(--primary-soft);width:36px;height:36px;color:var(--primary);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.tabs{border-bottom:1px solid var(--border);scrollbar-width:none;gap:4px;margin-bottom:16px;display:flex;overflow-x:auto}.tabs a,.tabs button{font:560 14px var(--font);color:var(--text-3);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;padding:10px 14px}.tabs a:hover{color:var(--text);text-decoration:none}.tabs .active,.tabs [aria-selected=true]{color:var(--primary);border-bottom-color:var(--primary)}.empty{text-align:center;color:var(--text-3);padding:40px 16px}.empty svg{margin-bottom:8px}.alert{border-radius:var(--radius-sm);border:1px solid;align-items:flex-start;gap:10px;padding:12px 14px;font-size:13.5px;display:flex}.alert-info{background:var(--blue-soft);border-color:color-mix(in srgb, var(--blue) 25%, transparent);color:var(--text)}.alert-warn{background:var(--yellow-soft);border-color:color-mix(in srgb, var(--yellow) 30%, transparent);color:var(--text)}.alert-error{background:var(--red-soft);border-color:color-mix(in srgb, var(--red) 30%, transparent);color:var(--text)}.alert-success{background:var(--green-soft);border-color:color-mix(in srgb, var(--green) 30%, transparent);color:var(--text)}.pagination{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:12px 18px;display:flex}.modal-backdrop{z-index:70;background:#0a0f1680;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);width:100%;max-width:520px;max-height:calc(100vh - 32px);box-shadow:var(--shadow-lg);border-radius:14px;overflow:auto}.modal-lg{max-width:760px}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-body{padding:18px 20px}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:14px 20px;display:flex}@media (width<=600px){.modal-backdrop{align-items:flex-end;padding:0}.modal{border-radius:16px 16px 0 0;max-height:92vh}.modal-foot{padding-bottom:calc(14px + env(safe-area-inset-bottom))}.modal-foot .btn{flex:1}}.toasts{z-index:100;flex-direction:column;gap:8px;max-width:min(420px,100vw - 28px);display:flex;position:fixed;top:14px;right:14px}.toast{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:10px;align-items:center;gap:10px;padding:11px 12px;display:flex}.toast-success svg:first-child{color:var(--green)}.toast-error svg:first-child{color:var(--red)}.toast-info svg:first-child{color:var(--blue)}.toast span{flex:1}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}.center{justify-content:center;align-items:center;padding:40px;display:flex}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.bars{align-items:flex-end;gap:6px;height:150px;padding-top:8px;display:flex}.bars .bar{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;min-width:0;height:100%;display:flex}.bars .bar .fill{background:var(--primary);border-radius:4px 4px 0 0;width:100%;max-width:28px;min-height:2px}.bars .bar .v{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:11px}.bars .bar .l{color:var(--text-3);white-space:nowrap;font-size:10.5px}.hbars{flex-direction:column;gap:8px;display:flex}.hbar{grid-template-columns:130px 1fr 32px;align-items:center;gap:8px;font-size:13px;display:grid}.hbar .track{background:var(--surface-2);border-radius:4px;height:10px;overflow:hidden}.hbar .track div{background:var(--primary);border-radius:4px;height:100%}.cal-grid{border-top:1px solid var(--border);border-left:1px solid var(--border);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.cal-dow{color:var(--text-3);text-align:center;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface-2);padding:8px;font-size:12px;font-weight:600}.cal-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface);text-align:left;min-height:104px;font:inherit;color:inherit;cursor:pointer;flex-direction:column;gap:3px;min-width:0;padding:6px;display:flex}.cal-cell:hover{background:var(--surface-2)}.cal-cell.other{background:var(--bg);color:var(--text-3)}.cal-cell.today .num{background:var(--primary);color:#fff}.cal-cell.selected{outline:2px solid var(--primary);outline-offset:-2px}.cal-cell .num{border-radius:12px;justify-content:center;align-items:center;width:24px;height:24px;font-size:12.5px;font-weight:600;display:inline-flex}.cal-ev{white-space:nowrap;text-overflow:ellipsis;border-radius:4px;padding:1px 6px;font-size:11.5px;overflow:hidden}.cal-more{color:var(--text-3);font-size:11px}.cal-dots{flex-wrap:wrap;gap:3px;display:none}.cal-dots i{background:var(--primary);border-radius:50%;width:6px;height:6px;display:block}@media (width<=700px){.cal-cell{align-items:center;min-height:54px;padding:4px}.cal-ev,.cal-more{display:none}.cal-dots{display:flex}}.auth{justify-content:center;align-items:center;min-height:100%;padding:24px 16px;display:flex}.auth .card{width:100%;max-width:400px;padding:28px}.auth .brand{padding:0 0 20px}.countdown{font-size:22px;font-weight:680}.timeline{flex-direction:column;display:flex}.timeline .t{grid-template-columns:16px 1fr;gap:12px;padding-bottom:16px;display:grid;position:relative}.timeline .t:before{content:"";background:var(--border);width:2px;position:absolute;top:16px;bottom:0;left:7px}.timeline .t:last-child:before{display:none}.timeline .t .dot{background:var(--primary-soft);border:3px solid var(--primary);border-radius:50%;width:16px;height:16px;margin-top:2px}.kbd{background:var(--surface-2);border:1px solid var(--border);overflow-wrap:anywhere;border-radius:5px;padding:1px 6px;font-family:ui-monospace,monospace;font-size:12px}pre.code{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:12.5px;overflow-x:auto}.grid-side{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}@media (width<=1000px){.grid-side{grid-template-columns:1fr}}@media (width<=760px){.cards-pad .cards{padding:10px}}.form-actions{background:color-mix(in srgb, var(--bg) 90%, transparent);border-radius:12px;justify-content:flex-end;padding:10px;position:sticky;bottom:8px}@media (width<=900px){.form-actions{bottom:calc(var(--bottomnav) + 8px + env(safe-area-inset-bottom))}.form-actions .btn{flex:1}}.bars.dense .bar:nth-child(2n) .l{visibility:hidden}
