:root{--brand:#5b247a;--ink:#202635;--bg:#f5f6f8;--line:#dfe3e8;--white:#fff;--danger:#9f2430;--ok:#17613a}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--brand);text-decoration:none}.topbar{height:62px;background:#242a38;color:white;display:flex;align-items:center;padding:0 18px;gap:14px;position:sticky;top:0;z-index:20}.brand{display:inline-flex;align-items:center;flex-shrink:0}.brand img{display:block}.login-brand-img{display:block;margin-bottom:6px}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px;flex-shrink:0}.top-actions form{margin:0}.company-switch select{max-width:220px}.menu-btn{display:none;background:none;border:0;color:white;font-size:22px;flex-shrink:0}.app-shell{display:flex;min-height:calc(100vh - 62px)}.sidebar{width:235px;background:white;border-right:1px solid var(--line);padding:18px}.sidebar a{display:block;padding:10px;border-radius:8px;color:var(--ink)}.sidebar a:hover{background:#f0ebf4;color:var(--brand)}.sidebar a.active{background:var(--brand);color:white;font-weight:600}.nav-heading{font-size:12px;text-transform:uppercase;color:#777;margin:20px 10px 6px}
.nav-accordion{display:flex;flex-direction:column;gap:3px}
.nav-group{border-radius:10px;overflow:hidden;transition:background-color .15s}
.nav-group summary{list-style:none;cursor:pointer;padding:11px 12px;font-size:13px;font-weight:700;color:#3c4150;border-radius:10px;display:flex;align-items:center;gap:10px;user-select:none;transition:background-color .15s,color .15s}
.nav-group summary::-webkit-details-marker{display:none}
.ng-ico{font-size:15px;width:20px;text-align:center;flex-shrink:0;filter:grayscale(.15)}
.ng-label{flex:1}
.nav-group summary::after{content:'';width:7px;height:7px;border-right:2px solid #b0b0b8;border-bottom:2px solid #b0b0b8;transform:rotate(-45deg);transition:transform .18s ease;flex-shrink:0}
.nav-group[open]>summary::after{transform:rotate(45deg);border-color:var(--brand)}
.nav-group summary:hover{background:#f0ebf4;color:var(--brand)}
.nav-group[open]>summary{background:#f5eef9;color:var(--brand)}
.nav-group .nav-links-wrap,.nav-group>a{display:block}
.nav-group>a{padding:9px 12px 9px 42px;font-size:13.5px;color:#4a4f5c;border-radius:8px;margin:1px 6px}
.nav-group>a:hover{background:#f0ebf4;color:var(--brand);padding-left:44px}
.nav-group>a.active{background:var(--brand);color:white;font-weight:600}
.nav-group[open]{animation:navgroupopen .18s ease}
@keyframes navgroupopen{from{background-color:transparent}to{background-color:transparent}}
.nav-single{display:flex;align-items:center;gap:10px;padding:11px 12px;font-size:13px;font-weight:700;color:#3c4150;border-radius:10px;margin-top:2px}
.nav-single:hover{background:#f0ebf4;color:var(--brand)}
.nav-single.active{background:var(--brand);color:white}
.topbar-icons{display:flex;align-items:center;gap:6px}.topbar-icon{position:relative;color:rgba(255,255,255,.82);display:inline-flex;align-items:center;gap:7px;padding:9px 12px;border-radius:9px;font-size:16px;line-height:1;white-space:nowrap;transition:background-color .15s,color .15s}.ti-ico{font-size:17px}.topbar-icon:hover{background:rgba(255,255,255,.14);color:white}.topbar-icon.active{background:rgba(255,255,255,.18);color:white}.topbar-icon-label{font-size:13.5px;font-weight:500;display:none}.topbar-badge{position:static;background:var(--danger);color:white;font-size:10px;padding:1px 6px;border-radius:99px;line-height:1.4}
@media(min-width:781px){.topbar-icon-label{display:inline}}.content{flex:1;padding:24px;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px}.page-head h1{margin:0}.muted{color:#687080}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px}.card,.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:18px}.metric{font-size:30px;font-weight:800;color:var(--brand)}.panel{margin-top:18px}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:white;border-radius:8px;padding:9px 14px;cursor:pointer;color:var(--ink)}.btn.primary{background:var(--brand);color:white;border-color:var(--brand)}.btn-link{border:0;background:none;color:white;cursor:pointer}.filters{display:flex;gap:10px;margin-bottom:14px}.filters input{max-width:360px}.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:10px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line)}.empty{text-align:center;color:#777;padding:28px}.badge{background:#eee;padding:4px 8px;border-radius:99px;font-size:12px}.badge.ok{background:#e9f6ef;color:var(--ok)}.badge.warn{background:#fff4dd;color:#8a5a00}.badge.danger{background:#fdecef;color:var(--danger)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:850px}.form-grid label{display:flex;flex-direction:column;gap:6px}.form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px}input,select,textarea{width:100%;padding:10px 11px;border:1px solid #cbd1d8;border-radius:7px;font:inherit;background:white}.alert{padding:12px 14px;border-radius:8px;margin:0 0 16px}.alert.success{background:#e9f6ef;color:var(--ok)}.alert.error{background:#fdecef;color:var(--danger)}.field-error{color:var(--danger)}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#f7f4f9,#eceef3)}.login-card{width:min(420px,100%);background:white;border:1px solid var(--line);padding:28px;border-radius:14px;box-shadow:0 18px 50px rgba(30,20,40,.08)}.login-card form{display:grid;gap:16px}.login-card label{display:grid;gap:7px}
@media(max-width:780px){.menu-btn{display:block}.sidebar{position:fixed;left:-250px;top:62px;bottom:0;z-index:15;transition:.2s;box-shadow:8px 0 24px rgba(0,0,0,.08)}body.nav-open .sidebar{left:0}.content{padding:16px}.user-name{display:none}.company-switch select{max-width:150px}.page-head{align-items:flex-start;flex-direction:column}.form-grid{grid-template-columns:1fr}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:420px){.cards{grid-template-columns:1fr}.topbar{padding:0 10px}.brand{font-size:18px}.content{padding:12px}}

.actions,.profile-actions,.section-head{display:flex;gap:10px;align-items:center}.small{font-size:12px}.filter-grid{flex-wrap:wrap}.filter-grid select{max-width:190px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr));max-width:none}.employee-form .panel{margin-top:14px}.employee-form h2,.panel h2{margin-top:0}.split{display:grid;grid-template-columns:1fr 1fr;gap:24px}.split label{display:grid;gap:6px;margin-bottom:10px}.sensitive{border-left:4px solid #8c6b21}.check{display:flex!important;flex-direction:row!important;align-items:center;gap:8px}.check input{width:auto}.sticky-actions{position:sticky;bottom:0;background:rgba(245,246,248,.95);backdrop-filter:blur(6px);padding:12px 0;display:flex;justify-content:flex-end;gap:10px;z-index:5}.profile-head{display:flex;align-items:center;gap:16px;margin-top:0}.avatar{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#eee5f3;color:var(--brand);font-weight:800;font-size:22px}.profile-head h1,.profile-head h2{margin:0}.profile-actions{margin-left:auto}.profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.details{display:grid;grid-template-columns:150px 1fr;gap:9px 14px}.details dt{color:#687080}.details dd{margin:0;font-weight:600}.document-form{display:grid;grid-template-columns:1fr 1.5fr 160px auto 1.5fr auto;gap:8px;align-items:center;margin-bottom:14px}.timeline{display:grid;gap:12px}.timeline-item{border-left:3px solid #d4c2df;padding:4px 0 4px 14px}.timeline-item span{margin-left:10px;color:#687080;font-size:13px}.timeline-item p{margin:5px 0 0}.inline-form{display:flex;gap:10px;align-items:center}.inline-form input{max-width:520px}code{background:#f1eef3;padding:2px 5px;border-radius:4px}
@media(max-width:900px){.form-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.document-form{grid-template-columns:1fr 1fr}.profile-grid{grid-template-columns:1fr}}
@media(max-width:620px){.form-grid.three,.split{grid-template-columns:1fr}.document-form{grid-template-columns:1fr}.details{grid-template-columns:1fr}.details dt{margin-top:8px}.profile-head{align-items:flex-start}.profile-actions{margin-left:0}.inline-form{flex-direction:column;align-items:stretch}}

.panel-inline{margin:16px 0}.review-form{display:flex;gap:6px;min-width:420px}.review-form input{min-width:170px}.span-all{grid-column:1/-1}.badge.PRESENT{background:#e7f5ec}.badge.ABSENT{background:#fdebec}.badge.HALF_DAY{background:#fff4dd}
@media(max-width:700px){.review-form{min-width:300px;flex-wrap:wrap}.span-all{grid-column:auto}}
.checkbox-grid{display:flex;flex-wrap:wrap;gap:1rem}.checkbox-grid label{display:flex;align-items:center;gap:.45rem}.checkbox-grid input[type=checkbox]{width:auto}.inline-form input[type=file]{max-width:220px}
.mt-12{margin-top:12px}.d-inline{display:inline}.error-page-main{font-family:system-ui;max-width:680px;margin:10vh auto;padding:24px}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin:1rem 0}.stat-card{background:var(--card-bg,#fff);border:1px solid var(--border,#e2e2e2);border-radius:8px;padding:1rem;text-align:center}.stat-value{font-size:1.75rem;font-weight:700}.stat-label{color:var(--muted,#666);font-size:.85rem;margin-top:.25rem}

/* ---- utilities added for CSP-safe views (no inline style attributes) ---- */
.hidden{display:none!important}
.btn-danger{color:var(--danger);border-color:var(--danger)}
.btn-text{background:none;border:0;padding:0;color:var(--brand);cursor:pointer;font:inherit}
.course-edit-row td{background:#f7f6fb}
.live-indicator{font-family:monospace;font-size:13px;color:#888;min-height:18px}
.live-indicator.ok{color:var(--ok,#16a34a);font-weight:600}
.fe-camera-wrap{margin-top:16px;max-width:480px}
.fe-video{width:100%;border-radius:10px;background:#111}
.fe-status{margin-top:8px}
.fe-form{margin-top:14px}
.kiosk-link-panel{background:linear-gradient(135deg,#5b247a,#33103f);color:#fff}
.kiosk-link-panel h2{color:#fff}
.kiosk-link-panel p{color:#e7d6ef}
.kiosk-link-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.kiosk-link-row input{flex:1 1 320px;background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.3)}
.kiosk-link-copy{background:#fff;color:#5b247a;border-color:#fff}
.kiosk-link-open{background:transparent;color:#fff;border-color:rgba(255,255,255,.4)}
.kiosk-link-status{min-height:16px;margin:8px 0 0}

/* ---- helpers replacing inline style attributes in views ---- */
.pol-item{padding:16px 0;border-top:1px solid var(--line,#e5e5e5)}
.pol-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px}
.pol-content{margin-top:10px;white-space:pre-wrap;line-height:1.6}
.ver-tag{font-weight:400;font-size:13px}
.metric-sm{font-size:18px}
.fs13{font-size:13px}.m0{margin:0}.mt0{margin-top:0}.mt10{margin-top:10px}.mt12{margin-top:12px}.mb6{margin-bottom:6px}
.maxw-320{max-width:320px}.jc-start{justify-content:flex-start}

/* ---- additions: info alerts, profile tabs, phone-notification prompt ---- */
.alert.info{background:#eef4ff;color:#1d4ed8}
.profile-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 0}
fieldset.addr{border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:grid;gap:10px;margin:0}
fieldset.addr legend{padding:0 6px;font-weight:600}
.push-banner{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#f3ecf8;border:1px solid #d9c7e6;border-radius:10px;padding:10px 14px;margin:0 0 16px}
.push-banner span{flex:1 1 220px}
