/* Theme taken from finance-manager.html: warm cream glass, dark-brown sidebar, orange accent */
:root{--milk:#fbf4e8;--milk-2:rgba(255,247,234,.7);--milk-3:#f3e4cb;--orange:#ed7b24;--orange-dark:#c95e13;--orange-tint:#ffe9d1;--orange-glow:rgba(237,123,36,.28);
--ink:#352719;--ink-soft:#6e5a46;--stone:#8c7864;--stone-line:rgba(120,85,45,.16);--success:#39845a;--success-tint:#eaf5e9;--danger:#c94d3d;--danger-tint:#fff0e9;
--radius:14px;--shadow:0 18px 50px rgba(119,78,32,.12),inset 0 1px 0 rgba(255,255,255,.92)}
body{background:linear-gradient(135deg,#fffaf0 0%,#f8ead4 46%,#f7f0e3 100%) fixed;font-family:Inter,ui-sans-serif,system-ui,sans-serif}
h1,h2,h3,.display,.brand-name{font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-weight:800;letter-spacing:-.03em}
.sidebar{background:linear-gradient(155deg,rgba(70,48,29,.96),rgba(47,35,25,.98));box-shadow:10px 0 38px rgba(75,48,20,.08)}
.brand-mark{background:linear-gradient(135deg,#ffb75e,#e76e1e);color:#fff;border-radius:13px;box-shadow:0 8px 22px rgba(237,123,36,.3)}
.nav-item{border-radius:13px}.nav-item.active{background:linear-gradient(110deg,rgba(247,158,66,.25),rgba(255,255,255,.08));box-shadow:inset 3px 0 #ffb45a}
.panel,.xmetric{background:rgba(255,252,245,.68);border:1px solid rgba(255,255,255,.82);border-radius:22px;box-shadow:var(--shadow);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}
.btn{border-radius:13px}.btn-primary{background:linear-gradient(110deg,#ffae4f,#e86c1d);color:#fff;box-shadow:0 9px 22px rgba(217,103,26,.25)}
.btn-primary:hover{background:linear-gradient(110deg,#ffb865,#c95e13)}
.btn-ghost{background:rgba(255,253,247,.7);border-color:rgba(255,255,255,.92)}

/* shared table with sortable headers */
.xtop{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:14px}
.xtop input[type=search],.xf input,.xf select,.xf textarea,.xrow input,.xrow select,.xt td input{border:1px solid rgba(255,255,255,.95);background:rgba(255,253,247,.85);border-radius:11px;padding:9px 11px;color:var(--ink);font:inherit;outline:none;box-shadow:0 4px 12px rgba(119,78,32,.05)}
.xtop input[type=search]{min-width:220px;flex:1;max-width:340px}
.xwrap{overflow-x:auto}.xt{width:100%;border-collapse:collapse;font-size:13px}
.xt th{text-align:left;font-size:11.5px;color:var(--stone);font-weight:700;padding:8px 10px;cursor:pointer;user-select:none;white-space:nowrap;border-bottom:1px solid var(--stone-line)}
.xt th.asc:after{content:" \2191"}.xt th.desc:after{content:" \2193"}.xt th:hover{color:var(--orange-dark)}
.xt td{padding:10px;border-bottom:1px solid var(--stone-line)}.xt tbody tr[data-id]{cursor:pointer}.xt tbody tr[data-id]:hover{background:var(--orange-tint)}
.xt td input{width:76px;padding:6px 8px}
.xpill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11.5px;font-weight:700;background:var(--orange-tint);color:var(--orange-dark)}
.xpill.in{background:var(--success-tint);color:var(--success)}.xpill.out{background:var(--danger-tint);color:var(--danger)}
.xtabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.xtabs .btn.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.xmetrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:16px}
.xmetric{padding:16px 18px}.xmetric small{color:var(--stone);font-weight:700}.xmetric b{display:block;font-size:22px;letter-spacing:-.03em;margin-top:6px}

/* modal / profile editor */
.xback{position:fixed;inset:0;z-index:200;background:rgba(47,35,25,.45);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;padding:4vh 14px;overflow:auto}
.xmodal{background:#fffaf0;border-radius:22px;width:min(520px,100%);box-shadow:0 30px 80px rgba(47,35,25,.35)}.xmodal.wide{width:min(820px,100%)}
.xhead{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--stone-line)}.xhead h2{font-size:19px;text-transform:capitalize}
.xclose,.xrm,.xdel{border:0;background:none;font-size:20px;line-height:1;cursor:pointer;color:var(--stone);padding:2px 8px}.xrm:hover,.xdel:hover{color:var(--danger)}
.xbody{padding:20px 22px 24px}.xbody h3{font-size:15px;margin:22px 0 4px}.xhint{color:var(--stone);font-size:12.5px;margin:0 0 10px}
.xgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.xf{display:grid;gap:5px;font-size:12px;font-weight:700;color:var(--ink-soft)}.xf.wide{grid-column:1/-1}
.xf input,.xf select,.xf textarea{width:100%;font-weight:400}
.xrow{display:flex;gap:8px;align-items:center;margin-bottom:8px}.xrow .k{flex:1}.xrow .v{flex:2}.xrow a{flex:1;color:var(--orange-dark);font-weight:600;word-break:break-all}.xrow span{color:var(--stone);font-size:12px}
.xactions{display:flex;justify-content:space-between;align-items:center;margin-top:22px}.btn-danger{color:var(--danger)}
.xcard{display:block;width:100%;max-width:420px;border-radius:14px;margin:12px 0 8px;box-shadow:var(--shadow)}
#xToast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:10px 18px;border-radius:13px;opacity:0;pointer-events:none;transition:.25s;z-index:300}#xToast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:640px){.xgrid{grid-template-columns:1fr}}

/* ===================== v2 layout: floating sidebar, top bar, hero + bento dashboard ===================== */
body{background:radial-gradient(900px 520px at 6% -8%,rgba(255,174,79,.40),transparent 60%),radial-gradient(760px 520px at 100% 2%,rgba(232,108,29,.15),transparent 55%),linear-gradient(135deg,#fffaf0 0%,#f8ead4 46%,#f7f0e3 100%) fixed}
#app{padding:16px;gap:22px}
.sidebar{position:sticky;overflow-y:auto;width:252px;height:calc(100vh - 32px);top:16px;border-radius:30px;padding:22px 14px 16px;background:linear-gradient(170deg,#4a3320 0%,#2f2319 100%);box-shadow:0 30px 60px rgba(47,35,25,.28),inset 0 1px 0 rgba(255,255,255,.08)}
.brand{border-bottom:0;padding:2px 10px 12px;margin-bottom:4px}.brand-name{font-size:20px;color:#fff6e8}.brand-sub{color:rgba(255,236,208,.55)}
.brand-mark{width:40px;height:40px;font-size:20px;font-weight:800}
.nav-group{margin-top:14px}.nav-label{font:700 10.5px/1 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,236,208,.4);padding:0 12px 8px}
.nav-item{padding:10px 12px;margin-bottom:2px;border-radius:14px;color:rgba(255,240,220,.74);transition:background .18s,transform .18s,color .18s}
.nav-item:hover{background:rgba(255,255,255,.08);color:#fff;transform:translateX(2px)}
.nav-item.active{background:linear-gradient(110deg,#ffae4f,#e86c1d);color:#fff;box-shadow:0 10px 24px rgba(232,108,29,.4)}
.nav-item.active .nav-count{background:rgba(255,255,255,.28)}.nav-icon{width:18px;height:18px}
.sidebar-foot{border-top:1px solid rgba(255,255,255,.1);color:rgba(255,236,208,.6)}
main{padding:0 6px 60px 0}
.topbar{position:sticky;top:16px;z-index:30;display:flex;align-items:center;gap:16px;padding:12px 16px 12px 22px;margin-bottom:22px;background:rgba(255,252,245,.74);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.92);border-radius:22px;box-shadow:var(--shadow)}
.crumb-small{font-size:11px;color:var(--stone);font-weight:700;letter-spacing:.07em;text-transform:uppercase}.crumb{font-size:20px;font-weight:800;letter-spacing:-.03em}
.tsearch{position:relative;margin-left:auto;flex:1;max-width:430px}
.tsearch input{width:100%;padding:11px 14px 11px 40px;border-radius:14px;border:1px solid rgba(120,85,45,.12);background:rgba(255,255,255,.85);font:inherit;color:var(--ink);outline:none}
.tsearch input:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-glow)}
.tsearch svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:17px;color:var(--stone)}
.gres{position:absolute;top:calc(100% + 8px);left:0;right:0;background:#fffaf0;border-radius:18px;box-shadow:0 24px 60px rgba(47,35,25,.25);padding:6px;max-height:340px;overflow:auto}
.gres button{display:flex;justify-content:space-between;gap:10px;width:100%;padding:10px 12px;border:0;background:none;border-radius:12px;cursor:pointer;font:inherit;color:var(--ink);text-align:left}
.gres button:hover{background:var(--orange-tint)}.gres small{color:var(--orange-dark);font-weight:700}.gnone{padding:12px;color:var(--stone)}
.tdate{font-size:13px;font-weight:600;color:var(--ink-soft);white-space:nowrap;padding:9px 14px;border-radius:13px;background:rgba(255,233,209,.75)}
.view-head h1{font-family:Inter,sans-serif;font-weight:800;letter-spacing:-.04em;font-size:30px}.view-head p{color:var(--ink-soft)}

.hero{position:relative;display:grid;grid-template-columns:1.5fr 1fr;gap:22px;overflow:hidden;border-radius:30px;padding:32px;margin-bottom:20px;color:#fff;background:radial-gradient(420px 260px at 92% -10%,rgba(255,255,255,.3),transparent 65%),linear-gradient(125deg,#ffb55f,#ee7b24 48%,#c95e13);box-shadow:0 26px 60px rgba(217,103,26,.32)}
.hero::after{content:"";position:absolute;width:300px;height:300px;border-radius:50%;left:38%;bottom:-190px;border:46px solid rgba(255,255,255,.1);pointer-events:none}
.hero h1{color:#fff;font-size:clamp(28px,3.6vw,42px);letter-spacing:-.045em;line-height:1.05}
.hero p{margin:12px 0 20px;opacity:.93;max-width:46ch}
.hero .btn{background:#fff;color:#c95e13;border:0;font-weight:800;box-shadow:0 8px 20px rgba(120,50,0,.18)}.hero .btn-light{background:rgba(255,255,255,.2);color:#fff;box-shadow:none}
.hero-live{position:relative;z-index:1;background:rgba(255,255,255,.17);border:1px solid rgba(255,255,255,.36);backdrop-filter:blur(10px);border-radius:24px;padding:18px 20px}
.live-num{font-size:56px;font-weight:800;letter-spacing:-.05em;line-height:1.05}
.mini-bars{display:flex;align-items:flex-end;gap:7px;height:74px;margin-top:12px}
.mini-bars div{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:4px}
.mini-bars i{display:block;width:100%;border-radius:8px;background:rgba(255,255,255,.88);min-height:6px}.mini-bars span{font-size:10px;font-weight:700;opacity:.85}

.stat-row{grid-template-columns:repeat(auto-fit,minmax(172px,1fr));gap:14px;margin-bottom:20px}
.stat-card{border-radius:24px;padding:18px;background:rgba(255,252,245,.74);border:1px solid rgba(255,255,255,.92);backdrop-filter:blur(16px);transition:transform .2s,box-shadow .2s}
.stat-card:hover{transform:translateY(-3px);box-shadow:0 22px 44px rgba(119,78,32,.16)}.stat-card::before{display:none}
.stat-ico{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;margin-bottom:14px;background:var(--orange-tint);color:var(--orange-dark)}.stat-ico svg{width:20px;height:20px}
.stat-card:nth-child(2) .stat-ico{background:var(--milk-3);color:#7a5a2c}.stat-card:nth-child(3) .stat-ico{background:var(--success-tint);color:var(--success)}
.stat-card:nth-child(4) .stat-ico{background:#fff2d9;color:#a56b2c}.stat-card:nth-child(5) .stat-ico{background:var(--danger-tint);color:var(--danger)}
.stat-num{font-family:Inter,sans-serif;font-size:34px;font-weight:800;letter-spacing:-.045em}.stat-label{text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:600;color:var(--ink-soft)}

.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;margin-bottom:20px}.bento .panel{margin:0}
.b8{grid-column:span 7}.b4{grid-column:span 5}.b6{grid-column:span 6}
.panel{border-radius:24px}.panel-head{padding:16px 20px}
.panel-head h3{font-family:Inter,sans-serif;text-transform:none;letter-spacing:-.02em;font-size:15px;font-weight:800;color:var(--ink)}.panel-head h3::before{content:none}
.insight{display:flex;align-items:center;gap:12px;padding:15px 20px;border-bottom:1px solid var(--stone-line)}.insight:last-child{border-bottom:0}
.insight b{font-size:28px;letter-spacing:-.04em;color:var(--orange-dark);min-width:58px}.insight span{flex:1;color:var(--ink-soft);font-size:13.5px}

.methods{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-bottom:16px}
.method{padding:20px;border-radius:24px;background:rgba(255,252,245,.78);border:1px solid #fff;box-shadow:var(--shadow)}
.method h3{font-size:16px;margin:12px 0 4px}.method p{margin:0 0 12px;color:var(--ink-soft);font-size:13px}.method b{font-size:13px;color:var(--orange-dark)}
.mchip{display:grid;place-items:center;width:32px;height:32px;border-radius:11px;background:linear-gradient(135deg,#ffb75e,#e76e1e);color:#fff;font-weight:800}
.xchecks{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin-top:14px}
.xchk{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:13px;background:rgba(255,253,247,.9);border:1px solid var(--stone-line);cursor:pointer}.xchk small{margin-left:auto;color:var(--stone)}
.xbanner{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:14px 16px;border-radius:16px;background:#fff2d9;color:#7a4e1b;margin-bottom:14px}.xbanner .btn{margin-left:auto}
.xpill.wait{background:#fff2d9;color:#a56b2c}

@media(max-width:1100px){.b8,.b4,.b6{grid-column:1/-1}.hero{grid-template-columns:1fr}}
@media(max-width:760px){
  #app{padding:10px;gap:12px}
  .sidebar{position:relative;top:0;width:100%;height:auto;border-radius:22px;padding:12px}
  .nav-group{display:contents;margin:0}.nav-label{display:none}.nav-item:hover{transform:none}
  .topbar{position:static;flex-wrap:wrap;padding:12px 14px}.tsearch{max-width:none;flex-basis:100%;order:3}.tdate{display:none}
  main{padding:0 0 50px}.hero{padding:22px}
}

/* ===================== brand logo, read-only profile view, cards ===================== */
.brand-mark{background:#fbf4e8;padding:5px;display:flex;align-items:center;justify-content:center;font-size:0}
.brand-mark img{width:100%;height:100%;object-fit:contain;display:block}
.loading-screen{background:linear-gradient(135deg,#fffaf0,#f8ead4 46%,#f7f0e3)}
.xhead{gap:14px}.xtitle{display:flex;align-items:center;gap:14px;flex:1;min-width:0}.xtitle h2{margin:0;line-height:1.15}
.xtitle small{display:block;color:var(--stone);font-weight:600;margin-top:2px}
.xav{width:46px;height:46px;border-radius:16px;flex-shrink:0;display:grid;place-items:center;color:#fff;font-weight:800;font-size:17px;background:linear-gradient(135deg,#ffb75e,#e76e1e);box-shadow:0 8px 20px rgba(237,123,36,.3)}
.xhact{display:flex;gap:8px}
/* view mode: the same form, shown flat. Edit switches the inputs back on. */
.xview{display:none}
.viewing .xedit{display:none!important}
.viewing .xview{display:block}
.viewing .xf.hv,.viewing .xf.empty{display:none}
.viewing input:not([type=file]):not([readonly]),.viewing select,.viewing textarea{background:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;appearance:none;-webkit-appearance:none;resize:none;-webkit-text-fill-color:var(--ink);opacity:1}
.viewing .xf span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--stone)}
.viewing .xchk:not(.on){display:none}.viewing .xchk input{display:none}.viewing .xrow input[type=number]{pointer-events:none}
.xfind{width:100%;margin:6px 0 10px;padding:10px 12px;border:1px solid #fff;border-radius:12px;background:rgba(255,253,247,.9);font:inherit;outline:none}
.xchecks.wide{grid-template-columns:1fr}.xchk.on{background:var(--orange-tint);border-color:rgba(237,123,36,.35)}.xchk .btn{margin-left:8px}
.xgroup{margin-top:16px}.xgroup>.xchk{background:transparent;border:0;padding:4px 2px;font-weight:800}
.chipset{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 4px}.chipset .chip{padding:6px 12px;border-radius:99px;background:var(--orange-tint);color:var(--orange-dark);font-weight:700;font-size:12.5px}
.xbal{margin-top:8px}

/* programs as cards */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px;margin-top:6px}
.pcard{cursor:pointer;border-radius:24px;overflow:hidden;background:rgba(255,252,245,.9);border:1px solid #fff;box-shadow:var(--shadow);transition:transform .2s,box-shadow .2s}
.pcard:hover{transform:translateY(-4px);box-shadow:0 26px 50px rgba(119,78,32,.2)}
.pcover{padding:16px 18px;color:#fff;background:radial-gradient(180px 120px at 100% 0,rgba(255,255,255,.3),transparent 70%),linear-gradient(125deg,#ffb55f,#ee7b24 55%,#c95e13);display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.pcover b{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;background:rgba(255,255,255,.22);padding:5px 10px;border-radius:99px}
.pbody{padding:16px 18px 18px}.pbody h3{margin:0 0 4px;font-size:18px;letter-spacing:-.03em}.pdates{color:var(--stone);font-size:12.5px;font-weight:600;margin-bottom:12px}
.pbar{height:8px;border-radius:99px;background:rgba(219,195,161,.35);overflow:hidden;margin-bottom:12px}.pbar i{display:block;height:100%;background:linear-gradient(90deg,#ffae4f,#e86c1d)}
.pstats{display:flex;gap:18px;margin-bottom:10px}.pstats div{font-size:12px;color:var(--stone);font-weight:600}.pstats b{display:block;font-size:20px;color:var(--ink);letter-spacing:-.03em}
.pcard .chipset{margin:0}.pcard .chip{font-size:11.5px;padding:4px 10px}
@media(max-width:640px){.xtitle{align-items:flex-start}}

.panel.quick{margin-bottom:20px}.qgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:12px;padding:16px 20px 20px}
.qtile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 10px;border-radius:18px;border:1px solid #fff;background:rgba(255,253,247,.9);cursor:pointer;font:inherit;font-weight:700;color:var(--ink);transition:transform .2s,background .2s,color .2s}
.qtile:hover{transform:translateY(-3px);background:var(--orange-tint);color:var(--orange-dark)}.qtile svg{width:26px;height:26px}

/* awaiting approval panel */
.pending-panel{margin-bottom:20px;border:1px solid rgba(237,123,36,.4);background:linear-gradient(120deg,rgba(255,233,209,.9),rgba(255,252,245,.82))}
.pending-panel[hidden]{display:none}
.prow{display:flex;align-items:center;gap:14px;padding:14px 20px;border-top:1px solid var(--stone-line)}
.pinfo{flex:1;min-width:0}.pinfo b{display:block}.pinfo small{color:var(--stone);font-weight:600}
.pact{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:640px){.prow{flex-wrap:wrap}}

/* today's attendance code */
.bigcode{font:800 36px var(--mono,'JetBrains Mono',ui-monospace,monospace);letter-spacing:.18em;color:var(--orange-dark);background:var(--orange-tint);border-radius:16px;padding:12px 10px;text-align:center;margin-bottom:12px}
.bigcode.huge{font-size:clamp(48px,13vw,110px);padding:28px 8px}.codescreen{text-align:center}.codescreen p{color:var(--ink-soft)}

/* attendance dots on profiles */
.adots{display:flex;flex-wrap:wrap;gap:5px;margin:12px 0 6px}
.adot{display:inline-block;width:16px;height:16px;border-radius:5px;background:#e7dccb;vertical-align:middle;margin:0 2px 0 6px}
.adots .adot{margin:0}.adot.present{background:var(--success)}.adot.absent{background:var(--danger)}.adot.off{background:#e7dccb}.adot.today{background:#fff;border:2px dashed var(--orange)}
