.portal-body{--navy:#303747;--navy2:#3c4659;--blue:#c94d2d;--gold:#c94d2d;--cream:#f4f6fa;--ink:#303747;--line:#e2e5ec;background:#f4f6fa;font-size:16px}
.portal-body h1,.portal-body h2,.portal-body h3{font-family:inherit;letter-spacing:-.025em;line-height:1.25}
.portal-body .portal-sidebar{background:#303747;color:#e4e7ee;border:0}
.portal-body .portal-sidebar-head>a{display:block;background:white;border-radius:10px;padding:15px}
.portal-body .portal-sidebar nav a{background:transparent;border:0;box-shadow:none;color:#e4e7ee;font-weight:500}
.portal-body .portal-sidebar nav a:hover{background:#424c60;color:white;border:0}
.portal-body .portal-nav-group{background:transparent;border-top:1px solid #515b6d;border-radius:0}
.portal-body .portal-nav-group>summary{color:#c6cedc;font-size:.875rem}
.portal-body .portal-sidebar .menu-button{color:white;border-color:#d1d7e1}
.portal-body .button,.portal-body main.portal button:not(.button):not([data-password-toggle]){background:white;color:#3e4758;border:1px solid #cbd1dc;border-bottom-width:1px;box-shadow:none;border-radius:7px;font-weight:650}
.portal-body .button.gold{background:#c94d2d;color:white;border-color:#c94d2d}
.portal-body .button.danger{color:#a92835;background:#fff5f5;border-color:#edc5ca}
.portal-body .button:hover{box-shadow:0 2px 8px #30374718;transform:none}
.portal-body .panel{background:white;border:1px solid #e2e5ec;box-shadow:0 2px 5px #30374706;border-radius:10px;padding:24px;margin-bottom:22px}
.portal-body .wrap{max-width:1450px}
.portal-body .eyebrow{color:#747e90;font-size:.8rem;font-weight:700;letter-spacing:.09em}
.portal-body details>summary{list-style:none;cursor:pointer;padding:16px;font-size:1rem}
.portal-body details>summary::-webkit-details-marker{display:none}
.portal-body details>summary:after{content:'›';display:inline-block;float:right;transform:rotate(0);transition:transform .15s}
.portal-body details[open]>summary:after{transform:rotate(90deg)}
.portal-body input,.portal-body select,.portal-body textarea{border-radius:6px;border:1px solid #ccd3df;max-width:100%;font-size:1rem}
.crm-heading{display:flex;justify-content:space-between;gap:24px;align-items:center}
.crm-heading h1{font-size:2rem;margin-bottom:8px}.crm-heading p{color:#717b8c}
.crm-cycle{font-size:.875rem;color:#747e90;margin:12px 0 24px}
.crm-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.crm-kpis article{position:relative}.crm-kpis p{color:#6c7687;font-size:.9rem;margin:0 25px 18px 0}
.crm-kpis strong{display:block;font-size:1.75rem;line-height:1.25;overflow-wrap:anywhere}.crm-kpis small{display:block;color:#747e90;margin-top:10px;font-size:.85rem}
.crm-icon{position:absolute;right:16px;top:20px;font-size:1.4rem}
.crm-chart-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:22px}
.crm-card-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.crm-card-head h2,.crm-chart-grid h2{font-size:1.15rem}
.crm-filters{display:flex;align-items:end;gap:8px;flex-wrap:wrap}.crm-filters label{font-size:.8rem}.crm-filters select{font-size:.85rem;padding:8px}
.crm-bars{display:flex;align-items:end;gap:12px;height:265px;padding:18px 0 0;border-bottom:1px solid #dde2eb;background:repeating-linear-gradient(to top,transparent 0,transparent 64px,#f0f2f6 65px);overflow-x:auto}
.crm-bars>div{display:flex;flex:1;min-width:40px;flex-direction:column;align-items:center;justify-content:end;gap:5px}
.crm-bars i{display:block;background:#e3653f;width:75%;max-width:48px;border-radius:5px 5px 0 0}
.crm-bars strong,.crm-bars span{font-size:.75rem;white-space:nowrap;color:#707b8d}.crm-bars strong{font-weight:600}.crm-muted{color:#747e90;font-size:.875rem;margin-top:18px}
.crm-ring{width:190px;height:190px;position:relative;margin:22px auto}
.crm-ring svg{width:100%;height:100%;display:block}.crm-ring>div{position:absolute;inset:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.crm-ring strong{font-size:2rem}.crm-ring span{font-size:.85rem;color:#758093;max-width:100px}
.crm-legend{list-style:none;padding:0;margin:0 0 20px}.crm-legend li{display:flex;justify-content:space-between;gap:8px;font-size:.9rem;padding:4px 0}.crm-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px}
.crm-pipeline{display:grid;grid-template-columns:1fr auto;gap:8px;margin:20px 0}.crm-pipeline>div{grid-column:1/-1;background:#f0f2f7;border-radius:10px;height:9px}.crm-pipeline i{display:block;height:9px;border-radius:10px;background:#7b61d9}
.crm-shortcuts,.crm-library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.crm-shortcuts h2,.crm-library-grid h2{font-size:1.2rem}.crm-shortcuts p{margin:0;color:#737d8f}.crm-library-grid .actions{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}
.crm-file-mark{display:inline-block;background:#fff0eb;color:#bb482b;border-radius:6px;padding:10px;margin:0 12px 16px 0;font-weight:700}
.crm-pdf{width:100%;height:75vh;border:1px solid #cbd2df;border-radius:8px;background:#e9edf3}.crm-movement{padding:18px}
@media(max-width:1150px){.crm-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.crm-chart-grid{grid-template-columns:1fr}.crm-library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.portal-body .portal-sidebar nav{background:#303747}.crm-heading{align-items:start;flex-direction:column}}
@media(max-width:600px){.crm-kpis{gap:10px}.crm-kpis article{padding:16px!important}.crm-kpis strong{font-size:1.35rem}.crm-icon{display:none}.crm-kpis p{margin-right:0}.crm-shortcuts,.crm-library-grid{grid-template-columns:1fr}.portal-body .panel{padding:18px}.crm-heading .actions{display:flex;flex-wrap:wrap}}


.attendance-table small{display:block;margin-top:4px;color:#747e90}.attendance-inline,.attendance-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.attendance-inline select{min-width:125px}.attendance-actions details{margin:0}.attendance-actions details summary{cursor:pointer;font-size:.82rem;font-weight:700;color:#2f5e9a}.attendance-actions form{margin:0}.attendance-actions .button{white-space:nowrap}
