:root{--bg:#f4f7fb;--panel:#fff;--line:#dbe3ef;--text:#172033;--muted:#667085;--brand:#2457d6;--brand2:#183fa7;--good:#157347;--warn:#b25b00;--bad:#b42318;--info:#155eef;--shadow:0 10px 28px rgba(25,42,70,.08);--radius:14px}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,"Noto Sans Thai",Segoe UI,Arial,sans-serif;font-size:14px}body{min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:252px;background:#111c36;color:#dbe6ff;position:fixed;inset:0 auto 0 0;overflow:auto;z-index:20;border-right:1px solid rgba(255,255,255,.06)}.brand{display:flex;align-items:center;gap:12px;padding:20px 18px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark{width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,#5a85ff,#2f5ee6);display:grid;place-items:center;color:#fff;font-weight:800;font-size:20px}.brand strong{display:block;color:#fff;font-size:16px}.brand small{color:#91a6d6}.nav-group{padding:18px 18px 7px;color:#758ab7;font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:700}.nav-link{display:flex;gap:10px;align-items:center;margin:2px 9px;padding:10px 12px;border-radius:9px;color:#bac9e8}.nav-link:hover{background:#18294e;color:#fff}.nav-link.active{background:#244da8;color:#fff;box-shadow:inset 3px 0 0 #77a0ff}.nav-icon{width:20px;text-align:center}.main{margin-left:252px;min-width:0;width:calc(100% - 252px)}.topbar{height:70px;display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);padding:0 24px;position:sticky;top:0;z-index:15;backdrop-filter:blur(8px)}.topbar>div{display:flex;align-items:center;gap:12px}.topbar h1{font-size:19px;margin:0}.top-actions{display:flex;align-items:center;gap:10px}.lang{font-weight:800;color:var(--brand);border:1px solid var(--line);padding:7px 9px;border-radius:8px}.user-chip{display:flex;flex-direction:column;line-height:1.05;padding:0 4px}.user-chip small{margin-top:4px;color:var(--muted);font-size:10px}.mobile-menu{display:none;background:transparent;border:0;font-size:22px}.content{padding:22px 24px 50px;max-width:1800px;margin:0 auto}.grid{display:grid;gap:15px}.grid.metrics{grid-template-columns:repeat(6,minmax(135px,1fr));margin-bottom:18px}.metric-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:15px;box-shadow:var(--shadow);min-height:104px;display:flex;flex-direction:column}.metric-card span{color:var(--muted);font-size:12px;font-weight:600}.metric-card strong{font-size:24px;margin-top:8px}.metric-card small{color:var(--muted);margin-top:auto}.metric-card.bad{border-left:4px solid #d92d20}.metric-card.warn{border-left:4px solid #f79009}.metric-card.good{border-left:4px solid #12b76a}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px}.panel-head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-head h2,.panel-head h3{margin:0;font-size:15px}.panel-body{padding:16px}.toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.toolbar.right{justify-content:flex-end}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 12px;border:1px solid var(--brand);border-radius:9px;background:var(--brand);color:white;font-weight:700;cursor:pointer;min-height:36px}.btn:hover{background:var(--brand2)}.btn.secondary{background:white;color:var(--brand);border-color:#9bb5ef}.btn.ghost{background:white;color:var(--text);border-color:var(--line)}.btn.danger{background:#b42318;border-color:#b42318}.btn.good{background:#157347;border-color:#157347}.btn.small{padding:6px 9px;min-height:30px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:12px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:12px;color:#455066;font-weight:700}.input,.select,.textarea,input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{width:100%;border:1px solid #cdd6e5;background:#fff;color:var(--text);border-radius:8px;padding:9px 10px;outline:0;min-height:38px}.textarea,textarea{min-height:130px;resize:vertical}.input:focus,.select:focus,textarea:focus,input:focus,select:focus{border-color:#6d93ef;box-shadow:0 0 0 3px rgba(36,87,214,.11)}.check{display:flex;align-items:center;gap:7px;font-weight:600}.muted{color:var(--muted)}.smalltext{font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px}.data-table{border-collapse:separate;border-spacing:0;width:100%;min-width:900px;background:white}.data-table th{position:sticky;top:0;z-index:3;background:#eaf0fb;border-bottom:1px solid #c9d5e8;color:#27405f;font-size:11px;text-transform:uppercase;letter-spacing:.02em;padding:9px 8px;text-align:left;white-space:nowrap}.data-table td{padding:8px;border-bottom:1px solid #edf1f6;vertical-align:middle;white-space:nowrap}.data-table tr:hover td{background:#f8fbff}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.editable{background:#fff6bf!important}.source{background:#eaf3ff!important}.formula{background:#eaf8f1!important}.danger-cell{background:#fff0ee!important}.badge{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;border:1px solid transparent}.badge.overdue,.badge.critical,.badge.data-issue,.badge.rejected{background:#fee4e2;color:#b42318;border-color:#fecdca}.badge.urgent,.badge.warning{background:#fff0c2;color:#9a4d00;border-color:#fedf89}.badge.normal,.badge.sent{background:#e9f2ff;color:#175cd3}.badge.sufficient,.badge.acknowledged,.badge.completed,.badge.added{background:#e8f8ef;color:#067647}.badge.waiting-my-reply,.badge.waiting-reply,.badge.updated{background:#f4ebff;color:#6941c6}.flash{padding:11px 13px;border-radius:9px;margin-bottom:12px;border:1px solid}.flash.success{background:#ecfdf3;border-color:#abefc6;color:#067647}.flash.error{background:#fef3f2;border-color:#fecdca;color:#b42318}.flash.warning{background:#fffaeb;border-color:#fedf89;color:#b54708}.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);padding:0 12px}.tab{padding:11px 12px;border-bottom:2px solid transparent;color:var(--muted);font-weight:700}.tab.active{color:var(--brand);border-color:var(--brand)}.split{display:grid;grid-template-columns:1fr 1fr;gap:16px}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 10% 10%,#dfe9ff 0,transparent 35%),linear-gradient(145deg,#f8faff,#eef3fb)}.login-card{width:min(440px,92vw);background:white;border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 70px rgba(22,42,75,.14);padding:28px}.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:24px}.login-logo .brand-mark{width:46px;height:46px}.login-card h1{margin:0 0 5px;font-size:22px}.login-card .form-group{margin-bottom:13px}.notice{padding:12px 14px;border-radius:10px;background:#f1f6ff;border:1px solid #cfe0ff;color:#27405f}.danger-notice{background:#fff1f0;border-color:#fecaca;color:#991b1b}.progress{height:8px;background:#edf1f6;border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--brand)}.kpi-list{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.codebox{white-space:pre-wrap;background:#0f172a;color:#dce7ff;padding:12px;border-radius:10px;overflow:auto}.toast{position:fixed;right:22px;bottom:22px;z-index:100;background:#172033;color:#fff;padding:12px 15px;border-radius:10px;box-shadow:var(--shadow);display:none}.sticky-filters{position:sticky;top:78px;z-index:8;background:white}.month-chips{display:flex;gap:6px;flex-wrap:wrap}.chip{padding:6px 9px;border:1px solid var(--line);border-radius:999px;background:white}.chip.active{background:var(--brand);color:#fff;border-color:var(--brand)}.status-dot{width:8px;height:8px;border-radius:50%;background:#98a2b3;display:inline-block}.status-dot.ok{background:#12b76a}.status-dot.bad{background:#f04438}.empty{padding:35px;text-align:center;color:var(--muted)}
@media(max-width:1200px){.grid.metrics{grid-template-columns:repeat(3,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.main{margin-left:0;width:100%}.mobile-menu{display:block}.content{padding:14px}.topbar{padding:0 14px}.user-chip{display:none}.grid.metrics{grid-template-columns:repeat(2,1fr)}.form-grid,.split{grid-template-columns:1fr}}

/* v1.0.1 — Import Center & modern login */
.import-center-card .import-format-box{min-height:68px;display:flex;align-items:center;line-height:1.45}.import-option-panel{display:none}.import-report-metrics .metric-card{min-height:96px}.import-top-grid{align-items:start}
.login-page-v2{margin:0;min-height:100vh;background:#edf2f8;color:#172033;font-family:Inter,"Noto Sans Thai",Segoe UI,Arial,sans-serif}.login-shell-v2{min-height:100vh;display:grid;grid-template-columns:minmax(520px,1.15fr) minmax(420px,.85fr)}.login-visual{position:relative;overflow:hidden;background:linear-gradient(145deg,#0b1734 0%,#142b5c 55%,#2255c9 100%);color:#fff}.login-visual:before,.login-visual:after{content:"";position:absolute;border-radius:50%;filter:blur(1px);opacity:.22}.login-visual:before{width:520px;height:520px;background:#74a1ff;right:-180px;top:-160px}.login-visual:after{width:380px;height:380px;background:#16c7c1;left:-160px;bottom:-160px}.login-visual-inner{position:relative;z-index:2;min-height:100vh;padding:54px 64px;display:flex;flex-direction:column}.login-brand-large{display:flex;align-items:center;gap:13px}.login-brand-large .brand-mark{width:46px;height:46px;border-radius:14px}.login-brand-large strong{font-size:18px;display:block}.login-brand-large span{display:block;color:#b8c9ec;font-size:12px;margin-top:3px}.login-hero-copy{margin:auto 0;max-width:720px}.login-eyebrow{font-size:11px;letter-spacing:.18em;color:#a9c5ff;font-weight:800;margin-bottom:15px}.login-hero-copy h1{font-size:clamp(36px,4.4vw,64px);line-height:1.04;letter-spacing:-.035em;margin:0 0 22px;max-width:760px}.login-hero-copy p{font-size:15px;line-height:1.75;color:#d5e1f7;max-width:660px}.login-feature-grid{display:grid;grid-template-columns:repeat(2,minmax(200px,1fr));gap:10px;max-width:720px}.login-feature{padding:14px 15px;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:rgba(255,255,255,.07);backdrop-filter:blur(10px)}.login-feature b{display:block;font-size:13px;margin-bottom:5px}.login-feature span{font-size:11px;color:#b8c9ec}.login-version{margin-top:24px;font-size:11px;color:#91a9d7}.login-form-side{display:flex;align-items:center;justify-content:center;padding:40px;background:radial-gradient(circle at 100% 0,#dce7ff 0,transparent 34%),#f7f9fc}.login-card-v2{width:min(470px,100%);background:#fff;border:1px solid #d9e1ec;border-radius:24px;padding:36px;box-shadow:0 28px 80px rgba(28,46,78,.13)}.login-mobile-brand{display:none}.login-heading>span{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef4ff;color:#2457d6;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.login-heading h2{font-size:29px;letter-spacing:-.025em;margin:12px 0 7px}.login-heading p{margin:0 0 24px;color:#667085}.login-form-v2 .form-group{margin-bottom:16px}.login-input-wrap{position:relative}.login-input-wrap>span{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:#75839b;font-size:13px}.login-input-wrap input{padding-left:38px;min-height:46px;border-radius:11px;background:#fbfcfe}.login-submit-v2{width:100%;min-height:48px;margin-top:5px;border-radius:11px;justify-content:space-between;padding-inline:17px;font-size:14px}.login-submit-v2 span{font-size:19px}.login-foot-v2{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #edf0f4;margin-top:22px;padding-top:17px;color:#7a8699;font-size:11px}.login-foot-v2 .lang{font-size:12px}.badge.mapped{background:#e8f8ef;color:#067647}.badge.pending{background:#fff0c2;color:#9a4d00}
@media(max-width:980px){.login-shell-v2{grid-template-columns:1fr}.login-visual{display:none}.login-form-side{min-height:100vh;padding:22px}.login-card-v2{padding:28px}.login-mobile-brand{display:flex;align-items:center;gap:11px;margin-bottom:26px}.login-mobile-brand strong{display:block}.login-mobile-brand small{display:block;color:#667085;margin-top:2px}}
@media(max-width:760px){.import-report-metrics{grid-template-columns:repeat(2,1fr)!important}.login-card-v2{border-radius:18px;padding:23px}.login-form-side{padding:14px}}

/* v1.0.4 Procurement Action Center */
.timeline-strip{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:10px}.timeline-step{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#f8fbff;text-align:center}.timeline-step b{font-size:23px}.timeline-step span{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase}.timeline-step.danger{background:#fff1f0;border-color:#fecaca}.timeline-step.danger b{color:#b42318}.timeline-step.warn{background:#fffaeb;border-color:#fedf89}.timeline-step.warn b{color:#b54708}.timeline-step.good{background:#ecfdf3;border-color:#abefc6}.timeline-step.good b{color:#067647}.overdue-pill,.due-pill{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;white-space:nowrap}.overdue-pill{background:#fee4e2;color:#b42318;border:1px solid #fecdca}.due-pill{background:#eef4ff;color:#175cd3;border:1px solid #c7d7fe}.supplier-action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.supplier-action-card{display:flex;flex-direction:column;gap:7px;padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:#fbfcfe}.supplier-action-card:hover{border-color:#9bb5ef;box-shadow:0 8px 18px rgba(25,42,70,.06)}.supplier-action-card>div{display:flex;justify-content:space-between;gap:10px;align-items:center}.supplier-action-card>div span,.supplier-action-card small{font-size:11px;color:var(--muted)}.supplier-action-card strong{font-size:16px}.supplier-action-card.danger{background:#fff6f5;border-color:#fecdca}.supplier-action-card.danger small{color:#b42318;font-weight:800}.proc-flow{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.proc-flow-step{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;color:var(--muted)}.proc-flow-step b{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#e5eaf2;color:#667085}.proc-flow-step span{font-size:11px;font-weight:800}.proc-flow-step.done{background:#ecfdf3;border-color:#abefc6;color:#067647}.proc-flow-step.done b{background:#12b76a;color:white}.proc-flow-step.active{background:#eef4ff;border-color:#b2ccff;color:#175cd3}.proc-flow-step.active b{background:#2457d6;color:white}.bulk-action-bar{display:grid;grid-template-columns:auto minmax(220px,1fr) minmax(180px,.7fr) minmax(180px,.6fr) auto;gap:9px;align-items:center;padding:10px;margin-bottom:10px;background:#f8fafc;border:1px solid var(--line);border-radius:10px}.row-editor td{background:#f8fbff!important}.row-edit-grid{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:10px;padding:8px}.inline-form{display:inline-flex;margin:0}.action-filters{grid-template-columns:repeat(4,minmax(180px,1fr))}.badge.not-opened{background:#fff0c2;color:#9a4d00;border-color:#fedf89}.badge.selected{background:#eef4ff;color:#175cd3;border-color:#b2ccff}.badge.opened,.badge.sent,.badge.acknowledged,.badge.partial-received,.badge.received,.badge.closed{background:#e8f8ef;color:#067647;border-color:#abefc6}
@media(max-width:1100px){.timeline-strip{grid-template-columns:repeat(3,1fr)}.proc-flow{grid-template-columns:repeat(3,1fr)}.bulk-action-bar{grid-template-columns:1fr 1fr}.row-edit-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.timeline-strip,.proc-flow{grid-template-columns:1fr 1fr}.bulk-action-bar,.row-edit-grid{grid-template-columns:1fr}.supplier-action-grid{grid-template-columns:1fr}}

/* v1.1.0 Enterprise Purchasing / Communication / Archive */
.enterprise-flow{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:10px}.enterprise-flow>a{display:flex;flex-direction:column;gap:5px;padding:15px;border:1px solid var(--line);border-radius:13px;background:#fbfcfe;min-height:105px}.enterprise-flow>a:hover{border-color:#9bb5ef;box-shadow:0 8px 20px rgba(25,42,70,.07)}.enterprise-flow b{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--brand);color:#fff}.enterprise-flow span{font-weight:800}.enterprise-flow small{color:var(--muted)}
.lookup-wrap{position:relative;min-width:0}.lookup-wrap>input:first-child{width:100%}.lookup-results{position:absolute;z-index:80;left:0;right:0;top:calc(100% + 4px);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 38px rgba(24,39,65,.14);max-height:280px;overflow:auto}.lookup-option{display:flex;width:100%;border:0;background:#fff;text-align:left;padding:9px 11px;gap:8px;align-items:center;cursor:pointer;border-bottom:1px solid #eef1f5}.lookup-option:hover{background:#f3f7ff}.lookup-option b{font-size:11px;color:#173b7a;white-space:nowrap}.lookup-option span{font-size:11px;color:#46566d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pager{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:14px;flex-wrap:wrap}.pager-num{display:grid;place-items:center;min-width:34px;height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:12px;font-weight:700}.pager-num.active{background:var(--brand);color:white;border-color:var(--brand)}
.supplier-queue-table td{vertical-align:middle}.modal-open{overflow:hidden}.modal-backdrop{position:fixed;inset:0;background:rgba(9,18,36,.62);z-index:200;display:grid;place-items:center;padding:18px}.modal-backdrop[hidden]{display:none}.modal-card{background:white;border-radius:18px;box-shadow:0 30px 90px rgba(0,0,0,.25);max-height:92vh;display:flex;flex-direction:column;width:min(780px,96vw);overflow:hidden}.modal-card.wide{width:min(1180px,97vw)}.modal-head,.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 17px;border-bottom:1px solid var(--line)}.modal-foot{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-end;flex-wrap:wrap}.modal-head h2{margin:0}.modal-body{padding:16px;overflow:auto}.email-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.email-subject-row{grid-column:1/-1}.email-meta-grid label{display:block;font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:800;margin-bottom:4px}.copy-field{padding:9px 10px;border:1px solid var(--line);background:#f8fafc;border-radius:9px;min-height:38px;word-break:break-word}.email-preview-frame{border:1px solid var(--line);border-radius:12px;padding:18px;background:white;overflow:auto;margin-top:12px;min-height:240px}.email-preview-frame table{min-width:900px}.email-action-toolbar{margin-top:12px;flex-wrap:wrap}.archive-risk{border-left:4px solid #f04438}
@media(max-width:1100px){.enterprise-flow{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.enterprise-flow{grid-template-columns:1fr 1fr}.email-meta-grid{grid-template-columns:1fr}.modal-foot{justify-content:stretch}.modal-foot .btn,.modal-foot a.btn{flex:1}.email-preview-frame{padding:10px}}

/* v1.3.0 Friendly UX / collapsible navigation / local SweetAlert layer */
.app-shell.sidebar-collapsed{grid-template-columns:74px 1fr}.app-shell.sidebar-collapsed .sidebar{width:74px}.app-shell.sidebar-collapsed .brand>div:last-child,.app-shell.sidebar-collapsed .nav-group,.app-shell.sidebar-collapsed .nav-link>span:last-child{display:none}.app-shell.sidebar-collapsed .brand{justify-content:center;padding-left:0;padding-right:0}.app-shell.sidebar-collapsed .nav-link{justify-content:center;padding-left:0;padding-right:0}.app-shell.sidebar-collapsed .nav-icon{margin:0}.sidebar-collapse{border:1px solid var(--line);background:#fff;border-radius:9px;width:36px;height:36px;display:grid;place-items:center;cursor:pointer;font-weight:800;color:#44546c}.sidebar-collapse:hover{background:#f3f7ff;color:var(--brand)}
.swal-lite-backdrop{position:fixed;inset:0;background:rgba(9,18,36,.58);z-index:10000;display:grid;place-items:center;padding:18px}.swal-lite-card{width:min(440px,95vw);background:#fff;border-radius:20px;padding:27px 28px 22px;box-shadow:0 30px 90px rgba(0,0,0,.28);text-align:center;animation:swalLiteIn .16s ease-out}.swal-lite-card h2{margin:11px 0 8px;font-size:22px}.swal-lite-text{color:#5a6678;line-height:1.65;white-space:normal}.swal-lite-icon{margin:auto;width:58px;height:58px;border:4px solid #b2ccff;color:#2457d6;border-radius:50%;display:grid;place-items:center;font-size:30px;font-weight:800}.swal-lite-icon.success{border-color:#75e0a7;color:#067647}.swal-lite-icon.error{border-color:#fda29b;color:#b42318}.swal-lite-icon.warning{border-color:#fec84b;color:#b54708}.swal-lite-actions{display:flex;justify-content:center;gap:9px;margin-top:22px}@keyframes swalLiteIn{from{opacity:.2;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}
.stage-dashboard{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:10px;margin-bottom:16px}.stage-card{position:relative;display:flex;flex-direction:column;gap:4px;padding:15px 14px;border:1px solid var(--line);border-radius:13px;background:#fff;min-height:125px}.stage-card>span{position:absolute;right:10px;top:10px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#eef4ff;color:#2457d6;font-weight:800;font-size:11px}.stage-card>b{font-size:26px;margin-top:8px}.stage-card>strong{font-size:12px}.stage-card>small{color:var(--muted)}.stage-card:hover,.stage-card.active{border-color:#7da2f2;box-shadow:0 8px 22px rgba(36,87,214,.1)}.stage-card.warn{background:#fffbeb}.stage-card.danger{background:#fff5f4;border-color:#fecdca}.stage-card.good{background:#effcf5}.row-danger td{background:#fff7f6!important}.help-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:25px;border-radius:18px;background:linear-gradient(125deg,#11284e,#2457d6);color:#fff;margin-bottom:16px}.help-hero h2{font-size:28px;margin:6px 0 9px}.help-hero p{color:#d9e5ff;max-width:900px;line-height:1.7}.help-hero .eyebrow{font-size:10px;letter-spacing:.18em;font-weight:800;color:#aac4ff}.workflow-guide{display:grid;gap:10px}.guide-step{display:grid;grid-template-columns:54px 1fr;gap:14px;padding:18px;border:1px solid var(--line);border-radius:14px;background:#fff}.guide-step.locked{opacity:.65;background:#f8fafc}.guide-no{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#2457d6;color:#fff;font-weight:900}.guide-tag{font-size:10px;color:#667085;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.guide-body h3{margin:4px 0 5px}.guide-body p{margin:0 0 11px;color:#59677a;line-height:1.65}.permission-note{font-size:11px;color:#7a8699}.checklist-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.checklist-grid>div{padding:12px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.permission-matrix th,.permission-matrix td{text-align:center}.permission-matrix th:first-child,.permission-matrix td:first-child{text-align:left;position:sticky;left:0;background:#fff;z-index:2}.role-note{padding:10px;border-radius:9px;background:#fff7ed;color:#9a3412;font-size:11px}.password-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:#eef4ff;color:#2457d6;border-radius:8px;padding:6px 9px;font-size:11px;font-weight:800;cursor:pointer}.login-input-wrap.has-toggle input{padding-right:82px}.status-step-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.status-step-card{padding:14px;border:1px solid var(--line);border-radius:12px;background:#fff}.status-step-card strong{display:block;font-size:22px}.status-step-card span{font-size:11px;color:var(--muted)}
@media(max-width:1350px){.stage-dashboard{grid-template-columns:repeat(4,1fr)}}@media(max-width:900px){.stage-dashboard,.status-step-grid{grid-template-columns:repeat(2,1fr)}.checklist-grid{grid-template-columns:1fr 1fr}.app-shell.sidebar-collapsed{grid-template-columns:1fr}.app-shell.sidebar-collapsed .sidebar{width:var(--sidebar-width)}}@media(max-width:620px){.stage-dashboard,.status-step-grid,.checklist-grid{grid-template-columns:1fr}.help-hero{align-items:flex-start;flex-direction:column}}
.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(250px,1fr));gap:12px}.permission-group{border:1px solid var(--line);border-radius:12px;padding:12px}.permission-group legend{font-size:11px;font-weight:900;color:#52627a;padding:0 6px}.permission-check{display:flex;align-items:flex-start;gap:8px;padding:7px;border-radius:8px}.permission-check:hover{background:#f6f8fb}.permission-check span{display:flex;flex-direction:column}.permission-check b{font-size:11px}.permission-check small{font-size:10px;color:var(--muted);margin-top:2px}@media(max-width:1000px){.permission-grid{grid-template-columns:1fr 1fr}}@media(max-width:650px){.permission-grid{grid-template-columns:1fr}}
/* v1.3.0 presentation mode: fully hide sidebar and expand content to full viewport */
.app-shell.sidebar-collapsed .sidebar{transform:translateX(-100%);width:252px;transition:transform .18s ease}
.app-shell.sidebar-collapsed .main{margin-left:0;width:100%}
.app-shell.sidebar-collapsed .brand>div:last-child,.app-shell.sidebar-collapsed .nav-group,.app-shell.sidebar-collapsed .nav-link>span:last-child{display:initial}
.app-shell.sidebar-collapsed .brand{justify-content:flex-start;padding:20px 18px}.app-shell.sidebar-collapsed .nav-link{justify-content:flex-start;padding:10px 12px}
.sidebar{transition:transform .18s ease}
.quick-links{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px}.quick-links a{border:1px solid var(--line);border-radius:10px;padding:12px;background:#f8fbff;font-weight:700}.quick-links a:hover{border-color:#8badf5;background:#eef5ff}
.delivery-state{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;background:#eef2f6;color:#475467}.delivery-state.overdue{background:#fee4e2;color:#b42318}.delivery-state.due_7{background:#fff0c2;color:#9a4d00}.delivery-state.received{background:#e8f8ef;color:#067647}.delivery-state.no_date{background:#f4ebff;color:#6941c6}.delivery-state.due_30{background:#fff7e6;color:#9a4d00}.delivery-state.later{background:#e9f2ff;color:#175cd3}
@media(max-width:760px){.app-shell.sidebar-collapsed .sidebar{transform:translateX(-100%)}.app-shell.sidebar-collapsed .main{margin-left:0;width:100%}.quick-links{grid-template-columns:1fr}}
.stage-card.bad{background:#fff5f4;border-color:#fecdca}

/* v1.3.1 display modes, compact planning actions, bulk BOM reporting */
.ui-professional .beginner-only{display:none!important}.ui-beginner .professional-only{display:none!important}.ui-professional .panel-head .muted.smalltext:not(.always-show){display:none}.ui-mode-form{margin:0}.ui-mode-btn{white-space:nowrap}.ui-beginner .panel-head .muted.smalltext{line-height:1.55;max-width:1000px}.ui-beginner .notice{line-height:1.6}
.planning-action-dock{position:sticky;top:70px;z-index:9;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;padding:10px 12px;background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(25,42,70,.08);backdrop-filter:blur(10px)}.planning-action-dock>div:first-child{display:flex;flex-direction:column;min-width:190px}.planning-action-dock>div:first-child span{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.45}.planning-action-dock .toolbar{justify-content:flex-end}.planning-settings-panel{position:relative}.planning-explain-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.page-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 24px;margin-bottom:16px;border-radius:18px;background:linear-gradient(120deg,#11284e,#2457d6);color:white;box-shadow:var(--shadow)}.page-hero.compact-hero h2{font-size:25px;margin:4px 0 8px}.page-hero p{margin:0;max-width:900px;color:#d9e5ff;line-height:1.65}.eyebrow{font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:900;color:#8fb2ff}.hero-badges{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.hero-badges span{padding:6px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.09);font-size:10px;font-weight:800;white-space:nowrap}.bulk-model-entry{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:12px;align-items:stretch}.bulk-model-entry textarea{min-height:180px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.bulk-entry-actions{display:flex;flex-direction:column;gap:9px}.bulk-entry-actions .btn{min-height:52px}.input-hint{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.55}.match-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.match-card{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1.25fr);gap:8px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff}.match-card.matched{border-left:4px solid #12b76a}.match-card.review{border-left:4px solid #f79009}.match-card.missing{border-left:4px solid #d92d20}.match-source,.match-target{display:flex;flex-direction:column;gap:4px;min-width:0}.match-source>span,.match-target>span{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:800}.match-source b,.match-target b{overflow:hidden;text-overflow:ellipsis}.match-target small{font-size:10px;color:var(--muted);line-height:1.4}.match-arrow{text-align:center;color:#8090a8;font-size:20px}.bad-text{color:var(--bad)}.bulk-report-stack{display:grid;gap:16px}.bom-model-card{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}.bom-model-head{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:15px 16px;background:#f8fbff;border-bottom:1px solid var(--line)}.bom-model-head h3{margin:3px 0 4px;font-size:17px}.bom-model-head p{margin:0;color:var(--muted)}.bom-model-kpis{display:flex;gap:8px}.bom-model-kpis span{min-width:92px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:10px;color:var(--muted);text-align:center}.bom-model-kpis b{display:block;color:var(--text);font-size:16px}.process-chip-row{display:flex;gap:6px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--line);background:#fff}.process-chip-row span{padding:5px 8px;border:1px solid #d8e3f4;border-radius:999px;background:#f3f7ff;font-size:10px}.table-limit-note{padding:9px 12px;background:#fffaeb;color:#8a4b00;font-size:11px}.data-cleanup-warning{border-left:4px solid #d92d20}
@media(max-width:1200px){.planning-action-dock{align-items:flex-start;flex-direction:column}.planning-action-dock .toolbar{justify-content:flex-start}.match-grid{grid-template-columns:1fr}.planning-explain-grid{grid-template-columns:1fr}}
@media(max-width:760px){.planning-action-dock{top:70px}.bulk-model-entry{grid-template-columns:1fr}.page-hero{align-items:flex-start;flex-direction:column}.hero-badges{justify-content:flex-start}.bom-model-head{align-items:flex-start;flex-direction:column}.bom-model-kpis{width:100%;overflow:auto}.top-actions .ui-mode-btn{padding-left:7px;padding-right:7px;font-size:10px}}
/* v1.3.1 help additions */
.help-tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.help-tool-card{border:1px solid var(--line,#dbe3ef);border-radius:14px;padding:16px;background:linear-gradient(180deg,#fff,#f8fbff)}.help-tool-card b{display:block;margin-bottom:6px;color:var(--ink,#172033)}.help-tool-card p{margin:0 0 10px;color:var(--muted,#667085);line-height:1.65}.ui-professional .help-tool-card p{display:none}.ui-professional .help-tool-card{padding:12px}.ui-professional .help-tool-grid{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:900px){.help-tool-grid,.ui-professional .help-tool-grid{grid-template-columns:1fr}}
.communication-draft-notice{margin-bottom:16px;background:#fff9e8;border-color:#f3d08a;color:#795200}.empty-state.compact{padding:18px;border:1px dashed var(--line);border-radius:12px;background:#f8fafc}.empty-state.compact p{margin:6px 0 0;color:var(--muted);line-height:1.55}

/* =====================================================================
   v1.4.0 — Enterprise Visual System
   One visual language across ALL modules: planning, purchasing, master,
   inventory, communication, reports, admin, login and production BOM.
   ===================================================================== */
:root{
  --bg:#f3f6fb;--bg2:#eef3f9;--panel:#ffffff;--panel-soft:#f8faff;--line:#e1e8f2;
  --text:#101828;--muted:#667085;--brand:#3157d5;--brand2:#203fae;--brand-soft:#eef3ff;
  --good:#079455;--good-soft:#ecfdf3;--warn:#dc6803;--warn-soft:#fff7ed;--bad:#d92d20;--bad-soft:#fff1f0;
  --violet:#7f56d9;--cyan:#0e9384;--shadow-xs:0 1px 2px rgba(16,24,40,.04);--shadow:0 10px 32px rgba(35,55,90,.07);--shadow-lg:0 22px 60px rgba(35,55,90,.12);
  --radius:18px;--radius-sm:12px;--sidebar:252px;
}
html{background:var(--bg)}body{background:radial-gradient(circle at 78% -10%,rgba(75,113,235,.08),transparent 28%),linear-gradient(180deg,#f8faff 0,#f3f6fb 240px,#f3f6fb 100%);letter-spacing:-.005em}
.app-shell{min-height:100vh}.sidebar{width:var(--sidebar);background:linear-gradient(180deg,#0d1730 0%,#101d3a 55%,#0b1428 100%);border-right:1px solid rgba(255,255,255,.06);box-shadow:12px 0 34px rgba(9,20,44,.08)}
.brand{padding:18px 16px;gap:11px;border-bottom:1px solid rgba(255,255,255,.075);position:sticky;top:0;background:rgba(13,23,48,.94);backdrop-filter:blur(14px);z-index:3}.brand-mark{width:40px;height:40px;border-radius:13px;background:linear-gradient(145deg,#6e8cff,#3157d5);box-shadow:0 8px 24px rgba(49,87,213,.38)}.brand strong{font-size:15px;letter-spacing:.01em}.brand small{font-size:10px;color:#9eb1dc}
.nav-group{padding:20px 16px 7px;color:#6f86b5;font-size:10px;letter-spacing:.12em}.nav-link{margin:3px 9px;padding:10px 11px;border-radius:11px;color:#c8d4ee;transition:all .16s ease}.nav-link:hover{background:rgba(93,125,205,.14);color:#fff;transform:translateX(2px)}.nav-link.active{background:linear-gradient(135deg,rgba(64,103,219,.94),rgba(41,76,176,.95));color:#fff;box-shadow:0 8px 24px rgba(16,42,111,.28),inset 0 0 0 1px rgba(255,255,255,.12)}.nav-icon{width:22px;font-size:14px;color:#93b3ff}.nav-link.active .nav-icon{color:#fff}
.main{margin-left:var(--sidebar);width:calc(100% - var(--sidebar))}.topbar{height:76px;padding:0 28px;background:rgba(255,255,255,.88);border-bottom:1px solid rgba(222,229,240,.92);box-shadow:0 4px 20px rgba(30,45,70,.035);backdrop-filter:blur(18px) saturate(150%)}.topbar h1{font-size:20px;font-weight:800;letter-spacing:-.025em}.sidebar-collapse,.mobile-menu{width:36px;height:36px;border:1px solid var(--line);border-radius:11px;background:#fff;color:#344054;display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow-xs)}.sidebar-collapse:hover,.mobile-menu:hover{background:var(--brand-soft);color:var(--brand);border-color:#cbd8ff}.top-actions{gap:8px}.lang{background:#fff;border-color:var(--line);border-radius:11px;padding:8px 10px}.user-chip{padding:4px 8px}.user-chip b{font-size:12px}.user-chip small{font-size:9px}.content{padding:24px 28px 60px;max-width:1920px}

/* common surfaces */
.panel{border:1px solid rgba(220,228,239,.9);border-radius:20px;box-shadow:var(--shadow);overflow:hidden;background:rgba(255,255,255,.97);margin-bottom:18px}.premium-panel{box-shadow:0 14px 38px rgba(35,55,90,.08)}.panel-head{padding:17px 18px;border-bottom:1px solid #edf1f6;background:linear-gradient(180deg,#fff,#fdfefe);gap:16px}.panel-head h2{font-size:15px;font-weight:850;letter-spacing:-.015em}.panel-head h3{font-weight:800}.panel-head .muted{margin-top:4px;display:block}.panel-body{padding:18px}.panel-body.no-pad{padding:0}.split{gap:18px}.notice{border-radius:14px;padding:13px 15px;background:linear-gradient(180deg,#f6f9ff,#eef4ff);border-color:#d8e5ff;box-shadow:var(--shadow-xs)}.danger-notice{background:linear-gradient(180deg,#fff7f6,#fff0ef);border-color:#ffd0cc;color:#9f2319}.flash{border-radius:14px;box-shadow:var(--shadow-xs)}
.btn{min-height:38px;padding:9px 14px;border-radius:11px;border:1px solid transparent;background:linear-gradient(180deg,#3d64df,#3157d5);box-shadow:0 4px 12px rgba(49,87,213,.16);font-weight:800;font-size:12px;transition:all .14s ease}.btn:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(49,87,213,.20);background:linear-gradient(180deg,#365dda,#294cc5)}.btn.secondary{background:#f2f5ff;color:#3157d5;border-color:#d4defc;box-shadow:none}.btn.secondary:hover{background:#e9efff}.btn.ghost{background:#fff;color:#344054;border-color:#dfe6ef;box-shadow:var(--shadow-xs)}.btn.ghost:hover{background:#f7f9fc;color:#203fae}.btn.good{background:linear-gradient(180deg,#12a269,#079455);border-color:#079455}.btn.danger{background:linear-gradient(180deg,#e5483e,#d92d20)}.btn.small{min-height:32px;border-radius:9px;padding:7px 10px;font-size:11px}.btn:disabled{transform:none;box-shadow:none;filter:grayscale(.15)}

/* forms */
.form-grid{gap:14px}.form-group{gap:7px}.form-group label,.command-filters label>span{font-size:11px;color:#475467;font-weight:800;letter-spacing:.01em}.input,.select,.textarea,input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=month],select,textarea{border:1px solid #d7e0ec;border-radius:11px;padding:9px 11px;min-height:40px;background:#fff;box-shadow:inset 0 1px 1px rgba(16,24,40,.02);transition:border .14s,box-shadow .14s}.input:hover,select:hover,textarea:hover,input:hover{border-color:#bfcce0}.input:focus,.select:focus,textarea:focus,input:focus,select:focus{border-color:#7f9bea;box-shadow:0 0 0 4px rgba(49,87,213,.10)}textarea{line-height:1.55}.check{padding:5px 0}
.command-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding:14px 16px;margin-bottom:16px;background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.command-filters{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.command-filters label{display:flex;flex-direction:column;gap:5px;min-width:150px}.command-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.record-count{display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border-radius:999px;background:#f2f4f7;color:#475467;font-size:11px;font-weight:800}

/* metrics & dashboard */
.grid.metrics{gap:14px;margin-bottom:18px}.metric-card{position:relative;border:1px solid #e2e8f1;border-radius:18px;min-height:118px;padding:17px 17px 15px;background:linear-gradient(155deg,#fff 0%,#fbfcff 100%);box-shadow:0 10px 30px rgba(35,55,90,.055);overflow:hidden}.metric-card:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;right:-36px;top:-38px;background:rgba(49,87,213,.055)}.metric-card span{font-size:11px;color:#667085;font-weight:800}.metric-card strong{font-size:27px;line-height:1;margin-top:12px;letter-spacing:-.035em}.metric-card small{font-size:10px}.metric-card.bad{border-left:0;border-top:3px solid var(--bad)}.metric-card.warn{border-left:0;border-top:3px solid #f79009}.metric-card.good{border-left:0;border-top:3px solid var(--good)}
.stage-dashboard{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:10px!important}.stage-card{position:relative;display:flex!important;flex-direction:column!important;justify-content:flex-start;min-height:126px;padding:15px 14px!important;border-radius:16px!important;border:1px solid #e2e8f0!important;background:linear-gradient(160deg,#fff,#f8faff)!important;box-shadow:0 5px 18px rgba(35,55,90,.045);overflow:hidden;transition:transform .14s,box-shadow .14s}.stage-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(35,55,90,.09)}.stage-card:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:#8aa4e8}.stage-card strong{order:1;font-size:28px!important;line-height:1;color:#101828;margin:4px 0 11px}.stage-card>span{order:2;font-size:11px!important;font-weight:850!important;color:#344054!important;line-height:1.35;min-height:30px}.stage-card small{order:3;margin-top:auto!important;font-size:10px!important;line-height:1.35;color:#7a8699!important}.stage-card.bad:before{background:#f04438}.stage-card.bad{background:linear-gradient(160deg,#fff,#fff7f6)!important}.stage-card.warn:before{background:#f79009}.stage-card.warn{background:linear-gradient(160deg,#fff,#fffbf2)!important}.stage-card.good:before{background:#12b76a}.stage-card.good{background:linear-gradient(160deg,#fff,#f3fbf7)!important}
.proc-flow{display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px!important}.proc-flow-step{min-height:82px!important;padding:12px 10px!important;border-radius:15px!important;background:#f8fafc!important;border:1px solid #e3e9f2!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;gap:8px!important;position:relative}.proc-flow-step b{width:28px!important;height:28px!important;display:grid!important;place-items:center!important;border-radius:9px!important;background:#e7ecf4!important;color:#667085!important;font-size:12px}.proc-flow-step span{font-size:10px!important;font-weight:850!important;line-height:1.3}.proc-flow-step.done{background:linear-gradient(160deg,#f5fffa,#ecfdf3)!important;border-color:#c4eed8!important}.proc-flow-step.done b{background:#12b76a!important;color:white!important}.proc-flow-step.active{background:linear-gradient(160deg,#f7f9ff,#eef3ff)!important;border-color:#c9d7ff!important}.proc-flow-step.active b{background:var(--brand)!important;color:#fff!important}
.timeline-strip{gap:8px!important}.timeline-step{border-radius:14px!important;background:#f8faff!important;border-color:#e2e8f1!important;min-height:78px;padding:12px!important}.timeline-step b{font-size:21px!important}.supplier-action-card{border-radius:14px!important;background:linear-gradient(160deg,#fff,#f8fbff)!important;box-shadow:var(--shadow-xs)}

/* tables */
.table-wrap{border:1px solid #e0e7f0;border-radius:14px;background:white;box-shadow:var(--shadow-xs)}.premium-table{border:0;border-radius:0;box-shadow:none}.data-table{font-size:12px}.data-table th{padding:11px 10px;background:linear-gradient(180deg,#eef3fb,#e8eef8);color:#344b68;border-bottom:1px solid #cfdaea;font-size:10px;font-weight:850;letter-spacing:.045em}.data-table td{padding:9px 10px;border-bottom:1px solid #edf1f5;color:#263449}.data-table tbody tr:last-child td{border-bottom:0}.data-table tr:hover td{background:#f8fbff}.data-table .wrapcell,.wrapcell{white-space:normal;min-width:180px;line-height:1.45}.row-actions{display:flex;gap:6px}.editable{background:#fff8cf!important}.source{background:#edf5ff!important}.formula{background:#eefaf4!important}
.tabs{padding:7px 8px 0;gap:4px;border-bottom:1px solid var(--line);background:#f8fafc;overflow:auto}.tab{padding:9px 12px;border:0;border-radius:10px 10px 0 0;font-size:11px}.tab.active{background:#fff;color:var(--brand);box-shadow:0 -1px 0 #dfe7f4,1px 0 0 #dfe7f4,-1px 0 0 #dfe7f4}
.badge{padding:5px 8px;font-size:9px;letter-spacing:.015em}.overdue-pill,.due-pill{border-radius:999px!important;padding:5px 8px!important;font-size:10px!important}

/* hero & premium landing */
.page-hero,.hero-shell{position:relative;overflow:hidden;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:26px 28px;margin-bottom:18px;border-radius:22px;background:linear-gradient(125deg,#10224a 0%,#274fb8 55%,#3d66da 100%);color:#fff;box-shadow:0 18px 46px rgba(34,65,145,.19)}.page-hero:after,.hero-shell:after{content:"";position:absolute;width:330px;height:330px;border-radius:50%;right:-120px;top:-190px;background:rgba(255,255,255,.085)}.page-hero h2,.hero-shell h2{margin:4px 0 8px;font-size:27px;letter-spacing:-.035em}.page-hero p,.hero-shell p{max-width:920px;color:#dbe6ff;line-height:1.65}.hero-kicker,.eyebrow{font-size:9px;letter-spacing:.16em;color:#9ebaff;font-weight:900}.hero-copy{position:relative;z-index:1}.hero-stat-cluster{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(105px,1fr));gap:8px;min-width:380px}.hero-stat-cluster>div{padding:13px 14px;border:1px solid rgba(255,255,255,.16);border-radius:15px;background:rgba(255,255,255,.09);backdrop-filter:blur(9px)}.hero-stat-cluster b{display:block;font-size:24px}.hero-stat-cluster span{font-size:9px;color:#dce6ff}.hero-stat-cluster .good b{color:#8ff0b9}.hero-stat-cluster .bad b{color:#ffaaa3}
.kpi-ribbon{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}.kpi-ribbon>a,.kpi-ribbon>div{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs)}.kpi-ribbon span{font-size:10px;font-weight:850;color:#667085}.kpi-ribbon b{font-size:24px}.kpi-ribbon small{font-size:10px;color:#98a2b3}.kpi-ribbon .good{background:linear-gradient(160deg,#fff,#f0fbf5);border-color:#d0efdf}

/* BOM readiness */
.bom-state{display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;font-size:9px;font-weight:900;letter-spacing:.04em}.bom-state.complete{color:#067647;background:#ecfdf3;border:1px solid #abefc6}.bom-state.missing{color:#b42318;background:#fef3f2;border:1px solid #fecdca}.bom-state.incomplete{color:#b54708;background:#fffaeb;border:1px solid #fedf89}.issue-cell{color:#9f2319}.warning-cell{color:#93520b}.ok-text{color:#067647;font-weight:800}.empty-state{padding:28px;text-align:center;color:#667085}.recipe-gate{display:flex;align-items:flex-start;gap:10px;margin:14px 16px 0;padding:12px 14px;border-radius:13px}.recipe-gate b{white-space:nowrap}.recipe-gate span{line-height:1.5}.recipe-gate.blocking{background:#fff3f1;border:1px solid #ffd1cc;color:#9f2319}.recipe-gate.passed{background:#ecfdf3;border:1px solid #abefc6;color:#067647}.bom-inline-issues{display:flex;gap:6px;flex-wrap:wrap;padding:10px 14px;background:#fff7ed;border-bottom:1px solid #fed7aa}.bom-inline-issues span{padding:5px 8px;border-radius:8px;background:#fff;color:#9a3412;border:1px solid #fed7aa;font-size:10px}.bom-health-mini.complete b{color:#067647}.bom-health-mini.incomplete b,.bom-health-mini.missing b{color:#b42318}

/* BOM web preview — paper-like controlled production document */
.bulk-report-stack{gap:24px}.bom-model-card{border:0!important;border-radius:6px!important;background:#fff!important;box-shadow:0 18px 50px rgba(30,45,70,.13)!important;max-width:1480px;margin:0 auto;overflow:hidden!important}.bom-model-head{padding:20px 22px!important;background:#fff!important;border-top:5px solid #264e7c!important;border-bottom:1px solid #cfd8e5!important}.bom-model-head h3{font-size:19px!important;color:#173a65}.bom-model-kpis span{border-radius:8px!important}.process-chip-row{padding:12px 18px!important;background:#e9f3e4!important;border-bottom:1px solid #bfd5b9!important}.process-chip-row span{border-radius:6px!important;background:#fff!important;border-color:#c8d9c4!important}.bom-model-card .table-wrap{border:0!important;border-radius:0!important}.bom-model-card .data-table th{background:#d9e1f2!important;color:#1f3552!important}.bom-model-card .data-table td{font-family:Arial,sans-serif;font-size:11px}.table-limit-note{border-radius:0!important}

/* live model suggestion */
.model-suggest-popover{margin-top:7px;border:1px solid #cdd9ed;border-radius:13px;background:#fff;box-shadow:0 18px 40px rgba(35,55,90,.14);overflow:hidden;max-height:300px;overflow-y:auto}.model-suggest-popover .suggest-head{padding:8px 11px;background:#f5f8fd;color:#667085;font-size:9px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.model-suggest-popover button{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:9px 11px;border:0;border-top:1px solid #eef2f7;background:#fff;cursor:pointer;text-align:left}.model-suggest-popover button:hover{background:#f3f7ff}.model-suggest-popover b{font-size:11px;color:#223a62}.model-suggest-popover span{font-size:10px;color:#7a8699}

/* planning */
.planning-action-dock{top:84px;border-radius:16px;padding:9px 12px;border-color:#dce5f1;box-shadow:0 10px 30px rgba(35,55,90,.08)}.planning-settings-panel .panel-body{background:linear-gradient(180deg,#fff,#fcfdff)}.planning-explain-grid>.notice{min-height:76px}.month-chips .chip{border-radius:10px;background:#f8fafc}.month-chips .chip.active{background:linear-gradient(180deg,#3d64df,#3157d5)}

/* import / inventory / admin / communication */
.import-center-card,.login-card,.status-step-card,.guide-step,.help-tool-card,.permission-group{border-radius:16px!important;box-shadow:var(--shadow-xs)}.import-format-box{background:#f5f8ff!important;border-radius:12px!important}.status-step-grid{gap:12px}.status-step-card{background:linear-gradient(160deg,#fff,#f8fbff)}.guide-step{border-color:#e2e8f1!important}.permission-group{background:#fff}.permission-check{border-radius:10px}.quick-links a{border-radius:13px;background:linear-gradient(160deg,#fff,#f5f8ff);transition:.14s}.quick-links a:hover{transform:translateY(-1px);box-shadow:var(--shadow)}

/* login */
.login-page-v2{background:radial-gradient(circle at 10% 10%,rgba(75,113,235,.16),transparent 32%),#eef3f9}.login-visual{background:linear-gradient(145deg,#09152f 0%,#122b5f 54%,#3157d5 100%)}.login-panel{background:rgba(248,250,253,.92)!important;backdrop-filter:blur(16px)}.login-box{border-radius:24px!important;border:1px solid #e1e8f1!important;box-shadow:0 26px 70px rgba(30,45,70,.14)!important}.login-box input{min-height:46px}

/* beginner vs professional — same functions, cleaner density */
.ui-beginner .panel-head .muted.smalltext,.ui-beginner .input-hint,.ui-beginner .notice{line-height:1.6}.ui-beginner .panel-head .muted.smalltext{max-width:1040px}.ui-professional .content{padding-top:18px}.ui-professional .panel{margin-bottom:13px}.ui-professional .panel-head{padding:13px 15px}.ui-professional .panel-body{padding:14px}.ui-professional .metric-card{min-height:100px;padding:14px}.ui-professional .stage-card{min-height:104px;padding:12px!important}.ui-professional .stage-card small{display:none}.ui-professional .proc-flow-step{min-height:66px!important}.ui-professional .hero-shell,.ui-professional .page-hero{padding:18px 22px}.ui-professional .hero-shell p,.ui-professional .page-hero p{display:none}

/* responsive */
@media(max-width:1450px){.stage-dashboard{grid-template-columns:repeat(4,1fr)!important}.proc-flow{grid-template-columns:repeat(4,1fr)!important}.hero-stat-cluster{min-width:330px}.grid.metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1100px){.command-bar{align-items:stretch;flex-direction:column}.command-actions{justify-content:flex-start}.hero-shell,.page-hero{align-items:flex-start;flex-direction:column}.hero-stat-cluster{width:100%;min-width:0}.kpi-ribbon{grid-template-columns:repeat(2,1fr)}.stage-dashboard{grid-template-columns:repeat(2,1fr)!important}.proc-flow{grid-template-columns:repeat(2,1fr)!important}}
@media(max-width:760px){.content{padding:15px 13px 40px}.topbar{height:68px;padding:0 12px}.topbar h1{font-size:17px}.sidebar-collapse{display:none}.grid.metrics,.kpi-ribbon{grid-template-columns:1fr 1fr}.stage-dashboard,.proc-flow{grid-template-columns:1fr!important}.command-filters{display:grid;grid-template-columns:1fr 1fr;width:100%}.command-filters label{min-width:0}.hero-stat-cluster{grid-template-columns:1fr 1fr 1fr}.page-hero h2,.hero-shell h2{font-size:23px}.planning-action-dock{top:76px}}
@media(max-width:520px){.grid.metrics,.kpi-ribbon,.command-filters,.hero-stat-cluster{grid-template-columns:1fr}.top-actions .ui-mode-btn,.top-actions .btn[href*="help"]{display:none}}
.grid.metrics{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))!important}
.bom-dashboard-strip{display:grid;grid-template-columns:120px repeat(3,minmax(125px,1fr)) minmax(260px,1.4fr);gap:12px;align-items:stretch}.bom-ring{--p:0;width:108px;height:108px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#12b76a calc(var(--p)*1%),#e8edf4 0);position:relative}.bom-ring:after{content:"";position:absolute;inset:9px;border-radius:50%;background:#fff}.bom-ring>div{position:relative;z-index:1;text-align:center}.bom-ring b{display:block;font-size:21px}.bom-ring span{font-size:9px;color:#667085}.bom-dash-stat,.bom-dash-action{padding:14px 15px;border:1px solid var(--line);border-radius:15px;background:linear-gradient(160deg,#fff,#f8fbff);display:flex;flex-direction:column;justify-content:center}.bom-dash-stat span{font-size:10px;font-weight:850;color:#667085}.bom-dash-stat b{font-size:25px;margin:7px 0 4px}.bom-dash-stat small{font-size:10px;color:#98a2b3}.bom-dash-stat.good{background:linear-gradient(160deg,#fff,#f0fbf5);border-color:#d4f1e2}.bom-dash-stat.bad{background:linear-gradient(160deg,#fff,#fff4f2);border-color:#ffd8d3}.bom-dash-stat.warn{background:linear-gradient(160deg,#fff,#fff9ed);border-color:#fbe2b2}.bom-dash-action b{font-size:13px}.bom-dash-action>span{font-size:10px;color:#667085;margin:5px 0 10px;line-height:1.45}@media(max-width:1250px){.bom-dashboard-strip{grid-template-columns:110px repeat(3,1fr)}.bom-dash-action{grid-column:1/-1}}@media(max-width:760px){.bom-dashboard-strip{grid-template-columns:1fr 1fr}.bom-ring{margin:auto}.bom-dash-action{grid-column:1/-1}}

/* ======================================================================
   v1.4.1 — BOM hierarchy accuracy + clean status-card composition
   ====================================================================== */

/* Status cards: number first, label directly underneath. Never place labels in
   the top-right corner where Thai/English text can wrap vertically. */
.stage-dashboard{gap:12px!important}
.stage-card{min-height:132px!important;padding:16px 15px!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important}
.stage-card>span{position:static!important;inset:auto!important;order:2!important;width:auto!important;height:auto!important;min-height:0!important;margin:8px 0 0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:#344054!important;font-size:11px!important;font-weight:850!important;line-height:1.4!important;display:block!important;white-space:normal!important;text-align:left!important}
.stage-card>strong{order:1!important;font-size:30px!important;line-height:1!important;margin:4px 0 0!important;color:#101828!important}
.stage-card>small{order:3!important;margin:6px 0 0!important;color:#7a8699!important;font-size:10px!important;line-height:1.45!important;white-space:normal!important}
.stage-card:after{content:"";position:absolute;right:14px;top:16px;width:8px;height:8px;border-radius:50%;background:#8aa4e8;box-shadow:0 0 0 5px rgba(138,164,232,.12)}
.stage-card.bad:after{background:#f04438;box-shadow:0 0 0 5px rgba(240,68,56,.10)}
.stage-card.warn:after{background:#f79009;box-shadow:0 0 0 5px rgba(247,144,9,.12)}
.stage-card.good:after{background:#12b76a;box-shadow:0 0 0 5px rgba(18,183,106,.11)}
.ui-professional .stage-card small{display:block!important;opacity:.76}

/* Monthly BOM readiness */
.bom-month-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:11px}
.bom-month-card{padding:14px 15px;border:1px solid #e1e8f1;border-radius:16px;background:linear-gradient(160deg,#fff,#f8fbff);box-shadow:0 5px 16px rgba(35,55,90,.045);transition:.15s;min-width:0}
.bom-month-card:hover{transform:translateY(-2px);border-color:#b6c7eb;box-shadow:0 12px 28px rgba(35,55,90,.09)}
.bom-month-card.active{border-color:#6488e6;box-shadow:0 0 0 3px rgba(61,100,223,.10),0 12px 28px rgba(35,55,90,.09)}
.month-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.month-card-top b{font-size:14px;color:#22365a}.month-card-top span{font-size:10px;font-weight:900;color:#667085}
.month-health-bar{height:6px;background:#edf1f6;border-radius:999px;overflow:hidden;margin:10px 0}.month-health-bar i{display:block;height:100%;background:linear-gradient(90deg,#12b76a,#3ccf91);border-radius:999px}
.bom-month-card.attention .month-health-bar i{background:linear-gradient(90deg,#f79009,#fdb022)}
.month-card-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.month-card-stats span{display:flex;flex-direction:column;font-size:9px;color:#7a8699}.month-card-stats strong{font-size:16px;color:#1d2939}.month-card-stats .good strong{color:#067647}.month-card-stats .bad strong{color:#b42318}
.bom-logic-note{display:flex;gap:12px;align-items:flex-start;margin-bottom:18px}.bom-logic-note b{white-space:nowrap;color:#223a62}.bom-logic-note span{line-height:1.6;color:#4f5f75}

/* BOM Master — root + complete linked hierarchy */
.bom-master-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 22px;margin-bottom:18px;border:1px solid #dfe7f2;border-radius:20px;background:linear-gradient(125deg,#0d1d3d,#244da8 58%,#3766d9);color:#fff;box-shadow:0 16px 40px rgba(30,55,115,.18)}
.bom-master-hero h2{margin:3px 0 5px;font-size:24px}.bom-master-hero p{margin:0;max-width:880px;color:#dce6ff;line-height:1.6}
.bom-master-health{min-width:190px;padding:14px 16px;border:1px solid rgba(255,255,255,.2);border-radius:16px;background:rgba(255,255,255,.10);backdrop-filter:blur(9px);display:flex;flex-direction:column;gap:4px}.bom-master-health b{font-size:17px}.bom-master-health span,.bom-master-health small{font-size:10px;color:#dce6ff}.bom-master-health.complete b{color:#8ff0b9}.bom-master-health.incomplete b,.bom-master-health.missing b{color:#ffb0a9}
.soft-rule{border:0;border-top:1px solid var(--line);margin:18px 0}.linked-bom-stack{display:grid;gap:16px;background:#f7f9fc}.linked-bom-section{border:1px solid #dce4ef;border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 7px 22px rgba(35,55,90,.055)}
.linked-bom-section.level-1{margin-left:22px}.linked-bom-section.level-2{margin-left:44px}.linked-bom-section.level-3{margin-left:66px}.linked-bom-section.level-4,.linked-bom-section.level-5{margin-left:84px}
.linked-bom-head{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;background:linear-gradient(180deg,#f8fbff,#f2f6fc);border-bottom:1px solid #dde6f2;border-left:4px solid #3157d5}.linked-bom-section:not(.level-0) .linked-bom-head{border-left-color:#548235;background:linear-gradient(180deg,#fbfefb,#f3faf2)}
.linked-bom-head h3{margin:3px 0 2px;font-size:14px}.linked-bom-head p{margin:0;color:#667085;font-size:10px}.tree-level{font-size:9px;font-weight:900;letter-spacing:.08em;color:#3157d5}.linked-bom-section:not(.level-0) .tree-level{color:#548235}.linked-bom-meta{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.linked-bom-meta>span,.linked-bom-meta>b{font-size:10px;padding:5px 8px;border-radius:8px;background:#fff;border:1px solid #dfe6ef}.compact-bom-table{min-width:1180px}.compact-bom-table td{font-size:11px}.sub-link-row td{background:#f5fbf4!important}.link-chip{display:inline-flex;margin-left:6px;padding:2px 5px;border-radius:6px;background:#e6f4e2;color:#3f6f30;border:1px solid #c9e0c3;font-size:8px;font-weight:900}

@media(max-width:1000px){.bom-master-hero{align-items:flex-start;flex-direction:column}.bom-master-health{width:100%}.linked-bom-section.level-1,.linked-bom-section.level-2,.linked-bom-section.level-3,.linked-bom-section.level-4,.linked-bom-section.level-5{margin-left:0}.bom-logic-note{flex-direction:column}}

/* v1.4.2 — secure onboarding, BOM attention list, mobile-only hamburger */
.mobile-menu{display:none!important}
@media(max-width:760px){.mobile-menu{display:grid!important}.sidebar-collapse{display:none!important}}
.copy-list-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:14px;align-items:start}.copy-list-layout textarea{min-height:140px;background:#f8fbff;border-color:#cbd8ef}.copy-list-actions{display:flex;flex-direction:column;gap:9px}.copy-list-actions small{color:var(--muted);line-height:1.55}.bom-copy-panel{border-color:#c9d8f4;background:linear-gradient(180deg,#fff,#f8fbff)}
.user-admin-grid{align-items:start}.onboarding-info .notice.compact{padding:9px 10px;font-size:12px}.security-steps{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.security-steps>div{display:grid;grid-template-columns:32px 1fr;gap:9px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:12px;background:#fbfcff}.security-steps b{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:#edf3ff;color:var(--brand)}.security-steps span{font-size:12px;line-height:1.45}.credential-actions{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.credential-actions small{color:var(--muted);font-size:10px}.row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.row-actions form{margin:0}
.password-setup-page{padding:28px}.password-setup-shell{width:min(1040px,96vw);display:grid;grid-template-columns:.9fr 1.1fr;background:#fff;border:1px solid var(--line);border-radius:28px;overflow:hidden;box-shadow:0 30px 90px rgba(25,45,80,.16)}.password-welcome{padding:42px;background:linear-gradient(145deg,#10264d 0%,#204eb0 58%,#3267dc 100%);color:#fff}.password-welcome .brand-mark{margin-bottom:36px}.password-welcome .eyebrow{color:#c7d7ff}.password-welcome h1{font-size:31px;line-height:1.2;margin:8px 0 14px}.password-welcome>p{color:#dce7ff;line-height:1.75;font-size:14px}.password-safety-note{margin-top:28px;padding:16px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.09);border-radius:16px;display:flex;flex-direction:column;gap:6px}.password-safety-note span{color:#e7eeff;line-height:1.6;font-size:12px}.password-form-card{padding:38px 40px}.password-form-card h2{font-size:24px;margin:0 0 7px}.password-form-card .form-group{margin:14px 0}.password-rule-card{padding:13px 14px;border:1px solid #d8e2f1;border-radius:13px;background:#f8fbff}.password-rule-card>b{font-size:12px}.password-rule-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:8px}.password-rule-grid span{font-size:11px;color:#475467}.password-generator-bar{margin:13px 0}.password-signout{text-align:center;margin-top:16px}.password-signout a{color:var(--muted);font-weight:700}@media(max-width:780px){.password-setup-shell{grid-template-columns:1fr}.password-welcome{padding:28px}.password-form-card{padding:26px}.security-steps,.password-rule-grid,.copy-list-layout{grid-template-columns:1fr}}

/* v1.4.3 — batch-safe Bulk BOM review */
.bom-batch-review .panel-head{align-items:flex-start;gap:18px}
.batch-review-kpis{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto}
.batch-review-kpis>span{min-width:92px;padding:9px 13px;border-radius:14px;border:1px solid var(--line,#dbe4f0);display:flex;align-items:baseline;gap:7px;background:#fff}
.batch-review-kpis>span b{font-size:1.35rem;line-height:1}.batch-review-kpis .good{border-color:#a7f3d0;background:#ecfdf5;color:#047857}.batch-review-kpis .bad{border-color:#fecaca;background:#fff5f5;color:#b91c1c}
.batch-export-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;padding:12px 14px;border-radius:16px;background:linear-gradient(135deg,#f8fbff,#f5f7ff);border:1px solid #dbe7f6}
.batch-safety-note{font-size:.82rem;color:#6b7280;margin-left:auto;max-width:520px}
.bom-review-list{display:grid;gap:12px}.bom-review-row{display:grid;grid-template-columns:150px minmax(260px,.8fr) minmax(360px,1.4fr);gap:16px;align-items:start;padding:16px;border-radius:18px;border:1px solid #dfe7f1;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.035)}
.bom-review-row.ready{border-color:#b7ead0;background:linear-gradient(135deg,#fbfffd,#f6fffa)}.bom-review-row.blocked{border-color:#ffd1d1;background:linear-gradient(135deg,#fff,#fff8f8)}
.bom-review-status{display:flex;flex-direction:column;gap:3px}.bom-review-status .status-dot{width:11px;height:11px;border-radius:999px;background:#ef4444;box-shadow:0 0 0 5px #fee2e2;margin-bottom:7px}.bom-review-row.ready .status-dot{background:#10b981;box-shadow:0 0 0 5px #d1fae5}.bom-review-status b{font-size:.78rem;letter-spacing:.045em}.bom-review-status small{color:#64748b}
.bom-review-model label{display:block;font-size:.76rem;color:#64748b;margin-bottom:5px}.bom-review-model input{width:100%;min-height:40px;border-radius:10px;border:1px solid #cbd5e1;padding:8px 10px;background:#fff}.bom-review-model small{display:block;color:#64748b;font-size:.75rem;line-height:1.45;margin-top:6px}
.bom-review-detail{display:grid;gap:7px}.bom-ready-text{padding:10px 12px;border-radius:11px;background:#ecfdf5;color:#047857;font-weight:700}.bom-issue-line{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:9px 10px;border:1px solid #fecaca;background:#fff;border-radius:11px}.bom-issue-line>div{display:flex;gap:8px;align-items:flex-start;min-width:0}.bom-issue-line b{color:#991b1b;white-space:nowrap}.bom-issue-line span{color:#7f1d1d;line-height:1.4}.bom-suggestion-note{font-size:.78rem;padding:8px 10px;border-radius:10px;background:#fff7ed;color:#9a3412}
@media(max-width:1050px){.bom-review-row{grid-template-columns:120px 1fr}.bom-review-detail{grid-column:1/-1}.batch-safety-note{margin-left:0}}
@media(max-width:720px){.bom-review-row{grid-template-columns:1fr}.bom-review-detail{grid-column:auto}.batch-review-kpis{margin-left:0}.bom-issue-line{align-items:flex-start;flex-direction:column}.batch-export-actions form,.batch-export-actions .btn{width:100%}}

/* v1.4.4 — inline BOM issue correction inside Bulk BOM Report */
.bom-issue-editor-card{border:1px solid #fecaca;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 5px 18px rgba(127,29,29,.035)}
.bom-issue-editor-card+ .bom-issue-editor-card{margin-top:7px}
.bom-issue-editor-card>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 12px;background:linear-gradient(135deg,#fff7f7,#fff);border-bottom:1px solid transparent}
.bom-issue-editor-card[open]>summary{border-bottom-color:#fee2e2}
.bom-issue-editor-card>summary::-webkit-details-marker{display:none}
.issue-summary-main{display:flex;align-items:flex-start;gap:10px;min-width:0}.issue-summary-main>div{display:grid;gap:2px;min-width:0}.issue-summary-main b{color:#7f1d1d}.issue-summary-main span:not(.issue-code){color:#991b1b;line-height:1.4}
.issue-code{display:inline-flex;flex:0 0 auto;align-items:center;padding:3px 7px;border-radius:999px;background:#fee2e2;color:#991b1b!important;font-size:.68rem;font-weight:800;letter-spacing:.025em}
.issue-expand-label{flex:0 0 auto;color:#b91c1c;font-size:.73rem;font-weight:800;background:#fff;border:1px solid #fecaca;padding:5px 8px;border-radius:9px}
.bom-issue-editor-body{padding:12px;background:#fff}.issue-fix-hint{padding:10px 12px;border-radius:10px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;font-size:.79rem;line-height:1.5;margin-bottom:10px}.linked-target-note{padding:7px 10px;margin-bottom:10px;border-radius:9px;background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;font-size:.78rem}
.issue-context-bar{display:flex;flex-wrap:wrap;gap:8px 18px;padding:8px 10px;border:1px solid #dbeafe;background:#f8fbff;border-radius:10px 10px 0 0;color:#475569;font-size:.76rem}.issue-context-bar b{color:#1e3a5f}
.inline-bom-table-wrap{border:1px solid #dbe3ed;border-top:0;border-radius:0 0 10px 10px;max-height:360px}.inline-bom-edit-table{min-width:1260px}.inline-bom-edit-table th{font-size:.69rem;white-space:nowrap}.inline-bom-edit-table td{padding:6px}.inline-bom-edit-table input{width:100%;min-width:76px;height:34px;padding:5px 7px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;font-size:.76rem}.inline-bom-edit-table input:focus{outline:0;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.12)}.inline-bom-edit-table input[readonly]{background:#f8fafc;color:#64748b}
.inline-bom-edit-table td:nth-child(2) input,.inline-bom-edit-table td:nth-child(9) input{min-width:180px}.inline-bom-edit-table td:nth-child(5) input,.inline-bom-edit-table td:nth-child(6) input,.inline-bom-edit-table td:nth-child(7) input{min-width:110px}.issue-readonly-desc{min-width:200px;max-width:280px}.issue-readonly-desc b{display:block;font-size:.76rem;color:#334155;white-space:normal}.issue-readonly-desc small{display:block;color:#64748b;margin-top:3px;white-space:normal}
.inline-bom-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:10px}.issue-no-inline{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:10px;background:#f8fafc;border:1px dashed #cbd5e1;color:#64748b;font-size:.78rem}
@media(max-width:760px){.bom-issue-editor-card>summary{align-items:flex-start;flex-direction:column}.issue-expand-label{align-self:flex-start}.inline-bom-actions,.issue-no-inline{align-items:stretch;flex-direction:column}.inline-bom-actions .btn,.issue-no-inline .btn{width:100%}}

/* v1.5.0 — Planning workspace */
.planning-commandbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 14px;padding:14px 16px;background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;border-radius:18px;box-shadow:0 14px 30px rgba(15,23,42,.14)}
.planning-commandbar>div:first-child{display:flex;flex-direction:column;gap:3px}.planning-commandbar .muted{color:#dbeafe}.planning-commandbar .btn.ghost{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.22)}.planning-commandbar .btn.secondary{background:#fff;color:#1d4ed8}.planning-commandbar .btn.good{background:#10b981;border-color:#10b981;color:#fff}
.planning-tabs{display:inline-flex;gap:4px;padding:4px;background:#e9eef8;border:1px solid #d9e2f0;border-radius:14px;margin:0 0 14px}.planning-tabs button{border:0;background:transparent;padding:9px 15px;border-radius:10px;font-weight:800;color:#64748b;cursor:pointer}.planning-tabs button.active{background:#fff;color:#1d4ed8;box-shadow:0 3px 12px rgba(15,23,42,.08)}
.live-calc-indicator{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;background:#ecfdf5;color:#047857;font-size:.78rem;font-weight:800}.live-calc-indicator i{width:8px;height:8px;border-radius:50%;background:#10b981;box-shadow:0 0 0 4px rgba(16,185,129,.13)}
.planning-condition-grid{grid-template-columns:repeat(4,minmax(180px,1fr))}.planning-condition-grid .span-2{grid-column:span 2}
.planning-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:12px;margin:14px 0}.planning-kpi{position:relative;overflow:hidden;background:#fff;border:1px solid #dfe7f3;border-radius:16px;padding:14px 15px;box-shadow:0 8px 24px rgba(30,41,59,.05)}.planning-kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#3b82f6}.planning-kpi.danger:before{background:#ef4444}.planning-kpi.warn:before{background:#f59e0b}.planning-kpi span{display:block;color:#64748b;font-size:.78rem;font-weight:800}.planning-kpi strong{display:block;font-size:1.35rem;line-height:1.15;margin-top:6px;color:#0f172a;letter-spacing:-.02em}.planning-kpi small{display:block;margin-top:4px;color:#94a3b8}
.warn-notice{border-color:#fed7aa;background:#fff7ed;color:#9a3412}.matrix-panel-body{padding:0!important}.planning-matrix{width:100%;border-collapse:separate;border-spacing:0;min-width:900px}.planning-matrix th,.planning-matrix td{border-bottom:1px solid #e5eaf2;border-right:1px solid #eef2f7;padding:10px 11px;vertical-align:middle}.planning-matrix th{position:sticky;top:0;z-index:3;background:#eef4ff;color:#334155;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.planning-matrix .matrix-sticky{position:sticky;left:0;z-index:4;background:#fff;min-width:270px}.planning-matrix th.matrix-sticky{z-index:5;background:#eef4ff}.planning-matrix tr:hover>td{background:#f8fbff}.planning-matrix tr:hover>.matrix-sticky{background:#f8fbff}.matrix-group-row .matrix-sticky{padding:0}.matrix-expand{display:flex;width:100%;align-items:center;gap:9px;border:0;background:transparent;padding:10px 12px;text-align:left;cursor:pointer;color:#0f172a}.matrix-expand>span{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:8px;background:#e8efff;color:#2563eb;font-size:1.25rem;font-weight:900;transition:.15s}.matrix-expand.open>span{background:#dbeafe}.matrix-expand b{display:block;flex:1}.matrix-expand small{display:block;color:#64748b;font-weight:600}.matrix-cell{text-align:right;min-width:118px;background:#fff}.matrix-cell b{display:block;font-size:.9rem}.matrix-cell small{display:block;color:#94a3b8;font-size:.68rem;margin-top:2px}.matrix-zero{color:#cbd5e1}.matrix-total{text-align:right;font-weight:900;background:#f8fafc;min-width:125px}.matrix-detail-row>td{padding:0!important;background:#f8fbff!important}.matrix-detail-card{padding:12px 16px 16px 42px;background:linear-gradient(180deg,#f8fbff,#fff)}.planning-matrix.inner{min-width:980px;border:1px solid #dfe7f3;border-radius:12px;overflow:hidden}.planning-matrix.inner th{position:static;background:#f1f5f9}.planning-matrix.inner td:first-child{min-width:260px}.planning-matrix td small{display:block;color:#64748b;margin-top:3px}.alt-chip{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;background:#fff7ed;color:#c2410c;border:1px solid #fed7aa;font-size:.7rem;font-weight:900}.quality-list{display:grid;gap:7px}.quality-list>div{padding:8px 10px;border-radius:10px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;font-size:.78rem}
.planning-recalculating{opacity:.72;pointer-events:none}.planning-recalculating:after{content:"Recalculating…";position:fixed;right:24px;bottom:24px;z-index:9999;background:#0f172a;color:#fff;padding:9px 13px;border-radius:10px;font-weight:800;box-shadow:0 8px 25px rgba(15,23,42,.25)}
.purchase-material-choice{display:flex;align-items:center;gap:6px}.purchase-material-choice .main-code{font-weight:800}.purchase-material-choice .selected-alt{display:block;color:#c2410c;font-size:.72rem;margin-top:3px}
@media(max-width:1200px){.planning-condition-grid{grid-template-columns:repeat(3,minmax(170px,1fr))}.planning-kpi-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.planning-commandbar{align-items:flex-start;flex-direction:column}.planning-commandbar .toolbar{width:100%}.planning-condition-grid{grid-template-columns:1fr 1fr}.planning-condition-grid .span-2{grid-column:span 2}.planning-kpi-grid{grid-template-columns:1fr 1fr}.matrix-detail-card{padding-left:10px}.planning-kpi strong{font-size:1.12rem}}

/* v1.6.0 — Inventory integrity + high-performance Planning */
.inventory-health-grid{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:12px;margin:0 0 14px}.inventory-health-card{background:#fff;border:1px solid #dfe7f3;border-radius:15px;padding:13px 15px;box-shadow:0 8px 22px rgba(30,41,59,.045)}.inventory-health-card span{display:block;color:#64748b;font-size:.76rem;font-weight:800}.inventory-health-card strong{display:block;margin-top:5px;font-size:1.25rem;color:#0f172a}.inventory-health-card small{display:block;color:#94a3b8;margin-top:3px}.inventory-health-card.warn{border-color:#fdba74;background:#fffaf5}.inline-form{display:inline-flex;margin-left:auto}.planning-section-nav{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:8px;margin-bottom:12px}.planning-section-nav a{display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid #dce4f0;background:#fff;border-radius:12px;font-weight:800;color:#64748b;box-shadow:0 4px 12px rgba(30,41,59,.035)}.planning-section-nav a b{display:grid;place-items:center;width:25px;height:25px;border-radius:8px;background:#eef2f7;color:#64748b}.planning-section-nav a.active{border-color:#9db9ff;background:#eff5ff;color:#1d4ed8}.planning-section-nav a.active b{background:#2563eb;color:#fff}.planning-condition-grid.compact{grid-template-columns:repeat(6,minmax(145px,1fr));gap:10px}.planning-condition-grid.compact .span-2{grid-column:span 2}.supply-kpis .planning-kpi.accent:before{background:#10b981}.matrix-legend{display:flex;gap:12px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid #e5eaf2;background:#f8fafc}.matrix-legend span{display:flex;align-items:center;gap:5px;color:#64748b;font-size:.72rem;font-weight:800}.matrix-legend i,.supply-cell i{font-style:normal;display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:18px;padding:0 5px;border-radius:5px;background:#eaf2ff;color:#1d4ed8;font-size:.61rem;font-weight:900}.supply-cell{display:grid;grid-template-columns:1fr 1fr;gap:4px 7px;min-width:155px}.supply-cell span,.supply-cell strong{display:flex;align-items:center;justify-content:space-between;gap:5px;font-variant-numeric:tabular-nums;font-size:.72rem;color:#475569}.supply-cell strong{color:#047857}.supply-cell strong i{background:#dcfce7;color:#047857}.supply-matrix td{padding:8px 9px}.supplier-matrix-link{display:grid;gap:3px;min-width:250px}.supplier-matrix-link b{font-size:.82rem;color:#0f172a}.supplier-matrix-link small{color:#64748b;font-size:.68rem}.supplier-matrix-link>span{color:#2563eb;font-size:.68rem;font-weight:800}.drill-banner{display:flex;align-items:center;gap:10px;padding:10px 12px;margin-bottom:12px;border:1px solid #bfdbfe;background:#eff6ff;border-radius:11px}.drill-banner span{color:#475569}.drill-banner .btn{margin-left:auto}.planning-detail-table td small{display:block;color:#64748b;margin-top:2px}.pagination{display:flex;justify-content:center;align-items:center;gap:5px;padding:14px 0 2px}.pagination a{display:grid;place-items:center;min-width:32px;height:32px;padding:0 8px;border:1px solid #dbe3ef;border-radius:8px;background:#fff;color:#475569;font-weight:800}.pagination a.active{background:#2563eb;border-color:#2563eb;color:#fff}.planning-check-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}.planning-check-list>div{display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;column-gap:8px;padding:10px;border:1px solid #e2e8f0;border-radius:11px}.planning-check-list>div>span{grid-row:1/3;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#ecfdf5;color:#047857;font-weight:900}.planning-check-list b{font-size:.78rem}.planning-check-list small{color:#64748b}.lookup-field{position:relative}.lookup-popover{position:absolute;top:100%;left:0;right:0;z-index:30;background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 14px 32px rgba(15,23,42,.14);max-height:260px;overflow:auto;margin-top:4px}.lookup-popover button{display:grid;width:100%;gap:2px;padding:8px 10px;border:0;border-bottom:1px solid #eef2f7;background:#fff;text-align:left;cursor:pointer}.lookup-popover button:hover{background:#f8fbff}.lookup-popover b{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.76rem}.lookup-popover span{color:#64748b;font-size:.69rem}.planning-bottom-panels{margin-top:14px}
@media(max-width:1400px){.planning-condition-grid.compact{grid-template-columns:repeat(4,minmax(145px,1fr))}.inventory-health-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.planning-section-nav{grid-template-columns:1fr 1fr}.planning-condition-grid.compact{grid-template-columns:1fr 1fr}.planning-condition-grid.compact .span-2{grid-column:span 2}}
@media(max-width:620px){.inventory-health-grid,.planning-section-nav,.planning-condition-grid.compact,.planning-check-list{grid-template-columns:1fr}.planning-condition-grid.compact .span-2{grid-column:auto}.drill-banner{align-items:flex-start;flex-direction:column}.drill-banner .btn{margin-left:0}}
