@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600;700&family=IBM+Plex+Sans+Arabic:wght@400;500;600;700&display=swap');
:root{--ink:#17201d;--ink2:#27312e;--accent:#e95c35;--accentsoft:#fff0e8;--bg:#f6f5f0;--paper:#fffefa;--line:#e5e8e2;--muted:#7d8780;--green:#2f8b65;--yellow:#b77918;--red:#c94d48;--blue:#4076a4;--shadow:0 15px 46px rgba(24,32,28,.07);--radius:17px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans','IBM Plex Sans Arabic',Arial,sans-serif;font-size:14px}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #efb59f;outline-offset:2px}button:disabled{opacity:.42;cursor:not-allowed}body[dir=rtl]{font-family:'IBM Plex Sans Arabic','DM Sans',sans-serif}.mono{font-family:'IBM Plex Mono',monospace;letter-spacing:-.05em}.app{min-height:100vh;display:grid;grid-template-columns:258px minmax(0,1fr)}.sidebar{background:#1a2521;color:#e9efeb;display:flex;flex-direction:column;min-height:100vh;position:sticky;top:0;height:100vh;padding:25px 18px;z-index:30}.brand{display:flex;align-items:center;gap:12px;padding:3px 7px 21px;border-bottom:1px solid #ffffff21}.logo{width:48px;height:48px;background:var(--accent);display:grid;place-items:center;color:#fff;font-size:23px;letter-spacing:-3px;font-weight:800;border-radius:13px;transform:skew(-5deg)}.logo span{transform:skew(5deg);margin-right:3px}.brand-title{font-weight:800;letter-spacing:-.05em;font-size:18px}.brand-sub{color:#a2afa7;font-size:10px;letter-spacing:.055em;text-transform:uppercase;margin-top:2px}.space-label{color:#7e9689;text-transform:uppercase;letter-spacing:.16em;font-size:10px;font-weight:800;padding:26px 12px 12px}.nav{display:grid;gap:5px}.nav button{border:0;color:#b6c5ba;background:transparent;display:flex;align-items:center;gap:12px;text-align:start;border-radius:11px;padding:12px 14px;width:100%;font-weight:650}.nav button svg{width:17px;height:17px;stroke-width:1.9}.nav button:hover{color:white;background:#ffffff10}.nav button.active{background:#f0f2e9;color:var(--ink)}.nav button.active svg{stroke:var(--accent)}.nav .tinyCount{margin-inline-start:auto;font-size:10px;padding:2px 6px;border:1px solid currentColor;border-radius:7px;opacity:.65}.side-bottom{margin-top:auto;display:grid;gap:12px;padding:0 7px}.mini-support{padding:15px;border:1px solid #ffffff27;border-radius:13px;background:#ffffff08}.mini-support b{font-size:13px}.mini-support p{color:#aebdb2;font-size:11px;line-height:1.5;margin:7px 0 0}.side-meta{font-size:10px;line-height:1.6;color:#85958c}.ci{font-weight:800;letter-spacing:-.06em}.ci span{color:var(--accent)}.workspace{min-width:0}.topbar{height:86px;display:flex;justify-content:space-between;align-items:center;padding:0 40px;border-bottom:1px solid var(--line);background:rgba(255,254,250,.76);position:sticky;top:0;z-index:20;backdrop-filter:blur(20px)}.breadcrumb{display:flex;align-items:center;gap:8px;font-size:12px;color:#859189}.breadcrumb strong{color:var(--ink);font-weight:750}.topactions{display:flex;align-items:center;gap:10px}.env-pill,.status-pill{border:1px solid var(--line);background:white;border-radius:99px;padding:8px 12px;font-size:11px;font-weight:750}.env-pill .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);margin-inline-end:5px}.status-pill{color:var(--accent);border-color:#f4ddcf;background:#fff6ef}.btn{background:var(--ink);color:white;border:1px solid var(--ink);border-radius:10px;padding:11px 15px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:760;min-height:41px;white-space:nowrap}.btn:hover{background:#34433a}.btn-accent{background:var(--accent);border-color:var(--accent)}.btn-accent:hover{background:#ce4b29}.btn-light{background:#fff;color:var(--ink);border-color:var(--line)}.btn-light:hover{background:#f4f3ee}.btn-ghost{border-color:transparent;background:transparent;color:var(--ink)}.btn-ghost:hover{background:#ebeae4}.btn-sm{font-size:12px;padding:8px 11px;min-height:32px}.btn svg{width:16px;height:16px}.iconbtn{border:1px solid var(--line);background:white;width:36px;height:36px;border-radius:9px;display:grid;place-items:center;color:var(--ink)}.iconbtn svg{width:16px;height:16px}.main{padding:35px 40px 60px;max-width:1590px;margin:auto}.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:28px}.eyebrow{text-transform:uppercase;font-weight:800;letter-spacing:.16em;color:var(--accent);font-size:10px;margin-bottom:12px}.pagehead h1{font-size:clamp(27px,3.2vw,43px);font-weight:800;letter-spacing:-.075em;line-height:1.06;margin:0 0 10px}.pagehead p{color:var(--muted);font-size:13px;line-height:1.6;margin:0}.head-cta{display:flex;align-items:center;gap:9px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 2px 5px rgba(36,39,30,.018)}.card-pad{padding:22px}.row{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.start{align-items:flex-start}.stack{display:grid;gap:15px}.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:10px}.strong{font-weight:750}.section-title{font-size:16px;letter-spacing:-.04em;font-weight:800;margin:0}.section-caption{font-size:12px;color:var(--muted);margin:5px 0 0}.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:17px}.hero{background:var(--ink);color:white;border-radius:22px;padding:30px 33px;display:grid;grid-template-columns:1.3fr .8fr;gap:25px;min-height:245px;overflow:hidden;position:relative;margin-bottom:20px}.hero:after{content:'';position:absolute;width:320px;height:320px;right:-120px;bottom:-220px;border:60px solid #ffffff0d;border-radius:50%}.hero h2{font-size:clamp(24px,3vw,40px);letter-spacing:-.07em;line-height:1.12;margin:6px 0 13px;max-width:480px}.hero p{font-size:13px;line-height:1.7;color:#b8c7bd;max-width:450px}.hero .hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:21px}.hero .hero-actions button{padding:11px 16px}.hero-visual{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;align-content:center;transform:rotate(-6deg);min-width:0}.hero-step{border:1px solid #ffffff29;padding:15px 10px;background:#ffffff12;backdrop-filter:blur(10px);border-radius:13px}.hero-step strong{font-size:28px;letter-spacing:-.09em;display:block}.hero-step small{font-size:10px;display:block;color:#c1cfc4;margin-top:7px}.hero-step:nth-child(2){background:var(--accent);border-color:var(--accent);transform:translateY(-17px)}.hero-step:nth-child(3){transform:translateY(14px)}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:21px}.metric{padding:21px 22px}.metric-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.metric-top span{font-size:12px;color:var(--muted);font-weight:650}.metric-icon{width:31px;height:31px;border:1px solid var(--line);display:grid;place-items:center;border-radius:9px;color:var(--accent)}.metric-icon svg{width:15px;height:15px}.metric-value{font-size:35px;letter-spacing:-.075em;line-height:1;margin:16px 0 8px;font-weight:800}.metric-foot{font-size:10px;color:var(--muted)}.dash-grid{display:grid;grid-template-columns:1.32fr .8fr;gap:19px;align-items:start}.alert-list{display:grid;gap:10px}.alert{border:1px solid var(--line);border-radius:12px;padding:13px 14px;display:flex;gap:10px;align-items:flex-start;background:#fff}.alert.alert-high{border-color:#f5d5d0;background:#fffaf8}.alert .alert-icon{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:var(--accentsoft);color:var(--accent);flex-shrink:0}.alert .alert-icon svg{width:16px}.alert strong{font-size:12px}.alert p{font-size:11px;color:var(--muted);line-height:1.5;margin:4px 0 0}.alert .link{margin-inline-start:auto;align-self:center}.link{border:0;background:none;color:var(--accent);font-size:11px;font-weight:800;cursor:pointer}.progressline{height:8px;border-radius:20px;background:#ebede8;overflow:hidden}.progressline>div{height:100%;border-radius:20px;background:var(--accent)}.stage-list{display:grid;gap:16px}.stage-label{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-bottom:7px}.stage-label b{font-family:'IBM Plex Mono',monospace;font-size:11px}.jobtable{width:100%;border-collapse:collapse;min-width:770px}.table-wrap{overflow:auto}.jobtable th{text-align:start;text-transform:uppercase;color:var(--muted);font-size:10px;letter-spacing:.12em;background:#f7f7f3;font-weight:800;border-bottom:1px solid var(--line);padding:13px 15px}.jobtable td{border-bottom:1px solid var(--line);padding:13px 15px;font-size:12px;vertical-align:middle}.jobtable tr:last-child td{border-bottom:0}.jobtable tr:hover td{background:#fcf5f0}.jobcode{font-size:11px;color:var(--accent);font-weight:750;letter-spacing:.01em;cursor:pointer}.client{font-weight:760}.spec{font-size:11px;color:var(--muted);margin-top:4px}.chip{display:inline-flex;align-items:center;gap:5px;border-radius:8px;padding:6px 9px;font-size:10px;font-weight:800;white-space:nowrap;background:#f0f2ee;color:#61746b}.chip.orange{background:#fff0e6;color:#b15332}.chip.red{background:#feefed;color:#bb4641}.chip.green{background:#eaf5ed;color:#237c56}.chip.blue{background:#eaf3f8;color:#39749a}.chip.yellow{background:#fff5de;color:#a06d13}.chip.gray{background:#f1f2f0;color:#64736a}.chip .dot{height:6px;width:6px;background:currentColor;border-radius:50%}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:13px;flex-wrap:wrap;margin-bottom:18px}.toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.search{display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:0 11px;min-width:225px;height:40px}.search input{border:0;background:transparent;outline:0;min-width:80px;width:100%;font-size:12px}.search svg{width:16px;height:16px;color:var(--muted)}.field,select.field,textarea.field{min-height:40px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:white;color:var(--ink);width:100%;font-size:12px}.field:focus{border-color:var(--accent);outline:2px solid #fae5de}.field-label{font-size:11px;font-weight:750;margin-bottom:7px;display:block}.field-group{display:grid;gap:6px}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.formgrid .span2{grid-column:span 2}textarea.field{min-height:80px;resize:vertical}.segmented{display:inline-flex;background:#eaede8;border-radius:11px;padding:4px;gap:3px}.segmented button{border:0;background:transparent;padding:7px 12px;font-size:11px;border-radius:8px;color:#667168;font-weight:750}.segmented button.active{background:white;color:var(--ink);box-shadow:0 1px 5px #25362c14}.board{display:flex;gap:12px;overflow-x:auto;padding-bottom:16px;margin:0 -4px}.lane{flex:0 0 232px;background:#eceee9;border:1px solid #e4e9e2;border-radius:15px;padding:12px;min-height:395px}.lane-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px;padding:4px 4px 10px}.lane-head strong{font-size:12px}.lane-head span{font-size:10px;border-radius:7px;background:#dce2d9;padding:4px 6px;font-weight:800}.jobcard{background:white;border-radius:12px;border:1px solid #e0e4dc;padding:14px;margin-bottom:9px;box-shadow:0 2px 3px #00000005;cursor:pointer}.jobcard:hover{border-color:#ed997b;transform:translateY(-1px)}.jobcard .title{font-weight:800;font-size:12px;line-height:1.35;margin:9px 0 5px}.jobcard .desc{font-size:11px;color:#66726a;line-height:1.4}.jobcard hr{border:0;border-top:1px dashed var(--line);margin:12px 0}.jobcard .duedate{font-size:10px;color:var(--muted)}.jobcard .stamp{height:23px;width:23px;border-radius:100%;display:grid;place-items:center;background:#e8ede8;color:#496255;font-weight:800;font-size:9px}.machinegrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.machine{padding:21px}.machine .machine-icon{background:#f2f4ef;color:var(--ink);width:43px;height:43px;border-radius:11px;display:grid;place-items:center}.machine-icon svg{width:23px;height:23px}.machine h3{font-size:16px;letter-spacing:-.03em;margin:18px 0 5px}.machine p{font-size:11px;color:var(--muted);line-height:1.5;margin:0 0 18px}.machine-jobs{padding:12px;border:1px dashed var(--line);border-radius:9px;margin-top:12px;font-size:11px}.machine-jobs strong{display:block;margin-bottom:5px}.machine .machine-status{width:100%;margin-top:13px}.materials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.material{padding:20px}.material h3{font-size:15px;letter-spacing:-.03em;margin:0}.material .matqty{font-weight:800;font-size:28px;letter-spacing:-.075em;margin:12px 0 5px}.material .matqty small{font-size:13px;font-weight:600;letter-spacing:0;color:var(--muted)}.mat-foot{display:flex;justify-content:space-between;gap:6px;font-size:11px;color:var(--muted);margin-top:10px}.quote-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:18px}.quote-rows{display:grid;gap:0}.quote-row{padding:11px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:9px;font-size:12px}.quote-row:last-child{border:0}.quote-total{background:var(--ink);border-radius:14px;padding:23px;color:white;margin-top:15px}.quote-total .number{font-size:42px;font-weight:800;letter-spacing:-.08em;margin:7px 0}.subtle-note{background:#fff4e8;border:1px solid #f4e2cf;padding:12px;border-radius:10px;font-size:11px;color:#9e5a24;line-height:1.55}.timeline{display:grid;gap:0}.timeline-item{display:flex;align-items:flex-start;gap:10px;padding:0 0 17px;position:relative}.timeline-item:not(:last-child):before{content:'';position:absolute;top:24px;bottom:0;left:11px;width:1px;background:var(--line)}.timeline-icon{width:23px;height:23px;border-radius:50%;background:#e8f0e9;display:grid;place-items:center;flex-shrink:0;color:var(--green)}.timeline-icon svg{width:12px;height:12px}.timeline-item .time{font-size:10px;color:var(--muted);margin-top:4px}.timeline-item strong{font-size:11px}.empty{padding:33px;text-align:center;font-size:12px;color:var(--muted)}.insight-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.insight-card{padding:19px;border-left:4px solid var(--accent)}.insight-card h3{font-size:14px;margin:9px 0}.insight-card p{color:var(--muted);font-size:12px;line-height:1.6}.notice{font-size:11px;color:#879088;line-height:1.5;padding:16px 0}.notice b{color:var(--ink)}.overlay{position:fixed;inset:0;background:#101912a3;backdrop-filter:blur(3px);z-index:100;display:flex;align-items:center;justify-content:center;padding:18px}.modal{background:var(--paper);border-radius:20px;width:min(690px,100%);max-height:min(92vh,950px);overflow-y:auto;box-shadow:0 25px 80px #0006}.modal-head{padding:23px 27px 15px;display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line)}.modal h2{font-size:24px;letter-spacing:-.06em;margin:0}.modal-body{padding:23px 27px}.modal-footer{padding:17px 27px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap}.drawer-overlay{justify-content:flex-end;padding:0}.drawer{height:100vh;max-height:100vh;width:min(680px,100%);background:var(--paper);overflow:auto;box-shadow:-13px 0 45px #0003}.drawer-head{position:sticky;top:0;background:var(--paper);z-index:1;padding:22px 28px;border-bottom:1px solid var(--line)}.drawer-inner{padding:24px 28px 40px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.detail-box{background:#f5f6f1;border-radius:11px;padding:14px}.detail-box label{display:block;font-size:10px;color:var(--muted);margin-bottom:6px}.detail-box b{font-size:12px}.detail-section{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.detail-section h3{font-size:14px;letter-spacing:-.03em;margin:0 0 14px}.qc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.check-card{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fff;display:flex;align-items:center;gap:9px;font-size:11px;font-weight:650}.check-card input{accent-color:var(--green);width:16px;height:16px}.approval-badge{background:#edf5e9;border:1px solid #d4e8d7;color:#3b7854;padding:11px;border-radius:10px;font-size:12px;display:flex;align-items:center;gap:8px}.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.info{padding:15px;background:#f3f5f1;border-radius:11px}.info b{font-size:19px;display:block;margin:9px 0 3px}.info small{color:var(--muted);font-size:11px}.toast{position:fixed;bottom:25px;right:25px;z-index:200;background:#22302a;color:#fff;padding:14px 18px;border-radius:13px;max-width:min(440px,calc(100vw - 40px));box-shadow:0 10px 35px #0004;font-size:12px}.toast.error{background:#a54332}.printcenter{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px}.sheetpreview{background:#dfe2dc;border-radius:14px;padding:22px;display:grid;place-items:start center;min-height:500px;overflow:auto}.sheet{background:white;color:#14201c;width:595px;min-height:750px;box-shadow:0 7px 35px #17231b22;padding:40px 43px;position:relative;font-family:'DM Sans',Arial,sans-serif}.sheet .watermark{position:absolute;top:43%;left:13%;transform:rotate(-29deg);font-size:35px;font-weight:800;letter-spacing:.22em;color:rgba(223,93,53,.085);pointer-events:none;white-space:nowrap}.sheet-header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px solid #17231c;padding-bottom:16px}.pc-mark{font-size:32px;color:var(--accent);font-weight:800;letter-spacing:-.15em}.sheet-title{font-size:21px;font-weight:800;letter-spacing:-.065em;margin:20px 0 6px}.sheet-kicker{text-transform:uppercase;color:var(--accent);font-weight:800;font-size:9px;letter-spacing:.15em}.sheet-info{display:grid;grid-template-columns:1fr 1fr;gap:12px 25px;margin:22px 0}.sheet-info div{border-bottom:1px solid #e2e7e0;padding-bottom:8px}.sheet-info label{display:block;text-transform:uppercase;letter-spacing:.1em;color:#8b958e;font-size:8px;margin-bottom:5px}.sheet-info b{font-size:11px}.sheet-table{width:100%;border-collapse:collapse;margin:18px 0}.sheet-table th{text-align:start;background:#eaf0ea;font-size:9px;padding:11px;border:1px solid #dae0d9}.sheet-table td{border:1px solid #e1e7df;font-size:10px;padding:10px;vertical-align:top}.sheet-footer{border-top:1px solid #dbe1d9;margin-top:30px;padding-top:12px;display:flex;justify-content:space-between;color:#6a786f;font-size:9px}.labelsheet{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,1fr);gap:12px;height:670px}.labelunit{border:2px dashed #adb8b0;padding:19px;display:flex;flex-direction:column;justify-content:space-between}.labelunit .pc-mark{font-size:22px}.labelunit strong{font-size:17px;letter-spacing:-.06em}.labelunit small{font-size:9px;color:#58665c}.labelunit .label-code{border-top:1px solid #b6c4b8;padding-top:8px;font-family:monospace;letter-spacing:.04em}.tour{display:grid;grid-template-columns:1fr 1fr;gap:18px}.tour-step{padding:22px}.tour-step .num{font-size:10px;font-family:monospace;color:var(--accent);font-weight:800}.tour-step h3{font-size:19px;letter-spacing:-.05em;margin:11px 0 7px}.tour-step p{color:var(--muted);font-size:12px;line-height:1.6;margin:0}.tour-step .btn{margin-top:15px}.menu-toggle{display:none}.separator{height:1px;background:var(--line);margin:18px 0}.dashed{border:1px dashed #d5ded4;border-radius:12px;padding:16px}.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);white-space:nowrap;overflow:hidden}.print-root{display:none}
@media(max-width:1250px){.main{padding:28px 26px 55px}.topbar{padding:0 26px}.sidebar{width:235px}.app{grid-template-columns:235px 1fr}.stats{grid-template-columns:repeat(2,1fr)}.machinegrid,.materials{grid-template-columns:repeat(2,minmax(0,1fr))}.printcenter{grid-template-columns:250px minmax(0,1fr)}.sheetpreview{justify-content:start}}
@media(max-width:950px){.sidebar{position:fixed;left:-300px;top:0;width:270px;transition:left .2s;box-shadow:8px 0 35px #0003}.sidebar.open{left:0}body[dir=rtl] .sidebar{left:auto;right:-300px;transition:right .2s}body[dir=rtl] .sidebar.open{right:0}.app{display:block}.menu-toggle{display:grid}.topbar{height:70px}.dash-grid,.quote-layout{grid-template-columns:1fr}.hero{grid-template-columns:1.4fr .8fr}.printcenter{grid-template-columns:1fr}}
@media(max-width:600px){.main{padding:22px 15px 55px}.topbar{padding:0 15px}.breadcrumb{display:none}.topactions{margin-left:auto}body[dir=rtl] .topactions{margin-left:0;margin-right:auto}.topactions .env-pill,.topactions .status-pill{display:none}.pagehead{align-items:flex-start;flex-direction:column;margin-bottom:20px}.pagehead h1{font-size:30px}.hero{padding:22px;grid-template-columns:1fr;min-height:unset}.hero-visual{transform:none}.hero-step{padding:10px}.hero-step strong{font-size:21px}.stats,.materials,.machinegrid,.insight-cards,.tour{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:17px}.metric-value{font-size:30px}.card-pad{padding:17px}.modal-head,.drawer-head{padding:20px}.modal-body,.drawer-inner{padding:20px}.formgrid,.detail-grid,.qc-grid{grid-template-columns:1fr}.formgrid .span2{grid-column:span 1}.info-grid{grid-template-columns:1fr 1fr}.info-grid .info:last-child{grid-column:span 2}.sheetpreview{padding:10px}.sheet{transform:scale(.56);transform-origin:top left;margin-right:-44%;margin-bottom:-35%;}.labelsheet{height:670px}.topactions .btn span{display:none}.sectionhead{flex-wrap:wrap}}
@media(max-width:390px){.stats,.machinegrid,.materials{grid-template-columns:1fr}.hero-visual{display:none}}
@media print{@page{size:A4;margin:0}html,body{background:#fff!important;width:210mm;margin:0;padding:0}body *{visibility:hidden!important}.print-root,.print-root *{visibility:visible!important}.print-root{display:block!important;position:absolute;left:0;top:0;width:210mm;margin:0;padding:0;z-index:99999}.print-root .sheet{display:block!important;box-shadow:none!important;border:0!important;width:210mm!important;height:297mm!important;min-height:297mm!important;padding:17mm!important;transform:none!important;margin:0!important;break-after:page;print-color-adjust:exact;-webkit-print-color-adjust:exact}.print-root .sheet-footer{position:absolute;bottom:17mm;left:17mm;right:17mm}.print-root .watermark{color:rgba(223,93,53,.1)!important}.print-root .labelsheet{height:250mm!important}.print-root .labelunit{break-inside:avoid!important}}
.sidebar{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#667369 transparent}.ci-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(285px,.65fr);gap:19px;align-items:start}.ci-chat{display:flex;flex-direction:column;min-height:600px;height:calc(100vh - 245px);max-height:740px;overflow:hidden}.ci-chat-head{display:flex;align-items:center;gap:11px;padding:18px;border-bottom:1px solid var(--line)}.ci-avatar{height:39px;width:39px;display:grid;place-items:center;border-radius:11px;color:#fff;font-size:17px;font-weight:800;letter-spacing:-.07em;background:var(--accent)}.ci-messages{display:flex;flex-direction:column;gap:16px;overflow:auto;padding:23px;flex:1;scrollbar-width:thin}.ci-message{max-width:88%;padding:14px 17px;border-radius:14px;background:#f0f3ee;color:#26352c;font-size:12px;line-height:1.75;white-space:normal;overflow-wrap:anywhere}.ci-message.from-user{background:var(--ink);color:white;align-self:flex-end;border-bottom-right-radius:4px}.ci-message.from-ci{align-self:flex-start;border-bottom-left-radius:4px}.ci-message-meta{text-transform:uppercase;font-size:9px;font-weight:800;letter-spacing:.09em;opacity:.7;margin-bottom:5px}.ci-inputbar{border-top:1px solid var(--line);display:flex;gap:9px;padding:14px}.ci-inputbar input{background:#f6f7f4;border:1px solid var(--line);border-radius:10px;flex:1;min-width:0;padding:12px;font-size:12px}.ci-pending{border:1px solid #e6a98a;background:#fff2e8;border-radius:14px;padding:16px;max-width:94%;font-size:12px}.ci-pending p{color:#92532f;line-height:1.6}.ci-prompts{display:grid;gap:8px}.ci-prompts button{text-align:start;display:flex;align-items:center;gap:9px;padding:11px;border:1px solid var(--line);border-radius:9px;background:#f8f9f6;color:var(--ink);font-size:11px;font-weight:650;line-height:1.4}.ci-prompts button:hover{background:#fff3eb;border-color:#ecc0ae}.ci-prompts svg{width:14px;height:14px;flex-shrink:0;color:var(--accent)}@media(max-width:1000px){.ci-layout{grid-template-columns:1fr}.ci-chat{height:600px}}@media(max-width:600px){.ci-chat{height:550px;min-height:430px}.ci-messages{padding:15px}.ci-message{max-width:96%}}
@media print{#app,#modal-root,#toast-root{display:none!important}.print-root{position:static!important;width:210mm!important;min-height:297mm!important;overflow:visible!important}.print-root .sheet{box-sizing:border-box!important}.print-root .labelunit{border-color:#9eaaa1!important}}
/* Prevent intrinsic table width from widening the mobile viewport. */
.workspace,.main,.card,.dash-grid>*,.quote-layout>*,.ci-layout>*{min-width:0}.table-wrap{max-width:100%;overflow-x:auto}.jobtable{min-width:680px}@media(max-width:950px){.dash-grid,.quote-layout,.ci-layout{grid-template-columns:minmax(0,1fr)}}@media(max-width:390px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.machinegrid,.materials{grid-template-columns:1fr}}

/* ── Motion & touch polish (release 2.2) ─────────────────────────────────────
   Entrance effects run only when the screen changes (body.pc-enter) or a panel
   opens (.pc-in), because the app redraws on every tap. All of it switches off
   for people who ask their device for reduced motion. */
:root{--ease-out:cubic-bezier(.22,1,.36,1);--ease-spring:cubic-bezier(.34,1.56,.64,1)}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none}
button,a,.jobcard,.nav button,[data-nav],[data-open]{-webkit-tap-highlight-color:transparent;touch-action:manipulation}

@keyframes pcFadeUp{from{opacity:0;transform:translate3d(0,14px,0)}to{opacity:1;transform:none}}
@keyframes pcFade{from{opacity:0}to{opacity:1}}
@keyframes pcPop{from{opacity:0;transform:translate3d(0,18px,0) scale(.97)}to{opacity:1;transform:none}}
@keyframes pcSlideR{from{transform:translate3d(100%,0,0)}to{transform:none}}
@keyframes pcSlideL{from{transform:translate3d(-100%,0,0)}to{transform:none}}
@keyframes pcSheet{from{transform:translate3d(0,100%,0)}to{transform:none}}
@keyframes pcToast{from{opacity:0;transform:translate3d(0,16px,0) scale(.96)}to{opacity:1;transform:none}}
@keyframes pcGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Screen change: header, then cards cascade in */
body.pc-enter .pagehead,body.pc-enter .hero{animation:pcFadeUp .5s var(--ease-out) both}
body.pc-enter .main .card,body.pc-enter .main .metric,body.pc-enter .jobcard,body.pc-enter .machine,body.pc-enter .material,body.pc-enter .insight-card,body.pc-enter .lane,body.pc-enter .tour-step{animation:pcFadeUp .55s var(--ease-out) both}
body.pc-enter .main :is(.stats,.dash-grid,.machinegrid,.materials,.insight-cards,.board,.tour,.quote-layout,.ci-layout,.printcenter)>*:nth-child(1){animation-delay:.04s}
body.pc-enter .main :is(.stats,.dash-grid,.machinegrid,.materials,.insight-cards,.board,.tour,.quote-layout,.ci-layout,.printcenter)>*:nth-child(2){animation-delay:.08s}
body.pc-enter .main :is(.stats,.dash-grid,.machinegrid,.materials,.insight-cards,.board,.tour,.quote-layout,.ci-layout,.printcenter)>*:nth-child(3){animation-delay:.12s}
body.pc-enter .main :is(.stats,.dash-grid,.machinegrid,.materials,.insight-cards,.board,.tour,.quote-layout,.ci-layout,.printcenter)>*:nth-child(4){animation-delay:.16s}
body.pc-enter .main :is(.stats,.dash-grid,.machinegrid,.materials,.insight-cards,.board,.tour,.quote-layout,.ci-layout,.printcenter)>*:nth-child(5){animation-delay:.2s}
body.pc-enter .main :is(.stats,.dash-grid,.machinegrid,.materials,.insight-cards,.board,.tour,.quote-layout,.ci-layout,.printcenter)>*:nth-child(n+6){animation-delay:.24s}
body.pc-enter .progressline>*{transform-origin:left;animation:pcGrow .8s .15s var(--ease-out) both}
body[dir=rtl].pc-enter .progressline>*{transform-origin:right}

/* Panels: fade the backdrop, pop the dialog, slide the work-order drawer */
.overlay.pc-in{animation:pcFade .22s ease-out both}
.overlay.pc-in .modal{animation:pcPop .38s var(--ease-out) both}
.drawer-overlay.pc-in .drawer{animation:pcSlideR .42s var(--ease-out) both}
body[dir=rtl] .drawer-overlay.pc-in .drawer{animation-name:pcSlideL}
.toast{animation:pcToast .35s var(--ease-spring) both}

/* Press feedback and gentle hover lift */
.btn,.iconbtn,.chip,.nav button,.segmented button,.menu-toggle{transition:transform .14s var(--ease-out),background-color .2s,box-shadow .2s,color .2s,border-color .2s}
.btn:active,.iconbtn:active,.chip:active,.segmented button:active,.menu-toggle:active{transform:scale(.96)}
.nav button:active{transform:scale(.98)}
.jobcard,.card,.machine,.material,.insight-card{transition:transform .25s var(--ease-out),box-shadow .25s var(--ease-out),border-color .2s}
.jobcard:active{transform:scale(.985)}
@media (hover:hover) and (pointer:fine){
  .jobcard:hover,.insight-card:hover,.machine:hover,.material:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(24,32,28,.09)}
  .btn:hover{box-shadow:0 6px 18px rgba(23,32,29,.16)}
  .btn-ghost:hover,.btn-light:hover{box-shadow:none}
}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* Status icon in the work-order panel had no size and filled the box on phones */
.approval-badge svg{width:18px;height:18px;flex:none}
/* Safari still needs the prefixed blur */
.topbar{-webkit-backdrop-filter:saturate(1.5) blur(20px);backdrop-filter:saturate(1.5) blur(20px)}
.overlay{-webkit-backdrop-filter:blur(3px)}

/* Phones & tablets: menu slides in over a dimmed backdrop, notch-safe spacing */
@media(max-width:950px){
  .sidebar.open{box-shadow:0 0 0 100vmax rgba(16,25,18,.45),8px 0 35px #0003;animation:pcSlideL .32s var(--ease-out) both}
  body[dir=rtl] .sidebar.open{box-shadow:0 0 0 100vmax rgba(16,25,18,.45),-8px 0 35px #0003;animation-name:pcSlideR}
  .sidebar{padding-top:calc(25px + env(safe-area-inset-top));padding-bottom:calc(18px + env(safe-area-inset-bottom));height:100dvh;min-height:100dvh}
  .topbar{position:sticky;top:0;z-index:20;padding-top:env(safe-area-inset-top);height:calc(70px + env(safe-area-inset-top));background:rgba(255,254,250,.82)}
  .drawer{height:100dvh;max-height:100dvh;padding-bottom:env(safe-area-inset-bottom)}
  .main{padding-left:max(15px,env(safe-area-inset-left));padding-right:max(15px,env(safe-area-inset-right))}
  .table-wrap{-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
}
@media(max-width:600px){
  /* iPhone zooms into any field under 16px; keep typing steady */
  input,select,textarea,select.field,textarea.field{font-size:16px!important}
  /* Dialogs become bottom sheets on phones */
  .overlay:not(.drawer-overlay){align-items:flex-end;padding:0}
  .overlay:not(.drawer-overlay) .modal{width:100%;border-radius:22px 22px 0 0;max-height:92dvh;padding-bottom:env(safe-area-inset-bottom)}
  .overlay.pc-in:not(.drawer-overlay) .modal{animation:pcSheet .42s var(--ease-out) both}
  .toast{left:15px;right:15px;bottom:calc(18px + env(safe-area-inset-bottom));max-width:none}
}
/* ── Premium layer (release 2.3) ─────────────────────────────────────────── */
/* Branded intro */
#pc-intro{position:fixed;inset:0;z-index:1000;background:#121a17;display:grid;place-items:center;color:#fff;overflow:hidden;cursor:pointer;transition:transform .75s cubic-bezier(.76,0,.24,1),opacity .75s ease}
#pc-intro.pc-intro-out{transform:translate3d(0,-100%,0);opacity:.6}
.pc-intro-glow{position:absolute;width:120vmax;height:120vmax;left:50%;top:50%;margin:-60vmax 0 0 -60vmax;background:radial-gradient(circle at 50% 50%,rgba(233,92,53,.28),rgba(233,92,53,.06) 30%,transparent 55%);animation:pcGlow 2.2s ease-out both}
@keyframes pcGlow{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
.pc-intro-inner{position:relative;display:grid;justify-items:center;gap:16px}
.pc-intro-logo{width:84px;height:84px;background:var(--accent);border-radius:22px;display:grid;place-items:center;font-size:38px;font-weight:800;letter-spacing:-5px;transform:skew(-5deg);box-shadow:0 20px 60px rgba(233,92,53,.45);animation:pcLogo .9s var(--ease-spring) both}
.pc-intro-logo span{transform:skew(5deg);margin-right:5px}
@keyframes pcLogo{from{opacity:0;transform:skew(-5deg) scale(.4) rotate(-12deg)}to{opacity:1;transform:skew(-5deg)}}
.pc-intro-word{font-size:clamp(30px,7vw,44px);font-weight:800;letter-spacing:-.06em;display:flex;overflow:hidden;padding:2px 4px}
.pc-intro-word span{display:inline-block;animation:pcRise .7s var(--ease-out) both}
.pc-intro-dot{color:var(--accent);animation-delay:.7s!important}
@keyframes pcRise{from{transform:translate3d(0,110%,0);opacity:0}to{transform:none;opacity:1}}
.pc-intro-sub{font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:#9fb0a6;animation:pcFade .8s .75s both}
.pc-intro-bar{width:150px;height:3px;border-radius:3px;background:#ffffff18;overflow:hidden;margin-top:8px;animation:pcFade .4s .8s both}
.pc-intro-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),#f6a07f);transform-origin:left;animation:pcGrow 1.05s .9s cubic-bezier(.65,0,.35,1) both}

/* Screen-to-screen transitions (View Transitions: Chrome, Edge, Android, Safari 18+) */
.main{view-transition-name:pc-main}
::view-transition-old(root),::view-transition-new(root){animation:none}
::view-transition-old(pc-main){animation:pcVtOut .2s ease-in both}
::view-transition-new(pc-main){animation:pcVtIn .42s var(--ease-out) both}
@keyframes pcVtOut{to{opacity:0;transform:translate3d(0,-10px,0) scale(.99)}}
@keyframes pcVtIn{from{opacity:0;transform:translate3d(0,12px,0)}}
@media(min-width:951px){.nav button.active{view-transition-name:pc-nav}::view-transition-group(pc-nav){animation-duration:.45s;animation-timing-function:var(--ease-out)}}

/* Panels leave as smoothly as they arrive */
.overlay.pc-out{animation:pcFadeOut .26s ease-in both;pointer-events:none}
.overlay.pc-out .modal{animation:pcPopOut .26s ease-in both}
.drawer-overlay.pc-out .drawer{animation:pcSlideOutR .26s cubic-bezier(.4,0,1,1) both}
body[dir=rtl] .drawer-overlay.pc-out .drawer{animation-name:pcSlideOutL}
@keyframes pcFadeOut{to{opacity:0}}
@keyframes pcPopOut{to{opacity:0;transform:translate3d(0,12px,0) scale(.97)}}
@keyframes pcSlideOutR{to{transform:translate3d(100%,0,0)}}
@keyframes pcSlideOutL{to{transform:translate3d(-100%,0,0)}}
.overlay{background:rgba(12,19,15,.5);-webkit-backdrop-filter:blur(6px) saturate(1.2);backdrop-filter:blur(6px) saturate(1.2)}
.modal,.drawer{box-shadow:0 30px 90px rgba(5,10,8,.35),0 0 0 1px rgba(255,255,255,.6) inset}

/* Card-stack depth: the app recedes behind an open panel */
#app{transition:transform .5s var(--ease-out),border-radius .5s var(--ease-out),filter .5s;transform-origin:50% var(--pc-oy,50vh)}
body.pc-sheet-open{background:#0e1512}
body.pc-sheet-open #app{transform:scale(.965);border-radius:18px;overflow:hidden;filter:saturate(.85)}
@media(max-width:600px){body.pc-sheet-open #app{transform:scale(.93) translate3d(0,8px,0);border-radius:22px}}

/* Top bar gains depth on scroll */
.topbar{transition:box-shadow .3s,background-color .3s,border-color .3s}
body.pc-scrolled .topbar{box-shadow:0 8px 30px rgba(24,32,28,.08);border-bottom-color:transparent}

/* Sidebar: active item glow, animated hover */
.nav button{position:relative}
.nav button.active{box-shadow:0 6px 20px rgba(0,0,0,.18)}
.nav button.active svg{stroke:var(--accent)}
.nav button:not(.active):hover{background:#ffffff0d;color:#fff}
.logo{transition:transform .5s var(--ease-spring)}
.brand:hover .logo{transform:skew(-5deg) rotate(-6deg) scale(1.06)}

/* Hero: slow living glow and floating tiles */
.hero{isolation:isolate}
.hero:before{content:'';position:absolute;z-index:-1;width:520px;height:520px;left:-160px;top:-260px;border-radius:50%;background:radial-gradient(circle,rgba(233,92,53,.30),transparent 62%);animation:pcDrift 14s ease-in-out infinite alternate;pointer-events:none}
@keyframes pcDrift{from{transform:translate3d(0,0,0)}to{transform:translate3d(240px,120px,0) scale(1.15)}}
.hero-visual>*{animation:pcFloat 6s ease-in-out infinite alternate}
.hero-visual>*:nth-child(3n+2){animation-delay:-2s}.hero-visual>*:nth-child(3n){animation-delay:-4s}
@keyframes pcFloat{from{transform:translate3d(0,-4px,0)}to{transform:translate3d(0,4px,0)}}

/* Primary buttons: gradient depth and a periodic light sweep */
.btn-accent{position:relative;overflow:hidden;background:linear-gradient(180deg,#f06a43,var(--accent));box-shadow:0 6px 18px rgba(233,92,53,.28),inset 0 1px 0 rgba(255,255,255,.25)}
.btn-accent:after{content:'';position:absolute;top:0;bottom:0;left:-60%;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);animation:pcSweep 5.5s 1.5s ease-in-out infinite;pointer-events:none}
@keyframes pcSweep{0%,70%{left:-60%}100%{left:130%}}

/* Live status dot pulses */
.env-pill .dot{box-shadow:0 0 0 0 rgba(47,139,101,.5);animation:pcPulse 2.2s ease-out infinite}
@keyframes pcPulse{70%{box-shadow:0 0 0 7px rgba(47,139,101,0)}100%{box-shadow:0 0 0 0 rgba(47,139,101,0)}}

/* Pointer spotlight on cards (computers only) */
@media (hover:hover) and (pointer:fine){
  .card,.jobcard,.insight-card,.machine,.material{background-image:radial-gradient(420px circle at var(--mx,-999px) var(--my,-999px),rgba(233,92,53,.07),transparent 45%)}
  .jobcard:hover{border-color:#f1cdbd}
}

/* Kanban board glides lane by lane on phones */
@media(max-width:950px){.board{scroll-snap-type:x mandatory;scroll-padding:0 4px;-webkit-overflow-scrolling:touch}.lane{scroll-snap-align:start}}

/* Status chips and metric cards: crisper finish */
.metric{position:relative;overflow:hidden}
.metric:after{content:'';position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--accent),transparent);opacity:.0;transition:opacity .3s}
.metric:hover:after{opacity:.9}
::selection{background:#f7c9b6;color:var(--ink)}

@media print{#pc-intro{display:none!important}body.pc-sheet-open #app,#app{transform:none!important;filter:none!important}.main{view-transition-name:none}}

/* ── PDF for home-screen apps (release 2.4) ─────────────────────────────── */
/* Off-screen A4 page (794×1123 px = 210×297 mm at 96 dpi) that becomes each PDF page */
.pc-pdf-stage{position:fixed;left:-12000px;top:0;width:794px;z-index:-1;pointer-events:none}
.pc-pdf-stage .sheet{display:block!important;box-sizing:border-box!important;width:794px!important;height:1123px!important;min-height:1123px!important;padding:64px!important;margin:0!important;transform:none!important;box-shadow:none!important;border:0!important;overflow:hidden}
.pc-pdf-stage .sheet-footer{position:absolute;bottom:64px;left:64px;right:64px}
.pc-pdf-stage .watermark{color:rgba(223,93,53,.1)!important}
.pc-pdf-stage .labelsheet{height:945px!important}
.pc-pdf-stage .labelunit{border-color:#9eaaa1!important}
/* "Preparing / PDF ready" panel */
#pc-pdf{position:fixed;inset:0;z-index:600;display:none;align-items:flex-end;justify-content:center;background:rgba(12,19,15,.45);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}
#pc-pdf.show{display:flex;animation:pcFade .2s ease-out both}
@media(min-width:601px){#pc-pdf{align-items:center}}
.pc-pdf-card{background:var(--paper);border-radius:22px;padding:24px 22px;width:min(420px,100%);display:grid;justify-items:center;gap:6px;text-align:center;box-shadow:0 30px 90px rgba(5,10,8,.35);animation:pcPop .38s var(--ease-out) both}
.pc-pdf-card b{font-size:17px;letter-spacing:-.02em}
.pc-pdf-card small{color:var(--muted);font-size:12px;line-height:1.5}
.pc-pdf-actions{display:grid;gap:9px;width:100%;margin-top:12px}
.pc-pdf-actions .btn{width:100%;margin:0;text-decoration:none;min-height:48px;font-size:15px}
.pc-pdf-hint{margin-top:6px}
.pc-pdf-ok{width:52px;height:52px;border-radius:50%;background:#e6f3ec;color:var(--green);display:grid;place-items:center;font-size:24px;font-weight:800;margin-bottom:4px;animation:pcPop .5s var(--ease-spring) both}
.pc-pdf-spin{width:38px;height:38px;border-radius:50%;border:3px solid #f1d6ca;border-top-color:var(--accent);animation:pcSpin .8s linear infinite;margin-bottom:6px}
@keyframes pcSpin{to{transform:rotate(360deg)}}
/* The last printed page must not push an empty page after it */
@media print{.print-root .sheet:last-child{break-after:auto!important;page-break-after:auto!important}.print-root .sheet{height:296.5mm!important;min-height:0!important;overflow:hidden}.print-root{min-height:0!important}#pc-pdf{display:none!important}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
@media print{body.pc-enter *{animation:none!important}}
