@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#f5f7fb;--surface:#fff;--ink:#182230;--muted:#7b8798;--line:#e8edf4;--primary:#4f46e5;--primary2:#6d63f6;--green:#159b72;--red:#d94c61;--amber:#c78619;--nav:#111827;--shadow:0 8px 30px rgba(27,39,68,.045)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.shell{min-height:100vh}.sidebar{width:248px;background:var(--nav);color:#c7d0df;position:fixed;inset:0 auto 0 0;padding:25px 16px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:11px;padding:0 12px 30px;color:white;font:800 18px Manrope}.brandmark{width:36px;height:36px;border-radius:12px;background:linear-gradient(135deg,#7167ff,#4f46e5);display:grid;place-items:center;color:white;font-size:18px;box-shadow:0 7px 20px #4f46e555}.brand small{display:block;font:500 10px 'DM Sans';color:#8793a7;letter-spacing:1.7px;margin-top:2px}.navlabel{font-size:10px;font-weight:700;letter-spacing:1.7px;color:#69768b;padding:15px 13px 8px}.navlink{display:flex;align-items:center;gap:13px;padding:12px 13px;border-radius:10px;margin:2px 0;color:#aab5c7;font-weight:600;transition:.18s}.navlink .ico{width:19px;text-align:center;font-size:16px}.navlink:hover,.navlink.active{background:#272e43;color:white}.navlink.active{box-shadow:inset 3px 0 #8278ff}.sidebarfoot{margin-top:auto;background:#1b2334;border:1px solid #2a3448;border-radius:14px;padding:14px;color:#9da9bb;font-size:12px;line-height:1.6}.sidebarfoot strong{color:#e8edf7}.main{margin-left:248px;min-height:100vh}.topbar{height:76px;background:#ffffffd9;backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;position:sticky;top:0;z-index:3}.crumb{font-size:12px;color:var(--muted)}.top-title{font:800 18px Manrope;margin-top:3px}.topright{display:flex;align-items:center;gap:17px}.datechip{padding:9px 12px;border:1px solid var(--line);border-radius:10px;color:#667386;background:#fff;font-size:12px}.avatar{width:37px;height:37px;border-radius:12px;background:#eceaff;color:#5146d9;display:grid;place-items:center;font-weight:800}.profile{display:flex;align-items:center;gap:10px}.profile strong{display:block;font-size:12px}.profile span{font-size:11px;color:var(--muted)}.content{padding:30px 34px 44px;max-width:1600px;margin:auto}.welcome{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:25px}.eyebrow{font-size:11px;letter-spacing:1.8px;text-transform:uppercase;color:var(--primary);font-weight:800}.welcome h1{font:800 clamp(23px,2.4vw,30px) Manrope;margin:8px 0 7px;letter-spacing:-.8px}.welcome p{margin:0;color:var(--muted)}.actions{display:flex;gap:9px;flex-wrap:wrap}.btn{border:1px solid var(--line);border-radius:9px;padding:10px 14px;background:white;color:#445064;cursor:pointer;font-weight:700;font-size:12px;display:inline-flex;align-items:center;gap:8px;justify-content:center}.btn:hover{filter:brightness(.98);transform:translateY(-1px)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 5px 14px #4f46e526}.btn.success{background:#e8f8f1;color:#087c57;border-color:#c9f0df}.btn.danger{background:#fff1f2;color:#c23d52;border-color:#ffd9df}.btn.small{padding:7px 10px;font-size:11px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:19px}.card,.stat{background:var(--surface);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow)}.stat{padding:19px 20px;position:relative;overflow:hidden}.stathead{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px;font-weight:600}.staticon{height:36px;width:36px;border-radius:11px;display:grid;place-items:center;font-size:17px;background:#eeedff;color:#5d52e8}.statvalue{font:800 27px Manrope;margin:14px 0 5px;letter-spacing:-1px}.statnote{font-size:11px;color:var(--muted)}.positive{color:var(--green);font-weight:700}.grid2{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:18px;margin-bottom:18px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.card{padding:21px;margin-bottom:18px}.cardhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:19px}.cardhead h2{font:800 15px Manrope;margin:0}.cardhead p{font-size:11px;color:var(--muted);margin:5px 0 0}.muted{color:var(--muted)}.hero{background:linear-gradient(120deg,#24205e,#5146d9 70%,#756bff);color:white;border-radius:16px;padding:23px 24px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px;box-shadow:0 14px 30px #4f46e522}.hero h2{font:800 18px Manrope;margin:0 0 8px}.hero p{color:#d9d7ff;margin:0;line-height:1.6}.hero .btn{background:white;color:#4037b8;border:0}.clock{font:800 32px Manrope;letter-spacing:1px;margin-bottom:12px}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;white-space:nowrap}th{text-align:left;color:#8a95a6;font-size:10px;text-transform:uppercase;letter-spacing:1.1px;font-weight:800;padding:12px 13px;border-bottom:1px solid var(--line)}td{padding:14px 13px;border-bottom:1px solid #f0f2f6;color:#445064;font-size:12px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafbfe}.person{display:flex;align-items:center;gap:10px}.miniavatar{width:32px;height:32px;border-radius:10px;background:#eeeaff;color:#584ed4;display:grid;place-items:center;font-weight:800;font-size:11px}.person strong{display:block;color:#202a39;font-size:12px}.person span{font-size:10px;color:var(--muted)}.badge{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:7px;font-size:10px;font-weight:800;background:#f0f2f6;color:#697586}.badge:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}.badge.green{background:#e8f8f1;color:#11845f}.badge.orange{background:#fff5df;color:#b87912}.badge.red{background:#fff0f2;color:#c53d52}.badge.blue{background:#eeedff;color:#584bd6}.progress{height:6px;border-radius:99px;background:#edf0f5;overflow:hidden}.progress span{height:100%;display:block;background:linear-gradient(90deg,#6258ee,#938bff);border-radius:99px}.fieldgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:flex;flex-direction:column;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:11px;font-weight:800;color:#586579}.field input,.field select,.field textarea{width:100%;padding:11px 12px;border:1px solid #dfe5ed;border-radius:9px;background:#fff;outline:none;color:#253044}.field input:focus,.field select:focus,.field textarea:focus{border-color:#8279f5;box-shadow:0 0 0 3px #7468f51a}.field textarea{min-height:90px;resize:vertical}.formactions{display:flex;gap:9px;margin-top:17px}.flash{padding:12px 15px;border-radius:10px;margin-bottom:17px;font-size:12px;font-weight:600}.flash.success{background:#e9f8f1;color:#087c57;border:1px solid #c8efdd}.flash.error{background:#fff0f2;color:#b62f45;border:1px solid #ffd4db}.empty{padding:30px;text-align:center;color:var(--muted)}.empty b{display:block;color:#465266;margin-bottom:6px}.loginbody{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;background:#111827}.loginhero{padding:8vw;display:flex;flex-direction:column;justify-content:center;color:white;background:radial-gradient(ellipse at 15% 15%,#40388b 0,transparent 40%),linear-gradient(145deg,#151a30,#171d35)}.loginhero .brand{padding:0;margin-bottom:70px}.loginhero h1{font:800 clamp(35px,4vw,58px) Manrope;line-height:1.1;letter-spacing:-2px;margin:0 0 20px}.loginhero p{max-width:480px;color:#aeb8cc;line-height:1.8;font-size:15px}.loginfeatures{display:flex;gap:24px;margin-top:35px;flex-wrap:wrap;color:#c5cce0;font-size:12px}.loginpanel{background:#fff;display:flex;align-items:center;justify-content:center;padding:35px}.loginbox{width:100%;max-width:390px}.loginbox h2{font:800 28px Manrope;margin:0 0 8px}.loginbox>p{color:var(--muted);margin:0 0 28px}.loginbox .field{margin-bottom:17px}.loginbox .btn{width:100%;padding:13px;margin-top:5px}.footnote{font-size:11px;color:#929daf;margin-top:22px;text-align:center}.mobilemenu{display:none}.notice{font-size:11px;background:#f7f7ff;color:#655bd5;padding:10px 12px;border-radius:9px;margin-top:12px;line-height:1.6}
@media(max-width:1100px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.grid2{grid-template-columns:1fr}.content{padding:24px}.topbar{padding:0 24px}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.mobilemenu{display:inline-flex}.topbar{height:68px;padding:0 16px}.content{padding:21px 15px}.welcome{align-items:flex-start;flex-direction:column}.stats{gap:10px}.stat{padding:15px}.statvalue{font-size:23px}.datechip{display:none}.profile div:last-child{display:none}.hero{align-items:flex-start;flex-direction:column}.fieldgrid{grid-template-columns:1fr}.field.full{grid-column:auto}.grid3{grid-template-columns:1fr}.loginbody{grid-template-columns:1fr}.loginhero{display:none}.loginpanel{min-height:100vh}.card{padding:16px}.top-title{font-size:16px}}

.btn.danger{background:#dc3545!important;color:#fff!important;border-color:#dc3545!important}.btn.primary{background:#159b72!important;color:#fff!important;border-color:#159b72!important}

/* Fix Overview page heading and View all button on mobile */
@media (max-width: 480px) {
    .cardhead {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 10px;
        flex-wrap: wrap;
    }

    .cardhead > div {
        flex: 1 1 160px;
        min-width: 0;
    }

    .cardhead h2 {
        margin-top: 0;
        overflow-wrap: break-word;
    }

    .cardhead .btn {
        flex-shrink: 0;
        white-space: nowrap;
        font-size: 11px;
        padding: 7px 9px;
    }
}


/* FIX: Overview cards extending beyond mobile screen */
@media screen and (max-width: 600px) {

    /* Force the Overview grid to use one mobile column */
    .grid2 {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        gap: 14px;
    }

    /* Prevent cards from expanding past the viewport */
    .grid2 > .overview-card {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        box-sizing: border-box !important;
    }

    /* Keep card headings and buttons inside each card */
    .overview-card .cardhead {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        flex-wrap: wrap;
        gap: 8px;
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }

    .overview-card .cardhead > div {
        flex: 1 1 140px;
        min-width: 0;
    }

    .overview-card .cardhead a.btn {
        flex-shrink: 0;
        margin-left: auto;
        white-space: nowrap;
    }

    /* Keep long table content inside its own scroll area */
    .overview-card .tablewrap {
        display: block;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        overflow-x: auto;
        box-sizing: border-box;
        -webkit-overflow-scrolling: touch;
    }

    .overview-card .tablewrap table {
        min-width: 540px;
    }

    /* Allow the attendance content to shrink */
    .overview-card > * {
        min-width: 0;
        max-width: 100%;
    }
}


/* Mobile: scroll wide tables horizontally inside their own container */
.tablewrap {
    display: block;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: auto !important;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

/* Keep table columns readable instead of squeezing them */
.tablewrap table {
    width: max-content;
    min-width: 540px;
    border-collapse: collapse;
}

/* Make the scrollbar visible where supported */
.tablewrap::-webkit-scrollbar {
    height: 6px;
}

.tablewrap::-webkit-scrollbar-thumb {
    background: #9ca3af;
    border-radius: 10px;
}

.tablewrap::-webkit-scrollbar-track {
    background: #eef0f5;
    border-radius: 10px;
}

/* Keep the table within its card */
.overview-card,
.card {
    min-width: 0;
    max-width: 100%;
}

@media (max-width: 600px) {
    .tablewrap table {
        min-width: 540px;
    }
}