/* Nucleus Classes CRM - self-contained styles, no CDN needed */
:root{--brand:#3f37c9;--brand2:#4361ee;--ink:#1e2433;--muted:#6b7280;--line:#e5e7eb;--bg:#f4f6fb;--card:#fff;--green:#0f9d58;--red:#d93025;--amber:#c77700;--blue:#1a73e8;--r:12px}
*{box-sizing:border-box}
html,body{margin:0}
body{font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans","Noto Sans Devanagari",Arial,sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--brand2);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:22px;margin:0 0 14px}h2{font-size:16px;margin:0 0 12px}h3{font-size:14px;margin:8px 0 0;color:var(--muted)}
small,.small{font-size:12px}.muted{color:var(--muted)}.danger{color:var(--red)!important}.r{text-align:right}.center{text-align:center}.nowrap{white-space:nowrap}.mt{margin-top:12px}.hide{display:none}
code{background:#eef;padding:1px 5px;border-radius:4px}
/* shell */
.shell{display:flex;min-height:100vh}
.side{width:240px;background:#141a3a;color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex-shrink:0;z-index:20}
.brand{display:flex;align-items:center;gap:10px;padding:18px 16px;font-weight:700;font-size:15px;color:#fff;line-height:1.15}.brand:hover{text-decoration:none}.brand small{display:block;font-size:11px;font-weight:600;color:#8f98d8;letter-spacing:.12em}
.brand.big{font-size:20px;color:var(--brand);padding:0 0 6px}
.logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#4361ee,#7b5cff);color:#fff;display:grid;place-items:center;font-weight:800;flex-shrink:0}
.brand.big .logo{background:var(--brand);color:#fff}
.side nav{flex:1;overflow:auto;padding:6px 10px}
.side nav a{display:flex;gap:10px;align-items:center;color:#c4c9ee;padding:8px 10px;border-radius:9px;margin-bottom:1px;font-size:13.5px}.side nav .i{opacity:.85}.nav-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:#6f78b8;padding:14px 10px 6px;font-weight:700}
.side nav a:hover{background:rgba(255,255,255,.1);text-decoration:none}
.side nav a.on{background:#4361ee;color:#fff;font-weight:600}.side nav a.on .i{opacity:1}
.ic{width:20px;text-align:center}
.me{padding:12px 14px;border-top:1px solid rgba(255,255,255,.1);font-size:13px;display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;background:#2a3266;display:grid;place-items:center;font-weight:700;flex-shrink:0}.me-t{flex:1;min-width:0;line-height:1.3}.me-t b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me-t small{display:block}
.me a,.me .link{color:#dfe3ff}.me .link{padding:0;text-align:left}.me .link.danger{color:#ffb4ab!important}.me small{color:#b9c0ff}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;padding:10px 20px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.top .title{font-weight:600}.top .date{margin-left:auto;color:var(--muted);font-size:13px}
.menu{display:none;border:0;background:none;font-size:22px;cursor:pointer}
.content{padding:20px;max-width:1240px;width:100%;margin:0 auto;flex:1}
.foot{padding:14px 20px;color:var(--muted);font-size:12px;text-align:center}
/* blocks */
.card{background:var(--card);border-radius:var(--r);box-shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.05);padding:18px;margin-bottom:16px;min-width:0}
.card.flush{padding:0;overflow-x:auto}.card.narrow{max-width:460px}.card .pad,.pad{padding:12px 16px}
.scroll{overflow-x:auto}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid2.tight{gap:10px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px}
.span2{grid-column:span 2}.span3{grid-column:1/-1}
.stack{display:flex;flex-direction:column;gap:10px}
.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}
.stat{background:#fff;border-radius:var(--r);padding:14px 16px;box-shadow:0 1px 2px rgba(16,24,40,.06);border-left:4px solid var(--brand2)}
.stat.green{border-color:var(--green)}.stat.red{border-color:var(--red)}.stat.amber{border-color:var(--amber)}
.sl{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.sv{font-size:22px;font-weight:700;margin-top:2px}.ss{font-size:12px;color:var(--muted)}
/* forms */
label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:#374151;font-weight:500}
label.check{flex-direction:row;align-items:center;gap:8px;font-weight:400}
label.inline-l{flex-direction:row;align-items:center;gap:6px;font-weight:400}
input,select,textarea{font:inherit;color:inherit;border:1px solid #d1d5db;border-radius:8px;padding:8px 10px;background:#fff;width:100%;min-width:0}
input[type=checkbox],input[type=radio]{width:auto}
input:focus,select:focus,textarea:focus{outline:2px solid #c7d2fe;border-color:var(--brand2)}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.filters input,.filters select{width:auto;min-width:150px}
.filters.nomb{margin:0}.filters a.on{font-weight:700}
.w-sm{max-width:110px}
.btn{display:inline-flex;align-items:center;gap:6px;justify-content:center;background:var(--brand);color:#fff;border:1px solid var(--brand);border-radius:8px;padding:8px 14px;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap}
.btn:hover{background:#3329b0;text-decoration:none}
.btn.ghost{background:#fff;color:var(--ink);border-color:#d1d5db}.btn.ghost:hover{background:#f3f4f6}
.btn.sm{padding:4px 10px;font-size:12px}
.btn.wa{background:#25d366;border-color:#25d366;color:#fff}.btn.wa:hover{background:#1ebe5b}
.link{background:none;border:0;color:var(--brand2);cursor:pointer;font:inherit;padding:0 4px}
.inline{display:inline}
/* tables */
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#f9fafb;padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.card:not(.flush) .tbl th{background:none;padding:6px 8px}
.tbl td{padding:9px 12px;border-bottom:1px solid #f0f1f4;vertical-align:middle}
.card:not(.flush) .tbl td{padding:8px}
.tbl tr:last-child td{border-bottom:0}.tbl tr:hover td{background:#fafbff}
tr.faded td{opacity:.55}
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;background:#eef2ff;color:#3730a3}
.badge.green{background:#e6f4ea;color:#137333}.badge.red{background:#fce8e6;color:#c5221f}.badge.amber{background:#fef7e0;color:#b06000}.badge.blue{background:#e8f0fe;color:#1967d2}.badge.grey{background:#f1f3f4;color:#5f6368}
.alert{padding:10px 14px;border-radius:10px;margin-bottom:12px;background:#e8f0fe;color:#174ea6}
.alert.success{background:#e6f4ea;color:#137333}.alert.error{background:#fce8e6;color:#a50e0e}.alert.info{background:#e8f0fe}
.alert.row-between{margin-bottom:12px}
.meter{width:90px;height:6px;background:#e5e7eb;border-radius:4px;margin-top:4px}.meter span{display:block;height:6px;background:var(--brand2);border-radius:4px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:8px 0 14px}.tabs a{padding:8px 14px;color:var(--muted);border-bottom:2px solid transparent}.tabs a.on{color:var(--brand);border-color:var(--brand);font-weight:600}
.pager{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0}.pager a,.pager span{padding:4px 10px;border-radius:6px;background:#fff;border:1px solid var(--line)}.pager .on{background:var(--brand);color:#fff;border-color:var(--brand)}
.dl{display:grid;grid-template-columns:130px 1fr;gap:6px 12px;margin:0}.dl dt{color:var(--muted)}.dl dd{margin:0}
.notice{border-bottom:1px solid var(--line);padding:8px 0}.notice:last-child{border:0}.notice p{margin:4px 0}
.card.notice{padding:14px 18px}
.checklist{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin:8px 0}
/* attendance */
.att-pick{white-space:nowrap}
.pill{display:inline-block;margin-right:4px}.pill input{display:none}
.pill span{display:inline-block;padding:5px 12px;border-radius:999px;border:1px solid #d1d5db;cursor:pointer;font-size:13px;user-select:none}
.pill.P input:checked+span{background:#e6f4ea;border-color:var(--green);color:#137333;font-weight:600}
.pill.A input:checked+span{background:#fce8e6;border-color:var(--red);color:#c5221f;font-weight:600}
.pill.L input:checked+span{background:#fef7e0;border-color:var(--amber);color:#b06000;font-weight:600}
.register td,.register th{padding:5px 6px!important;text-align:center;font-size:12px}
.register td:first-child{text-align:left}
.att-P{color:var(--green);font-weight:700}.att-A{color:var(--red);font-weight:700;background:#fff5f5}.att-L{color:var(--amber);font-weight:700}
/* charts */
.chart{display:flex;align-items:flex-end;gap:6px;padding-top:18px}
.chart .col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;height:100%;min-width:0;align-items:center}
.chart .bar{width:70%;max-width:46px;background:linear-gradient(180deg,#4361ee,#3f37c9);border-radius:6px 6px 0 0;min-height:2px}
.chart .val{font-size:10px;color:var(--muted);white-space:nowrap;margin-bottom:3px}
.chart .lbl{font-size:11px;color:var(--muted);margin-top:4px;white-space:nowrap}
.hbars{display:flex;flex-direction:column;gap:8px}
.hrow{display:grid;grid-template-columns:minmax(90px,38%) 1fr auto;gap:10px;align-items:center;font-size:13px}
.hl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ht{height:10px;background:#eef0f6;border-radius:6px}.ht span{display:block;height:10px;border-radius:6px;background:#4361ee}.hv{font-weight:600;white-space:nowrap}
/* auth */
body.auth{display:grid;place-items:center;min-height:100vh;background:linear-gradient(135deg,#2b2d7c,#4361ee);padding:16px}
.auth-box{background:#fff;border-radius:16px;padding:28px;width:100%;max-width:380px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.auth-box.wide{max-width:720px}
.auth-box .grid2 h3{grid-column:1/-1}
/* receipt */
body.print-page{background:#f4f6fb;padding:20px}
.receipt{background:#fff;max-width:720px;margin:0 auto 16px;padding:28px;border:1px solid var(--line);border-radius:8px}
.rc-head{display:flex;justify-content:space-between;gap:16px;border-bottom:2px solid var(--ink);padding-bottom:12px;margin-bottom:12px}
.rc-head h1{margin:0 0 4px;font-size:20px}.rc-head h2{margin:0;letter-spacing:.1em}
.rc-tbl{width:100%;border-collapse:collapse}.rc-tbl th{text-align:left;width:170px;color:var(--muted);font-weight:500;padding:8px 0;vertical-align:top}.rc-tbl td{padding:8px 0;border-bottom:1px dashed var(--line)}
.rc-tbl .big{font-size:22px;font-weight:800}
.rc-foot{display:flex;justify-content:space-between;align-items:flex-end;margin-top:40px}.sign{border-top:1px solid var(--ink);padding-top:4px;min-width:180px;text-align:center}
@media print{.no-print,.side,.top,.foot,.actions,.filters,.btn{display:none!important}body,body.print-page{background:#fff;padding:0}.receipt{border:0;margin:0;max-width:none}.card{box-shadow:none;border:1px solid #ddd}}
/* mobile */
@media (max-width:900px){
  .grid2,.grid3{grid-template-columns:1fr}.span2,.span3{grid-column:auto}
  .side{position:fixed;left:-250px;transition:left .2s}.side.open{left:0;box-shadow:0 0 40px rgba(0,0,0,.3)}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}.sv{font-size:18px}
  .menu{display:block}.content{padding:14px}.top .date{display:none}
  .filters input,.filters select{min-width:0;flex:1 1 140px}
  .dl{grid-template-columns:110px 1fr}
}

/* v3 additions */
.i{vertical-align:-3px;flex-shrink:0}
a.stat{display:block;color:inherit}a.stat:hover{text-decoration:none;box-shadow:0 4px 14px rgba(16,24,40,.1)}
.badge.purple{background:#f3e8ff;color:#7e22ce}
.gsearch{display:flex;align-items:center;gap:8px;background:#f3f4f8;border-radius:10px;padding:0 12px;flex:1;max-width:460px;color:var(--muted)}
.gsearch input{border:0;background:transparent;padding:9px 0}.gsearch input:focus{outline:none}
.top .btn.sm{font-weight:600}
.chip{display:inline-block;background:#eef2ff;color:#3730a3;border-radius:8px;padding:5px 10px;font-size:13px}
.lbl{display:block;font-size:13px;font-weight:500;color:#374151;margin-bottom:6px}
select.sm{padding:4px 8px;font-size:12px;width:auto}
.checkin{border-left:4px solid var(--brand2);margin-bottom:16px}.checkin.row-between{margin-bottom:16px}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin-bottom:16px}
.day{background:#fff;border-radius:12px;box-shadow:0 1px 2px rgba(16,24,40,.06);min-height:120px;overflow:hidden}
.day.today{outline:2px solid var(--brand2)}
.dh{font-weight:700;padding:8px 10px;background:#f9fafb;border-bottom:1px solid var(--line);font-size:13px}
.slot{margin:8px;padding:8px;border-radius:8px;background:#eef2ff;border-left:3px solid var(--brand2);font-size:12.5px;line-height:1.35}
.slot b{display:block}.slot span{display:block;font-weight:600}.slot small{color:var(--muted)}.slot-a{margin-top:4px;font-size:12px}
@media (max-width:1100px){.week{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:900px){.week{grid-template-columns:1fr 1fr}.gsearch{max-width:none}.top .btn.sm{display:none}}
@media print{.week{grid-template-columns:repeat(7,1fr)}.slot-a{display:none}}
tr.hl td{background:#eef2ff}
