@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,450;9..144,560&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--ink: #152a3d;--ink-2: #e8eef4;--ink-3: #f4f7fa;--surface: #ffffff;--brass: #1a4d6b;--brass-bright: #246184;--signal: #b42318;--ok: #2f6b4f;--steel: #5c7388;--amber: #a97b00;--line: rgba(21, 42, 61, .12);--text: #152a3d;--text-soft: #4a6275;font-family:IBM Plex Sans,sans-serif;font-size:14px;color:var(--text);background:var(--ink-3);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box;margin:0;padding:0}body{min-width:320px;min-height:100vh;background:var(--ink-3)}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.app{min-height:100vh;display:flex;flex-direction:column;background:var(--ink-3)}.topnav{position:relative;z-index:100;display:flex;align-items:center;gap:28px;padding:14px 32px;border-bottom:1px solid var(--line);background:var(--surface)}.topnav-brand{display:flex;align-items:center;gap:10px}.brand-name{font-family:Fraunces,serif;font-weight:560;font-size:18px;color:var(--ink)}.topnav-links{display:flex;align-items:center;gap:4px}.topnav-links a{padding:8px 12px;border-radius:3px;font-size:13.5px;color:var(--text-soft)}.topnav-links a:hover{background:var(--ink-2);color:var(--ink)}.topnav-links a.active{background:var(--ink-2);color:var(--ink);box-shadow:inset 0 -2px 0 var(--brass)}.topnav-right{margin-left:auto;display:flex;align-items:center;gap:14px}.role-label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.profile-link{display:flex;align-items:center;gap:14px;text-decoration:none;border-radius:20px}.profile-link:hover .role-label,.profile-link.active .role-label{color:var(--ink)}.profile-link:hover .avatar,.profile-link.active .avatar{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--brass)}.org-switcher{display:flex;align-items:center;gap:8px}.org-switcher-label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.org-switcher .ss-combobox{width:230px}.org-switcher .ss-input{padding:6px 32px 6px 10px;font-size:13px}.org-switcher--error{font-size:12px;color:var(--signal)}.avatar{width:32px;height:32px;border-radius:50%;background:var(--brass);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px}.main{padding:32px;max-width:1280px;width:100%;margin:0 auto;animation:rise .45s ease-out}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:26px}.page-head h1{font-family:Fraunces,serif;font-weight:560;font-size:26px;line-height:1.2;color:var(--ink)}.page-head p{color:var(--steel);font-size:13px;margin-top:4px}.page-head-actions{display:flex;align-items:center;gap:10px;flex:none;padding-top:2px}.section-label{display:flex;align-items:center;gap:10px;font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--steel);margin-bottom:14px}.section-label:before{content:"";width:18px;height:1px;background:var(--steel)}.attention-block{margin-bottom:38px}.attention-list{border:1px solid var(--line);background:var(--surface)}.attn-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;background:var(--surface);border-bottom:1px solid var(--line);border-left:2px solid var(--brass)}.attn-row:last-child{border-bottom:none}.attn-row--urgent{border-left-color:var(--signal)}.attn-row-main h4{font-family:Fraunces,serif;font-size:15px;font-weight:560;margin:0 0 4px;color:var(--ink)}.attn-row-main p{font-size:12.5px;color:var(--steel)}.attn-row-due{flex:none;font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--brass);text-align:right}.attn-row--urgent .attn-row-due{color:var(--signal)}.attention-toggle{display:block;width:100%;margin-top:0;padding:12px 18px;border:1px solid var(--line);border-top:none;background:var(--ink-2);color:var(--brass);font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;text-align:left}.attention-toggle:hover{color:var(--ink)}.syard{border:1px solid var(--line);background:var(--surface)}.syard-row{width:100%;display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:14px;padding:16px 18px;border:none;border-bottom:1px solid var(--line);background:var(--surface);color:inherit;text-align:left}.syard-row:hover{background:var(--ink-2)}.syard-row .chev{color:var(--steel);transition:transform .15s;font-size:14px}.syard-row.open .chev{transform:rotate(90deg);color:var(--brass)}.sy-name{font-family:Fraunces,serif;font-weight:560;font-size:15px;color:var(--ink)}.sy-name .sub,.v-name .sub{display:block;font-family:IBM Plex Sans,sans-serif;font-weight:400;font-size:11.5px;color:var(--steel);margin-top:2px}.v-name .sub{font-family:IBM Plex Mono,monospace;font-size:10.5px}.pending{font-size:12.5px;color:var(--steel)}.pending strong{color:var(--ink);font-weight:500}.vessels.show{background:var(--ink-3)}.vrow{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 18px 13px 46px;border-bottom:1px solid var(--line);font-size:13px;background:var(--surface)}.v-name{font-weight:500;color:var(--ink)}.badge{font-family:IBM Plex Mono,monospace;font-size:10.5px;padding:3px 9px;display:inline-block;border:1px solid;letter-spacing:.03em;white-space:nowrap}.badge.low{color:var(--ok);border-color:var(--ok)}.badge.med{color:var(--brass);border-color:var(--brass)}.badge.high{color:var(--signal);border-color:var(--signal)}.empty-note,.error-note{color:var(--steel);margin-bottom:20px}.error-note{color:var(--signal)}.sign-out-btn{border:1px solid var(--line);background:transparent;color:var(--steel);font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:7px 10px;border-radius:3px}.sign-out-btn:hover{color:var(--ink);border-color:var(--brass)}.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--steel);font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.06em;text-transform:uppercase;background:var(--ink-3)}.login-page{position:relative;min-height:100vh;display:flex;align-items:center;overflow:hidden;color:var(--ink)}.login-backdrop{position:absolute;inset:0;background:url(/login-shipyard.jpg) center / cover no-repeat;transform:scale(1.02);animation:login-drift 18s ease-in-out infinite alternate}.login-scrim{position:absolute;inset:0;background:linear-gradient(105deg,#f4f7faf0,#f4f7fadb 38%,#f4f7fa47 72%,#f4f7fa14)}.login-content{position:relative;z-index:1;width:min(420px,100%);padding:48px 40px;margin-left:clamp(24px,8vw,96px);animation:rise .55s ease-out both}.login-brand{margin-bottom:14px;animation:login-fade .7s ease-out both}.login-brand-name{font-family:Fraunces,serif;font-weight:560;font-size:clamp(28px,4vw,40px);line-height:1.1;letter-spacing:-.01em;color:var(--ink)}.login-tagline{color:var(--text-soft);font-size:15px;margin-bottom:36px;max-width:28ch;animation:login-fade .7s ease-out .08s both}.login-form{display:flex;flex-direction:column;gap:18px;animation:rise .55s ease-out .12s both}.login-field{display:flex;flex-direction:column;gap:8px}.login-field span{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.login-field input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:3px;background:#ffffffeb;color:var(--ink);font-family:inherit;font-size:15px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.login-field input:focus{border-color:var(--brass);box-shadow:0 0 0 3px #1a4d6b1f}.login-field input:disabled{opacity:.65}.login-error{color:var(--signal);font-size:13px}.login-hint{color:var(--text-soft);font-size:14px}.login-notice{color:var(--ok);font-size:13px}.login-actions{margin-top:6px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px}.login-link{padding:0;border:none;background:none;color:var(--brass);font-family:inherit;font-size:13px;cursor:pointer}.login-link:hover:not(:disabled){color:var(--brass-bright);text-decoration:underline}.login-link:disabled{opacity:.6;cursor:default}.login-submit{padding:12px 22px;border:none;border-radius:3px;background:var(--brass);color:#fff;font-weight:600;font-size:14px;transition:background .15s ease}.login-submit:hover:not(:disabled){background:var(--brass-bright)}.login-submit:disabled{opacity:.7;cursor:default}@keyframes login-fade{0%{opacity:0}to{opacity:1}}@keyframes login-drift{0%{transform:scale(1.02) translateZ(0)}to{transform:scale(1.06) translate3d(-1.2%,.6%,0)}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.main--shipyards{max-width:none;min-width:0}.shipyards{display:flex;flex-direction:column;gap:18px}.shipyard-card{border:1px solid var(--line);background:var(--surface)}.shipyard-card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid var(--line);background:var(--ink-2)}.shipyard-card-head h2{font-family:Fraunces,serif;font-weight:560;font-size:16px;color:var(--ink)}.shipyard-card-head p{font-size:12.5px;color:var(--steel);margin-top:2px}.shipyard-card-title{min-width:0}.shipyard-card-title-row{display:flex;align-items:center;gap:8px;min-width:0}.shipyard-card-title-row h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shipyard-card-actions{display:flex;align-items:center;gap:12px;flex:none}.shipyard-card-actions>span{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--brass)}.shipyard-card-actions .btn{padding:6px 12px;font-size:12px}.vessel-list{display:flex;flex-direction:column}.vessel-list-empty{padding:16px 18px;margin:0}.vessel-block{border-bottom:1px solid var(--line)}.vessel-block:last-child{border-bottom:none}.vessel-block-head{width:100%;display:flex;align-items:center;gap:12px;padding:14px 18px;border:none;background:transparent;color:inherit;text-align:left}.vessel-block-head .chev{color:var(--steel);font-size:14px;transition:transform .15s}.vessel-block-head.open .chev{transform:rotate(90deg);color:var(--brass)}.vessel-block-name{font-weight:500;color:var(--ink)}.vessel-block-name .sub{display:block;font-family:IBM Plex Mono,monospace;font-size:10.5px;font-weight:400;color:var(--steel);margin-top:2px}.vessel-block-loading{margin-left:auto;font-size:12.5px;color:var(--steel)}.shipyard-edit-btn,.vessel-edit-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--line);border-radius:3px;background:transparent;color:var(--steel);font-size:13px;line-height:1;flex:none;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease,border-color .12s ease}.shipyard-card:hover .shipyard-edit-btn,.vessel-block:hover .vessel-edit-btn,.shipyard-edit-btn:focus-visible,.vessel-edit-btn:focus-visible{opacity:1}.shipyard-edit-btn:hover,.vessel-edit-btn:hover{background:var(--surface);border-color:var(--brass);color:var(--brass)}.vessel-block-row{display:flex;align-items:center;background:var(--surface)}.vessel-block-row--toggle:hover{background:var(--ink-2)}.vessel-block-row .vessel-edit-btn{margin-right:14px}.vessel-block-row .vessel-block-head{flex:1;min-width:0;width:auto}.vessel-block-label{flex:1;min-width:0;padding:14px 18px}.vessel-block-action{flex:none;margin:0 14px 0 0}.assign-vessel-fixed{margin:0;font-weight:500;color:var(--ink)}.vessel-gantt{background:var(--ink-3);padding:14px 18px 18px}.vessel-gantt.error-note{padding:18px;margin:0}.gantt{width:100%;min-width:0;max-width:100%}.gantt-legend{display:flex;gap:16px;flex-wrap:wrap;padding:8px 12px;margin:2px 0 12px;background:var(--ink-3);border:1px solid var(--line);border-radius:4px}.gantt-legend span{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;color:var(--ink)}.gantt-key{width:14px;height:14px;border-radius:3px;border:1px solid rgba(0,0,0,.12)}.gantt-key--not-started{background:var(--steel)}.gantt-key--in-progress{background:var(--brass)}.gantt-key--completed{background:var(--ok)}.gantt-key--on-hold{background:var(--amber)}.gantt-scroll{position:relative;width:100%;max-width:100%;overflow-x:auto;border:1px solid var(--line);background:var(--surface)}.gantt-timeline{position:relative;width:100%}.gantt-scroll:focus-visible{outline:2px solid var(--steel);outline-offset:2px}.gantt-timeline .gantt-label{position:sticky;left:0;z-index:3}.gantt-head{display:flex;min-width:900px;border-bottom:1px solid var(--line);background:var(--ink-2);position:relative;z-index:1}.gantt-head .gantt-label{background:var(--ink-2);justify-content:center;font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.gantt-head .gantt-track{height:54px}.gantt-row{display:flex;min-width:900px;border-bottom:1px solid rgba(21,42,61,.22);background:var(--surface)}.gantt-label{flex:none;width:264px;padding:8px 14px;border-right:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;justify-content:center;gap:2px;overflow:hidden}.gantt-track{position:relative;flex:1;min-width:640px;height:36px}.gantt-month{position:absolute;top:0;height:24px;display:flex;align-items:center;justify-content:center;border-left:1px solid var(--line);font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.05em;color:var(--steel);background:var(--ink-2)}.gantt-month:first-child{border-left:none}.gantt-days{position:absolute;inset:24px 0 0;display:flex}.gantt-day{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;border-left:1px solid var(--line);background:var(--surface);color:var(--steel);font-family:IBM Plex Mono,monospace;font-size:9px}.gantt-day--weekend{background:var(--ink-3)}.gantt-phase-block{border-bottom:1px solid rgba(21,42,61,.22)}.gantt-phase-block:last-child{border-bottom:none}.gantt-phase-row{display:flex;min-width:900px;background:var(--ink-2);border-bottom:1px solid rgba(21,42,61,.22)}.gantt-phase-row .gantt-label{background:var(--ink-2);font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--brass)}.gantt-phase-row .gantt-track{height:auto;min-height:28px;background:var(--ink-2)}.gantt-phase-band{position:absolute;top:5px;height:18px;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:2px;background:#1a4d6b1a;border:1px solid rgba(26,77,107,.22)}.gantt-phase-dates{font-family:IBM Plex Mono,monospace;font-size:9px;letter-spacing:.03em;color:var(--brass);white-space:nowrap;opacity:.9}.gantt-task-label{font-size:12.5px;font-weight:500;color:var(--ink)}.gantt-meta{font-size:10.5px;color:var(--steel)}.gantt-status-select{margin-left:6px;padding:1px 4px;font-size:10.5px;font-family:inherit;color:var(--ink);background:#fff;border:1px solid rgba(21,42,61,.25);border-radius:3px;cursor:pointer}.gantt-status-select:focus{outline:none;border-color:var(--brass)}.gantt-status-select:disabled{color:var(--steel);background:var(--ink-2);cursor:not-allowed;opacity:.85}.gantt-row--locked .gantt-label{background:#152a3d0a}.gantt-row--locked .gantt-subtask-bar{opacity:.55}.gantt-bar{position:absolute;top:7px;height:21px;min-width:6px;border-radius:2px;box-shadow:0 1px 2px #152a3d2e;overflow:hidden}.gantt-bar-label{position:absolute;left:6px;right:6px;top:50%;transform:translateY(-50%);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;font-weight:500;color:#fffffff2}.gantt-row--subtask{background:var(--surface)}.gantt-row--subtask .gantt-label{padding-left:32px;background:var(--surface)}.gantt-row--subtask .gantt-track{height:30px}.gantt-subtask-bar{top:8px;height:15px;opacity:.85}.gantt-bar--not-started{background:var(--steel)}.gantt-bar--in-progress{background:var(--brass)}.gantt-bar--completed{background:var(--ok)}.gantt-bar--on-hold{background:var(--amber)}.gantt-today{position:absolute;top:0;bottom:0;width:1px;background:var(--signal);z-index:2}.gantt-today--full{width:2px;pointer-events:none}.gantt-grid{position:absolute;inset:0;pointer-events:none;z-index:0}.gantt-grid-column{position:absolute;top:0;bottom:0;border-left:1px solid rgba(21,42,61,.12);background:#ffffffb8}.gantt-grid-column--weekend{background:#e8eef4b8}.gantt-tooltip{position:absolute;top:-6px;transform:translate(-50%,-100%);z-index:6;display:flex;flex-direction:column;gap:3px;min-width:150px;padding:8px 10px;background:var(--ink);color:#f4f8fb;border-radius:4px;box-shadow:0 4px 12px #152a3d59;font-size:11px;line-height:1.4;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .15s ease,visibility .15s ease}.gantt-tooltip-name{font-size:12px;font-weight:600;color:#fff}.gantt-tooltip-dates{font-family:IBM Plex Mono,monospace;color:#bcd6ea}.gantt-tooltip-meta{color:#f4f8fbbf;text-transform:capitalize}.gantt-track:hover .gantt-tooltip,.gantt-bar:hover~.gantt-tooltip{opacity:1;visibility:visible}.gantt-label-group{display:flex;align-items:center;min-width:0;gap:6px}.gantt-label-group>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.gantt-action-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:1px solid var(--line);border-radius:3px;background:transparent;color:var(--steel);font-size:11px;line-height:1;flex-shrink:0;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease,border-color .12s ease}.gantt-phase-row:hover .gantt-action-btn,.gantt-row:hover .gantt-action-btn,.gantt-row--subtask:hover .gantt-action-btn,.gantt-action-btn:focus-visible{opacity:1}.gantt-action-btn:hover{background:var(--surface);border-color:var(--brass);color:var(--brass)}.gantt-label--drag{cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none}.gantt-label--drag:hover{background:#1a4d6b0d}.gantt-phase-block.gantt-row--dragging .gantt-label--drag,.gantt-task-block.gantt-row--dragging .gantt-label--drag,.gantt-row.gantt-row--dragging .gantt-label--drag{cursor:grabbing}.gantt-row--dragging{opacity:.55}.gantt-drag-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.gantt-action-btn--delete:hover{border-color:var(--signal);color:var(--signal)}.gantt-add-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px dashed var(--steel);border-radius:3px;background:transparent;color:var(--steel);font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;transition:color .12s ease,border-color .12s ease,background .12s ease}.gantt-add-btn:hover{border-color:var(--brass);color:var(--brass);background:#1a4d6b0f}.gantt-add-row{display:flex;border-bottom:1px solid rgba(21,42,61,.22);background:var(--surface)}.gantt-add-row .gantt-label{display:flex;flex-direction:column;justify-content:center;gap:0}.gantt-chart-footer{padding:10px 14px;border-top:1px solid var(--line);background:var(--surface)}.modal-overlay{position:fixed;inset:0;z-index:1000;background:#152a3d59;display:flex;align-items:center;justify-content:center;padding:24px;animation:modal-fade-in .15s ease-out}.modal-dialog{background:var(--surface);border:1px solid var(--line);border-radius:4px;width:min(520px,100%);max-height:85vh;overflow-y:auto;box-shadow:0 12px 40px #152a3d2e;animation:modal-rise .2s ease-out}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 22px;border-bottom:1px solid var(--line)}.modal-head h3{font-family:Fraunces,serif;font-weight:560;font-size:16px;color:var(--ink);margin:0}.modal-close{background:none;border:none;font-size:20px;line-height:1;color:var(--steel);padding:4px 8px;border-radius:3px;cursor:pointer}.modal-close:hover{background:var(--ink-2);color:var(--ink)}.modal-body{padding:22px}.modal-dialog--wide,.modal-dialog--gantt-import{width:min(1100px,100%)}.entity-form-footer{flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-top:20px}.entity-form-main-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-left:auto}@media(max-width:600px){.entity-form-main-actions{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.entity-form-main-actions .btn-primary{grid-column:1 / -1}.entity-form-main-actions .btn{white-space:normal}.entity-form-delete{margin-right:auto}}.gantt-import-notes{margin:16px 0;font-size:13px}.gantt-import-notes li{margin:6px 0}.gantt-import-table-wrap{overflow:auto;max-height:45vh;border:1px solid var(--line)}.gantt-import-table{width:100%;min-width:800px;border-collapse:collapse;font-size:13px}.gantt-import-table th,.gantt-import-table td{padding:10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.gantt-import-table thead th{position:sticky;top:0;background:var(--surface);z-index:1}.gantt-import-table th[scope=row]{min-width:260px;font-weight:500;white-space:pre-line}.gantt-import-subtask th[scope=row]{padding-left:26px}.gantt-import-phase{background:var(--ink-2)}.gantt-import-table input,.gantt-import-table select{width:100%;min-width:135px;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--ink);padding:6px;font:inherit}.gantt-import-table [aria-invalid=true]{border-color:var(--danger, #b42318);background:#fff4f2}.gantt-import-validation{margin-top:16px;padding:12px 16px;background:#fff4f2;border:1px solid #f0b8b3;border-radius:3px;color:#8f2420;font-size:13px}.gantt-import-validation p{margin:0}.gantt-import-validation ul{margin:8px 0 0;padding-left:20px}.gantt-mapping-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0 20px}.gantt-import-table caption{padding:10px;text-align:left;font-weight:600}.form-hint{margin:4px 0 0;font-size:11px;color:var(--steel)}.form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-row label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.form-row input,.form-row select{padding:10px 12px;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:14px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.form-row input:focus,.form-row select:focus{border-color:var(--brass);box-shadow:0 0 0 3px #1a4d6b1f}.form-row input[type=datetime-local]{font-family:IBM Plex Mono,monospace;font-size:13px}.form-row-inline{display:flex;gap:16px}.form-row-inline .form-row{flex:1}.form-error{color:var(--signal);font-size:12.5px;margin-top:2px}.form-formerror{background:#b423180f;border:1px solid rgba(180,35,24,.35);color:var(--signal);border-radius:3px;padding:10px 12px;font-size:13px;margin-bottom:16px}.form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:16px;border-top:1px solid var(--line);margin-top:4px}.confirm-msg{font-size:14px;color:var(--text);line-height:1.5;margin-bottom:20px}.btn{padding:9px 18px;border:none;border-radius:3px;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.btn:disabled{opacity:.65;cursor:default}.btn-primary{background:var(--brass);color:#fff}.btn-primary:hover:not(:disabled){background:var(--brass-bright)}.btn-secondary{background:var(--ink-2);color:var(--text-soft);border:1px solid var(--line)}.btn-secondary:hover:not(:disabled){background:var(--surface);color:var(--ink)}.btn-danger{background:transparent;color:var(--signal);border:1px solid var(--signal)}.btn-danger:hover:not(:disabled){background:var(--signal);color:#fff}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.vessel-filter{display:flex;align-items:center;gap:10px;margin-bottom:12px}.vessel-filter label{font-size:12.5px;color:var(--text-soft)}.vessel-filter select{padding:8px 12px;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px;outline:none}.vessel-filter select:focus{border-color:var(--brass);box-shadow:0 0 0 3px #1a4d6b1f}.vessel-selector{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.vessel-selector-btn{padding:8px 14px;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--text-soft);font-size:12.5px}.vessel-selector-btn:hover{border-color:var(--brass);color:var(--brass)}.vessel-selector-btn.active{background:var(--brass);border-color:var(--brass);color:#fff}.vessel-selector-btn .sub{display:block;font-family:IBM Plex Mono,monospace;font-size:10px;opacity:.75;margin-top:2px}.kanban-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;flex-wrap:wrap}.kanban-toolbar-buttons{display:flex;align-items:center;gap:8px}.kanban-columns{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px;overflow-x:auto}.kanban-column{display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);background:var(--ink-3)}.kanban-column-head{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--ink-2);border-bottom:1px solid var(--line);font-size:12.5px;font-weight:500;color:var(--ink)}.kanban-column-count{margin-left:auto;font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel)}.kanban-column-body{display:flex;flex-direction:column;gap:8px;padding:10px;min-height:80px;flex:1;transition:background .12s ease}.kanban-column-body--over{background:#1a4d6b14}.kanban-column-empty{margin:0;font-size:11.5px}.kanban-card{border:1px solid var(--line);background:var(--surface);padding:10px 12px;box-shadow:0 1px 2px #152a3d14}.kanban-card--dragging{opacity:.35}.kanban-card--overlay{cursor:grabbing;box-shadow:0 8px 20px #152a3d47}.kanban-card--clickable{cursor:pointer}.kanban-card--clickable:hover{border-color:var(--brass)}.kanban-card--locked{opacity:.75}.kanban-card--locked .kanban-card-name{cursor:default}.kanban-locked-note{margin:0 0 12px;padding:8px 12px;background:#b423180f;border:1px solid rgba(180,35,24,.35);color:var(--signal);border-radius:3px;font-size:12px}.kanban-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:6px}.kanban-card-name{font-size:12.5px;font-weight:500;color:var(--ink);cursor:grab;min-width:0}.kanban-card-actions{display:flex;gap:4px;flex-shrink:0}.kanban-card-actions .gantt-action-btn{opacity:1}.kanban-card-meta{margin-top:6px;font-size:10.5px;color:var(--steel)}.kanban-card-deadline{margin-top:2px;font-size:10.5px;color:var(--steel)}.kanban-card-pill{display:inline-block;margin-top:8px;padding:2px 8px;border-radius:999px;font-family:IBM Plex Mono,monospace;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:#fff}.picker-row{margin-bottom:12px}.main--home{max-width:1440px}.kpi-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.kpi-strip--3{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi-card{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--brass);padding:16px 18px 18px;display:flex;flex-direction:column;gap:6px;min-width:0}.kpi-card--teal{border-top-color:#0f766e}.kpi-card--blue{border-top-color:#2563eb}.kpi-card--red{border-top-color:var(--signal)}.kpi-card--green{border-top-color:var(--ok)}.kpi-label{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.kpi-value{font-family:Fraunces,serif;font-weight:560;font-size:32px;line-height:1.1;color:var(--ink)}.kpi-sub{font-size:12.5px;color:var(--text-soft)}.home-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}.home-sidebar{display:flex;flex-direction:column;gap:16px;position:sticky;top:16px}.dash-card{background:var(--surface);border:1px solid var(--line);min-width:0}.dash-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}.dash-card-head--stack{border-bottom:none;padding-bottom:8px}.dash-card-title{display:flex;align-items:center;gap:10px;min-width:0}.dash-card-title h2{font-family:Fraunces,serif;font-weight:560;font-size:17px;color:var(--ink)}.count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:var(--ink-2);color:var(--steel);font-family:IBM Plex Mono,monospace;font-size:11px}.urgent-badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;background:#b423181a;color:var(--signal);font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.02em}.shipyard-filters{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.shipyard-filter{border:1px solid transparent;background:transparent;color:var(--steel);padding:6px 12px;font-size:12.5px;border-radius:4px}.shipyard-filter:hover{color:var(--ink);background:var(--ink-2)}.shipyard-filter.is-active{background:var(--ink);color:#fff}.portfolio-table-wrap{overflow-x:auto}.portfolio-table{width:100%;border-collapse:collapse;min-width:780px}.portfolio-table th{text-align:left;padding:10px 14px;font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel);border-bottom:1px solid var(--line);white-space:nowrap;font-weight:500}.portfolio-table td{padding:14px;border-bottom:1px solid var(--line);vertical-align:middle;font-size:13px;color:var(--text)}.portfolio-table tbody tr:last-child td{border-bottom:none}.vessel-cell{display:flex;flex-direction:column;gap:3px}.vessel-cell-link{text-decoration:none;color:inherit}.vessel-cell-link:hover .vessel-cell-name{color:var(--brass);text-decoration:underline}.vessel-cell-name{font-weight:600;color:var(--ink)}.vessel-cell-meta{display:flex;align-items:center;gap:8px;font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel)}.flag-badge{display:inline-flex;align-items:center;padding:1px 6px;border:1px solid var(--line);border-radius:3px;background:var(--ink-3);font-size:10px;letter-spacing:.04em}.docs-cell{display:flex;flex-direction:column;gap:2px}.docs-pending{color:var(--signal);font-size:11.5px}.progress-cell{display:flex;align-items:center;gap:10px;min-width:110px}.progress-track{flex:1;height:6px;border-radius:999px;background:var(--ink-2);overflow:hidden}.progress-fill{height:100%;border-radius:inherit;background:#2563eb}.progress-track--in-progress .progress-fill{background:#2563eb}.progress-track--completed .progress-fill{background:var(--ok)}.progress-track--on-hold .progress-fill{background:#c2410c}.progress-track--not-started .progress-fill{background:#94a3b8}.status-pill{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text);white-space:nowrap}.status-dot{width:7px;height:7px;border-radius:50%;background:#94a3b8;flex:none}.status-pill--in-progress .status-dot{background:#2563eb}.status-pill--completed .status-dot{background:var(--ok)}.status-pill--on-hold .status-dot{background:#c2410c}.status-pill--not-started .status-dot{background:#94a3b8}.deadline-cell{white-space:nowrap;color:var(--text-soft)}.dash-empty{padding:18px;color:var(--steel);font-size:13px}.deadline-list{list-style:none;margin:0;padding:0 12px 8px}.deadline-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 10px 12px 14px;border-left:3px solid #0f766e;margin-bottom:4px;background:transparent}.deadline-item--urgent{border-left-color:var(--signal)}.deadline-item--warning{border-left-color:#c2410c}.deadline-item--normal{border-left-color:#0f766e}.deadline-item-main{display:flex;flex-direction:column;gap:3px;min-width:0}.deadline-item-title{font-size:13px;font-weight:500;color:var(--ink);line-height:1.3}.deadline-item-hull{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel)}.deadline-item-when{flex:none;text-align:right;display:flex;flex-direction:column;gap:2px}.deadline-item-days{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;color:#0f766e}.deadline-item--urgent .deadline-item-days{color:var(--signal)}.deadline-item--warning .deadline-item-days{color:#c2410c}.deadline-item-date{font-size:11px;color:var(--steel)}.deadlines-footer-link{display:block;padding:12px 18px 16px;color:#0f766e;font-size:13px;font-weight:500}.deadlines-footer-link:hover{color:var(--ink)}.main--vessels{max-width:1520px}.vessels-layout{display:grid;grid-template-columns:1fr 300px;gap:28px;align-items:start}.vessels-content{min-width:0}@media(max-width:900px){.vessels-layout{grid-template-columns:1fr}}.due-soon-panel{border:1px solid var(--line);background:var(--surface);position:sticky;top:20px}.due-soon-clock{display:flex;flex-direction:column;gap:2px;padding:16px 18px;background:var(--brass);color:#fff}.due-soon-day{font-family:Fraunces,serif;font-weight:560;font-size:17px}.due-soon-datetime{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.04em;opacity:.9}.due-soon-panel .section-label{padding:14px 18px 0;margin-bottom:10px;font-size:12px;font-weight:600;color:var(--amber)}.due-soon-panel .section-label:before{background:var(--amber)}.due-soon-panel .section-label--overdue{color:var(--signal)}.due-soon-panel .section-label--overdue:before{background:var(--signal)}.due-soon-list{display:flex;flex-direction:column}.due-soon-row{display:block;width:100%;text-align:left;border:none;border-top:1px solid var(--line);border-left:2px solid var(--brass);background:var(--surface);padding:12px 18px}.due-soon-row:hover{background:var(--ink-2)}.due-soon-row--overdue{border-left-color:var(--signal)}.due-soon-row-main{display:flex;flex-direction:column;gap:2px}.due-soon-vessel{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--brass)}.due-soon-subtask{font-family:Fraunces,serif;font-weight:560;font-size:14px;color:var(--ink)}.due-soon-context{font-size:11px;color:var(--steel)}.due-soon-row-due{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:8px}.due-soon-remaining{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--brass)}.due-soon-remaining--overdue{color:var(--signal)}.due-soon-deadline{font-size:10.5px;color:var(--steel)}.due-soon-panel .empty-note{margin:0;padding:14px 18px 18px}@keyframes modal-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(max-width:900px){.topnav{flex-wrap:wrap;gap:12px;padding:14px 18px}.topnav-links{order:3;width:100%}.main{padding:22px 18px}.kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.home-layout{grid-template-columns:1fr}.home-sidebar{position:static}.login-content{margin-left:0;padding:40px 22px;width:100%}.login-scrim{background:linear-gradient(180deg,#f4f7faf0,#f4f7fae6 55%,#f4f7fab8)}}@media(max-width:560px){.kpi-strip{grid-template-columns:1fr}.syard-row{grid-template-columns:26px 1fr}.pending{grid-column:2}}.main--documents{max-width:1400px}.doc-layout{display:grid;grid-template-columns:268px minmax(0,1fr);gap:28px;align-items:start}.doc-content{min-width:0}.doc-scope{position:sticky;top:20px;max-height:calc(100vh - 40px);overflow-y:auto;border:1px solid var(--line);background:var(--surface)}@media(max-width:900px){.doc-layout{grid-template-columns:1fr}.doc-scope{position:static;max-height:320px}}.scope-tree{padding:14px 8px 16px}.scope-tree-heading{padding:0 8px 8px;font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.scope-tree-list{list-style:none;margin:0;padding:0}.scope-tree-list--nested{margin-left:11px;padding-left:8px;border-left:1px solid var(--line)}.scope-tree-row-wrap{display:flex;align-items:stretch}.scope-tree-caret{flex:0 0 20px;align-self:stretch;display:flex;align-items:center;justify-content:center;background:none;border:0;padding:0;font-size:11px;line-height:1;color:var(--steel);cursor:pointer;border-radius:3px}.scope-tree-caret:hover{color:var(--ink)}.scope-tree-caret--none{cursor:default}.scope-tree-caret--none:hover{color:var(--steel)}.scope-tree-row{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:7px;text-align:left;background:none;border:0;padding:7px 8px;border-radius:3px;font-family:inherit;font-size:13px;color:var(--text-soft);cursor:pointer}.scope-tree-row:hover{background:var(--ink-2);color:var(--ink)}.scope-tree-row.is-active{background:var(--ink-2);color:var(--ink);box-shadow:inset 2px 0 0 var(--brass);font-weight:500}.scope-tree-row--all{margin-bottom:4px;border-bottom:1px solid var(--line);border-radius:0 0 3px 3px}.scope-tree-row--vessel{font-size:12.5px}.scope-tree-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scope-tree-sub{display:block;font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--steel)}.tree-badge{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 5px;border-radius:9px;font-family:IBM Plex Mono,monospace;font-size:10.5px;line-height:1;white-space:nowrap}.tree-badge--review{background:var(--brass);color:#fff}.tree-badge--submission{background:var(--steel);color:#fff}.doc-scope-summary{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--steel);margin-right:auto}.doc-toolbar{display:flex;align-items:center;gap:16px;margin-bottom:26px}.doc-group{margin-bottom:28px}.doc-group .section-label{margin-bottom:10px}.doc-section-count{font-size:10.5px;margin-left:auto;opacity:.8}.doc-section-label--overdue{color:var(--signal)}.doc-section-label--overdue:before{background:var(--signal)}.doc-section-label--action_required{color:var(--amber)}.doc-section-label--action_required:before{background:var(--amber)}.doc-section-label--amber{color:var(--amber)}.doc-section-label--amber:before{background:var(--amber)}.doc-section-label--attention{color:var(--brass)}.doc-section-label--attention:before{background:var(--brass)}.doc-section-label--in_review{color:var(--brass-bright)}.doc-section-label--in_review:before{background:var(--brass-bright)}.doc-section-label--completed{color:var(--ok)}.doc-section-label--completed:before{background:var(--ok)}.doc-card-list{display:flex;flex-direction:column;gap:10px}.doc-card{border:1px solid var(--line);background:var(--surface);padding:14px 16px;box-shadow:0 1px 2px #152a3d14;border-left:2px solid var(--steel)}.doc-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.doc-card-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.doc-card-name{font-family:Fraunces,serif;font-weight:560;font-size:15px;color:var(--ink)}.doc-card-version{font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:400;letter-spacing:.02em;color:var(--steel)}.doc-pill{display:inline-block;padding:2px 9px;border-radius:999px;font-family:IBM Plex Mono,monospace;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:#fff}.doc-pill--action_required{background:var(--amber)}.doc-pill--awaiting_submission{background:var(--steel)}.doc-pill--amber{background:var(--amber)}.doc-pill--in_review{background:var(--brass-bright)}.doc-pill--attention{background:var(--brass);animation:pill-pulse 1.8s ease-in-out infinite}@keyframes pill-pulse{0%,to{box-shadow:0 0 #1a4d6b8c}50%{box-shadow:0 0 0 6px #1a4d6b00}}@media(prefers-reduced-motion:reduce){.doc-pill--attention{animation:none}}.doc-pill--completed{background:var(--ok)}.doc-card-actions{display:flex;gap:8px;flex-shrink:0}.doc-card-meta{margin-top:8px;font-size:12px;color:var(--steel)}.doc-card-deadline{margin-top:8px;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;color:var(--ink)}.doc-card-deadline-label{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.doc-card-deadline-date{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel);white-space:nowrap}.doc-card--overdue{border-left-color:var(--signal)}.doc-card-deadline--overdue{color:var(--signal)}.doc-card-deadline--critical{color:#8a6500}.doc-card-deadline--ok{color:var(--ok)}.doc-instructions{position:relative;display:inline-block;margin-top:10px;font-size:12px;color:var(--brass-bright);text-decoration:underline dotted;text-underline-offset:3px;cursor:help;outline:none}.doc-instructions-tip{display:none;position:absolute;bottom:calc(100% + 8px);left:0;z-index:30;width:max-content;max-width:360px;padding:10px 12px;background:var(--ink);color:#fff;font-size:12px;font-weight:400;font-family:inherit;line-height:1.5;text-decoration:none;border-radius:4px;box-shadow:0 8px 24px #152a3d40}.doc-instructions:hover .doc-instructions-tip,.doc-instructions:focus .doc-instructions-tip,.doc-instructions:focus-within .doc-instructions-tip{display:block}.doc-upload-hint{color:var(--steel);font-size:13px;margin-bottom:18px;line-height:1.5}.doc-file-list{list-style:none;margin:0 0 16px;border:1px solid var(--line);border-radius:3px}.doc-file-list li{padding:8px 12px;font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink);border-bottom:1px solid var(--line)}.doc-file-list li:last-child{border-bottom:none}.doc-remarks{padding:10px 12px;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:13.5px;outline:none;resize:vertical}.doc-remarks:focus{border-color:var(--brass);box-shadow:0 0 0 3px #1a4d6b1f}.doc-upload-add{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.doc-upload-add input[type=file]{flex:1 1 220px}.doc-staged-label{color:var(--steel);font-size:12px;margin:0 0 8px}.doc-staged-empty{color:var(--steel);font-size:13px;margin:0 0 16px}.doc-submit-warning{color:var(--signal);font-size:12.5px;line-height:1.6;margin:0 0 16px;padding:10px 12px;border-left:3px solid var(--signal);background:#b423180d}.doc-file-item{display:flex;align-items:center;justify-content:space-between;gap:12px}.doc-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-file-remove{flex:none;background:none;border:none;padding:0;color:var(--amber);font-family:IBM Plex Mono,monospace;font-size:12px;cursor:pointer;text-decoration:underline}.doc-file-remove:hover:not(:disabled){color:var(--ink)}.doc-file-remove:disabled{opacity:.5;cursor:default}.doc-history{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.doc-history-toggle{display:inline-flex;align-items:center;gap:8px;background:none;border:none;padding:2px 0;color:var(--steel);font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.doc-history-toggle:hover{color:var(--brass)}.doc-history-caret{display:inline-block;font-size:9px;transition:transform .15s ease}.doc-history-caret--open{transform:rotate(90deg)}.doc-attempt-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.doc-attempt{border:1px solid var(--line);border-left:2px solid var(--line);border-radius:3px;background:var(--ink-3);padding:10px 12px}.doc-attempt:hover{border-color:#152a3d38}.doc-attempt--selected{border-left-color:var(--brass);background:var(--surface)}.doc-attempt-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.doc-attempt-label{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;letter-spacing:.03em;color:var(--ink)}.doc-attempt-label--current{color:var(--brass)}.doc-attempt-pick{display:inline-flex;align-items:center;gap:7px;cursor:pointer}.doc-attempt-pick input{margin:0;cursor:pointer;accent-color:var(--brass)}.doc-attempt-pick input:disabled{cursor:default}.doc-attempt-date{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel)}.doc-attempt-count{margin-left:auto;font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel);white-space:nowrap}.doc-attempt-download{flex:none;padding:4px 10px;font-size:11px}.doc-attempt>.doc-card-actions{margin-top:10px}.doc-latest-issue{border:1px solid var(--line);border-left:2px solid var(--brass);border-radius:3px;background:var(--ink-3);padding:10px 12px;margin:10px 0 0}.doc-latest-issue>.doc-card-actions{margin-top:10px}.doc-attempt-remarks{margin:8px 0 0;font-size:12px;line-height:1.5;color:#7d5c00}.doc-attempt-files{margin:8px 0 0;background:var(--surface)}.doc-attempt-empty{margin:8px 0 0;font-size:12px;color:var(--steel)}.doc-pill--attempt-uploaded{background:var(--steel)}.doc-pill--attempt-pending_review{background:var(--brass-bright)}.doc-pill--attempt-approved{background:var(--ok)}.doc-pill--attempt-rejected{background:var(--signal)}.doc-picker{margin:-10px 0 20px;padding:14px 16px;border:1px solid var(--line);border-left:2px solid var(--brass);background:var(--ink-3);display:flex;align-items:center;gap:14px;flex-wrap:wrap}.doc-picker-summary{margin:0;font-size:13px;color:var(--ink);flex:1 1 220px}.doc-picker-actions{display:flex;gap:8px;flex-wrap:wrap}.doc-picker .form-formerror{flex:1 1 100%;margin:0}@media(max-width:640px){.doc-attempt-head{row-gap:8px}.doc-attempt-count{margin-left:0}.doc-attempt-download{margin-left:auto}}.main--admin{max-width:1440px;animation:none}.btn--sm{padding:6px 12px;font-size:12.5px;border-radius:3px}.btn-stage{background:var(--ink);color:#fff;border:1px solid var(--ink);font-weight:600}.btn-stage:hover:not(:disabled){background:var(--brass-bright);border-color:var(--brass-bright)}.btn-stage:disabled{opacity:.35;cursor:default}.btn--ghost-danger{background:transparent;color:var(--signal);border:1px solid var(--line)}.btn--ghost-danger:hover:not(:disabled){border-color:var(--signal);background:#b423180f;color:var(--signal)}.btn--ghost-danger:disabled{opacity:.4;cursor:default}.role-pill{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border:1px solid;border-radius:3px;white-space:nowrap;display:inline-block}.role-pill--super_admin{color:var(--brass);border-color:var(--brass);background:#1a4d6b0f}.role-pill--admin{color:#2563eb;border-color:#2563eb;background:#2563eb0f}.role-pill--user{color:var(--steel);border-color:var(--steel)}.registry-actions{display:flex;gap:8px;justify-content:flex-end;white-space:nowrap}.registry-th-actions{text-align:right}.registry-meta{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel)}.registry-email{color:var(--text-soft)}.registry-empty{color:var(--steel)}.registry-you{display:inline-block;margin-left:8px;padding:1px 6px;font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--brass);border:1px solid var(--line);border-radius:3px;vertical-align:2px}.registry-count{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--steel)}.org-back-link{display:inline-block;margin-bottom:12px;font-size:13px;color:var(--steel);text-decoration:none}.org-back-link:hover{color:var(--brass);text-decoration:underline}.org-details{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 24px;margin:0;padding:18px 24px 22px}.org-details dt{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel);margin-bottom:6px}.org-details dd{margin:0;font-size:14px;color:var(--ink)}.main--admin .dash-card+.dash-card{margin-top:16px}@media(max-width:900px){.org-details{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.org-details{grid-template-columns:1fr}}.org-danger{border-color:#b4231859}.org-danger-body{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 24px}.org-danger-body .registry-note{margin-top:6px;max-width:70ch}.org-purge-list{margin:0 0 12px;padding-left:20px;font-size:13px;color:var(--text);line-height:1.7}.org-confirm-row{margin-top:16px}@media(max-width:560px){.org-danger-body{flex-direction:column;align-items:flex-start}}.avatar.avatar--lg{width:56px;height:56px;font-size:18px;flex:none}.profile-head{display:flex;align-items:center;gap:18px}.profile-form{padding:18px 24px 22px;max-width:520px}.org-details-note{padding:0 24px 20px}.admin-tile--myorg{border-top-color:var(--ink)}.org-address{color:var(--text-soft);white-space:pre-line;max-width:32ch}.registry-note{margin:2px 0 0;font-size:12px;color:var(--text-soft);line-height:1.5}.modal-body .registry-note+.form-actions{margin-top:16px}.user-status--pending .status-dot{background:var(--amber)}.user-status--active .status-dot{background:var(--ok)}.user-status--deactivated .status-dot,.user-status--deleted .status-dot{background:#94a3b8}.form-notice{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;background:#2f6b4f12;border:1px solid rgba(47,107,79,.35);color:var(--ok);border-radius:3px;padding:10px 12px;font-size:13px;margin-bottom:16px}.form-notice-close{background:none;border:none;color:inherit;font-size:16px;line-height:1;cursor:pointer;padding:0 2px}@media(max-width:768px){.registry-actions .btn--sm{padding:5px 10px;font-size:12px}.registry-actions{flex-direction:column;align-items:flex-end}}.admin-nav{display:flex;gap:4px 6px;flex-wrap:wrap;margin-bottom:22px;border-bottom:1px solid var(--line);padding-bottom:10px}.admin-nav-link{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:3px;font-size:12.5px;color:var(--text-soft)}.admin-nav-link:hover{background:var(--ink-2);color:var(--ink)}.admin-nav-link.active{background:var(--ink-2);color:var(--ink);box-shadow:inset 0 -2px 0 var(--brass)}button.admin-nav-link{background:transparent;border:0;font-size:12.5px}.admin-hub-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.admin-tile{display:flex;flex-direction:column;gap:8px;padding:22px 24px;background:var(--surface);border:1px solid var(--line);border-top-width:3px;min-width:0;transition:border-color .15s ease,box-shadow .15s ease}.admin-tile:hover{border-color:var(--brass);box-shadow:0 6px 24px #152a3d14}.admin-tile--orgs{border-top-color:var(--ink)}.admin-tile--users{border-top-color:var(--brass)}.admin-tile--types{border-top-color:#0f766e}.admin-tile--suppliers{border-top-color:var(--amber)}.admin-tile--risk{border-top-color:var(--signal)}.admin-tile--audit{border-top-color:var(--ok)}.admin-tile-label{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.admin-tile-title{font-family:Fraunces,serif;font-weight:560;font-size:22px;line-height:1.15;color:var(--ink)}.admin-tile-desc{font-size:13px;line-height:1.55;color:var(--text-soft)}.admin-tile-meta{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel);margin-top:2px}.admin-tile-cta{display:inline-flex;align-items:center;gap:8px;margin-top:auto;padding-top:12px;font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--brass)}.admin-tile-arrow{transition:transform .15s ease}.admin-tile:hover .admin-tile-arrow{transform:translate(3px)}.doc-type-desc{font-size:12px;color:var(--text-soft);line-height:1.45}.doc-type-party{color:var(--text-soft)}.rule-chip{display:inline-block;font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.05em;padding:2px 8px;border:1px solid var(--line);border-radius:3px;background:var(--ink-3);color:var(--steel);white-space:nowrap}.grade-badge{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:24px;padding:0 6px;border-radius:3px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;border:1px solid}.grade-badge--a{color:var(--ok);border-color:var(--ok);background:#2f6b4f14}.grade-badge--b{color:var(--brass);border-color:var(--brass);background:#1a4d6b14}.grade-badge--c{color:var(--amber);border-color:var(--amber);background:#a97b0014}.grade-badge--d{color:var(--signal);border-color:var(--signal);background:#b4231814}.grade-badge--none{color:var(--steel);border-color:var(--line)}.risk-row{cursor:pointer}.risk-row:hover td{background:var(--ink-3)}.risk-row--selected td{background:var(--ink-2)}.risk-row:focus-visible{outline:2px solid var(--brass);outline-offset:-2px}.risk-num{font-family:IBM Plex Mono,monospace;font-size:12.5px;white-space:nowrap}.risk-num--alert{color:var(--signal)}.risk-muted{font-size:12.5px;color:var(--steel)}.risk-detail{margin-top:20px}.risk-detail-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:16px;padding:18px 20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.risk-detail-empty{padding:18px 20px 0}.risk-panel{min-width:0}.risk-panel-title{font-family:IBM Plex Mono,monospace;font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--steel);margin-bottom:10px}.risk-preview{padding:14px 16px;margin-bottom:16px;background:var(--ink-3);border:1px solid var(--line);border-radius:3px}.risk-preview-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:10px}.risk-preview-figure{font-weight:500;color:var(--ink)}.risk-reasons{list-style:none;display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--text-soft)}.risk-reason-arrow{display:inline-block;width:16px;font-weight:600}.risk-reason-arrow--up{color:var(--signal)}.risk-reason-arrow--down{color:var(--ok)}.risk-history{list-style:none;display:flex;flex-direction:column;gap:6px}.risk-history li{display:flex;align-items:center;gap:10px}.invoice-status{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--brass);white-space:nowrap}.invoice-status--paid{color:var(--ok)}.invoice-status--overdue{color:var(--signal)}.risk-override{margin-left:6px;color:var(--amber);border-color:#a97b0066;cursor:help}.modal-dialog--risk{width:min(720px,100%)}@media(max-width:1024px){.risk-detail-grid{grid-template-columns:1fr}}@media(max-width:640px){.modal-dialog--risk .form-row-inline{flex-direction:column;gap:0}}.audit-empty{padding:18px 20px 0}.audit-filters{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;padding:16px 18px;border-bottom:1px solid var(--line)}.audit-filters .form-row{margin-bottom:0;min-width:150px}.audit-filter-org{flex:1 1 240px;min-width:220px}.audit-filter-clear{margin-bottom:1px}.audit-table{min-width:960px}.audit-row{cursor:pointer}.audit-row:hover td{background:var(--ink-3)}.audit-row:focus-visible{outline:2px solid var(--brass);outline-offset:-2px}.audit-action{text-transform:capitalize}.audit-action--created{color:var(--ok);border-color:var(--ok);background:#2f6b4f14}.audit-action--updated{color:var(--amber);border-color:var(--amber);background:#a97b0014}.audit-action--deleted{color:var(--signal);border-color:var(--signal);background:#b4231814}.audit-table-wrap--stale{opacity:.45;pointer-events:none;transition:opacity .15s ease}.audit-activity{line-height:1.6}.audit-field--hoverable{cursor:help;border-bottom:1px dotted rgba(92,115,136,.5)}.audit-field--hoverable:hover,.audit-field--hoverable:focus-visible{color:var(--brass);border-bottom-color:var(--brass);outline:none}.audit-tip{position:fixed;top:0;left:0;z-index:200;display:flex;flex-direction:column;gap:4px;width:max-content;max-width:min(340px,calc(100vw - 16px));padding:9px 11px;background:var(--ink);color:#fff;border-radius:4px;box-shadow:0 8px 24px #152a3d40;pointer-events:none}.audit-tip-row{display:flex;flex-direction:column;gap:1px}.audit-tip-label{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#f4f8fba6}.audit-tip-value{font-size:12px;line-height:1.45;word-break:break-word}.audit-segment--email{font-family:IBM Plex Mono,monospace;font-size:12px}.modal-dialog--audit{width:min(620px,100%)}.audit-detail-sentence{padding:12px 14px;margin-bottom:18px;background:var(--ink-3);border-left:3px solid var(--brass);font-size:14px;line-height:1.55;color:var(--ink)}.audit-detail-heading{margin:18px 0 8px;font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:500;color:var(--steel)}.audit-detail-heading:first-of-type{margin-top:0}.audit-detail-row{display:flex;gap:14px;padding:5px 0;border-bottom:1px solid var(--line);font-size:13px}.audit-detail-row:last-of-type{border-bottom:none}.audit-detail-label{flex:0 0 130px;color:var(--text-soft)}.audit-detail-value{flex:1;min-width:0;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.5;color:var(--ink);word-break:break-word;white-space:pre-line}@media(max-width:1024px){.audit-filters{flex-direction:column;align-items:stretch}.audit-filters .form-row,.audit-filter-org{min-width:0;flex:1 1 auto}}.billing-page{display:flex;flex-direction:column;gap:20px}.billing-admin-note{margin:-8px 0 18px;padding:10px 14px;font-size:12.5px;color:var(--text-soft);background:var(--ink-2);border-left:3px solid var(--brass)}.billing-org-picker{margin-bottom:0;min-width:220px}.billing-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.billing-kpi{display:flex;flex-direction:column;gap:6px;padding:18px 20px;background:var(--surface);border:1px solid var(--line)}.billing-kpi-label{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}.billing-kpi-value{font-family:Fraunces,serif;font-size:26px;font-weight:560;color:var(--ink)}.billing-kpi--alert .billing-kpi-value{color:var(--signal)}.billing-pad{padding:0 20px 16px}.billing-terms{list-style:none}.billing-term-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px 16px;padding:12px 20px;border-top:1px solid var(--line)}.billing-term{font-weight:500;color:var(--ink);white-space:nowrap}.billing-th-num,.billing-td-num{text-align:right}.billing-older{border-top:1px solid var(--line)}.billing-older-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:12px 20px;border:none;background:transparent;font-family:IBM Plex Mono,monospace;font-size:11.5px;letter-spacing:.04em;color:var(--brass);text-align:left}.billing-older-toggle:hover{background:var(--ink-3)}.risk-agreed{margin-bottom:14px;font-size:13px}@media(max-width:720px){.billing-kpis{grid-template-columns:1fr}}.admin-placeholder{padding:28px 24px 32px;background:var(--ink-3);border-top:1px solid var(--line)}.admin-placeholder-note{font-size:14px;color:var(--ink);line-height:1.6;max-width:60ch}.admin-placeholder-hint{margin-top:8px;font-size:12.5px;color:var(--text-soft);line-height:1.6;max-width:60ch}@media(max-width:1024px){.admin-hub-grid{grid-template-columns:1fr}}.ss-combobox{position:relative}.ss-input{box-sizing:border-box;width:100%;padding:10px 34px 10px 12px;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:14px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.ss-input:focus{border-color:var(--brass);box-shadow:0 0 0 3px #1a4d6b1f}.ss-input:disabled{color:var(--steel);cursor:not-allowed}.ss-input::placeholder{color:#8fa3b8}.ss-combobox--clearable .ss-input{padding-right:62px}.ss-toggle{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:none;border:none;border-radius:3px;color:var(--steel);cursor:pointer}.ss-toggle svg{transition:transform .15s ease}.ss-toggle--open svg{transform:rotate(180deg)}.ss-toggle:hover:not(:disabled){background:var(--ink-2);color:var(--ink)}.ss-toggle:disabled{opacity:.5;cursor:not-allowed}.ss-clear{position:absolute;top:50%;right:32px;transform:translateY(-50%);background:none;border:none;font-size:18px;line-height:1;color:var(--steel);padding:2px 8px;border-radius:3px;cursor:pointer}.ss-clear:hover{background:var(--ink-2);color:var(--ink)}.ss-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;max-height:320px;overflow-y:auto;list-style:none;margin:0;padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:3px;box-shadow:0 8px 24px #152a3d24}.ss-option{padding:8px 10px;border-radius:2px;font-size:13.5px;color:var(--ink);cursor:pointer}.ss-option+.ss-option{border-top:1px solid var(--line)}.ss-option:hover,.ss-option--active{background:var(--ink-2)}.ss-option[aria-selected=true]{color:var(--brass);font-weight:500}.ss-empty{padding:8px 10px;font-size:13px;color:var(--steel)}.req-clear{position:absolute;top:50%;right:8px;transform:translateY(-50%);background:none;border:none;font-size:18px;line-height:1;color:var(--steel);padding:2px 8px;border-radius:3px;cursor:pointer}.req-clear:hover{background:var(--ink-2);color:var(--ink)}.req-select-wrap{position:relative;display:flex;align-items:center}.req-select-wrap select{width:100%;box-sizing:border-box}.req-direction{display:flex;align-items:flex-start;gap:10px;margin-bottom:6px;cursor:pointer}.req-direction input{margin-top:1px;cursor:pointer}.req-direction-text{font-family:IBM Plex Mono,monospace;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}.req-clear-select{right:22px}.req-types{border:none;padding:0;margin:0 0 16px}.req-types legend{margin-bottom:10px}.req-type-search{display:flex;align-items:center;gap:10px;margin-bottom:14px}.req-type-search-field{position:relative;flex:0 1 340px}.req-type-search-field input{width:100%;box-sizing:border-box;padding:10px 34px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:14px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.req-type-search-field input:focus{border-color:var(--brass);box-shadow:0 0 0 3px #1a4d6b1f}.req-type-search-field input:disabled{opacity:.6}.req-type-search-field input::placeholder{color:#8fa3b8}.req-type-search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--steel);pointer-events:none}.req-type-search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--ink-2);border:none;border-radius:50%;font-size:15px;line-height:1;color:var(--ink);cursor:pointer;transition:background .15s ease,color .15s ease}.req-type-search-clear:hover{background:var(--brass);color:#fff}.req-type-search-count{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.05em;color:var(--steel);white-space:nowrap}.req-type-sections{display:flex;flex-direction:column;gap:8px}.req-type-section{border:1px solid var(--line);border-radius:3px;background:var(--surface)}.req-type-section-head{display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;border:none;border-radius:3px;background:transparent;font-family:inherit;text-align:left;cursor:pointer;transition:background .15s ease}.req-type-section-head:hover{background:#1a4d6b0a}.req-type-section-head:disabled{opacity:.6;cursor:default}.req-type-section-caret{width:10px;color:var(--steel);font-size:11px}.req-type-section-name{flex:1 1 auto;font-family:Fraunces,serif;font-weight:560;font-size:13.5px;color:var(--ink)}.req-type-section-count{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--steel)}.req-type-list{list-style:none;margin:0;border-top:1px solid var(--line)}.req-type-list li+li{border-top:1px solid var(--line)}.req-type-row{display:grid;grid-template-columns:minmax(0,1fr) 48px 44px;align-items:baseline;gap:10px;width:100%;padding:9px 14px;border:none;background:transparent;font-family:inherit;text-align:left;cursor:pointer;transition:background .15s ease}.req-type-row:hover{background:#1a4d6b0a}.req-type-row--selected{background:#1a4d6b0f;box-shadow:inset 3px 0 0 var(--brass)}.req-type-row:disabled{opacity:.6;cursor:default}.req-type-row-name{font-size:13px;color:var(--ink);overflow-wrap:anywhere}.req-type-row-rule{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.05em;color:var(--steel);text-align:right}.req-type-row-versions{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--brass);text-align:right}.req-deadlines{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.req-deadlines-label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel);margin-bottom:12px}.req-deadline-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--line)}.req-deadline-row:last-child{border-bottom:none}.req-deadline-row .form-row{flex:none;width:260px;margin-bottom:0}.req-deadline-name{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding-top:10px;font-size:13px;color:var(--ink);min-width:0}.req-version-badge{display:inline-block;padding:1px 8px;border-radius:3px;background:var(--ink-2);font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--brass)}.req-wizard-success-title{font-size:14px;color:var(--text);line-height:1.5;margin-bottom:12px}.req-wizard-success-list{list-style:none;margin:0 0 16px;border:1px solid var(--line);border-radius:3px}.req-wizard-success-list li{padding:8px 12px;font-size:13px;color:var(--ink)}.req-wizard-success-list li+li{border-top:1px solid var(--line)}.gantt-sheet-controls,.gantt-sheet-pagination{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:16px 0}.gantt-sheet-controls label{display:grid;gap:6px}.gantt-sheet-controls select,.gantt-sheet-controls input{padding:8px;border:1px solid #cbd5e1;border-radius:6px}.gantt-worksheet-wrap{overflow:auto;max-height:420px;border:1px solid #cbd5e1}.gantt-worksheet{border-collapse:separate;border-spacing:0;table-layout:fixed;width:max-content;background:#fff;color:#111}.gantt-worksheet td,.gantt-worksheet th{border-right:1px solid #d1d5db;border-bottom:1px solid #d1d5db;padding:4px 6px;min-width:60px;max-width:350px;overflow:hidden;vertical-align:middle}.gantt-worksheet thead th{position:sticky;top:0;z-index:2;background:#e2e8f0}.gantt-worksheet tbody th{position:sticky;left:0;z-index:1;background:#e2e8f0}.gantt-worksheet th button{border:0;background:transparent;color:#0f172a;cursor:pointer;width:100%;padding:6px}.gantt-worksheet th button small{display:block;font-size:10px;white-space:normal}.gantt-worksheet .gantt-sheet-selected{background:#dbeafe;color:#1d4ed8}.gantt-worksheet .gantt-sheet-header{background:#fef3c7}.gantt-sheet-mapped-cell{box-shadow:inset 2px 0 #3b82f6}.gantt-mapping-step{padding:16px;margin:12px 0;border:1px solid var(--line);border-radius:6px;background:var(--mist, #f8fafc)}.gantt-mapping-step h4{margin:4px 0 8px;font-size:17px}.gantt-mapping-step p{margin:6px 0 12px}.gantt-mapping-progress{font-size:12px;color:var(--steel)}.gantt-step-input{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.gantt-step-input input,.gantt-step-input select{padding:8px;border:1px solid var(--line);border-radius:4px;max-width:100%}.gantt-step-input input{width:100px}.gantt-mapping-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px}.gantt-mapping-summary button{text-align:left;padding:10px;background:#fff;border:1px solid var(--line);border-radius:4px;cursor:pointer}.gantt-mapping-summary small{float:right;color:var(--steel);margin-left:8px}.gantt-sheet-scroll{height:460px;overflow:auto;border:1px solid var(--line);background:#fff;position:relative}.gantt-sheet-scroll:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.gantt-sheet-canvas{position:relative;color:#111;font-size:13px}.gantt-sheet-cell{position:absolute;padding:4px 6px;overflow:hidden;border-right:1px solid #d1d5db;border-bottom:1px solid #d1d5db;box-sizing:border-box}.gantt-sheet-column-bar{position:absolute;left:0;height:56px;background:#e2e8f0;z-index:3}.gantt-sheet-row-bar{position:absolute;top:0;width:64px;background:#e2e8f0;z-index:3}.gantt-sheet-column-bar button,.gantt-sheet-row-bar button{position:absolute;padding:4px;border:0;border-right:1px solid #cbd5e1;border-bottom:1px solid #cbd5e1;background:#e2e8f0;color:#0f172a;cursor:pointer;overflow:hidden}.gantt-sheet-column-bar button{top:0;height:56px}.gantt-sheet-column-bar small{display:block;font-size:10px}.gantt-sheet-row-bar button{left:0;width:64px}.gantt-sheet-column-bar button:disabled,.gantt-sheet-row-bar button:disabled{cursor:default;opacity:1}.gantt-sheet-column-bar .is-selected,.gantt-sheet-row-bar .is-selected{background:#bfdbfe;box-shadow:inset 0 0 0 2px #2563eb}.gantt-sheet-corner{position:absolute;width:64px;height:56px;background:#e2e8f0;z-index:4;padding:16px 8px;box-sizing:border-box;border:1px solid #cbd5e1}.gantt-sheet-grid-line{position:absolute;pointer-events:none;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;box-sizing:border-box}.gantt-timeline .gantt-head,.gantt-timeline .gantt-row,.gantt-timeline .gantt-phase-row,.gantt-timeline .gantt-track{min-width:0}.gantt-scroll{cursor:grab;-webkit-user-select:none;user-select:none}.gantt-scroll--panning,.gantt-scroll--panning *{cursor:grabbing!important}.gantt-scroll button,.gantt-scroll a{cursor:pointer}.gantt-scroll input,.gantt-scroll textarea{cursor:text;-webkit-user-select:text;user-select:text}.gantt-scroll select{cursor:default}.gantt-timeline .gantt-label{padding-top:2px;padding-bottom:2px;gap:0;line-height:1.1}.gantt-timeline .gantt-row .gantt-track{height:auto;min-height:32px;align-self:stretch}.gantt-timeline .gantt-phase-row .gantt-track{min-height:24px}.gantt-timeline .gantt-bar,.gantt-timeline .gantt-subtask-bar,.gantt-timeline .gantt-phase-band{top:50%;transform:translateY(-50%)}.gantt-action-btn--add{opacity:1}.gantt-timeline .gantt-action-btn{width:16px;height:16px}.gantt-timeline .gantt-status-select{height:16px;padding:0 3px;line-height:1}.gantt-timeline .gantt-bar{height:18px}.gantt-timeline .gantt-subtask-bar{height:14px}.gantt-timeline .gantt-phase-band{height:16px}.gantt-timeline>.gantt-chart-footer{position:sticky;left:0;width:264px;z-index:3;border-right:1px solid var(--line)}.fh-lookup{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.fh-lookup .btn{margin-top:4px}.fh-lookup-result{margin-top:10px;font-size:13px}.fh-lookup-result p{margin:0 0 4px}.fh-lookup-error{color:var(--signal)}
