:root{--purple:#6534a7;--deep:#32194f;--ink:#292536;--muted:#7b7487;--line:#ece8f1;--bg:#f7f6fa;--lavender:#f1ebf9;color:var(--ink);background:var(--bg);font-family:'Segoe UI',Arial,sans-serif}body{font-size:14px}button,input,select{font:inherit}button{background:var(--purple);font-weight:600;transition:background .15s}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #ba9be0;outline-offset:3px}input,select{min-height:42px;padding:10px 12px;border:1px solid #dcd5e5;border-radius:8px;background:white;color:var(--ink);min-width:0}input:focus,select:focus{outline:2px solid #c0a4e1;outline-offset:1px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.7px;color:#88769c;margin:0 0 10px}.brand{display:flex;align-items:center;gap:12px;letter-spacing:2px;font-size:20px;font-weight:750}.brand small{display:block;font-size:8px;letter-spacing:2px;margin-top:4px;color:inherit;opacity:.65}.brand-mark{display:grid;place-items:center;background:#fff;color:var(--purple);border-radius:12px;width:44px;height:44px;font-size:29px;font-style:italic;letter-spacing:-3px;padding-right:5px}.login{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.login-story{background:radial-gradient(ellipse at bottom right,#8b59bd 0,transparent 60%),var(--deep);min-height:100vh;padding:55px 64px;color:white;display:flex;flex-direction:column;justify-content:space-between;gap:65px}.login-story h1{font-size:clamp(38px,4.6vw,65px);line-height:1.12;letter-spacing:-2px;color:white;margin:20px 0}.login-story p:not(.eyebrow){font-size:18px;line-height:1.6;max-width:380px;color:#ded0ed}.login-story .eyebrow{color:#d0b6ea}.login-story>small{color:#d0b6ea}.story-tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:25px}.story-tags span{padding:9px 13px;border:1px solid #ffffff38;border-radius:8px;font-size:12px}.login-entry{display:grid;place-items:center;padding:30px}.login form{width:min(420px,100%);padding:0;background:none;box-shadow:none}.login h2{font-size:29px;line-height:1.3;letter-spacing:-.6px}.login label{font-weight:600;margin:24px 0 8px}.login input{margin-top:0}.login button{margin-top:28px;min-height:48px}.login .muted{line-height:1.6}#app{display:flex;min-height:100vh}#sidebar{position:sticky;top:0;height:100vh;width:246px;padding:28px 18px 18px;background:var(--deep);color:white;overflow-y:auto;gap:18px}#sidebar .brand{font-size:18px}#sidebar .brand small{margin:4px 0 0}#sidebar .brand-mark{width:38px;height:38px;font-size:26px}#sidebar input{background:#ffffff0d;border:1px solid #ffffff22;color:white;width:100%;font-size:12px}#sidebar input::placeholder{color:#c2afcf}.workspace-tag{color:#c5afd8;font-size:9px;letter-spacing:1.7px;padding:14px 0;border-bottom:1px solid #ffffff1c}#nav{display:block;flex:1}.nav-group{margin-bottom:15px}.nav-group summary{font-size:10px;letter-spacing:1.4px;text-transform:uppercase;color:#bfa8d4;cursor:pointer;padding:5px 10px;margin-bottom:6px}.nav-group button{display:block;width:100%;border-radius:7px;font-weight:400;font-size:12px;padding:11px 13px;color:#e9dcf5;background:transparent;text-align:left;margin:2px 0}.nav-group button:hover{background:#ffffff0f}.nav-group button.active{background:#7951a3;color:#fff;font-weight:600;box-shadow:inset 3px 0 #d4b3fa}#logout{margin-top:auto;border-color:#ffffff29;color:#eadff3;font-size:12px;background:transparent}main{padding:0 34px 18px;max-width:100%;overflow:hidden;flex:1;min-width:0}.workspace-header{min-height:129px;margin:0 0 24px;padding:25px 0 20px;border-bottom:1px solid var(--line);gap:20px}.heading-block{display:flex;align-items:center;gap:15px}.workspace-header h1{font-size:27px;font-weight:650;letter-spacing:-.7px;margin:0}.workspace-header #subtitle{margin:6px 0 0;font-size:12px;color:var(--muted)}.workspace-header .eyebrow{font-size:9px;margin:0 0 8px}.user-pill{display:flex;align-items:center;gap:10px;font-size:11px;color:#6c627b;background:white;padding:8px 13px;border:1px solid var(--line);border-radius:30px;max-width:290px}.avatar{display:grid;place-items:center;flex-shrink:0;width:29px;height:29px;border-radius:50%;background:var(--lavender);color:var(--purple);font-weight:700}.menu-toggle{display:none}.dashboard-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:22px}.section-heading{font-size:16px;font-weight:650}.filter-bar{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.filter-bar label{display:grid;gap:5px;font-size:10px;color:var(--muted)}.filter-bar input{font-size:11px;min-height:35px;padding:7px 10px}.filter-bar button{min-height:35px;font-size:11px;padding:9px 13px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric{border:1px solid var(--line);border-radius:13px;background:white;padding:23px 19px;display:grid;gap:13px;min-width:0}.metric-label{color:#756c83;font-size:11px}.metric strong{font-size:clamp(19px,1.7vw,27px);font-weight:650;letter-spacing:-.7px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.metric small{font-size:10px;color:#91879e}.metric.accent{background:var(--purple);border-color:var(--purple);color:white}.metric.accent .metric-label,.metric.accent small{color:#e3d4f6}.dashboard-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-bottom:22px}.panel{padding:23px;border:1px solid var(--line);border-radius:13px;box-shadow:0 3px 14px #32194f03;margin-bottom:20px;overflow:auto}.dashboard-grid .panel{margin:0}.panel h2{font-size:17px;font-weight:650;margin:0 0 10px;letter-spacing:-.3px}.panel p.muted{font-size:11px;line-height:1.6;margin-top:0}.shortcut-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:20px}.shortcut{background:#f8f5fc;color:#634b7c;border:1px solid var(--line);text-align:left;font-size:11px;font-weight:600;padding:13px}.summary-line{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);font-size:12px}.summary-line strong{font-variant-numeric:tabular-nums}.summary-line:last-of-type{margin-bottom:10px}.panel>small.muted{font-size:10px}.report-links{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:7px 0 20px}.report-links>span{font-size:11px;color:var(--muted);margin-right:10px}.report-links button{font-size:11px;padding:9px 13px;background:white;border:1px solid var(--line);color:#68517f}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px}.toolbar input{max-width:310px;font-size:12px}.toolbar select{font-size:12px}.toolbar button{font-size:12px;margin-left:auto}.table-scroll{overflow:auto}table{font-size:12px}th{font-size:10px;font-weight:600;color:#82758e;white-space:nowrap;background:#faf8fc}td{color:#51465f;max-width:240px;font-variant-numeric:tabular-nums}th,td{padding:13px 12px;border-color:var(--line)}.pager{display:flex;gap:8px;align-items:center;margin-top:16px;font-size:11px;color:var(--muted)}.pager span{margin-right:auto}.pager button{font-size:11px;padding:8px 12px}.secondary-btn{background:var(--lavender);color:#634b7c}.status-badge{display:inline-block;background:#f2edf8;color:#7e5e9c;padding:4px 8px;border-radius:5px;font-size:10px}.status-badge.good{background:#eaf4ee;color:#377957}.empty-state{padding:40px 10px;text-align:center;color:#93859f;font-size:13px}.report-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:22px 0}.report-summary>div{background:white;border:1px solid var(--line);padding:18px;border-radius:10px;min-width:0}.report-summary small{display:block;color:var(--muted);font-size:11px;margin-bottom:10px}.report-summary strong{display:block;overflow-wrap:anywhere;font-size:18px}.workspace-footer{display:flex;justify-content:space-between;color:#a499ae;font-size:10px;margin-top:24px;padding:15px 0;border-top:1px solid var(--line)}.danger-btn{color:#ac394d;background:#faedf0;font-size:11px;padding:8px 12px}.user-dialog{width:min(650px,92vw);padding:30px;border:0;border-radius:16px;color:var(--ink);box-shadow:0 24px 70px #0003}.user-dialog::backdrop{background:#24143880}.user-dialog h2{margin-top:0}.user-dialog input{width:100%}.error{color:#ab344d;line-height:1.6}.product-table small,.muted{color:var(--muted)}
@media(min-width:1700px){main{padding-left:50px;padding-right:50px}.metric strong{font-size:30px}}
@media(max-width:1100px){#sidebar{width:215px;padding:24px 13px}main{padding:0 22px 15px}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-top{align-items:start}.user-pill{max-width:210px}.dashboard-grid{grid-template-columns:1fr}.login-story{padding:40px}}
@media(max-width:760px){.login{grid-template-columns:1fr}.login-story{display:none}.login-entry{min-height:100vh;padding:28px}#sidebar{display:none;position:fixed;width:255px;z-index:50;top:90px;height:calc(100vh - 90px);box-shadow:10px 0 30px #0002}#app.menu-open #sidebar{display:flex}.menu-toggle{display:block}main{padding:0 16px 14px}.workspace-header{min-height:100px;padding-top:20px;align-items:center}.workspace-header h1{font-size:23px}.user-pill{padding:5px;background:transparent;border:0;max-width:40px}.user-pill #identity{display:none}.dashboard-top{display:block}.dashboard-top .section-heading{margin-bottom:16px}.metric-grid{gap:10px}.metric{padding:18px 14px}.metric strong{font-size:20px}.metric small{font-size:9px}.panel{padding:18px}.report-links button{font-size:10px}.workspace-footer span{display:none}.filter-bar{gap:8px}nav{display:block}.toolbar input{min-width:160px;flex:1}.toolbar button{margin-left:0}.product-form{grid-template-columns:1fr}}
.invoice-dialog{width:min(1100px,94vw);max-width:1100px;max-height:90vh;overflow:auto}.invoice-line{display:grid;grid-template-columns:2fr 1fr 1.5fr 1fr auto;align-items:end;gap:12px;padding:16px 0;border-bottom:1px solid #e9e2f2}.invoice-lines{grid-column:1/-1}.invoice-dialog .product-form{display:flex;flex-direction:column;gap:16px}.invoice-dialog .report-summary{display:flex;flex-wrap:wrap}.invoice-dialog .metric{flex:1;min-width:140px}.invoice-dialog label{display:flex;flex-direction:column;gap:6px}.invoice-dialog .summary-line{gap:16px;flex-wrap:wrap}@media(max-width:700px){.invoice-line{grid-template-columns:1fr 1fr}.invoice-line label:first-child{grid-column:1/-1}}

/* Step 8: keyboard-accessible module search and consistent focus treatment */
#moduleSearch:focus-visible, #nav button:focus-visible, .shortcut:focus-visible, .workspace-header button:focus-visible {outline:3px solid #8e83ff;outline-offset:2px;}
.shortcut-grid {align-items:stretch;}
.shortcut-grid .shortcut {min-height:46px;}

/* Step 9: sales workspace */
.sales-workspace{display:grid;gap:20px}.sales-overview-heading{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:18px}.sales-overview-title h2{margin:4px 0}.sales-overview-actions{display:flex;flex-wrap:wrap;gap:8px}.sales-flow-line{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line,#e6e9ef)}.sales-flow-line>strong{opacity:.65}.sales-flow-line>div{display:flex;flex-direction:column;gap:3px;flex:1}.sales-flow-line small{opacity:.7}.sales-flow-line button{white-space:nowrap}@media(max-width:680px){.sales-overview-actions{width:100%}.sales-overview-actions button{flex:1}}


/* Step 9B: global dashboard fallback */
#content .metric-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:16px!important;margin:0 0 22px!important}
#content .metric{display:flex!important;flex-direction:column!important;gap:10px!important;padding:22px!important;border:1px solid #e5e3ed!important;border-radius:14px!important;background:#fff!important;min-width:0!important;box-shadow:0 3px 14px #1821380a!important}
#content .metric.accent{background:#5946d8!important;color:white!important}
#content .metric .metric-label{display:block!important;font-size:13px!important;color:#756c83!important}
#content .metric.accent .metric-label,#content .metric.accent small{color:#ede9ff!important}
#content .metric strong{display:block!important;font-size:clamp(21px,2vw,30px)!important;line-height:1.2!important;overflow-wrap:anywhere!important}
#content .metric small{display:block!important;font-size:12px!important;line-height:1.45!important;color:#7e7a89!important}
#content .dashboard-grid{display:grid!important;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)!important;gap:20px!important}
#content .shortcut-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(165px,1fr))!important;gap:12px!important}
#content .shortcut-grid button{width:100%!important;min-width:0!important;margin:0!important;white-space:normal!important;text-align:left!important}
#content .dashboard-top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
#content .filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#content .filter-bar input{width:auto;max-width:180px}
#content .sales-workspace{display:grid;gap:20px}
#content .sales-overview-actions{display:flex;flex-wrap:wrap;gap:10px}
#content .sales-overview-actions button{margin:0}
@media(max-width:1100px){#content .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}#content .dashboard-grid{grid-template-columns:1fr!important}}
@media(max-width:600px){#content .metric-grid{grid-template-columns:1fr!important}#content .filter-bar input{max-width:145px}}

/* Step 10A: Sales orders workspace */
.so-heading{margin:0 0 16px}.so-heading h2{margin:0 0 4px;font-size:1.35rem}.so-heading p{margin:0}.so-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:16px 0 22px}.so-summary-card{display:flex;flex-direction:column;gap:6px;padding:18px;border:1px solid #e1e5f1;border-radius:14px;background:#fff;min-width:0}.so-summary-label{font-size:.88rem;color:#65718c}.so-summary-value{font-size:1.75rem;color:#172343}.so-summary-description{font-size:.78rem;color:#65718c}.so-status{display:inline-flex;align-items:center;border-radius:999px;padding:4px 10px;font-size:.82rem;font-weight:600;background:#eef1f8;color:#33415f}.so-status[data-status="draft"]{background:#f3f0ff;color:#6243b8}.so-status[data-status="confirmed"],.so-status[data-status="completed"]{background:#e7f7ed;color:#17663b}.so-status[data-status="cancelled"],.so-status[data-status="canceled"]{background:#fdecec;color:#a32c32}@media(max-width:750px){.so-summary{grid-template-columns:1fr}.so-summary-card{padding:14px}}
