:root{--bg:#F4F5F7;--surface:#FFFFFF;--surface-2:#FAFBFC;--ink:#17191E;--ink-2:#3D414B;--mut:#767C88;--line:#E7E9EE;--line-2:#F0F1F4;--coral:#F0800F;--coral2:#E06A00;--coral-s:#FEF1E0;--acc:#F0800F;--sun:#F5A524;--sky:#2E6BE6;--mint:#12A150;--grape:#7C5CFC;--pink:#E5569A;--teal:#0E9488;--red:#E5484D;--sun-s:#FEF3DD;--sky-s:#E9F0FE;--mint-s:#E4F6EC;--grape-s:#EEE9FE;--pink-s:#FCE7F1;--red-s:#FDEBEC;--off-s:#F0F2F5;--glass:var(--surface);--glass2:var(--surface);--gbrd:var(--line);--fnum:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif;--sh:0 1px 2px rgba(20,24,33,.04), 0 3px 10px rgba(20,24,33,.05);--sh2:0 12px 32px rgba(20,24,33,.16);--r:16px;--r-sm:11px}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.5;min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font:inherit;color:inherit}h1,h2,h3{font-family:var(--fnum);letter-spacing:-.02em}.num{font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:-.02em}.money{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}:focus-visible{outline:2.5px solid var(--coral);outline-offset:2px;border-radius:8px}svg{width:1.1em;height:1.1em;flex:none}@media (prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh)}.card h3{font-size:11.5px;font-weight:700;color:var(--mut);margin-bottom:9px;text-transform:uppercase;letter-spacing:.06em}.pill{display:inline-flex;align-items:center;gap:6px;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:700;white-space:nowrap;line-height:1.35}.p-mint{background:var(--mint-s);color:#0b7a3d}.p-sun{background:var(--sun-s);color:#9a6800}.p-sky{background:var(--sky-s);color:#1c4fb0}.p-red{background:var(--red-s);color:#c93338}.p-grape{background:var(--grape-s);color:#5b3fd6}.p-pink{background:var(--pink-s);color:#c02f76}.p-off{background:var(--off-s);color:var(--mut)}.tag{display:inline-block;background:var(--surface-2);border:1px solid var(--line);color:var(--mut);border-radius:7px;padding:2px 8px;font-size:11.5px;font-weight:700}.tag.warn{background:var(--sun-s);border-color:transparent;color:#9a6800}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:12px;padding:10px 16px;font-weight:700;font-size:14px;min-height:40px;background:var(--coral);color:#fff;box-shadow:var(--sh);transition:filter .15s,transform .1s}.btn:hover{filter:brightness(.96)}.btn:active{transform:scale(.98)}.btn.big{width:100%;padding:13px;font-size:15px;border-radius:13px;min-height:48px}.btn-mint{background:var(--mint)}.btn-sun{background:var(--sun);color:#4a3000}.btn-ghost{background:var(--surface);border:1px solid var(--line);color:var(--ink-2);box-shadow:none}.btn-ghost:hover{filter:none;border-color:#d3d7de;background:var(--surface-2)}.btn-red{background:var(--red)}.btn-sm{padding:8px 13px;font-size:13px;border-radius:10px;min-height:36px}.btn[disabled]{opacity:.45;cursor:default;box-shadow:none}.chip{border:1px solid var(--line);border-radius:9px;padding:8px 13px;font-size:13px;font-weight:600;background:var(--surface);color:var(--ink-2);min-height:36px;display:inline-flex;align-items:center;gap:6px;transition:.12s}.chip:hover{background:var(--surface-2)}.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}.chips{display:flex;gap:8px;flex-wrap:wrap}.seg{display:flex;background:var(--off-s);border-radius:12px;padding:4px;gap:4px;flex-wrap:wrap}.seg button{flex:1;min-width:88px;border-radius:9px;padding:9px 6px;font-weight:700;font-size:13px;color:var(--mut);min-height:40px}.seg .on{background:var(--surface);color:var(--ink);box-shadow:var(--sh)}.inp{width:100%;border:1.5px solid var(--line);border-radius:11px;padding:11px 13px;background:var(--surface);min-height:44px;transition:border-color .12s,box-shadow .12s}.inp:focus{border-color:var(--coral);outline:none;box-shadow:0 0 0 3px #f0800f24}.field{margin-bottom:13px}.field label{display:block;font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:6px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:11px}.search{display:flex;align-items:center;gap:9px;border:1.5px solid var(--line);border-radius:11px;padding:0 13px;background:var(--surface);flex:1;min-width:180px;min-height:44px}.search input{border:none;outline:none;flex:1;background:transparent;padding:11px 0}.search svg{color:var(--mut)}.capbar{height:6px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:7px}.capbar i{display:block;height:100%;border-radius:99px}.row{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line-2)}.row:last-child{border-bottom:none}.row .grow{flex:1;min-width:0}.row b{font-size:14px;display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row small{color:var(--mut);font-size:12.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neg{color:var(--red)}.pos{color:#0b7a3d}.pav{border-radius:50%;overflow:hidden;flex:none;display:block;box-shadow:inset 0 0 0 1px #1418210f}.pav svg{width:100%;height:100%;display:block}.alert{display:flex;gap:11px;align-items:flex-start;background:var(--sun-s);border:1px solid transparent;border-radius:12px;padding:11px 14px;font-size:13.5px;margin-bottom:9px}.alert.red{background:var(--red-s)}.alert.mint{background:var(--mint-s)}.alert svg{width:17px;height:17px;margin-top:1px;flex:none}.alert.red svg{color:var(--red)}.alert:not(.red):not(.mint) svg{color:#9a6800}.alert.mint svg{color:#0b7a3d}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line-2);font-size:13.5px;vertical-align:middle}tr:last-child td{border-bottom:none}th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);font-weight:700;white-space:nowrap}td.r,th.r{text-align:right}.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.tbl-wrap th,.tbl-wrap td{white-space:nowrap}.login{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:22px}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--sh2);width:100%;max-width:400px;padding:30px 26px}.logo{display:flex;align-items:center;gap:10px}.logo .mark{width:40px;height:40px;border-radius:12px;background:linear-gradient(140deg,var(--sun),var(--coral));display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #f0800f4d}.logo .mark svg{width:22px;height:22px;color:#fff}.logo b{font-size:24px;font-weight:800}.login-sub{color:var(--mut);margin:10px 0 22px;font-size:14px}.err{background:var(--red-s);color:#c93338;border-radius:10px;padding:9px 13px;font-size:13px;font-weight:600;margin-bottom:12px}.side{position:fixed;left:0;top:0;bottom:0;width:246px;z-index:20;display:flex;flex-direction:column;padding:18px 14px;background:var(--surface);border-right:1px solid var(--line);overflow-y:auto}.side .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px}.side .brand .mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,var(--sun),var(--coral));display:flex;align-items:center;justify-content:center;box-shadow:0 3px 8px #f0800f47}.side .brand .mark svg{width:19px;height:19px;color:#fff}.side .brand b{font-size:17px;font-weight:800;line-height:1}.brand small{display:block;font-size:9.5px;font-weight:700;letter-spacing:.14em;color:var(--coral);margin-top:3px;text-transform:uppercase}.side .tenant-mini{font-size:12px;color:var(--mut);font-weight:600;margin:0 6px 14px;line-height:1.35}.nav-btn{position:relative;display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;border-radius:10px;color:var(--ink-2);font-weight:600;font-size:14px;margin-bottom:2px;transition:background .12s,color .12s}.nav-btn svg{width:19px;height:19px;color:var(--mut);transition:color .12s}.nav-btn:hover{background:var(--surface-2)}.nav-btn.on{background:var(--coral-s);color:var(--coral2);font-weight:700}.nav-btn.on svg{color:var(--coral)}.nav-btn.on:before{content:"";position:absolute;left:-14px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--coral)}.side-foot{margin-top:auto;border-top:1px solid var(--line);padding-top:12px}.side-user{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700}.side-user small{display:block;color:var(--mut);font-size:11px;font-weight:600}.exit-btn{margin-top:8px;color:var(--mut);font-size:13px;font-weight:600;display:flex;gap:9px;align-items:center;padding:9px 10px;border-radius:10px;width:100%}.exit-btn:hover{background:var(--red-s);color:var(--red)}.main{margin-left:246px;padding:26px 30px 60px;max-width:1160px}.main.appcol{max-width:840px}.topbar{display:none}.page-h{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.page-h h1{font-size:clamp(21px,3.4vw,26px);font-weight:800}.page-h .date{color:var(--mut);font-size:13.5px;margin-top:3px;font-weight:500}.grid{display:grid;gap:14px}.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}.kpi-num{font-size:clamp(22px,3vw,27px);line-height:1.1;font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:-.02em}.kpi-lbl{font-size:12.5px;color:var(--mut);margin-top:5px;font-weight:500}.sec{margin-top:24px}.sec-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;gap:10px;flex-wrap:wrap}.sec-h h2{font-size:16px;font-weight:800}.link{color:var(--sky);font-weight:700;font-size:13.5px;cursor:pointer}.link:hover{text-decoration:underline}.att-row{display:flex;align-items:center;gap:12px;padding:10px 2px;border-bottom:1px solid var(--line-2)}.att-row:last-child{border-bottom:none}.att-row .grow{flex:1;min-width:0}.att-row .grow b{display:block;font-weight:600}.st-btn{margin-left:auto;border-radius:9px;padding:9px 14px;font-size:13px;font-weight:700;min-width:112px;min-height:40px;text-align:center;transition:transform .1s,filter .12s;border:1px solid transparent}.st-btn:hover{filter:brightness(.97)}.st-btn:active{transform:scale(.97)}.s-null{background:var(--surface);color:var(--mut);border:1.5px dashed #c9cdd6}.s-present{background:var(--mint-s);color:#0b7a3d}.s-sick{background:var(--sun-s);color:#9a6800}.s-excused{background:var(--sky-s);color:#1c4fb0}.s-unexcused{background:var(--red-s);color:#c93338}.bars{display:flex;align-items:flex-end;gap:14px;height:140px;padding-top:8px}.bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;height:100%;justify-content:flex-end}.bar i{display:block;width:100%;max-width:46px;border-radius:7px 7px 3px 3px;background:var(--sky)}.bar b{font-size:12px;font-variant-numeric:tabular-nums}.bar small{color:var(--mut);font-size:11.5px;font-weight:600}.split{display:flex;height:12px;border-radius:99px;overflow:hidden;background:var(--line)}.split i{display:block;height:100%}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#17191e70;display:flex;align-items:center;justify-content:center;padding:18px;z-index:60;animation:fade .16s ease}.modal{background:var(--surface);border:1px solid var(--line);border-radius:18px;width:100%;max-width:440px;max-height:88vh;overflow:auto;padding:22px;box-shadow:var(--sh2);animation:pop .2s ease}.modal h2{font-size:18px;margin-bottom:16px;font-weight:800}.modal-x{position:sticky;float:right;top:-4px;color:var(--mut);font-size:22px;line-height:1;padding:2px 8px;border-radius:9px}.modal-x:hover{background:var(--off-s)}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:translateY(10px) scale(.99);opacity:0}}.sheet-h{font-size:12px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}#toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translate(-50%) translateY(16px);background:var(--ink);color:#fff;padding:11px 18px;border-radius:11px;font-size:14px;font-weight:600;opacity:0;pointer-events:none;transition:.22s;z-index:90;box-shadow:var(--sh2);max-width:92vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%) translateY(0)}@media (min-width:900px){#toast{bottom:28px}}.okmark{width:72px;height:72px;border-radius:50%;background:var(--mint-s);display:flex;align-items:center;justify-content:center;margin:6px auto 14px;animation:pop .25s ease}.okmark svg{width:36px;height:36px;color:#0b7a3d}.empty{padding:26px;text-align:center;color:var(--mut);font-weight:500;font-size:13.5px}.balance-big{font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:-.03em}.bottom-nav{display:none}@media (max-width:899px){.side{display:none}.main{margin-left:0;padding:0 14px calc(88px + env(safe-area-inset-bottom));max-width:640px;margin-inline:auto}.topbar{display:flex;align-items:center;gap:10px;padding:12px 4px 10px;position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px solid var(--line);margin-bottom:14px}.topbar .logo .mark{width:32px;height:32px;border-radius:10px}.topbar .logo .mark svg{width:18px;height:18px}.topbar .logo b{font-size:18px}.topbar .sp{flex:1}.icon-btn{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--line);color:var(--ink-2)}.icon-btn svg{width:19px;height:19px}.icon-btn.exit{color:var(--red)}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;padding:8px 8px calc(8px + env(safe-area-inset-bottom));gap:2px;background:var(--surface);border-top:1px solid var(--line)}.bn-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10.5px;color:var(--mut);font-weight:600;padding:6px 2px;border-radius:12px;min-height:52px;justify-content:center}.bn-btn svg{width:22px;height:22px}.bn-btn.on{color:var(--coral2)}.bn-btn.on svg{color:var(--coral)}.g4,.g3{grid-template-columns:1fr 1fr}.g2{grid-template-columns:1fr}.kpi-num{font-size:clamp(17px,5vw,23px)}.card{padding:14px 15px}.st-btn{min-width:96px;padding:9px 10px;font-size:12.5px}}@media (max-width:380px){.g4{grid-template-columns:1fr 1fr}.seg button{min-width:0}}@media (min-width:900px) and (max-width:1040px){.main{padding:24px 20px 60px}.g4{grid-template-columns:repeat(2,1fr)}}
