:root{--bg:#f3f4f8;--surface:#fff;--surface2:#e4e8f5;--ink:#171c2e;--ink2:#4a5578;--ink3:#6b7385;--line:#e2e5ee;--accent:#2b3f8c;--accent-ink:#fff;--marigold:#f2b441;--marigold-bg:#fff4de;--danger:#b8412e;--danger-bg:#f8e3df;--ok:#1f6b4a;--ok-bg:#e0efe6;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Mukta,Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-size:15px;line-height:1.5}a{color:var(--accent)}h1,h2,h3{margin:0 0 8px;line-height:1.2}h1{font-size:24px}h2{font-size:18px}h3{color:var(--ink2);font-size:15px}.topbar{background:var(--surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.topbar .brand{color:var(--accent);font-size:17px;font-weight:700;text-decoration:none}.topbar nav{align-items:center;gap:16px;display:flex}.topbar .muted{color:var(--ink3);font-size:13px}.page{max-width:1000px;margin:0 auto;padding:24px}.banner-inner{max-width:1000px;margin:0 auto;padding:28px 24px}.banner-hit{cursor:pointer;text-align:left;font:inherit;color:inherit;background:0 0;border:none;border-radius:14px;margin:-6px;padding:6px;transition:background .12s}.banner-hit:hover{background:#2b3f8c12}.banner-hit.on-brand:hover{background:#ffffff21}.banner-signout{border:1.5px solid var(--line);color:var(--ink2);cursor:pointer;background:0 0;border-radius:999px;flex-shrink:0;place-items:center;width:40px;height:40px;padding:0;display:grid}.banner-signout:hover{border-color:var(--accent);color:var(--accent)}.banner-signout.on-brand{color:#fff;background:#0000002e;border-color:#ffffffb3}.banner-signout.on-brand:hover{background:#ffffff2e}@media (width<=460px){.banner-signout{width:36px;height:36px}}.banner-signout.banner-lang{width:auto;font:inherit;padding:0 12px;font-size:14px;font-weight:700}.banner-hit:focus-visible{outline:2px solid var(--marigold);outline-offset:1px}.banner-signout.banner-back{font-size:22px;font-weight:800;line-height:1;text-decoration:none;position:absolute;top:50%;left:-32px;transform:translateY(-50%)}.banner-inner.back-slot{position:relative}@media (width<=1100px){.banner-inner.back-slot{padding-left:76px}.banner-signout.banner-back{left:24px}}@media (width<=460px){.banner-inner.back-slot{padding-left:64px}.banner-signout.banner-back{left:16px}}.banner-signout.banner-back:focus-visible{outline:2px solid var(--marigold);outline-offset:2px}.tiles{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}@media (width<=460px){.tiles{grid-template-columns:1fr}}.tile{--c:var(--accent);--t:#e7ebf8;--b:#6f7fbf;background:var(--surface);border:1px solid #dfe3ef;border-left:4px solid var(--c);text-align:left;border-radius:10px;grid-template-columns:auto 1fr;align-items:center;gap:3px 14px;padding:18px 16px;transition:background-color .15s,border-color .15s;display:grid}.tile .glyph{background:var(--t);width:48px;height:48px;color:var(--c);border:1px solid var(--b);border-radius:10px;grid-row:span 2}.tile .label{align-self:end;line-height:1.25}.tile .soon{align-self:start;line-height:1.3}.tile.k-people{--c:#2b3f8c;--t:#e7ebf8;--b:#6f7fbf}.tile.k-money{--c:#8a5a00;--t:#fff1d3;--b:#d9a441}.tile.k-day{--c:#1f6b4a;--t:#e0efe6;--b:#7fb59a}.tile.k-news{--c:#b8412e;--t:#fbe6e1;--b:#df9a8b}.tile.k-learn{--c:#6a3fa0;--t:#efe7f8;--b:#b39ad6}.tile.k-bus{--c:#0f6e7a;--t:#dff1f3;--b:#7cbcc4}@media (prefers-reduced-motion:reduce){.tile{transition:none}}.glyph{background:var(--surface2);width:46px;height:46px;color:var(--accent);border:1.5px solid #9aa3c7;border-radius:13px;flex-shrink:0;place-items:center;display:grid}.glyph.pic img{width:34px;height:34px;display:block}.tile .label{font-size:15px;font-weight:700}.tile .soon{color:var(--ink3);font-size:12px}.section-title{color:var(--ink);font-size:15px;font-weight:700}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.between{justify-content:space-between}.stack{gap:12px;display:grid}.grid2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:16px}.card+.card{margin-top:16px}label{color:var(--ink2);align-content:start;gap:4px;font-size:13px;display:grid}.bi{display:block}.bi .en{color:var(--ink3);font-weight:400}input,select,textarea{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;width:100%;padding:9px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}button,.btn{font:inherit;background:var(--accent);color:var(--accent-ink);cursor:pointer;border:1px solid #16225a;border-radius:8px;padding:9px 18px;font-weight:600;text-decoration:none;transition:background-color .12s,border-color .12s;display:inline-block}button:not([class]):hover:not(:disabled),.btn:not(.ghost):not(.gold):hover{background:#22337a}button:disabled{opacity:.6;cursor:default}button.ghost,.btn.ghost{color:var(--accent);background:#e7ebf8;border-color:#6f7fbf}button.ghost:hover:not(:disabled),.btn.ghost:hover{background:#d9dff4}button.gold,.btn.gold{background:var(--marigold);color:#3d2a05;border-color:#a86f0c}button.gold:hover:not(:disabled),.btn.gold:hover{background:#e9a326}button.danger{background:var(--danger-bg);color:var(--danger);border-color:#c9705d}button.danger:hover:not(:disabled){background:#f2d2cb}@media (prefers-reduced-motion:reduce){button,.btn{transition:none}}button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:9px 10px}th{letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);background:var(--surface2);font-size:11px}tr:last-child td{border-bottom:0}.num{font-variant-numeric:tabular-nums}.pill{background:var(--surface2);color:var(--ink2);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--marigold-bg);color:#8a6414}.pill.bad{background:var(--danger-bg);color:var(--danger)}.alert{border-radius:6px;padding:10px 12px;font-size:14px}.alert.error{background:var(--danger-bg);color:var(--danger)}.alert.ok{background:var(--ok-bg);color:var(--ok)}.alert.warn{background:var(--marigold-bg);color:#7a5a0f;border:1px solid #e8c77a}.muted{color:var(--ink3)}.mono{font-family:Consolas,IBM Plex Mono,monospace;font-size:13px}.login{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{gap:22px;width:100%;max-width:420px;display:grid}.login .alert,.login .card{width:100%}.mark-tile{width:84px;height:84px;box-shadow:inset 0 0 0 1px var(--line);background:#fff;border-radius:21px;place-items:center;margin:0 auto;display:grid}.lockup{letter-spacing:1.6px;color:var(--ink3);font-size:14px;font-weight:500}.field{align-items:center;display:flex;position:relative}.field .prefix{color:var(--ink3);pointer-events:none;font-size:18px;font-weight:700;position:absolute;left:14px}.field .prefix~.big{padding-left:58px}input.big{letter-spacing:1.2px;padding:12px 14px;font-size:20px;font-weight:700}input.big.pin{letter-spacing:6px;padding-right:48px}.field .eye{color:var(--ink3);cursor:pointer;background:0 0;border:0;place-items:center;padding:8px;display:grid;position:absolute;right:6px}.field .eye:hover{color:var(--accent)}button.tall{height:52px;font-size:16px}.login-error{background:var(--danger-bg);color:var(--danger);border-radius:8px;padding:12px;font-weight:700}.lang-row{justify-content:center;align-items:center;gap:6px;display:flex}.lang-chip{color:var(--ink3);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:700}.lang-chip.on{background:var(--surface2);color:var(--accent);font-weight:800}button.linky{text-align:center;color:var(--ink3);background:0 0;border:0;padding:0;font-size:13px;font-weight:500;text-decoration:underline}button.linky:hover{color:var(--accent)}.topbar nav a.muted{text-decoration:none}.topbar nav a.muted:hover{text-decoration:underline}.stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;display:grid}.stat{background:var(--surface);border:1.5px solid #9aa3c7;border-radius:16px;padding:14px 16px}.stat .n{color:var(--accent);font-size:26px;font-weight:800;line-height:1.1}.stat .k{color:var(--ink3);font-size:13px;font-weight:600}.primary-action{text-align:left;border-radius:16px;align-items:center;gap:14px;width:100%;padding:18px 20px;font-size:17px;font-weight:700;display:flex}.primary-action .glyph{background:#ffffff2e;border-radius:12px;flex-shrink:0;place-items:center;width:42px;height:42px;display:grid}.primary-action .soon{opacity:.85;font-size:12px;font-weight:500;display:block}a.tile,button.tile{cursor:pointer;font:inherit;color:inherit;text-decoration:none}a.tile:hover,button.tile:hover{background:var(--t);border-color:var(--b);border-left-color:var(--c)}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--surface2)}.avatar-lg{background:var(--surface2);width:64px;height:64px;color:var(--accent);border-radius:32px;flex-shrink:0;place-items:center;font-size:22px;font-weight:700;display:grid}[aria-invalid=true]{border-color:var(--danger)}.receipt{gap:12px;padding:24px;display:grid}.receipt-head{border-bottom:2px solid var(--ink);align-items:center;gap:14px;padding-bottom:10px;display:flex}.receipt-head img{object-fit:contain;width:56px;height:56px}.receipt-school{font-size:20px;font-weight:800}.receipt-title{text-align:center;letter-spacing:.08em;text-transform:uppercase;font-size:14px;font-weight:800}.receipt-meta th{text-transform:none;letter-spacing:0;background:0 0;width:150px;font-size:13px}.receipt-total td{border-top:2px solid var(--ink);font-weight:800}.receipt.void{opacity:.55}@media print{body{background:#fff}body *{visibility:hidden}.print-area,.print-area *{visibility:visible}.print-area{border:0;width:100%;position:absolute;top:0;left:0}}.lang-chip.att-present.on{background:var(--ok-bg);color:var(--ok)}.lang-chip.att-absent.on{background:var(--danger-bg);color:var(--danger)}.lang-chip.att-leave.on{background:var(--marigold-bg);color:#8a6414}button.small,.btn.small{padding:4px 12px;font-size:13px}.meter{background:var(--surface2);border-radius:4px;width:160px;height:8px;display:inline-block;overflow:hidden}.meter>span{background:var(--ok);height:100%;display:block}table.marks td,table.marks th{padding:6px 8px}table.marks input{text-align:right;width:58px;padding:4px 6px}table.marks td.mark-changed{background:var(--marigold-bg);position:relative}table.marks .mark-flag{color:#b7651b;font-size:10px;position:absolute;top:0;right:3px}@media print{table.marks td.mark-changed{background:0 0}}.print-only{display:none}@media print{.print-only{display:block}.print-area .no-print{display:none}}th.r,td.r{text-align:right}tr.total-row td{border-top:2px solid var(--line);font-weight:800}.hbar{height:10px;display:block}.hbar>span{background:var(--accent);border-radius:0 4px 4px 0;height:100%;display:block}a.stat-link{color:inherit;text-decoration:none}a.stat-link:hover{border-color:var(--accent);background:var(--surface2)}a.child-card{color:inherit;text-decoration:none}a.child-card:hover{border-color:var(--accent)}.tabs{border-bottom:1px solid var(--line);gap:4px;display:flex;overflow-x:auto}.tabs button{color:var(--ink3);white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;border-radius:0;padding:10px 14px}.tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.cal{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.cal-h{text-align:center;color:var(--ink3);font-size:12px;font-weight:700}.cal-d{border:1px solid var(--line);min-height:48px;color:var(--ink3);border-radius:8px;flex-direction:column;justify-content:space-between;padding:4px 6px;font-size:12px;display:flex}.cal-d b{align-self:flex-end;font-size:14px}.cal-d.present{background:var(--ok-bg);color:var(--ok);border-color:#0000}.cal-d.absent{background:var(--danger-bg);color:var(--danger);border-color:#0000}.cal-d.leave{background:var(--marigold-bg);color:#8a6414;border-color:#0000}.cal-d.holiday{background:var(--surface2);border-style:dashed}.tile{position:relative}.tile.has-new{border-color:var(--danger);border-left-color:var(--danger);box-shadow:0 0 0 2px var(--danger-bg)}.tile-badge{background:var(--danger);color:#fff;min-width:24px;height:24px;box-shadow:0 0 0 2px var(--bg);border-radius:12px;place-items:center;padding:0 6px;font-size:12px;font-weight:800;display:grid;position:absolute;top:-8px;right:-8px}.card.notice.unread{background:var(--marigold-bg);border-color:#e8c77a}.card.notice.important{border-left:5px solid var(--danger)}a.important-banner{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger);padding:12px 14px;font-weight:700;text-decoration:none}.picker{gap:6px;max-height:240px;padding:4px 2px;display:grid;overflow-y:auto}details.subject-teachers{border-top:1px solid var(--line);padding-top:8px;font-size:14px}details.subject-teachers summary{cursor:pointer;color:var(--ink2);font-weight:600}details.subject-teachers table{margin-top:6px}table.tt{font-size:13px}table.tt th,table.tt td{border:1px solid var(--line);text-align:center;vertical-align:middle;padding:4px 6px}table.tt th.tt-day{text-align:left;white-space:nowrap;background:var(--surface2);text-transform:none;letter-spacing:0;color:var(--ink);font-size:13px}.tt-time{text-transform:none;letter-spacing:0;font-size:11px;font-weight:500}table.tt .brk{background:var(--surface2);color:var(--ink3);width:28px}td.tt-cell{min-width:110px}td.tt-free{background:#fafbfd}td.tt-dirty{background:var(--warn-bg,#fff4de)}td.tt-clash{background:var(--danger-bg);box-shadow:inset 0 0 0 2px var(--danger)}select.tt-select{margin:1px 0;padding:3px 4px;font-size:12px}button.pick-row{background:var(--surface);color:var(--ink);border:1px solid var(--line);text-align:left;border-radius:6px;padding:6px 10px;font-weight:400}button.pick-row:hover{border-color:var(--accent);background:var(--surface2)}.chosen{background:var(--ok-bg);border:1px solid var(--ok);border-radius:6px;flex-wrap:nowrap;padding:8px 10px}select.draft{border-color:var(--warn,#c98a1b);background:var(--warn-bg,#fff4de)}.save-bar{z-index:5;position:sticky;bottom:12px;box-shadow:0 4px 18px #0000001f}.role-switch{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.role-chip{background:var(--surface);color:var(--ink2);cursor:pointer;border:1.5px solid #9aa3c7;border-radius:999px;padding:5px 14px;font-size:14px;font-weight:700}.role-chip:hover{border-color:var(--accent);color:var(--accent)}.role-chip.on{background:var(--accent);border-color:var(--accent);color:#fff;cursor:default}button.stat{font:inherit;color:inherit;text-align:left;cursor:pointer}button.stat:hover{border-color:var(--accent);background:var(--surface2)}button.stat.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.done-banner{background:var(--ok-bg);border:1.5px solid var(--ok);color:var(--ok);border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;text-decoration:none;display:flex}.done-banner b{font-size:17px}.feedback-reply{background:var(--bg);border-left:3px solid var(--accent);padding:8px 12px;font-size:14px}.fb-card{background:var(--surface);border:1.5px solid #c3cbe3;border-radius:12px;overflow:hidden}.fb-card.complaint{border-color:#e8b4aa}.fb-strip{background:var(--surface2);color:var(--accent);justify-content:space-between;align-items:center;gap:8px;padding:6px 14px;font-size:13px;display:flex}.fb-card.complaint .fb-strip{background:var(--danger-bg);color:var(--danger)}.fb-card.praise .fb-strip{background:var(--ok-bg);color:var(--ok)}.fb-body{gap:10px;padding:12px 14px 8px;font-size:15px;line-height:1.55;display:grid}.fb-foot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 14px;font-size:13px;display:flex}.fb-seen{color:var(--ok);font-weight:700}:is(.stats,.grid2,.tiles)>.card+.card{margin-top:0}.report-card table.report-marks th,.report-card table.report-marks td{padding:5px 8px}.report-card .receipt-meta th{width:120px}.write-line{border-bottom:1px solid var(--ink3);height:28px}.write-line+.write-line{margin-top:4px}.sign-row{justify-content:space-between;gap:24px;margin-top:32px;font-size:13px;display:flex}.sign-row>span{border-top:1px solid var(--ink3);text-align:center;min-width:150px;padding-top:4px}.cert-body{text-align:justify;margin:8px 0 0;font-size:16px;line-height:2}.certificate .receipt-meta th{width:220px}table.register{font-size:12px}table.register th,table.register td{border:1px solid var(--line);text-align:center;padding:3px 4px}table.register td.name{text-align:left;white-space:nowrap;font-weight:600}table.register .off{background:var(--surface2);color:var(--ink3)}table.register td.att-absent{color:var(--danger);font-weight:700}table.register td.att-leave{color:#8a6414}@media print{.report-card{break-after:page;padding:0}.report-card:last-child{break-after:auto}.register-print{page:register}table.register th,table.register td{border-color:#999}table.register .off{background:#eee}}@page register{size:A4 landscape;margin:10mm}.help-icon{vertical-align:middle;border:1.5px solid var(--accent);width:22px;height:22px;color:var(--accent);cursor:pointer;background:0 0;border-radius:50%;justify-content:center;align-items:center;margin-left:10px;padding:0;font:italic 700 13px/1 Georgia,Times New Roman,serif;display:inline-flex}.help-icon:hover,.help-icon:focus-visible{background:var(--accent);color:#fff}.help-dialog{background:var(--surface,#fff);width:min(560px,100vw - 32px);color:var(--ink);border:0;border-radius:14px;padding:22px;box-shadow:0 20px 60px #00000040}.help-dialog::backdrop{background:#14182873}.help-steps{gap:10px;margin:0;padding-left:22px;font-size:15px;line-height:1.5;display:grid}.spinner{vertical-align:middle;border:3px solid var(--surface2);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.page.muted:has(>.spinner){justify-content:center;padding-top:18vh;display:flex}.page.muted:has(>.spinner)>.spinner{border-width:4px;width:40px;height:40px}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}table.clean{font-variant-numeric:tabular-nums;font-size:14px}table.clean th{background:var(--surface2);color:var(--accent);text-transform:none;letter-spacing:0;white-space:nowrap;border:1px solid #c3cbe3;padding:5px 10px;font-size:13px;font-weight:700;line-height:1.3}table.clean td{vertical-align:middle;border:1px solid var(--line);height:32px;padding:4px 10px;line-height:1.35}table.clean td button.link{padding:1px 6px}table.clean td select{height:24px;padding:1px 6px;font-size:13px;line-height:1.3}table.clean td input[type=checkbox]{vertical-align:middle;margin:0}table.clean .aside{color:var(--ink3);white-space:nowrap;margin-left:6px;font-size:12px}table.clean tbody tr:nth-child(2n) td{background:#f7f8fb}table.clean tbody tr:hover td{background:#eef1fa}table.clean .who{color:var(--ink);font-weight:600;text-decoration:none}table.clean button.who{font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}table.clean .who:is(a,button):hover{color:var(--accent);text-decoration:underline}table.clean .adm{color:var(--ink3);margin-left:5px;font-size:12px}table.clean .sub{color:var(--ink3);font-size:12px;font-weight:400;display:block}table.clean a.tel{color:var(--ink);white-space:nowrap;text-decoration:none}table.clean a.tel:hover{color:var(--accent);text-decoration:underline}table.clean td.soft{color:var(--ink3);font-size:13px}table.clean td.idx,table.clean th.idx{width:1%;color:var(--ink3);white-space:nowrap}table.clean th.r,table.clean td.r{text-align:left}table.clean td.acts{text-align:right;white-space:nowrap;width:1%}table.clean tr.picked td,table.clean tr.picked:nth-child(2n) td{background:var(--ok-bg)}table.clean tr.changed td,table.clean tr.changed:nth-child(2n) td{background:var(--marigold-bg)}table.clean tr.open td{background:#eef1fa}table.clean td.tuck,table.clean tr:nth-child(2n) td.tuck,table.clean tbody tr:hover td.tuck{background:var(--surface);padding:12px}table.clean td.tuck table.clean{background:var(--surface)}table.clean td.tuck table.clean th{background:var(--marigold-bg);color:#6b4a0c;border-color:#f0dcae}table.clean td.tuck table.clean td{background:var(--surface);border-color:#f0e6cf}table.clean td.tuck table.clean tbody tr:nth-child(2n) td{background:#fffdf8}table.clean td.tuck table.clean tbody tr:hover td{background:#fff9ec}table.stops>tbody>tr>td,table.stops>thead>tr>th{white-space:nowrap}table.stops>tbody>tr>td.wrap{white-space:normal;min-width:160px}table.stops>tbody>tr>td.tuck{white-space:normal}dialog.modal{background:var(--surface);color:var(--ink);border:0;border-radius:12px;max-height:90vh;padding:0;box-shadow:0 20px 60px #00000040}dialog.modal::backdrop{background:#14182873}.modal-head{justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px 10px;display:flex}.modal-head h3{color:var(--ink);text-wrap:balance;margin:0;font-size:18px}.modal-head p{color:var(--ink3);margin:2px 0 0;font-size:14px}.modal-head button.link{color:var(--ink3);font-size:18px;line-height:1}.modal-body{padding:0 18px 14px}.modal-foot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:12px 18px 16px;display:flex}.modal dl{grid-template-columns:max-content 1fr;gap:8px 18px;margin:0;font-size:15px;display:grid}.modal dt{color:var(--ink3);padding-top:2px;font-size:13px}.modal dd{margin:0}button.solid-danger{background:var(--danger);color:#fff;border-color:#8f2f20}table.clean a.act{color:var(--accent);border-radius:4px;padding:1px 6px;font-size:13px;font-weight:600;text-decoration:none;display:inline-block}table.clean a.act:hover{background:var(--surface2)}button.link{color:var(--accent);background:0 0;border:0;border-radius:4px;padding:4px 6px;font-size:13px;font-weight:600}button.link:hover:not(:disabled){background:var(--surface2)}button.link:disabled{color:var(--line);opacity:1}button.link.quiet{color:var(--ink3)}button.link.quiet:hover:not(:disabled){color:var(--danger);background:var(--danger-bg)}.fl{flex-direction:column;gap:3px;min-width:0;padding-top:8px;display:flex;position:relative}.fl>input,.fl>select,.fl>textarea{background:var(--surface);width:100%;height:44px;color:var(--ink);font:inherit;border:1.5px solid #c3cbe3;border-radius:10px;padding:9px 12px;transition:border-color .12s,box-shadow .12s}.fl>textarea{resize:vertical;height:auto;min-height:76px;padding-top:12px}.fl>:is(input,select,textarea):hover{border-color:#9aa6cc}.fl>:is(input,select,textarea):focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2b3f8c1f}.fl>:is(input,textarea)::placeholder{color:#9198ab;opacity:1}.fl>label{text-overflow:ellipsis;white-space:nowrap;background:var(--surface);max-width:calc(100% - 24px);color:var(--ink2);pointer-events:none;padding:0 5px;font-size:12.5px;font-weight:600;line-height:16px;transition:color .12s;display:block;position:absolute;top:0;left:9px;overflow:hidden}.fl>label i{color:var(--danger);margin-left:2px;font-style:normal}.fl:focus-within>label{color:var(--accent)}.fl-hint{color:var(--ink3);padding-left:6px;font-size:12px}.fl.has-prefix>input{padding-left:48px}.fl>select.draft{border-color:var(--warn,#c98a1b);background:var(--warn-bg,#fff4de)}.fl>select.draft~label{background:linear-gradient(var(--surface) 50%, var(--warn-bg,#fff4de) 50%)}.fl-prefix{border-right:1px solid var(--line);width:40px;height:41px;color:var(--ink2);pointer-events:none;place-items:center;font-size:14px;font-weight:600;display:grid;position:absolute;top:9.5px;left:1.5px}.fl-err{color:var(--danger);padding-left:6px;font-size:12px;font-weight:600}.fl.bad>:is(input,select,textarea){border-color:var(--danger)}.fl.bad>label{color:var(--danger)}.fl-row{flex-wrap:wrap;align-items:flex-start;gap:16px 14px;display:flex}.fl-row>button{height:44px;margin-top:8px}.row:has(>.fl){align-items:flex-start}.row:has(>.fl)>button{height:44px;margin-top:8px}.row:has(>.fl)>:has(>label.switch){align-self:center;padding-top:8px}label.switch{cursor:pointer;color:var(--ink);align-items:center;gap:10px;font-size:15px;font-weight:600;display:inline-flex}label.switch input{opacity:0;width:1px;height:1px;position:absolute}label.switch .track{background:#c3cbe3;border-radius:999px;flex:none;width:40px;height:22px;transition:background .15s;position:relative}label.switch .track:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #00000040}label.switch input:checked+.track{background:var(--accent)}label.switch input:checked+.track:after{transform:translate(18px)}label.switch input:focus-visible+.track{outline:2px solid var(--accent);outline-offset:2px}label.switch small{color:var(--ink3);font-size:12.5px;font-weight:400;display:block}@media (prefers-reduced-motion:reduce){.fl>*,label.switch .track,label.switch .track:after{transition:none}}.receipt table:not(.receipt-meta) th,.print-area table:not(.receipt-meta):not(.tt) th,table.marks th,table.register th,table.report-marks th{color:#2b3f8c;text-transform:none;letter-spacing:0;background:#e4e8f5;border:1px solid #b9c2dc;font-size:12.5px;font-weight:700}.receipt table:not(.receipt-meta) td,.print-area table:not(.receipt-meta):not(.tt) td,table.marks td,table.report-marks td{border:1px solid #d3d8e6}@media print{table th,table td,table tr{-webkit-print-color-adjust:exact;print-color-adjust:exact}table.clean tbody tr:hover td{background:inherit}}button.class-head{text-align:left;min-width:0;color:var(--ink);cursor:pointer;font:inherit;background:0 0;border:0;flex:1;align-items:flex-start;gap:10px;padding:4px 0;display:flex}button.class-head .chev{color:var(--accent);width:14px;font-size:14px;line-height:26px}button.class-head:hover .chev{color:var(--ink)}.card.class-card+.card.class-card{margin-top:0}.card.class-card{border:1.5px solid #c3cbe3}.card.class-card:has(>.class-block){box-shadow:0 2px 10px #2b3f8c12}.class-block{border:1px solid #c3cbe3;border-radius:10px;overflow-x:auto}table.class-table{border-collapse:collapse;width:100%}table.class-table th{background:var(--surface2);color:var(--ink2);text-align:left;text-transform:none;letter-spacing:0;padding:8px 12px;font-size:12.5px;font-weight:700}table.class-table td{vertical-align:middle;border-top:1px solid var(--line);padding:8px 12px}table.class-table tbody tr:hover td{background:#fafbfd}select.cell-select{background:var(--surface);border:1px solid #c3cbe3;border-radius:8px;width:100%;max-width:260px;padding:6px 8px;font-size:14px}select.cell-select.draft{background:var(--marigold-bg);border-color:var(--marigold)}details.subject-teachers table.class-table{border:1px solid #c3cbe3;border-radius:10px;display:table;overflow:hidden}.nb-card{background:var(--surface);border:1.5px solid #c3cbe3;border-radius:12px;overflow:hidden}.nb-card.important{border-color:#e8b4aa}.nb-strip{background:var(--surface2);color:var(--accent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:6px 14px;font-size:13px;font-weight:700;display:flex}.nb-card.unread .nb-strip{background:var(--marigold-bg);color:#8a6414}.nb-card.important .nb-strip{background:var(--danger-bg);color:var(--danger)}.nb-body{gap:8px;padding:12px 14px 8px;display:grid}.nb-title{font-size:17px;font-weight:800;line-height:1.3}.nb-text{white-space:pre-wrap;color:var(--ink2);font-size:15px;line-height:1.6}.nb-foot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 14px;font-size:13px;display:flex}.id-sheets{flex-direction:column;align-items:flex-start;gap:16px;display:flex;overflow-x:auto}.id-sheet{background:#fff;place-content:start center;gap:8mm;width:210mm;min-height:297mm;padding:10mm;display:grid;box-shadow:0 1px 4px #0000001f}.id-sheet.land{grid-template-columns:repeat(2,85.6mm)}.id-sheet.port{grid-template-columns:repeat(3,54mm)}.idc{width:85.6mm;height:54mm;color:var(--ink);outline-offset:.5mm;-webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid;background:#fff;border-radius:3mm;outline:.2mm dashed #b8bfd3;font-size:2.6mm;line-height:1.25;position:relative;overflow:hidden}.idc.port{width:54mm;height:85.6mm}.idc .photo{background:#dfe4f2;place-items:center;display:grid;overflow:hidden}.idc .photo img{object-fit:cover;width:100%;height:100%;display:block}.idc .photo svg{width:70%;height:70%}.idc .logo{width:8mm;height:8mm;color:var(--accent);background:#fff;border-radius:50%;flex:none;place-items:center;font-size:3.4mm;font-weight:800;display:grid;overflow:hidden}.idc .logo img{object-fit:contain;width:100%;height:100%}.idc .sign{color:var(--ink3);text-align:center;border-top:.2mm solid var(--ink3);padding-top:.4mm;font-size:2mm}.idc dl{grid-template-columns:auto 1fr;gap:.2mm 1.5mm;margin:0;font-size:2.4mm;display:grid}.idc dt{color:var(--ink3);white-space:nowrap}.idc dd{text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;overflow:hidden}.idc .school{text-overflow:ellipsis;font-weight:800;line-height:1.1;display:block;overflow:hidden}.idc.a .head{background:var(--accent);color:#fff;align-items:center;gap:2mm;height:12mm;padding:1.8mm 2.5mm;display:flex}.idc.a .head .school{white-space:nowrap;font-size:3.4mm}.idc.a .head span{opacity:.85;white-space:nowrap;text-overflow:ellipsis;font-size:2.1mm;display:block;overflow:hidden}.idc.a .body{gap:2.5mm;padding:2mm 2.5mm;display:flex}.idc.a .photo{border:.4mm solid var(--surface2);border-radius:1.5mm;flex:none;width:18mm;height:22mm}.idc.a .info{flex:1;min-width:0}.idc.a .name{margin-bottom:.6mm;font-size:3.4mm;font-weight:800}.idc.a .foot{background:var(--marigold);color:#3b2a00;justify-content:space-between;align-items:center;height:5.5mm;padding:0 2.5mm;font-size:2.3mm;font-weight:700;display:flex;position:absolute;bottom:0;left:0;right:0}.idc.a .sig{width:16mm;position:absolute;bottom:7mm;right:2.5mm}.idc.b .head{background:var(--accent);color:#fff;text-align:center;padding:2mm 2mm 7mm}.idc.b .head .logo{width:7mm;height:7mm;margin:0 auto 1mm}.idc.b .head .school{font-size:3.2mm}.idc.b .head span{opacity:.85;font-size:2mm}.idc.b .photo{width:19mm;height:19mm;box-shadow:0 0 0 .3mm var(--surface2);border:.8mm solid #fff;border-radius:50%;margin:-6mm auto 0}.idc.b .name{text-align:center;margin-top:1mm;padding:0 2mm;font-size:3.6mm;font-weight:800}.idc.b .cls{text-align:center;color:var(--accent);font-size:2.7mm;font-weight:700}.idc.b dl{margin:1.5mm 3mm 0}.idc.b .foot{background:var(--marigold);text-align:center;color:#3b2a00;padding:1mm 0;font-size:2.3mm;font-weight:700;position:absolute;bottom:0;left:0;right:0}.idc.b .sig{width:15mm;position:absolute;bottom:6.5mm;right:3mm}.idc.c{border:.5mm solid var(--accent)}.idc.c .head{border-bottom:.3mm solid var(--line);align-items:center;gap:2mm;padding:1.8mm 14mm 1.2mm 2.5mm;display:flex}.idc.c .head .logo{background:var(--accent);color:#fff;width:7.5mm;height:7.5mm}.idc.c .head .school{color:var(--accent);white-space:nowrap;font-size:3.3mm}.idc.c .head span{color:var(--ink3);white-space:nowrap;text-overflow:ellipsis;font-size:2mm;display:block;overflow:hidden}.idc.c .tag{color:var(--accent);background:var(--surface2);border-radius:1mm;padding:.3mm 1.5mm;font-size:2mm;font-weight:800;position:absolute;top:2.2mm;right:2.5mm}.idc.c .body{gap:2.5mm;padding:1.8mm 2.5mm;display:flex}.idc.c table{border-collapse:collapse;table-layout:fixed;flex:1;align-self:flex-start;font-size:2.35mm}.idc.c th{letter-spacing:0;text-transform:none;vertical-align:middle;background:var(--surface2);color:var(--accent);text-align:left;white-space:nowrap;border:.2mm solid #c3cbe3;width:15mm;padding:.3mm 1.2mm;font-size:2.35mm;font-weight:700}.idc.c td{vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;border:.2mm solid #c3cbe3;padding:.3mm 1.2mm;font-size:2.35mm;font-weight:600;overflow:hidden}.idc.c .side{flex-direction:column;flex:none;align-items:center;gap:1.5mm;width:17mm;display:flex}.idc.c .photo{border:.3mm solid var(--line);border-radius:1mm;width:17mm;height:20mm}.idc.c .sign{width:17mm}.idc.d .head{background:var(--marigold);color:#3b2a00;align-items:center;gap:1.5mm;padding:2mm;display:flex}.idc.d .head .logo{color:#8a6414;width:7mm;height:7mm}.idc.d .head .school{font-size:3mm}.idc.d .head span{font-size:1.9mm}.idc.d .band{background:var(--accent);color:#fff;text-align:center;padding:.6mm 0;font-size:2.4mm;font-weight:800}.idc.d .photo{border:.4mm solid var(--surface2);border-radius:1.5mm;width:21mm;height:25mm;margin:2.5mm auto 1mm}.idc.d .name{text-align:center;padding:0 2mm;font-size:3.5mm;font-weight:800}.idc.d .cls{text-align:center;color:var(--ink2);font-size:2.5mm;font-weight:600}.idc.d dl{margin:1.5mm 3mm 0}.idc.d .foot{background:var(--accent);height:2mm;position:absolute;bottom:0;left:0;right:0}.idc.d.back .inner{flex-direction:column;gap:2mm;height:100%;padding:3mm;font-size:2.4mm;display:flex}.idc.d.back h4{color:var(--accent);margin:0;font-size:2.6mm}.idc.d.back ol{color:var(--ink2);margin:0;padding-left:3.5mm;font-size:2.2mm}.idc.d.back .ret{background:var(--marigold-bg);border-radius:1mm;padding:1.5mm;font-size:2.2mm}.idc.d.back .sign{margin-top:auto}.idc.d.back .qr{justify-content:center;display:flex}.idc.d.back .qr svg{display:block}@media print{.id-print{page:idcards}.id-sheets{gap:0;overflow:visible}.id-sheet{box-shadow:none;break-after:page;width:auto;min-height:0;padding:0}.id-sheet:last-child{break-after:auto}}@page idcards{size:A4 portrait;margin:10mm}.pub{background:#fff;min-height:100vh;padding-bottom:76px}.pub-wrap{max-width:1000px;margin:0 auto;padding:0 24px}.pub-hero{color:#fff;padding:22px 0 34px}.pub-top{align-items:center;gap:12px;display:flex}.pub-logo{background:#fff;border-radius:50%;flex:none;place-items:center;width:52px;height:52px;display:grid;overflow:hidden;box-shadow:0 0 0 2px #fff9}.pub-logo img{object-fit:cover;width:100%;height:100%}.pub-hero h1{color:#fff;margin:0;font-size:22px;line-height:1.2}.pub-tag{opacity:.9;font-size:14px}.pub-addr{opacity:.9;margin-top:10px;font-size:13px}.pub-lang{color:#fff;background:#00000040;border:1px solid #fff9;border-radius:16px;flex:none;align-self:flex-start;height:32px;padding:0 12px;font-size:13px}.pub-admit{background:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;margin-top:-18px;padding:12px 14px;display:flex;position:relative;box-shadow:0 4px 14px #0000001f}.pub-admit b{color:var(--danger);font-size:16px}.pub-sec{padding:20px 0 0}.pub-sec h2{color:var(--ink);margin:0 0 10px;font-size:18px}.pub-kv th{width:34%}.pub-form{background:var(--bg);margin:22px -24px 0;padding:20px 24px}.pub-form>form,.pub-form>.stack{max-width:640px}.pub-callno{letter-spacing:.5px;color:var(--accent);text-align:center;margin:4px 0 2px;font-size:30px;font-weight:800}.pub-form button[type=submit]{width:100%}.pub-trap{opacity:0;width:1px;height:1px;position:absolute;left:-10000px}.pub-foot{text-align:center;color:var(--ink3);padding:18px 0;font-size:12px}.pub-bar{z-index:10;border-top:1px solid var(--line);padding:10px 0 calc(10px + env(safe-area-inset-bottom));background:#fff;position:fixed;bottom:0;left:0;right:0}.pub-bar .btn,.pub-bar button{flex:1;justify-content:center;align-items:center;height:44px;display:inline-flex}.pay-qr{border:1px solid var(--line);background:#fff;border-radius:10px;flex:none;width:188px;padding:6px;line-height:0}.pay-qr img,.pay-qr svg{width:100%;height:auto;display:block}.proof-shot{border:1px solid var(--line);background:#fff;border-radius:8px;max-width:100%;max-height:60vh;margin:0 auto;display:block}.tt-gen{grid-template-columns:340px minmax(0,1fr);align-items:start;gap:16px;display:grid}@media (width<=900px){.tt-gen{grid-template-columns:minmax(0,1fr)}}.load-bar{background:var(--surface2);vertical-align:middle;border-radius:4px;width:64px;height:8px;display:inline-block;position:relative;overflow:hidden}.load-bar i{background:var(--ok);border-radius:4px;position:absolute;inset:0 auto 0 0}.load-bar.hot i{background:var(--danger)}.savebar-inline{background:var(--marigold-bg);border:1px solid var(--marigold);color:#5c4310;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;display:flex}.tt-gen.rules-closed{grid-template-columns:minmax(0,1fr)}.tt-full{z-index:60;background:var(--surface);border-radius:12px;padding:16px;position:fixed;inset:16px;overflow:auto;box-shadow:0 20px 60px #00000040}.tt-full-backdrop{z-index:59;background:#14182873;position:fixed;inset:0}
