:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;--navy:#0c1b33;--navy-2:#132744;--navy-3:#1c3559;--gold:#c99a3a;--gold-soft:#f4e5bc;--ink:#172033;--muted:#6b7280;--line:#e6e1d8;--surface:#fff;--surface-soft:#faf9f6;--green:#167451;--green-soft:#eaf7f1;--red:#b9414f;--red-soft:#fff0f1;--shadow:0 18px 55px #0f1e321a;background:#f4f1eb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:#f4f1eb}body{background:#f4f1eb;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.brand-mark{background:linear-gradient(145deg,#fffdf8 0%,#f7f1e5 100%);border:1px solid #dab4609e;border-radius:30px;flex:none;place-items:center;width:104px;height:104px;display:grid;position:relative;overflow:hidden;box-shadow:0 18px 45px #04102240,inset 0 0 0 4px #ffffff8c}.brand-mark:before{content:"";pointer-events:none;z-index:2;background:linear-gradient(120deg,#0000 20%,#ffffff8f 45%,#0000 70%);animation:7s ease-in-out infinite logoSheen;position:absolute;inset:0;transform:translate(-120%)}.brand-mark img{object-fit:contain;border-radius:24px;width:92%;height:92%;display:block;transform:scale(1.02)}.brand-mark.compact{border-radius:15px;width:48px;height:48px;box-shadow:0 10px 28px #030e1e40}.brand-mark.compact img{border-radius:12px}@keyframes logoSheen{0%,72%,to{opacity:0;transform:translate(-120%)}78%{opacity:.9}88%{opacity:0;transform:translate(120%)}}.eyebrow{color:#9a7429;letter-spacing:.13em;text-transform:uppercase;margin:0 0 5px;font-size:10px;font-weight:900}.loading-page,.welcome-page{background:radial-gradient(circle at 5% 0,#cca24a29,#0000 30%),radial-gradient(circle at 95% 0,#33527e38,#0000 32%),linear-gradient(145deg,#081426 0%,#10233f 55%,#0a1729 100%);place-items:center;min-height:100dvh;padding:24px;display:grid}.loading-page{color:#e8edf5;align-content:center;gap:16px}.loading-page p{color:#b8c4d6;margin:0}.spinner{border:3px solid #ffffff26;border-top-color:#d5aa51;border-radius:50%;width:30px;height:30px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.welcome-shell{color:#eef3fa;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:linear-gradient(150deg,#162a46db,#081629ed);border:1px solid #dfbc7033;border-radius:34px;width:min(980px,100%);padding:clamp(26px,5vw,54px);position:relative;overflow:hidden;box-shadow:0 35px 95px #00000047}.welcome-shell:before{content:"";pointer-events:none;background:radial-gradient(circle,#d6b05a29,#0000 65%);border-radius:50%;width:440px;height:440px;position:absolute;top:-240px;right:-180px}.welcome-badge{color:#eed9a8;background:#d2a64514;border:1px solid #d4aa4e47;border-radius:999px;align-items:center;gap:7px;margin-bottom:26px;padding:7px 11px;font-size:11px;font-weight:800;display:inline-flex}.brand-lockup{z-index:1;align-items:center;gap:26px;display:flex;position:relative}.brand-lockup h1{letter-spacing:-.04em;color:#fff;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(38px,6vw,66px);font-weight:600;line-height:.96}.brand-lockup .eyebrow{color:#dcb865;margin-bottom:11px}.welcome-copy{color:#b8c6d9;max-width:650px;margin:14px 0 0;font-size:15px;line-height:1.7}.welcome-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-top:36px;display:grid}.welcome-action{color:#f8fafc;text-align:left;background:#ffffff0e;border:1px solid #ffffff1a;border-radius:21px;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;min-height:132px;padding:18px;transition:all .2s;display:grid}.welcome-action:hover{background:#ffffff14;border-color:#d9b45c66;transform:translateY(-3px)}.welcome-action.primary{background:linear-gradient(145deg,#d2a44230,#ffffff12);border-color:#ddb7625c}.action-icon{color:#f0d494;background:#d0a4471f;border:1px solid #d6ac5433;border-radius:15px;place-items:center;width:48px;height:48px;display:grid}.welcome-action strong{letter-spacing:.01em;font-size:14px;display:block}.welcome-action small{color:#9fb0c6;margin-top:6px;font-size:11px;line-height:1.5;display:block}.action-arrow{color:#8092aa}.welcome-footer{color:#97a8bf;border-top:1px solid #ffffff14;flex-wrap:wrap;gap:10px 22px;margin-top:24px;padding-top:20px;font-size:11px;display:flex}.welcome-footer span{align-items:center;gap:7px;display:inline-flex}.sync-note{color:#f1b7ba;align-items:center;gap:8px;margin-top:18px;font-size:12px;display:flex}.sync-note.connected{color:#9dd7bd}.app-shell{background:linear-gradient(#f1eee8 0%,#f8f7f4 220px,#f6f5f2 100%);min-height:100vh}.topbar{color:#fff;background:linear-gradient(120deg,#0b1a30 0%,#132a49 70%,#0d1c31 100%);border-bottom:1px solid #d7b0573d;justify-content:space-between;align-items:center;height:82px;padding:0 max(18px,50vw - 620px);display:flex;box-shadow:0 8px 30px #05112029}.topbar-brand{align-items:center;gap:12px;min-width:0;display:flex}.topbar-brand h1{letter-spacing:-.02em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:21px;font-weight:600}.topbar-brand .eyebrow{color:#c9ae73;margin-bottom:2px;font-size:8px}.topbar-actions{align-items:center;gap:8px;display:flex}.icon-button{color:#4b5563;background:#fff;border:1px solid #e4e7ec;border-radius:12px;place-items:center;width:40px;height:40px;transition:all .16s;display:grid}.icon-button:hover{color:#142744;border-color:#c9d0da;box-shadow:0 7px 18px #12264114}.topbar .icon-button{color:#cbd5e1;background:#ffffff0f;border-color:#ffffff1f}.topbar .icon-button:hover{color:#f2d695;box-shadow:none;background:#ffffff1a;border-color:#d8b25a57}.icon-button.danger{color:#bd4b55}.mode-pill{color:#d5e0ef;background:#ffffff12;border:1px solid #ffffff1c;border-radius:999px;align-items:center;gap:7px;padding:8px 11px;font-size:11px;font-weight:850;display:inline-flex}.mode-pill.owner{color:#f2d694;background:#dcb55b14;border-color:#dcb55b4d}.mode-pill.viewer{color:#b9d8ff}.content{width:min(1180px,100% - 32px);margin:24px auto 44px}.profile-strip{background:#ffffffeb;border:1px solid #e3ded5;border-radius:20px;justify-content:space-between;align-items:center;gap:16px;padding:15px 18px;display:flex;box-shadow:0 9px 30px #16263a0e}.profile-main{align-items:center;gap:12px;display:flex}.profile-avatar{color:#ad7d22;background:linear-gradient(145deg,#fff8e8,#f3e2bb);border:1px solid #ead5a5;border-radius:15px;place-items:center;width:46px;height:46px;display:grid}.profile-main strong{color:#14223a;font-size:14px;display:block}.profile-main>div>span{color:#858b95;margin-top:3px;font-size:11px;display:block}.profile-meta{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.profile-meta>span{color:#667085;align-items:center;gap:6px;font-size:11px;display:inline-flex}.viewer-code-chip{background:#fffaf0;border:1px solid #e4d4ac;border-radius:13px;padding:7px 8px 7px 10px;color:#78591b!important}.viewer-code-chip>span{line-height:1.05;display:grid}.viewer-code-chip small{text-transform:uppercase;letter-spacing:.08em;color:#9b7c3d;font-size:8px}.viewer-code-chip strong{letter-spacing:.12em;color:#6e5119;margin-top:2px;font-size:13px}.copy-code-button{color:#7c5b1b;background:#f4e6c5;border:0;border-radius:9px;place-items:center;width:29px;height:29px;display:grid}.copy-code-button:hover{background:#ead5a5}.alert{border-radius:13px;margin:14px 0 0;padding:12px 14px;font-size:12px;line-height:1.5}.alert.error{color:#9e313d;background:#fff2f3;border:1px solid #f1c8cd}.toast{z-index:150;color:#fff;background:#0d213b;border:1px solid #dab45e59;border-radius:14px;padding:12px 15px;font-size:12px;position:fixed;bottom:22px;right:22px;box-shadow:0 18px 45px #05122340}.month-toolbar{background:#ffffffe6;border:1px solid #e4dfd6;border-radius:18px;align-items:center;gap:10px;width:fit-content;max-width:100%;margin:21px auto;padding:7px;display:flex;box-shadow:0 9px 28px #0f22380d}.month-arrow{color:#3b4a5e;background:#f5f2ed;border:0;border-radius:12px;place-items:center;width:42px;height:42px;display:grid}.month-arrow:hover{color:#a1711c;background:#f8edd3}.month-title{color:#9d7425;justify-content:center;align-items:center;gap:10px;min-width:200px;display:flex}.month-title small{color:#9096a0;text-transform:uppercase;letter-spacing:.08em;font-size:9px;display:block}.month-title strong{color:#15243c;margin-top:2px;font-size:14px;display:block}.summary-grid{grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:18px;display:grid}.summary-card{background:#fff;border:1px solid #e6e1d8;border-radius:19px;align-items:center;gap:13px;min-height:92px;padding:16px;display:flex;position:relative;overflow:hidden;box-shadow:0 9px 28px #12243a0b}.summary-card:after{content:"";background:#f7f4ee;border-radius:50%;width:90px;height:90px;position:absolute;inset:auto -20px -38px auto}.summary-icon{color:#a87821;z-index:1;background:#fff7e7;border:1px solid #f0dfb8;border-radius:14px;place-items:center;width:44px;height:44px;display:grid}.summary-card small{color:#8a9099;text-transform:uppercase;letter-spacing:.04em;font-size:10px;font-weight:700;display:block}.summary-card strong{color:#17233a;letter-spacing:-.02em;z-index:1;margin-top:4px;font-size:20px;display:block;position:relative}.summary-card.success .summary-icon{color:#17714f;background:#eaf7f1;border-color:#cfe9dc}.summary-card.danger .summary-icon{color:#b9414f;background:#fff0f1;border-color:#f1d0d4}.ledger-card{box-shadow:var(--shadow);background:#fff;border:1px solid #e4dfd6;border-radius:24px;overflow:hidden}.ledger-head{background:linear-gradient(#fff 0%,#fdfcf9 100%);justify-content:space-between;align-items:center;gap:14px;padding:22px 22px 14px;display:flex}.ledger-head h2{letter-spacing:-.025em;color:#13213a;margin:0;font-size:21px}.primary-button{color:#fff;background:linear-gradient(145deg,#17365c,#0d223f);border:0;border-radius:12px;justify-content:center;align-items:center;gap:7px;padding:11px 15px;font-size:12px;font-weight:850;display:inline-flex;box-shadow:0 8px 18px #0c203a29}.primary-button:hover{filter:brightness(1.08)}.primary-button.full{width:100%;min-height:45px}.tabs{border-bottom:1px solid #eeeae3;gap:7px;padding:0 22px 14px;display:flex;overflow-x:auto}.tabs button{color:#7d838c;white-space:nowrap;background:0 0;border:0;border-radius:10px;padding:9px 12px;font-size:11px;font-weight:800}.tabs button.active{color:#6e521d;background:#faf0d8;box-shadow:inset 0 0 0 1px #ead9ad}.payment-entry-card{background:linear-gradient(135deg,#faf9f6 0%,#fffaf0 100%);border:1px solid #dcd8cf;border-radius:18px;grid-template-columns:minmax(220px,1.25fr) minmax(190px,1fr) minmax(135px,.62fr) minmax(145px,.7fr) auto;align-items:end;gap:12px;margin:16px 18px 8px;padding:17px;display:grid}.payment-entry-card.muted-entry{color:#737984;display:block}.payment-entry-title{align-items:center;gap:11px;min-width:0;display:flex}.payment-entry-title strong{color:#172033;font-size:14px;display:block}.payment-entry-title small{color:#7b828d;margin-top:3px;font-size:10px;line-height:1.4;display:block}.payment-entry-icon{color:#a4741f;background:#fff3d7;border:1px solid #ead5a6;border-radius:13px;flex:none;place-items:center;width:42px;height:42px;display:grid}.payment-field{gap:6px;min-width:0;display:grid}.payment-field>span{color:#777e89;text-transform:uppercase;letter-spacing:.07em;font-size:9px;font-weight:900}.payment-field input,.payment-field select{color:#172033;background:#fff;border:1px solid #d9d6cf;border-radius:11px;outline:none;width:100%;min-height:42px;padding:9px 10px}.payment-field input:focus,.payment-field select:focus,.form-stack input:focus{border-color:#c79b43;box-shadow:0 0 0 3px #cb9c4124}.paid-action-button{color:#fff;background:linear-gradient(145deg,#1c7b58,#136546);border:0;border-radius:12px;justify-content:center;align-items:center;gap:7px;min-height:42px;padding:10px 16px;font-weight:900;display:inline-flex;box-shadow:0 7px 16px #156e4d29}.paid-action-button:hover{filter:brightness(1.05)}.payment-entry-error{color:#9c3340;background:#fff2f3;border:1px solid #f1c8cd;border-radius:10px;grid-column:2/-1;padding:9px 11px;font-size:11px}.teacher-list{padding:3px 18px 16px}.teacher-row{border-bottom:1px solid #f0ede7;grid-template-columns:minmax(210px,1fr) minmax(300px,auto) auto;align-items:center;gap:14px;padding:16px 5px;display:grid}.teacher-row:last-child{border-bottom:0}.teacher-row.not-started{opacity:.58}.teacher-info{align-items:center;gap:12px;min-width:0;display:flex}.teacher-avatar{color:#9d6f1d;background:#fff7e8;border:1px solid #ecddb9;border-radius:14px;flex:none;place-items:center;width:45px;height:45px;display:grid}.teacher-copy{min-width:0}.teacher-name-line{align-items:center;gap:7px;display:flex}.teacher-copy h3{color:#17233a;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:14px;overflow:hidden}.teacher-copy p{color:#777e89;margin:4px 0 5px;font-size:11px}.joining{color:#a0a4ab;align-items:center;gap:5px;font-size:10px;display:inline-flex}.status-chip{border-radius:999px;padding:4px 7px;font-size:9px;font-weight:850}.status-chip.neutral{color:#717780;background:#f2f2f0}.payment-area{justify-content:flex-end;align-items:center;gap:11px;display:flex}.payment-toggle{border:0;border-radius:999px;justify-content:center;align-items:center;gap:6px;min-width:87px;padding:8px 10px;font-size:10px;font-weight:900;display:inline-flex}.payment-toggle.paid{color:#176d4e;background:#eaf7f1}.payment-toggle.unpaid{color:#aa3c48;background:#fff0f1}.payment-amount{color:#176d4e;white-space:nowrap;font-size:13px}.paid-date{gap:3px;display:grid}.paid-date span{color:#9a9fa7;font-size:9px}.paid-date input{color:#334155;background:#fff;border:1px solid #dcd9d3;border-radius:9px;max-width:140px;padding:7px 8px;font-size:11px}.paid-date strong{color:#596170;font-size:11px}.due-text{color:#7d838d;white-space:nowrap;font-size:11px}.row-actions{gap:6px;display:flex}.row-actions .icon-button{border-radius:10px;width:35px;height:35px}.text-button{color:#7b818a;background:0 0;border:0;padding:6px 4px;font-size:10px;font-weight:850}.danger-text{color:#b8404d}.danger-text:hover{text-decoration:underline}.empty-state{text-align:center;padding:54px 24px 60px}.empty-state>span{color:#a07321;background:#fff5de;border:1px solid #ead8af;border-radius:18px;place-items:center;width:58px;height:58px;margin:0 auto 14px;display:grid}.empty-state h3{color:#18253a;margin:0;font-size:18px}.empty-state p{color:#777e89;max-width:420px;margin:8px auto 18px;font-size:12px;line-height:1.6}.history-feed{background:#fbfaf8;gap:14px;padding:16px 18px 22px;display:grid}.history-month-card{background:#fff;border:1px solid #e6e1d8;border-radius:18px;overflow:hidden;box-shadow:0 7px 20px #13263b09}.history-month-head{background:linear-gradient(#fffdf9,#fff);border-bottom:1px solid #efebe5;justify-content:space-between;align-items:center;gap:16px;padding:15px 17px;display:flex}.history-month-head small{color:#a07c39;letter-spacing:.11em;font-size:8px;font-weight:900}.history-month-head h3{color:#17243b;margin:4px 0 0;font-size:16px}.history-total{text-align:right}.history-total span{color:#888e96;font-size:10px;display:block}.history-total strong{color:#166c4d;margin-top:3px;font-size:16px;display:block}.history-rows{padding:3px 14px 8px}.history-row{border-bottom:1px solid #f2eee8;justify-content:space-between;align-items:center;gap:15px;padding:12px 2px;display:flex}.history-row:last-child{border-bottom:0}.history-teacher{align-items:center;gap:10px;min-width:0;display:flex}.history-avatar{color:#9e7222;background:#fff7e9;border:1px solid #eddfbd;border-radius:12px;flex:none;place-items:center;width:37px;height:37px;font-weight:900;display:grid}.history-teacher strong{color:#202b3d;font-size:12px;display:block}.history-teacher small{color:#92969d;margin-top:3px;font-size:10px;display:block}.history-payment{text-align:right}.history-payment>span{border-radius:999px;align-items:center;gap:5px;padding:4px 7px;font-size:9px;font-weight:900;display:inline-flex}.history-payment.paid>span{color:#176d4e;background:#eaf7f1}.history-payment.unpaid>span{color:#ac3f4b;background:#fff0f1}.history-payment>strong{color:#176d4e;margin-top:4px;font-size:12px;display:block}.history-payment>small{color:#9499a1;margin-top:2px;font-size:9px;display:block}.history-no-rows{color:#969aa1;padding:18px;font-size:11px}.history-empty{color:#8a9098;border:1px dashed #d8d2c8;border-radius:18px;align-content:center;place-items:center;gap:7px;min-height:230px;margin:18px;display:grid}.history-empty svg{color:#af8128}.history-empty strong{color:#293448}.history-empty span{font-size:11px}.year-table-wrap{padding:4px 18px 20px;overflow-x:auto}.year-table{border-collapse:collapse;width:100%;min-width:850px}.year-table th,.year-table td{text-align:center;border-bottom:1px solid #f0ede8;padding:11px 8px;font-size:11px}.year-table th{color:#9b9fa6;font-weight:850}.year-table th:first-child,.year-table td:first-child{text-align:left;min-width:170px}.year-table td:first-child strong{color:#17233a;display:block}.year-table td:first-child small{color:#9a9ea5;margin-top:3px;display:block}.year-dot{border-radius:8px;place-items:center;width:27px;height:27px;font-weight:900;display:inline-grid}.year-dot.paid{color:#176d4e;background:#eaf7f1}.year-dot.unpaid{color:#b9414f;background:#fff0f1}.year-dot.na{color:#c4c6c9;background:#f6f5f3}.viewer-banner{color:#24456e;background:#f3f7fc;border:1px solid #d5e0ee;border-radius:16px;align-items:flex-start;gap:11px;margin-top:17px;padding:15px 17px;display:flex}.viewer-banner strong{font-size:12px;display:block}.viewer-banner span{color:#708199;margin-top:3px;font-size:11px;line-height:1.5;display:block}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#050f1ca8;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal-card{background:#fff;border:1px solid #d4ac5438;border-radius:24px;width:min(490px,100%);max-height:calc(100dvh - 36px);overflow-y:auto;box-shadow:0 34px 100px #0000004d}.modal-head{border-bottom:1px solid #efebe4;justify-content:space-between;align-items:center;padding:19px 21px 14px;display:flex}.modal-head h2{color:#15233a;margin:0;font-family:Georgia,Times New Roman,serif;font-size:20px;font-weight:600}.form-stack{gap:15px;padding:20px 22px 24px;display:grid}.form-stack label{gap:7px;display:grid}.form-stack label>span{color:#565e6b;font-size:11px;font-weight:850}.form-stack input{color:#172033;background:#fff;border:1px solid #dcd8d1;border-radius:12px;outline:none;width:100%;padding:12px 13px}.form-stack label small{color:#9498a0;font-size:10px;line-height:1.45}.form-intro{color:#757c87;text-align:center;margin:-2px 0 2px;font-size:12px;line-height:1.6}.viewer-modal-icon{color:#a57621;background:#fff4dc;border:1px solid #ead6aa;border-radius:18px;place-items:center;width:57px;height:57px;margin:2px auto 0;display:grid}.code-input{text-align:center;letter-spacing:.3em;font-size:21px;font-weight:900}.setup-hero{background:linear-gradient(135deg,#fffaf0,#fbf7ec);border:1px solid #e7d9b6;border-radius:15px;align-items:center;gap:11px;padding:13px;display:flex}.setup-hero>span{color:#a77720;background:#f4e5bd;border-radius:12px;flex:none;place-items:center;width:40px;height:40px;display:grid}.setup-hero strong{color:#3a3020;font-size:12px;display:block}.setup-hero small{color:#887a60;margin-top:3px;font-size:10px;line-height:1.45;display:block}.auto-code-note{color:#28476c;background:#f5f8fc;border:1px solid #dde4ed;border-radius:14px;align-items:center;gap:10px;padding:12px;display:flex}.auto-code-note>svg{flex:none}.auto-code-note strong{font-size:11px;display:block}.auto-code-note small{color:#77889d;margin-top:3px;font-size:9px;line-height:1.4;display:block}@media (width<=1000px){.summary-grid{grid-template-columns:repeat(2,1fr)}.payment-entry-card{grid-template-columns:1fr 1fr 1fr}.payment-entry-title,.payment-entry-error{grid-column:1/-1}.teacher-row{grid-template-columns:1fr auto}.payment-area{grid-column:1/2;justify-content:flex-start;padding-left:57px}.row-actions{grid-area:1/2/span 2;align-self:center}}@media (width<=720px){.welcome-page{padding:13px}.welcome-shell{border-radius:25px;padding:24px 18px}.welcome-badge{margin-bottom:20px}.brand-lockup{align-items:flex-start;gap:14px}.brand-mark{border-radius:21px;width:74px;height:74px}.brand-lockup h1{font-size:37px}.welcome-copy{font-size:13px}.welcome-grid{grid-template-columns:1fr;margin-top:25px}.welcome-action{min-height:90px}.welcome-footer{gap:8px 16px}.topbar{height:69px;padding:0 11px}.topbar-brand .brand-mark{border-radius:13px;width:41px;height:41px}.topbar-brand h1{font-size:16px}.topbar-brand .eyebrow{display:none}.mode-pill{padding:7px 8px}.topbar-actions .icon-button{width:36px;height:36px}.content{width:min(100% - 20px,1180px);margin-top:12px}.profile-strip{flex-direction:column;align-items:flex-start;padding:13px}.profile-meta{justify-content:flex-start;width:100%}.month-toolbar{margin:15px auto}.month-title{min-width:170px}.summary-grid{gap:9px}.summary-card{border-radius:15px;gap:9px;min-height:78px;padding:12px}.summary-icon{border-radius:12px;width:37px;height:37px}.summary-card strong{font-size:16px}.ledger-card{border-radius:20px}.ledger-head{align-items:flex-start;padding:17px 14px 11px}.ledger-head h2{font-size:17px}.primary-button{padding:10px 12px;font-size:11px}.tabs{padding:0 14px 11px}.payment-entry-card{grid-template-columns:1fr 1fr;margin:10px;padding:13px}.payment-entry-title,.payment-field:first-of-type{grid-column:1/-1}.paid-action-button{grid-column:1/-1;width:100%}.teacher-list{padding:4px 10px 12px}.teacher-row{grid-template-columns:1fr auto;gap:10px;padding:14px 4px}.teacher-avatar{width:39px;height:39px}.payment-area{flex-wrap:wrap;grid-column:1/-1;justify-content:flex-start;padding-left:51px}.row-actions{grid-area:1/2}.history-feed{padding:12px 10px 18px}}@media (width<=470px){.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-card{align-items:flex-start}.summary-icon{width:33px;height:33px}.summary-card small{font-size:8px}.summary-card strong{font-size:14px}.ledger-head{gap:8px}.primary-button{white-space:nowrap}.payment-entry-card{grid-template-columns:1fr}.payment-entry-title,.payment-field:first-of-type,.paid-action-button,.payment-entry-error{grid-column:1}.teacher-row{grid-template-columns:1fr}.payment-area{padding-left:0}.row-actions{grid-area:auto/1;justify-content:flex-end}.history-row{align-items:flex-start}.history-payment{min-width:105px}.history-month-head{align-items:flex-end}}html{scroll-behavior:smooth}body{overflow-x:hidden}button,input,select,.summary-card,.teacher-row,.history-month-card,.profile-strip,.month-toolbar,.ledger-card,.viewer-code-chip,.payment-entry-card{-webkit-tap-highlight-color:transparent}button,input,select{transition:border-color .22s,box-shadow .22s,background-color .22s,color .22s,transform .22s cubic-bezier(.2,.8,.2,1),opacity .22s}.app-shell{animation:.55s cubic-bezier(.2,.8,.2,1) both appReveal}.topbar{animation:.55s cubic-bezier(.2,.8,.2,1) both topbarReveal}.profile-strip{animation:.58s cubic-bezier(.2,.8,.2,1) 60ms both surfaceRise}.month-toolbar{animation:.58s cubic-bezier(.2,.8,.2,1) .12s both surfaceRise}.summary-card{transition:transform .24s cubic-bezier(.2,.8,.2,1),box-shadow .24s,border-color .24s;animation:.58s cubic-bezier(.2,.8,.2,1) both surfaceRise}.summary-card:first-child{animation-delay:.15s}.summary-card:nth-child(2){animation-delay:.2s}.summary-card:nth-child(3){animation-delay:.25s}.summary-card:nth-child(4){animation-delay:.3s}.ledger-card{animation:.65s cubic-bezier(.2,.8,.2,1) .28s both surfaceRise}.summary-card:hover{border-color:#dcd4c7;transform:translateY(-4px);box-shadow:0 18px 42px #12243a17}.summary-icon{transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s}.summary-card:hover .summary-icon{transform:scale(1.07)rotate(-3deg);box-shadow:0 8px 22px #13274014}.profile-strip,.ledger-card,.payment-entry-card{isolation:isolate;position:relative}.profile-strip:before,.ledger-card:before{content:"";border-radius:inherit;pointer-events:none;z-index:-1;background:linear-gradient(110deg,#0000 20%,#ffffff6b 42%,#0000 62%);animation:8s ease-in-out 1.2s infinite quietSheen;position:absolute;inset:0;transform:translate(-120%)}.month-arrow:not(:disabled):hover{transform:translateY(-2px)scale(1.04);box-shadow:0 8px 18px #20304414}.month-arrow:not(:disabled):active{transform:scale(.96)}.month-arrow:disabled{opacity:.35;background:#f6f4f0}.month-title strong{animation:.28s both textFade}.tabs button{transition:color .22s,background .22s,transform .22s,box-shadow .22s;position:relative}.tabs button:hover{color:#54442a;background:#fbf7ef;transform:translateY(-1px)}.tabs button.active{animation:.28s cubic-bezier(.2,.8,.2,1) both tabPop}.payment-entry-card.premium-payment-entry{background:radial-gradient(circle at 0 0,#d7b1591f,#0000 34%),linear-gradient(135deg,#fbfaf7 0%,#fffaf0 48%,#fff 100%);grid-template-columns:minmax(260px,1.25fr) minmax(170px,.78fr) minmax(220px,1fr) minmax(130px,.58fr) auto;align-items:end;animation:.48s cubic-bezier(.2,.8,.2,1) both paymentComposerIn;overflow:hidden;box-shadow:inset 0 1px #ffffffd9,0 12px 32px #1c2b3e0b}.payment-entry-card.premium-payment-entry:after{content:"";pointer-events:none;z-index:-1;background:radial-gradient(circle,#c99a3a26,#0000 68%);border-radius:50%;width:240px;height:240px;animation:8s ease-in-out infinite ambientFloat;position:absolute;top:-165px;right:-145px}.payment-entry-title{align-self:center}.payment-entry-icon{animation:3.8s ease-in-out infinite iconFloat}.payment-field select:hover,.payment-field input:hover{border-color:#cfc6b8}.payment-field select:focus,.payment-field input:focus{transform:translateY(-1px)}.paid-action-button{white-space:nowrap;transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .2s,filter .2s;position:relative;overflow:hidden}.paid-action-button:after,.primary-button:after{content:"";background:linear-gradient(90deg,#0000,#ffffff61,#0000);width:35%;transition:left .55s;position:absolute;inset:-30% auto -30% -45%;transform:skew(-18deg)}.paid-action-button:hover:not(:disabled),.primary-button:hover:not(:disabled){transform:translateY(-2px)}.paid-action-button:hover:not(:disabled):after,.primary-button:hover:not(:disabled):after{left:125%}.paid-action-button:active:not(:disabled),.primary-button:active:not(:disabled){transform:translateY(0)scale(.97)}.paid-action-button.already-paid{color:#5d7469;box-shadow:none;background:#e8f3ed}.payment-date-auto{color:#7b818b;grid-column:2/-1;align-items:center;gap:7px;min-height:30px;padding:2px 3px 0;font-size:10px;animation:.35s both textFade;display:flex}.payment-date-auto svg{color:#a4741f;flex:none}.payment-date-auto strong{color:#4f5966}.payment-entry-error{grid-column:2/-1;animation:.34s both errorShake}.teacher-row{border-radius:14px;transition:background .24s,transform .24s cubic-bezier(.2,.8,.2,1),box-shadow .24s,border-color .24s;animation:.42s cubic-bezier(.2,.8,.2,1) both rowReveal}.teacher-row:nth-child(2){animation-delay:35ms}.teacher-row:nth-child(3){animation-delay:70ms}.teacher-row:nth-child(4){animation-delay:.105s}.teacher-row:nth-child(5){animation-delay:.14s}.teacher-row:nth-child(6){animation-delay:.175s}.teacher-row:hover{background:linear-gradient(90deg,#fffdfa,#fff);transform:translateY(-2px);box-shadow:0 10px 28px #12243a0d}.teacher-row:hover .teacher-avatar{transform:scale(1.04)rotate(-2deg)}.teacher-avatar{transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s}.payment-toggle.paid{animation:.42s cubic-bezier(.2,.8,.2,1) both paidPop}.payment-amount{animation:.42s cubic-bezier(.2,.8,.2,1) both numberPop}.paid-date-readonly{background:#faf9f7;border:1px solid #e4e0da;border-radius:10px;min-width:112px;padding:6px 9px}.paid-date-readonly strong{white-space:nowrap;align-items:center;gap:5px;display:flex}.paid-date-readonly strong svg{color:#a1782b}.row-actions .icon-button:hover{transform:translateY(-2px)scale(1.03)}.text-button:hover{transform:translateY(-1px)}.history-month-card{transition:transform .24s,box-shadow .24s;animation:.45s cubic-bezier(.2,.8,.2,1) both historyReveal}.history-month-card:nth-child(2){animation-delay:50ms}.history-month-card:nth-child(3){animation-delay:.1s}.history-month-card:nth-child(4){animation-delay:.15s}.history-month-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px #13263b12}.history-row{transition:background .2s,padding .2s}.history-row:hover{background:#fffdf9;padding-left:7px;padding-right:7px}.year-dot{transition:transform .2s,box-shadow .2s}.year-dot:hover{transform:scale(1.12);box-shadow:0 6px 16px #14283e1a}.modal-backdrop{animation:.22s both backdropFade}.modal-card{animation:.34s cubic-bezier(.16,.9,.3,1.12) both modalPop}.toast{animation:.38s cubic-bezier(.2,.8,.2,1) both toastIn}.alert.error{animation:.34s both errorShake}.viewer-code-chip{transition:transform .22s,box-shadow .22s,border-color .22s}.viewer-code-chip:hover{border-color:#d5b96f;transform:translateY(-2px);box-shadow:0 10px 24px #6d4e181a}.copy-code-button:active{transform:scale(.9)}.welcome-shell{animation:.6s cubic-bezier(.2,.8,.2,1) both welcomeReveal}.brand-mark{animation:5s ease-in-out infinite brandBreathe}.welcome-action{transition:transform .26s cubic-bezier(.2,.8,.2,1),border-color .26s,background .26s,box-shadow .26s}.welcome-action:hover{box-shadow:0 14px 32px #0000001f}.welcome-action:hover .action-arrow{transform:translate(4px)}.action-arrow{transition:transform .22s}@keyframes appReveal{0%{opacity:0}to{opacity:1}}@keyframes topbarReveal{0%{opacity:0;transform:translateY(-18px)}to{opacity:1;transform:translateY(0)}}@keyframes surfaceRise{0%{opacity:0;transform:translateY(18px)scale(.988)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes paymentComposerIn{0%{opacity:0;transform:translateY(10px)scale(.992)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes rowReveal{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes historyReveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes paidPop{0%{opacity:.45;transform:scale(.86)}70%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes numberPop{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes modalPop{0%{opacity:0;transform:translateY(18px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes backdropFade{0%{opacity:0}to{opacity:1}}@keyframes toastIn{0%{opacity:0;transform:translateY(14px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes errorShake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}50%{transform:translate(3px)}75%{transform:translate(-1px)}}@keyframes tabPop{0%{opacity:.72;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes textFade{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}@keyframes welcomeReveal{0%{opacity:0;transform:translateY(16px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes brandBreathe{0%,to{transform:translateY(0);box-shadow:0 18px 45px #04102247,inset 0 0 0 5px #ffffff09}50%{transform:translateY(-2px);box-shadow:0 22px 52px #04102257,inset 0 0 0 5px #ffffff0b}}@keyframes iconFloat{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-3px)rotate(-2deg)}}@keyframes ambientFloat{0%,to{transform:translate(0,0)scale(1)}50%{transform:translate(-14px,12px)scale(1.08)}}@keyframes quietSheen{0%,72%{opacity:0;transform:translate(-120%)}78%{opacity:.55}92%,to{opacity:0;transform:translate(120%)}}@media (width<=1100px){.payment-entry-card.premium-payment-entry{grid-template-columns:1fr 1fr 1fr}.premium-payment-entry .payment-entry-title{grid-column:1/-1}.premium-payment-entry .paid-action-button{min-height:42px}.payment-date-auto,.premium-payment-entry .payment-entry-error{grid-column:1/-1}}@media (width<=720px){.payment-entry-card.premium-payment-entry{grid-template-columns:1fr 1fr}.premium-payment-entry .payment-entry-title,.premium-payment-entry .teacher-payment-field,.premium-payment-entry .paid-action-button,.premium-payment-entry .payment-date-auto,.premium-payment-entry .payment-entry-error{grid-column:1/-1}.paid-date-readonly{min-width:0}}@media (width<=470px){.payment-entry-card.premium-payment-entry{grid-template-columns:1fr}.premium-payment-entry .payment-field,.premium-payment-entry .payment-entry-title,.premium-payment-entry .paid-action-button,.premium-payment-entry .payment-date-auto,.premium-payment-entry .payment-entry-error{grid-column:1}.payment-area{row-gap:8px}.paid-date-readonly{width:fit-content}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
