*,:before,:after{box-sizing:border-box}html{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-bg)}body{margin:0}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}button,a.nav-link,.touch-target{min-height:var(--touch-min);min-width:var(--touch-min)}button{font:inherit;color:var(--color-text);background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);padding:0 var(--space-4);cursor:pointer}button[aria-pressed=true]{background:var(--color-primary);color:var(--color-on-primary)}.app-shell{grid-template-rows:auto 1fr;min-height:100vh;display:grid}.app-header{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-surface);border-bottom:2px solid var(--color-border);flex-wrap:wrap;display:flex}.app-title{margin:0;font-size:1.25rem}.app-nav{gap:var(--space-2);margin-inline-end:auto;display:flex}.nav-link{padding:0 var(--space-3);color:var(--color-text);border-radius:var(--radius);align-items:center;text-decoration:none;display:inline-flex}.nav-link[aria-current=page]{background:var(--color-primary);color:var(--color-on-primary)}.unread-badge{padding:0 var(--space-2);border-radius:var(--radius);border:2px solid;margin-inline-start:var(--space-2);font-weight:700}.notification-list{padding:0;list-style:none}.notification{padding:var(--space-3);border-bottom:1px solid var(--color-border)}.notification-unread{font-weight:700}.app-main{padding:var(--space-5) var(--space-4)}.connection-indicator{align-items:center;gap:var(--space-2);min-height:var(--touch-min);padding:0 var(--space-3);border-radius:var(--radius);border:2px solid;font-weight:600;display:inline-flex}.connection-indicator[data-state=Online]{color:var(--color-state-online)}.connection-indicator[data-state=Offline],.connection-indicator[data-state=Unknown]{color:var(--color-state-offline)}.connection-indicator[data-state=Syncing]{color:var(--color-state-syncing)}.connection-indicator[data-state=SyncFailed]{color:var(--color-state-failed)}.connection-indicator[data-state=ConflictRequiresReview]{color:var(--color-state-conflict)}.connection-indicator[data-state=AwaitingShore],.connection-indicator[data-state=AwaitingShoreNotTransmitted]{color:var(--color-state-awaiting)}.connection-hint{color:var(--color-text-muted);font-weight:400}.toaster{gap:var(--space-2);max-width:min(28rem, 100vw - 2 * var(--space-4));flex-direction:column;display:flex;position:fixed;inset-block-end:var(--space-4);inset-inline-end:var(--space-4)}.toaster-live{gap:var(--space-2);flex-direction:column;display:flex}.toast{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);color:var(--color-text);background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);border-inline-start-width:8px;display:flex}.toast[data-kind=success]{border-inline-start-color:var(--color-toast-success)}.toast[data-kind=warning]{border-inline-start-color:var(--color-toast-warning)}.toast[data-kind=error]{border-inline-start-color:var(--color-toast-error)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.table-block{gap:var(--space-3);display:grid}.table-scroll{border:2px solid var(--color-border);border-radius:var(--radius);overflow-x:auto}.table{border-collapse:collapse;width:100%}.table[aria-busy=true]{opacity:.7}.table th,.table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);overflow-wrap:anywhere;vertical-align:middle}.table thead th{background:var(--color-surface);text-align:start}.table tbody tr:nth-child(2n){background:var(--color-surface)}.table [data-align=end]{text-align:end}.table-sort{align-items:center;gap:var(--space-2);background:0 0;border-color:#0000;font-weight:600;display:inline-flex}.table-sort-arrow[data-direction=none]{color:var(--color-text-muted)}.table-control{width:100%;min-width:6rem;padding:0 var(--space-2);font:inherit;color:var(--color-text);background:var(--color-bg);border:2px solid var(--color-border);border-radius:var(--radius)}.table-message,.table-empty{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.table-message{padding:var(--space-2) var(--space-3);border:2px solid var(--color-state-failed);border-radius:var(--radius);margin:0}.table-pager{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.table-pager-range{margin-inline-end:auto;font-weight:600}.table-pager-size{align-items:center;gap:var(--space-2);display:inline-flex}.table-pager button[aria-disabled=true]{color:var(--color-text-muted);cursor:not-allowed}.table-toolbar{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.table-columns-panel{gap:var(--space-2);padding:var(--space-3);border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);margin:0;list-style:none;display:grid}.table-columns-panel li{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.table-columns-panel label{align-items:center;gap:var(--space-2);min-height:var(--touch-min);margin-inline-end:auto;display:inline-flex}.table-columns-panel input[type=checkbox]{width:var(--touch-min);height:var(--touch-min)}.dev-gallery-controls{gap:var(--space-2);margin-block:var(--space-3);flex-wrap:wrap;display:flex}.document-viewer{gap:var(--space-3);display:grid}.viewer-message{gap:var(--space-3);padding:var(--space-4);border:2px solid var(--color-border);border-radius:var(--radius);display:grid}.viewer-message p{margin:0}.viewer-message-actions{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.pdf-viewer{gap:var(--space-2);grid-template-rows:auto minmax(0,1fr);height:min(85vh,1200px);min-height:24rem;display:grid}.pdf-toolbar{gap:var(--space-2) var(--space-3);padding:var(--space-2);border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);flex-wrap:wrap;align-items:center;display:flex}.pdf-toolbar input,.pdf-toolbar select{min-height:var(--touch-min);font:inherit}.pdf-toolbar-group{gap:var(--space-2);align-items:center;display:inline-flex}.pdf-page-box input{text-align:center;width:4.5em}.pdf-search input{width:12em}.pdf-search-status{min-width:6em;color:var(--color-text-muted)}.pdf-body{border:2px solid var(--color-border);border-radius:var(--radius);grid-template-columns:auto minmax(0,1fr);min-height:0;display:grid;position:relative;overflow:hidden}.pdf-sidebar{border-right:2px solid var(--color-border);background:var(--color-surface);grid-template-rows:auto minmax(0,1fr);width:12rem;min-height:0;display:grid}@media (width<=899px){.pdf-body{grid-template-columns:minmax(0,1fr)}.pdf-sidebar{z-index:2;width:min(16rem,80%);box-shadow:0 0 0 100vmax color-mix(in srgb, var(--color-text) 35%, transparent);position:absolute;inset:0 auto 0 0}}.pdf-tabs{border-bottom:2px solid var(--color-border);display:flex}.pdf-tabs [role=tab]{border-radius:0;flex:1}.pdf-tabs [aria-selected=true]{background:var(--color-primary);color:var(--color-on-primary)}.pdf-tab-panel{min-height:0;overflow:auto}.pdf-sidebar-note{padding:var(--space-3);color:var(--color-text-muted);margin:0}.pdf-thumbs{height:100%;margin:0;padding:0;list-style:none;position:relative;overflow:auto}.pdf-thumb{padding:var(--space-2);justify-content:center;display:flex;position:absolute;left:0;right:0}.pdf-thumb button{gap:var(--space-1);padding:var(--space-1);color:var(--color-text);background:0 0;border:2px solid #0000;justify-items:center;display:grid}.pdf-thumb button[aria-current=page]{border-color:var(--color-primary)}.pdf-thumb-canvas{border:1px solid var(--color-border);max-width:120px;max-height:140px;display:block}.pdf-outline,.pdf-outline ul{margin:0;padding:0;list-style:none}.pdf-outline{padding:var(--space-2) 0}.pdf-outline-item{cursor:pointer}.pdf-outline-item:focus-visible>.pdf-outline-row{outline:3px solid var(--color-focus);outline-offset:-3px}.pdf-outline-item[aria-disabled=true]>.pdf-outline-row{color:var(--color-text-muted);cursor:default}.pdf-outline-row{gap:var(--space-1);min-height:var(--touch-min);padding-inline:calc(var(--space-2) + (var(--depth,1) - 1) * var(--space-3)) var(--space-2);align-items:center;display:flex}.pdf-outline-toggle{width:var(--touch-min);flex:none;padding:0}.pdf-outline-title{overflow-wrap:anywhere}.pdf-pages{background:var(--color-bg);-webkit-overflow-scrolling:touch;min-height:0;position:relative;overflow:auto}.pdf-pages:focus-visible{outline:3px solid var(--color-focus);outline-offset:-3px}.pdf-pages-column{margin:var(--space-3) auto;position:relative}.pdf-page{--user-unit:1;--total-scale-factor:calc(var(--scale-factor) * var(--user-unit));--scale-round-x:1px;--scale-round-y:1px;border:1px solid var(--color-border);background:var(--color-surface);position:absolute;left:50%;translate:-50%}.pdf-canvas{width:100%;height:100%;display:block}.pdf-page-failed{padding:var(--space-3);text-align:center;place-items:center;margin:0;display:grid;position:absolute;inset:0}.pdf-text-layer{--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));text-align:initial;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:0;line-height:1;position:absolute;inset:0;overflow:clip}.pdf-text-layer :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}.pdf-text-layer>:not(.markedContent),.pdf-text-layer .markedContent span:not(.markedContent){--font-height:0;--scale-x:1;--rotate:0deg;z-index:1;font-size:calc(var(--text-scale-factor) * var(--font-height));transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv))}.pdf-text-layer .markedContent{display:contents}.pdf-text-layer ::selection{background:color-mix(in srgb, var(--color-primary) 30%, transparent)}.pdf-text-layer .pdf-hit{background:color-mix(in srgb, var(--color-state-syncing) 35%, transparent);border-radius:4px;margin:-1px;padding:1px}.pdf-text-layer .pdf-hit-active{background:color-mix(in srgb, var(--color-primary) 45%, transparent);outline:2px solid var(--color-focus)}:root{--color-bg:#fff;--color-surface:#f2f5f8;--color-text:#14202b;--color-text-muted:#44525f;--color-border:#b8c2cc;--color-primary:#0b5cab;--color-on-primary:#fff;--color-focus:#0b5cab;--color-state-online:#1b7a3d;--color-state-offline:#4f5b66;--color-state-syncing:#0b5cab;--color-state-failed:#b3261e;--color-state-conflict:#8a4b00;--color-state-awaiting:#6a3fa0;--color-toast-success:#1b7a3d;--color-toast-warning:#8a4b00;--color-toast-error:#b3261e;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--radius:6px;--font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;--font-size-base:16px;--touch-min:32px}:root[data-build=vessel]{--touch-min:44px}:root[data-theme=high-contrast]{--color-bg:#000;--color-surface:#000;--color-text:#fff;--color-text-muted:#fff;--color-border:#fff;--color-primary:#ffd400;--color-on-primary:#000;--color-focus:#ffd400;--color-state-online:#5dff8a;--color-state-offline:#d0d7de;--color-state-syncing:#7fc4ff;--color-state-failed:#ff8a80;--color-state-conflict:#ffc266;--color-state-awaiting:#d9b3ff}.forms-form{gap:var(--space-4);max-width:60rem;display:grid}.forms-section{gap:var(--space-4);padding:var(--space-4);border:2px solid var(--color-border);border-radius:var(--radius);display:grid}.forms-field{gap:var(--space-2);display:grid}.forms-label{font-weight:600}.forms-required,.forms-hint,.forms-help,.forms-unit{color:var(--color-text-muted);font-weight:400}.forms-help,.forms-hint{margin:0}.forms-error{color:var(--color-toast-error);margin:0;font-weight:600}:root[data-theme=high-contrast] .forms-error{color:var(--color-state-failed)}.forms-control{min-height:var(--touch-min);min-width:var(--touch-min);width:100%;padding:var(--space-2) var(--space-3);font:inherit;color:var(--color-text);background:var(--color-bg);border:2px solid var(--color-border);border-radius:var(--radius)}.forms-control[aria-invalid=true]{border-color:var(--color-toast-error);border-width:3px}.forms-control:disabled{background:var(--color-surface)}.forms-number,.forms-datetime{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.forms-number .forms-control{flex:8rem;width:auto}.forms-computed{min-height:var(--touch-min);padding:0 var(--space-3);background:var(--color-surface);border:2px dashed var(--color-border);border-radius:var(--radius);align-items:center;font-weight:600;display:inline-flex}.forms-choices{gap:var(--space-2);flex-direction:column;display:flex}.forms-choices-row{flex-flow:wrap}.forms-choice{align-items:center;gap:var(--space-3);min-height:var(--touch-min);min-width:var(--touch-min);padding:0 var(--space-3);border:2px solid var(--color-border);border-radius:var(--radius);cursor:pointer;display:inline-flex}.forms-choice input{width:1.5rem;height:1.5rem;margin:0}.forms-signature,.forms-file{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.forms-instruction{padding:var(--space-3);background:var(--color-surface);border-left:6px solid var(--color-primary);margin:0}.forms-heading{margin:0}.forms-grid{gap:var(--space-3);display:grid;overflow-x:auto}.forms-grid-table{border-collapse:collapse;width:100%}.forms-grid-table th,.forms-grid-table td{padding:var(--space-2);text-align:left;vertical-align:top;border:1px solid var(--color-border)}.forms-sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.forms-page{gap:var(--space-4);display:grid}.forms-status{margin:0;font-weight:600}.forms-status[data-status=failed],.forms-status[data-status=conflict],.forms-status[data-status=signedOut]{color:var(--color-toast-error)}:root[data-theme=high-contrast] .forms-status[data-status=failed],:root[data-theme=high-contrast] .forms-status[data-status=conflict],:root[data-theme=high-contrast] .forms-status[data-status=signedOut]{color:var(--color-state-failed)}.forms-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.forms-confirm{gap:var(--space-3);padding:var(--space-4);border:3px solid var(--color-toast-warning);border-radius:var(--radius);display:grid}.forms-history ol{padding-left:var(--space-5);margin:0}.forms-dev-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));display:grid}.forms-dev-grid pre{padding:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);overflow:auto}.upgrade-banner{gap:var(--space-2);margin-block-end:var(--space-4);display:grid}.upgrade-banner p{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:2px solid var(--color-toast-warning);border-radius:var(--radius);background:var(--color-surface);flex-wrap:wrap;margin:0;display:flex}.upgrade-banner p[data-kind=required]{border-color:var(--color-toast-error)}.upgrade-banner a{color:var(--color-primary);align-items:center;display:inline-flex}.upgrade-section{gap:var(--space-3);justify-items:start;margin-block-end:var(--space-5);display:grid}.upgrade-facts{gap:var(--space-1) var(--space-4);grid-template-columns:max-content 1fr;margin:0;display:grid}.upgrade-facts dt{font-weight:600}.upgrade-facts dd{margin:0}.upgrade-hint{color:var(--color-text-muted)}.upgrade-badge{padding:var(--space-1) var(--space-3);border:2px solid var(--color-toast-warning);border-radius:var(--radius);margin-inline-start:var(--space-3);font-size:1rem}.upgrade-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.upgrade-message{padding:var(--space-3);border:2px solid var(--color-border);border-radius:var(--radius);border-inline-start-width:8px;margin:0}.upgrade-message p{margin:0 0 var(--space-2)}.upgrade-message-ok{border-color:var(--color-toast-success)}.upgrade-message-warning{border-color:var(--color-toast-warning)}.upgrade-message-error{border-color:var(--color-toast-error)}.upgrade-message-info{border-color:var(--color-primary)}.upgrade-bar{width:min(32rem,100%);height:var(--space-4);accent-color:var(--color-primary)}.upgrade-steps{margin:0;padding-inline-start:var(--space-5)}.upgrade-steps li[data-state=current]{font-weight:700}.upgrade-steps li[data-state=pending]{color:var(--color-text-muted)}.upgrade-checks{margin:0;padding-inline-start:var(--space-5)}.upgrade-table-wrap{border:2px solid var(--color-border);border-radius:var(--radius);max-width:100%;overflow-x:auto}.upgrade-table{border-collapse:collapse;width:100%}.upgrade-table caption{padding:var(--space-2) var(--space-3);text-align:start;font-weight:600}.upgrade-table th,.upgrade-table td{padding:var(--space-2) var(--space-3);text-align:start;border-block-start:1px solid var(--color-border)}.upgrade-dialog{max-width:min(36rem, 100vw - 2 * var(--space-4));padding:var(--space-4);color:var(--color-text);background:var(--color-bg);border:2px solid var(--color-border);border-radius:var(--radius)}.upgrade-dialog::backdrop{background:var(--color-text);opacity:.6}.upgrade-form{gap:var(--space-2);display:grid}.upgrade-form textarea,.upgrade-form input{font:inherit;color:var(--color-text);background:var(--color-bg);border:2px solid var(--color-border);border-radius:var(--radius);padding:var(--space-2) var(--space-3)}
