:root{--ink: #14201e;--muted: #6b7a77;--line: #dfe4e2;--page: #f6f7f6;--surface: #fff;--accent: #0a5c50;--new: #e8f5ef;--edit: #fdf3e3;--danger: #ba1a1a;--mono: ui-monospace, SFMono-Regular, Menlo, monospace;--muted-2: #9aa8a4;--sans: system-ui, -apple-system, "Segoe UI", sans-serif;--line-2: #c8d1ce;--accent-soft: #e8f2ef;--edit-line: #e0a441;--ahead: #1d5fa8;--ahead-soft: #e8eff8;--z-cell: 1;--z-freeze: 2;--z-head: 3;--z-corner: 4;--z-bar: 5;--z-pop: 20}*{box-sizing:border-box}body{margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);background:var(--page)}button{font:inherit;cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:6px;padding:6px 12px}button.primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}button.danger{background:var(--danger);color:#fff;border-color:var(--danger);font-weight:600}button.ghost{background:none;border-color:transparent;color:var(--muted)}button:disabled{opacity:.45;cursor:not-allowed}input,select{font:inherit;padding:5px 7px;border:1px solid var(--line);border-radius:5px}.boot,.login{max-width:520px;margin:80px auto;padding:24px;background:var(--surface);border:1px solid var(--line);border-radius:10px}.login input{display:block;width:100%;margin:8px 0}.boot.err{color:var(--danger)}.top{display:flex;align-items:center;gap:20px;padding:10px 18px;background:var(--surface);border-bottom:1px solid var(--line);z-index:var(--z-bar);min-height:0}.brand{font-weight:700;letter-spacing:-.01em}.who{margin-left:auto;color:var(--muted);display:flex;align-items:center;gap:10px}.bar h2{margin:0;font-size:16px}.bar-right{margin-left:auto;display:flex;align-items:center;gap:12px}.save{color:var(--muted);font-size:12px}.save.on{color:var(--accent);font-weight:600}.pill{font-size:12px;padding:3px 9px;border-radius:999px;background:#eef1f0;color:var(--muted)}.pill.ok{background:var(--new);color:var(--accent);font-weight:600}.batchdate{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.batchdate .hint{max-width:380px;line-height:1.3}.table-wrap{overflow:auto;background:var(--surface);position:relative;min-height:0}.tbl{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}.tbl th{position:sticky;top:0;z-index:var(--z-head);background:#f0f3f2;text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.tbl th.num{text-align:right}.tbl th.sorted{color:var(--accent)}.caret{font-size:9px;opacity:.22}.tbl td{padding:6px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.tbl td.num{text-align:right;font-family:var(--mono)}.tbl tbody tr:hover td{background:#f7faf9}.rownum{width:44px;min-width:44px;text-align:right;color:var(--muted-2);font-size:11px;font-family:var(--mono);background:#fafbfa;position:sticky;left:0;z-index:var(--z-freeze)}th.rownum{z-index:var(--z-corner);background:#f0f3f2}.tbl-empty{padding:20px;color:var(--muted)}.owes{color:var(--danger);font-weight:600}.dim{color:var(--muted)}.search{width:240px}.totals{display:flex;gap:18px;font-size:12.5px;color:var(--muted)}.totals b{color:var(--ink);font-family:var(--mono)}.footnote{margin:0 18px 30px;font-size:12px;color:var(--muted)}.bar{display:flex;align-items:center;gap:10px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--line);z-index:var(--z-bar)}.bar .title{font-weight:600;font-size:13.5px}.bar .sub{color:var(--muted);font-size:12.5px}.chk{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted);white-space:nowrap}.chk input{margin:0}.subbar{display:flex;align-items:center;gap:16px;padding:0 18px 10px;flex-wrap:wrap}.clearfilters{background:none;border:0;color:var(--accent);font-weight:600;font-size:12.5px;padding:2px}.sorthint{margin-left:auto;font-size:11.5px;color:var(--muted)}.caret.on{opacity:1;color:var(--accent)}.tbl td.ed{padding:2px 4px}.tbl td.ed input,.tbl td.ed select{width:100%;border:1px solid transparent;background:transparent;padding:4px 6px;border-radius:4px}.tbl td.ed input:hover,.tbl td.ed select:hover{border-color:var(--line)}.tbl td.ed input:focus,.tbl td.ed select:focus{border-color:var(--accent);background:#fff;outline:none}.tbl td.dirty{background:var(--edit)}.tbl td.dirty input{font-weight:600}.tbl tr.isnew td{background:var(--new)}.tag{font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;padding:1px 6px;border-radius:999px;margin-right:7px}.tag.new{background:var(--new);color:var(--accent)}.tag.edit{background:var(--edit);color:#8a5a08}.modeswitch{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}.modeswitch button{border:0;border-radius:0;background:var(--surface);font:inherit;font-size:12px;font-weight:600;padding:5px 12px;color:var(--muted)}.modeswitch button.on{background:var(--accent);color:#fff}.draftpill{background:var(--edit);color:#8a5a08;font-weight:600}.pending{font-weight:600;color:#8a5a08}.pending em{font-style:normal;font-size:10px;text-transform:uppercase;letter-spacing:.05em;opacity:.7}.pendinghint{font-size:12px;color:#8a5a08}.app.editing .tbl th{background:#fdf6e9}.app.editing .grid-wrap,.app.editing .table-wrap{border-color:var(--edit-line)}.tbl.reg td,.tbl.reg th{border-right:1px solid var(--line)}.stickyname{position:sticky;left:0;z-index:var(--z-freeze);background:var(--surface);min-width:170px;max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.namecell{display:flex;align-items:center;gap:7px;min-width:0}.namecell>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rowface{border-radius:999px}.tbl .classrow .stickyname,.tbl .fillrow .stickyname{display:table-cell}.tbl.reg thead .stickyname{background:#f0f3f2;z-index:var(--z-corner)}.daycol{width:38px;min-width:38px;text-align:center!important;padding:4px 2px!important}.daycol .dow{font-size:9px;opacity:.55;font-weight:400}.daycol.sun{background:#f6eeee}.daycol.today{background:var(--new);color:var(--accent)}.fillrow th{padding:2px!important;background:#f7faf9}.mini{padding:0 3px;font-size:10px;line-height:15px;border-radius:3px;margin:0 1px;min-width:15px}.cellmark{text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:700;font-size:12px;width:38px;min-width:38px;padding:0!important;height:30px;color:var(--muted)}.cellmark:hover{outline:2px solid var(--accent);outline-offset:-2px}.cellmark.p{background:#e6f4ec;color:#12694a}.cellmark.a{background:#fbe9e9;color:var(--danger)}.cellmark.sun{background-image:linear-gradient(0deg,#00000008,#00000008)}.cellmark.drafted{box-shadow:inset 0 -3px #e0a441}.chk.notify.on{color:var(--danger);font-weight:700}.warnhint{font-size:12px;color:var(--danger);font-weight:600}.attdiff{font-size:13px;line-height:1.7}.attdiff ul{margin:4px 0 0;padding-left:18px}.attdiff li{font-size:12.5px}.diff-changed{margin-top:4px}.sharedtag{margin-left:7px;font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 5px}.paylist{display:flex;flex-wrap:wrap;gap:6px;padding:3px 0;white-space:normal}.payitem{display:inline-flex;align-items:center;gap:4px;background:#eef3f1;border-radius:999px;padding:2px 4px 2px 9px;font-family:var(--mono);font-size:11.5px;white-space:nowrap}.payitem em{font-style:normal;color:var(--muted);font-family:var(--sans);font-size:11px}.payitem.split{background:#f4efe6}.payitem .of{color:var(--muted);font-size:10.5px}.payx{border:0;background:none;color:var(--muted);font-size:14px;line-height:1;padding:0 4px;border-radius:999px;cursor:pointer}.payx:hover{color:var(--danger);background:#fbe9e9}.stickyclass{position:sticky;left:170px;z-index:var(--z-freeze);background:var(--surface);min-width:140px;max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:12px}.tbl.reg thead .stickyclass,.tbl.reg .fillrow .stickyclass{background:#f0f3f2;z-index:var(--z-corner)}.tbl.reg .fillrow .stickyname{background:#f0f3f2;font-weight:700;color:var(--ink)}.tbl.marks thead .monthcell{text-align:center!important;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);padding:3px 6px!important;background:#e7ecea}.tbl.marks thead .examcol{text-align:center!important;padding:4px 6px!important;min-width:92px;font-family:var(--mono);font-size:11.5px;font-weight:700}.tbl.marks thead .examnamecol{text-align:center!important;padding:2px 6px 5px!important;font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tbl.marks .classrow td{background:#eef2f1;border-top:2px solid var(--line);padding:5px 6px!important;text-align:center;vertical-align:middle}.tbl.marks .classrow .stickyname{background:#eef2f1;font-weight:700;font-size:12.5px;text-align:left}.classrow-in{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.classrow-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.classrow-n{font-size:10.5px;font-weight:700;color:var(--muted-2);background:var(--surface);border-radius:999px;padding:1px 7px}.subjtag{display:inline-block;font-size:10.5px;font-weight:700;color:var(--ink);line-height:1.35}.subjtag u{text-decoration:none;color:var(--muted-2);font-weight:600}.subjtag+.subjtag:before{content:" · ";color:var(--muted-2)}.monthbreak{border-left:12px solid var(--page)!important}.markcell{padding:0!important;min-width:88px}.markcell.na,.classrow td.na{background:repeating-linear-gradient(45deg,#f5f5f3,#f5f5f3 5px,#eeeeec 5px,#eeeeec 10px)}.markcell.absent{background:#faf7f2}.viewcell{display:flex;justify-content:center;gap:6px;padding:7px 6px;font-family:var(--mono);font-size:13px;font-weight:700}.viewcell .vm.empty{color:#d8d8d4;font-weight:400}.viewcell .abs{font-family:inherit;font-size:10.5px;font-weight:700;color:var(--danger)}.editcell{display:flex;align-items:center;gap:3px;padding:3px 4px}.abbtn{flex:none;width:19px;height:23px;border:1px solid var(--line);border-radius:5px;background:var(--surface);font:inherit;font-size:10px;font-weight:700;color:var(--muted-2);cursor:pointer}.abbtn.on{background:var(--danger);border-color:var(--danger);color:#fff}.editcell input{flex:1;min-width:0;border:1px solid transparent;border-radius:5px;background:none;font:inherit;font-family:var(--mono);font-size:12.5px;text-align:center;padding:4px 2px;-moz-appearance:textfield}.editcell input::-webkit-outer-spin-button,.editcell input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.editcell input:focus{outline:none;border-color:var(--accent);background:var(--surface)}.editcell input.drafted{box-shadow:inset 0 -3px #e0a441}.editcell input.over{background:#fbe9e9;color:var(--danger);font-weight:700}.printdoc{display:none}.tpl-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;padding:24px;align-items:center;justify-content:center;background:#1214138c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.tpl{display:flex;flex-direction:column;width:100%;max-width:1180px;height:100%;max-height:92vh;background:var(--surface);border-radius:16px;overflow:hidden;box-shadow:0 24px 64px #00000052}.tpl-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 18px;border-bottom:1px solid var(--line)}.tpl-title{font-size:15px;font-weight:700}.tpl-sub{font-size:12px;color:var(--muted);margin-top:3px;max-width:58ch}.tpl-x{border:0;background:none;font-size:17px;color:var(--muted);cursor:pointer;padding:2px 6px}.tpl-body{flex:1;display:flex;min-height:0}.tpl-controls{width:330px;flex:none;overflow-y:auto;padding:14px 16px;border-right:1px solid var(--line);background:var(--page)}.tpl-note{font-size:11.5px;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:12px}.tpl-group{margin-bottom:16px}.tpl-group-h{font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted-2);margin-bottom:7px}.tpl-ctl{display:grid;grid-template-columns:1fr 96px 52px 18px;align-items:center;gap:8px;margin-bottom:7px;font-size:12px}.tpl-ctl.toggle{grid-template-columns:1fr auto}.tpl-ctl-l{color:var(--ink)}.tpl-ctl-v{font-family:var(--mono);font-size:11px;color:var(--muted);text-align:right}.tpl-ctl-n{font-family:var(--mono);font-size:11px;text-align:right;width:100%;padding:3px 5px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink)}.tpl-ctl-u{font-size:10.5px;color:var(--muted)}.tpl-wt{grid-column:2 / span 3;display:flex;gap:4px}.tpl-wt button{flex:1;padding:4px 0;font:inherit;font-size:11px;cursor:pointer;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted)}.tpl-wt button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.tpl-ctl input[type=range]{width:100%;accent-color:var(--accent)}.tpl-foot .tpl-reset{margin-right:0;color:var(--muted)}.tpl-foot .tpl-undo{color:var(--accent);border-color:var(--accent)}.tpl-preview{flex:1;min-width:0;position:relative;background:#55595c}.tpl-preview iframe{width:100%;height:100%;border:0;display:block}.tpl-busy,.tpl-err{position:absolute;top:12px;left:50%;transform:translate(-50%);background:#0000009e;color:#fff;font-size:11.5px;font-weight:600;padding:5px 12px;border-radius:999px;z-index:2}.tpl-err{background:var(--danger)}.tpl-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:11px 16px;border-top:1px solid var(--line)}.tpl-saved{margin-right:auto;font-size:12px;font-weight:600;color:var(--accent)}.tpl-foot button{padding:8px 14px;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer}.tpl-foot .ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink)}.tpl-foot .primary{border:0;background:var(--ink);color:#fff}@media (max-width: 900px){.tpl-body{flex-direction:column}.tpl-controls{width:auto;border-right:0;border-bottom:1px solid var(--line);max-height:42%}}html,body{height:100%}body{overflow:hidden}.app{display:grid;grid-template-columns:276px 1fr;grid-template-rows:46px 36px 1fr;height:100vh}.app>.top,.app>.tabs{grid-column:1 / -1}.brand span{font-weight:400;color:var(--muted)}.tabs{display:flex;align-items:stretch;gap:2px;padding:0 10px;background:var(--surface);border-bottom:1px solid var(--line-2);z-index:var(--z-bar);min-height:0}.tabs button{border:0;border-radius:0;background:none;color:var(--muted);font-size:13px;font-weight:600;padding:0 15px;border-bottom:2px solid transparent}.tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.tabs .sp{flex:1}.tabs .drafts{align-self:center;font-size:11.5px;color:#8a5a08;font-weight:700;font-family:var(--mono)}.rail{background:var(--surface);border-right:1px solid var(--line-2);overflow:auto;padding:14px;min-width:0}.rail h3{margin:0 0 9px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);display:flex;align-items:center;gap:8px}.rail h3 .clear{margin-left:auto;border:0;background:none;color:var(--accent);font-size:11.5px;font-weight:700;padding:0;text-transform:none;letter-spacing:0}.rail h3 .clear:disabled{color:var(--muted-2)}.rail .sel,.rail input[type=search],.rail input[type=text]{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:7px;font:inherit;margin-bottom:7px;background:#fff}.rail .chk{display:flex;align-items:center;gap:8px;font-size:13px;padding:5px 0;color:var(--ink)}.rail .sep{height:1px;background:var(--line);margin:16px 0}.railnote{font-size:11.5px;line-height:1.6;color:var(--muted);margin-top:10px}.money{background:var(--page);border-radius:10px;padding:12px;margin-bottom:8px}.money-n{font-family:var(--mono);font-size:19px;font-weight:700;letter-spacing:-.01em}.money-l{font-size:11.5px;color:var(--muted);margin-top:2px}.money.due .money-n{color:var(--danger)}.money.ahead{background:var(--ahead-soft)}.money.ahead .money-n{color:var(--ahead)}.meter{height:7px;border-radius:4px;background:var(--line);margin-top:9px;overflow:hidden;display:flex}.meter i{display:block;height:100%;background:var(--accent)}.meter i.due{background:var(--danger)}.prog{background:var(--page);border-radius:10px;padding:12px;margin-bottom:8px}.prog-n{font-family:var(--mono);font-size:20px;font-weight:700}.prog-n small{font-size:12px;color:var(--muted);font-weight:400}.prog-l{font-size:11.5px;color:var(--muted);margin-top:2px}.chklist{list-style:none;margin:0;padding:0}.chklist li{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px}.chklist li:last-child{border-bottom:0}.chklist .dot{width:16px;height:16px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:10px;font-weight:700;background:var(--line);color:var(--muted)}.chklist .dot.done{background:var(--new);color:var(--accent)}.chklist .dot.now{background:var(--accent);color:#fff}.chklist .c{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--muted-2)}.chklist li.now{font-weight:600}.work{display:flex;flex-direction:column;min-width:0;min-height:0}.work>.bar,.work>.subbar,.work>.statusbar,.work>.footnote,.work>.pendinghint{flex:none}.work>.table-wrap,.work>.grid-wrap,.work>.ed-wrap{flex:1 1 auto;min-height:0}.work>.bar{min-height:40px}.work>.statusbar{min-height:28px}.work>.footnote{margin:6px 12px 8px}.grid-wrap,.table-wrap{min-height:0}.app.editing .table-wrap,.app.editing .grid-wrap{box-shadow:inset 0 3px 0 var(--edit-line)}.statusbar{display:flex;align-items:center;gap:16px;padding:0 12px;background:#e6eae9;border-top:1px solid var(--line-2);font-size:11.5px;color:var(--muted);font-family:var(--mono);min-height:0}.statusbar b{color:var(--ink)}.statusbar .sp{flex:1}.statusbar .amber{color:#8a5a08;font-weight:700}.statusbar kbd{background:#fff;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:4px;padding:0 5px;font-size:10.5px;color:var(--ink)}.tplbtn{display:block;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 11px;margin-bottom:7px;cursor:pointer;font:inherit}.tplbtn:hover{border-color:var(--line-2)}.tplbtn.on{border-color:var(--accent);background:var(--accent-soft)}.tplbtn b{display:block;font-size:13.5px;font-weight:600}.tplbtn span{display:block;font-size:11.5px;color:var(--muted);margin-top:3px;line-height:1.5}.tplbtn em{font-style:normal;font-family:var(--mono);font-size:10.5px;color:#8a5a08;font-weight:700}.ed-wrap{overflow:auto;padding:18px;background:var(--page);min-height:0}.ed-grid{display:grid;grid-template-columns:360px 1fr;gap:18px;align-items:start;max-width:1180px}@media (max-width: 1080px){.ed-grid{grid-template-columns:1fr}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}.panel h4{margin:0 0 4px;font-size:14px}.panel p.d{margin:0 0 12px;font-size:12.5px;color:var(--muted);line-height:1.55}.fieldlab{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px}.rail input[type=month],.rail input[type=date]{width:100%}.rail input[readonly]{background:var(--page);color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.chip{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:999px;padding:5px 11px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;line-height:1.2}.chip:hover{border-color:var(--line-2);color:var(--ink)}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.chip.all{font-style:normal}.chip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.chipnote{font-size:11.5px;color:var(--muted);margin:-4px 0 12px}.rangetabs{display:flex;gap:4px;margin-bottom:8px}.rangetabs button{flex:1;padding:5px 0;font-size:12px;font-weight:600;border-radius:7px;color:var(--muted)}.rangetabs button.on{background:var(--accent);border-color:var(--accent);color:#fff}.twofield{display:grid;grid-template-columns:1fr 1fr;gap:7px}.work>.boot{max-width:none;margin:0;border:0;border-radius:0;background:none;padding:26px 16px;color:var(--muted);font-size:13.5px}.work>.boot.err{color:var(--danger);font-weight:600}.signin{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(900px 400px at 50% -10%,var(--accent-soft),transparent 70%),var(--page)}.signin-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:0 1px 2px #14201e0a,0 24px 48px -32px #14201e59}.signin-mark{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--accent);color:#fff;font-size:18px;margin-bottom:16px}.signin-card h1{margin:0;font-size:22px;letter-spacing:-.02em}.signin-sub{margin:6px 0 20px;font-size:13.5px;line-height:1.6;color:var(--muted)}.signin-card .fieldlab{margin-top:12px}.signin-card input{width:100%;padding:10px 12px;border-radius:9px}.signin-card input:focus{outline:2px solid var(--accent);border-color:var(--accent)}.signin-go{width:100%;margin-top:18px;padding:11px 0;border-radius:9px;font-size:15px}.signin-err{margin:12px 0 0;font-size:13px;color:var(--danger);font-weight:600}.signin-note{margin:18px 0 0;padding-top:16px;border-top:1px solid var(--line);font-size:12.5px;line-height:1.6;color:var(--muted)}.signin-foot{margin:16px 0 0;font-size:12.5px;color:var(--muted)}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:28px;height:28px;border-radius:8px;flex:none;display:grid;place-items:center;background:var(--accent);color:#fff;font-size:12px;font-weight:700;overflow:hidden}.brand-mark img{width:100%;height:100%;object-fit:cover}.brand-name{font-weight:700;letter-spacing:-.01em;line-height:1.2}.brand-sub{display:block;font-size:11px;font-weight:500;color:var(--muted)}.tpl-err{margin:0;padding:22px 20px;background:var(--page);border:1px solid var(--line);border-radius:10px;color:var(--ink);font-size:13.5px;line-height:1.6;font-weight:500}.sk{position:relative;overflow:hidden;border-radius:6px;background:#e9edec}.sk:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);animation:sk-sweep 1.4s ease-in-out infinite}.sk-h{height:11px;width:45%;margin-bottom:12px}.sk-field{height:34px;margin-bottom:7px}.sk-block{height:78px}.sk-title{height:13px;width:180px;margin:0 12px}.sk-rows{padding:0}.sk-row{height:33px;border-radius:0;margin-bottom:1px}.sk-row:nth-child(n+8){opacity:.7}.sk-row:nth-child(n+11){opacity:.45}.sk-row:nth-child(n+13){opacity:.25}.sk-stat{height:10px;width:220px}.sk-cell{display:inline-block;height:10px;width:42px;vertical-align:middle}.refreshing{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);font-family:var(--mono)}.refreshing i{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:sk-pulse 1s ease-in-out infinite}@keyframes sk-pulse{50%{opacity:.25}}.tbl.sk td{border-bottom:1px solid var(--line)}.sk-bar{display:block;height:9px;border-radius:4px;background:#e9edec}.sk-cell{width:18px;margin:0 auto}.table-wrap[aria-busy=true]{position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(#000,#000)}.table-wrap[aria-busy=true]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.85) 50%,transparent 80%);transform:translate(-100%);animation:sk-sweep 1.4s ease-in-out infinite}@keyframes sk-sweep{to{transform:translate(100%)}}@media (prefers-reduced-motion: reduce){.table-wrap[aria-busy=true]:after{animation:none;opacity:.35}}.refreshing-hint{font-size:11.5px;color:var(--muted);font-family:var(--mono)}.tbl.reg:not(.editing) .cellmark{cursor:default}.tbl.reg:not(.editing) .cellmark:hover{outline:none}.tbl.reg.editing .cellmark:hover{outline:2px solid var(--accent);outline-offset:-2px}.tpl-scope+.tpl-scope{margin-top:22px}.tpl-scope-h{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:10px;margin-bottom:10px;background:var(--page);border:1px solid var(--line)}.tpl-scope-h b{font-size:13px}.tpl-scope-h span{font-size:11.5px;line-height:1.5;color:var(--muted)}.tpl-scope.all .tpl-scope-h{background:#fdf6e9;border-color:#e8d9b6}.tpl-scope.all .tpl-scope-h b{color:#8a5a08}.tpl-all{display:inline-block;margin-left:6px;font-style:normal;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:#f4e6c8;color:#8a5a08;border-radius:999px;padding:1px 5px;vertical-align:1px}.ver{font-family:var(--mono);font-size:11px;color:var(--muted);background:var(--page);border:1px solid var(--line);border-radius:999px;padding:2px 8px}.tpl-col{grid-column:2 / span 3;display:flex;gap:6px;align-items:center}.tpl-col input[type=color]{width:30px;height:26px;padding:0;border:1px solid var(--line);border-radius:6px;background:none;cursor:pointer}.tpl-col-hex{flex:1;min-width:0;font-family:var(--mono);font-size:11px;padding:3px 6px;border:1px solid var(--line);border-radius:6px}@media print{body>*:not(.printdoc){display:none!important}.printdoc{display:block!important}html,body{height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;overscroll-behavior:auto!important;background:#fff!important;margin:0!important;padding:0!important}.printdoc{height:auto!important;max-height:none!important;overflow:visible!important}body:not(:has(.printdoc))>*{display:revert!important}@page{size:A4 portrait;margin:9mm 8mm 11mm}.printdoc{position:relative;color:#14171a;font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;-webkit-print-color-adjust:exact;print-color-adjust:exact}.pwatermark{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;pointer-events:none;overflow:hidden}.pwm-tile{position:absolute;top:-30%;right:-30%;bottom:-30%;left:-30%;display:flex;flex-direction:column;justify-content:space-around;transform:rotate(-32deg)}.pwm-row{display:flex;justify-content:space-around}.pwm-row span{font-size:11pt;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:#00000006;white-space:nowrap}.pwm-logo{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:62mm;height:auto;opacity:.045}.pbar{height:2mm;border-radius:1mm;background:#14171a;margin-bottom:2.5mm}.phead{display:flex;align-items:center;gap:3.5mm;padding-bottom:2.2mm;margin-bottom:2.5mm;border-bottom:.5pt solid #c9cdd1;position:relative;z-index:1}.plogo{flex:none;width:11mm;height:11mm;object-fit:contain}.phead-main{flex:1;min-width:0}.pcentre{font-size:var(--rep-title, 12.5pt);font-weight:var(--rep-title-w, 700);letter-spacing:-.01em;line-height:1.1}.ptag{font-size:var(--rep-subtitle, 7pt);color:#5b6268;margin-top:.6mm;letter-spacing:.02em}.pright{text-align:right;flex:none}.pmonth{font-size:var(--rep-period, 9.5pt);font-weight:var(--rep-title-w, 700)}.pmeta{font-size:var(--rep-prepared, 6.5pt);color:#7a8188;margin-top:.5mm}.ptable{width:100%;border-collapse:collapse;position:relative;z-index:1}.ptable thead{display:table-header-group}.ptable tr{page-break-inside:avoid;break-inside:avoid}.ptable thead th{font-size:var(--rep-head, 6.5pt);font-weight:var(--rep-head-w, 700);color:#5b6268;text-transform:uppercase;letter-spacing:.04em;border-bottom:.9pt solid #14171a;padding:0 1.5mm 1.2mm;text-align:center;vertical-align:bottom}.ptable tbody td{border-bottom:.4pt solid #e6e9eb;padding:var(--rep-pad, 1.9mm) 1.6mm;font-size:var(--rep-font, 8.5pt);font-weight:var(--rep-body-w, 400);vertical-align:middle}.ptable th.pexam,.ptable td.pmark,.ptable .pclass td.pexam{border-left:.4pt solid #dfe3e5;border-right:.4pt solid #dfe3e5}.ptable th.psign,.ptable td.psign{border-left:.7pt solid #c9cdd1}.ptable tbody tr:nth-child(2n) td{background:#fafbfc}.pno{width:6.5mm;text-align:center;color:#9aa1a7;font-size:7pt}.pname{width:var(--rep-name-w, 36mm);font-weight:600;text-align:left}.pexam{text-align:center}.pexam-d{font-size:7.5pt;font-weight:700;color:#14171a}.pexam-n{font-size:6pt;font-weight:600;margin-top:.3mm}.pclass td{background:#edf0f2!important;border-top:.5pt solid #c9cdd1!important;border-bottom:.4pt solid #c9cdd1!important;padding:1.1mm 1.5mm!important;text-align:center}.pclass .pname{text-align:left;font-size:var(--rep-name, 7.4pt);font-weight:var(--rep-name-w-weight, 700);line-height:1.25}.psubj{font-size:var(--rep-subject, 6.8pt);font-weight:700;color:#14171a}.psubj+.psubj:before{content:" · ";color:#9aa1a7}.pmax{color:#7a8188;font-weight:500;font-size:6.2pt}.pdash{color:#c9cdd1}.pclass{page-break-after:avoid;break-after:avoid}.pmark{text-align:center;font-size:var(--rep-mark, 10.5pt);font-weight:var(--rep-mark-w, 700);font-variant-numeric:tabular-nums lining-nums}.psep{color:#c9cdd1;font-weight:400;margin:0 .6mm}.pabs{font-size:var(--rep-absent, 7.5pt);font-weight:600;color:#8b9298}.psign{width:32mm}.psignline{display:block;border-bottom:.5pt dotted #a8aeb3;height:3mm;margin:0 1mm}.pfoot{display:flex;justify-content:space-between;align-items:baseline;margin-top:3mm;font-size:var(--rep-footer, 6.5pt);color:#8b9298;border-top:.4pt solid #e6e9eb;padding-top:1.5mm;page-break-inside:avoid;break-inside:avoid}.pfoot b{color:#5b6268}.pfoot-c{font-weight:600;letter-spacing:.04em;text-transform:uppercase}}@media print{.patt{table-layout:fixed}.patt .pname{width:34mm}.patt .pno{width:5.5mm}.pday{width:5.6mm;padding:0 0 1mm!important;text-align:center;border-left:.3pt solid #eceff1}.pday-n{font-size:7pt;font-weight:700;color:#14171a}.pday-w{font-size:5pt;font-weight:600;color:#9aa1a7;margin-top:.2mm}.psun{background:#f2f4f5!important}.pmk{width:5.6mm;text-align:center;padding:1.6mm 0!important;font-size:7.5pt;font-weight:700;border-left:.3pt solid #eceff1}.ppr{color:#14171a}.pab{color:#6b7278;background:#f0eceb!important}.ppct{width:14mm;text-align:center;font-size:var(--rep-mark, 8.5pt);font-weight:var(--rep-mark-w, 700);font-variant-numeric:tabular-nums lining-nums;border-left:.7pt solid #c9cdd1}.patt .psign{width:34mm;border-left:.7pt solid #c9cdd1}.pclass-fill{background:#edf0f2!important}}.ppic{position:relative;flex:none;border-radius:12px;overflow:hidden;background:var(--page, #f4f2f0);display:grid;place-items:center;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.ppic canvas{display:block;pointer-events:none}.ppic-fallback{font-weight:700;color:var(--forest, #003633);background:var(--sprout-bg, #e6f1ea)}.ppic-load{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--page, #f4f2f0)}@media print{.ppic{display:none!important}}
