:root{color-scheme:light;--ink: #1f2933;--muted: #52606d;--paper: #f7f3ea;--line: #d8cfc0;--accent: #287c71;--accent-dark: #174f49;--gold: #b7791f;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;color:var(--ink);background:linear-gradient(135deg,rgba(40,124,113,.1),transparent 42%),linear-gradient(315deg,rgba(183,121,31,.14),transparent 38%),var(--paper)}#root{min-height:100vh;display:flex;flex-direction:column}.page-shell{flex:1;min-height:calc(100vh - 220px);display:grid;place-items:center;padding:28px 20px}.login-shell{width:min(1040px,100%);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(340px,.9fr);border:1px solid var(--line);background:#fffcf6c7;box-shadow:0 24px 80px #1f29331f}.brand-panel,.login-form{padding:clamp(28px,5vw,58px)}.brand-panel{display:grid;align-content:center;gap:28px;border-right:1px solid var(--line)}.logo{display:block;width:min(250px,58vw);height:auto}.eyebrow,.form-kicker{margin:0 0 12px;color:var(--accent-dark);font-size:13px;font-weight:700;letter-spacing:0;text-transform:uppercase}h1{margin:0;max-width:580px;font-size:clamp(38px,6vw,72px);line-height:1;letter-spacing:0}h2{margin:0;font-size:clamp(34px,5vw,48px);line-height:1;letter-spacing:0}p{max-width:580px;margin:22px 0 0;color:var(--muted);font-size:clamp(18px,2.3vw,22px);line-height:1.45}.login-form{display:grid;align-content:center;gap:20px;background:#ffffff6b}.dashboard-shell{width:min(1120px,100%);display:grid;gap:22px}.dashboard-header{display:flex;align-items:end;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);padding-bottom:22px}.dashboard-user{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:14px;color:var(--muted);font-size:14px;font-weight:700}.version{display:inline-block;margin-left:8px;padding:2px 8px;background:var(--accent);color:#fff;font-size:12px;border-radius:4px;font-weight:700}.dashboard-header-right{display:flex;align-items:center;gap:24px}.dashboard-dad-illustration{height:120px;width:auto}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.25fr) repeat(2,minmax(0,1fr));gap:16px}.dashboard-panel{min-height:220px;border:1px solid var(--line);background:#fffcf6c7;padding:24px}.household-panel{background:#fffdfa}.panel-kicker{margin:0 0 10px;color:var(--accent-dark);font-size:12px;font-weight:800;text-transform:uppercase}.dashboard-panel h2{font-size:28px}.dashboard-panel p{font-size:16px}.dashboard-callout{border-left:4px solid var(--accent);background:#287c7114;margin:22px 0 0;padding:12px 14px;color:var(--accent-dark);font-weight:800}.detail-list{display:grid;gap:16px;margin:18px 0 0}.detail-list div{display:grid;gap:4px;min-width:0}.detail-list dt{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.detail-list dd{min-width:0;margin:0;color:var(--ink);font-size:15px;font-weight:700;overflow-wrap:anywhere}.field{display:grid;gap:8px;color:var(--ink);font-size:14px;font-weight:700}.field input{width:100%;min-height:48px;border:1px solid var(--line);background:#fffdfa;color:var(--ink);font:inherit;font-weight:400;padding:12px 14px}.field-help{color:var(--muted);font-size:13px;font-weight:600;line-height:1.35}.field input:focus,.remember input:focus,button:focus-visible{outline:3px solid rgba(40,124,113,.28);outline-offset:2px}.form-row,.remember,.create-account{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.form-row{justify-content:space-between}.remember{color:var(--muted);font-size:14px;font-weight:600}.remember input{width:18px;height:18px;accent-color:var(--accent)}button{border:0;cursor:pointer;font:inherit}.primary-button{min-height:50px;background:var(--accent);color:#fff;font-weight:800;text-transform:uppercase}.primary-button:hover{background:var(--accent-dark)}.primary-button:disabled{cursor:not-allowed;opacity:.62}.text-button{background:transparent;color:var(--accent-dark);font-size:14px;font-weight:800;padding:0;text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:2px;text-underline-offset:5px}.auth-note{margin:0;color:var(--muted);font-size:14px;line-height:1.4}.auth-note-error{color:#9f1d1d}.auth-note-success{color:var(--accent-dark)}.create-account{justify-content:center;border-top:1px solid var(--line);color:var(--muted);font-size:15px;padding-top:20px}.debug-console{width:100%;border:1px solid var(--line);border-left:0;border-right:0;border-bottom:0;background:#fffcf6c7;padding:18px max(20px,calc((100vw - 1040px)/2))}.debug-console-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.debug-kicker{margin:0 0 4px;color:var(--accent-dark);font-size:12px;font-weight:800;text-transform:uppercase}.debug-console h2{font-size:22px}.debug-email,.debug-copy{color:var(--accent-dark);font-size:14px;font-weight:800;text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:2px;text-underline-offset:5px}.debug-copy{background:transparent}.debug-email-disabled,.debug-copy:disabled{color:var(--muted);cursor:not-allowed;opacity:.62;text-decoration:none}.debug-empty{margin:14px 0 0;font-size:14px}.debug-list{display:grid;gap:10px;max-height:160px;margin:14px 0 0;overflow:auto;padding-left:20px}.debug-list li{color:var(--muted);font-size:13px;line-height:1.4}.debug-list time{display:block;color:var(--ink);font-family:Consolas,Courier New,monospace}@media(max-width:820px){.login-shell{grid-template-columns:1fr}.dashboard-header{align-items:flex-start;flex-direction:column}.dashboard-grid{grid-template-columns:1fr}.brand-panel{border-right:0;border-bottom:1px solid var(--line)}.brand-panel,.login-form{padding:28px}}@media(max-width:460px){.page-shell{padding:0}.login-shell{min-height:100vh;border-left:0;border-right:0}.form-row,.debug-console-header{align-items:flex-start;flex-direction:column}}.obligations-table-container{width:100%;margin:32px 0 0}.obligations-table-container h2{margin-bottom:18px}.payment-legend{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin:0 0 14px;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.payment-legend span{display:inline-flex;align-items:center;gap:6px}.payment-legend i{width:18px;height:12px;border:1px solid #d2c6b5;display:inline-block}.obligations-table{width:100%;border-collapse:collapse;font-size:14px}.obligations-table thead{background:#f0ede5;border-bottom:2px solid var(--line)}.obligations-table thead th{padding:12px 10px;text-align:right;font-weight:700;color:var(--ink)}.obligations-table .institution-col{text-align:left;min-width:220px}.obligations-table .period-col{min-width:100px}.period-header{display:grid;gap:4px}.period-header .date{font-size:13px;color:var(--muted);font-weight:700}.period-header .total{font-size:14px;font-weight:800;color:var(--ink)}.obligations-table tbody tr{border-bottom:1px solid var(--line)}.obligations-table .institution-group-header{background:#f8f5f0}.obligations-table .institution-group-header td{padding:10px 12px;font-weight:800;color:var(--accent-dark);font-size:12px;text-transform:uppercase}.obligations-table .obligation-row{background:#fffdfb}.obligations-table .obligation-cell{padding:12px;text-align:left;vertical-align:middle}.obligation-name{font-weight:700;color:var(--ink)}.status-badge{display:inline-block;margin-top:6px;padding:3px 7px;background:#e0e0e0;color:var(--muted);font-size:11px;font-weight:700;border-radius:3px;text-transform:uppercase}.status-badge.inactive{background:#d8cfc0;color:var(--muted)}.obligations-table .payment-cell{padding:10px 8px;text-align:right;vertical-align:middle;border:1px solid #e8e3db;font-weight:600}.payment-cell .amount{display:block;color:var(--ink)}.payment-cell .status-indicator{display:block;color:var(--muted);font-size:10px;line-height:1.1;margin-top:2px;text-transform:uppercase;font-weight:700}.obligations-table tbody tr:hover{background:#287c710a}@media(max-width:1200px){.obligations-table{font-size:13px}.obligations-table .institution-col{min-width:180px}.obligations-table .period-col{min-width:85px}.period-header .date{font-size:12px}.period-header .total{font-size:13px}}.checking-accounts-container{width:100%;margin:32px 0 0}.checking-accounts-container h2{margin-bottom:18px}.accounts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:28px}.account-card{border:1px solid var(--line);background:#fffdfb;padding:18px;border-radius:4px}.account-card.inactive{opacity:.65;background:#f5f2ed}.account-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}.account-info h3{margin:0 0 4px;font-size:16px;color:var(--ink);font-weight:700}.institution{margin:0;color:var(--muted);font-size:13px;font-weight:600}.last-four{margin:2px 0 0;color:var(--muted);font-size:12px;font-weight:600}.badge-inactive{display:inline-block;padding:4px 8px;background:#d8cfc0;color:var(--muted);font-size:11px;font-weight:700;border-radius:3px;text-transform:uppercase;white-space:nowrap}.account-balance{margin-bottom:14px}.account-balance label{display:block;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;margin-bottom:6px}.balance-display{display:flex;align-items:baseline;gap:10px;cursor:pointer;padding:8px 0}.balance-display .amount{font-size:24px;font-weight:800;color:var(--accent-dark)}.balance-display .edit-hint{font-size:12px;color:var(--muted);font-weight:600}.balance-display:hover .edit-hint{text-decoration:underline}.edit-controls{display:flex;gap:8px}.edit-controls input{flex:1;min-height:40px;border:1px solid var(--accent);padding:8px 10px;font-size:16px;font-weight:700;color:var(--ink)}.save-btn,.cancel-btn{padding:8px 12px;font-size:12px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;border-radius:3px}.save-btn{background:var(--accent);color:#fff;border-color:var(--accent)}.save-btn:hover{background:var(--accent-dark)}.cancel-btn:hover{background:#f5f2ed}.account-detail{display:grid;gap:4px;margin-bottom:12px;font-size:13px}.account-detail label{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.account-detail span{color:var(--ink);font-weight:700}.account-notes{display:grid;gap:6px;margin-bottom:12px;padding:10px;background:#287c710a;border-radius:3px}.account-notes label{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;margin:0}.account-notes p{margin:0;color:var(--muted);font-size:13px;line-height:1.4}.login-link{display:inline-block;color:var(--accent-dark);font-size:13px;font-weight:700;text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:2px;text-underline-offset:3px}.login-link:hover{color:var(--accent)}.period-summary{background:#f8f5f0;border:1px solid var(--line);padding:18px;border-radius:4px;margin-top:22px}.period-summary h3{margin:0 0 12px;font-size:16px;color:var(--ink)}.summary-stat{display:grid;gap:6px;grid-template-columns:1fr auto;align-items:center}.summary-stat label{color:var(--muted);font-size:13px;font-weight:700}.summary-stat .amount{font-size:18px;font-weight:800;color:var(--accent-dark)}.context-menu{background:#fff;border:1px solid var(--line);border-radius:4px;box-shadow:0 8px 24px #1f293329;min-width:200px;overflow:hidden}.context-menu-header{background:#f8f5f0;padding:10px 12px;font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.context-menu-item{padding:10px 14px;font-size:14px;color:var(--ink);cursor:pointer;border-bottom:1px solid var(--line);font-weight:600}.context-menu-item:last-child{border-bottom:0}.context-menu-item:hover{background:#287c7114;color:var(--accent-dark)}.modal-overlay{position:fixed;inset:0;background:#1f293366;display:flex;align-items:center;justify-content:center;z-index:2000}.modal-content{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 80px #1f29333d;max-width:400px;width:90%;padding:32px}.modal-content h2{margin:0 0 20px;font-size:24px}.modal-body{margin-bottom:28px}.modal-body p{margin:12px 0;font-size:16px}.modal-field{display:grid;gap:6px;margin:12px 0;color:var(--ink);font-size:13px;font-weight:800;text-transform:uppercase}.modal-field input,.modal-field select,.modal-field textarea{width:100%;border:1px solid var(--line);background:#fffdfa;color:var(--ink);font:inherit;font-size:15px;font-weight:600;min-height:42px;padding:9px 10px;text-transform:none}.modal-field textarea{resize:vertical;line-height:1.35}.modal-field input:disabled{background:#f3eee5;color:var(--muted)}.modal-date{color:var(--muted);font-size:14px}.modal-note{background:#287c7114;border-left:3px solid var(--accent);padding:12px;border-radius:4px;font-size:14px;color:var(--ink)}.modal-actions{display:flex;gap:12px;justify-content:flex-end}.modal-cancel,.modal-confirm{padding:10px 20px;border:none;border-radius:4px;font-size:14px;font-weight:700;cursor:pointer;transition:background-color .2s}.modal-cancel{background:var(--line);color:var(--ink)}.modal-cancel:hover{background:#ccc}.modal-confirm{background:var(--accent);color:#fff}.modal-confirm:hover{background:var(--accent-dark)}.page-shell-dashboard{display:block;min-height:100vh;place-items:initial;padding:0 18px 148px}.page-shell-dashboard .dashboard-shell{width:100%;max-width:1440px;min-height:calc(100vh - 148px);margin:0 auto;gap:0}.page-shell-dashboard .dashboard-header{position:sticky;top:0;z-index:80;align-items:stretch;min-height:148px;border-bottom:0;background:#087d5c;padding:0 18px 10px 0}.dashboard-title-block{display:grid;align-content:start;gap:8px;min-width:340px}.dashboard-title-block .eyebrow{display:inline-block;width:fit-content;margin:0;background:transparent;color:#e8fff5;padding:14px 16px 0;font-size:12px}.dashboard-title-block h1{width:fit-content;max-width:none;margin:-8px 0 0;background:transparent;color:#fff;padding:0 16px 12px;font-size:clamp(28px,3vw,42px);line-height:1}.period-actions{display:flex;gap:10px;width:fit-content;margin-left:14px;padding:8px;background:transparent}.period-action-button{min-height:40px;border-radius:5px;background:#dff8ec;color:#006a4b;padding:8px 12px;font-weight:800}.period-action-button-secondary{background:#006a4b;color:#fff;box-shadow:inset 0 0 0 1px #ffffff29}.period-action-button:disabled{cursor:not-allowed;opacity:.78}.page-shell-dashboard .dashboard-header-right{display:grid;grid-template-columns:minmax(180px,auto) auto;grid-template-rows:1fr auto;align-items:start;justify-content:end;gap:8px 16px;margin-left:auto}.profile-period-card{align-self:end;justify-self:end;background:#0037273d;color:#fff;padding:10px 14px;text-align:right;font-size:13px;line-height:1.25}.profile-period-card strong,.profile-period-card span{display:block}.page-shell-dashboard .dashboard-dad-illustration{grid-row:1 / span 2;grid-column:2;height:132px;max-width:132px;object-fit:contain}.page-shell-dashboard .dashboard-user{grid-column:1;justify-self:end;color:#e8fff5;font-size:12px}.planning-workbench{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.72fr);gap:22px;min-height:calc(100vh - 296px);padding-top:18px}.planning-main-panel,.planning-side-panel{min-width:0}.planning-main-panel{display:grid;min-height:0}.planning-side-panel{display:grid;align-content:start;gap:18px}.page-shell-dashboard .obligations-table-container{display:grid;grid-template-rows:auto auto minmax(0,1fr);min-height:calc(100vh - 314px);margin:0;border-left:1px solid transparent}.page-shell-dashboard .obligations-table-container h2{margin:0 0 6px;color:var(--ink);font-size:clamp(28px,3vw,40px)}.page-shell-dashboard .payment-legend{margin-bottom:8px;font-size:10px}.obligations-table-scroll{min-height:0;overflow:auto;border:1px solid var(--line);background:#fffdfb}.page-shell-dashboard .obligations-table{min-width:760px}.page-shell-dashboard .obligations-table thead{position:sticky;top:0;z-index:5;background:#087d5c}.page-shell-dashboard .obligations-table thead th{color:#fff;border-right:1px solid rgba(255,255,255,.18)}.page-shell-dashboard .period-header .date,.page-shell-dashboard .period-header .total{color:#fff}.page-shell-dashboard .obligations-table .institution-col{position:sticky;left:0;z-index:6;background:#087d5c}.page-shell-dashboard .obligations-table .obligation-cell{position:sticky;left:0;z-index:2;min-width:210px;background:#fffdfb;box-shadow:1px 0 0 var(--line)}.page-shell-dashboard .payment-cell:focus{outline:3px solid rgba(0,106,75,.45);outline-offset:-3px}.current-period-panel h2,.dynamic-info-box h2{margin:0 0 12px;font-size:20px;text-align:center}.current-period-table{width:100%;border-collapse:collapse;font-size:14px;background:#fffdfb}.current-period-table th,.current-period-table td{border:1px solid #ffffff;padding:10px 9px;text-align:right;font-weight:800}.current-period-table thead th{background:#087d5c;color:#fff;text-align:center}.current-period-table tbody th{color:var(--ink);text-align:left;background:#fffdfb}.money-cell{background:#8ec5ff}.money-cell.warning{background:#fa7171}.money-cell.good{background:#91e681}.money-cell.danger{background:#fa7171}.editable-money-cell{cursor:text}.detail-money-cell{cursor:context-menu}.inline-balance-editor{display:grid;grid-template-columns:minmax(80px,1fr) auto;gap:5px;align-items:center}.inline-balance-editor input{min-width:0;width:100%;border:1px solid #087d5c;padding:5px;font:inherit;font-size:12px}.inline-balance-editor button{background:#087d5c;color:#fff;padding:6px 7px;font-size:11px;font-weight:800}.dynamic-info-box{display:grid;align-content:center;min-height:265px;border:1px solid #121212;background:#fffdfb;padding:20px}.dynamic-info-box .panel-kicker{margin:0 0 8px;text-align:center}.dynamic-info-box p{margin:0 auto;font-size:14px;text-align:center}.info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin:0}.info-grid div{min-width:0}.info-grid dt{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.info-grid dd{margin:2px 0 0;color:var(--ink);font-size:14px;font-weight:800;overflow-wrap:anywhere;text-transform:capitalize}.info-note{margin-top:16px!important;border-left:4px solid #087d5c;background:#087d5c14;padding:10px;text-align:left!important}.pending-transactions-modal{max-width:560px}.pending-transactions-table{width:100%;margin:18px 0 22px;border-collapse:collapse;font-size:14px}.pending-transactions-table th,.pending-transactions-table td{border:1px solid var(--line);padding:10px 12px;text-align:right}.pending-transactions-table th:nth-child(2),.pending-transactions-table td:nth-child(2){text-align:left}.pending-transactions-table th:first-child,.pending-transactions-table td:first-child{width:86px;text-align:center}.pending-transactions-table thead th{background:#087d5c;color:#fff;font-size:12px;text-transform:uppercase}.pending-transactions-table tbody td{background:#fffdfb;vertical-align:top}.pending-transactions-table tbody strong,.pending-transactions-table tbody span{display:block}.pending-transactions-table tbody span{margin-top:4px;color:var(--muted);font-size:12px;font-weight:600}.mark-cleared-cell input{width:22px;height:22px;accent-color:#06b637;cursor:pointer}.mark-cleared-cell input:disabled{cursor:not-allowed}.pending-transactions-table tfoot th,.pending-transactions-table tfoot td{background:#f8f5f0;font-weight:800}.page-shell-dashboard+.debug-console,.debug-console{position:fixed;right:0;bottom:0;left:0;z-index:90;height:130px;overflow:auto;background:#fffaf0;padding:14px max(20px,calc((100vw - 1320px)/2))}.debug-console h2{margin:0}.debug-empty{margin-top:8px}.debug-list{max-height:58px}@media(max-width:980px){.page-shell-dashboard{padding:0 12px 148px}.page-shell-dashboard .dashboard-header{position:relative;min-height:auto}.page-shell-dashboard .dashboard-header-right{grid-template-columns:1fr auto;width:100%;margin-left:0}.planning-workbench{grid-template-columns:1fr}.page-shell-dashboard .obligations-table-container{min-height:520px}}@media(max-width:640px){.page-shell-dashboard .dashboard-header-right{grid-template-columns:1fr}.page-shell-dashboard .dashboard-dad-illustration{grid-row:auto;grid-column:auto;justify-self:end;height:96px}.profile-period-card,.page-shell-dashboard .dashboard-user{justify-self:stretch;text-align:left}.current-period-table{font-size:12px}.current-period-table th,.current-period-table td{padding:7px 5px}.info-grid{grid-template-columns:1fr}}
