:root{--primary:#1b3a55;--primary-light:#2a5a80;--primary-dark:#0a1929;--accent:#4a8ebb;--accent-light:#7ec8e8;--grey-100:#f5f7f9;--grey-200:#e5e9ed;--grey-300:#c8d0d8;--grey-400:#64748b;--grey-500:#475569;--grey-600:#334155;--white:#ffffff;--text-dark:#1a2a3a;--font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--bg:var(--grey-100);--card:var(--white);--ink:var(--text-dark);--muted:var(--grey-500);--line:var(--grey-200);--brand:var(--accent);--brand-ink:#ffffff;--radius:16px;--shadow:0 1px 3px rgba(27,58,85,0.06),0 6px 24px rgba(27,58,85,0.06)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);line-height:1.6;-webkit-font-smoothing:antialiased}.wrap{max-width:560px;margin:0 auto;padding:24px 18px 64px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.brand{display:flex;flex-direction:column;line-height:1.1}.brand-name{font-size:22px;font-weight:700;color:var(--primary);letter-spacing:-.01em}.brand-sub{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-500);margin-top:3px}.signout{font-size:13px;color:var(--grey-400);text-decoration:none}.signout:hover{color:var(--primary);text-decoration:underline}.owed{background:var(--primary);border:1px solid var(--primary);border-radius:var(--radius);box-shadow:0 8px 24px rgba(27,58,85,.25);padding:24px 22px;margin-bottom:20px;text-align:center}.owed .label{font-size:12px;text-transform:uppercase;letter-spacing:.1em;font-weight:600;color:var(--accent-light);margin-bottom:6px}.owed .amount{font-size:40px;font-weight:800;letter-spacing:-.02em;color:var(--white)}.owed .nil{font-size:15px;color:rgba(255,255,255,.8);margin-top:6px}.greeting{font-size:15px;color:var(--grey-500);margin-bottom:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:14px}.card-head{display:flex;align-items:center;gap:10px}.card-head.clickable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;min-height:48px;padding:10px 8px;margin:-10px -8px 0;border-radius:10px;-webkit-tap-highlight-color:rgba(74,142,187,.12);transition:background .15s}.card-head.clickable:hover{background:var(--grey-100)}.card-head.clickable:active{background:rgba(74,142,187,.1)}.chev{font-size:13px;color:var(--accent);transition:transform .2s ease;flex-shrink:0}.chev.open{transform:rotate(90deg)}.range{font-size:16px;color:var(--primary);flex:1 1}.badge,.range{font-weight:700}.badge{font-size:11px;padding:4px 10px;border-radius:100px;text-transform:capitalize;letter-spacing:.02em}.badge.invoiced,.badge.open{background:rgba(74,142,187,.12);color:var(--primary)}.badge.paid{background:var(--grey-200);color:var(--grey-400)}.calc{font-size:14px;color:var(--grey-500);margin-top:10px}.amount-line{font-size:22px;font-weight:800;color:var(--primary);margin-top:2px}.summary{font-size:15px;color:var(--grey-600);margin-top:10px}.summary.empty{color:var(--grey-400);font-style:italic}.sessions{margin-top:14px;border-top:1px solid var(--line)}.sessions-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--grey-400);margin:12px 0 4px}.session-row{padding:9px 0;border-bottom:1px solid var(--grey-100)}.session-row:last-child{border-bottom:none}.session-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.session-date{font-size:13px;font-weight:600;color:var(--grey-600)}.session-hours{font-size:13px;font-weight:700;color:var(--accent);white-space:nowrap}.session-desc{font-size:14px;color:var(--grey-500);margin-top:2px}.session-empty{font-size:14px;color:var(--grey-400);font-style:italic;padding:10px 0}.pay{display:block;width:100%;text-align:center;background:var(--accent);color:var(--white);text-decoration:none;font-size:17px;font-weight:600;padding:16px;border-radius:12px;border:none;cursor:pointer;box-shadow:0 4px 20px rgba(74,142,187,.3);transition:transform .2s,box-shadow .2s,background .2s;margin-top:14px}.pay:hover{transform:translateY(-2px);background:var(--accent-light);box-shadow:0 10px 30px rgba(74,142,187,.4)}.pending-note{display:block;font-size:14px;color:var(--grey-400);margin-top:14px}.card.paid{background:var(--grey-100);box-shadow:none;opacity:.72}.card.paid .amount-line,.card.paid .range{color:var(--grey-500)}.card.paid .session-hours,.card.paid .summary,.paid-label{color:var(--grey-400)}.paid-label{display:block;font-size:14px;font-weight:600;margin-top:14px}.empty-state{text-align:center;color:var(--grey-400);padding:40px 0}.signin{max-width:400px;margin:14vh auto 0;padding:0 20px;text-align:center}.signin .brand-name{font-size:30px}.signin .brand-sub{font-size:12px}.signin p{color:var(--grey-500);margin:14px 0 26px}.google-btn{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;font-weight:600;padding:14px 26px;border-radius:12px;box-shadow:0 4px 20px rgba(74,142,187,.3);transition:transform .2s,background .2s}.google-btn:hover{transform:translateY(-2px);background:var(--accent-light)}.denied{max-width:420px;margin:16vh auto 0;padding:0 20px;text-align:center;color:var(--grey-500)}.denied h1{font-size:20px;color:var(--primary);margin-bottom:8px}.admin-context{font-size:13px;color:var(--grey-500);margin-bottom:18px}.admin-context strong{color:var(--primary)}.admin-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:16px}.admin-card h3{margin-bottom:4px;font-size:16px;font-weight:700;color:var(--primary)}.admin-meta{font-size:13px;color:var(--grey-500);margin-bottom:8px}.admin-meta strong{color:var(--primary)}.disclosure{padding:6px 0;font:inherit;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.disclosure,.link-btn{background:none;border:none;color:var(--accent);cursor:pointer}.link-btn{padding:0;margin-left:10px;font:inherit;font-size:12px;font-weight:600;text-transform:none;letter-spacing:0}.link-btn:hover:not(:disabled){text-decoration:underline}.link-btn:disabled{color:var(--grey-400);cursor:default}.field-error{font-size:13px;color:#9a3412;margin-top:6px}.field{display:block;margin-bottom:10px}.field label{display:block;font-size:12px;font-weight:600;color:var(--grey-500);margin-bottom:4px;text-transform:uppercase;letter-spacing:.04em}.field input,.field select,.field textarea{width:100%;font:inherit;color:var(--ink);padding:10px 12px;border:1px solid var(--grey-200);border-radius:10px;background:#fff}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(74,142,187,.15)}.field textarea{resize:vertical;min-height:56px}.row{display:flex;gap:10px;flex-wrap:wrap}.row .field{flex:1 1;min-width:130px}.btn{font:inherit;font-weight:600;padding:10px 18px;border-radius:10px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;transition:transform .15s,background .2s}.btn:hover{transform:translateY(-1px);background:var(--accent-light)}.btn.muted{background:#fff;color:var(--grey-500);border-color:var(--grey-300)}.btn.muted:hover{background:var(--grey-100);color:var(--primary)}.actions{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:4px}.divider{border:none;border-top:1px solid var(--line);margin:26px 0 16px}.section-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--grey-500);margin-bottom:12px}.notice{background:rgba(74,142,187,.08);border:1px solid rgba(74,142,187,.3);border-radius:12px;padding:10px 14px;font-size:14px}.mock-banner,.notice{color:var(--primary);margin-bottom:16px}.mock-banner{background:rgba(74,142,187,.1);border:1px solid rgba(74,142,187,.35);border-radius:10px;padding:8px 12px;font-size:13px;font-weight:500;text-align:center}