@charset "UTF-8";
:root{--ink:#193638;--muted:#647778;--line:#dfe7e4;--paper:#f5f7f4;--white:#fff;--green:#17675a;--lime:#c7e9b1;--nav:#123d3c;--red:#a83d43;--amber:#986323;--shadow:0 8px 32px #133b3210;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--paper);font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button{border:0}a{color:var(--green)}h1,h2,h3,p{margin-top:0}h1{font-size:30px;font-weight:650;letter-spacing:-1px;margin-bottom:9px}h2{font-size:18px;font-weight:650;letter-spacing:-.35px}h3{font-size:15px}p{line-height:1.6}.muted{color:var(--muted)}.small{font-size:12px}.eyebrow{font-size:11px;font-weight:750;letter-spacing:1.7px;text-transform:uppercase;color:var(--green)}.btn{border-radius:8px;padding:10px 15px;background:var(--green);color:white;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;min-height:40px}.btn.secondary{background:white;color:var(--ink);border:1px solid #cbd9d4}.btn.ghost{background:transparent;color:var(--green)}.btn.danger{background:#fcf0ef;color:var(--red)}.btn.small{min-height:30px;padding:6px 10px;font-size:12px}.icon{width:19px;height:19px;display:inline-block;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.brand-symbol{width:42px;height:42px;border-radius:13px;background:var(--lime);color:var(--nav);display:inline-flex;align-items:center;justify-content:center;font-size:26px;font-weight:800}.boot{min-height:90vh;display:grid;place-content:center;text-align:center;gap:20px}.boot .brand-symbol{margin:auto}.auth{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}.auth-story{background:var(--nav);padding:64px max(50px,8vw);color:white;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-story:after{content:"";position:absolute;width:430px;height:430px;right:-230px;bottom:80px;border:80px solid #235451;border-radius:50%;pointer-events:none}.brand-row{display:flex;align-items:center;gap:13px}.brand-row strong{font-size:18px;letter-spacing:-.4px}.auth-story h1{font-size:48px;line-height:1.13;max-width:460px;letter-spacing:-1.8px}.auth-story h1 span{color:var(--lime)}.auth-story p{color:#c9dcd6;max-width:360px;font-size:16px}.auth-story .eyebrow{color:#bce1ad;margin-bottom:20px}.auth-caption{font-size:12px;color:#abc5bd}.auth-form-wrap{display:flex;align-items:center;justify-content:center;padding:45px}.auth-form{width:100%;max-width:380px}.auth-form h2{font-size:26px;margin-top:20px}.auth-form form{margin-top:28px}.auth-form .btn{width:100%;margin-top:8px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:17px;min-width:0}.field label{font-size:12px;font-weight:650;color:#476260}.field input,.field select,.field textarea{border:1px solid #cddbd6;border-radius:8px;padding:10px 12px;min-height:42px;width:100%;background:white;color:var(--ink)}.field textarea{min-height:100px;resize:vertical}.field input:focus,.field select:focus{border-color:var(--green);outline:2px solid #ddede3}.field .help{font-size:12px;line-height:1.5;color:var(--muted)}.form-error{color:var(--red);background:#fff0ef;border-radius:8px;padding:12px;margin:12px 0;line-height:1.5}.form-error:empty{display:none}.shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--nav);color:#ddece5;padding:28px 19px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;z-index:3}.sidebar .brand-row{padding:0 9px 28px;align-items:flex-start}.brand-sub{font-size:11px;color:#adcbc2;margin-top:5px}.sidebar .brand-symbol{width:36px;height:36px;font-size:23px;border-radius:11px;flex-shrink:0}.side-label{font-size:10px;letter-spacing:1.6px;text-transform:uppercase;color:#99bab2;padding:20px 13px 10px}.nav-btn{width:100%;display:flex;gap:12px;align-items:center;background:transparent;padding:13px;color:#c6dcd4;border-radius:8px;text-align:left;font-weight:550;margin-bottom:4px}.nav-btn.active{background:#e0efd6;color:#123d3c}.nav-btn:hover:not(.active){background:#ffffff0c}.sidebar-bottom{margin-top:auto;border-top:1px solid #38605b;padding:18px 10px 0}.sidebar-bottom p{font-size:12px;margin-bottom:8px}.account-name{font-weight:650;color:#f2f8ee;word-break:break-word}.side-actions{display:flex;gap:10px;margin-top:12px}.side-actions button{color:#c6dcd4;font-size:11px;padding:4px 0;background:transparent}.workspace{min-width:0}.topbar{min-height:78px;background:#ffffffcc;border-bottom:1px solid var(--line);padding:17px 36px;display:flex;gap:20px;align-items:center;justify-content:space-between}.breadcrumb{font-size:12px;color:var(--muted)}.breadcrumb strong{color:var(--ink);font-weight:600}.top-right{display:flex;align-items:center;gap:16px}.live-pill{display:flex;align-items:center;gap:7px;font-size:11px;white-space:nowrap;color:var(--green)}.live-dot{height:6px;width:6px;background:#438d62;border-radius:50%}.company-select{max-width:290px;border:1px solid var(--line);border-radius:7px;padding:8px;background:white;font-size:12px;color:var(--ink)}.main{padding:32px 36px;max-width:1700px;margin:auto}.page-heading{display:flex;align-items:flex-end;gap:16px;justify-content:space-between;margin-bottom:25px}.page-heading p{color:var(--muted);font-size:13px;margin:0}.page-actions{display:flex;gap:8px;flex-shrink:0}.filters{background:white;border:1px solid var(--line);border-radius:12px;padding:18px 20px 5px;margin-bottom:22px}.filter-grid{display:grid;grid-template-columns:1.25fr 1fr 1.25fr .85fr .85fr;gap:12px}.filters .field{margin-bottom:12px}.filters input,.filters select{min-height:38px;padding:8px 10px;font-size:12px}.filter-bottom{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:2px 0 12px;flex-wrap:wrap}.quick-dates{display:flex;gap:6px}.quick-dates button{background:#f0f4f0;color:#527068;border:1px solid #e3eae4;padding:5px 10px;border-radius:5px;font-size:11px}.filter-extra{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.filter-extra select{width:auto;border:1px solid #d4e0da;border-radius:5px;background:white;color:var(--ink)}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:23px}.metric{background:white;border:1px solid var(--line);border-radius:12px;padding:20px;position:relative}.metric.featured{background:#e7f1df;border-color:#d5e3cc}.metric-label{font-size:12px;color:#5e7670;margin-bottom:13px;font-weight:550}.metric-number{font-size:34px;font-weight:650;letter-spacing:-1px;line-height:1.1}.metric-note{font-size:11px;color:var(--muted);margin-top:12px;line-height:1.5}.metric .metric-icon{position:absolute;right:18px;top:18px;color:#7a9c8b}.metric-number.red{color:var(--red)}.two-col{display:grid;grid-template-columns:1.6fr 1fr;gap:20px;margin-bottom:22px}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:22px}.panel .panel{margin:0}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px 15px;gap:14px}.panel-head h2{margin:0}.panel-head p{font-size:11px;color:var(--muted);margin:5px 0 0}.panel-body{padding:0 22px 22px}.panel .empty{border:0;border-radius:0;min-height:180px}.chart{height:205px;display:flex;gap:8px;align-items:flex-end;padding:20px 0 28px;border-bottom:1px solid #e8eeea;background:repeating-linear-gradient(to top,transparent 0,transparent 42px,#edf2ec 43px,#edf2ec 44px)}.bar-group{flex:1;min-width:0;height:100%;display:flex;align-items:flex-end;justify-content:center;position:relative;gap:3px}.bar{width:15px;max-width:40%;min-height:0;background:#377969;border-radius:3px 3px 0 0}.bar.absent{background:#d99289}.bar-label{position:absolute;bottom:-22px;font-size:9px;color:var(--muted);white-space:nowrap}.legend{display:flex;gap:18px;font-size:11px;color:var(--muted);margin-top:15px}.legend span{display:flex;gap:6px;align-items:center}.dot{height:8px;width:8px;background:#377969;border-radius:2px}.dot.red{background:#d99289}.summary-line{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid #edf1eb;font-size:13px}.summary-line:last-child{border:0}.summary-line strong{font-variant-numeric:tabular-nums}.note{display:flex;align-items:flex-start;gap:10px;padding:13px 16px;border:1px solid #dce7da;border-radius:9px;background:#eef4e9;font-size:12px;line-height:1.65;margin-bottom:20px;color:#4b675a}.note .icon{flex-shrink:0;margin-top:2px}.note.warning{background:#fff9ee;border-color:#eadfc8;color:#80622b}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px;text-align:left}th{background:#f8faf6;color:#698079;font-size:10px;letter-spacing:.6px;text-transform:uppercase;font-weight:650;padding:12px 20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap}td{padding:14px 20px;border-bottom:1px solid #edf1e9;vertical-align:middle}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcf8}.table-name{font-size:12px;font-weight:650;color:var(--ink)}.table-detail{font-size:11px;color:var(--muted);margin-top:4px;line-height:1.5;max-width:380px}.badge{border-radius:5px;display:inline-flex;padding:4px 8px;font-size:10px;font-weight:650;white-space:nowrap;background:#e8f0e5;color:#427150}.badge.absent,.badge.inactive{background:#fae9e6;color:#a44943}.badge.late,.badge.unrecorded{background:#fff1da;color:#8d6429}.badge.excused,.badge.scheduled{background:#e8eef8;color:#4f699b}.badge.other{background:#efedef;color:#6f6271}.pager{padding:13px 20px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px}.pager-actions{display:flex;align-items:center;gap:8px}.empty{background:white;border:1px dashed #cbd9d0;border-radius:12px;padding:45px 24px;min-height:260px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.empty .icon{width:32px;height:32px;margin-bottom:13px;color:#6d9680}.empty h2{font-size:18px;margin-bottom:8px}.empty p{max-width:540px;font-size:13px;color:var(--muted);margin-bottom:15px}.loading{opacity:.45;pointer-events:none}.footer-note{color:var(--muted);font-size:11px;line-height:1.6;margin:14px 0}.tabs{display:flex;gap:7px;border-bottom:1px solid var(--line);margin-bottom:22px;overflow:auto}.tab{background:transparent;padding:13px 15px;color:var(--muted);font-size:12px;white-space:nowrap;border-bottom:2px solid transparent}.tab.active{border-color:var(--green);color:var(--green);font-weight:650}.admin-toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:17px 20px;border-bottom:1px solid var(--line)}.admin-toolbar .field{margin:0;flex:1;min-width:180px}.checkbox{display:flex;gap:8px;align-items:center;font-size:12px;white-space:nowrap}.checkbox input{accent-color:var(--green);width:16px;height:16px}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.step{padding:20px;border:1px solid var(--line);border-radius:10px;background:white}.step-number{display:inline-flex;width:26px;height:26px;border-radius:50%;background:#e1efdc;color:var(--green);align-items:center;justify-content:center;margin-bottom:12px;font-size:11px;font-weight:700}.step h3{margin-bottom:6px}.step p{font-size:12px;color:var(--muted);margin:0}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.member-avatar{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#edf2e8;color:#53755e;font-size:10px;font-weight:650;margin-right:9px;flex-shrink:0}.person{display:flex;align-items:center}.person div{min-width:0}#toast{position:fixed;right:24px;bottom:24px;background:var(--nav);color:white;border-radius:9px;box-shadow:var(--shadow);padding:14px 20px;z-index:30;max-width:420px;display:none;font-size:13px;line-height:1.5}#toast.show{display:block}dialog{padding:0;border:0;border-radius:14px;box-shadow:0 22px 80px #102d3440;width:min(560px,calc(100vw - 32px));max-height:90vh;color:var(--ink)}dialog::backdrop{background:#12373270;backdrop-filter:blur(3px)}.modal-head{padding:23px 25px 15px;display:flex;justify-content:space-between;align-items:center;gap:15px}.modal-head h2{margin:0}.modal-head button{background:#f1f5ee;border-radius:50%;width:29px;height:29px;color:#627a6e}.modal-body{padding:0 25px 25px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.form-grid .full{grid-column:1/-1}.break{word-break:break-word}.spinner{display:inline-block;width:15px;height:15px;border:2px solid #c7d8cc;border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.refresh-status{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:7px}.admin-source-variants{max-width:420px;line-height:1.6}.mobile-brand{display:none}
@media(min-width:1450px){.main{padding:36px 46px}.topbar{padding:18px 46px}}
@media(max-width:1150px){.shell{grid-template-columns:205px minmax(0,1fr)}.sidebar{padding:25px 12px}.main{padding:26px 22px}.topbar{padding:16px 22px}.filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.two-col{grid-template-columns:1fr}.cards{gap:10px}.metric{padding:17px}.metric-number{font-size:29px}.metric .metric-icon{display:none}}
@media(max-width:800px){.shell{display:block}.sidebar{position:static;height:auto;padding:15px 16px;display:block}.sidebar .brand-row{padding:0 0 12px}.sidebar nav{display:flex;overflow:auto;gap:5px}.nav-btn{width:auto;white-space:nowrap;padding:9px 12px;font-size:12px;margin:0}.nav-btn .icon{width:16px}.side-label,.sidebar-bottom{display:none}.topbar{min-height:60px;padding:12px 16px;gap:10px;flex-wrap:wrap}.top-right{gap:10px}.breadcrumb{font-size:11px}.company-select{max-width:220px}.main{padding:24px 16px}h1{font-size:25px}.page-heading{align-items:flex-start;flex-direction:column;gap:16px}.page-actions{width:100%}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-grid .field:first-child{grid-column:1/-1}.filters{padding:15px 14px 3px}.filter-bottom{gap:12px}.two-col{gap:0}.panel-head{padding:17px}.panel-body{padding:0 17px 18px}td,th{padding:12px 15px}.steps{grid-template-columns:1fr}.step{padding:15px}.auth{grid-template-columns:1fr}.auth-story{padding:24px 30px;min-height:230px}.auth-story h1{font-size:29px;margin:25px 0 0;max-width:400px}.auth-story p,.auth-caption,.auth-story .eyebrow{display:none}.auth-story:after{width:200px;height:200px;border-width:40px;bottom:0;right:-95px}.auth-form-wrap{padding:32px 24px}.live-pill{font-size:10px}.mobile-brand{display:block}.mobile-account{background:white;color:var(--green);font-size:11px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}#toast{left:16px;right:16px;bottom:16px;max-width:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}

.auth-story>*{position:relative;z-index:1}.auth-form form+p{margin-top:16px}
@media(max-width:800px){.top-right{display:grid;grid-template-columns:auto minmax(0,1fr) auto;width:100%;min-width:0;gap:8px}.company-select{min-width:0;width:100%;max-width:none}.filter-extra{display:grid;grid-template-columns:auto minmax(0,1fr);width:100%;gap:8px}.filter-extra select{min-width:0;width:100%}.sidebar nav{scrollbar-width:none}.sidebar nav::-webkit-scrollbar{display:none}}

.security-body{max-width:800px}.security-body li{margin:10px 0}.security-body a{color:var(--green,#0c4140)}.security-body form{max-width:600px;margin-top:24px}.captcha-box{margin:16px 0;min-width:0}.captcha-box:empty{display:none}[hidden]{display:none!important}


/* Login and first access */
.auth{grid-template-columns:minmax(0,1fr) minmax(540px,1fr);background:#f5f7f5}
.auth-story{padding:48px clamp(36px,5.4vw,96px);background:radial-gradient(ellipse at 10% 90%,#205d51 0,transparent 60%),#123d3c;min-height:100vh}
.auth-story:after{width:560px;height:560px;right:-365px;bottom:6%;border:1px solid #ffffff20;box-shadow:0 0 0 65px #ffffff04,0 0 0 130px #ffffff03}
.auth-story .brand-row strong{font-size:29px;letter-spacing:-1px}
.auth-story .brand-sub{font-size:10px;letter-spacing:2.7px;margin-top:8px}
.auth-intro{padding:56px 0}
.auth-story .eyebrow{font-size:10px;letter-spacing:2px;margin-bottom:22px}
.auth-story h1{font-size:clamp(36px,3.6vw,58px);line-height:1.16;letter-spacing:-1.9px;max-width:570px;font-weight:600;margin-bottom:24px}
.auth-story h1 span{color:#c7e9b1}
.auth-story p{font-size:16px;line-height:1.8;max-width:350px;margin-bottom:30px}
.auth-modules{display:flex;flex-direction:column;gap:14px;color:#d6e5de;font-size:12px}
.auth-modules span{display:flex;align-items:center;gap:12px}
.auth-modules .icon{color:#b9d6bb;width:18px;height:18px}
.auth-caption{display:flex;align-items:center;gap:12px;line-height:1.6;font-size:11px;letter-spacing:.2px}
.auth-caption-line{width:28px;height:1px;background:#90bca2}
.auth-form-wrap{padding:32px;flex-direction:column;gap:19px;min-width:0}
.auth-card{width:100%;max-width:460px;padding:36px 38px 28px;border:1px solid #e1e8e1;border-radius:20px;background:#fff;box-shadow:0 14px 48px #173c3110}
.auth-form{max-width:none}
.auth-form .eyebrow{font-size:10px;letter-spacing:1.8px}
.auth-form h2{font-size:29px;letter-spacing:-.9px;margin:12px 0 10px;line-height:1.2}
.auth-description{font-size:13px;line-height:1.65;margin-bottom:0;max-width:320px}
.auth-form form{margin-top:25px}
.auth-form .field{gap:8px;margin-bottom:17px}
.auth-form .field label{font-size:12px;color:#344e49}
.auth-form .field input{min-height:47px;border-radius:9px;background:#fff;border-color:#cbd7d0;padding:12px 14px;font-size:14px}
.auth-form .field input::placeholder{color:#84928b;opacity:1}
.auth-form .field input:focus{border-color:#17675a;outline:3px solid #e4f0e7}
.auth-form .btn{min-height:46px;margin-top:0;border-radius:9px}
.auth-form .auth-submit{justify-content:space-between;padding:12px 17px}
.auth-form .auth-submit:not(:disabled):hover{background:#125548}
.auth-form button:disabled{cursor:not-allowed}
.auth-verification{margin:20px 0 0}
.auth-verification #captcha-status{font-size:11px;line-height:1.55;margin:0 0 9px}
.auth-verification .captcha-box{margin:0 0 8px}
.auth-verification #retry-captcha{min-height:26px;width:auto;padding:3px 0;background:none;border:0;border-radius:0;color:#526b60;font-size:11px;text-decoration:underline;text-underline-offset:3px}
.auth-divider{display:flex;align-items:center;gap:13px;color:#738078;font-size:11px;margin:20px 0 15px}
.auth-divider:before,.auth-divider:after{content:"";height:1px;background:#e3e8e2;flex:1}
.auth-form .google-signin{background:#fff;color:#1f1f1f;border:1px solid #747775;font-weight:500;gap:12px;position:relative}
.auth-form .google-signin:disabled{opacity:1;color:#747775;border-color:#dadce0;background:#fff}
.auth-form .google-signin:not(:disabled):hover{background:#f8faf8;box-shadow:0 1px 3px #3c404326}
.google-mark{display:block;width:20px;height:20px;object-fit:contain;flex-shrink:0}
.auth-google-help{font-size:11px;color:#6a7a70;text-align:center;line-height:1.5;margin:10px 0 0}
.auth-help{margin-top:23px;padding-top:18px;border-top:1px solid #e8ede7;color:#728076;font-size:11px;line-height:1.65}
.auth-help strong{display:block;color:#4f6356;font-weight:600;margin-bottom:3px}
.auth-help span{display:block}
.auth-footer{font-size:10px;color:#7b897e;display:flex;align-items:center;justify-content:center;gap:6px;margin:0;text-align:center}
.auth-footer .icon{width:13px;height:13px}
@media(min-width:801px) and (max-height:800px){.auth-card{padding-top:26px;padding-bottom:22px}.auth-form-wrap{padding:22px;gap:13px}.auth-form form{margin-top:20px}.auth-help{margin-top:18px;padding-top:14px}}
@media(max-width:1000px) and (min-width:801px){.auth{grid-template-columns:minmax(0,1fr) 490px}.auth-story{padding:36px 30px}.auth-story h1{font-size:36px}.auth-story .eyebrow{font-size:9px}}
@media(max-width:800px){
 .auth{display:flex;flex-direction:column;min-height:100vh}
 .auth-story{min-height:0;padding:27px 24px 28px;gap:0}
 .auth-story .brand-row{justify-content:center;text-align:center}
 .auth-story .brand-row strong{font-size:26px}
 .auth-story .brand-sub{font-size:9px;letter-spacing:2px}
 .auth-intro,.auth-story .auth-caption{display:none}
 .auth-story:after{width:280px;height:280px;bottom:-120px;right:-150px;border-width:1px}
 .auth-form-wrap{padding:24px 18px;gap:18px;flex:1;justify-content:flex-start}
 .auth-card{padding:28px 26px 24px;border-radius:16px}
 .auth-form h2{font-size:27px}
}
@media(max-width:370px){.auth-form-wrap{padding:20px 8px}.auth-card{padding:24px 14px}.auth-form h2{font-size:25px}}
