@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url("./media/source-sans-3-latin-400-normal-QJ4BPJSY.woff2") format("woff2"),url("./media/source-sans-3-latin-400-normal-YE2KBOG6.woff") format("woff")}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:600;src:url("./media/source-sans-3-latin-600-normal-LAHJG75G.woff2") format("woff2"),url("./media/source-sans-3-latin-600-normal-2FFTEYLR.woff") format("woff")}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:700;src:url("./media/source-sans-3-latin-700-normal-Q3UVYGXF.woff2") format("woff2"),url("./media/source-sans-3-latin-700-normal-RR7KI3NX.woff") format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:700;src:url("./media/merriweather-latin-700-normal-2LFYFGH3.woff2") format("woff2"),url("./media/merriweather-latin-700-normal-2XDE6WRI.woff") format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:900;src:url("./media/merriweather-latin-900-normal-HACY6HYR.woff2") format("woff2"),url("./media/merriweather-latin-900-normal-ANBA44HA.woff") format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url("./media/ibm-plex-mono-latin-400-normal-A2WATXFY.woff2") format("woff2"),url("./media/ibm-plex-mono-latin-400-normal-4MWPPJAM.woff") format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url("./media/ibm-plex-mono-latin-500-normal-33HAQIPI.woff2") format("woff2"),url("./media/ibm-plex-mono-latin-500-normal-EJMP6L36.woff") format("woff")}:root{--navy: #1e3f80;--navy-hover: #102a5c;--gold: #c9972b;--gold-light: #f6cf6b;--page: #f2f5fa;--text: #14213d;--muted: #55627a;--card-border: #d5dbe6;--input-border: #8a97ae;--focus-ring: #f6cf6b;--error: #b3261e;--chip-ok-bg: #e7efe9;--chip-ok-text: #1d5c33;--chip-warn-bg: #fdf0d3;--chip-warn-text:#7a5200;--surface: #ffffff;--surface-2: #f5f8fc;--line: #e3e8f0;--line-2: #edf1f7;--ink-2: #3c4a60;--owing-wash: #f9edea;--paid: var(--chip-ok-text);--paid-wash: var(--chip-ok-bg);--partial: var(--chip-warn-text);--partial-wash: var(--chip-warn-bg);--owing: var(--error);--school-blue: #2a4fa8;--ink: var(--text);--ink-3: var(--muted);--paper: var(--page);--rail: var(--navy);--rail-2: var(--navy-hover);--blue: var(--navy);--blue-dark: var(--navy);--blue-deep: var(--navy);--blue-mid: var(--ink-2);--blue-light: var(--line);--blue-pale: var(--surface-2);--cream: var(--page);--cream-dark: var(--line);--cream-mid: var(--surface-2);--white: var(--surface);--text-light: var(--muted);--border: var(--card-border);--success: var(--paid);--danger: var(--owing);--warning: var(--partial);--caution: var(--partial);--caution-wash: var(--partial-wash);--accent-wash: var(--surface-2);--rule-soft: var(--line);--serif: "Merriweather", Georgia, serif;--sans: "Source Sans 3", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace;--radius: 12px;--radius-lg: 12px;--radius-sm: 8px;--shadow: none;--shadow-sm: none;--step--1: clamp(.78rem, .75rem + .12vw, .83rem);--step-0: clamp(.9rem, .87rem + .16vw, .9375rem);--step-1: clamp(1.05rem, 1rem + .26vw, 1.2rem);--step-2: clamp(1.28rem, 1.15rem + .6vw, 1.6rem);--ease: cubic-bezier(.2, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--fast: .12s;--normal: .2s;--slow: .32s;--header-h: 67px;--sidebar-w: 248px;--fs-body: 15px;--fs-input: 16px;--fs-table: 13px;--fs-small: 12px;--fs-label: 13px;--fs-h1: 1.375rem;--fs-h2: 1rem;--fs-h3: .9375rem;--input-h: 44px;--btn-h: 44px;--btn-sm-h: 44px;--input-px: .8rem;--input-py: .5rem;--btn-px: 1rem;--btn-sm-px: .75rem;--th-py: .4rem;--td-py: .4rem;--cell-px: .7rem;--row-h: auto;--card-pad: .8rem .9rem;--gap-block: 1rem;--main-pad: 1.35rem;--toolbar-pad: .7rem .85rem;--chip-py: .12rem;--chip-px: .6rem;--chip-fs: 12px;--nav-h: 44px;--nav-child-h: 44px;--so-w: 400px;--so-w-wide: 560px;--so-pad: 1rem;--so-gap: 1.1rem;--dlg-w: 420px;--dlg-pad: 1.1rem}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--page);color:var(--text);font-family:var(--sans);font-size:var(--fs-body);line-height:1.45;min-height:100vh;padding-bottom:env(safe-area-inset-bottom)}h1,h2,h3,h4{font-family:var(--serif);font-weight:700;color:var(--navy);margin-bottom:.6rem;line-height:1.25}h1{font-size:var(--fs-h1)}h2{font-size:var(--fs-h2)}h3{font-family:var(--sans);font-size:var(--fs-h3);font-weight:600}a{color:var(--navy)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}:focus-visible{outline:3px solid var(--focus-ring);outline-offset:1px;box-shadow:0 0 0 1px var(--navy)}.skip-link{position:absolute;left:.75rem;top:-4rem;z-index:2000;padding:.6rem 1rem;background:var(--navy);color:#fff;border-radius:var(--radius-sm)}.skip-link:focus{top:.5rem}.app-header{position:sticky;top:0;z-index:1100;display:flex;align-items:center;gap:1.25rem;height:var(--header-h);padding:0 1.25rem;background:var(--surface);border-bottom:3px solid var(--gold)}.app-header .brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:inherit}.app-header .crest{display:block}.brand-text{display:flex;flex-direction:column;line-height:1.25}.brand-text strong{font-family:var(--serif);font-size:.95rem;color:var(--text)}.brand-sub{font-size:.75rem;color:var(--muted)}.header-motto{margin-left:auto;font-family:var(--serif);font-size:.75rem;font-style:italic;color:var(--muted);letter-spacing:.04em}.affiliation{display:flex;align-items:center;gap:.55rem;padding-left:1.25rem;border-left:1px solid var(--line);text-decoration:none}.affiliation-text{display:flex;flex-direction:column;line-height:1.25;font-size:.75rem;color:var(--muted)}.affiliation-text strong{font-weight:600;color:var(--ink-2)}.header-user{display:flex;align-items:center;gap:.65rem;padding-left:1.25rem;border-left:1px solid var(--line);min-width:0}.user-avatar{width:36px;height:36px;border-radius:50%;background:var(--navy);color:#fff;font-weight:700;font-size:.82rem;display:flex;align-items:center;justify-content:center;flex:none}.user-details{display:flex;flex-direction:column;line-height:1.25;min-width:0}.user-name{font-weight:600;font-size:.9rem;color:var(--text);overflow-wrap:anywhere}.user-role{font-size:.75rem;color:var(--muted)}.menu-btn,.drawer-user{display:none}.app-body{display:flex;align-items:flex-start;min-height:calc(100vh - var(--header-h))}.app-sidebar{position:sticky;top:var(--header-h);width:var(--sidebar-w);flex:none;height:calc(100vh - var(--header-h));overflow-y:auto;display:flex;flex-direction:column;padding:1rem .75rem;background:var(--navy);color:#fff}.app-sidebar ul{list-style:none}.nav-list{display:flex;flex-direction:column;gap:.2rem}.nav-heading{display:flex;align-items:center;gap:.75rem;width:100%;min-height:var(--nav-h);padding:.4rem .75rem;border:0;border-radius:var(--radius-sm);background:transparent;color:#fff;font:inherit;font-size:.95rem;font-weight:600;text-align:left;text-decoration:none;cursor:pointer;transform:none;box-shadow:none}.nav-heading:hover{background:#ffffff1a}.nav-heading .nav-label{flex:1;overflow-wrap:anywhere}.nav-heading .chevron{display:inline-flex;opacity:.75;transition:transform .15s var(--ease)}.nav-group.open .chevron{transform:rotate(180deg)}.nav-group.current>.nav-heading,.nav-heading.active{background:#ffffff1f;color:var(--gold-light)}.nav-sub{display:grid;grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows .15s var(--ease),visibility 0s linear .15s}.nav-sub.open{grid-template-rows:1fr;visibility:visible;transition:grid-template-rows .15s var(--ease),visibility 0s}.nav-sub-inner{overflow:hidden;min-height:0}.nav-sub-inner ul{display:flex;flex-direction:column;gap:.1rem;margin:.2rem 0 .4rem 1.6rem;padding-left:.75rem;border-left:1px solid rgba(255,255,255,.25)}.nav-child{display:block;min-height:var(--nav-child-h);padding:.35rem .75rem;border-radius:var(--radius-sm);color:#fff;font-size:.9rem;text-decoration:none;overflow-wrap:anywhere}.nav-child:hover{background:#ffffff1a}.nav-child.active{background:#ffffff24;color:var(--gold-light);font-weight:700}.sidebar-footer{margin-top:auto;padding-top:1rem;border-top:1px solid rgba(255,255,255,.2)}.signout-btn{width:100%;min-height:44px;justify-content:flex-start;padding:.55rem .75rem;border:1px solid rgba(255,255,255,.45);border-radius:var(--radius-sm);background:transparent;color:#fff;font-weight:600;font-size:.9rem}.signout-btn:hover{background:#ffffff1f}.app-main{flex:1;min-width:0;width:100%;max-width:1400px;margin-inline:auto;padding:var(--main-pad);background:var(--page);animation:fadeInUp .3s var(--ease-out) both}.app-main:focus{outline:none;box-shadow:none}.nav-overlay{display:none}@media (max-width: 1100px){.header-motto{display:none}.header-user{margin-left:auto}}@media (max-width: 900px){:root{--header-h: 60px}.app-header{gap:.6rem;padding:0 .75rem}.affiliation,.header-motto,.header-user,.brand-sub{display:none}.brand-text strong{font-size:.88rem}.menu-btn{display:inline-flex;flex:none;width:44px;height:44px;min-height:44px;padding:0;align-items:center;justify-content:center;border:2px solid var(--navy);border-radius:var(--radius-sm);background:var(--surface);color:var(--navy)}.app-sidebar{position:fixed;top:var(--header-h);bottom:0;left:0;z-index:1000;width:min(300px,86vw);height:auto;transform:translate(-100%);visibility:hidden;transition:transform .15s var(--ease),visibility 0s linear .15s}.app-sidebar.open{transform:none;visibility:visible;transition:transform .15s var(--ease),visibility 0s}.nav-overlay.show{display:block;position:fixed;inset:var(--header-h) 0 0 0;z-index:999;background:#14213d8c}.drawer-user{display:flex;align-items:center;gap:.65rem;padding:.5rem .75rem 1rem;margin-bottom:.75rem;border-bottom:1px solid rgba(255,255,255,.2)}.drawer-user .user-avatar{background:#ffffff2e}.drawer-user .user-name,.drawer-user .user-role{color:#fff}.app-main{padding:1rem}}.field{display:block;margin-bottom:.9rem}.field label,.field span:first-child,label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:.35rem}.check input[type=checkbox],label.check input[type=checkbox]{width:auto;min-height:0;padding:0;margin:0;flex:none}label.check,.field label.check{text-transform:none;letter-spacing:normal;font-size:.9rem;font-weight:600;display:flex;align-items:center;gap:.45rem}input[type=text],input[type=password],input[type=email],input[type=number],input[type=search],input[type=date],select,textarea,.field input,.field select{width:100%;padding:var(--input-py) var(--input-px);border:1.5px solid var(--input-border);border-radius:var(--radius-sm);font-family:var(--sans);color:var(--text);background:var(--surface)}input,select,textarea{font-size:var(--fs-input);min-height:var(--input-h);transition:border-color var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}input::placeholder,textarea::placeholder{color:#66738b;opacity:1}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--navy)}.field .error,span.error{display:block;margin-top:.3rem;color:var(--error);font-size:.8125rem;font-weight:600}button,.btn,.button-link{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:var(--btn-h);padding:.35rem var(--btn-px);border:1.5px solid var(--navy);border-radius:var(--radius-sm);background:var(--navy);color:#fff;font-family:var(--sans);font-size:.95rem;font-weight:600;text-decoration:none;cursor:pointer;transition:background var(--fast) var(--ease),border-color var(--fast) var(--ease)}button:where(:not(.bare)):hover:not([disabled]),.btn:hover:not([disabled]){background:var(--navy-hover);border-color:var(--navy-hover)}button:where(:not(.bare)):active:not(:disabled),.btn:active:not(:disabled){transform:translateY(1px)}button.secondary,.btn-outline{background:var(--surface);color:var(--navy);border:2px solid var(--navy)}button.secondary:hover:not([disabled]),.btn-outline:hover:not([disabled]){background:var(--surface-2);border-color:var(--navy-hover);color:var(--navy-hover)}td button,td .btn,.row-actions button,.row-actions .btn,.btn-sm{min-height:var(--btn-sm-h);padding:.25rem var(--btn-sm-px);font-size:.88rem}button.link-btn{background:none;border:0;padding:0 .25rem;min-height:var(--btn-sm-h);color:var(--navy);text-decoration:underline;text-underline-offset:2px;text-align:left;font:inherit}.btn-primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn-success{background:var(--paid);border-color:var(--paid);color:#fff}.btn-danger{background:var(--surface);color:var(--owing);border:1px solid var(--card-border)}.btn-gold{background:var(--surface);color:var(--ink-2);border:1px solid var(--card-border)}.btn-danger:hover:not([disabled]),.btn-gold:hover:not([disabled]){background:var(--surface-2);border-color:var(--input-border)}.btn-danger:hover:not([disabled]){color:var(--owing)}.btn-gold:hover:not([disabled]){color:var(--text)}button[disabled],.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;border-bottom:2px solid var(--card-border)}.tabs button,.tab-btn{margin-bottom:-2px;min-height:var(--btn-sm-h);padding:.35rem 1rem;border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;color:var(--muted);font-size:.88rem;font-weight:600;box-shadow:none}.tabs button:hover,.tab-btn:hover{color:var(--navy);background:var(--surface-2)}.tabs button.active,.tab-btn.active{color:var(--navy);border-bottom-color:var(--navy);font-weight:700}.card{background:var(--surface);border:1px solid var(--card-border);border-radius:var(--radius);padding:var(--card-pad);margin-bottom:var(--gap-block)}.card-title{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem;font-family:var(--serif);font-size:var(--fs-h2);font-weight:700;color:var(--navy)}table,.results-table{width:100%;border-collapse:collapse;margin-top:.5rem;background:var(--surface);border:1px solid var(--card-border);border-radius:var(--radius-sm);overflow:hidden;font-size:var(--fs-table)}thead th,.results-table th,.reg-preview-table th{padding:var(--th-py) var(--cell-px);background:var(--surface-2);color:var(--ink-2);font-size:var(--fs-small);font-weight:600;text-align:left;white-space:nowrap;border-bottom:1px solid var(--card-border)}tbody td,.results-table td,.reg-preview-table td{padding:var(--td-py) var(--cell-px);height:var(--row-h);border-bottom:1px solid var(--line-2);color:var(--text)}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}td.right,th.right,.amount,.money{text-align:right;white-space:nowrap}.mono,td .mono,.amount,.money{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}td .mono,.student-reg{color:var(--school-blue)}td.right .mono,.amount,.money{color:var(--text)}.amount.owing,td .mono.owing{color:var(--owing)}.amount.paid,td .mono.paid{color:var(--paid)}.kpis,.kpi-grid{display:flex;flex-wrap:wrap;gap:1.1rem;margin-bottom:var(--gap-block);padding:.6rem .85rem;background:var(--surface);border:1px solid var(--card-border);border-radius:var(--radius)}.kpi,.kpi-card{display:flex;align-items:baseline;gap:.4rem}.kpi .value,.kpi-num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:1.05rem;font-weight:500;color:var(--text)}.kpi .label,.kpi-label{font-size:.75rem;color:var(--muted)}.kpi.good .value,.kpi.good .kpi-num{color:var(--paid)}.kpi.bad .value,.kpi.bad .kpi-num{color:var(--owing)}.state-dot{display:inline-block;width:6px;height:6px;margin-right:.5rem;border-radius:50%;vertical-align:.5px;flex:none}.state-dot.paid{background:var(--paid)}.state-dot.partial{background:var(--partial)}.state-dot.unpaid{background:var(--owing)}.badge,.tag{display:inline-block;font-size:var(--fs-small);font-weight:500}.badge.paid,.badge.approved,.badge.verified,.tag-paid{color:var(--paid)}.badge.unpaid,.badge.rejected,.tag-unpaid{color:var(--owing)}.badge.partial,.badge.pending,.tag-partial{color:var(--partial)}.badge.neutral{color:var(--muted)}.banner,.alert{display:flex;align-items:flex-start;gap:.7rem;margin-bottom:1rem;padding:.6rem .8rem;border:1px solid var(--owing);border-left-width:4px;border-radius:var(--radius-sm);background:var(--owing-wash);color:var(--owing);font-size:.82rem;line-height:1.5}.banner.ok,.alert-success{border-color:var(--paid);background:var(--paid-wash);color:var(--paid)}.banner.notice,.alert-info{border-color:var(--navy);background:var(--surface-2);color:var(--navy)}.alert-warning{border-color:var(--partial);background:var(--partial-wash);color:var(--partial)}.drop,.upload-zone{padding:2rem 1.5rem;border:2px dashed var(--input-border);border-radius:var(--radius);background:var(--surface-2);color:var(--muted);text-align:center;cursor:pointer}.drop:hover,.upload-zone:hover{border-color:var(--navy);color:var(--navy)}.drop input[type=file],.upload-zone input[type=file]{display:none}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin-bottom:var(--gap-block);padding:var(--toolbar-pad);background:var(--surface);border:1px solid var(--card-border);border-radius:var(--radius)}.toolbar .grow{flex:1;min-width:12rem}.toolbar .field{margin-bottom:0}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(14rem,100%),1fr));gap:.7rem}.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(11rem,100%),1fr));gap:.7rem}.row-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.muted{color:var(--muted)}.right{text-align:right}dialog::backdrop{background:#14213d8c}dialog{width:100%;max-width:min(38rem,92vw);padding:1.25rem;border:1px solid var(--card-border);border-radius:var(--radius);background:var(--surface);color:var(--text);animation:popIn .2s var(--ease-out) both}.spinner{display:inline-block;width:18px;height:18px;border:2.5px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.skeleton{height:1rem;background:var(--line);border-radius:var(--radius-sm);animation:shimmer 1.4s linear infinite}.skeleton+.skeleton{margin-top:.6rem}.skeleton.half{width:55%}.skeleton.short{width:30%}.skeleton.row{height:2.6rem}.skeleton.block{height:5.5rem;border-radius:var(--radius)}.loading-block{padding:.25rem 0}.progress{position:fixed;top:0;left:0;right:0;height:3px;overflow:hidden;z-index:2000;pointer-events:none}.progress:after{content:"";display:block;height:100%;background:var(--gold);animation:indeterminate 1.1s var(--ease) infinite}@media (max-width: 768px){.grid-2,.grid-3,.kpi-grid{grid-template-columns:1fr}}@media (max-width: 760px){table.responsive thead{display:none}table.responsive,table.responsive tbody{display:block}table.responsive tr{display:block;margin-bottom:.6rem;padding:.7rem .9rem;background:var(--surface);border:1px solid var(--card-border);border-radius:var(--radius-sm)}table.responsive td{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.3rem 0;border:none;text-align:right}table.responsive td:before{content:attr(data-label);flex-shrink:0;color:var(--muted);font-family:var(--sans);font-size:var(--step--1);font-weight:600;text-align:left}table.responsive td:empty{display:none}table:not(.responsive){display:block;overflow-x:auto;white-space:nowrap}}@media (max-width: 560px){.toolbar{flex-direction:column;align-items:stretch}.toolbar .field,.toolbar button,.toolbar .btn,.toolbar .button-link{width:100%}.row-actions{flex-direction:column}.row-actions button,.row-actions .btn,.row-actions .button-link{width:100%;justify-content:center}.kpis,.kpi-grid{grid-template-columns:repeat(2,1fr)}h1{font-size:var(--step-1)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{opacity:.55}50%{opacity:1}to{opacity:.55}}@keyframes indeterminate{0%{transform:translate(-100%) scaleX(.3)}50%{transform:translate(0) scaleX(.6)}to{transform:translate(100%) scaleX(.3)}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}}@media print{.app-header,.app-sidebar,.nav-overlay,.progress,.offline-bar,.toolbar,.row-actions,button,nav{display:none!important}body{background:#fff}.app-main{padding:0}.card{border:1px solid #ccc;break-inside:avoid}.att-print-hidden{display:none!important}.att-print-path{display:block!important;position:static!important;overflow:visible!important;height:auto!important;max-height:none!important;width:auto!important;padding:0!important;margin:0!important;border:0!important;background:#fff!important}}@page{size:A4 portrait;margin:15mm}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.ui-field{margin-bottom:.8rem;min-width:0}.ui-field-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.3rem}.ui-field label{margin:0;font-size:var(--fs-label);font-weight:600;letter-spacing:normal;text-transform:none;color:var(--text)}.ui-label{font-size:var(--fs-label);font-weight:600;color:var(--text)}app-field,app-form-section{display:block;min-width:0}.toolbar .ui-field{margin-bottom:0}.ui-req{font-size:var(--fs-small);color:var(--muted);white-space:nowrap}.ui-hint{margin:0 0 .3rem;font-size:var(--fs-small);color:var(--muted)}.ui-error{margin:.25rem 0 0;font-size:var(--fs-label);font-weight:600;color:var(--error)}.ui-field.invalid input,.ui-field.invalid select,.ui-field.invalid textarea{border-color:var(--error)}.ui-field select,.ui-field input,.ui-field textarea{width:100%}.ui-field textarea{min-height:96px}.choice-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(11.5rem,1fr));gap:.75rem;border:0}.choice-tile{display:block;position:relative;padding:.85rem 1rem .85rem 2.6rem;border:2px solid var(--input-border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;text-transform:none;letter-spacing:normal;margin:0}.choice-tile input{position:absolute;left:.9rem;top:1rem;width:1.15rem;height:1.15rem;min-height:0;accent-color:var(--navy)}.choice-tile strong{display:block;font-size:.95rem;color:var(--text)}.choice-tile span{display:block;font-size:.85rem;font-weight:400;color:var(--muted)}.choice-tile:has(input:checked){border-color:var(--navy);background:var(--surface-2)}.choice-tile:has(input:focus-visible){outline:3px solid var(--focus-ring);outline-offset:1px}.numbered,dialog.slide-over .so-body{counter-reset:formsection}.form-section{counter-increment:formsection;margin-bottom:var(--so-gap)}.fs-title{display:flex;align-items:center;gap:.6rem;margin:0 0 .25rem;padding-bottom:.35rem;border-bottom:1px solid var(--card-border);font-family:var(--serif);font-size:var(--fs-h2);font-weight:700;color:var(--navy)}.fs-num{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;flex:none;border-radius:50%;background:var(--navy);color:#fff;font-family:var(--sans);font-size:.85rem;font-weight:600}.fs-num:before{content:counter(formsection)}.fs-hint{margin:.4rem 0 0;font-size:var(--fs-small);color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 .8rem;margin-top:.6rem}.form-grid>.span-2,.form-grid>.choice-tiles,.form-grid>.alert{grid-column:1 / -1}body:has(dialog[open]){overflow:hidden}dialog.slide-over{position:fixed;inset:0 0 0 auto;width:var(--so-w);max-width:calc(100vw - 48px);height:100vh;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-left:1px solid var(--card-border);border-radius:0;background:var(--surface);animation:slideInRight .15s var(--ease-out) both}dialog.slide-over.wide{width:var(--so-w-wide)}dialog.slide-over::backdrop{background:#14213d8c}.so-form{display:flex;flex-direction:column;height:100%}.so-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem var(--so-pad);border-bottom:3px solid var(--gold)}.so-head h2{margin:0;font-size:var(--fs-h2)}.so-head h2:focus{outline:none;box-shadow:none}.so-close{width:var(--btn-sm-h);height:var(--btn-sm-h);min-height:var(--btn-sm-h);padding:0;display:inline-flex;align-items:center;justify-content:center;border:2px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--navy)}.so-close:hover{background:var(--surface-2)}.so-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--so-pad);background:var(--surface);container-type:inline-size}.so-foot{display:flex;justify-content:flex-end;gap:.6rem;padding:.55rem var(--so-pad);border-top:1px solid var(--card-border);background:var(--surface)}@keyframes slideInRight{0%{transform:translate(32px);opacity:0}to{transform:none;opacity:1}}dialog.slide-over .form-grid{grid-template-columns:1fr}@container (min-width: 520px){dialog.slide-over .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@keyframes sheetUp{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}@media (max-width: 600px){dialog.slide-over,dialog.slide-over.wide{inset:auto 0 0;width:100vw;max-width:100vw;height:auto;max-height:90vh;max-height:90dvh;overflow:hidden;border-left:0;border-top:3px solid var(--gold);border-radius:16px 16px 0 0;animation:sheetUp .15s var(--ease-out) both}.so-form{height:auto;max-height:90vh;max-height:90dvh}.so-foot{padding-bottom:max(.55rem,env(safe-area-inset-bottom))}.form-grid{grid-template-columns:1fr}.so-foot>button{flex:1}}dialog.ui-dialog{width:min(var(--dlg-w),calc(100vw - 2rem));max-width:min(var(--dlg-w),calc(100vw - 2rem));max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);overflow-y:auto;margin:auto;padding:var(--dlg-pad);border-top:3px solid var(--gold)}dialog.ui-dialog::backdrop{background:#14213d8c}.ui-dialog-title{margin:0 0 .4rem;font-size:var(--fs-h2)}.ui-dialog-title:focus{outline:none;box-shadow:none}.ui-dialog-message{margin:0 0 .8rem;color:var(--text)}.ui-dialog-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.9rem}button.btn-danger-solid{background:var(--error);border-color:var(--error)}button.btn-danger-solid:hover:not([disabled]){background:#8c1d17;border-color:#8c1d17}@media (max-width: 480px){.ui-dialog-actions{flex-direction:column-reverse}.ui-dialog-actions>button{width:100%}}.notice-host{position:fixed;top:calc(var(--header-h) + .75rem);right:1rem;z-index:3000;width:min(26rem,calc(100vw - 2rem));pointer-events:none}.notice-host>div{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem}.toast{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;margin:0;padding:.55rem .8rem;border:1px solid;border-left-width:4px;border-radius:var(--radius-sm);background:var(--surface);font-weight:600;pointer-events:auto;animation:fadeIn .15s var(--ease) both}.toast-success{border-color:var(--chip-ok-text);color:var(--chip-ok-text);background:var(--chip-ok-bg)}.toast-error{border-color:var(--error);color:var(--error);background:var(--owing-wash)}.toast-x{min-width:32px;min-height:32px;padding:0;background:transparent;border:0;color:inherit;font-size:1.25rem;line-height:1}.notice{padding:.55rem .8rem;margin-bottom:.8rem;border:1px solid;border-left-width:4px;border-radius:var(--radius-sm);font-size:var(--fs-body)}.notice strong{display:block;margin-bottom:.15rem}.notice-info{border-color:var(--navy);background:var(--surface-2);color:var(--text)}.notice-success{border-color:var(--chip-ok-text);background:var(--chip-ok-bg);color:var(--chip-ok-text)}.notice-warning{border-color:var(--chip-warn-text);background:var(--chip-warn-bg);color:var(--chip-warn-text)}.notice-error{border-color:var(--error);background:var(--owing-wash);color:var(--error)}.chip{display:inline-block;padding:var(--chip-py) var(--chip-px);border-radius:999px;font-size:var(--chip-fs);font-weight:600;white-space:nowrap}.chip-ok{background:var(--chip-ok-bg);color:var(--chip-ok-text)}.chip-warn{background:var(--chip-warn-bg);color:var(--chip-warn-text)}.chip-error{background:var(--owing-wash);color:var(--error)}.chip-neutral{background:var(--line-2);color:var(--ink-2)}.stat-tile{padding:.65rem .85rem;background:var(--surface);border:1px solid var(--card-border);border-radius:var(--radius)}.stat-label{font-size:var(--fs-small);color:var(--muted)}.stat-value{font-family:var(--serif);font-size:1.4rem;font-weight:700;color:var(--navy);line-height:1.2}.stat-value.money{font-family:var(--mono);font-weight:500;font-size:1.25rem;text-align:left}.stat-hint{font-size:var(--fs-small);color:var(--muted)}.tone-ok .stat-value{color:var(--chip-ok-text)}.tone-warn .stat-value{color:var(--chip-warn-text)}.tone-error .stat-value{color:var(--error)}.page-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1rem;margin-bottom:var(--gap-block)}.page-header h1{margin-bottom:.2rem}.page-header p{max-width:60ch}.ph-actions:empty{display:none}.dt-scroll{max-height:70vh;overflow:auto;border:1px solid var(--card-border);border-radius:var(--radius);background:var(--surface)}.dt-scroll table{margin:0;border:0;border-radius:0}.dt-scroll thead th{position:sticky;top:0;z-index:1}.dt-loading{padding:.5rem 0}.empty-state{padding:1.5rem 1rem;text-align:center;background:var(--surface);border:1px dashed var(--input-border);border-radius:var(--radius)}.empty-state h3,.empty-state .empty-title{margin:0 0 .25rem;font-family:var(--serif);font-size:1.05rem;color:var(--navy)}.empty-state p{margin-bottom:1rem}.empty-state .empty-title{margin-bottom:.25rem}.empty-state button{margin-top:.5rem}@media (max-width: 760px){.dt-scroll{max-height:none;overflow:visible;border:0;background:transparent}}tr.row-flash>td{animation:rowFlash 3s ease-out both}@keyframes rowFlash{0%{background:var(--gold-light)}to{background:transparent}}@media (prefers-reduced-motion: reduce){tr.row-flash>td{animation:none;background:var(--chip-warn-bg)}}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr));gap:.65rem;margin-bottom:var(--gap-block)}a.stat-link{display:block;text-decoration:none;color:inherit;border-radius:var(--radius)}a.stat-link:hover .stat-tile{border-color:var(--navy)}label.inv-check{display:flex;align-items:center;gap:.6rem;min-height:44px;margin:0;text-transform:none;letter-spacing:normal;font-size:.9rem;font-weight:600;color:var(--text)}label.inv-check input[type=checkbox]{width:1.4rem;height:1.4rem;min-height:0;margin:0;flex:none;accent-color:var(--navy)}input[type=file].file-input{padding:1.1rem;border:2px dashed var(--input-border);background:var(--surface-2);color:var(--ink-2);cursor:pointer;min-height:56px}input[type=file].file-input:hover{border-color:var(--navy)}input[type=file].file-input:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-color:var(--navy)}input[type=file].file-input::file-selector-button{margin-right:.9rem;min-height:40px;padding:.4rem .9rem;border:1.5px solid var(--navy);border-radius:var(--radius-sm);background:var(--surface);color:var(--navy);font-weight:600;font-family:var(--sans);cursor:pointer}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(10.5rem,100%),1fr));gap:.6rem;margin-bottom:var(--gap-block)}input:not([type]){width:100%;padding:.68rem .9rem;border:1.5px solid var(--input-border);border-radius:var(--radius-sm);font-family:var(--sans);color:var(--text);background:var(--surface)}input:not([type]):focus-visible{border-color:var(--navy)}@media (pointer: fine),(min-width: 900px){:root{--fs-body: 14px;--fs-input: 14px;--fs-table: 13px;--fs-small: 12px;--fs-label: 13px;--fs-h1: 22px;--fs-h2: 16px;--fs-h3: 14px;--input-h: 36px;--btn-h: 36px;--btn-sm-h: 30px;--input-px: .65rem;--input-py: .25rem;--btn-px: .85rem;--btn-sm-px: .6rem;--th-py: 6px;--td-py: 6px;--cell-px: 10px;--row-h: 36px;--card-pad: .65rem .8rem;--gap-block: .85rem;--main-pad: 1.25rem;--toolbar-pad: .55rem .75rem;--chip-py: .05rem;--chip-px: .5rem;--nav-h: 36px;--nav-child-h: 36px;--sidebar-w: 220px;--so-pad: .85rem;--so-gap: .9rem;--dlg-pad: 1rem}}@media (pointer: coarse),(max-width: 600px){:root{--fs-body: 15px;--fs-input: 16px;--input-h: 44px;--btn-h: 44px;--btn-sm-h: 44px;--input-px: .8rem;--input-py: .5rem;--btn-px: 1rem;--btn-sm-px: .75rem;--th-py: .4rem;--td-py: .4rem;--cell-px: .7rem;--row-h: auto;--chip-py: .12rem;--chip-px: .6rem;--nav-h: 44px;--nav-child-h: 44px;--sidebar-w: 248px}}@media (min-width: 761px){.dt-scroll thead th:first-child,.dt-scroll tbody td:first-child,.dt-scroll tfoot td:first-child{position:sticky;left:0;background:var(--surface)}.dt-scroll thead th:first-child{z-index:3;background:var(--surface-2)}.dt-scroll tbody td:first-child,.dt-scroll tfoot td:first-child{z-index:1}.dt-scroll tbody tr:hover td:first-child{background:var(--surface-2)}}@media (max-width: 1100px){table:not(.responsive):not(.results-table):not(.sheet-table){display:block;max-width:100%;overflow-x:auto}}@media (min-width: 761px) and (max-width: 1100px){.dt-scroll table:not(.responsive){display:table}}img,video{max-width:100%}@media (max-width: 600px){.toolbar>*,.toolbar .ui-field,.toolbar .grow{min-width:0;width:100%}.page-header{flex-direction:column;align-items:stretch}.ph-actions{display:flex;flex-wrap:wrap;gap:.5rem}}
