:root{--bg:#fff;--surface:#fff;--text:#1a2332;--muted:#5a6a7a;--border:#d0d7e2;--sidebar-active:#e8f1fa;--accent:#0056a4;--accent-hover:#00407a;--accent-bg:#e8f1fa;--danger:#b42318;--radius:2px;--font:"IBM Plex Sans", "Segoe UI", sans-serif;--font-display:"IBM Plex Sans", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--font-kpi:"Inter", "Segoe UI", system-ui, sans-serif;--shadow:none;--color-nav:#0056a4;--color-nav-text:#e8f1fa;--color-nav-muted:#b3cce6;--color-nav-active:#fff;--top-nav-height:40px;--papertrail-height:36px;--side-nav-width:220px;--settings-side-nav-width:190px;--green:#2f7d4f;--alarm:#c8102e;--amber:#d98e04;--steel:#2c3e50}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;max-height:100%;margin:0;overflow:hidden}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:13px;line-height:1.45}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text);margin:0 0 .5rem;font-weight:600}p{color:var(--muted);margin:0 0 1rem}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{flex-direction:column;height:100%;display:flex;overflow:hidden}html.hub-embed,html.hub-embed body{--top-nav-height:0px}html.hub-embed .top-nav,body.hub-embed .top-nav,.app-shell--hub-embed .top-nav{display:none!important}.top-nav{height:var(--top-nav-height);background:var(--color-nav);color:var(--color-nav-text);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 .85rem;display:flex}.top-nav__logo{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--color-nav-active);margin:0;font-size:.7rem;font-weight:500}.top-nav__meta{align-items:center;gap:1rem;display:flex}.top-nav__user{color:var(--color-nav-muted);font-size:.75rem}.top-nav__user strong{color:var(--color-nav-active);font-family:var(--font-mono);font-weight:500}.top-nav__logout{border-radius:var(--radius);color:var(--color-nav-muted);background:0 0;border:1px solid #ffffff59;padding:.2rem .55rem;font-size:.7rem}.top-nav__logout:hover{color:var(--color-nav-active);border-color:#ffffffb3}.app-body{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.side-nav{height:100%;width:var(--side-nav-width);border-right:1px solid var(--border);background:var(--surface);flex-direction:column;flex-shrink:0;align-self:stretch;min-height:0;display:flex;overflow:hidden}.side-nav__brand{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:center;align-items:center;padding:1rem .85rem .85rem;display:flex}.side-nav__logo{object-fit:contain;width:100%;max-width:9.5rem;height:auto;display:block}.side-nav__scroll{flex:1;min-height:0;overflow-y:auto}.side-nav__label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:.85rem .85rem .25rem;font-size:.65rem;font-weight:500}.side-nav__list{flex-direction:column;padding:.25rem 0 .75rem;display:flex}.side-nav__link{color:var(--muted);border-left:2px solid #0000;align-items:center;gap:.55rem;padding:.45rem .85rem;font-size:.8125rem;display:flex}.side-nav__link:hover{color:var(--text);background:var(--accent-bg)}.side-nav__link--active{color:var(--accent);background:var(--accent-bg);border-left-color:var(--accent);font-weight:500}.side-nav__icon{width:1rem;height:1rem;color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.side-nav__link--active .side-nav__icon{color:var(--accent)}.side-nav__icon svg{width:100%;height:100%;display:block}.side-nav__text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;line-height:1.25;overflow:hidden}.side-nav__soon{color:var(--muted);letter-spacing:.02em;font-size:.65rem}.side-nav__footer{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:.15rem;margin-top:auto;padding:.5rem 0 .65rem;display:flex}.app-main{background:var(--bg);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.papertrail{height:var(--papertrail-height);border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;padding:0 .85rem;font-size:.75rem;display:flex}.papertrail__crumbs{flex:1;align-items:center;min-width:0;display:flex}.papertrail__project{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;max-width:55%;font-family:var(--font-mono);color:var(--text);flex-shrink:1;font-weight:500;overflow:hidden}.papertrail__root{font-family:var(--font-mono);color:var(--text);font-weight:500}.papertrail__sep{color:var(--border);margin:0 .35rem}.papertrail__current{color:var(--accent);font-weight:500}.app-main__body{flex:1;min-width:0;min-height:0;display:flex}.content{flex:1;min-width:0;min-height:0;padding:1.25rem 1.5rem;overflow:auto}.page-msg{color:var(--muted);padding:2rem}.page-lead{margin-bottom:1rem;font-size:.875rem}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:var(--radius);min-height:2rem;padding:.45rem .85rem;font-size:.8125rem;font-weight:500}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.btn-primary:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}.btn-danger{color:var(--danger);background:0 0;border-color:#e8b4ad}.btn-danger:hover:not(:disabled){color:var(--danger);border-color:var(--danger);background:#fdf2f0}.btn-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.field{flex-direction:column;gap:.35rem;margin-bottom:.9rem;display:flex}.field label{color:var(--muted);font-size:.75rem;font-weight:500}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);outline:none;width:100%;padding:.55rem .7rem}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);outline:2px solid color-mix(in srgb, var(--accent) 25%, transparent)}.field-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.field-row--3{grid-template-columns:1fr 1fr 1fr}.field-row--4{grid-template-columns:1fr 1fr 1fr 1fr}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100%;padding:2rem;display:flex}.login-form{flex-direction:column;gap:.75rem;width:100%;max-width:360px;display:flex}.login-form__logo{object-fit:contain;width:100%;max-width:11rem;height:auto;margin:0 auto .35rem;display:block}.login-form__brand{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);text-align:center;margin:0;font-size:.7rem;font-weight:500}.login-form__title{letter-spacing:-.02em;text-align:center;color:var(--text);margin:0;font-size:1.5rem;font-weight:600}.login-form__hint{color:var(--muted);text-align:center;margin:0 0 .5rem;font-size:.875rem}.login-form__label{color:var(--muted);font-size:.75rem;font-weight:500}.login-form__input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);outline:none;padding:.65rem .75rem}.login-form__input:focus{border-color:var(--accent)}.login-form__submit{border-radius:var(--radius);background:var(--accent);color:#fff;border:none;margin-top:.5rem;padding:.65rem 1rem;font-weight:500}.login-form__submit:hover:not(:disabled){background:var(--accent-hover)}.login-form__submit:disabled{opacity:.45;cursor:not-allowed}.login-form__error{color:var(--danger);margin:0;font-size:.8125rem}.pending-access{justify-content:center;align-items:center;min-height:100%;padding:2rem;display:flex}.pending-access__card{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.75rem;width:100%;max-width:26rem;padding:1.5rem;display:flex}.pending-access__brand{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:0;font-size:.7rem;font-weight:500}.pending-access__title{color:var(--text);margin:0;font-size:1.25rem}.pending-access__body{margin:0}.pending-access__back{border:1px solid var(--border);border-radius:var(--radius);color:var(--text);align-self:flex-start;padding:.4rem .75rem}.modal-backdrop{z-index:50;background:#1a23326b;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal.modal--form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;width:min(560px,100%);max-height:min(92vh,900px);padding:0;display:flex;overflow:hidden;box-shadow:0 18px 48px #1a23322e}.modal.modal--form:focus{outline:none}.modal--form-sm{width:min(480px,100%)}.modal--form-md{width:min(560px,100%)}.modal--form-lg{width:min(720px,100%)}.modal--form-xl{width:min(960px,100vw - 2rem)}.modal--form-full{width:min(1100px,100vw - 2rem);height:min(92vh,960px)}.modal--form>.modal__header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:0;padding:1.15rem 1.35rem .85rem;display:flex}.modal__heading{flex:1;min-width:0}.modal__header-actions{flex-shrink:0;align-items:center;margin-left:auto;display:flex}.modal__eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 .2rem;font-size:.65rem;font-weight:500}.modal__header h2{margin:0;font-size:1.15rem;line-height:1.35}.modal__subtitle{color:var(--muted);margin:.3rem 0 0;font-size:.8125rem}.modal__close{border-radius:var(--radius);width:2rem;height:2rem;color:var(--muted);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:1.35rem;display:inline-flex}.modal__close:hover{color:var(--text);background:var(--accent-bg)}.modal__body{flex:1;min-height:0;padding:1rem 1.35rem;overflow:auto}.modal__footer{border-top:1px solid var(--border);background:#f7f9fb;justify-content:flex-end;align-items:center;gap:.5rem;padding:.95rem 1.35rem 1.15rem;display:flex}.modal__footer .btn-danger{margin-right:auto}.modal__footer-error{color:var(--danger);margin:0 auto 0 0;font-size:.8125rem}.modal--form>.alert{flex-shrink:0;margin:1rem 1.35rem 0}.modal__error{color:var(--danger);border-radius:var(--radius);background:#fdf2f0;border:1px solid #f0d0cc;margin:.75rem 1.35rem 0;padding:.55rem .75rem;font-size:.8125rem}.modal__section-title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:.35rem 0 .75rem;font-size:.65rem;font-weight:500}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:auto}.table{border-collapse:collapse;width:100%;font-size:.8125rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:.4rem .55rem}.table th{z-index:2;color:var(--muted);font-size:.7rem;font-weight:500;font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;background:#f7f9fb;position:sticky;top:0}.table tbody tr{cursor:pointer}.table tbody tr:hover td{background:var(--accent-bg)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table thead th,.table thead th.num{text-align:center}.table th.sorted{color:var(--accent)}.table th.filtered{background:#eef4ff}.table .th-inner{justify-content:center;align-items:center;gap:.25rem;display:flex}.table .th-filter{color:#bbb;background:0 0;border:none;margin-left:auto;padding:0 .15rem;font-size:.65rem}.table th.filtered .th-filter{color:var(--accent)}.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.5rem;margin-bottom:1rem;display:grid}.stat-card{border:1px solid var(--border);border-radius:var(--radius);background:#f7f9fb;padding:.65rem .8rem}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.65rem;font-family:var(--font-mono);margin-bottom:.2rem}.stat-value{color:var(--text);font-size:1.05rem;font-weight:700}.stat-value.is-bad{color:var(--danger)}.stat-sub{color:var(--muted);margin-top:.15rem;font-size:.7rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.toolbar__right{align-items:center;gap:.5rem;margin-left:auto;display:flex}.pill{border-radius:var(--radius);background:var(--accent-bg);color:var(--accent);padding:.1rem .4rem;font-size:.7rem;font-weight:600;display:inline-block}.pill.ok{color:var(--green);background:#e5f6ea}.pill.warn{color:#8a5e00;background:#fbeed3}.pill.bad{color:var(--alarm);background:#fde8e8}.pill.open{color:var(--steel);background:#e8ecf0}.muted{color:var(--muted);font-size:.875rem}.alert{border-radius:var(--radius);margin-bottom:1rem;padding:.65rem .85rem;font-size:.875rem}.alert-error{background:color-mix(in srgb, var(--danger) 8%, white);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 25%, white)}:is(.content:has(>.board-page),.content:has(>.history-page),.content:has(>.users-page)){background:#eef2f6}.content:has(>.board-page){flex-direction:column;display:flex;overflow:hidden}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.alert-warn{color:#6b4900;background:#fbeed3;border:1px solid #f0d49a}.modal__footer .btn-danger:last-child{margin-right:0}.alert-ok{color:#1f5c39;background:#e5f6ea;border:1px solid #b9e2c7}.btn-archive{border-color:color-mix(in srgb, var(--green) 45%, white);color:var(--green);background:#f1faf4;justify-content:center;align-items:center;gap:.4rem;display:inline-flex}.btn-archive svg{flex-shrink:0;width:.95rem;height:.95rem}.btn-archive:hover:not(:disabled){border-color:var(--green);color:var(--green);background:#e5f6ea}.field__label{color:var(--muted);font-size:.75rem;font-weight:500}.req{color:var(--danger);font-weight:600}.link-btn{color:var(--accent);background:0 0;border:none;padding:0;text-decoration:underline}.board-page{flex-direction:column;flex:1;min-height:0;display:flex}.board-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.85rem;display:flex}.board-toolbar__title{margin:0 .75rem 0 0;font-size:1.15rem}.board-toolbar select{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:2rem;color:var(--text);max-width:16rem;padding:.3rem .5rem}.board-toolbar__check{color:var(--muted);align-items:center;gap:.35rem;display:inline-flex}.board-toolbar__refresh{margin-left:auto}.board-notice{align-items:center;gap:.75rem;display:flex}.board-notice__close{color:inherit;background:0 0;border:none;margin-left:auto;font-size:1.1rem;line-height:1}.board{flex:1;grid-template-columns:repeat(3,minmax(240px,1fr));gap:.85rem;min-height:0;display:grid;overflow-x:auto}.board--four{grid-template-columns:repeat(4,minmax(240px,1fr))}.board-col{border:1px solid var(--border);border-top:3px solid var(--col-tone,var(--border));border-radius:var(--radius);background:#f7f9fb;flex-direction:column;min-height:0;transition:background .12s,opacity .12s;display:flex}.board-col--requested{--col-tone:var(--accent)}.board-col--sent{--col-tone:var(--amber)}.board-col--paid{--col-tone:var(--green)}.board-col--deleted{--col-tone:var(--muted)}.board-col.is-over{background:var(--accent-bg);outline:2px dashed var(--accent);outline-offset:-4px}.board-col.is-refused{opacity:.45}.board-col__head{border-bottom:1px solid var(--border);padding:.6rem .75rem .5rem}.board-col__title{align-items:center;gap:.45rem;margin:0;font-size:.9rem;display:flex}.board-col__count{min-width:1.4rem;color:var(--steel);text-align:center;background:#e3e8ee;border-radius:999px;padding:0 .35rem;font-size:.7rem;font-weight:600}.board-col__total{font-family:var(--font-kpi);font-variant-numeric:tabular-nums;color:var(--muted);margin:.15rem 0 0;font-size:.75rem}.board-col__cards{flex-direction:column;flex:1;gap:.4rem;min-height:0;padding:.5rem;display:flex;overflow-y:auto}.board-col__empty{margin:.5rem .25rem;font-size:.8125rem}.inv-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--col-tone,var(--border));border-radius:var(--radius);cursor:grab;position:relative}.inv-card:active{cursor:grabbing}.inv-card:hover{border-color:var(--accent);border-left-color:var(--col-tone,var(--accent))}.inv-card--deleted{cursor:default;opacity:.8}.inv-card__open{text-align:left;width:100%;color:var(--text);cursor:inherit;background:0 0;border:none;flex-direction:column;gap:.05rem;padding:.35rem .55rem;line-height:1.3;display:flex}.inv-card__row{justify-content:space-between;align-items:baseline;gap:.5rem;min-width:0;display:flex}.inv-card__project,.inv-card__customer,.inv-card__detail{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.inv-card__project{font-family:var(--font-mono);color:var(--muted);font-size:.68rem;font-weight:500}.inv-card__age{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:.68rem}.inv-card__customer{font-size:.8125rem;font-weight:600}.inv-card__amount{font-family:var(--font-kpi);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.8125rem;font-weight:600}.inv-card__foot{min-height:1.4rem;color:var(--muted);justify-content:flex-start;align-items:center;gap:.3rem;font-size:.72rem}.inv-card.has-action .inv-card__foot{padding-right:5.4rem}.inv-card__pdf{width:.8rem;height:.8rem;color:var(--accent);flex-shrink:0;display:inline-flex}.inv-card__pdf svg{width:100%;height:100%}.inv-card__reason{color:var(--steel);font-size:.72rem;font-style:italic}.inv-card__actions{position:absolute;bottom:.35rem;right:.55rem}.inv-card__advance,.inv-card .btn-archive{min-height:1.4rem;padding:.05rem .5rem;font-size:.7rem}.inv-card .btn-archive svg{width:.8rem;height:.8rem}.move-summary{border:1px solid var(--border);border-radius:var(--radius);background:#f7f9fb;grid-template-columns:repeat(3,auto);justify-content:start;gap:.25rem 1.5rem;margin:0 0 1rem;padding:.6rem .75rem;display:grid}.move-summary dt,.detail-grid dt{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.65rem}.move-summary dd{margin:0;font-size:.85rem}.move-summary__amount{font-variant-numeric:tabular-nums;font-weight:600}.move-file{margin:0 0 .85rem;font-size:.8125rem}.pdf-drop{border:1px dashed var(--border);border-radius:var(--radius);min-height:4.5rem;color:var(--muted);text-align:center;cursor:pointer;justify-content:center;align-items:center;padding:.75rem;font-size:.8125rem;display:flex}.action-date{border:1px solid var(--border);border-radius:var(--radius);background:#f7f9fb;margin:0 0 .25rem;padding:.65rem .75rem .1rem}.action-date.is-changed{background:#fffaf0;border-color:#f0d49a}.action-date__row{align-items:flex-end;gap:.85rem;display:flex}.action-date__row .field{flex:0 0 11rem}.action-date__hint,.action-date__reset{margin:0 0 1.35rem;font-size:.8125rem}.action-date__hint{color:var(--muted)}.pdf-drop:hover,.pdf-drop.is-over{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.pdf-drop.has-file{color:var(--text);border-style:solid}.detail-grid{grid-template-columns:1fr 1fr;gap:.6rem 1.5rem;margin:0 0 1.25rem;display:grid}.detail-grid__row dd{color:var(--text);margin:.1rem 0 0;font-size:.85rem}.detail-section{margin-bottom:1.25rem}.detail-pdf{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.detail-pdf__name{font-size:.85rem;font-weight:500}.detail-pdf .btn{align-items:center;gap:.35rem;display:inline-flex}.detail-pdf .btn svg{width:.85rem;height:.85rem}.detail-pdf__frame{border:1px solid var(--border);width:100%;height:min(70vh,720px);margin-top:.75rem;display:block}.history{border-left:2px solid var(--border);margin:0;padding:0;list-style:none}.history__item{grid-template-columns:11rem 1fr;gap:.75rem;padding:.3rem 0 .3rem .75rem;font-size:.8125rem;display:grid}.history__when{color:var(--muted);font-variant-numeric:tabular-nums}.history__reason{color:var(--steel);font-style:italic;display:block}.history__dated{color:#8a5e00;font-size:.75rem;display:block}.history-page{max-width:1280px}.history-page__search{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:2rem;color:var(--text);flex:0 22rem;padding:.3rem .6rem}.history-page__summary{font-family:var(--font-kpi);font-variant-numeric:tabular-nums;color:var(--muted);margin:0 0 0 auto;font-size:.8125rem}.history-page__lead{margin-bottom:.85rem;font-size:.8125rem}.history-table-wrap{background:var(--surface)}.history-table thead th{text-align:left}.history-table thead th.num{text-align:right}.history-table td{vertical-align:top}.history-table tbody tr:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.history-table__job{font-family:var(--font-mono);font-weight:500}.history-table__sub{color:var(--muted);font-size:.72rem;display:block}.history-table__pdf{width:2rem;color:var(--accent)}.history-table__pdf svg{width:.9rem;height:.9rem}.users-page{max-width:960px}.users-page__title{font-size:1.15rem}.users-page__lead{font-size:.875rem}.users-table{background:var(--surface)}.users-table tbody tr{cursor:default}.users-table tbody tr:hover td{background:0 0}.users-page__eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 .15rem;font-size:.65rem}.users-table__access{border:1px solid var(--border);border-radius:var(--radius);min-height:1.8rem;padding:.15rem .45rem;font-size:.75rem;font-weight:600}.users-table__access--pending{color:#8a5e00;background:#fbeed3;border-color:#f0d49a}.users-table__access--finance{color:var(--green);background:#e5f6ea;border-color:#b9e2c7}@media (width<=760px){.board,.board--four{grid-template-columns:none;grid-auto-columns:82vw;grid-auto-flow:column}.move-summary,.detail-grid{grid-template-columns:1fr}.history__item{grid-template-columns:1fr;gap:0}}
