:root{
    --wl-bg:#f5f7fb;
    --wl-card:#fff;
    --wl-text:#172033;
    --wl-muted:#6c768a;
    --wl-border:#e7eaf0;
    --wl-primary:#5c62e8;
    --wl-primary-dark:#454bd2;
    --wl-nav:#171a2d;
}
body{background:var(--wl-bg);color:var(--wl-text);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}
.app-navbar{background:linear-gradient(90deg,#171a2d,#222642);box-shadow:0 2px 14px rgba(19,24,49,.18)}
.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-grid;place-items:center;background:linear-gradient(135deg,#7278ff,#9b6cff)}
.navbar .nav-link{border-radius:8px;padding:.55rem .8rem!important}
.navbar .nav-link.active{background:rgba(255,255,255,.1)}
.card{border:1px solid var(--wl-border);border-radius:16px;box-shadow:0 3px 16px rgba(25,36,68,.045)}
.card-header{background:transparent;border-bottom:1px solid var(--wl-border);padding:1rem 1.2rem}
.stat-card .stat-icon{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:#f0f1ff;color:var(--wl-primary);font-size:1.1rem}
.stat-value{font-size:1.8rem;font-weight:700;line-height:1}
.text-muted{color:var(--wl-muted)!important}
.btn-primary{background:var(--wl-primary);border-color:var(--wl-primary)}
.btn-primary:hover{background:var(--wl-primary-dark);border-color:var(--wl-primary-dark)}
.btn{border-radius:10px}
.form-control,.form-select{border-color:#dfe3ea;border-radius:10px;min-height:42px}
.form-control:focus,.form-select:focus{border-color:#a6a9ff;box-shadow:0 0 0 .2rem rgba(92,98,232,.12)}
.table>:not(caption)>*>*{padding:.85rem .85rem;border-bottom-color:#edf0f4;vertical-align:middle}
.table thead th{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:#7b8495;font-weight:700}
.badge-soft-primary{background:#eeefff;color:#555bdb}
.badge-soft-warning{background:#fff3d5;color:#946b00}
.badge-soft-success{background:#e9f8ef;color:#2b7b4a}
.badge-soft-danger{background:#feecee;color:#b13b47}
.timeline{position:relative}
.timeline:before{content:"";position:absolute;left:18px;top:4px;bottom:4px;width:2px;background:#e6e9f0}
.timeline-item{position:relative;padding-left:52px;padding-bottom:22px}
.timeline-dot{position:absolute;left:10px;top:4px;width:18px;height:18px;border:4px solid var(--wl-bg);border-radius:50%;background:var(--wl-primary);box-shadow:0 0 0 1px #cdd1f8}
.timeline-time{font-size:.8rem;color:var(--wl-muted)}
.timeline-title{font-weight:650}
.project-heading{display:flex;align-items:center;gap:.65rem}
.project-color{width:10px;height:10px;border-radius:50%;background:var(--wl-primary)}
.empty-state{padding:4rem 1rem;text-align:center;color:var(--wl-muted)}
.empty-icon{width:72px;height:72px;border-radius:22px;display:grid;place-items:center;margin:0 auto 1rem;background:#eceefe;color:#646ae7;font-size:1.6rem}
.modal-content{border:0;border-radius:18px;box-shadow:0 20px 70px rgba(25,33,58,.2)}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top right,#7a80ff 0,#393e80 18%,#171a2d 45%,#0f1120 100%)}
.login-card{width:100%;max-width:430px;border:0;box-shadow:0 28px 90px rgba(0,0,0,.28)}
.login-logo{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(135deg,#666dff,#9d69ff);color:#fff;font-size:1.4rem}
.code-box{background:#111525;color:#dce2ff;border-radius:12px;padding:14px 16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.84rem;overflow:auto}
@media(max-width:767.98px){.table-responsive{border-radius:14px}.hide-mobile{display:none}.stat-value{font-size:1.45rem}}
@media print{.app-navbar,.no-print,.btn,.modal{display:none!important}body{background:#fff}.card{box-shadow:none;border-color:#ddd}.container-fluid{padding:0!important}}
