:root{--brand:#6350eb;--brand2:#a855f7;--brand3:#0ea5e9;--grad:linear-gradient(135deg,#4f46e5,#a855f7 60%,#0ea5e9);--r:18px;--bs-primary:#6350eb;--bs-primary-rgb:99,80,235;--bs-link-color:#6350eb;--bs-border-radius:12px;--bs-body-font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
[data-bs-theme=dark]{--bs-body-bg:#0f1020;--bs-body-bg-rgb:15,16,32;--bs-tertiary-bg:#171832;--bs-card-bg:#171832;--bs-border-color:#2a2c52}
body{min-height:100vh;background:radial-gradient(900px 500px at 8% -10%,rgba(99,80,235,.16),transparent 60%),radial-gradient(800px 500px at 100% 0,rgba(14,165,233,.14),transparent 60%),var(--bs-body-bg);background-attachment:fixed;padding-bottom:env(safe-area-inset-bottom)}
.btn-primary{--bs-btn-bg:#6350eb;--bs-btn-border-color:#6350eb;--bs-btn-hover-bg:#5340d8;--bs-btn-hover-border-color:#5340d8;--bs-btn-active-bg:#4a39c4;--bs-btn-active-border-color:#4a39c4;--bs-btn-disabled-bg:#6350eb;--bs-btn-disabled-border-color:#6350eb;box-shadow:0 6px 16px -6px rgba(99,80,235,.7);font-weight:600}
.btn-outline-primary{--bs-btn-color:#6350eb;--bs-btn-border-color:#6350eb;--bs-btn-hover-bg:#6350eb;--bs-btn-hover-border-color:#6350eb;--bs-btn-active-bg:#5340d8}
.form-control,.form-select{border-radius:12px;padding:.6rem .85rem}.form-control:focus,.form-select:focus{border-color:#6350eb;box-shadow:0 0 0 .25rem rgba(99,80,235,.18)}
/* top bar */
.topbar{position:sticky;top:0;z-index:1030;padding-top:env(safe-area-inset-top);background:rgba(var(--bs-body-bg-rgb),.72);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);border-bottom:1px solid var(--bs-border-color)}
.brand{display:flex;align-items:center;gap:.6rem;font-weight:800;letter-spacing:-.02em;color:var(--bs-body-color);text-decoration:none}.brand img{width:36px;height:36px;border-radius:10px;box-shadow:0 6px 14px -6px rgba(99,80,235,.8)}
.brand span{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--grad);color:#fff;display:inline-grid;place-items:center;font-weight:700;font-size:.9rem}
.icon-btn{width:38px;height:38px;border-radius:50%;display:inline-grid;place-items:center;padding:0;border:1px solid var(--bs-border-color);background:var(--bs-body-bg);color:var(--bs-body-color)}.icon-btn:hover{background:var(--bs-tertiary-bg)}
/* cards */
.card{border:1px solid var(--bs-border-color);border-radius:var(--r);box-shadow:0 10px 30px -18px rgba(40,30,120,.35);overflow:hidden}
.card-header{background:transparent;border-bottom:1px solid var(--bs-border-color);padding:1rem 1.25rem}
.hero{background:var(--grad);color:#fff;border-radius:var(--r);padding:1.25rem 1.4rem;position:relative;overflow:hidden;box-shadow:0 18px 40px -20px rgba(99,80,235,.9)}
.hero:after{content:"";position:absolute;right:-40px;top:-60px;width:200px;height:200px;border-radius:50%;background:rgba(255,255,255,.14)}
.hero h2{font-weight:800;letter-spacing:-.02em;margin:0;font-size:clamp(1.25rem,3.5vw,1.7rem)}.hero small{opacity:.85}
.stat{display:flex;gap:.9rem;align-items:center;padding:.9rem 1rem;border:1px solid var(--bs-border-color);border-radius:16px;background:var(--bs-card-bg,var(--bs-body-bg))}
.stat i{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:rgba(99,80,235,.12);color:var(--brand);font-size:1.15rem}.stat b{font-size:1.35rem;line-height:1}.stat div div{font-size:.78rem;color:var(--bs-secondary-color)}
/* calendar */
#grid,.wk{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.wk div{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.cd{aspect-ratio:1;border:1px solid transparent;background:var(--bs-tertiary-bg);color:var(--bs-body-color);border-radius:12px;position:relative;font-weight:600;padding:0;transition:transform .12s,background .12s}
.cd:hover{transform:translateY(-2px);background:rgba(99,80,235,.14)}.cd:disabled{opacity:.35;transform:none}
.cd.today{border-color:var(--brand);color:var(--brand)}.cd.sel{background:var(--grad);color:#fff;border-color:transparent;box-shadow:0 8px 18px -8px rgba(99,80,235,.9)}
.cd .dot{position:absolute;bottom:5px;left:50%;transform:translateX(-50%);display:flex;gap:2px}.cd .dot i{width:5px;height:5px;border-radius:50%;background:var(--brand2)}.cd.sel .dot i{background:#fff}
.cd .badge{position:absolute;top:3px;right:3px;font-size:.58rem;background:var(--brand)!important;border-radius:20px}.cd.sel .badge{background:#fff!important;color:var(--brand)}
/* report items */
.rep-item{display:flex;gap:.9rem;padding:1rem 1.25rem;border-bottom:1px solid var(--bs-border-color);animation:up .25s ease both}.rep-item:last-child{border:0}
.rep-ico{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:rgba(168,85,247,.14);color:var(--brand2);font-size:1.1rem}
.empty{text-align:center;padding:2.5rem 1rem;color:var(--bs-secondary-color)}.empty i{font-size:2.4rem;display:block;opacity:.5}
@keyframes up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.nav-pills{gap:.4rem;scrollbar-width:none}.nav-pills::-webkit-scrollbar{display:none}.nav-pills .nav-link{border-radius:999px;white-space:nowrap;color:var(--bs-body-color);background:var(--bs-tertiary-bg);font-weight:600}.nav-pills .nav-link.active{background:var(--grad);color:#fff;box-shadow:0 8px 18px -8px rgba(99,80,235,.9)}
.table{--bs-table-bg:transparent}.table thead th{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--bs-secondary-color);border-bottom-width:1px}
.modal-content{border-radius:20px;border:0;box-shadow:0 30px 70px -20px rgba(20,10,80,.5)}.modal-header,.modal-footer{border-color:var(--bs-border-color)}
.text-pre{white-space:pre-wrap}.toast-msg{position:fixed;top:calc(70px + env(safe-area-inset-top));right:12px;z-index:2000;max-width:90vw;border-radius:14px;animation:up .2s}
.fab{display:none;position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));width:58px;height:58px;border-radius:50%;font-size:1.6rem;z-index:1020;padding:0}
.install-banner{display:none}.install-banner.show{display:flex}
/* login */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:1rem}.login-card{width:100%;max-width:410px;padding:2rem 1.75rem;border-radius:24px;backdrop-filter:blur(10px)}
.login-logo{width:76px;height:76px;border-radius:22px;box-shadow:0 14px 30px -12px rgba(99,80,235,.9)}
#printArea{display:none}
@media(max-width:991.98px){.fab{display:block}#addBtn{display:none}}
@media(max-width:767.98px){.card-header,.rep-item{padding:.85rem 1rem}
 table.stack thead{display:none}table.stack tr{display:block;padding:.8rem 1rem;border-bottom:1px solid var(--bs-border-color)}table.stack td{display:flex;gap:.6rem;border:0;padding:.15rem 0!important;background:transparent!important;box-shadow:none!important}table.stack td:before{content:attr(data-l);flex:0 0 72px;font-size:.72rem;text-transform:uppercase;color:var(--bs-secondary-color);padding-top:.15rem}}
@media print{body>*:not(#printArea){display:none!important}#printArea{display:block!important}body{background:#fff!important;color:#000!important}}
