:root {
  font-family: "Segoe UI", Inter, Arial, sans-serif;
  color: #1d2933;
  background: #f5f7f6;
  font-synthesis: none;
  -webkit-font-smoothing: antialiased;
  --ink: #192731;
  --muted: #71808b;
  --line: #e7eceb;
  --teal: #178b7c;
  --teal-dark: #087263;
  --teal-soft: #e2f3ef;
  --navy: #132430;
  --white: #fff;
  --shadow: 0 12px 36px rgba(26, 51, 60, .065);
}

* { box-sizing: border-box; }
html { min-width: 320px; scroll-behavior: smooth; }
body { margin: 0; min-height: 100vh; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled, select:disabled { cursor: not-allowed; opacity: .55; }
a { color: inherit; }
img { max-width: 100%; }
:focus-visible { outline: 3px solid #74d7c7; outline-offset: 2px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }

.boot-screen { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: 16px; color: var(--muted); }
.brand-mark { width: 35px; height: 35px; display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); gap: 4px; transform: rotate(-12deg); }
.brand-mark span { display: block; background: #31b7a0; border-radius: 3px; }
.brand-mark span:nth-child(2) { background: #69d3bd; }
.brand-mark span:nth-child(3) { grid-column: 1 / 3; background: #118a7a; }
.brand-mark-large { width: 55px; height: 55px; gap: 6px; }

.app-shell { display: grid; grid-template-columns: 252px minmax(0, 1fr); min-height: 100vh; }
.sidebar { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; background: var(--navy); color: #e7f0f0; padding: 29px 17px 20px; z-index: 10; }
.brand { display: flex; align-items: center; gap: 13px; padding: 3px 15px 31px; text-decoration: none; }
.brand-copy { display: grid; gap: 2px; }
.brand-copy strong { color: #fff; font-size: 17px; letter-spacing: -.055em; line-height: 1; white-space: nowrap; }
.brand-copy small { color: #8399a1; font-size: 9px; letter-spacing: .01em; font-weight: 700; white-space: nowrap; }
.company-context { margin: 0 5px 7px; padding: 13px 14px; border: 1px solid #35525b; border-radius: 10px; background: #1c3840; display: grid; gap: 2px; min-width: 0; }
.company-context-label { color: #73bcae; font-size: 9px; font-weight: 800; letter-spacing: .13em; }
.company-context strong { color: #f4fffc; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.company-context small { color: #91b0b3; font-size: 10px; }
.nav-label { padding: 19px 16px 10px; color: #6e8992; text-transform: uppercase; font-weight: 800; letter-spacing: .15em; font-size: 10px; }
.nav-list { display: grid; gap: 5px; }
.nav-item { width: 100%; display: flex; align-items: center; gap: 13px; border: 0; background: transparent; color: #a8b9be; text-align: left; border-radius: 10px; padding: 12px 14px; font-weight: 600; font-size: 14px; transition: background .16s, color .16s; }
.nav-item:hover { background: #1c3440; color: #fff; }
.nav-item.active { background: #254d51; color: #effffb; }
.nav-item.active svg { color: #6ae0ca; }
.nav-item svg, .icon-btn svg, .button svg, .tiny-icon svg { width: 19px; height: 19px; flex: none; stroke-width: 1.8; }
.nav-item .nav-count { margin-left: auto; color: #fff; background: #315f5e; font-size: 11px; padding: 2px 7px; border-radius: 999px; }
.sidebar-bottom { margin-top: auto; border-top: 1px solid #2c424d; padding-top: 18px; }
.sidebar-note { display: flex; gap: 10px; align-items: flex-start; padding: 0 14px 18px; color: #78939b; font-size: 11px; line-height: 1.45; }
.sidebar-note .dot { background: #4bd7b9; width: 7px; height: 7px; border-radius: 50%; margin-top: 5px; flex: none; box-shadow: 0 0 0 4px rgba(75, 215, 185, .12); }
.user-tile { display: flex; align-items: center; gap: 10px; padding: 11px; background: #1d3540; border-radius: 12px; }
.avatar { width: 35px; height: 35px; border-radius: 10px; background: #406269; color: #d9f9f1; display: grid; place-items: center; font-weight: 800; flex: none; }
.user-tile .user-text { display: grid; min-width: 0; }
.user-tile strong { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-tile small { font-size: 11px; color: #92a6ad; margin-top: 1px; }
.user-tile button { margin-left: auto; border: 0; background: transparent; color: #9db2b8; padding: 4px; display: grid; place-items: center; }
.user-tile button:hover { color: #fff; }
.user-tile button svg { width: 17px; height: 17px; }

.workspace { min-width: 0; }
.topbar { height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 18px; border-bottom: 1px solid var(--line); background: #fff; padding: 0 clamp(22px, 3.2vw, 48px); }
.topbar-left { display: flex; gap: 14px; align-items: center; min-width: 0; }
.breadcrumb { display: flex; align-items: center; color: #98a4aa; gap: 10px; font-size: 12px; font-weight: 600; }
.breadcrumb strong { color: var(--ink); font-size: 14px; }
.breadcrumb svg { width: 14px; height: 14px; }
.topbar-right { display: flex; gap: 22px; align-items: center; }
.date-text { color: #8a999f; font-size: 12px; white-space: nowrap; }
.icon-btn { border: 0; background: transparent; color: #53636c; padding: 8px; display: inline-grid; place-items: center; border-radius: 9px; position: relative; }
.icon-btn:hover { background: #f0f4f3; }
.icon-btn .notif-dot { position: absolute; top: 6px; right: 6px; background: #f38f68; border: 2px solid white; width: 9px; height: 9px; border-radius: 50%; }
.mobile-menu { display: none; }
.main { padding: 35px clamp(22px, 3.2vw, 48px) 58px; max-width: 1640px; margin: 0 auto; }
.page-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 27px; }
.eyebrow { text-transform: uppercase; font-size: 10px; letter-spacing: .18em; font-weight: 800; color: var(--teal); margin: 0 0 8px; }
h1, h2, h3, h4, p { margin-top: 0; }
h1 { font-size: clamp(25px, 2.5vw, 34px); letter-spacing: -.06em; line-height: 1.12; margin-bottom: 7px; color: var(--ink); }
h2 { letter-spacing: -.035em; color: var(--ink); }
.subheading { color: #81909a; font-size: 13px; margin: 0; line-height: 1.55; }
.heading-actions { display: flex; gap: 9px; flex-wrap: wrap; justify-content: flex-end; }
.button { border: 1px solid transparent; background: var(--teal); color: #fff; border-radius: 9px; min-height: 40px; padding: 0 16px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; text-decoration: none; font-size: 12px; font-weight: 800; transition: transform .15s, background .15s, border-color .15s; white-space: nowrap; }
.button:hover:not(:disabled) { background: var(--teal-dark); transform: translateY(-1px); }
.button.secondary { background: #fff; color: #33464e; border-color: #dce5e3; }
.button.secondary:hover:not(:disabled) { background: #f6faf9; border-color: #b9d5cf; }
.button.tertiary { background: #eef5f3; color: #087568; }
.button.tertiary:hover:not(:disabled) { background: #d9ebe7; }
.button.danger { background: #fff1ee; color: #af5241; border-color: #f3d6d1; }
.button.danger:hover:not(:disabled) { background: #fbe1db; }
.button.sm { min-height: 33px; padding: 0 11px; font-size: 11px; }
.button.full { width: 100%; }
.button svg { width: 16px; height: 16px; }
.link-button { border: 0; background: transparent; color: var(--teal); padding: 0; font-weight: 800; font-size: 12px; }
.link-button svg { width: 13px; height: 13px; vertical-align: middle; margin-left: 3px; stroke-width: 2; }
.link-button:hover { text-decoration: underline; }

.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 15px; margin-bottom: 29px; }
.stat-card { border: 1px solid #e9eeec; border-radius: 13px; background: #fff; padding: 20px; min-height: 127px; box-shadow: 0 4px 18px rgba(19, 50, 57, .025); position: relative; overflow: hidden; }
.stat-card::after { content: ''; position: absolute; right: -24px; top: -30px; width: 105px; height: 105px; border-radius: 50%; border: 22px solid rgba(25, 139, 124, .055); }
.stat-card.orange::after { border-color: rgba(237, 149, 85, .08); }
.stat-card.blue::after { border-color: rgba(62, 129, 190, .07); }
.stat-card.purple::after { border-color: rgba(130, 114, 192, .075); }
.stat-top { display: flex; align-items: center; justify-content: space-between; color: #778892; font-size: 11px; font-weight: 700; position: relative; }
.stat-icon { border-radius: 9px; width: 31px; height: 31px; display: grid; place-items: center; color: var(--teal); background: #e8f5f1; }
.stat-card.orange .stat-icon { background: #fff0e5; color: #db8551; }
.stat-card.blue .stat-icon { background: #e9f2f9; color: #5390be; }
.stat-card.purple .stat-icon { background: #f0ecfa; color: #8c78bb; }
.stat-icon svg { width: 17px; height: 17px; }
.stat-value { font-size: 32px; line-height: 1; color: #1c2b35; font-weight: 800; letter-spacing: -.06em; margin-top: 13px; position: relative; }
.stat-detail { margin-top: 6px; color: #9aa7ac; font-size: 10px; position: relative; }
.content-grid { display: grid; grid-template-columns: minmax(0, 1.62fr) minmax(280px, 1fr); gap: 20px; align-items: start; }
.stack { display: grid; gap: 20px; }
.panel { background: #fff; border: 1px solid #e8eeec; border-radius: 13px; box-shadow: var(--shadow); min-width: 0; overflow: hidden; }
.panel-header { padding: 21px 22px 18px; display: flex; justify-content: space-between; align-items: center; gap: 15px; }
.panel-title { font-size: 16px; font-weight: 800; margin: 0; letter-spacing: -.035em; }
.panel-subtitle { color: #97a5a9; font-size: 11px; margin: 3px 0 0; }
.panel-body { padding: 0 22px 20px; }
.section-caption { font-size: 11px; color: var(--muted); }
.table-wrap { overflow-x: auto; }
.table { border-collapse: collapse; width: 100%; text-align: left; }
.table th { background: #f9fbfa; border-top: 1px solid #eef2f0; border-bottom: 1px solid #eef2f0; color: #8a9aa1; font-size: 10px; text-transform: uppercase; letter-spacing: .08em; font-weight: 800; padding: 12px 17px; white-space: nowrap; }
.table td { padding: 16px 17px; border-bottom: 1px solid #f0f3f2; font-size: 12px; color: #5f7079; vertical-align: middle; }
.table tbody tr:last-child td { border-bottom: none; }
.table tbody tr:hover { background: #fbfdfc; }
.table .primary-cell { font-size: 12px; font-weight: 800; color: #263740; }
.table .secondary-cell { font-size: 10px; color: #94a2a7; margin-top: 4px; }
.table .cell-link { color: #168b7b; text-decoration: none; font-weight: 800; }
.table .cell-link:hover { text-decoration: underline; }
.table .right { text-align: right; }
.table-action { border: 1px solid #e2ebe8; color: #138778; background: #fff; border-radius: 8px; padding: 6px 9px; font-size: 11px; font-weight: 800; }
.table-action svg { width: 12px; height: 12px; vertical-align: middle; }
.table-action:hover { background: #e9f5f1; }
.badge { display: inline-flex; align-items: center; gap: 5px; padding: 5px 8px; border-radius: 6px; background: #eff3f3; color: #697b83; font-weight: 800; font-size: 10px; line-height: 1; white-space: nowrap; }
.badge::before { content: ''; height: 5px; width: 5px; border-radius: 50%; background: currentColor; }
.badge.high { background: #fff4e7; color: #c78b44; }
.badge.urgent { background: #feefec; color: #db725b; }
.badge.done { background: #e7f5ee; color: #31946b; }
.badge.active { background: #e8f2fb; color: #548bb6; }
.badge.blocked { background: #f4f0ec; color: #968478; }
.badge.subtle { background: #f2f5f4; color: #77909a; }
.mini-progress { width: 78px; height: 5px; border-radius: 10px; background: #edf2f0; overflow: hidden; }
.mini-progress span { height: 100%; display: block; background: #31ad96; border-radius: 10px; }
.progress-cell { display: flex; align-items: center; gap: 9px; white-space: nowrap; }
.progress-cell small { color: #7f9197; font-weight: 800; }
.queue-list, .notification-list { list-style: none; padding: 0; margin: 0; }
.queue-item { padding: 14px 0; border-top: 1px solid #eff3f2; display: flex; gap: 11px; align-items: flex-start; }
.queue-item:first-child { border-top: none; padding-top: 0; }
.queue-icon { width: 33px; height: 33px; display: grid; place-items: center; background: #edf6f3; color: var(--teal); border-radius: 9px; flex: none; }
.queue-icon svg { width: 17px; height: 17px; }
.queue-content { min-width: 0; flex: 1; }
.queue-content strong { display: block; font-size: 12px; color: #263942; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.queue-content small { display: block; color: #94a3a9; margin-top: 4px; font-size: 10px; }
.queue-item button { border: 0; background: #f4f9f7; color: #168778; border-radius: 7px; padding: 7px 8px; font-weight: 800; font-size: 10px; }
.queue-item button:hover { background: #e0f1eb; }
.empty-state { color: #8b9ca1; text-align: center; padding: 44px 25px; font-size: 12px; line-height: 1.6; }
.empty-state svg { width: 30px; height: 30px; color: #9bc9bc; display: block; margin: 0 auto 12px; }
.empty-state strong { display: block; color: #38545a; font-size: 13px; margin-bottom: 3px; }
.compact-empty { padding: 23px 10px; }
.compact-empty svg { display: none; }
.search-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: 0 0 17px; }
.search-box { display: flex; align-items: center; gap: 9px; background: #fff; border: 1px solid #e0e8e5; border-radius: 9px; padding: 0 11px; min-height: 39px; width: min(370px, 100%); color: #8b9b9d; }
.search-box svg { width: 16px; height: 16px; }
.search-box input { min-width: 0; width: 100%; border: 0; background: transparent; outline: none; font-size: 12px; color: var(--ink); }
.search-box:focus-within { border-color: #79c9ba; box-shadow: 0 0 0 3px #c9eee5; }
.project-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(285px, 1fr)); gap: 16px; }
.project-card { padding: 20px; display: grid; gap: 18px; cursor: pointer; transition: transform .16s, box-shadow .16s; }
.project-card:hover { transform: translateY(-2px); box-shadow: 0 13px 30px rgba(23, 61, 66, .11); }
.project-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.project-code { color: #179384; font-size: 11px; font-weight: 800; letter-spacing: .045em; }
.project-card h3 { font-size: 17px; line-height: 1.3; letter-spacing: -.03em; margin: 4px 0 5px; }
.project-card p { color: #93a0a6; margin: 0; font-size: 11px; }
.project-card-meta { display: flex; justify-content: space-between; border-top: 1px solid #eef2f0; padding-top: 15px; gap: 10px; font-size: 11px; color: #778992; }
.project-card-meta strong { display: block; color: #344850; font-size: 12px; margin-top: 4px; }
.project-card .progress-track { height: 6px; background: #eef3f1; border-radius: 8px; overflow: hidden; margin-top: -6px; }
.project-card .progress-track span { display: block; height: 100%; background: #21aa91; border-radius: 8px; }

.detail-head { background: #fff; border: 1px solid #e8eeec; border-radius: 13px; padding: 24px 26px; box-shadow: var(--shadow); margin-bottom: 20px; }
.detail-head-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; }
.back-link { background: transparent; border: none; color: #829398; font-size: 11px; font-weight: 800; padding: 0 0 14px; display: inline-flex; align-items: center; gap: 6px; }
.back-link svg { width: 14px; height: 14px; }
.back-link:hover { color: var(--teal); }
.detail-head h1 { font-size: clamp(23px, 2.4vw, 30px); }
.detail-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; color: #819198; font-size: 11px; }
.detail-meta .sep { color: #bdc8c7; }
.detail-summary { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 24px; border-top: 1px solid #eef2f0; padding-top: 20px; gap: 15px; }
.detail-summary .label { display: block; font-size: 10px; color: #92a0a5; margin-bottom: 6px; }
.detail-summary strong { font-size: 13px; color: #31434c; }
.detail-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 21px; }
.detail-actions .spacer { flex: 1; }
.step-file { display: inline-flex; align-items: center; gap: 7px; color: #078877; text-decoration: none; font-size: 11px; font-weight: 800; padding: 0 8px; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.step-file:hover { text-decoration: underline; }
.step-file svg { width: 15px; height: 15px; flex: none; }
.step-list { display: flex; flex-wrap: wrap; gap: 7px; margin: -6px 0 21px; }
.step-list .step-file { background: #e8f4ef; border: 1px solid #d4e9df; border-radius: 7px; min-height: 33px; padding: 7px 10px; }
.conversion-list { display: grid; gap: 12px; margin: -6px 0 23px; }
.conversion-service-note { max-width: 900px; margin: -8px 0 23px; padding: 10px 13px; color: #6b7680; background: #f0f6f4; border-left: 3px solid #46ad99; border-radius: 0 7px 7px 0; font-size: 11px; line-height: 1.5; }
.conversion-title { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 3px 0 0; }
.conversion-title h2 { margin: 0; font-size: 15px; }
.conversion-title small { color: #8c9ca0; font-size: 10px; }
.conversion-card { background: #fff; border: 1px solid #e2ebe7; border-radius: 11px; padding: 15px 18px; box-shadow: var(--shadow); }
.conversion-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.conversion-head .step-file { margin-right: auto; padding-left: 0; max-width: min(100%, 520px); }
.cad-preview-trigger { flex: none; }
.conversion-card .badge { flex: none; }
.conversion-note { margin: 10px 0 0; color: #71858b; font-size: 11px; line-height: 1.5; }
.conversion-note.error { color: #a45045; }
.conversion-components { margin-top: 13px; padding: 12px; border: 1px solid #e7eeeb; border-radius: 8px; background: #f8fbfa; }
.conversion-components > summary { cursor: pointer; color: #465c62; font-size: 11px; font-weight: 800; }
.conversion-components > p { margin: 10px 0; color: #829298; font-size: 10px; line-height: 1.45; }
.conversion-components ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 5px; }
.conversion-components li { display: flex; justify-content: space-between; gap: 10px; color: #52686e; font-size: 11px; }
.conversion-components li + li { border-top: 1px solid #edf2ef; padding-top: 5px; }
.conversion-components li small { color: #819297; white-space: nowrap; }
.conversion-outputs { margin: 13px 0 0; padding: 11px 0 0; border-top: 1px solid #edf2ef; list-style: none; display: grid; gap: 8px; }
.conversion-output { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; min-width: 0; }
.conversion-output a { display: inline-flex; align-items: center; gap: 7px; min-width: 0; color: #147d71; font-size: 11px; font-weight: 800; text-decoration: none; }
.conversion-output a:hover { text-decoration: underline; }
.conversion-output a svg { width: 15px; height: 15px; flex: none; }
.conversion-output a span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.conversion-output small { font-size: 10px; color: #819097; }
.conversion-output select { margin-left: auto; min-height: 31px; max-width: 210px; border: 1px solid #dce6e3; border-radius: 7px; color: #465a61; background: white; font-size: 10px; padding: 0 7px; }
.conversion-output .button { flex: none; }
.conversion-mismatch { flex-basis: 100%; color: #b34537 !important; background: #fff1ef; border-radius: 6px; padding: 7px 9px; line-height: 1.4; }
.conversion-mismatch[hidden] { display: none; }
.conversion-review-mismatch { background: #fff0ee; border-color: #edc6c0; color: #a33d32; font-weight: 800; }
.conversion-issues { margin-top: 13px; padding: 12px; border: 1px solid #f2d3ce; border-radius: 8px; background: #fff7f5; color: #ad4e42; font-size: 11px; }
.conversion-issues ul { margin: 8px 0 0; padding-left: 18px; display: grid; gap: 5px; }
.conversion-skipped { border-color: #e5e8da; background: #fafbf5; color: #697455; }
.conversion-report { margin-top: 11px; padding: 12px; border: 1px solid #e5ece8; border-radius: 8px; background: #fbfcfb; }
.conversion-report > summary { cursor: pointer; color: #465c62; font-size: 11px; font-weight: 800; }
.conversion-report > p { margin: 10px 0; color: #829298; font-size: 10px; }
.conversion-report ul { list-style: none; margin: 11px 0 0; padding: 0; display: grid; gap: 7px; }
.conversion-report li { border-top: 1px solid #edf2ef; padding-top: 7px; }
.conversion-report .manifest-entry { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.conversion-report .manifest-entry strong { color: #4b6268; font-size: 11px; }
.conversion-report li small { display: block; margin-top: 4px; color: #88999d; font-size: 10px; }
.conversion-report li p { margin: 4px 0 0; color: #8a6d61; font-size: 10px; line-height: 1.4; }
.review-download { margin-bottom: 17px; }
.review-confirm { margin-top: 15px; line-height: 1.4; }
.parts-list { display: grid; gap: 14px; }
.part-card { background: #fff; border: 1px solid #e5ece9; border-radius: 13px; box-shadow: var(--shadow); overflow: hidden; }
.part-card-header { padding: 18px 21px; display: flex; align-items: center; gap: 15px; }
.part-number { width: 37px; height: 37px; display: grid; place-items: center; border-radius: 10px; background: #eef5f2; color: #328d80; font-weight: 800; font-size: 12px; flex: none; }
.part-heading { min-width: 0; flex: 1; }
.part-heading strong { display: block; font-size: 14px; color: #2b3e47; line-height: 1.35; }
.part-heading small { display: block; color: #91a0a5; margin-top: 4px; font-size: 11px; }
.part-header-side { display: flex; align-items: center; gap: 15px; }
.part-header-side .part-count { font-size: 11px; color: #7e9096; white-space: nowrap; }
.part-header-side .part-count strong { color: #2f424a; }
.expand-btn { background: #f4f8f6; color: #6e8b8d; border: 0; border-radius: 8px; padding: 8px; display: grid; place-items: center; }
.expand-btn svg { width: 17px; height: 17px; transition: transform .15s; }
.part-card.open .expand-btn svg { transform: rotate(180deg); }
.part-body { border-top: 1px solid #edf1ef; padding: 18px 21px 21px; }
.part-specs { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 17px; }
.spec-pill { background: #f5f8f7; border: 1px solid #ebf0ee; border-radius: 6px; color: #647882; padding: 7px 9px; font-size: 10px; }
.spec-pill strong { color: #314b50; margin-left: 4px; }
.file-strip { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 22px; }
.file-chip { min-height: 36px; border: 1px solid #dceae5; border-radius: 8px; color: #157e71; background: #f8fcfa; padding: 8px 10px; display: inline-flex; align-items: center; gap: 7px; text-decoration: none; font-size: 11px; font-weight: 800; max-width: 230px; }
.file-chip:hover { background: #eaf7f1; }
.file-chip.missing { border-style: dashed; color: #829597; background: #fff; }
.file-chip svg { width: 16px; height: 16px; flex: none; }
.file-chip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.operation-heading { color: #354a52; font-size: 11px; font-weight: 800; margin-bottom: 13px; text-transform: uppercase; letter-spacing: .06em; }
.operations { display: grid; gap: 0; }
.operation-row { display: grid; grid-template-columns: 30px minmax(135px, 1fr) minmax(115px, .7fr) minmax(120px, 1fr) auto; align-items: center; gap: 10px; min-height: 60px; padding: 9px 0; border-bottom: 1px solid #f0f3f1; }
.operation-row:last-child { border-bottom: 0; }
.op-marker { width: 22px; height: 22px; display: grid; place-items: center; background: #f1f4f3; border: 1px solid #e0e8e5; border-radius: 50%; color: #9baaad; font-weight: 800; font-size: 9px; }
.op-marker.done { color: white; background: #31ad8f; border-color: #31ad8f; }
.op-marker.skipped { color: #fff; background: #9ca9ad; border-color: #9ca9ad; }
.op-marker svg { width: 13px; height: 13px; stroke-width: 2.7; }
.op-name { font-weight: 800; font-size: 11px; color: #364a53; }
.op-meta { margin-top: 3px; font-size: 10px; color: #9aa8ad; }
.op-assignee { font-size: 10px; color: #70838a; }
.op-assignee select { width: 100%; max-width: 175px; height: 32px; border: 1px solid #e1e9e6; background: #fff; color: #43565d; border-radius: 7px; padding: 0 7px; font-size: 10px; }
.op-status { display: grid; gap: 4px; justify-items: start; }
.op-status small { color: #a08176; font-size: 10px; line-height: 1.35; }
.op-actions { display: flex; gap: 5px; justify-content: flex-end; flex-wrap: wrap; }
.op-actions .button { font-size: 10px; }
.part-notes { color: #9a7770; background: #fff9f5; border: 1px solid #fae8df; border-radius: 7px; padding: 9px 11px; font-size: 11px; }
.route-edit { margin-left: 9px; text-transform: none; letter-spacing: 0; }
.route-edit svg { width: 12px; height: 12px; }
.audit-panel { margin-top: 21px; }
.audit-list { list-style: none; padding: 0; margin: 0; }
.audit-list li { border-top: 1px solid #eef2ef; padding: 12px 0; display: flex; align-items: flex-start; gap: 10px; color: #6b7e84; font-size: 11px; line-height: 1.4; }
.audit-list li:first-child { border-top: 0; padding-top: 0; }
.audit-list strong { color: #38545a; }
.audit-list small { color: #9b7770; display: block; margin-top: 3px; }
.audit-list time { margin-left: auto; white-space: nowrap; color: #9ca8a9; font-size: 10px; }
.audit-dot { width: 7px; height: 7px; background: #68bca9; border-radius: 50%; margin-top: 4px; flex: none; }
.role-list { display: flex; flex-wrap: wrap; gap: 5px; max-width: 360px; }
.permission-chip { display: inline-block; padding: 4px 6px; background: #f0f6f4; color: #5a8c81; border-radius: 5px; font-size: 10px; font-weight: 700; }
.company-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.company-code { color: #27695e; font-size: 11px; font-weight: 800; background: #eff7f3; border-radius: 5px; padding: 5px 7px; }
.company-footnote { margin: 17px 2px 0; color: #7b8f93; font-size: 11px; line-height: 1.55; }
.company-form-divider { grid-column: 1 / -1; border-top: 1px solid #e7eeeb; padding-top: 17px; margin-top: 3px; color: #389783; font-size: 10px; font-weight: 800; letter-spacing: .12em; }
.company-setup-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 17px; }
.company-setup-summary > div { display: grid; gap: 5px; border: 1px solid #e0ebe7; border-radius: 8px; background: #f6faf8; padding: 12px; min-width: 0; }
.company-setup-summary small { color: #7e9b92; font-size: 9px; font-weight: 800; letter-spacing: .08em; }
.company-setup-summary strong { color: #31564f; font-size: 12px; overflow: hidden; text-overflow: ellipsis; }
.secret-field { display: flex; align-items: stretch; gap: 8px; }
.secret-field input { min-width: 0; flex: 1; }
.secret-field .button { flex: none; }

.modal-backdrop, .drawer-backdrop { position: fixed; inset: 0; z-index: 40; background: rgba(11, 27, 36, .44); display: grid; place-items: center; padding: 18px; }
.modal { width: min(100%, 550px); max-height: min(90vh, 900px); background: #fff; border-radius: 16px; display: flex; flex-direction: column; box-shadow: 0 24px 80px rgba(10, 25, 30, .2); overflow: hidden; }
.modal.wide { width: min(100%, 740px); }
.modal-header { padding: 22px 25px 17px; border-bottom: 1px solid #edf1ef; display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.modal-header h2 { font-size: 19px; margin: 0 0 4px; }
.modal-header p { font-size: 11px; color: #91a0a5; margin: 0; line-height: 1.45; }
.modal-close { background: #f3f6f5; color: #72848a; border: 0; border-radius: 8px; display: grid; place-items: center; width: 31px; height: 31px; flex: none; }
.modal-close svg { width: 16px; height: 16px; }
.modal-body { padding: 22px 25px 25px; overflow-y: auto; }
.modal-footer { display: flex; justify-content: flex-end; gap: 9px; margin-top: 22px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.field { display: grid; gap: 6px; min-width: 0; }
.field.full-width { grid-column: 1 / -1; }
.field label { color: #485d65; font-size: 11px; font-weight: 800; }
.field input, .field select, .field textarea { width: 100%; border: 1px solid #dce6e3; border-radius: 8px; min-height: 40px; padding: 10px 11px; color: #243943; background: #fff; font-size: 12px; outline: none; }
.field textarea { min-height: 86px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: #68c6b4; box-shadow: 0 0 0 3px #d9f3eb; }
.field-hint { font-size: 10px; color: #99a7a9; line-height: 1.4; }
.required-mark { color: #e67866; }
.check-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 7px; }
.check-item { display: flex; align-items: center; gap: 8px; border: 1px solid #e5ece9; border-radius: 8px; padding: 8px 10px; color: #51666d; font-size: 11px; font-weight: 700; cursor: pointer; }
.check-item:has(input:checked) { background: #e9f6f1; border-color: #9bdacb; color: #107b6d; }
.check-item input { accent-color: var(--teal); }
.operation-picker { display: grid; gap: 6px; }
.operation-option { display: flex; align-items: center; gap: 9px; border: 1px solid #e2eae7; border-radius: 8px; min-height: 39px; padding: 4px 7px 4px 10px; background: #fff; }
.operation-option:has(input:checked) { border-color: #a5d7ca; background: #f3faf7; }
.operation-option .order-index { width: 18px; color: #2e9c84; font-size: 10px; font-weight: 800; text-align: center; }
.operation-option label { flex: 1; display: flex; align-items: center; gap: 8px; font-size: 11px; color: #53676d; font-weight: 700; cursor: pointer; }
.operation-option input { accent-color: var(--teal); }
.order-buttons { display: flex; gap: 3px; }
.order-buttons button { width: 27px; height: 27px; border: 1px solid #dfe9e5; background: #fff; color: #6e9188; border-radius: 6px; font-size: 14px; line-height: 1; }
.order-buttons button:hover { border-color: #84c5b4; color: var(--teal); }
.form-warning { color: #915944; background: #fff5ed; border: 1px solid #f6e5d7; padding: 10px 12px; border-radius: 7px; font-size: 11px; line-height: 1.5; margin-bottom: 18px; }
.preview-frame { width: 100%; height: min(65vh, 620px); border: 1px solid #e1e8e5; border-radius: 8px; background: #f6f8f7; }
.preview-image { display: block; margin: auto; max-height: min(65vh, 620px); object-fit: contain; }
.modal.cad-modal { width: min(100%, 1080px); max-height: min(96vh, 1080px); }
.cad-preview-wrap { display: grid; gap: 8px; }
.cad-preview-canvas { display: block; width: 100%; height: clamp(300px, 62vh, 650px); border: 1px solid #dce8e5; border-radius: 10px; background: #f9fcfb; touch-action: none; cursor: grab; }
.cad-preview-canvas:active { cursor: grabbing; }
.cad-preview-status { margin: 3px 0 0; color: #45616a; font-size: 12px; font-weight: 700; line-height: 1.45; }
.cad-preview-status.error { color: #af5146; }
.cad-preview-help { margin: 0; color: #87969a; font-size: 11px; line-height: 1.4; }
.cad-inline-preview { margin-bottom: 15px; border: 1px solid #dceae5; border-radius: 9px; background: #f9fcfb; }
.cad-inline-preview > summary { padding: 11px 13px; color: #187c71; font-size: 12px; font-weight: 800; cursor: pointer; }
.cad-inline-preview .cad-preview-wrap { padding: 0 12px 13px; }
.cad-inline-preview .cad-preview-canvas { height: min(43vh, 360px); }

.drawer-backdrop { display: block; padding: 0; }
.drawer { margin-left: auto; height: 100%; width: min(100%, 390px); background: white; display: flex; flex-direction: column; box-shadow: -10px 0 40px rgba(0, 0, 0, .14); }
.drawer-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; border-bottom: 1px solid #e8eeeb; padding: 25px 24px 19px; }
.drawer-header h2 { margin-bottom: 3px; font-size: 20px; }
.drawer-header p { font-size: 11px; color: #90a0a5; margin: 0; }
.drawer-body { overflow-y: auto; padding: 10px 24px 24px; }
.notification-item { border-bottom: 1px solid #edf2ef; padding: 15px 0; display: grid; gap: 7px; }
.notification-item.unread { position: relative; padding-left: 15px; }
.notification-item.unread::before { content: ''; position: absolute; width: 5px; height: 5px; background: #24a994; left: 0; top: 22px; border-radius: 50%; }
.notification-item p { color: #455b62; font-size: 12px; line-height: 1.5; margin: 0; }
.notification-item small { color: #a5b0b1; font-size: 10px; }
.notification-actions { display: flex; gap: 15px; }
.notification-actions button { color: #158979; border: 0; background: transparent; padding: 0; font-weight: 800; font-size: 10px; }

#toast-region { position: fixed; z-index: 60; right: 20px; bottom: 18px; display: grid; gap: 8px; max-width: min(90vw, 360px); }
.toast { background: #203c43; color: #fff; border-radius: 9px; box-shadow: 0 12px 30px rgba(15, 32, 36, .2); padding: 12px 15px; font-size: 12px; line-height: 1.4; animation: toast-in .18s ease-out; }
.toast.error { background: #a45045; }
@keyframes toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.loading-block { display: grid; place-items: center; min-height: 230px; color: #8ca09e; font-size: 12px; }
.spinner { width: 25px; height: 25px; border: 3px solid #d7eae4; border-top-color: #1a9a84; border-radius: 50%; animation: spin .7s linear infinite; margin-bottom: 10px; }
@keyframes spin { to { transform: rotate(360deg); } }
.error-panel { border: 1px solid #f2ddd7; background: #fff9f7; padding: 20px; border-radius: 10px; color: #97594d; font-size: 12px; }
.error-panel p { line-height: 1.5; }

.auth-screen { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1.03fr) minmax(390px, .97fr); background: #fff; }
.auth-hero { background: #142a33; color: #fff; padding: clamp(26px, 4vw, 64px); display: flex; flex-direction: column; min-height: 100vh; overflow: hidden; position: relative; }
.auth-hero::before { content: ''; position: absolute; left: 47%; top: -170px; width: 610px; height: 610px; border: 1px solid rgba(145, 208, 195, .13); border-radius: 50%; box-shadow: 0 0 0 85px rgba(90, 174, 156, .035), 0 0 0 178px rgba(90, 174, 156, .026); }
.auth-hero .brand { position: relative; padding: 0; align-self: flex-start; }
.auth-hero-content { position: relative; margin: auto 0; max-width: 520px; padding: 55px 0 60px; }
.auth-kicker { color: #7ed9c6; font-size: 11px; font-weight: 800; letter-spacing: .19em; text-transform: uppercase; }
.auth-hero h1 { color: #fff; font-size: clamp(38px, 4.1vw, 58px); line-height: 1.08; letter-spacing: -.065em; margin: 22px 0; }
.auth-hero p { font-size: 15px; color: #a8bfbe; max-width: 440px; line-height: 1.7; }
.auth-illustration { border: 1px solid #36515b; border-radius: 17px; background: linear-gradient(150deg, #28434b, #18343d); max-width: 420px; padding: 18px; margin-top: 45px; box-shadow: 0 25px 50px rgba(4, 17, 24, .3); }
.auth-ill-top { display: flex; justify-content: space-between; align-items: center; padding-bottom: 15px; }
.auth-ill-top i { width: 72px; height: 8px; background: #53716f; border-radius: 10px; }
.auth-ill-top span { color: #8bbab0; font-size: 9px; }
.auth-ill-row { border-top: 1px solid #36515b; padding: 11px 0; display: flex; align-items: center; gap: 11px; }
.auth-ill-row b { width: 20px; height: 20px; border-radius: 5px; background: #36af97; }
.auth-ill-row i { height: 7px; width: 36%; border-radius: 8px; background: #47646b; }
.auth-ill-row small { margin-left: auto; background: #376b66; color: #8cdbca; border-radius: 5px; padding: 5px 8px; font-size: 8px; }
.auth-hero-foot { color: #709397; font-size: 11px; position: relative; }
.auth-form-side { display: grid; place-items: center; padding: 30px; }
.auth-form-box { width: min(100%, 370px); }
.auth-form-box .eyebrow { margin-bottom: 15px; }
.auth-form-box h2 { font-size: 30px; line-height: 1.15; margin-bottom: 9px; }
.auth-form-box > p { color: #85959b; line-height: 1.6; font-size: 13px; margin-bottom: 31px; }
.auth-form-box .field { margin-bottom: 16px; }
.auth-form-box .field input { min-height: 45px; }
.auth-form-box .button { margin-top: 7px; min-height: 45px; font-size: 12px; }
.auth-footnote { font-size: 11px; color: #a1aeb2; border-top: 1px solid #edf1ef; margin-top: 30px; padding-top: 18px; line-height: 1.5; }

@media (max-width: 1100px) {
  .stats-grid { grid-template-columns: repeat(2, 1fr); }
  .content-grid { grid-template-columns: 1fr; }
  .operation-row { grid-template-columns: 30px minmax(120px, 1fr) minmax(100px, .7fr) minmax(110px, 1fr) auto; }
}
@media (max-width: 760px) {
  .app-shell { display: block; }
  .sidebar { position: fixed; width: 260px; transform: translateX(-101%); transition: transform .2s; box-shadow: 10px 0 30px rgba(15, 35, 40, .12); }
  .app-shell.menu-open .sidebar { transform: translateX(0); }
  .app-shell.menu-open::before { content: ''; position: fixed; inset: 0; background: rgba(11, 27, 36, .4); z-index: 9; }
  .mobile-menu { display: inline-grid; }
  .topbar { padding: 0 18px; height: 62px; }
  .date-text { display: none; }
  .main { padding: 24px 18px 45px; }
  .page-heading { align-items: flex-start; }
  .detail-head { padding: 19px; }
  .detail-head-top { flex-direction: column; }
  .detail-summary { grid-template-columns: repeat(2, 1fr); }
  .auth-screen { display: block; }
  .auth-hero { min-height: auto; padding: 25px; }
  .auth-hero-content { margin: 0; padding: 30px 0 12px; }
  .auth-hero h1 { font-size: 29px; margin: 10px 0; }
  .auth-hero p { font-size: 12px; margin-bottom: 0; }
  .auth-illustration, .auth-hero-foot { display: none; }
  .auth-form-side { padding: 38px 25px; }
}
@media (max-width: 600px) {
  .company-stats { grid-template-columns: 1fr; }
  .company-setup-summary { grid-template-columns: 1fr; }
  .stats-grid { gap: 9px; }
  .stat-card { padding: 15px; min-height: 115px; }
  .stat-value { font-size: 27px; }
  .page-heading { flex-direction: column; }
  .heading-actions { justify-content: flex-start; }
  .operation-row { grid-template-columns: 24px minmax(0, 1fr) auto; gap: 8px; }
  .operation-row > .op-assignee { grid-column: 2 / 3; }
  .operation-row > .op-status { grid-column: 2 / 3; }
  .operation-row > .op-actions { grid-column: 3; grid-row: 1 / span 3; }
  .operation-row .op-actions { flex-direction: column; align-items: stretch; }
  .part-card-header { padding: 14px; gap: 9px; }
  .part-body { padding: 15px; }
  .part-header-side { gap: 7px; }
  .part-header-side .part-count { display: none; }
  .form-grid { grid-template-columns: 1fr; }
  .field.full-width { grid-column: 1; }
  .modal-body { padding: 19px; }
  .modal-header { padding: 18px 19px; }
  .cad-preview-canvas { height: min(55vh, 500px); }
  .check-grid { grid-template-columns: 1fr; }
}
