@import "tailwindcss";
:root{--navy:#0b2545;--blue:#2363b6;--ink:#18314c;--muted:#728093;--line:#e2e7ed;--paper:#fff;--bg:#f5f7fa;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei',sans-serif;color:var(--ink);background:var(--bg);font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;background:none;border:0;color:inherit}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #70a8ef;outline-offset:3px}button{transition:background .15s,color .15s}h1,h2,h3,p{margin:0}h1{font-size:1.9rem;font-weight:700;letter-spacing:-.04em;line-height:1.45}h2{font-size:1.08rem;font-weight:650;line-height:1.6}h3{font-size:1rem;font-weight:600}p{line-height:1.75}small{font-size:.8rem;line-height:1.65}strong,b{font-weight:650}input,select{border:1px solid #d8dfe8;border-radius:7px;background:white;min-height:42px;padding:9px 12px;color:var(--ink);min-width:0}input[type=checkbox]{min-height:0;width:17px;height:17px;accent-color:var(--blue)}label{font-size:.875rem;font-weight:500;display:flex;flex-direction:column;gap:8px}label+label{margin-top:16px}.icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:7px;flex-shrink:0}.icon:hover{background:#e9eef4}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:42px;padding:10px 17px;border-radius:7px;font-size:.875rem;font-weight:600;white-space:nowrap}.primary{background:var(--blue);color:white}.primary:hover{background:#154e94}.secondary{border:1px solid var(--line);background:white}.secondary:hover{background:#f0f4f8}.text-button,.section-heading>button,.toolbar>button,.todo-heading>button{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;color:var(--blue)}.muted,.subtitle{color:var(--muted);font-size:.875rem}.eyebrow{font-size:.7rem;font-weight:650;letter-spacing:.16em;color:#8999ae;margin-bottom:8px}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--navy);color:#b9c9dd;width:238px;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:40}.brand{height:91px;padding:17px 23px;display:flex;align-items:center;border-bottom:1px solid #ffffff12}.brand img{width:190px;height:auto}.nav-label{font-size:.72rem;letter-spacing:.12em;padding:27px 25px 12px;color:#8298b5}.sidebar nav{padding:0 14px}.sidebar nav button{width:100%;display:flex;align-items:center;gap:13px;padding:14px 15px;margin:3px 0;border-radius:7px;text-align:left;font-size:.9rem}.sidebar nav button>svg:last-child{margin-left:auto;opacity:0}.sidebar nav button.active{background:#245995;color:white}.sidebar nav button.active>svg:last-child{opacity:1}.sidebar nav button:hover{background:#173b66;color:#fff}.sidebar-bottom{margin-top:auto;padding:20px 17px}.sidebar-bottom>button{display:flex;gap:10px;font-size:.8rem;margin:12px 6px 23px}.profile{border-top:1px solid #ffffff19;padding-top:22px;display:flex;gap:10px;align-items:center}.profile strong{color:white;font-size:.875rem}.profile small{display:block;font-size:.68rem}.profile .icon{margin-left:auto}.avatar{height:34px;width:34px;display:grid;place-items:center;background:#d6e5f5;color:var(--navy);border-radius:50%;font-weight:700}.workspace{margin-left:238px;min-width:0;width:calc(100% - 238px)}.topbar{height:73px;background:white;display:flex;align-items:center;justify-content:space-between;padding:0 36px;border-bottom:1px solid var(--line);gap:16px}.breadcrumb,.top-actions{display:flex;gap:15px;align-items:center;font-size:.8rem}.breadcrumb{color:var(--muted)}.breadcrumb b{color:var(--ink)}.date-label{color:var(--muted);font-size:.8rem}.notification{position:relative}.notification i{position:absolute;width:6px;height:6px;background:#e8a438;border-radius:50%;top:5px;right:7px}.top-actions>.text-button{border-left:1px solid var(--line);padding-left:16px}.workspace main{max-width:1680px;margin:auto;padding:32px 36px 12px}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px;gap:20px}.subtitle{margin-top:6px}.context-strip{display:flex;gap:20px;align-items:center;border:1px solid var(--line);border-radius:7px;background:white;font-size:.78rem;padding:12px 16px;margin-bottom:22px;color:#748397}.context-strip span:first-child{color:#355b4d}.context-strip button{margin-left:auto;display:flex;align-items:center;color:#786237}.live-dot{width:6px;height:6px;background:#4c9b7a;border-radius:50%;display:inline-block;margin-right:8px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:20px 0 24px}.metric{padding:22px;background:white;border:1px solid var(--line);border-radius:9px;text-align:left;min-width:0}.metric-label{display:flex;align-items:center;justify-content:space-between;font-size:.85rem;color:#67768a;margin-bottom:16px;gap:8px}.metric-label svg{color:#8b9cb0}.metric>strong{display:block;font-size:1.65rem;letter-spacing:-.025em;font-variant-numeric:tabular-nums;line-height:1.5;margin:12px 0}.metric>strong.missing{font-size:1.35rem;color:#8a94a3}.metric-foot{display:flex;gap:6px;align-items:center;font-size:.78rem;color:#7e8998;flex-wrap:wrap}.metric-foot b{color:#4c5e75}.metric-foot svg{margin-left:auto}.metric.navy{background:var(--navy);color:white;border-color:var(--navy)}.navy .metric-label,.navy .metric-foot,.navy .metric-foot b,.navy .metric-label svg{color:#c2d2e5}.metric.navy>strong{font-size:1.7rem}.metric>small{display:block;margin-top:9px}.progress-track{height:4px;background:#edf2f8;border-radius:3px;margin-top:17px}.progress-track i{display:block;height:100%;background:#457bd0;border-radius:3px}.panel{background:white;border:1px solid var(--line);border-radius:9px;padding:24px;margin-bottom:23px;min-width:0}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:22px}.section-heading>span{font-size:.8rem;color:var(--muted)}.dashboard-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:23px}.stage-panel h3{font-size:1.18rem;margin:15px 0 7px}.stage-panel>p{font-size:.85rem}.pill{display:inline-flex;border-radius:4px;padding:3px 8px;background:#f0f3f7;color:#52637a;font-size:.72rem;white-space:nowrap}.pill.blue{background:#edf3fc;color:#2862a5}.pill.green{background:#eaf6ef;color:#37815e}.stage-figures{display:flex;align-items:center;gap:30px;margin:23px 0 14px}.stage-figures small{display:block;color:var(--muted)}.stage-figures strong{display:block;font-size:1.5rem;margin-top:7px}.stage-figures>span{font-size:1.8rem;color:#d7dfe9}.stage-formula{background:#f5f8fc;font-size:.8rem;padding:11px 14px;margin-bottom:12px;border-radius:5px}.stage-panel .primary{margin-top:18px}.repayment-row{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:21px 0;border-bottom:1px solid #eef1f5}.repayment-row:nth-last-of-type(1){border-bottom:0}.date-square{border:1px solid var(--line);border-radius:7px;min-width:44px;text-align:center;padding:5px}.date-square b{display:block;font-size:1.15rem}.date-square small{color:var(--muted);font-size:.7rem}.repayment-row>div:nth-child(2){flex:1}.repayment-row strong{font-size:.9rem}.repayment-row small{display:block;color:var(--muted);font-size:.7rem;margin-top:3px}.repayment-row>b{font-size:.9rem;white-space:nowrap}.repayment-row:hover{background:#f8fafc}.todo-columns{display:grid;grid-template-columns:1fr 1fr;gap:30px}.todo-columns>div+div{padding-left:30px;border-left:1px solid var(--line)}.todo-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.todo-heading h3 span{font-size:.78rem;font-weight:400;color:var(--muted);margin-left:6px}.todo-row{display:flex;align-items:flex-start;gap:10px;padding:14px 0;border-bottom:1px solid #eef1f5}.todo-row:last-child{border-bottom:0}.checkbox{border:1px solid #c8d3df;width:19px;height:19px;flex-shrink:0;border-radius:4px;margin-top:3px;display:grid;place-items:center;padding:0}.done .checkbox{background:#2c7d61;border-color:#2c7d61;color:white}.todo-content{flex:1;text-align:left;padding:0;font-size:.86rem;line-height:1.6}.todo-content strong{font-weight:500}.todo-content small{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:.7rem;margin-top:8px}.done .todo-content strong{text-decoration:line-through;color:#8c98a7}.event-dot{height:8px;width:8px;display:inline-block;border:1px solid #00000012;border-radius:50%;flex-shrink:0}.upcoming>button{width:100%;display:flex;align-items:center;gap:15px;text-align:left;font-size:.8rem;padding:17px 0;border-bottom:1px solid #edf0f4}.upcoming b{flex:1;font-weight:500}.upcoming>button>span:nth-child(2){color:var(--muted);white-space:nowrap}.upcoming>button:last-child{border:0}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px;font-size:.85rem}.toolbar>div{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.toolbar label{flex-direction:row;align-items:center;margin:0}.alert{background:#fffaf0;border:1px solid #f1e3c3;border-radius:6px;color:#84652d;font-size:.83rem;line-height:1.75;padding:13px 17px;margin-bottom:20px}.alert.error{display:flex;gap:15px;background:#fff2f2;color:#a33636}.error-text{color:#b63c3c;font-size:.875rem;margin:12px 0}.warning-text{color:#a07025;font-size:.875rem}.table-scroll{overflow:auto;max-width:100%;border:1px solid var(--line);border-radius:6px}table{border-collapse:separate;border-spacing:0;width:100%;font-size:.81rem;text-align:left}th{background:#f3f6fa;color:#6c7a8e;font-size:.74rem;font-weight:550;position:sticky;top:0;z-index:3;white-space:nowrap}td,th{padding:15px 16px;border-bottom:1px solid var(--line);vertical-align:top}td{white-space:nowrap}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:#f8fafc}td small{display:block;color:var(--muted);font-size:.72rem}td.wrap{white-space:normal;min-width:220px;max-width:390px;line-height:1.65}.numeric{font-variant-numeric:tabular-nums}.table-link{font-weight:600;color:var(--blue);text-align:left}.source{display:block;color:#8b96a7;font-size:.67rem;margin-top:5px;white-space:normal;line-height:1.6}.year-table{padding:0}.year-table .table-scroll{max-height:72vh}.year-table td:first-child,.year-table th:first-child{position:sticky;left:0;z-index:2;background:white}.year-table th:first-child{z-index:5;background:#f3f6fa}.year-table td{border-left:3px solid transparent}.year-table td:first-child{border-left-color:var(--row-color)}.year-table .action-cell{min-width:330px;max-width:420px;white-space:normal;background:color-mix(in srgb,var(--row-color) 25%,white)}.action-cell button{text-align:left;line-height:1.65}.summary-band{background:#edf2f8;border-radius:9px;display:flex;align-items:center;gap:35px;padding:27px 30px;margin-bottom:23px;border:1px solid #dbe4ef}.summary-band small{display:block;color:var(--muted)}.summary-band strong{font-size:2rem;display:block;margin-top:8px}.summary-band p{font-size:.8rem;color:#6a7d95}.summary-band>.pill{margin-left:auto}.filter-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr;gap:14px}.filter-grid label{margin:0}.search-input{position:relative}.search-input input{padding-left:36px;width:100%}.search-input svg{position:absolute;left:11px;top:13px;color:var(--muted)}.result-summary{display:flex;justify-content:space-between;align-items:center;padding:22px 0;font-size:.85rem}.result-summary strong{font-size:1.25rem;margin-left:10px}.pagination{display:flex;justify-content:flex-end;align-items:center;gap:18px;margin-top:20px;font-size:.8rem}.bar-chart{display:flex;gap:16px;align-items:flex-end;overflow-x:auto;min-height:210px;padding:10px}.bar-group{flex:1;min-width:48px;text-align:center}.bar-group small{color:var(--muted);font-size:.7rem}.bars{height:155px;display:flex;align-items:flex-end;justify-content:center;gap:5px;margin-bottom:10px}.bars i{display:block;width:16px;max-width:35%;background:#163b66;border-radius:3px 3px 0 0}.bars i+i{background:#e3ac45}.missing-bar{font-size:.68rem;color:#a18552;writing-mode:vertical-rl;padding:6px}.legend{display:flex;gap:15px;flex-wrap:wrap;font-size:.72rem;color:#6d7c91;margin-bottom:20px}.legend span{display:flex;align-items:center;gap:6px}.legend i{height:9px;width:9px;border-radius:2px;border:1px solid #00000011}.section-heading .legend{margin:0}.calendar-month{scroll-margin-top:15px;padding:22px 0 0;overflow:hidden}.calendar-month .section-heading{padding:0 22px}.weekdays,.day-grid,.overflow-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekdays{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f7f9fc;font-size:.75rem;color:var(--muted)}.weekdays span{padding:12px;text-align:center}.calendar-week{position:relative;border-bottom:1px solid var(--line);min-height:151px;background:repeating-linear-gradient(to right,transparent 0,transparent calc(100% / 7 - 1px),#e9edf3 calc(100% / 7 - 1px),#e9edf3 calc(100% / 7))}.calendar-week:last-child{border:0}.day-grid{height:35px;align-items:center}.day-number{font-size:.76rem;text-align:right;padding:6px 12px;height:33px}.day-number.today{font-weight:700;color:#2066bf;background:#edf4ff}.event-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:repeat(3,25px);gap:3px 0;padding:3px 0}.calendar-event{font-size:.7rem;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:4px;padding:4px 7px;margin:0 3px;color:#19324e;border-left:3px solid #00000022;line-height:1.25}.calendar-event.continues-left{border-radius:0 4px 4px 0;margin-left:0}.calendar-event.continues-right{border-radius:4px 0 0 4px;margin-right:0}.calendar-event.completed{opacity:.5;text-decoration:line-through}.overflow-grid>div{min-height:26px}.overflow-grid button{font-size:.7rem;color:#3863a0;padding:4px 8px}.load-months{width:100%;display:flex;justify-content:center;align-items:center;gap:8px;padding:15px;font-size:.85rem;color:var(--blue)}.issue{display:flex;gap:15px;border-bottom:1px solid var(--line);padding:17px 0;font-size:.85rem}.issue-number{background:#f4f0e6;color:#937339;font-size:.7rem;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;flex-shrink:0}.issue p{overflow-wrap:anywhere}.source-table{max-height:500px;margin-top:15px}.source-table td{white-space:normal;min-width:180px;font-size:.75rem}.file-upload{display:inline-flex;background:#edf3fc;color:var(--blue);padding:12px 18px;border-radius:7px;margin-top:17px;cursor:pointer}.file-upload input{margin-top:4px;max-width:100%;font-size:.8rem}.loading{display:grid;place-items:center;min-height:65vh;color:var(--muted)}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:130px;color:#8e9bad;font-size:.85rem;gap:8px}.modal-backdrop{position:fixed;inset:0;z-index:100;background:#071c38aa;display:flex;align-items:center;justify-content:center;padding:25px}.dialog{background:white;border-radius:13px;width:490px;max-width:100%;max-height:90vh;overflow:auto;padding:28px}.dialog.wide{width:760px}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px}.dialog>h2{font-size:1.25rem;line-height:1.7}.dialog>p{font-size:.875rem;margin:12px 0}.dialog>label{margin-top:24px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin:23px 0}.detail-grid>div{border-bottom:1px solid #edf0f5;padding-bottom:12px}.detail-grid dt,.detail-grid small{font-size:.76rem;color:var(--muted)}.detail-grid dd{margin:7px 0 0;font-size:1rem}.note-box{background:#f5f8fc;border-radius:7px;padding:18px;font-size:.85rem;line-height:1.8}.note-box p{margin:8px 0}.note-box small{color:var(--muted)}.check-label{flex-direction:row;align-items:center;font-weight:400}.dialog form>label{margin-top:20px}.dialog form>.muted{font-size:.76rem;margin:8px 0}.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:white}.login-art{background:var(--navy);color:white;min-height:100vh;padding:55px 65px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-art:after{content:'';position:absolute;width:550px;height:550px;border:1px solid #ffffff13;border-radius:50%;right:-210px;bottom:-120px;box-shadow:0 0 0 70px #ffffff03,0 0 0 140px #ffffff03;pointer-events:none}.login-art>img{width:255px}.login-art h1{font-size:3.4rem;line-height:1.55;letter-spacing:.03em}.login-art p{color:#b6c8df;margin-top:20px;font-size:1rem}.login-art .eyebrow{font-size:.72rem;color:#adbed5}.login-art>span{font-size:.78rem;color:#829bbd}.login-form{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:50px}.login-form>div{width:350px;max-width:100%}.login-form h1{margin:10px 0}.login-form form{margin-top:35px}.login-form form>.primary{width:100%;margin-top:25px}.login-form form>.check-label{font-size:.8rem;color:var(--muted)}.login-note{font-size:.7rem;color:#94a0b1;text-align:center;margin-top:25px}.mobile-only,.mobile-logo,.login-mobile-logo{display:none}footer{font-size:.7rem;text-align:center;color:#96a2b2;padding:24px 0 12px}
@media(min-width:1600px){.workspace main{padding:40px 48px}.metric>strong{font-size:1.95rem}}
@media(max-width:1250px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}.filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sidebar{width:220px}.workspace{margin-left:220px;width:calc(100% - 220px)}.workspace main{padding:26px}.brand img{width:175px}.topbar{padding:0 26px}.summary-band{flex-wrap:wrap}.summary-band>.pill{margin-left:0}}
@media(max-width:1023px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:260px}.sidebar.open{transform:translateX(0)}.brand{justify-content:space-between;padding:15px}.brand .icon{color:white}.workspace{margin:0;width:100%}.workspace main{max-width:920px;padding:25px}.topbar{height:70px;padding:0 23px;gap:12px}.mobile-only{display:inline-flex}.mobile-logo{display:block;width:139px}.breadcrumb{display:none}.top-actions{margin-left:auto;gap:10px}.date-label{display:none}.menu-backdrop{position:fixed;inset:0;background:#0b254566;z-index:35}.dashboard-grid{grid-template-columns:1fr}.page-heading h1{font-size:1.6rem}.context-strip{flex-wrap:wrap;gap:8px 18px}.context-strip button{margin-left:0}.metrics{gap:14px}.login-art{padding:40px}.login-art h1{font-size:2.7rem}.year-table .action-cell{min-width:270px}}
@media(max-width:600px){.workspace main{padding:21px 15px}.topbar{padding:0 12px;gap:7px}.mobile-logo{width:116px}.top-actions{gap:1px}.top-actions>.text-button{padding-left:8px;font-size:.75rem}.topbar .icon{width:32px}.page-heading{align-items:flex-start;gap:10px}.page-heading h1{font-size:1.45rem}.page-heading .secondary{font-size:0;padding:8px;min-height:34px}.page-heading .eyebrow{font-size:.6rem}.subtitle{font-size:.77rem}.context-strip{font-size:.7rem}.context-strip>span:nth-child(2){display:none}.metrics{gap:10px;margin:18px 0}.metric{padding:16px 13px;border-radius:7px}.metric-label{font-size:.74rem;gap:4px;margin-bottom:10px}.metric-label svg{width:16px}.metric>strong,.metric.navy>strong{font-size:1.18rem;letter-spacing:-.03em}.metric>strong.missing{font-size:1.1rem}.metric-foot,.metric>small{font-size:.66rem}.metric-foot b{font-size:.7rem}.panel{padding:18px 15px;margin-bottom:17px;border-radius:7px}.section-heading{gap:8px;margin-bottom:17px}.section-heading h2{font-size:.98rem}.section-heading>button{font-size:.75rem}.todo-columns{grid-template-columns:1fr;gap:20px}.todo-columns>div+div{padding:20px 0 0;border-left:0;border-top:1px solid var(--line)}.stage-figures{gap:20px}.stage-figures strong{font-size:1.3rem}.repayment-row{gap:9px;padding:17px 0}.repayment-row>b{font-size:.8rem}.repayment-row small{font-size:.65rem}.repayment-row>svg{display:none}.upcoming>button{gap:10px;flex-wrap:wrap}.upcoming>button>b{flex-basis:70%;font-size:.8rem}.upcoming .pill{display:none}.toolbar{align-items:flex-start;flex-wrap:wrap}.toolbar>div{gap:10px}.toolbar label{flex-direction:column;align-items:flex-start;font-size:.75rem}.toolbar input,.toolbar select{font-size:.8rem;padding:7px;max-width:150px}.toolbar>span{font-size:.75rem}.summary-band{padding:22px;gap:16px}.summary-band strong{font-size:1.75rem}.filter-grid{grid-template-columns:1fr 1fr;gap:12px}.filter-grid>label:first-child{grid-column:1/-1}.filter-grid input,.filter-grid select{width:100%;font-size:.8rem}.result-summary{gap:10px;font-size:.75rem}.result-summary strong{font-size:1rem}.year-table{padding:0}.calendar-month{padding:17px 0 0}.calendar-month .section-heading{padding:0 13px}.calendar-event{font-size:.63rem;padding:4px 3px;margin:0 1px;border-left-width:2px}.weekdays span{padding:9px 2px;font-size:.64rem}.day-number{padding:5px 7px}.calendar-week{min-height:145px}.legend{gap:8px 12px;font-size:.65rem}.calendar-toolbar .muted{font-size:.7rem}.overflow-grid button{padding:4px 2px;font-size:.64rem}.modal-backdrop{padding:10px;align-items:flex-end}.dialog{padding:22px 18px;max-height:92vh;border-radius:12px 12px 4px 4px}.detail-grid{gap:13px}.detail-grid dd{font-size:.9rem}.login{display:block}.login-art{display:none}.login-form{min-height:100vh;padding:35px 26px;justify-content:flex-start}.login-mobile-logo{display:block;width:190px;align-self:flex-start;margin-bottom:80px}.login-form>div{width:100%;max-width:380px}.login-form h1{font-size:1.9rem}.source-table td{min-width:150px}.alert{font-size:.75rem}.section-heading label{font-size:.75rem}.section-heading select{font-size:.75rem;width:140px}.file-upload{max-width:100%}}

:root{--green:#16845f;--red:#c4404a;--red-deep:#9c2d3a;--gold:#b18521;--blue:#386fbd}
.workspace main{padding:22px 30px 32px;max-width:1800px;margin:auto}.page-heading,.eyebrow{display:none}.workspace footer{display:none}.amount-red{color:var(--red)!important}.amount-green{color:var(--green)!important}.animated-number{font-variant-numeric:tabular-nums;white-space:nowrap}.page-content{animation:page-enter .22s ease-out}.panel{border:1px solid #e7ebf1;box-shadow:none;border-radius:14px;margin-bottom:20px}.metric{border-radius:14px;box-shadow:none}.dashboard-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.month-control{display:flex;align-items:center;gap:8px}.month-control>button{border:1px solid #e0e6ef;background:white;padding:8px;border-radius:8px;display:flex;align-items:center}.month-control label{display:flex;align-items:center;gap:8px}.month-control input{border:0;background:transparent;font-size:1.05rem;font-weight:700;color:#173956;max-width:180px}.month-control .month-reset{font-size:.78rem;color:#376ba4}.dashboard-toolbar>.muted{font-size:.75rem}.dashboard-metrics{margin:0 0 20px;gap:16px}.dashboard-metrics .metric{text-align:left;padding:20px;min-width:0}.metric-debt{background:#fff3f2;border-color:#f2d7d8}.metric-income{background:#edf8f2;border-color:#d4eade}.metric-expense{background:#fff8f5;border-color:#f0e1d9}.metric-debt .metric-label svg,.metric-expense .metric-label svg{color:var(--red)}.metric-income .metric-label svg{color:var(--green)}.dashboard-metrics .metric-label{margin-bottom:13px;font-weight:600;color:#485467}.dashboard-metrics .metric>strong{display:block;font-size:1.85rem;letter-spacing:-.7px;margin-bottom:16px}.dashboard-metrics .metric-foot{margin-top:0;font-size:.76rem}.dashboard-metrics .metric>small{display:flex;justify-content:space-between;gap:6px;font-size:.67rem;color:#6c7989;margin-top:10px}.visual-progress{height:9px;background:#dfe8e7;border-radius:12px;overflow:hidden;margin-top:15px}.metric-expense .visual-progress{background:#f0dedb}.visual-progress>i{display:block;height:100%;border-radius:inherit;transition:width .65s cubic-bezier(.2,.65,.2,1)}.visual-progress.unknown{background:repeating-linear-gradient(110deg,#e8ecf0 0px,#e8ecf0 5px,#f3f5f7 5px,#f3f5f7 10px)}.dashboard-main-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:20px}.stage-panel{border-top:3px solid #339477}.stage-panel .section-heading select{max-width:230px;width:48%;font-size:.75rem;padding:8px;border:1px solid #dfe6ee;border-radius:8px;background:#f8fafc}.stage-deadline{display:flex;align-items:center;gap:10px;font-size:.85rem;margin:16px 0}.income-pill{background:#d8f0e3;color:#126c49}.stage-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0 20px}.stage-stats small{display:block;color:#758092;font-size:.75rem;margin-bottom:8px}.stage-stats strong{font-size:1.4rem;white-space:nowrap}.stage-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:18px;font-size:.75rem;color:#8490a1}.calculation-details{margin-top:16px;font-size:.72rem;color:#7e8999}.calculation-details summary{cursor:pointer}.calculation-details p{padding-top:8px}.repayment-panel .repayment-row{padding:19px 0;gap:10px}.repayment-panel .repayment-row>b{font-size:1.05rem}.date-square{background:#fae7e8;color:#a23e49}.todo-heading h3{display:flex;gap:8px;align-items:center}.today-dot,.tomorrow-dot{width:7px;height:7px;border-radius:50%;background:#cf7b32}.tomorrow-dot{background:#7295bf}.todo-count{font-size:.68rem;padding:3px 7px;background:#ecf0f6;border-radius:6px;color:#647189}.todo-row{border-radius:8px;padding:12px 8px;transition:background .16s,transform .16s}.todo-row:hover{background:#f3f6fa}.todo-content strong{font-size:.82rem}.todo-content small{font-size:.68rem}.dialog{animation:dialog-enter .2s ease-out}.modal-backdrop{animation:veil-enter .18s ease-out}.sidebar nav button,.primary,.secondary,.icon,button{transition:background-color .16s,color .16s,border-color .16s,transform .16s}.primary:active,.secondary:active{transform:scale(.98)}.sidebar nav button.active{box-shadow:inset 3px 0 0 #85b4ec}.dialog .eyebrow{display:none}
@keyframes page-enter{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@keyframes dialog-enter{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}@keyframes veil-enter{from{opacity:0}to{opacity:1}}
@media(max-width:1100px){.dashboard-main-grid{grid-template-columns:1fr}.dashboard-metrics .metric>strong{font-size:1.65rem}.workspace main{padding:18px 22px}.stage-panel .section-heading select{max-width:350px}.repayment-panel .repayment-row{padding:15px 0}}
@media(max-width:600px){.workspace main{padding:14px 12px}.dashboard-toolbar{align-items:flex-start}.dashboard-toolbar>.muted{display:none}.month-control{gap:4px}.month-control input{font-size:.9rem;max-width:145px}.dashboard-metrics{gap:10px}.dashboard-metrics .metric{padding:14px 12px}.dashboard-metrics .metric>strong{font-size:1.2rem;margin-bottom:12px}.dashboard-metrics .metric-label{font-size:.73rem;gap:5px}.dashboard-metrics .metric-label svg{width:18px}.dashboard-metrics .metric-foot{font-size:.65rem}.dashboard-metrics .metric>small{font-size:.61rem;flex-wrap:wrap;line-height:1.5}.stage-stats{gap:6px;margin:18px 0}.stage-stats strong{font-size:1rem}.stage-stats small{font-size:.66rem}.stage-deadline{font-size:.73rem}.stage-bottom{flex-wrap:wrap;font-size:.66rem}.repayment-panel .repayment-row>b{font-size:.9rem}.panel{padding:16px 13px}.visual-progress{height:7px}.todo-content strong{font-size:.79rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Completion remains editable and readable, while its financial colours are muted. */
.todo-row.done{background:#f0f1f3;color:#818793}.todo-row.done .todo-content strong,.todo-row.done small{color:#818793!important}.todo-row.done .event-dot{background:#a3a7ae!important}.todo-row.done .checkbox{background:#9298a1;border-color:#9298a1;color:white}
.compact-year tr.is-completed td,.compact-year tr.is-completed td button{color:#858b95!important;background:#f0f1f3!important}.compact-year tr.is-completed .pill{background:#dfe2e7!important;color:#727984!important}.compact-year tr.is-completed .col-title{border-left-color:#a7adb6!important}
.continuous-calendar .continuous-event.is-completed{background:#e2e5e9!important;border-color:#939aa5!important;color:#777e89!important;opacity:1}.continuous-calendar .continuous-event.is-completed .calendar-amount{color:#777e89!important}
.event-detail.is-completed h2{color:#818793}.event-detail.is-completed .event-category{color:#737a85!important;background:#e2e5e9!important}
.event-detail .supplement-grid{margin:20px 0;gap:15px}.event-detail .supplement-field{display:flex;flex-direction:column;gap:7px;font-size:.78rem;color:#617085}.event-detail .supplement-field input{width:100%;min-width:0;padding:10px 12px;background:#fff;border:1px solid #cdd7e4;border-radius:8px;color:#183853;cursor:text}.event-detail .supplement-field input::placeholder{color:#96a3b3}.event-detail .supplement-field input:focus{outline:2px solid #b7d3f4;border-color:#4f82bc}.event-detail .supplement-field small{font-size:.65rem;color:#7386a0}.event-detail .supplement-grid p{margin:6px 0 0}.event-detail .calculation-details{margin-bottom:18px}

.data-caption{font-size:12px;color:var(--muted);line-height:1.7;margin:0 0 16px}.income{color:#238363!important}.outgoing{color:#af414b!important}.compact-year{padding:0!important;overflow:visible}.compact-year .table-scroll{max-height:70vh;border-radius:12px;min-height:320px}.compact-year table{font-size:11px;border-collapse:separate;border-spacing:0}.compact-year th{font-size:10px;padding:12px 9px;white-space:nowrap;z-index:5}.compact-year td{padding:9px!important;white-space:nowrap;height:40px;font-variant-numeric:tabular-nums}.compact-year .col-title{min-width:260px;max-width:340px;white-space:normal}.compact-year td.col-title{background:color-mix(in srgb,var(--row-color) 70%,white)!important;border-left:3px solid color-mix(in srgb,var(--row-color) 60%,#76541c);font-weight:600;line-height:1.5}.compact-year .col-title button{text-align:left;padding:0}.compact-year .col-cash{border-left:2px solid #b9c5d4}.compact-year .col-notes{white-space:normal;min-width:280px;max-width:340px;font-size:10px;line-height:1.6;color:#7b8797}.compact-year td:not(.col-title):not(.col-category):not(.col-notes){font-size:11px}.compact-year .pill{font-size:9px;padding:3px 5px}.category-filter{position:relative}.category-filter>button{display:flex;align-items:center;gap:8px}.filter-active{color:#a37719}.category-popover{position:absolute;top:27px;left:0;z-index:30;min-width:210px;padding:13px;background:white;border:1px solid #e4e8ef;border-radius:10px;box-shadow:0 12px 35px #1c365427;opacity:0;visibility:hidden;transform:translateY(-5px);transition:opacity .18s,transform .18s,visibility .18s;max-height:280px;overflow:auto}.category-popover.is-open{opacity:1;visibility:visible;transform:translateY(0)}.category-popover label{display:flex;flex-direction:row;align-items:center;font-size:11px;padding:7px 1px;margin:0;gap:9px}.category-popover input{width:14px;height:14px}.filter-actions{display:flex;justify-content:space-between;border-bottom:1px solid #edf0f5;padding-bottom:9px;margin-bottom:5px;color:#3c6ca5}.debt-overview{display:grid;grid-template-columns:1fr 1fr;gap:20px}.debt-total{background:#18334f!important;color:white;padding:27px!important}.debt-total>strong{display:block;font-size:34px;letter-spacing:-1px;margin:12px 0}.debt-total p{font-size:12px;opacity:.85}.debt-total>small{opacity:.7;font-size:11px}.debt-structure{display:flex;align-items:center;gap:25px;justify-content:center}.debt-donut{width:136px;height:136px;border-radius:50%;padding:17px;flex-shrink:0}.debt-donut>div{background:white;border-radius:50%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.debt-donut small{font-size:10px;color:var(--muted)}.debt-donut b{font-size:23px;margin-top:4px}.debt-legend{display:flex;gap:9px;align-items:center;font-size:11px;margin:15px 0;white-space:nowrap}.debt-legend i{height:8px;width:8px;border-radius:50%}.debt-legend b{margin-left:14px;font-variant-numeric:tabular-nums}.debt-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px}.debt-card{--debt-color:#923a43;--debt-bg:#fcf7f7;background:var(--debt-bg);border:1px solid color-mix(in srgb,var(--debt-color) 20%,white);border-top:3px solid var(--debt-color);border-radius:12px;padding:20px;text-align:left;transition:transform .18s,box-shadow .18s;min-width:0}.debt-card:hover{transform:translateY(-3px);box-shadow:0 10px 24px #1434540d}.debt-kind-m{--debt-color:#a7811c;--debt-bg:#fcf9ef}.debt-card-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:21px;gap:10px}.debt-card-heading h3{font-size:13px;color:var(--debt-color)}.debt-card-heading>span{font-size:17px;color:var(--debt-color)}.debt-card>small{font-size:10px;color:#8b8590;display:block}.debt-card>strong{display:block;font-size:24px;letter-spacing:-.6px;margin:4px 0 18px;color:var(--debt-color)}.debt-principal{display:flex;justify-content:space-between;gap:10px}.debt-principal small{display:block;font-size:10px;color:var(--muted)}.debt-principal b{display:block;font-size:13px;margin-top:4px}.debt-progress{height:5px;background:#00000008;border-radius:10px;margin:14px 0 6px;overflow:hidden}.debt-progress i{display:block;background:var(--debt-color);height:100%;border-radius:10px;transition:width .7s ease}.debt-next{margin-top:15px;padding-top:12px;border-top:1px solid #00000009;display:flex;justify-content:space-between;gap:9px;align-items:center;font-size:11px}.debt-next span b{display:block;font-weight:500;color:#7c8794;margin-top:4px}.debt-next>b{font-size:14px}.debt-kind-card{--debt-color:#437bc5;--debt-bg:#f5f8fd}.data-chart{display:flex;gap:20px;min-height:220px;height:220px;padding:30px 8px 0;overflow-x:auto;background:repeating-linear-gradient(to top,transparent 0,transparent 46px,#edf0f5 47px,#edf0f5 48px);margin:10px 0 15px}.data-chart-column{flex:1;min-width:54px;text-align:center;display:flex;flex-direction:column}.data-chart-bars{height:165px;display:flex;gap:5px;align-items:flex-end;justify-content:center}.data-chart-bar{width:28%;max-width:44px;min-width:10px;border-radius:5px 5px 0 0;position:relative;animation:data-bar-in .6s ease both;transform-origin:bottom}.data-chart-bar>span{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);font-size:9px;white-space:nowrap;padding-bottom:4px;color:#708197;opacity:0;transition:opacity .15s}.data-chart-column:hover .data-chart-bar>span{opacity:1}.data-chart-column>small{font-size:10px;margin-top:12px;color:#8592a3}.spend-metrics{grid-template-columns:repeat(2,minmax(0,1fr))!important}.spend-personal{border-top:3px solid #537ac2!important;background:#f7f9ff!important}.spend-school{border-top:3px solid #c8a04b!important;background:#fffcf4!important}.spend-metrics .metric>strong{font-size:31px}.school-cost-chart{margin-bottom:24px}.school-cost-chart>.legend{justify-content:flex-end}@keyframes data-bar-in{from{transform:scaleY(0)}to{transform:scaleY(1)}}@media(min-width:1100px){.compact-year .col-month{position:sticky;left:0;min-width:76px;width:76px;background:white;z-index:3}.compact-year .col-start{position:sticky;left:76px;min-width:96px;width:96px;background:white;z-index:3}.compact-year .col-end{position:sticky;left:172px;min-width:96px;width:96px;background:white;z-index:3}.compact-year .col-title{position:sticky;left:268px;z-index:3;background:white;box-shadow:3px 0 5px #12274807}.compact-year th.col-month,.compact-year th.col-start,.compact-year th.col-end,.compact-year th.col-title{z-index:8;background:#f7f9fc}}@media(max-width:1100px){.debt-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.debt-overview{grid-template-columns:1fr}.debt-structure{justify-content:flex-start}}@media(max-width:600px){.debt-card-grid,.spend-metrics{grid-template-columns:1fr!important}.debt-structure{gap:15px;padding:18px!important}.debt-donut{width:110px;height:110px;padding:14px}.debt-legend{font-size:10px;gap:6px}.debt-legend b{margin-left:0}.data-chart{gap:12px}.compact-year .table-scroll{max-height:68vh}.debt-total>strong{font-size:29px}}@media(prefers-reduced-motion:reduce){.data-chart-bar{animation:none}.debt-card,.debt-progress i,.category-popover{transition:none}}

@media(max-width:1099px){.compact-year td:first-child,.compact-year th:first-child{position:static;left:auto}.compact-year th{position:sticky;top:0}}

.data-chart-column.is-interactive{cursor:pointer;border-radius:6px;transition:background .18s}.data-chart-column.is-interactive:hover,.data-chart-column.is-selected{background:#436c9f10}.data-chart-column.is-selected>small{color:#245f9f;font-weight:700}.data-chart-column.is-selected .data-chart-bar>span{opacity:1}.data-chart-column:focus-visible{outline:2px solid #70a8ef;outline-offset:3px}.chart-selection{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:11px;color:var(--muted)}.data-scope{margin-bottom:18px;color:var(--muted);font-size:12px}.data-scope summary{cursor:pointer;width:fit-content;padding:6px 0}.data-scope p{padding:12px 15px;background:#f5f7fa;border-radius:8px;margin-top:5px;font-size:12px}

.continuous-calendar{--income:#bceace;--debt:#ffd0c9;--spending:#ffe2b1;--action:#d5d8ff}.calendar-controls{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.calendar-controls>div{display:flex;gap:14px}.calendar-controls label{font-size:12px;gap:6px;margin:0}.calendar-controls input{font-size:13px;min-height:38px;padding:7px 10px}.calendar-controls>span{font-size:12px;color:#687990}.calendar-key{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:16px;font-size:12px;color:#4c6078}.calendar-key span{display:flex;align-items:center;gap:7px}.calendar-key i{width:10px;height:10px;border-radius:3px}.continuous-calendar .income{background:var(--income);color:#164f35}.continuous-calendar .debt{background:var(--debt);color:#802a26}.continuous-calendar .spending{background:var(--spending);color:#714812}.continuous-calendar .action{background:var(--action);color:#393774}.calendar-frame{position:relative}.calendar-viewport{position:relative;height:min(720px,72vh);min-height:380px;overflow:auto;border:1px solid #d5deea;border-radius:12px;background:white;scrollbar-gutter:stable;overscroll-behavior:contain;overflow-anchor:none}.calendar-sticky-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));position:sticky;top:0;z-index:6;height:46px;align-items:center;text-align:center;background:#edf2f9;border-bottom:1px solid #d5deea;color:#4d617b;font-size:12px;font-weight:650;box-shadow:0 2px 8px #193a6410}.calendar-sticky-days span:nth-last-child(-n+2){color:#886751}.continuous-week{height:170px;border-bottom:1px solid #dce4ed;background:repeating-linear-gradient(to right,transparent 0,transparent calc(100% / 7 - 1px),#e8edf4 calc(100% / 7 - 1px),#e8edf4 calc(100% / 7));position:relative}.continuous-days,.continuous-overflow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.continuous-days{height:36px}.continuous-days button{display:flex;align-items:center;justify-content:flex-end;gap:5px;padding:3px 8px;font-size:12px}.continuous-days small{margin-right:auto;font-size:10px;color:#8291a5}.continuous-days b{font-weight:550;min-width:23px;height:25px;display:grid;place-items:center}.continuous-days .is-today{background:#e2edff;box-shadow:inset 0 3px #2767cd;color:#1752a5}.continuous-days .is-today b{background:#2363b6;color:white;border-radius:50%;font-weight:750}.continuous-days em{font-size:10px;font-style:normal}.continuous-bars{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:repeat(4,24px);gap:3px 0;padding:2px 0}.continuous-event{display:block;min-width:0;margin:0 3px;border-radius:4px;padding:3px 6px;font-size:11px;line-height:18px;text-align:left;border-left:3px solid currentColor;overflow:hidden}.continuous-event>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.continuous-event:hover{filter:brightness(.95);box-shadow:0 1px 4px #1d35542a}.continuous-event.from-previous{border-left:0;margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.continuous-event.to-next{margin-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.continuous-event.is-completed{text-decoration:line-through;text-decoration-color:currentColor}.calendar-amount{font-weight:750;font-variant-numeric:tabular-nums}.calendar-amount.positive{color:#076535}.calendar-amount.negative{color:#a52b24}.continuous-overflow{height:22px}.continuous-overflow button{font-size:11px;padding:3px 7px;color:#285c9c;font-weight:650}.calendar-load{display:flex;align-items:center;justify-content:center;gap:5px;width:100%;padding:11px;font-size:12px;color:#496b92;background:#f6f8fc}.calendar-load-before{height:34px;padding:6px}.calendar-return{position:absolute;left:12px;top:53px;z-index:8;display:flex;align-items:center;gap:6px;padding:10px 13px;border:1px solid #cad8eb;border-radius:22px;background:#fff;color:#205aab;font-size:12px;font-weight:650;box-shadow:0 4px 18px #15396026}@media(max-width:600px){.calendar-controls{align-items:flex-start;flex-direction:column;gap:9px}.calendar-controls>div{width:100%;gap:9px}.calendar-controls label{flex:1;min-width:0}.calendar-controls input{width:100%;font-size:12px}.calendar-controls>span{font-size:11px}.calendar-key{gap:9px 14px;font-size:10px}.calendar-viewport{height:66vh;min-height:390px;border-radius:8px}.continuous-days button{padding:3px;gap:1px;flex-wrap:wrap}.continuous-days small{font-size:9px}.continuous-days em{display:none}.continuous-event{font-size:10px;padding:3px;margin:0 1px;border-left-width:2px}.continuous-overflow button{padding:3px;font-size:10px}.continuous-overflow button span{display:none}.calendar-sticky-days{font-size:11px}.calendar-return{left:6px;padding:8px 10px}}
/* Keep the monetary value readable even when the event title is truncated. */
.continuous-event{display:flex;align-items:center;gap:3px}.continuous-event>.calendar-event-title{flex:1;min-width:0}.continuous-event>.calendar-amount{flex:none;max-width:100%;overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;font-size:10px;line-height:11px}@media(max-width:600px){.continuous-bars{grid-template-rows:repeat(4,38px)}.continuous-week{height:226px}.continuous-event{gap:0;padding:2px}.continuous-event>.calendar-amount{font-size:8px;line-height:10px}}
.continuous-event>.calendar-amount::before{content:'（'}.continuous-event>.calendar-amount::after{content:'）'}
@media(max-width:600px){.continuous-event{flex-direction:column;align-items:stretch;justify-content:center;gap:2px}.continuous-event>.calendar-event-title{flex:none;width:100%;font-size:9px;line-height:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.continuous-event>.calendar-amount{flex:none;width:100%;font-size:7.5px;line-height:11px;white-space:nowrap;overflow-wrap:normal;letter-spacing:-.25px}.continuous-event>.calendar-amount::before,.continuous-event>.calendar-amount::after{content:none}}

.topbar{height:auto!important;min-height:76px;flex-wrap:wrap;gap:12px 24px;padding-top:14px!important;padding-bottom:14px!important}.breadcrumb{flex-shrink:0;white-space:nowrap}.topbar-tool-slot{flex:1 1 280px;min-width:0}.topbar-tool-slot:empty{display:none}.page-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.top-actions{margin-left:auto;flex-shrink:0}.page-tools label{display:flex;align-items:center;gap:6px;font-size:12px}.page-tools select,.page-tools input{min-height:34px;max-width:180px;padding:6px 9px}.page-tools>button,.picker-trigger{min-height:34px}.page-tools .toolbar-detail{background:#e9eef6;color:#243e61;border:1px solid #cfdaeb;border-radius:7px;padding:7px 11px;display:flex;align-items:center;gap:6px}.compact-picker{position:relative}.picker-trigger{display:flex;align-items:center;gap:8px;border:1px solid #dce2ea;background:#fff;border-radius:7px;padding:6px 9px;color:#24384f;font-size:12px;white-space:nowrap}.picker-trigger span{color:#607087}.picker-popover{position:absolute;top:calc(100% + 8px);left:0;width:266px;padding:12px;background:white;border:1px solid #dce4ef;border-radius:12px;box-shadow:0 12px 32px #18345226;z-index:90;animation:picker-enter 180ms ease-out}.picker-heading,.picker-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.picker-heading button,.picker-grid button,.picker-footer button{border:0;background:transparent;border-radius:6px;min-height:32px;color:#334a65}.picker-grid{display:grid;gap:4px;margin:10px 0}.picker-grid.month{grid-template-columns:repeat(3,1fr)}.picker-grid.date,.picker-week{grid-template-columns:repeat(7,1fr)}.picker-week{display:grid;text-align:center;font-size:11px;color:#7a8799;margin-top:12px}.picker-grid button:hover{background:#edf3fb}.picker-grid button[data-selected=true]{background:#294e7e;color:white}.picker-footer{border-top:1px solid #e8edf4;padding-top:6px;font-size:12px}.picker-popover button:focus-visible,.picker-trigger:focus-visible{outline:2px solid #416ca4;outline-offset:2px}.year-table tr.today-range td:nth-child(-n+3){background:#e7f1ff!important;border-bottom-color:#d6e5f8!important;color:#234974!important}.today-marker{display:inline-block;margin-left:5px;font-size:10px;background:#cbdff8;color:#24517d;padding:1px 4px;border-radius:3px}.year-table tr.today-range.is-completed td:nth-child(n+4){color:#9299a2}.toolbar-count{color:#7b889b;font-size:12px}.calendar-key{margin-top:0!important}@keyframes picker-enter{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1100px){.topbar .date-label{display:none}}@media(max-width:900px){.topbar{gap:10px 14px}.topbar-tool-slot{flex-basis:100%;order:3}.top-actions{margin-left:auto}.topbar .date-label{display:none}.picker-popover{position:fixed;top:140px;left:50%;transform:translateX(-50%);animation:picker-enter-mobile 180ms ease-out}.page-tools{gap:7px}.page-tools .toolbar-detail{font-size:12px}}@keyframes picker-enter-mobile{from{opacity:0;translate:0 -6px}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:reduce){.picker-popover{animation:none}}
.page-tools label{flex-direction:row;margin-top:0}.page-tools .search-input{max-width:180px}.topbar{position:relative;z-index:20}@media(max-width:900px){.topbar .mobile-logo{display:none}.topbar .breadcrumb{display:flex;font-size:0;gap:0}.topbar .breadcrumb svg{display:none}.topbar .breadcrumb b{font-size:13px}.topbar .top-actions{gap:6px}.topbar .top-actions>.text-button{padding-left:8px;font-size:12px}}
/* Calendar pages fill the available screen below their wrapping toolbar. */
.workspace:has(.compact-year,.continuous-calendar){height:100dvh;display:flex;flex-direction:column}
.workspace:has(.compact-year,.continuous-calendar)>.topbar{flex:none}
.workspace:has(.compact-year,.continuous-calendar)>main{flex:1;min-height:0;width:100%;margin:0 auto;padding-bottom:8px;display:flex;flex-direction:column}
.workspace:has(.compact-year,.continuous-calendar) .page-content{flex:1;min-height:0;display:flex;flex-direction:column}
.compact-year{flex:1;min-height:0;display:flex;flex-direction:column;margin-bottom:6px}
.compact-year .table-scroll{flex:1;min-height:0;max-height:none!important;height:100%}
.page-content:has(.compact-year)>p.muted{margin:0;font-size:10px;line-height:16px}
.continuous-calendar{flex:1;min-height:0;display:flex;flex-direction:column}
.continuous-calendar .calendar-key{flex:none;margin-bottom:10px}
.continuous-calendar .calendar-frame{flex:1;min-height:0}
.continuous-calendar .calendar-viewport{height:100%;min-height:0}
.picker-popover{width:228px;padding:9px;border-radius:9px;font-size:12px}
.picker-heading strong{font-size:12px}
.picker-heading button,.picker-grid button,.picker-footer button{font-size:12px;min-height:27px;padding:3px 5px}
.picker-grid{gap:2px;margin:7px 0}.picker-week{font-size:10px;margin-top:8px}
.page-tools .toolbar-detail{font-size:12px;font-weight:500;transition:background-color .16s,border-color .16s,transform .16s,box-shadow .16s}
.page-tools .toolbar-detail:hover{background:#dce7f6;border-color:#afc4df;transform:translateY(-1px);box-shadow:0 3px 8px #25466c12}
.page-tools .toolbar-detail:active{transform:translateY(0) scale(.97);background:#cbdcf0}
.page-tools .search-input input{padding-left:9px}
.picker-trigger:hover{background:#f1f5fb;border-color:#bacce2}.picker-trigger:active,.picker-popover button:active{transform:scale(.97)}
@media(prefers-reduced-motion:reduce){.toolbar-detail,.picker-trigger,.picker-popover button{transition:none!important;transform:none!important}}

.v15{--blue:#0739bb;--navy:#0b192c;--muted:#64748b;--line:#e5ebf2;font-family:Inter,'Microsoft YaHei',system-ui,sans-serif;background:#f0f4f9;color:#182538;min-height:100vh;font-size:14px;line-height:1.6}
.v15 *{box-sizing:border-box}
.v15 button,.v15 input,.v15 select,.v15 textarea{font:inherit}
.v15 button{cursor:pointer;border:1px solid var(--line);border-radius:9px;background:#fff;color:inherit;padding:8px 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;line-height:1.5}
.v15 button:hover{background:#eaf0ff;border-color:#c9d5f0}
.v15 button:disabled{opacity:.55;cursor:wait}
.v15 button:focus-visible,.v15 input:focus-visible,.v15 select:focus-visible,.v15 textarea:focus-visible{outline:2px solid #416de7;outline-offset:3px}
.v15 input,.v15 textarea,.v15 select{border:1px solid #dce3ed;border-radius:8px;padding:8px 10px;background:#f8fafd;color:#1c2c41;min-width:0}
.v15 input[type=checkbox]{width:17px;height:17px;accent-color:var(--blue)}
.v15 h1,.v15 h2,.v15 h3,.v15 p{margin:0}
.v15 h1{font-size:25px;line-height:1.4}
.v15 h2{font-size:17px}
.v15 h3{font-size:15px}
.v15 small{font-size:12px}
.v15 a{color:var(--blue)}
.v15 .v-primary{background:var(--blue);border-color:var(--blue);color:#fff;border-radius:22px;padding:9px 18px}
.v15 .v-primary:hover{background:#244ecd}
.v15 .v-secondary{background:#f0f4ff;color:var(--blue);border-color:#dce5ff}
.v15 .v-link{border:0;background:none;color:var(--blue);padding:4px;font-size:13px}
.v15 .v-danger{color:#b52932;border-color:#f2c5c8;background:#fff6f6}
.v15 .v-icon{padding:7px;border:0;background:transparent}
.v15 .v-avatar{width:34px;height:34px;border-radius:50%;background:var(--blue);color:white;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:0}
.v-top-actions{display:flex;align-items:center;gap:12px}
.v-top-actions>span{font-size:12px;color:var(--muted)}
.v-main{padding:26px 30px;max-width:1900px;margin:auto}
.v-main>footer{text-align:center;font-size:11px;color:#94a0b1;padding:35px 0 10px}
.v-card{background:#fff;border:1px solid #e9edf4;border-radius:16px;padding:22px;box-shadow:0 2px 3px #12284a02;margin-bottom:20px;min-width:0}
.v-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:17px}
.v-card-head h2{display:flex;align-items:center;gap:9px}
.v-card-head h2>svg{color:var(--blue)}
.v-card-head>span{font-size:12px;color:var(--muted)}
.v-card-head input{max-width:170px;font-size:12px}
.v-muted{color:var(--muted);font-size:12px}
.v-note{color:var(--muted);font-size:12px;line-height:1.7;margin-top:12px!important}
.v-empty{padding:40px 16px;text-align:center;color:#7a889a;font-size:13px}
.v-home-top{display:grid;grid-template-columns:1.6fr 1fr;gap:20px}
.v-cash-card{border-radius:16px;background:linear-gradient(120deg,#0b2348,#12377a);color:white;padding:25px;margin-bottom:20px}
.v-cash-card>div:first-child{display:flex;gap:10px;align-items:center;font-size:13px;color:#c6d6ee}
.v-cash-card>strong{display:block;font-size:34px;letter-spacing:-.03em;margin:13px 0 5px;font-variant-numeric:tabular-nums}
.v-cash-card>p{font-size:11px;color:#9fb4d1}
.v-cash-bottom{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #ffffff20;margin-top:20px;padding-top:15px}
.v-cash-bottom>span{font-size:11px;color:#afc2df}
.v-cash-bottom strong{display:block;font-size:18px;color:white;margin-top:5px}
.v15 .v-cash-card>button{margin-top:20px;color:#c8d9f7;border:0;background:#ffffff10;font-size:12px;width:100%;justify-content:space-between}
.v-risk{display:flex;gap:12px;align-items:center;background:#fff5f3;border:1px solid #f4d5d0;color:#a3362c;border-radius:12px;padding:14px 18px;margin-bottom:20px}
.v-risk>svg{flex-shrink:0}
.v-risk strong,.v-risk span{display:block}
.v-risk strong{font-size:14px}
.v-risk span{font-size:12px;margin-top:3px}
.v-risk button{margin-left:auto;white-space:nowrap;font-size:12px}
.v-task-list{display:grid}
.v-task{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid #eef1f6;align-items:flex-start}
.v-task:last-child{border-bottom:0}
.v15 .v-check{width:20px;height:20px;flex-shrink:0;border-radius:5px;padding:0;margin-top:2px;border-color:#c6cfdd}
.v15 .v-check.checked{background:var(--blue);color:#fff;border-color:var(--blue)}
.v15 .v-task-body{padding:0;border:0;display:block;text-align:left;flex:1;min-width:0;background:transparent}
.v-task-body strong{display:block;font-size:14px;font-weight:600;overflow-wrap:anywhere}
.v-task-body>span{display:flex;flex-wrap:wrap;gap:8px;align-items:center;color:var(--muted);font-size:11px;margin-top:4px}
.v-task-body small{display:block;font-size:11px;color:#91a0b3;margin-top:5px;max-height:36px;overflow:hidden}
.v-task-body em{font-size:10px;font-style:normal;color:#5872a0}
.v-task.done strong{text-decoration:line-through;color:#94a0b2}
.v-overdue{color:#bb4545;font-size:10px;font-weight:500;background:#fff0f0;padding:0 5px;border-radius:3px}
.v-badge{display:inline-flex;align-items:center;justify-content:center;background:#eaf0ff;color:var(--blue);border-radius:10px;padding:0 7px;font-size:11px}
.v-section-title{display:flex;align-items:center;justify-content:space-between;margin:10px 0 16px}
.v-section-title span{font-size:11px;color:var(--muted)}
.v-period{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin:16px 0 20px}
.v-tabs{display:inline-flex;background:#e5ebf3;border-radius:24px;padding:4px;gap:2px;margin-bottom:18px;max-width:100%;overflow-x:auto;white-space:nowrap}
.v15 .v-tabs button{border:0;border-radius:22px;background:transparent;color:#607088;font-size:13px;font-weight:600;padding:7px 18px;white-space:nowrap}
.v15 .v-tabs button.selected{background:var(--blue);color:white;box-shadow:0 2px 4px #0d3bb328}
.v-period .v-tabs,.v-toolbar .v-tabs{margin-bottom:0}
.v-period-picker{display:flex;align-items:center;background:#fff;border-radius:10px;padding:2px}
.v15 .v-period-picker button{border:0;padding:5px}
.v-period-picker input{border:0;background:transparent;max-width:145px;font-size:12px}
.v-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.v-kpi{font-size:27px;font-weight:700;letter-spacing:-.04em;margin:10px 0 15px;font-variant-numeric:tabular-nums}
.v-kpi small{font-size:12px;font-weight:400;color:var(--muted);letter-spacing:0}
.v-progress{height:5px;background:#edf1f8;border-radius:5px;margin:10px 0 18px;overflow:hidden}
.v-progress i{display:block;height:100%;background:var(--blue);border-radius:5px}
.v15 dl{margin:18px 0 10px;font-size:12px}
.v15 dl>div{display:flex;justify-content:space-between;gap:10px;margin:10px 0}
.v15 dt{color:var(--muted)}
.v15 dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums}
.v-quality{background:#f8fafd;border-style:dashed}
.v-quality h3{margin-bottom:9px}
.v-quality p{font-size:12px;color:var(--muted);margin:5px 0}
.v-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 18px}
.v-toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.v-toolbar input,.v-toolbar select{font-size:12px;background:#fff;max-width:200px}
.v-toolbar>div>p{margin-top:5px}
.v-calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,270px);gap:20px}
.v-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;color:#64748b;font-size:12px;margin:10px 0}
.v-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.v-days>div{min-height:125px;background:#f2f5fa;border:1px solid transparent;border-radius:10px;padding:8px;cursor:pointer;min-width:0}
.v-days>div.rest-day{background:#e8f1fc}.v-days>div.rest-day .v-day-number{color:#5b81b8}.v-days>div.rest-day.selected{background:#deebfb}.v-days>div.selected{border:2px solid #7d9bdc;background:#f7faff;padding:7px}
.v-days>div.outside{opacity:.4}
.v-day-number{font-weight:600;font-size:13px;margin-bottom:5px;display:flex;gap:3px;flex-wrap:wrap}
.v-day-number small{font-size:9px;color:#bf3939}
.v-days>div.today .v-day-number{color:var(--blue)}
.v15 .v-days button{display:block;text-align:left;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:4px;width:100%;border:0;background:#e1eafd;border-radius:4px;margin-bottom:4px}
.v-days button.done{text-decoration:line-through;opacity:.6}
.v-days>div>small{font-size:10px;color:#526a99}
.v-finance-summaries{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.v-finance-summaries .v-card{padding:16px}
.v-finance-summaries input{max-width:135px}
.v-small-stats{display:flex;justify-content:space-between;gap:8px}
.v-small-stats span{color:var(--muted);font-size:11px}
.v-small-stats strong{display:block;color:#172943;font-size:15px;margin-top:5px;font-variant-numeric:tabular-nums}
.v-table-card{padding:0;overflow:hidden}
.v-table-card>.v-card-head{padding:18px 20px;margin:0}
.v-table-card>.v-note{padding:0 20px 10px}
.v-table-scroll{overflow:auto;max-height:72vh}
.v15 .v-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;text-align:left;white-space:nowrap}
.v-table th{position:sticky;top:0;background:#f3f6fb;padding:13px 16px;color:#5d6c80;font-size:11px;font-weight:600;border-bottom:1px solid #dde5ee;z-index:3}
.v-table td{padding:14px 16px;border-bottom:1px solid #edf0f5;font-variant-numeric:tabular-nums;vertical-align:top}
.v-table tr:last-child td{border-bottom:0}
.v-table tr:hover td{background:#f8faff}
.v-table td strong{display:block;max-width:320px;white-space:normal}
.v-table td small{display:block;color:var(--muted);font-size:10px;max-width:300px;white-space:normal;margin:4px 0}
.v-cash-table th:not(:first-child):not(:last-child),.v-cash-table td:not(:first-child):not(:last-child){text-align:right}
.v-cash-table th:first-child,.v-cash-table td:first-child{position:sticky;left:0;background:#fff;min-width:190px;max-width:245px;z-index:2;box-shadow:1px 0 #e5ebf2}
.v-cash-table th:first-child{background:#f3f6fb;z-index:4}
.v-cash-table td:first-child strong{font-size:12px;margin-top:5px}
.v-target{background:#f3f6ff;color:#1742a7;font-weight:600}
.v-money.negative{color:#ba3b3b}
.v-money.positive{color:#087d69}
.v-tag{display:inline-block;background:#eef2f8;color:#66738a;font-size:10px;padding:2px 7px;border-radius:5px}
.v-tag.green{background:#e8f8f1;color:#14815f}
.v-tag.amber{background:#fff3df;color:#9d6b20}
.v-status-actions{display:flex;align-items:flex-start;flex-direction:column;gap:5px}
.v-status-actions details{max-width:250px;white-space:normal;color:var(--muted);font-size:10px}
.v-status-actions summary{cursor:pointer}
.v-subtotal td{background:#eaf0f9!important;font-weight:600;font-size:11px}
.v15 .v-edit-value{border:0;background:none;padding:0;white-space:nowrap;color:var(--blue);font-size:12px}
.v-edit-value span{font-size:9px;opacity:.5}
.v-inline-edit{display:flex;flex-wrap:wrap;gap:4px;width:160px}
.v-inline-edit input{font-size:11px;width:100%;padding:5px}
.v-inline-edit button{padding:3px}
.v-inline-edit small{color:#bd3434}
.v-budget-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
.v15 .v-budget{display:block;text-align:left;background:#f7f9fc;padding:16px}
.v-budget>span,.v-budget>strong,.v-budget>small{display:block}
.v-budget>strong{font-size:22px;margin:6px 0}
.v-budget small{font-size:11px;color:var(--muted)}
.v-debt-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.v-selected-card{border-color:#7e9cdd}
.v-total{font-size:23px;color:var(--blue)}
.v15 .v-load{display:flex;margin:20px auto}
.v-metric-strip{display:grid;grid-template-columns:repeat(4,1fr);background:white;border:1px solid var(--line);border-radius:14px;padding:23px;margin:20px 0;gap:20px}
.v-metric-strip span{font-size:12px;color:var(--muted)}
.v-metric-strip strong{font-size:23px;display:block;margin-top:7px}
.v-day-details{border-bottom:1px solid var(--line);padding:14px 0}
.v-day-details summary{display:flex;justify-content:space-between;cursor:pointer;font-size:13px}
.v-day-details>div{display:flex;justify-content:space-between;font-size:12px;padding:10px;background:#f6f8fc}
.v-bars>div{display:grid;grid-template-columns:180px 1fr 100px;gap:15px;margin:16px 0;font-size:12px;align-items:center}
.v-bars>div>div{height:12px;background:#edf1f8;border-radius:4px;overflow:hidden}
.v-bars i{display:block;height:100%;background:#2352cf}
.v-operation{display:flex;align-items:center;gap:15px;padding:20px 0;border-bottom:1px solid var(--line)}
.v-operation>div:nth-child(2){flex:1}
.v-operation strong,.v-operation span,.v-operation small{display:block}
.v-operation span,.v-operation small{font-size:12px;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}
.v-operation>button,.v-operation>a{margin-left:auto}
.v-op-icon{display:flex;align-items:center;justify-content:center;border-radius:10px;background:#eaf0ff;color:var(--blue);width:40px;height:40px;flex-shrink:0}
.v-audit{border-bottom:1px solid var(--line);padding:16px 0}
.v-audit summary{display:flex;align-items:center;gap:13px;cursor:pointer}
.v-audit summary>div{flex:1}
.v-audit summary small{display:block;font-size:11px;color:var(--muted);margin-top:4px}
.v-audit-content{padding:20px 0}
.v-diff{font-size:12px;border-bottom:1px solid var(--line);padding:12px 0;overflow-wrap:anywhere}
.v-diff summary{cursor:pointer}
.v-diff>div{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
.v-diff pre{white-space:pre-wrap;word-break:break-all;font-size:11px;max-height:220px;overflow:auto;background:#f1f5fa;padding:12px;border-radius:8px;margin:0}
.v-overlay{position:fixed;inset:0;background:#08172b70;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}
.v-modal{background:white;border-radius:18px;width:520px;max-width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px #06162d40;outline:0}
.v-modal.wide{width:850px}
.v-modal>header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:18px 24px;background:#fff;border-bottom:1px solid var(--line);z-index:2}
.v-form{padding:22px 24px}
.v-field{display:flex;flex-direction:column;gap:7px;font-size:12px;margin-bottom:16px}
.v-field>span{font-weight:600;color:#46566d}
.v-field textarea{resize:vertical}
.v-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}
.v-checkbox{display:flex;align-items:center;gap:10px;font-size:12px;margin:12px 0}
.v-modal-actions{border-top:1px solid var(--line);padding-top:18px;margin-top:22px;display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.v-error{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #f1c5c5;background:#fff1f1;color:#b02c36;padding:12px 16px;border-radius:10px;font-size:13px;margin-bottom:16px}
.v-error button{font-size:11px;white-space:nowrap}
.v-preview-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}
.v-preview-summary>div{background:#f1f5fb;border-radius:10px;padding:16px}
.v-preview-summary span{color:var(--muted);font-size:12px}
.v-preview-summary strong{display:block;font-size:19px;margin-top:7px}
.v-preview-changes{max-height:42vh;overflow:auto}
.v-confirm-amount{display:flex;justify-content:space-between;padding:18px;background:#f0f5fd;border-radius:10px;margin-bottom:20px}
.v-confirm-amount strong{color:var(--blue);font-size:21px}
.v-settings-section{border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:20px}
.v-settings-section h3{margin-bottom:10px}
.v-settings-section p{font-size:12px;color:var(--muted);margin:8px 0}
.v-settings-section>button{margin:8px 8px 5px 0}
.v-token-row{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:11px;padding:8px 0}
.v-toast{position:fixed;top:90px;right:30px;z-index:80;background:#143c31;color:#fff;box-shadow:0 5px 20px #0a201f20;padding:12px 20px;border-radius:12px}
@media(min-width:1700px){.v-main{padding:30px 38px}
.v-card{padding:26px}
.v-table-card{padding:0}
}
@media(max-width:1200px){.v-main{padding:22px}
.v-top-actions>span{display:none}
.v-summary-grid,.v-debt-grid{gap:12px}
.v-card{padding:17px}
.v-table-card{padding:0}
.v-kpi{font-size:23px}
.v-calendar-layout{grid-template-columns:minmax(0,1fr)}
.v-days>div{min-height:110px}
.v-finance-summaries{grid-template-columns:1fr}
.v-finance-summaries .v-card{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:0}
.v-finance-summaries{margin-bottom:20px}
.v-finance-summaries .v-card-head{margin-bottom:0}
.v-small-stats{flex:1;justify-content:flex-end;gap:24px}
.v-metric-strip{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:900px){.v-summary-grid{grid-template-columns:1fr}
.v-summary-grid .v-card{margin-bottom:4px}
.v-debt-grid{grid-template-columns:repeat(2,1fr)}
.v-home-top{grid-template-columns:1fr 1fr}
.v-cash-card{padding:20px}
.v-cash-card>strong{font-size:27px}
.v-cash-bottom strong{font-size:16px}
.v-section-title{align-items:flex-start;gap:10px}
.v-section-title>span{max-width:220px;text-align:right}
}
@media(max-width:600px){.v15{font-size:14px}
.v-top-actions{gap:6px}
.v-top-actions>.v-primary{display:none}
.v-top-actions .v-icon{padding:6px}
.v-main{padding:18px 15px 24px}
.v-home-top{display:flex;flex-direction:column;gap:0}
.v-home-top .v-cash-card{order:-1}
.v-cash-card{padding:20px;border-radius:14px;margin-bottom:16px}
.v-cash-card>strong{font-size:34px}
.v-cash-bottom{margin-top:15px;padding-top:12px}
.v15 .v-cash-card>button{margin-top:13px}
.v-card{padding:18px;border-radius:14px;margin-bottom:16px}
.v-table-card{padding:0}
.v-card-head{margin-bottom:13px}
.v-card-head h2{font-size:16px}
.v-risk{padding:12px;gap:9px;flex-wrap:wrap}
.v-risk strong{font-size:12px}
.v-risk span{font-size:11px}
.v-risk>button{margin-left:30px;padding:4px 8px}
.v-task{padding:12px 0}
.v-task-body strong{font-size:14px}
.v-task-body small{font-size:11px}
.v-section-title{display:block;margin-top:12px}
.v-section-title>span{display:block;max-width:none;text-align:left;font-size:10px;margin-top:5px}
.v-period{gap:8px;margin:12px 0 16px}
.v-period>.v-muted{font-size:10px;width:100%}
.v-period .v-tabs button{padding:6px 13px;font-size:12px}
.v15 .v-tabs button{padding:7px 14px;font-size:12px}
.v-period-picker input{font-size:11px;width:125px}
.v-period-picker button{padding:3px!important}
.v-summary-grid{gap:12px}
.v-kpi{font-size:29px}
.v-quality p{font-size:11px}
.v-toolbar{gap:10px}
.v-toolbar-right{gap:8px;width:100%}
.v-toolbar input{max-width:160px}
.v-toolbar button{font-size:12px}
.v-toolbar-right input{flex:1;width:130px}
.v-calendar-layout{gap:0}
.v-calendar-layout>.v-card:first-child{padding:12px}
.v-days{gap:2px}
.v-days>div{min-height:84px;border-radius:6px;padding:4px}
.v-days>div.selected{padding:3px}
.v-day-number{font-size:12px}
.v15 .v-days button{font-size:9px;padding:2px}
.v-days>div>small{font-size:9px}
.v-weekdays{font-size:10px}
.v-finance-summaries{gap:8px}
.v-finance-summaries .v-card{display:block;padding:13px}
.v-finance-summaries .v-card-head{margin-bottom:8px}
.v-small-stats{justify-content:space-between;gap:7px}
.v-small-stats strong{font-size:15px}
.v-cash-table th:first-child,.v-cash-table td:first-child{min-width:140px;max-width:140px}
.v-table td{padding:12px}
.v-table th{padding:12px}
.v-cash-table td:first-child strong{font-size:12px}
.v-debt-grid{grid-template-columns:1fr;gap:0}
.v-total{font-size:20px}
.v-budget-grid{grid-template-columns:1fr}
.v-metric-strip{gap:18px;padding:18px}
.v-metric-strip strong{font-size:22px}
.v-bars>div{grid-template-columns:100px 1fr 65px;font-size:10px;gap:8px}
.v-operation{gap:10px;flex-wrap:wrap}
.v-operation .v-op-icon{width:30px;height:30px}
.v-operation>div:nth-child(2){min-width:200px}
.v-operation button{font-size:11px;margin-left:40px}
.v-operation small{font-size:10px}
.v-overlay{padding:0;align-items:flex-end}
.v-modal,.v-modal.wide{width:100%;max-height:94dvh;border-radius:18px 18px 0 0}
.v-modal>header{padding:16px 18px}
.v-modal>header h2{font-size:17px}
.v-form{padding:18px 18px max(24px,env(safe-area-inset-bottom))}
.v-form input,.v-form textarea,.v-form select{font-size:16px}
.v-form-grid{gap:0 10px}
.v-preview-summary{grid-template-columns:1fr;gap:8px}
.v-preview-summary>div{display:flex;justify-content:space-between;align-items:center;padding:10px 13px}
.v-preview-summary strong{font-size:16px;margin:0}
.v-diff>div{grid-template-columns:1fr}
.v-preview-changes{max-height:35vh}
.v-modal-actions{position:sticky;bottom:0;background:white;padding-bottom:8px}
.v-toast{top:70px;right:15px;left:15px;text-align:center;font-size:12px}
.v-main>footer{padding:24px 0 0;font-size:10px}
}
@media(max-width:600px){}
@media(max-width:600px){}

/* Application shell: one navigation tree at all screen sizes. */
.v-sidebar{position:fixed;inset:0 auto 0 0;width:226px;background:var(--navy);color:#d9e2f1;display:flex;flex-direction:column;padding:24px 14px 16px;z-index:60}
.v-brand{display:flex;align-items:center;justify-content:space-between;padding:0 12px 18px}.v-brand img{width:140px;height:auto}
.v-sidebar nav{overflow-y:auto;overscroll-behavior:contain;flex:1;scrollbar-width:thin;scrollbar-color:#304462 transparent;padding-right:3px}
.v-nav-group{margin-bottom:14px}.v15 .v-sidebar nav .v-nav-group-label{display:flex;align-items:center;gap:10px;padding:12px;color:#d9e2f1;font-size:15px;font-weight:650;letter-spacing:0}.v15 .v-sidebar nav .v-nav-group-label.current{color:#fff}
.v15 .v-sidebar nav button{width:100%;justify-content:flex-start;background:transparent;border:0;color:#acbdd5;font-size:13px;font-weight:500;padding:8px 12px;gap:10px;border-radius:8px;margin:1px 0}.v15 .v-sidebar nav .v-nav-child{padding-left:39px}.v15 .v-sidebar nav button:hover{background:#192e4b;color:#fff}.v15 .v-sidebar nav button.active{background:#254b99;color:#fff;box-shadow:inset 3px 0 #92b8ff}
.v15 .v-profile{display:flex;justify-content:flex-start;gap:12px;border:1px solid #ffffff18;border-radius:10px;background:#12253e;color:white;padding:12px;margin-top:10px}.v-profile>svg{margin-left:auto}.v-profile strong{font-size:12px;font-weight:500}
.v-workspace{margin-left:226px;min-width:0}.v-topbar{height:58px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 28px;background:#f8faff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}.v-breadcrumb{display:flex;align-items:center;gap:8px;font-size:12px;min-width:0;white-space:nowrap}.v-breadcrumb>span{color:#8090a6}.v-breadcrumb b{font-weight:600}.v15 .v-menu-toggle,.v15 .v-mobile-close{display:none}
.v-card-actions{display:flex;align-items:center;gap:12px}.v-progress-metric{padding:10px 0 4px}.v-progress-metric>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px}.v-progress-metric>div>span{color:var(--muted);font-size:11px}.v-progress-metric p{font-size:24px;font-weight:650;font-variant-numeric:tabular-nums;margin:8px 0}.v-progress-metric small{color:var(--muted);font-weight:400;font-size:12px}.v-progress{height:7px}.v-progress.teal i{background:#548c84}.v-progress.red i{background:#aa7375}
.v-debt-card{background:linear-gradient(145deg,#fff,#fbf5f4);border-color:#eadcdb}.v-debt-card .v-kpi,.v-debt-card .v-card-head h2>svg,.v-debt-total{color:#9d6267}.v-debt-card .v-secondary{background:#f3e7e6;color:#995f64;border-color:#ead4d3}
.v-teaching-summary{display:flex;align-items:center;justify-content:space-evenly;gap:24px}.v-teaching-summary dl{flex:1;max-width:240px}.v-teaching-ring{position:relative;width:160px;height:160px;flex-shrink:0;margin:5px auto 15px}.v-teaching-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.v-teaching-ring circle{fill:none;stroke:#edf1f6;stroke-width:8}.v-teaching-ring .v-ring-value{stroke:#548c84;stroke-linecap:round;transition:stroke-dashoffset .8s cubic-bezier(.2,.7,.3,1)}.v-teaching-ring>div{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.v-teaching-ring strong{font-size:25px;font-variant-numeric:tabular-nums}.v-teaching-ring>div>span{font-size:11px;color:var(--muted);margin-top:5px}
.v-account-row{display:flex;align-items:center;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}.v-account-row:last-child{border:0}.v-account-row>div{flex:1}.v-account-row small{display:block;color:var(--muted);font-size:12px}.v-settings-content{max-width:720px}.v-animated-number{font-variant-numeric:tabular-nums}
/* Shared motion vocabulary, disabled when the OS requests reduced motion. */
.v15 button,.v15 input,.v15 select,.v15 textarea{transition:background-color .2s,border-color .2s,box-shadow .2s,transform .2s,color .2s}.v15 button:active{transform:scale(.97)}.v15 button>svg{transition:transform .25s cubic-bezier(.2,.7,.3,1)}.v15 button:hover>svg{transform:translateY(-2px)}.v15 button[aria-label="刷新数据"]:active>svg{transform:rotate(180deg)}.v15 select:focus,.v15 input:focus{box-shadow:0 0 0 3px #3867c012}.v-progress i,.v-bars i{transition:width .75s cubic-bezier(.2,.7,.3,1)}.v-page-enter{animation:v-enter .3s cubic-bezier(.2,.7,.3,1) both}.v-overlay{animation:v-fade .18s ease both}.v-modal{animation:v-enter .25s cubic-bezier(.2,.7,.3,1) both}.v15 details[open]>div{animation:v-enter .22s ease both}.v-tabs button.selected{animation:v-select .2s ease}.v-toast{animation:v-enter .2s ease both}
@keyframes v-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes v-fade{from{opacity:0}to{opacity:1}}@keyframes v-select{from{transform:scale(.95)}to{transform:scale(1)}}
@media(max-width:1100px){.v-home-top{grid-template-columns:1fr}.v-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.v-teaching-summary{flex-direction:column;gap:0}.v-teaching-summary dl{width:100%;max-width:none}.v-progress-metric p{font-size:21px}}
@media(max-width:900px){.v-sidebar{width:210px;padding:22px 10px 14px}.v-workspace{margin-left:210px}.v-topbar{padding:0 20px}.v-breadcrumb{font-size:11px;gap:5px}.v-top-actions>span{display:none}.v-summary-grid{grid-template-columns:1fr}}
@media(max-width:600px){.v-sidebar{width:250px;visibility:hidden;transform:translateX(-100%);transition:transform .25s cubic-bezier(.2,.7,.3,1),visibility .25s}.v-sidebar.open{visibility:visible;transform:translateX(0)}.v-workspace{margin-left:0}.v15 .v-menu-toggle,.v15 .v-mobile-close{display:inline-flex}.v15 .v-mobile-close{background:transparent;border:0;color:#c9d6e6;padding:5px}.v-topbar{padding:0 12px;gap:7px}.v-breadcrumb{flex:1;font-size:10px;gap:3px}.v-breadcrumb>span:first-child,.v-breadcrumb>svg:first-of-type{display:none}.v-top-actions{gap:4px}.v15 .v-nav-scrim{position:fixed;inset:0;background:#07162a70;backdrop-filter:blur(3px);border:0;border-radius:0;z-index:55;animation:v-fade .2s ease}.v-teaching-summary{flex-direction:row;gap:16px}.v-teaching-ring{width:135px;height:135px}.v-progress-metric p{font-size:25px}}
@media(prefers-reduced-motion:reduce){.v15 *,.v15 *::before,.v15 *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.v15 .v-sidebar nav .v-nav-group>button:not(.v-nav-child){font-size:15px;font-weight:650;padding:12px}

.v-budget-panel{padding:16px;background:#f7f9fc;border:1px solid var(--line);border-radius:12px;min-width:0}.v-budget-panel>strong{font-size:24px}.v-budget-panel small{color:var(--muted);font-size:11px}.v-progress-metric .v-link{margin-left:auto;font-size:11px}
/* Overview, spending and human-readable activity. */
.v15.v-portal{min-height:0;background:transparent}.v15.v-portal[hidden]{display:none}.v-portal .v-overlay{z-index:200}.v-profile:focus-visible{outline-offset:-3px!important}.v15 .v-profile:hover{background:#1d3553;border-color:#527195}.v15 .v-profile:active{transform:none}.v-profile .v-avatar{flex-shrink:0}.v-profile strong{font-family:Arial,sans-serif;letter-spacing:0;text-transform:none}.v-top-actions .v-avatar{filter:none}
.v-attention{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px}.v-attention>button{background:#fbf3ed;border:1px solid #ead9cb;text-align:left;justify-content:flex-start;align-items:flex-start;padding:14px;color:#885b47;min-width:0}.v-attention>button>svg{flex-shrink:0;margin-top:3px}.v-attention>button>span{flex:1;font-size:12px}.v-attention strong{display:block;font-size:17px;margin-top:4px}.v-attention>p{grid-column:1/-1;color:#486d63;background:#edf5f1;padding:14px;border-radius:10px}
.v-period-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:20px}.v-period-card{margin:0;min-width:0}.v-period-card .v-card-head>span{font-size:10px}.v15 .v-receipt-heading{display:flex;align-items:flex-start;flex-direction:column;width:100%;border:0;background:transparent;padding:6px 0 14px;text-align:left}.v-receipt-heading>span{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted)}.v-receipt-heading>strong{font-size:clamp(22px,2.1vw,32px);font-weight:700;letter-spacing:-.5px;color:#173d70}.v-receipt-heading>small{color:var(--muted)}.v-target-caption{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin:8px 0 16px;color:#49637f}.v-target-caption>b{font-weight:550}.v-period-costs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;border-top:1px solid var(--line);margin-top:16px;padding-top:16px}.v15 .v-period-costs>button{border:0;background:#f5f7fb;display:flex;flex-direction:column;align-items:flex-start;font-size:11px;padding:10px;min-width:0}.v-period-costs strong{font-size:12px;overflow-wrap:anywhere}.v-period-footer{display:flex;justify-content:space-between;margin-top:12px;gap:8px}.v15 .v-period-footer button{border:0;background:transparent;font-size:11px;padding:5px 0;flex-wrap:wrap}.v-period-footer em{font-style:normal;color:#a86265}.v-pace{font-size:11px;padding:9px;background:#eef5f2;border-radius:7px;margin:10px 0!important}.v-pace.behind{color:#9c6265;background:#f7eeee}
.v-cash-overview{margin-bottom:20px}.v-cash-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.v-cash-metrics>div>span{display:block;color:var(--muted);font-size:11px}.v-cash-metrics strong{display:block;font-size:clamp(15px,1.55vw,24px);margin-top:6px;font-variant-numeric:tabular-nums}.v-cash-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted);margin:12px 0}.v-upcoming-payments{border-top:1px solid var(--line);padding-top:10px}.v15 .v-upcoming-payments>button{display:grid;grid-template-columns:90px 1fr auto;gap:12px;text-align:left;width:100%;border:0;background:transparent;font-size:12px;padding:9px 0}.v-upcoming-payments time{color:var(--muted)}.v-upcoming-payments span{white-space:normal}.v-home-bottom{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:20px;margin-top:20px}.v-home-bottom>.v-card{min-width:0;margin:0}.v-home-bottom .v-budget-grid{grid-template-columns:1fr 1fr}.v-home-bottom .v-budget-panel>strong{font-size:20px}
.v-task-category{display:inline-block;border-radius:5px;padding:2px 7px;background:#eef1f5;color:#69768b;font-size:10px;font-weight:500}.v-task-category.external,.v-days .v-calendar-task.external{background:#f7e8e8;color:#985e63}.v-task-category.internal,.v-days .v-calendar-task.internal{background:#e5eef9;color:#4f7199}.v-task-category.own,.v-days .v-calendar-task.own{background:#e7f2e9;color:#53795d}.v-action-table{min-width:1000px}.v-action-table td:nth-child(3){min-width:220px;max-width:330px;white-space:normal}.v-action-table td.v-task-notes{min-width:200px;max-width:380px;white-space:normal;font-size:11px;color:var(--muted)}.v-calendar-toolbar{flex-wrap:wrap}.v-calendar-toolbar input{max-width:150px}.v-subtotal.sticky td{position:sticky;bottom:0;z-index:4;box-shadow:0 -1px 0 #ccd8e7}.v-cash-table td:nth-child(2){min-width:210px;white-space:normal}.v-cash-table td:first-child{white-space:nowrap}
.v-human-changes>div{padding:12px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.v-human-changes>div:last-child{border-bottom:0}.v-human-changes strong{font-size:12px}.v-human-changes p{font-size:12px;margin:4px 0;color:#53647b}.v-audit summary>div{min-width:0}.v-audit summary strong{white-space:normal;overflow-wrap:anywhere}.v-portal .v-form{max-height:none}.v-portal .v-modal{isolation:isolate}
@media(max-width:1100px){.v-home-bottom{grid-template-columns:1fr}.v-cash-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.v-attention{grid-template-columns:1fr}.v-attention>button{padding:10px 14px}.v-attention strong{display:inline;margin-left:8px}.v-period-costs{grid-template-columns:1fr}.v15 .v-period-costs>button{flex-direction:row;justify-content:space-between}.v-period-footer{flex-direction:column;align-items:flex-start}}
@media(max-width:700px){.v-period-overview{grid-template-columns:1fr}.v-home-bottom .v-budget-grid{grid-template-columns:1fr}.v-cash-meta{align-items:flex-start}.v15 .v-upcoming-payments>button{grid-template-columns:75px 1fr;font-size:11px}.v-upcoming-payments strong{grid-column:2}.v-period-costs{grid-template-columns:repeat(3,minmax(0,1fr))}.v15 .v-period-costs>button{flex-direction:column;align-items:flex-start}.v-receipt-heading>strong{font-size:26px}.v-period-footer{flex-direction:row;align-items:center}.v-cash-metrics{gap:14px}.v-cash-metrics strong{font-size:16px}}
.v-reminder-root .modal-backdrop{backdrop-filter:none;z-index:200}.v-reminder-root .dialog{max-height:90dvh;overflow:auto}

.v-calendar-scroll{height:clamp(340px,65vh,760px);overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin;position:relative}.v-sync-feedback{min-height:1.5em;margin-top:8px!important;font-size:13px}.v-sync-feedback.success{color:#39765b}.v-sync-feedback.failure{color:#a44f59}

.v-expense-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-bottom:18px}.v-expense-filters label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.v-expense-filters input,.v-expense-filters select{max-width:210px;min-height:38px}.v-expense-plans>summary{cursor:pointer;font-weight:600;padding:3px 0 12px}

/* Shared task controls and compact task rows. */
.v-task-stats{display:flex;gap:12px;align-items:center;margin:0 0 18px;font-size:14px;color:#66758a}.v-task-stats>span{display:flex;align-items:center;padding:10px 16px;border:1px solid #e5eaf1;border-radius:12px;background:#fff;min-height:54px}.v-task-stats .v-overdue{background:#fff;font-size:14px;color:#b45660}.v-task-stats strong{font-size:24px;color:#243b60;margin:0 5px}.v-task-stats .v-overdue strong{color:#b45660}
.v-task-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:18px}.v-task-toolbar input{max-width:200px}.v-task-toolbar .v-add-task{margin-left:auto}
.v-action-table th,.v-action-table td{text-align:center!important;vertical-align:middle;padding:9px 10px!important}.v-action-table th{height:37px}.v-action-table td .v-check{margin:auto}.v-action-row{cursor:pointer;transition:background .2s,color .2s}.v-action-row.alternate{background:#f5f6f8}.v-action-row:hover{background:#edf2f8}.v-action-row.done{color:#9ca7b6}.v-action-row.done .v-task-title-band{text-decoration:line-through}.v-action-row .v-task-notes{font-size:12px}.v-action-table .v-task-title-band{--task-tint:#f1f3f6;--task-edge:#a6b0bf;display:flex;align-items:center;gap:10px;width:100%;padding:5px 11px;border-left:3px solid var(--task-edge);border-radius:7px;background:var(--task-tint);line-height:1.7;text-align:left;box-shadow:none}.v-task-title-band:before{content:"";width:7px;height:7px;flex-shrink:0;border-radius:50%;background:var(--task-edge)}.v-task-title-band.external{--task-tint:#f8eded;--task-edge:#c48b92}.v-task-title-band.internal{--task-tint:#edf2fa;--task-edge:#88a5c9}.v-task-title-band.own{--task-tint:#edf4ef;--task-edge:#8bac96}.v-action-row.overdue .v-task-title-band,.v-action-row.overdue td:nth-child(2){color:#b44150}.v15 .v-action-table .v-check,.v15 .v-task-list .v-check{width:19px;height:19px;border-radius:4px;border:1px solid #cbd4e1;background:white;box-shadow:none;color:#526b88}.v15 .v-action-table .v-check.checked,.v15 .v-task-list .v-check.checked{background:#f6f8fb;border-color:#9eafc4;color:#526b88}.v15 .v-action-table .v-check:hover,.v15 .v-task-list .v-check:hover{border-color:#6a86aa;background:#edf2f8}.v15 .flagged,.v15 .flagged .v-task-title-band,.v15 .flagged strong{color:#bd3445!important;font-weight:750!important}
.v-task-context{position:fixed;z-index:1000;background:white;border:1px solid #e2e6ef;border-radius:10px;padding:6px;box-shadow:0 8px 24px #22334d26;animation:task-menu-in .16s ease-out}.v-task-context button{display:flex;gap:9px;align-items:center;border:0;color:#b3414b;padding:10px 16px;background:white}.v-task-context button:hover{background:#faedef}
.v-modal-header-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.v-task-editor>header{align-items:center;gap:12px}.v-task-title-input{min-width:0;width:100%;font-size:24px!important;font-weight:750!important;border:0!important;background:transparent!important;padding:5px 0!important;color:#203653}.v-task-editor .v-form{padding-top:12px}.v-task-dates{align-items:start;gap:0 16px}.v-task-dates .v-field{margin:0 0 16px;min-width:0}.v-task-dates input{width:100%;min-width:0;box-sizing:border-box;height:42px}.v-task-type-choices{display:flex;gap:10px;margin-bottom:22px}.v-task-type-choices button{flex:1;padding:12px 8px;border:1px solid transparent;transition:transform .18s,background .18s,box-shadow .18s,opacity .18s;opacity:.65}.v-task-type-choices .external{background:#f8e9eb;color:#a34f5c}.v-task-type-choices .internal{background:#e7effb;color:#486f9e}.v-task-type-choices .own{background:#e6f3eb;color:#3f7f60}.v-task-type-choices button:hover{opacity:1;transform:translateY(-2px);box-shadow:0 4px 12px #25365018}.v-task-type-choices button.selected{opacity:1;border-color:currentColor;box-shadow:0 0 0 2px #ffffff,0 4px 10px #25365018;font-weight:700}.v-inline-warning{color:#b54251;font-size:13px;margin:4px 0 14px}.v-task-editor textarea{min-height:90px}
/* Calendar uses shared grid lines, not gaps between rounded cards. */
.v-calendar-card{overflow:hidden}.v-calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.v-calendar-month{display:flex;gap:5px;align-items:center}.v-calendar-month input{max-width:152px;text-align:center}.v-calendar-month button{padding:7px}.v-calendar .v-weekdays{margin:0;background:#f7f8fa;border:1px solid #e4e8ef;border-bottom:0;padding:9px 0}.v-calendar .v-days{gap:0;border-left:1px solid #e4e8ef}.v-calendar .v-days>div{border:0;border-radius:0;border-right:1px solid #e4e8ef;border-bottom:1px solid #e4e8ef;padding:7px;background:#fff;min-height:124px}.v-calendar .v-days>div.rest-day{background:#edf3fb}.v-calendar .v-days>div.selected{padding:7px;box-shadow:inset 0 0 0 1px #9aafcf;background:#f6f9fe}.v-calendar .v-days>div.rest-day.selected{background:#e8f0fb}.v-day-number{align-items:center;min-height:28px}.v-day-number>span{display:inline-flex;align-items:center;justify-content:center;min-width:27px;height:27px}.v-days>div.today .v-day-number>span{color:white;background:#2455bd;border-radius:50%;font-weight:700}.v-calendar .v-calendar-task{border:1px solid #d8e3f3!important;border-radius:4px!important;padding:4px!important;font-size:10px!important;box-shadow:0 2px 3px #1d33500a}.v-calendar .v-calendar-task.external{background:#fbecee!important;color:#a34f5c;border-color:#efd2d8!important}.v-calendar .v-calendar-task.internal{background:#eaf2fc!important;color:#486f9e}.v-calendar .v-calendar-task.own{background:#e8f4ed!important;color:#3f7f60;border-color:#cfe5d8!important}
/* Debt rows expand in place and move following rows naturally. */
.v-debt-row{scroll-margin-top:82px;margin-bottom:16px}.v-debt-row-cards{display:grid;gap:14px}.v-debt-row .v-debt-card{margin:0;cursor:pointer;padding:18px;transition:box-shadow .2s,transform .2s,border-color .2s}.v-debt-row .v-debt-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #4d222213}.v-debt-row .external-loan{background:#fbefef;border-color:#e8c9ce;color:#a52f42}.v-debt-row .external-loan h2,.v-debt-row .external-loan .v-kpi,.v-debt-row .external-loan .v-card-head h2>svg{color:#a52f42}.v-debt-row .personal-loan{background:#edf7f0;border-color:#cce2d4;color:#397b57}.v-debt-row .personal-loan h2,.v-debt-row .personal-loan .v-kpi,.v-debt-row .personal-loan .v-card-head h2>svg{color:#397b57}.v-debt-card .v-card-head{margin-bottom:9px}.v-debt-card .v-kpi{font-size:29px;margin:4px 0 12px}.v-debt-card p,.v-debt-card small{font-size:12px}.v-debt-paid{display:flex;justify-content:space-between;font-size:11px;gap:8px;margin-bottom:8px}.v-debt-card .v-progress{margin-bottom:10px}.v-debt-toggle{background:transparent!important;border:0!important;color:inherit!important;transition:transform .24s}.v-debt-card.expanded .v-debt-toggle{transform:rotate(90deg)}.v-debt-expand{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .32s ease,opacity .24s ease}.v-debt-expand.open{grid-template-rows:1fr;opacity:1}.v-debt-expand>div{min-height:0;overflow:hidden}.v-debt-detail{margin:12px 0 0!important;padding:16px!important}.v-debt-detail .v-table-scroll{max-height:calc(100vh - 370px);min-height:100px;overflow:auto}.v-debt-detail th{position:sticky;top:0;background:#f5f7fa;z-index:1}.v-debt-detail td,.v-debt-detail th{padding:8px 10px!important}.v-debt-notes{font-size:12px;color:#768195;margin-top:12px}.v-debt-detail .v-card-head{flex-wrap:wrap}
/* Cash overview and compact status column. */
.v-finance-summaries .v-card{padding:18px}.v-finance-summaries .v-progress{margin:12px 0 8px}.v-cash-budget-summary .v-card{padding:16px}.v-cash-budget-summary .v-budget-panel{padding:12px}.v-cash-budget-summary .v-budget-panel>strong{font-size:22px}.v-cash-budget-summary .v-progress{height:8px;background:#eee8dc}.v-cash-budget-summary .v-progress>i{background:#c29b5e}.v-cash-budget-summary .v-progress.red>i{background:#c16670}.v-cash-table th{text-align:center}.v-cash-table td,.v-cash-table th{padding:8px 10px!important;vertical-align:middle}.v-cash-table td:nth-child(2){text-align:left}.v-cash-table td:last-child{text-align:center}.v-cash-state{display:flex;align-items:center;flex-direction:column;gap:5px;font-size:11px}.v-cash-state .v-check{width:22px;height:22px}.v-cash-table tr.v-cash-completed td{opacity:.62}.v-cash-scroll{max-height:65vh;overflow:auto}.v-cash-table thead th{position:sticky;top:0;z-index:3;background:#f3f6fa}
@keyframes task-menu-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){.v-task-toolbar{gap:7px}.v-task-toolbar input{max-width:145px}.v-task-toolbar select{max-width:145px}.v-task-toolbar .v-add-task{margin-left:auto}.v-task-stats{gap:20px}.v-task-stats strong{font-size:21px}.v-task-editor>header{gap:7px}.v-task-title-input{font-size:20px!important}.v-modal-header-actions{gap:3px}.v-task-editor .v-modal-header-actions .v-primary{font-size:0;padding:8px}.v-task-editor .v-modal-header-actions .v-primary svg{width:18px}.v-task-type-choices{gap:6px}.v-task-type-choices button{padding:11px 4px;font-size:12px}.v-calendar-toolbar{gap:6px}.v-calendar-month{gap:2px}.v-calendar-month input{max-width:125px}.v-calendar .v-days>div,.v-calendar .v-days>div.selected{padding:3px;min-height:100px}.v-debt-detail .v-table-scroll{max-height:50vh}.v-debt-row-cards{gap:10px}.v-debt-row{margin-bottom:10px}}
@media(prefers-reduced-motion:reduce){.v-debt-expand,.v-debt-toggle,.v-debt-card,.v-task-type-choices button{transition:none!important}.v-task-context{animation:none!important}}
.v-task-editor label.v-checkbox{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:8px;margin:0 0 12px}.v-task-editor .v-checkbox input{width:16px;height:16px;margin:0}.v-task-editor input.v-task-title-input.flagged,.v-task-editor button.flagged{color:#bd3445!important}.v-cash-table td:nth-child(2),.v-cash-table td:nth-child(2) strong{text-align:left!important}.v-cash-table td{padding-top:5px!important;padding-bottom:5px!important}.v-cash-state{gap:2px;font-size:10px}.v-cash-state .v-check{width:18px;height:18px}.v-debt-rows.has-expanded{padding-bottom:50vh}
/* Duration and daily planned capacity share the same time calculation. */
.v-task-duration{display:flex;align-items:center;gap:12px;margin-bottom:16px}.v-task-duration .v-field{margin:0;flex:1}.v-task-duration input[readonly]{background:#f4f6f9;color:#6b788d}.v-task-duration>small{font-size:12px;color:#98a1af;padding-top:18px}.v-day-number{gap:3px}.v-day-number .v-day-capacity{margin-left:auto;white-space:nowrap;color:#9ca5b2;background:transparent;font-size:10px;flex-shrink:0}.v-day-number .v-day-capacity.over-capacity{color:#bd3e50;font-weight:700}.v-day-number>small:not(.v-day-capacity){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v-day-number{display:grid;grid-template-columns:minmax(0,1fr) auto;flex-wrap:nowrap}.v-day-number>.v-day-capacity{grid-column:2;grid-row:1;align-self:start;padding-top:5px}.v-day-number>span{justify-self:start}.v-day-number>small:not(.v-day-capacity){grid-column:1/-1;grid-row:2}
@media(max-width:600px){.v-day-number>span{min-width:18px;min-height:20px;height:auto;font-size:10px}.v-days>div.today .v-day-number>span{width:20px;height:20px}.v-day-number .v-day-capacity{font-size:8px;padding-top:3px;letter-spacing:-.3px}.v-task-duration{gap:8px}.v-task-duration>small{max-width:100px}}

.v-month-toggle{min-width:100px;transition:background .2s,transform .2s}.v-month-toggle:active{transform:scale(.96)}.v-month-toggle span{display:inline-block;animation:cash-switch .24s ease}.v-cash-transition{animation:cash-switch .3s ease}.v-debt-overall{box-sizing:border-box;background:#fff!important;margin-bottom:18px;padding:22px!important}.v-debt-overall h2,.v-debt-overall .v-debt-total{color:#b6384b!important}.v-debt-overall h2{font-size:15px;margin:0 0 10px}.v-debt-overall .v-debt-total{display:block;font-size:36px;margin-bottom:18px}.v-debt-overall .v-debt-paid{font-size:12px;color:#7c6970}.v-debt-overall .v-progress{height:9px}@keyframes cash-switch{from{opacity:.35;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.v-month-toggle,.v-month-toggle span,.v-cash-transition{animation:none;transition:none}}
.v-calendar .v-days>div.v-drop-target{box-shadow:inset 0 0 0 2px #6e94ce;background:#edf4ff}.v-calendar-task[draggable=true]{cursor:grab}.v-calendar-task[draggable=true]:active{cursor:grabbing}.v-task-context button:disabled{color:#8793a5;cursor:default}.v-task-editor input:disabled{background:#f3f5f8;color:#7f8a9b}
.v-calendar .v-calendar-task.repayment{background:#fbebee!important;color:#af3c4d;border-color:#edcbd2!important}.v-calendar .v-calendar-task.repayment.done{color:#b999a0}

/* Context menus must not inherit the workspace's full viewport height. */
.v15.v-task-context{min-height:0;height:auto;width:max-content;max-width:calc(100vw - 16px);padding:4px;border-radius:8px;background:#fff}
.v15.v-task-context button{min-height:30px;height:auto;padding:5px 10px;font-size:12px;line-height:1.5;gap:6px;border-radius:5px}
.v15.v-task-context button svg{width:14px;height:14px}
.v-receipt-summary{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:16px;margin-bottom:20px}
.v-receipt-summary .v-card{margin:0;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:22px}
.v-receipt-summary .v-card>span{font-size:14px;color:#64748b}.v-receipt-summary strong{font-size:28px;line-height:1.3;font-variant-numeric:tabular-nums}.v-receipt-summary small{color:#64748b}
.v-receipt-summary .v-receipt-net{background:#0d3b9e;color:white}.v-receipt-summary .v-receipt-net>span,.v-receipt-summary .v-receipt-net small{color:#dbe7ff}.v-receipt-net>div{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:8px;font-size:12px}.v-receipt-net b{display:block;font-size:15px;color:white}
.v-receipt-table{min-width:1050px}.v-receipt-table td{vertical-align:top}.v-receipt-table th:nth-child(6),.v-receipt-table th:nth-child(7),.v-receipt-table td:nth-child(6),.v-receipt-table td:nth-child(7){text-align:right;white-space:nowrap}.v-receipt-positive{color:#087b60;font-weight:650}.v-receipt-table tfoot{background:#edf3fc}
@media(max-width:700px){.v-receipt-summary{grid-template-columns:1fr 1fr;gap:10px}.v-receipt-summary .v-receipt-net{grid-column:1/-1}.v-receipt-summary .v-card{padding:18px}.v-receipt-summary strong{font-size:23px}.v-receipt-summary .v-receipt-net strong{font-size:30px}}

/* Cash planning: uniform rows with a single, independent target curve. */
.v-cash-projection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.v-cash-projection-grid>section{padding:14px;border:1px solid var(--line,#e5e7eb);border-radius:12px}
.v-cash-projection h4{margin:0 0 12px}.v-cash-projection h4 small,.v-plan-incomplete{font-size:11px;color:var(--muted,#687386);font-weight:400}
.v-plan-incomplete{display:block;line-height:1.4}.v-cash-projection details{font-size:12px}.v-cash-projection .v-small-stats{flex-wrap:wrap}
.v-cash-plan-table tbody tr:not(.v-subtotal){height:56px;background:transparent;opacity:1}
.v-cash-plan-table tbody tr:not(.v-subtotal) td{padding-top:10px;padding-bottom:10px;font-size:13px;font-weight:400}
.v-cash-plan-table th:nth-child(2),.v-cash-plan-table td:nth-child(2){text-align:left}
.v-cash-plan-table tbody tr:not(.v-subtotal) td:nth-child(2) strong{display:block;width:180px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500}
.v-cash-plan-table th:last-child,.v-cash-plan-table td:last-child{width:54px;text-align:center}
@media(max-width:760px){.v-cash-projection-grid{grid-template-columns:1fr}}
/* Cash table: actuals stay dark; future projections have their own muted treatment. */
.v-cash-plan-table td.v-cash-estimate,.v-cash-plan-table td.v-cash-estimate small{color:#929baa!important}
.v-cash-plan-table th small{display:block;font-size:11px;font-weight:400;color:#8793a4}
.v-cash-plan-table .v-subtotal td{vertical-align:middle;text-align:right}
.v-cash-plan-table .v-subtotal td:nth-child(1),.v-cash-plan-table .v-subtotal td:nth-child(2){text-align:left}
.v-cash-unknown{display:grid;gap:6px;padding:12px 16px;margin:12px 0;border:1px solid #e5dfd1;border-radius:10px;background:#fcfaf5;font-size:12px;color:#776747}
.v-cash-unknown .v-link{text-align:left;justify-content:flex-start;white-space:normal}
.v-budget-panel .v-progress.budget-remaining{background:#edf0f4;box-shadow:inset 0 0 0 1px #e0e5eb}
.v-budget-panel .v-progress.budget-remaining>i{background:#71998e}
.v-budget-panel .v-progress.budget-remaining.exhausted{background:transparent;box-shadow:inset 0 0 0 1px #bd4c59}
.v-budget-panel .v-progress.budget-remaining.exhausted>i{width:0!important}
.v-budget-panel>strong.negative{color:#b33e49}
.v-month-picker-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:14px;min-width:145px;white-space:nowrap}
.v-month-popover{position:fixed;width:280px;z-index:1200;background:white;border:1px solid #e0e5ed;border-radius:14px;box-shadow:0 12px 40px #172e4b24;padding:14px;color:#27374b;animation:v-month-open .16s ease-out}
.v-month-popover>div{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.v-month-popover button{font:inherit;border:0;background:transparent;border-radius:8px;padding:10px;cursor:pointer;color:inherit;transition:background .15s,transform .15s}
.v-month-popover button:hover{background:#edf3ff;transform:translateY(-1px)}
.v-month-popover button:focus-visible{outline:2px solid #315fd2;outline-offset:1px}
.v-month-popover section{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.v-month-popover [aria-pressed=true]{background:#1644c6;color:white}
.v-month-popover .v-month-current{display:block;width:100%;margin-top:8px;color:#1747b9;border-top:1px solid #edf0f4}
.v-calibration-placements{padding:12px;border:1px solid #e2e6ee;border-radius:10px;font-size:13px}
.v-calibration-placements>label{display:grid;grid-template-columns:1fr minmax(160px,1fr);gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid #edf0f4}
.v-calibration-placements small{display:block;color:#8590a1;margin-top:4px}
@keyframes v-month-open{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.v-month-popover,.v-month-popover button{animation:none;transition:none}}
@media(max-width:500px){.v-calibration-placements>label{grid-template-columns:1fr}.v-finance-summaries .v-card-head{flex-wrap:wrap}}

/* Homepage: revenue / consumption, action / teaching / risk, monthly debt. */
.v-dashboard{display:grid;gap:18px}.v-dash-top{display:grid;grid-template-columns:2fr 1fr;gap:18px}.v-dash-revenue{display:grid;grid-template-columns:1fr 1fr;gap:18px}.v-dashboard .v-card{margin:0;min-width:0;padding:20px;text-align:left}.v-dashboard button{font:inherit;cursor:pointer}.v-dashboard button.v-card{display:block;width:100%;transition:transform .2s,box-shadow .2s,border-color .2s}.v-dashboard button.v-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px #23365312;border-color:#b6c9e4}.v-dashboard button:focus-visible{outline:2px solid #557bc0;outline-offset:3px}.v-dashboard .v-card-head{margin-bottom:12px}.v-dashboard h2{font-size:16px}.v-dashboard h3{font-size:13px;margin:0}.v-dashboard small{font-size:12px;color:#7d879a}.v-dash-label{display:block;color:#78869a;font-size:12px;margin-top:20px}.v-dash-hero{display:block;font-size:30px;letter-spacing:-1px;margin:5px 0 22px;color:#224b85}.v-dash-income.month{background:linear-gradient(145deg,#f1f6ff,#fff)}.v-dash-caption{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:#7b879a}.v-dash-caption b{color:#39465d}.v-dashboard .v-progress{margin:10px 0;height:8px}.v-dash-budget+.v-dash-budget{margin-top:18px;padding-top:15px;border-top:1px solid #edf0f4}.v-dash-budget>button{border:0;background:transparent;padding:0;width:100%;text-align:left}.v-dash-budget .v-dash-caption strong{font-size:22px;color:#335f62}.v-dash-budget .v-dash-caption span{display:flex;align-items:center;gap:4px}.v-dash-middle{display:grid;grid-template-columns:2fr 1fr 1fr;gap:18px}.v-dash-task-counts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0}.v-dash-task-counts button{background:#f3f6fb;border:0;border-radius:10px;text-align:left;padding:12px 16px;color:#556480}.v-dash-task-counts strong{display:block;font-size:32px;color:#2b4c7c}.v-dash-task-counts strong small{font-size:12px;margin-left:6px}.v-dash-task-counts .v-dash-late{background:#fff1f1;color:#b44b51}.v-dash-late strong{color:#bf3f49}.v-dash-task-preview button{display:flex;align-items:center;gap:10px;width:100%;border:0;border-bottom:1px solid #edf0f4;background:transparent;padding:9px 0;text-align:left;font-size:12px}.v-dash-task-preview time{color:#8b96a8}.v-dash-task-preview strong{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v-dash-task-preview .flagged strong{color:#b43443}.v-dash-teaching .v-teaching-ring{margin:14px auto;max-width:130px}.v-dash-teaching .v-dash-caption span{display:grid;gap:5px}.v-dash-risk-value{display:block;font-size:25px;letter-spacing:-.7px;margin:10px 0 16px;color:#395b69}.v-dash-risk-note{padding:10px;border-radius:8px;background:#edf5f2;font-size:12px;color:#38725c;margin-bottom:8px}.v-dash-risk.at-risk .v-dash-risk-value{color:#b33e49}.v-dash-risk.at-risk .v-dash-risk-note{color:#b33e49;background:#fff0f0}.v-dash-risk>.v-dash-caption{margin-top:20px;flex-wrap:wrap}.v-dashboard .v-dash-debt{background:linear-gradient(115deg,#fff1f2,#fff9f9);border:1px solid #ecc2c7;border-top:3px solid #bd4c59}.v-dash-debt h2,.v-dash-debt .v-link{color:#a83343}.v-dash-debt-summary{border:0;background:transparent;padding:2px 0 14px;width:100%;display:grid;grid-template-columns:repeat(4,1fr);text-align:left;gap:18px}.v-dash-debt-summary strong{display:block;font-size:26px;color:#aa2e41;margin-top:6px}.v-dash-debt-summary small{color:#a56872}.v-dash-debt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}.v-dash-debt-grid>button{background:#ffffff80;border:1px solid #f0d8dc;border-radius:9px;padding:12px;text-align:left}.v-dash-debt-grid strong,.v-dash-debt-grid b{color:#a83e4c}.v-dash-debt .v-progress{background:#efd9dd}.v-dashboard .negative{color:#b33e49}.v-dashboard button:hover .v-card-head>svg{transform:translate(2px,-2px)}.v-dashboard svg{transition:transform .2s}
@media(max-width:1150px){.v-dash-middle{grid-template-columns:1fr 1fr}.v-dash-tasks{grid-column:1/-1}.v-dash-top{grid-template-columns:1fr}.v-dash-budgets{display:grid;grid-template-columns:1fr 1fr;gap:16px}.v-dash-budgets>.v-card-head{grid-column:1/-1;margin:0}.v-dash-budget+.v-dash-budget{margin:0;padding:0;border:0}.v-dash-debt-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.v-dashboard{gap:12px}.v-dash-revenue,.v-dash-middle{gap:10px}.v-dashboard .v-card{padding:14px}.v-dashboard h2{font-size:14px}.v-dash-hero{font-size:23px}.v-dash-caption{font-size:11px;flex-wrap:wrap}.v-dash-budgets{display:block}.v-dash-budget+.v-dash-budget{margin-top:16px}.v-dash-debt-summary{grid-template-columns:1fr 1fr}.v-dash-debt-summary strong{font-size:22px}.v-dash-debt-grid{grid-template-columns:1fr}.v-dash-risk-value{font-size:20px}.v-dash-teaching .v-teaching-ring{max-width:105px}.v-dash-income .v-dash-caption{align-items:flex-start}.v-dash-income .v-dash-hero{letter-spacing:-.8px}}
@media(prefers-reduced-motion:reduce){.v-dashboard button.v-card,.v-dashboard svg{transition:none}.v-dashboard button.v-card:hover{transform:none}}
.v-dashboard .v-dash-budget>button,.v-dashboard .v-dash-debt-grid>button,.v-dashboard .v-dash-task-counts button{display:block}.v-dashboard .v-dash-debt-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:0;background:transparent;padding:2px 0 14px;justify-content:stretch}.v-dashboard .v-dash-debt h2>svg{color:#aa2e41}.v-dashboard .v-dash-budget .v-progress{background:#ede7db}.v-dashboard .v-dash-budget .v-progress>i{background:#bd9559}.v-dashboard .v-dash-budget .v-progress.red>i{background:#bd4c59}.v-dashboard .v-dash-debt .v-progress>i{background:#bd4c59}
@media(max-width:600px){.v-dashboard .v-dash-debt-summary{grid-template-columns:1fr 1fr}}

/* Question-led overview: period above the title, remaining budget drains to an outlined slot. */
.v-dash-period{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-height:18px;margin-bottom:9px;color:#8290a4}
.v-dashboard .v-dash-income h2,.v-dashboard .v-dash-budget-heading h2{margin:0;line-height:1.55}
.v-dash-subtitle{display:block;margin-top:5px;font-weight:400}
.v-dash-income .v-dash-hero{margin:25px 0 16px}
.v-dash-budget-heading{margin-bottom:17px;grid-column:1/-1}
.v-dashboard .v-dash-budget .v-progress.budget-remaining{background:#edf0f4;box-shadow:inset 0 0 0 1px #e0e5eb}
.v-dashboard .v-dash-budget .v-progress.budget-remaining>i{background:#71998e}
.v-dashboard .v-dash-budget .v-progress.budget-remaining.exhausted{background:transparent;box-shadow:inset 0 0 0 1px #bd4c59}
.v-dashboard .v-dash-budget .v-progress.budget-remaining.exhausted>i{width:0!important}
.v-dashboard .v-dash-budget .v-dash-caption strong.negative{color:#b33e49}
.v-dash-risk .v-card-head{margin-bottom:0}
@media(max-width:600px){.v-dash-revenue{grid-template-columns:1fr}.v-dash-income .v-dash-hero{margin:14px 0}.v-dash-budget-heading{margin-bottom:14px}}

.v-dashboard button.v-dash-income{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}.v-dash-income .v-dash-hero{flex:1;display:flex;align-items:center;min-height:60px}

/* Keep the overview's first row compact, including its two budget blocks. */
.v-dashboard .v-dash-top .v-card{padding:12px 18px}
.v-dash-top .v-dash-period{margin-bottom:5px;min-height:15px}
.v-dash-top .v-dash-subtitle{margin-top:2px}
.v-dash-top .v-dash-income .v-dash-hero{min-height:40px;margin:12px 0 10px}
.v-dash-top .v-dash-budget-heading{margin-bottom:10px}
.v-dash-top .v-dash-budget-heading .v-dash-period{float:right;margin-top:4px}
.v-dash-top .v-dash-budget>.v-card-head{float:left;gap:7px;min-height:27px;margin:0}
.v-dash-top .v-dash-budget>button .v-dash-caption:first-child{justify-content:flex-end;min-height:27px}
.v-dash-top .v-dash-budget>button .v-progress{clear:both}
.v-dash-top .v-card-head{margin-bottom:5px}
.v-dash-top .v-dash-budget+.v-dash-budget{margin-top:10px;padding-top:9px}
.v-dash-top .v-dash-budget .v-dash-caption strong{font-size:20px;line-height:1.35}
.v-dash-top .v-progress{margin:7px 0;height:7px}
.v-teaching-detail-note{font-size:12px;color:#7d879a;margin:12px 18px}
@media(min-width:601px) and (max-width:1150px){.v-dash-top .v-dash-budget+.v-dash-budget{margin:0;padding:0}}
@media(max-width:600px){.v-dashboard .v-dash-top .v-card{padding:12px 14px}.v-dash-top .v-dash-budget .v-dash-caption strong{font-size:19px}}

.v-operations-page{display:flex;flex-direction:column;gap:12px;min-width:0}
.v-operations-page .v-card{margin-bottom:0;padding:14px 18px}
.v-operations-page .v-card-head{margin-bottom:10px;gap:10px;flex-wrap:wrap}
.v-operations-page .v-operation{padding:7px 0;gap:8px}
.v-operations-page .v-operation button{margin-left:0}
.v-operations-page .v-audit{padding:7px 0}
.v-operations-page .v-audit summary{gap:8px}
.v-operations-page .v-audit summary small{margin-top:2px}
.v-operations-page .v-audit-content{padding:8px 0}
.v-operations-page .v-human-changes>div{padding:5px 0}
.v-operations-page .v-human-changes p{margin:2px 0}
.v-batch{border-top:1px solid var(--line);min-width:0}
.v-batch>summary{display:flex;align-items:center;gap:10px;padding:10px 0;cursor:pointer;flex-wrap:wrap;list-style:none}
.v-batch>summary:before{content:'▸';color:var(--muted)}
.v-batch[open]>summary:before{content:'▾'}
.v-batch>summary strong{overflow-wrap:anywhere}
.v-batch>summary span{font-size:12px;color:var(--muted);flex:1}
.v-batch>summary b{white-space:nowrap}
.v-batch-actions{display:flex;align-items:center;gap:12px;padding:6px 0 10px;font-size:12px;flex-wrap:wrap}
.v-batch-actions label{display:flex;align-items:center;gap:6px}
.v-batch-actions button{margin-left:auto}
.v-batch-table{min-width:760px}
.v-batch-table th,.v-batch-table td{padding:6px 8px;font-size:12px}
.v-batch-table td:nth-child(3),.v-batch-table td:last-child{min-width:140px;max-width:280px;white-space:normal;overflow-wrap:anywhere}
.v-batch-table small{display:block;font-size:11px;line-height:1.4}
.v-batch-table input[type=checkbox],.v-batch-actions input[type=checkbox]{width:17px;height:17px;accent-color:var(--primary)}
.v-preview-changes .v-table-scroll{max-height:none;overflow:visible}
.v-order-notes{min-width:150px;max-width:260px;white-space:normal;overflow-wrap:anywhere}
.v-order-notes strong,.v-order-notes small{display:block}
@media(max-width:600px){.v-operations-page .v-card{padding:12px}.v-batch>summary{gap:6px}.v-batch>summary strong{flex:1}.v-batch>summary span{order:3;flex-basis:100%}.v-batch-card .v-card-head button{width:100%}}
.v-token-settings .v-token-permissions{border:0;padding:0;margin:12px 0;min-width:0}
.v-token-settings .v-token-scope-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.v-token-settings .v-token-scope-options label,.v-token-settings .v-token-auto{display:flex;align-items:center;gap:8px;font-size:14px}
.v-token-settings input[type=checkbox]{width:17px;height:17px;flex:0 0 17px;accent-color:var(--primary)}
.v-token-settings .v-token-auto{padding:10px 0;font-weight:600}
.v-token-settings .v-token-card{border-top:1px solid var(--line);padding:14px 0}
.v-token-settings .v-token-actions{display:flex;flex-wrap:wrap;gap:8px}
@media(max-width:480px){.v-token-settings .v-token-scope-options{grid-template-columns:1fr}}
.v-operations-page .v-operation-meta{padding:8px 0;overflow-wrap:anywhere}
.v-operations-page .v-operation-meta p{margin:4px 0;white-space:pre-wrap}
.v-operations-page .v-operation-meta code{font-size:12px}
.v-operations-page .v-operation-failures summary{cursor:pointer;font-weight:600}
.v-operations-page .v-operation-failure{padding:12px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.v-operations-page .v-operation-failure small{display:block;margin-top:4px;color:var(--muted)}
.v-operations-page .v-operation-failure p{white-space:pre-wrap;margin:6px 0}
.v-record-correction textarea{min-height:70px}
