/* Sales Order SO-2 — quotation-like command centre; presentation/read-model only */
.so2{display:flex;flex-direction:column;gap:14px;color:#10213c}
.so2-back{display:flex;justify-content:flex-start}
.so2-hero,.so2-info-grid,.so2-progress-card,.so2-section,.so2-summary{background:#fff;border:1px solid #dbe4ef;border-radius:16px;box-shadow:0 8px 24px rgba(15,35,66,.05)}
.so2-hero{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:20px 22px}
.so2-hero-copy p{margin:0 0 4px;font-size:11px;font-weight:800;letter-spacing:.16em;color:#5e7390}
.so2-hero-copy h1{margin:0;font-size:28px;line-height:1.05;color:#10284a}
.so2-hero-copy>span{display:block;margin-top:6px;color:#667a96}
.so2-hero-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.so2-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.so2-status{display:inline-flex;align-items:center;min-height:25px;padding:4px 9px;border-radius:999px;border:1px solid #d9e3ef;background:#f5f8fc;color:#4f6480;font-size:11px;font-weight:800;letter-spacing:.03em;white-space:nowrap}
.so2-status.active,.so2-status.accepted,.so2-status.ready,.so2-status.work-complete,.so2-status.fully-invoiced,.so2-status.paid,.so2-status.completed{background:#edf5ff;border-color:#bed7fb;color:#165dc5}
.so2-status.in-fabrication,.so2-status.partially-delivered,.so2-status.partially-invoiced,.so2-status.partially-paid,.so2-status.pending,.so2-status.draft{background:#fff8e7;border-color:#f1d48b;color:#8a5b00}
.so2-status.cancelled,.so2-status.returned,.so2-status.partially-returned{background:#fff0f0;border-color:#efc2c2;color:#aa3030}
.so2-progress-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.so2-progress-card{padding:14px;min-width:0}
.so2-progress-card.accent{border-color:#c5d9f6;background:linear-gradient(180deg,#fff,#f8fbff)}
.so2-progress-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:12px}
.so2-progress-card-head>span{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#607590}
.so2-progress-card strong{display:block;font-size:17px;color:#10284a;line-height:1.25}
.so2-progress-card small{display:block;margin-top:5px;color:#71839b;min-height:30px}
.so2-meter{height:5px;margin-top:12px;background:#e9eff6;border-radius:999px;overflow:hidden}
.so2-meter i{display:block;height:100%;background:#1e66d5;border-radius:inherit}
.so2-info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:14px}
.so2-detail-box{min-width:0;padding:11px 12px;border:1px solid #dce5f0;border-radius:12px;background:#fbfdff}
.so2-detail-box span{display:block;margin-bottom:5px;color:#637792;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.so2-detail-box b{display:block;color:#122744;overflow-wrap:anywhere}
.so2-alert{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;padding:12px 14px;border:1px solid #efc2c2;background:#fff4f4;border-radius:12px;color:#8f2f2f}
.so2-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:14px;align-items:start}
.so2-main{display:flex;flex-direction:column;gap:14px;min-width:0}
.so2-section{padding:16px;min-width:0}
.so2-section h2{margin:0;color:#10284a;font-size:18px}
.so2-section>p{color:#556a85}
.so2-section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}
.so2-section-head h2{margin:0}
.so2-section-head p{margin:4px 0 0;color:#6b7f99}
.so2-section-head>span{color:#667a96;font-size:12px}
.so2-items{display:flex;flex-direction:column;gap:10px}
.so2-item{border:1px solid #dbe5f0;border-radius:14px;overflow:hidden;background:#fff}
.so2-item-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:13px 14px;border-bottom:1px solid #e8eef5}
.so2-item-head span{font-size:10px;font-weight:800;letter-spacing:.1em;color:#9a6a00}
.so2-item-head h3{margin:3px 0 2px;color:#112844;font-size:16px}
.so2-item-head small{color:#6e8198}
.so2-item-head>b{font-size:16px;color:#10284a}
.so2-item-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px}
.so2-service-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;border-top:1px solid #e8eef5;background:#e8eef5}
.so2-service-grid>div{background:#fbfdff;padding:9px 11px}
.so2-service-grid span{display:block;color:#687b95;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.so2-service-grid b{display:block;margin-top:3px;color:#112844}
.so2-summary{position:sticky;top:84px;padding:16px}
.so2-summary h2{margin:0 0 12px;color:#10284a;font-size:18px}
.so2-summary-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #edf1f6;color:#60748f}
.so2-summary-row b{color:#142945}
.so2-grand{margin-top:12px;padding:13px;border:1px solid #bdd4f5;border-radius:12px;background:#f4f8ff}
.so2-grand span{display:block;color:#61748d;font-size:11px;font-weight:800}
.so2-grand b{display:block;margin-top:4px;color:#175cc4;font-size:22px}
.so2-summary-note{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px}
.so2-summary-note>span{font-size:12px;color:#667a95}
.so2-linked-list{display:flex;flex-direction:column;border:1px solid #e0e7f0;border-radius:12px;overflow:hidden}
.so2-linked-row{display:grid;grid-template-columns:minmax(180px,1.4fr) repeat(3,minmax(90px,.7fr)) auto minmax(120px,auto);align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid #e9eef5}
.so2-linked-row:last-child{border-bottom:0}
.so2-linked-row>div:first-child{min-width:0}
.so2-linked-row b{color:#112844}
.so2-linked-row small{display:block;margin-top:3px;color:#70839b;overflow-wrap:anywhere}
.so2-linked-row>span{font-size:12px;color:#5d718c}
.so2-row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.so2-empty{padding:16px;border:1px dashed #ccd8e6;border-radius:12px;color:#71839a;background:#fbfdff}
.so2-finance-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:10px}
.so2-terms{white-space:pre-wrap;color:#536983;line-height:1.55}
@media(max-width:1180px){.so2-progress-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.so2-layout{grid-template-columns:1fr}.so2-summary{position:static}.so2-linked-row{grid-template-columns:minmax(180px,1fr) repeat(2,minmax(90px,.6fr)) auto}.so2-linked-row>span:nth-of-type(3){display:none}}
@media(max-width:820px){.so2-hero{align-items:flex-start;flex-direction:column}.so2-hero-actions{width:100%;justify-content:flex-start}.so2-actions{justify-content:flex-start}.so2-progress-grid{grid-template-columns:1fr 1fr}.so2-info-grid,.so2-item-grid,.so2-finance-strip{grid-template-columns:1fr 1fr}.so2-service-grid{grid-template-columns:1fr 1fr}.so2-linked-row{grid-template-columns:1fr}.so2-row-actions{justify-content:flex-start}}
@media(max-width:560px){.so2-progress-grid,.so2-info-grid,.so2-item-grid,.so2-finance-strip,.so2-service-grid{grid-template-columns:1fr}.so2-section-head{flex-direction:column}.so2-actions{width:100%}.so2-actions .btn{flex:1 1 auto}}

/* SO-3 — Inventory & Item Control */
.so3-section-head{align-items:center}
.so3-summary-status{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.so3-summary-status>b{font-size:12px;color:#4e6480}
.so3-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px}
.so3-kpis>div{padding:10px 11px;border:1px solid #e0e8f2;border-radius:11px;background:#fbfdff}
.so3-kpis span{display:block;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#6e8098}
.so3-kpis b{display:block;margin-top:4px;font-size:17px;color:#112946}
.so3-lock-note{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;margin-bottom:10px;border:1px solid #dce5f0;border-radius:11px;background:#f8fafc;color:#5c708b}
.so3-lock-note b{color:#263e5f;white-space:nowrap}
.so3-allocation-list{display:flex;flex-direction:column;border:1px solid #dfe7f1;border-radius:13px;overflow:hidden}
.so3-allocation-row{display:grid;grid-template-columns:minmax(150px,1.25fr) minmax(90px,.65fr) minmax(130px,.9fr) minmax(125px,.8fr) minmax(150px,1fr) minmax(120px,auto);gap:10px;align-items:center;padding:12px 13px;border-bottom:1px solid #e9eef5;background:#fff}
.so3-allocation-row:last-child{border-bottom:0}
.so3-allocation-row>div{min-width:0}
.so3-allocation-row span:not(.so2-status){display:block;margin-bottom:3px;font-size:9px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#7b8da3}
.so3-allocation-row b{display:block;color:#132b49;overflow-wrap:anywhere}
.so3-allocation-row small{display:block;color:#71839a;overflow-wrap:anywhere}
.so3-item-copy>span{color:#9a6a00!important}
.so3-line-action{display:flex;justify-content:flex-end}
.so3-action-note{font-size:11px!important;font-weight:700!important;text-transform:none!important;letter-spacing:0!important;text-align:end;color:#6c7f97!important}
.so3-status.fully-allocated,.so3-status.reserved,.so3-status.ready-for-delivery,.so3-status.delivered,.so3-status.allocated,.so3-status.fabrication-complete{background:#edf5ff;border-color:#bed7fb;color:#165dc5}
.so3-status.allocation-required,.so3-status.fabrication-source-pending,.so3-status.in-fabrication,.so3-status.locked{background:#fff8e7;border-color:#f1d48b;color:#8a5b00}
.so3-status.issue{background:#fff0f0;border-color:#efc2c2;color:#aa3030}
.so3-allocation-modal{max-width:760px}
.so3-modal{display:flex;flex-direction:column;gap:13px}
.so3-modal-error{padding:10px 12px;border:1px solid #efc2c2;border-radius:10px;background:#fff2f2;color:#982f2f;font-weight:700}
.so3-modal-order{padding:12px 13px;border:1px solid #dce6f1;border-radius:12px;background:#f8fbff}
.so3-modal-order>span{font-size:10px;font-weight:800;letter-spacing:.08em;color:#5f7591}
.so3-modal-order h3{margin:4px 0 2px;color:#102a4c}
.so3-modal-order p{margin:0;color:#6a7e98}
.so3-modal-facts,.so3-selected-stock{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.so3-selected-stock{grid-template-columns:repeat(4,minmax(0,1fr))}
.so3-modal-facts>div,.so3-selected-stock>div{padding:10px;border:1px solid #e0e8f2;border-radius:10px;background:#fff}
.so3-modal-facts span,.so3-selected-stock span{display:block;font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#71849c}
.so3-modal-facts b,.so3-selected-stock b{display:block;margin-top:3px;color:#142d4b;overflow-wrap:anywhere}
.so3-warning{padding:10px 12px;border:1px solid #efd38d;border-radius:10px;background:#fff9e9;color:#785500}
.so3-info{padding:10px 12px;border:1px solid #cadcf5;border-radius:10px;background:#f4f8ff;color:#45617e}
@media(max-width:1180px){.so3-allocation-row{grid-template-columns:minmax(160px,1.2fr) repeat(3,minmax(110px,.8fr));}.so3-candidate{display:none}.so3-line-action{justify-content:flex-start}}
@media(max-width:820px){.so3-kpis{grid-template-columns:1fr 1fr}.so3-allocation-row{grid-template-columns:1fr 1fr}.so3-modal-facts,.so3-selected-stock{grid-template-columns:1fr 1fr}.so3-summary-status{justify-content:flex-start}}
@media(max-width:560px){.so3-kpis,.so3-allocation-row,.so3-modal-facts,.so3-selected-stock{grid-template-columns:1fr}.so3-lock-note{flex-direction:column}}


/* SO-4 — Fabrication → Sales Order Fulfillment Bridge */
.so4-fulfillment-list{display:flex;flex-direction:column;border:1px solid #dfe7f1;border-radius:13px;overflow:hidden}
.so4-fulfillment-row{display:grid;grid-template-columns:minmax(170px,1.25fr) minmax(90px,.6fr) minmax(180px,1fr) minmax(150px,.9fr) minmax(140px,.8fr);gap:10px;align-items:center;padding:12px 13px;border-bottom:1px solid #e9eef5;background:#fff}
.so4-fulfillment-row:last-child{border-bottom:0}
.so4-fulfillment-row>div{min-width:0}
.so4-fulfillment-row span:not(.so2-status){display:block;margin-bottom:3px;font-size:9px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#7b8da3}
.so4-fulfillment-row b{display:block;color:#132b49;overflow-wrap:anywhere}
.so4-fulfillment-row small{display:block;margin-top:2px;color:#71839a;overflow-wrap:anywhere}
.so4-item>span{color:#9a6a00!important}
.so2-status.work-complete,.so2-status.ready-for-delivery,.so2-status.delivered{background:#edf5ff;border-color:#bed7fb;color:#165dc5}
.so2-status.partially-delivered,.so2-status.in-fabrication,.so2-status.fabrication-pending{background:#fff8e7;border-color:#f1d48b;color:#8a5b00}
.so2-status.fulfillment-issue{background:#fff0f0;border-color:#efc2c2;color:#aa3030}
@media(max-width:1180px){.so4-fulfillment-row{grid-template-columns:minmax(170px,1.25fr) repeat(3,minmax(120px,.8fr))}.so4-fulfillment-row>div:nth-child(2){display:none}}
@media(max-width:820px){.so4-fulfillment-row{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.so4-fulfillment-row{grid-template-columns:1fr}}


/* SO-7: retain all operational facts at every width. */
.so7-content,.so2-main,.so2-layout,.so2-hero-copy{min-width:0}
.so2-linked-row>*{min-width:0;overflow-wrap:anywhere}
.so2-hero-copy h1,.so2-hero-copy>span,.so2-progress-card strong,.so2-detail-box b{overflow-wrap:anywhere}
.so7-error{margin:0 0 12px;padding:12px;border:1px solid #efc2c2;border-radius:10px;background:#fff2f2;color:#982f2f;overflow-wrap:anywhere}
.so7-modal .modalfoot{position:sticky;bottom:0;background:#fff;z-index:1}
@media(max-width:1180px){.so2-linked-row>span:nth-of-type(3){display:block}.so2-linked-row{grid-template-columns:repeat(2,minmax(0,1fr))}.so4-fulfillment-row>div:nth-child(2){display:block}}
@media(max-width:820px){.so2-linked-row{grid-template-columns:minmax(0,1fr)}.so7-content .work{display:block}.so7-content .summary{position:static;margin-top:14px}.so7-content .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.so7-content .grid{grid-template-columns:minmax(0,1fr)}.so7-content .itemtop,.so7-content .sectionhead{flex-wrap:wrap}.so7-modal{width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}.so7-content .btn,.so7-modal .btn{min-height:42px}.so2-section,.so2-hero{padding:14px}}
.so7-content .btn.primary,.so7-modal .btn.primary{background:linear-gradient(135deg,#1769ed,#0d47c5);border-color:#1769ed;color:#fff}
.so7-content .btn.primary:focus-visible,.so7-modal .btn.primary:focus-visible{outline:3px solid #bdd4f5;outline-offset:2px}
.so2-back{gap:8px}


/* Sales Orders register — deliberately reuses the Quotation register surface. */
.sov9-register .sov9-table{min-width:1180px}
.sov9-register .sov9-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;margin-inline-start:4px;padding:2px 6px;border-radius:999px;background:#eef3f9;color:#718096;font-size:10px;font-variant-numeric:tabular-nums}
.sov9-register .qv9-tabs button.active .sov9-tab-count{background:#e5efff;color:#1d4ed8}
.sov9-register .qv9-table tbody tr[data-so-register-open]{cursor:pointer}
.sov9-register .qv9-table tbody tr:hover td{background:#f9fbff}
.sov9-register .qv9-table td small{max-width:190px;overflow-wrap:anywhere}
.sov9-register .sov9-badge{white-space:nowrap}
.sov9-register .sov9-badge.accepted,.sov9-register .sov9-badge.completed,.sov9-register .sov9-badge.work_complete,.sov9-register .sov9-badge.paid,.sov9-register .sov9-badge.delivered{background:#ecfdf5;border-color:#a7f3d0;color:#047857}
.sov9-register .sov9-badge.in_fabrication,.sov9-register .sov9-badge.partially_delivered,.sov9-register .sov9-badge.pending,.sov9-register .sov9-badge.draft,.sov9-register .sov9-badge.issued,.sov9-register .sov9-badge.partially_paid{background:#fff8e7;border-color:#f1d48b;color:#8a5b00}
.sov9-register .sov9-badge.overdue,.sov9-register .sov9-badge.cancelled{background:#fff0f0;border-color:#efc2c2;color:#aa3030}
.sov9-register .qv9-table td:nth-child(6) small,.sov9-register .qv9-table td:nth-child(8) small{font-size:11px;line-height:1.35}
@media(max-width:800px){.sov9-register .qv9-controls{grid-template-columns:1fr}.sov9-register .qv9-tabs{padding-inline:10px}.sov9-register .qv9-tabs button{padding-inline:12px}}
/* Two-screen UI: use Quotation classes; scope exceptions to Sales Order. */
.sov9-register,.sov9-editor{min-width:0;width:100%}
.sov9-register .sov9-badge{background:#f8fafc;color:#475569;border-color:#d8e1ea}
.sov9-register .qv9-table td:nth-child(2){min-width:190px;max-width:280px;overflow-wrap:anywhere}
.sov9-register .qv9-table td:nth-child(1){min-width:150px}
.sov9-register .qv9-search{min-width:0}.sov9-register .qv9-search input{min-width:0}
.sov9-related{max-width:1680px;margin:16px auto 0}
.sov9-related .seg-tabs{flex-wrap:wrap}
.sov9-editor .qv9-info-card,.sov9-editor .field{min-width:0}
.sov9-editor .summary.qv9-summary{background:#fff;color:#10233f;border:1px solid var(--line,#dfe7f1);border-radius:14px;padding:18px}
.sov9-editor .summary .sum{color:#64748b;border-color:#eef2f6}
.sov9-editor .summary .sum b{color:#10233f}
.sov9-editor .summary .grand{background:linear-gradient(135deg,#e8f1ff,#fff);color:#10233f;border:1px solid #cfe0ff}
.sov9-editor .summary .grand b{color:#0f4bd9}
.sov9-editor .summary .full{width:100%;margin-top:14px}
.sov9-editor .item{background:#fff;border:1px solid var(--line,#dfe7f1);border-radius:14px;padding:16px}
.sov9-editor .item .grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.sov9-editor .calcstrip{flex-wrap:wrap}
.sov9-editor .readonly{overflow-wrap:anywhere}
.sov9-editor button:focus-visible,.sov9-editor input:focus-visible,.sov9-editor select:focus-visible,.sov9-editor textarea:focus-visible{outline:3px solid rgba(37,99,235,.28);outline-offset:2px}
.sov9-editor input[type=checkbox]{width:auto;min-height:auto;margin:0}
@media(max-width:1200px){.sov9-editor .summary.qv9-summary{position:static;max-height:none}}
@media(max-width:800px){.sov9-editor .item .grid,.sov9-editor .extra-row{grid-template-columns:1fr}.sov9-editor .qv9-section-head{flex-wrap:wrap}.sov9-editor .qv9-section-head button{width:100%}}
.sov9-editor .field{margin-bottom:10px}
.sov9-editor .field>label,.sov9-editor .summary .field>label{font-size:12px;line-height:1.4;letter-spacing:normal;text-transform:none;color:#344054;margin-bottom:6px}
.sov9-editor .summary .sum{font-size:13px;line-height:1.5;padding:8px 0}
.sov9-editor .summary .sum b{font-size:13px}
.sov9-editor .readonly{font-size:13px;padding:10px 11px;min-height:40px}
.sov9-editor .qv9-service-fields .field{margin:0}
.sov9-editor .item .grid{padding:12px 0}
.sov9-register .qv9-table td:nth-child(4){white-space:nowrap}
.sov9-register .sov9-table{min-width:1100px}
.sov9-register .sov9-badge.fully_invoiced,.sov9-register .sov9-badge.paid,.sov9-register .sov9-badge.work_complete,.sov9-register .sov9-badge.delivered{background:#ecfdf5;border-color:#a7f3d0;color:#047857}
.sov9-register .sov9-badge.partially_invoiced,.sov9-register .sov9-badge.partially_paid,.sov9-register .sov9-badge.in_fabrication,.sov9-register .sov9-badge.partially_delivered{background:#fff8e7;border-color:#f1d48b;color:#8a5b00}
.sov9-register .sov9-badge.cancelled,.sov9-register .sov9-badge.returned,.sov9-register .sov9-badge.partially_returned{background:#fff0f0;border-color:#efc2c2;color:#aa3030}
.sov9-editor .qv9-client-results[hidden]{display:none}
.sov9-register .qv9-table-wrap:focus-visible{outline:3px solid rgba(37,99,235,.28);outline-offset:-3px}
.sov9-register .sov9-table.is-empty{min-width:0;width:100%}
.sov9-register .sov9-table.is-empty thead{display:none}
.sov9-register .sov9-table.is-empty td{min-width:0;max-width:none}
.sov9-register .sov9-table.is-empty .qv9-empty{text-align:start;align-items:flex-start}
