.brand-logo{justify-content:center;align-items:center;line-height:0;display:inline-flex}.brand-logo img{object-fit:contain;width:auto;max-width:100%;height:100%;display:block}.brand-logo-sm{height:34px}.brand-logo-md{height:48px}.brand-logo-lg{height:64px}.brand-logo.on-dark{box-shadow:none;background:0 0;border-radius:0;padding:0}.brand-logo-sm.on-dark{height:46px}.tablosoft-credit{font-size:var(--fs-xs,12px);color:var(--muted);text-align:center;line-height:1.7}.tablosoft-credit a{color:inherit;font-weight:var(--fw-bold,700);border-bottom:1px dashed;text-decoration:none}.tablosoft-credit a:hover,.tablosoft-credit a:focus-visible{color:var(--brand)}.tablosoft-credit .tablosoft-url{opacity:.75;letter-spacing:.02em;font-size:11px;display:block}.sidebar .tablosoft-credit{color:#8a9bb5;padding:6px var(--sp-3,12px) 10px}.sidebar .tablosoft-credit a:hover,.sidebar .tablosoft-credit a:focus-visible{color:#fff}.sidebar .brand.brand-with-logo{text-align:center;flex-direction:column;align-items:stretch;gap:6px}.sidebar .brand.brand-with-logo .brand-logo{align-self:center}.login-brand.login-brand-logo{text-align:center;gap:var(--sp-2,8px);flex-direction:column}.q-items tr.q-main.has-bd td{border-bottom:none}.q-items tr.q-bd-head td{font-size:var(--fs-xs,12px);color:var(--muted);border-bottom:none;padding-top:2px;padding-bottom:2px}.q-items tr.q-bd td{font-size:var(--fs-xs,12px);color:var(--muted);border-bottom:none;padding-top:3px;padding-bottom:3px}.q-items tr.q-bd td:first-child,.q-items tr.q-bd-head td{padding-inline-start:22px}.q-items tr.q-bd td:first-child:before{content:"•";opacity:.6;margin-inline-end:6px}.q-items tr.q-bd-discount td{color:var(--green-txt)}.q-items tr.q-bd-last td{border-bottom:1px solid var(--line);padding-bottom:10px}@media (width<=600px){.table-scroll>.table.q-items{min-width:0}.q-items th:nth-child(3),.q-items td:nth-child(3){display:none}.q-items th,.q-items td{padding-inline:6px}.q-items td:last-child{white-space:nowrap}}@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Regular.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Bold.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-ExtraBold.woff2)format("woff2");font-weight:900;font-display:swap}:root{--gray-25:#fbfcfd;--gray-50:#f7f9fb;--gray-100:#eef1f5;--gray-200:#e3e8ee;--gray-300:#cdd5e0;--gray-400:#98a2b3;--gray-500:#667085;--gray-600:#475467;--gray-700:#344054;--gray-800:#1d2939;--gray-900:#101828;--brand:#174ea6;--brand-600:#123a7c;--brand-50:#eaf1fc;--brand-100:#dbe8fa;--cyan:#0e7490;--green:#15803d;--green-50:#ecfdf3;--green-txt:#146c37;--orange:#b45309;--orange-50:#fffaeb;--orange-txt:#93400a;--red:#c0311a;--red-50:#fef3f2;--red-txt:#a3271a;--gray-chip:#475467;--gray-chip-50:#f2f4f7;--ink:var(--gray-900);--muted:var(--gray-500);--muted-strong:var(--gray-600);--blue:var(--brand);--blue2:#2f6fb0;--steel:var(--gray-700);--bg:var(--gray-50);--surface:#fff;--surface-muted:var(--gray-50);--surface-sunken:var(--gray-100);--line:var(--gray-200);--hair:var(--gray-200);--glass:#fff;--glass2:var(--gray-50);--shadow-xs:0 1px 2px #1018280d;--shadow-sm:0 2px 8px #10182814;--shadow-md:0 8px 24px #1018281a;--shadow-lg:0 16px 48px #10182829;--shadow:var(--shadow-sm);--shadow2:var(--shadow-xs);--r-sm:8px;--r-md:10px;--r-lg:14px;--r-xl:18px;--r:var(--r-lg);--r2:var(--r-md);--fs-xs:12px;--fs-sm:12.5px;--fs-base:13.5px;--fs-md:15px;--fs-lg:17px;--fs-xl:21px;--fs-2xl:26px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-heavy:800;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px}*{box-sizing:border-box}html{background:var(--bg)}body{color:var(--ink);background:var(--bg);min-height:100vh;font-family:Vazirmatn,Tahoma,sans-serif;font-size:var(--fs-base);line-height:1.55;font-weight:var(--fw-regular);margin:0}button,input,select,textarea{font-family:inherit}button{-webkit-user-select:none;user-select:none}h1,h2,h3{font-weight:var(--fw-bold);color:var(--ink)}.app-shell{z-index:1;gap:var(--sp-5);min-height:100vh;padding:var(--sp-5);grid-template-columns:264px 1fr;display:grid;position:relative}.sidebar{border-radius:var(--r-xl);padding:var(--sp-4);top:var(--sp-5);height:calc(100vh - 40px);box-shadow:var(--shadow-md);background:linear-gradient(#0f1b30,#14213a);border:1px solid #ffffff0f;position:sticky;overflow:auto}.glass{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-xs)}.glass-dark{box-shadow:var(--shadow-md);color:#fff;background:linear-gradient(#0f1b30,#14213a);border:1px solid #ffffff14}.brand{gap:var(--sp-3);padding:var(--sp-2) var(--sp-1) var(--sp-4);margin-bottom:var(--sp-3);border-bottom:1px solid #ffffff14;align-items:center;display:flex}.brand-mark{border-radius:var(--r-md);background:linear-gradient(135deg,var(--brand),#22314a);width:44px;height:44px;font-weight:var(--fw-bold);color:#fff;place-items:center;font-size:19px;display:grid;box-shadow:0 6px 16px #174ea64d}.brand strong{font-size:var(--fs-md);color:#fff;font-weight:var(--fw-bold);display:block}.brand span,.user-box small{color:#9fb0c8;font-size:var(--fs-xs);font-weight:var(--fw-regular);margin-top:3px;display:block}.nav{gap:2px;display:grid}.nav button{color:#c7d3e6;text-align:right;border-radius:var(--r-md);padding:10px var(--sp-3);cursor:pointer;font-size:var(--fs-base);font-weight:var(--fw-medium);background:0 0;border:0;transition:background .12s,color .12s}.nav button.active{background:var(--brand);color:#fff;font-weight:var(--fw-semibold)}.nav button:hover:not(.active){color:#fff;background:#ffffff0f}.user-box{margin-top:var(--sp-4);padding:var(--sp-3);border-radius:var(--r-lg);gap:var(--sp-2);background:#ffffff0d;border:1px solid #ffffff14;align-items:center;display:flex}.avatar{border-radius:var(--r-md);background:var(--brand-50);width:36px;height:36px;color:var(--brand);font-weight:var(--fw-bold);font-size:var(--fs-sm);place-items:center;display:grid}.main-content{padding:2px 2px 30px}.page-header{justify-content:space-between;align-items:center;gap:var(--sp-4);margin:2px 0 var(--sp-5);display:flex}.page-header h1{font-size:var(--fs-2xl);letter-spacing:-.3px;font-weight:var(--fw-bold);color:var(--ink);margin:0}.page-header p{color:var(--muted);font-size:var(--fs-base);margin:6px 0 0}.header-actions{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.btn{border:1px solid var(--gray-300);border-radius:var(--r-md);background:var(--surface);cursor:pointer;font-weight:var(--fw-semibold);font-size:var(--fs-base);color:var(--gray-700);padding:9px 15px;transition:background .12s,border-color .12s,transform 60ms;position:relative}.btn:hover{background:var(--gray-50);border-color:var(--gray-400)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-600);border-color:var(--brand-600)}.btn.danger{background:var(--surface);border-color:var(--red);color:var(--red)}.btn.danger:hover{background:var(--red-50)}.btn.mini{font-size:var(--fs-xs);border-radius:var(--r-sm);padding:6px 10px}.btn.full{width:100%;margin-top:var(--sp-2)}.card{border-radius:var(--r);padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-xs);position:relative}.card h2{margin:0 0 var(--sp-3);font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--ink)}.metric-grid{gap:var(--sp-4);grid-template-columns:repeat(4,1fr);display:grid}.metric-card{border-top:3px solid var(--brand);min-height:112px;overflow:hidden}.metric-card:after{content:none}.metric-card span{color:var(--muted);font-weight:var(--fw-medium);font-size:var(--fs-sm)}.metric-card b{font-size:var(--fs-2xl);margin:var(--sp-2) 0 var(--sp-1);font-weight:var(--fw-bold);color:var(--ink);display:block}.dashboard-grid{gap:var(--sp-4);grid-template-columns:1.25fr .75fr;display:grid}.small-top{margin-top:var(--sp-4)}.section-title{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);display:flex}.section-title h2{margin:0}.chip{font-size:var(--fs-xs);font-weight:var(--fw-semibold);background:var(--brand-50);color:var(--brand-600);border:1px solid #0000;border-radius:999px;align-items:center;padding:4px 10px;display:inline-flex}.chip.green{background:var(--green-50);color:var(--green-txt)}.chip.orange{background:var(--orange-50);color:var(--orange-txt)}.chip.gray{background:var(--gray-chip-50);color:var(--gray-chip)}.chip.red{background:var(--red-50);color:var(--red-txt)}.table{border-collapse:collapse;width:100%}.table th,.table td{text-align:right;border-bottom:1px solid var(--hair);font-size:var(--fs-base);padding:11px 12px}.table th{color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-semibold);background:var(--gray-50)}.table tr:hover td{background:var(--gray-25)}.table code{font-size:var(--fs-xs);direction:ltr;max-width:260px;display:inline-block;overflow:auto}.stage-list{gap:var(--sp-3);display:grid}.stage-row{gap:var(--sp-2);grid-template-columns:95px 1fr 36px;align-items:center;display:grid}.bar,.tiny{background:var(--gray-100);border-radius:999px;height:8px;overflow:hidden}.bar i,.tiny i{background:var(--brand);border-radius:999px;height:100%;display:block}.batch-line,.staff-row{gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);margin-bottom:var(--sp-2);grid-template-columns:1fr auto auto auto;align-items:center;display:grid}.staff-row{grid-template-columns:44px 80px 1fr 90px}.stepper{gap:var(--sp-2);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.stepper span{border-radius:var(--r-md);background:var(--gray-50);font-weight:var(--fw-semibold);border:1px solid var(--line);font-size:var(--fs-base);padding:8px 13px}.stepper .active{background:var(--brand);color:#fff;border-color:var(--brand)}.stepper .done{background:var(--green-50);color:var(--green-txt);border-color:#0000}.wizard-grid,.designer-grid{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.designer-grid{grid-template-columns:280px 1fr 360px}.form-grid,.option-grid,.param-grid{gap:var(--sp-3);grid-template-columns:repeat(2,1fr);display:grid}.form-grid label{font-weight:var(--fw-semibold);font-size:var(--fs-base);gap:6px;display:grid}.form-grid input,.form-grid select,.mini-form input,.mini-form select{border:1px solid var(--gray-300);border-radius:var(--r-md);background:var(--surface);min-width:0;font-size:var(--fs-base);outline:none;padding:10px}.form-grid input:focus,.form-grid select:focus,.mini-form input:focus,.mini-form select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}.item-card,.product-row,.param,.bom-row,.task-card,.batch-card,.production-line{padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);margin-bottom:var(--sp-2)}.item-card.active,.product-row.active,.batch-card.active,.param-button.active{background:var(--brand-50);border-color:var(--brand)}.item-card small,.product-row small,.batch-card small,.task-card small{color:var(--muted);font-size:var(--fs-xs);margin-top:4px;display:block}.option{border:1px solid var(--gray-300);background:var(--surface);border-radius:var(--r-md);font-weight:var(--fw-semibold);cursor:pointer;font-size:var(--fs-base);padding:10px}.option.selected{background:var(--brand-50);color:var(--brand-600);border-color:var(--brand)}.price-line{border-bottom:1px solid var(--hair);font-size:var(--fs-base);justify-content:space-between;padding:10px 0;display:flex}.price-line.total{font-size:var(--fs-lg);color:var(--brand);font-weight:var(--fw-bold)}.bom-row{gap:var(--sp-2);grid-template-columns:1fr 1fr 60px;display:grid}.bom-row code{text-align:left;background:var(--gray-100);border-radius:var(--r-sm);direction:ltr;padding:5px 8px}.kanban{gap:var(--sp-3);grid-template-columns:repeat(5,minmax(190px,1fr));display:grid;overflow:auto}.lane{min-height:360px}.task-actions{gap:var(--sp-2);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}.batch-card{gap:var(--sp-2);cursor:pointer;grid-template-columns:1fr auto;display:grid}.batch-card .tiny{grid-column:1/-1}.sheet-preview{border-radius:var(--r-lg);background:var(--gray-50);border:1px solid var(--gray-300);height:360px;margin-bottom:var(--sp-4);position:relative;overflow:hidden}.piece{border-radius:var(--r-sm);border:1px solid var(--gray-300);font-size:var(--fs-xs);font-weight:var(--fw-semibold);place-items:center;display:grid;position:absolute}.p1{background:#bfdbfe;width:18%;height:22%;top:8%;right:5%}.p2{background:#bbf7d0;width:15%;height:30%;top:8%;right:28%}.p3{background:#fed7aa;width:26%;height:18%;top:10%;right:48%}.p4{background:#bfdbfe;width:25%;height:25%;top:48%;right:8%}.p5{background:#bbf7d0;width:35%;height:20%;top:58%;right:42%}.dynamic-piece{background:#bfdbfe;min-width:70px;min-height:34px;overflow:hidden}.form-3{grid-template-columns:repeat(3,1fr)}.full-row{grid-column:1/-1}.error-box,.info-box{border-radius:var(--r-md);margin:var(--sp-3) 0;font-weight:var(--fw-semibold);font-size:var(--fs-base);padding:12px 14px}.error-box{background:var(--red-50);color:var(--red-txt);border:1px solid #c0311a33}.info-box{background:var(--brand-50);color:var(--brand-600);border:1px solid #174ea62e}.muted-text{color:var(--muted);line-height:1.85}.parameter-list{gap:var(--sp-3);display:grid}.parameter-card{padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line)}.parameter-head{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.option-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.option-grid.compact .option{font-size:var(--fs-sm);padding:9px}.product-button{text-align:right;cursor:pointer;width:100%}.group-list,.option-preview{gap:var(--sp-2);flex-wrap:wrap;display:flex}.group-pill{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);padding:9px 11px}.group-pill b{font-size:var(--fs-base);display:block}.group-pill small{color:var(--muted);font-size:var(--fs-xs)}.param-button{text-align:right;cursor:pointer;width:100%}.template-tabs{gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.template-tabs button{border:1px solid var(--gray-300);background:var(--surface);border-radius:var(--r-md);font-weight:var(--fw-semibold);font-size:var(--fs-base);padding:8px 11px}.template-tabs button.active{background:var(--brand);color:#fff;border-color:var(--brand)}.mini-form{gap:var(--sp-2);display:grid}.mini-form.two-col{grid-template-columns:1fr 1fr}.mini-form.three-col{grid-template-columns:repeat(3,1fr)}.bom-item-form{grid-template-columns:1fr 1fr}.ltr-input{text-align:left;direction:ltr}.check{gap:var(--sp-2);font-weight:var(--fw-semibold);font-size:var(--fs-base);align-items:center;display:flex}.compact-table th,.compact-table td{font-size:var(--fs-xs);padding:8px 7px}.quote-actions{gap:var(--sp-2);display:grid}.quote-card,.approval-box,.summary-box{padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);margin-top:var(--sp-3)}.approval-box{gap:var(--sp-2);display:grid}.approval-box code{text-align:left;background:var(--gray-100);border-radius:var(--r-sm);direction:ltr;padding:9px;display:block;overflow:auto}.summary-box{gap:var(--sp-2);grid-template-columns:repeat(3,1fr);display:grid}.finance-summary{grid-template-columns:repeat(3,1fr)}.summary-box span{color:var(--muted);font-size:var(--fs-xs);display:block}.summary-box b{font-size:var(--fs-base);margin-top:4px;display:block}.production-line{gap:var(--sp-2);grid-template-columns:1fr auto auto auto;align-items:center;display:grid}.batch-ops{gap:var(--sp-2);flex-wrap:wrap;display:flex}.batch-metrics{gap:var(--sp-2);grid-template-columns:repeat(4,1fr);display:grid}.batch-metrics div{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);padding:11px}.batch-metrics span{color:var(--muted);font-size:var(--fs-xs);display:block}.batch-metrics b{font-size:var(--fs-md);font-weight:var(--fw-bold);margin-top:4px;display:block}@media (width<=1150px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative}.metric-grid,.dashboard-grid,.wizard-grid,.designer-grid,.kanban,.form-3,.mini-form.two-col,.mini-form.three-col{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start}.option-grid.compact{grid-template-columns:1fr}}.catalog-price-input{text-align:left;direction:ltr;width:130px}.catalog-warning-icon{cursor:help;margin-right:6px}.my-task-actions{gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.my-task-actions .crystal-btn{min-height:50px;font-size:var(--fs-md);flex:160px}.my-task-done-row{padding:var(--sp-2) 0;border-bottom:1px solid var(--hair);justify-content:space-between;align-items:center;display:flex}@media (width<=560px){.my-task-actions{flex-direction:column}.my-task-actions .crystal-btn{width:100%;min-height:54px;font-size:var(--fs-lg)}}.color-select{align-items:center;gap:6px;width:100%;display:flex}.color-select select{flex:1;min-width:0}.color-swatch{border:1px solid var(--line,#ccc);vertical-align:middle;border-radius:4px;flex:none;display:inline-block}.cc-table td,.cc-table th{vertical-align:middle}.cc-table input[type=color]{background:0 0;border:none;width:38px;height:28px;padding:0}.payroll-periods-grid{gap:var(--sp-4);grid-template-columns:1fr;align-items:start;display:grid}.payroll-periods-grid>*{min-width:0}.payroll-periods-grid .metric-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.payroll-periods-grid .metric-pro,.payroll-periods-grid .metric-pro>div{min-width:0}.payroll-periods-grid .summary-box{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}.payroll-period-list{gap:var(--sp-4);grid-template-columns:minmax(260px,340px) 1fr;align-items:start;display:grid}.payroll-period-list>*{min-width:0}@media (width<=900px){.payroll-period-list{grid-template-columns:1fr}}.payslip-table .data-table td,.payslip-table .data-table th{white-space:nowrap;vertical-align:top}.payslip-table .data-table td.pay-work{white-space:normal;min-width:210px;max-width:300px;line-height:1.8}.payslip-table .data-table td:last-child{white-space:normal}.payslip-table .data-table td:last-child .header-actions{flex-wrap:wrap;min-width:190px;max-width:250px}.payslip-table .data-table td:last-child .crystal-btn{white-space:nowrap}.payslip-table .data-table td .form-grid,.payslip-table .data-table td .data-table-wrap{white-space:normal}.pay-plus{color:var(--green-txt)}.pay-minus{color:var(--red-txt)}.catalog-import-summary{margin:0;padding-inline-start:20px;line-height:2}.treasury-cards{gap:var(--sp-3);margin-top:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.treasury-card{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);gap:8px;padding:14px;display:grid}.treasury-card.inactive{opacity:.55}.treasury-card-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.treasury-code{color:var(--muted);font-family:monospace;font-size:var(--fs-sm)}.treasury-meta{font-size:var(--fs-sm);flex-wrap:wrap;gap:4px 12px;display:flex}.treasury-balance{font-size:1.35rem;font-weight:var(--fw-bold);color:var(--green-txt,#16803b)}.treasury-balance.neg{color:var(--red,#d92d20)}.treasury-balance small{font-size:var(--fs-sm);color:var(--muted);font-weight:400}.treasury-search-select{gap:6px;display:grid}.treasury-row-actions{white-space:normal;flex-wrap:wrap;gap:4px;min-width:180px;display:flex}.treasury-status-tabs{flex-wrap:wrap}.form-grid .span-2{grid-column:1/-1}tr.row-selected td{background:var(--brand-50)}tr.row-muted td{color:var(--muted)}tr.row-total td{font-weight:var(--fw-bold);border-top:2px solid var(--line)}.text-red{color:var(--red,#d92d20)}.loan-progress{background:var(--line);border-radius:99px;height:6px;overflow:hidden}.loan-progress span{background:var(--green-txt,#16803b);border-radius:99px;height:100%;display:block}.doc-cheque{gap:6px;min-width:220px;display:grid}.nowrap{white-space:nowrap}tr.row-group-start td{border-top:2px solid var(--line)}.alert.warning{color:#7a4d00;border-radius:var(--r-md);background:#fff8e6;border:1px solid #e9b949;gap:4px;padding:10px 12px;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;display:grid}.ss-trigger{text-align:right;cursor:pointer;min-width:160px;max-width:100%;font:inherit;justify-content:space-between;align-items:center;gap:8px;min-height:42px;display:flex}.field .ss-trigger,.form-grid .ss-trigger,td .ss-trigger,.treasury-search-select .ss-trigger{width:100%}.ss-trigger:disabled{cursor:not-allowed}.ss-trigger.is-open{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}.ss-value{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ss-placeholder{color:var(--muted)}.ss-caret{color:var(--muted);flex:none;font-size:12px}.ss-panel{z-index:10000;background:var(--surface);border:1px solid var(--gray-300);border-radius:var(--r-md);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 12px 32px #0f172a2e}.ss-search{width:auto;margin:8px}.ss-list{min-height:40px;padding:0 6px 6px;overflow-y:auto}.ss-option{cursor:pointer;border-radius:8px;padding:8px 10px;line-height:1.5}.ss-option.is-active{background:var(--brand-50)}.ss-option.is-selected{color:var(--brand);font-weight:700}.ss-option.is-disabled{opacity:.45;cursor:not-allowed}.ss-group{font-size:var(--fs-sm);color:var(--muted);border-top:1px solid var(--line);padding:8px 10px 4px;font-weight:700}.ss-group:first-child{border-top:0}.ss-empty{color:var(--muted);text-align:center;font-size:var(--fs-sm);padding:10px}.inline-field .ss-trigger{min-width:190px;min-height:0;padding:6px}.sl-table .ss-trigger{min-width:220px}.fsp-move .ss-trigger{max-width:65%;font-size:var(--fs-sm);flex:1;min-height:0;padding:5px 8px}.color-select .ss-trigger{flex:1;min-width:0}.oc-unit-pick .ss-trigger{min-width:230px}.oc-unit-line .ss-trigger,.ow-file-unit .ss-trigger{min-width:200px}.form-grid .oc-customer-row .ss-trigger{flex:1 1 0;width:auto;min-width:0}.ocal-pick .ss-trigger{min-width:96px;font-weight:600}.glass-card{border-radius:var(--r-xl);padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-xs);position:relative}.glass-card.interactive{transition:box-shadow .14s,border-color .14s}.glass-card.interactive:hover{box-shadow:var(--shadow-sm);border-color:var(--gray-300)}.glass-card h2{margin:0 0 var(--sp-3);font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:-.1px;color:var(--ink)}.crystal-btn{border:1px solid var(--gray-300);border-radius:var(--r-md);background:var(--surface);cursor:pointer;font-weight:var(--fw-semibold);font-size:var(--fs-base);color:var(--gray-700);padding:9px 15px;transition:background .12s,border-color .12s,transform 60ms;position:relative}.crystal-btn:hover{background:var(--gray-50);border-color:var(--gray-400)}.crystal-btn:active{transform:translateY(1px)}.crystal-btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.crystal-btn.primary:hover{background:var(--brand-600);border-color:var(--brand-600)}.crystal-btn.danger{background:var(--surface);border-color:var(--red);color:var(--red)}.crystal-btn.danger:hover{background:var(--red-50)}.crystal-btn.ghost{color:var(--gray-600);background:0 0;border-color:#0000}.crystal-btn.ghost:hover{background:var(--gray-100)}.crystal-btn.sm{font-size:var(--fs-xs);border-radius:var(--r-sm);padding:6px 10px}.crystal-btn.lg{font-size:var(--fs-md);border-radius:var(--r-lg);padding:12px 18px}.status-chip{font-size:var(--fs-xs);font-weight:var(--fw-semibold);background:var(--brand-50);color:var(--brand-600);white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.status-chip i{background:currentColor;border-radius:50%;width:6px;height:6px}.status-chip.green{background:var(--green-50);color:var(--green-txt)}.status-chip.orange{background:var(--orange-50);color:var(--orange-txt)}.status-chip.gray{background:var(--gray-chip-50);color:var(--gray-chip)}.status-chip.red{background:var(--red-50);color:var(--red-txt)}.status-chip.dark{background:var(--gray-900);color:#fff}.metric-pro{justify-content:space-between;gap:var(--sp-3);border-top:3px solid var(--brand);align-items:flex-start;min-height:112px;display:flex}.metric-label{color:var(--muted);font-weight:var(--fw-medium);font-size:var(--fs-sm);display:block}.metric-value{font-size:var(--fs-2xl);margin:var(--sp-2) 0 var(--sp-2);font-weight:var(--fw-bold);letter-spacing:-.3px;color:var(--ink);display:block}.metric-icon{border-radius:var(--r-md);background:var(--brand-50);place-items:center;width:44px;height:44px;font-size:20px;display:grid}.data-table-wrap{border-radius:var(--r-lg);border:1px solid var(--line);overflow:auto}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{text-align:right;border-bottom:1px solid var(--hair);font-size:var(--fs-base);padding:11px 12px}.data-table th{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--muted);background:var(--gray-50)}.data-table tr:last-child td{border-bottom:none}.section-header{justify-content:space-between;align-items:flex-start;gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.section-header h2{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--ink);margin:0}.section-header p{color:var(--muted);font-size:var(--fs-sm);margin:4px 0 0}.field{font-weight:var(--fw-semibold);font-size:var(--fs-base);gap:6px;display:grid}.field span{color:var(--gray-700)}.input-pro{border:1px solid var(--gray-300);border-radius:var(--r-md);background:var(--surface);min-width:0;font-size:var(--fs-base);color:var(--ink);outline:none;padding:10px 11px}.input-pro:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}input[type=file]{font-size:var(--fs-sm);color:var(--muted)}input[type=file]::file-selector-button{border:1px solid var(--gray-300);border-radius:var(--r-sm);background:var(--surface);color:var(--gray-700);font-weight:var(--fw-semibold);font-size:var(--fs-sm);cursor:pointer;margin-inline-end:10px;padding:7px 13px;transition:background .12s,border-color .12s}input[type=file]::file-selector-button:hover{background:var(--gray-50);border-color:var(--gray-400)}.nav button{align-items:center;gap:var(--sp-2);display:flex}.nav-icon{border-radius:var(--r-sm);background:#ffffff12;place-items:center;width:26px;height:26px;font-size:14px;display:grid}.side-separator{height:1px;margin:var(--sp-4) 2px;background:#ffffff14}.page-header{padding:2px 4px}.page-header h1{font-size:var(--fs-2xl)}.metric-card{min-height:112px}.metric-grid .glass-card{background:var(--surface)}.metric-grid .glass-card:first-child{border-top-color:var(--brand)}.metric-grid .glass-card:nth-child(2){border-top-color:var(--orange)}.metric-grid .glass-card:nth-child(3){border-top-color:var(--green)}.metric-grid .glass-card:nth-child(4){border-top-color:var(--gray-500)}.card{border-radius:var(--r)}.btn{border-radius:var(--r-md)}.chip{border-radius:999px}.table{border-radius:var(--r-lg);overflow:hidden}.production-line,.batch-card,.task-card,.item-card,.product-row,.param,.bom-row{box-shadow:none}.login-shell{background:radial-gradient(circle at 12% 8%,var(--brand-50),transparent 42%),radial-gradient(circle at 88% 92%,#eef2f7,transparent 40%),var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid;position:relative;overflow:hidden}.login-bg-orb{display:none}.login-card{width:min(440px,96vw);padding:var(--sp-6);border-radius:var(--r-xl)}.login-brand{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5);display:flex}.login-brand h1{font-size:var(--fs-xl);font-weight:var(--fw-bold);margin:0}.login-brand p{color:var(--muted);font-size:var(--fs-sm);margin:5px 0 0}.login-form{gap:var(--sp-3);display:grid}.demo-hint{border-radius:var(--r-md);background:var(--gray-50);border:1px solid var(--line);color:var(--gray-700);font-size:var(--fs-sm);gap:4px;padding:11px 13px;display:grid}.demo-hint span{text-align:left;font-size:var(--fs-xs);direction:ltr}.top-auth-bar{z-index:10;align-items:center;gap:var(--sp-2);border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--gray-700);padding:7px 10px;display:flex;position:fixed;top:16px;left:22px}@media (width<=1150px){.metric-pro{min-height:96px}.metric-value{font-size:var(--fs-xl)}.metric-icon{width:38px;height:38px;font-size:17px}.top-auth-bar{justify-content:space-between;margin:10px 18px 0;position:relative;top:auto;left:auto}}.upload-panel{margin-top:var(--sp-3);border-radius:var(--r-lg);background:var(--gray-50);border:1px dashed var(--gray-300);gap:8px;padding:12px;display:grid}.upload-panel input[type=file]{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);padding:9px}.upload-panel small{color:var(--muted);font-weight:var(--fw-medium)}.file-analysis-list{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.file-analysis-card{border-radius:var(--r-lg);padding:var(--sp-3);background:var(--surface);border:1px solid var(--line)}.file-analysis-head{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.file-analysis-head b{display:block}.file-analysis-head small{color:var(--muted);font-size:var(--fs-xs);margin-top:3px;display:block}.file-icon-pro{border-radius:var(--r-md);background:var(--brand);color:#fff;width:42px;height:42px;font-weight:var(--fw-bold);place-items:center;display:grid}.file-analysis-head .status-chip{margin-right:auto}.analysis-metrics{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.analysis-metrics div{border-radius:var(--r-md);background:var(--gray-50);border:1px solid var(--line);padding:9px}.analysis-metrics span{color:var(--muted);font-size:11px;display:block}.analysis-metrics b{font-size:var(--fs-sm);margin-top:3px;display:block}.warning-list{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.warning-list span{background:var(--orange-50);color:var(--orange-txt);font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:999px;padding:5px 9px}.empty-panel{border-radius:var(--r-lg);background:var(--gray-50);border:1px dashed var(--gray-300);color:var(--muted);font-weight:var(--fw-medium);text-align:center;font-size:var(--fs-sm);padding:18px}@media (width<=1150px){.file-analysis-list{grid-template-columns:1fr}.analysis-metrics{grid-template-columns:repeat(2,1fr)}}.inline-field{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--gray-700);align-items:center;gap:8px;display:flex}.inline-field input{border:1px solid var(--gray-300);border-radius:var(--r-sm);background:var(--surface);width:72px;padding:6px}.inline-field select{border:1px solid var(--gray-300);border-radius:var(--r-sm);background:var(--surface);min-width:190px;padding:6px}.nesting-preview-grid{gap:var(--sp-4);grid-template-columns:1fr 320px;align-items:start;display:grid}.nesting-legend{border-radius:var(--r-lg);padding:var(--sp-3);background:var(--gray-50);border:1px solid var(--line);min-height:360px}.nesting-legend h3{font-size:var(--fs-md);margin:0 0 10px}.legend-order{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);align-items:center;gap:10px;margin-bottom:8px;padding:9px;display:flex}.legend-order i{border:2px solid var(--brand);border-radius:6px;width:20px;height:20px}.legend-order b{font-size:var(--fs-sm);display:block}.legend-order small{color:var(--muted);font-size:var(--fs-xs);margin-top:2px;display:block}.parts-code-list{gap:6px;max-height:180px;margin-top:14px;display:grid;overflow:auto}.parts-code-list code{text-align:left;background:var(--gray-100);direction:ltr;border-radius:6px;padding:6px 9px;font-size:11px}.dynamic-piece{text-align:center;padding:3px;font-size:10px;line-height:1.2}@media (width<=1150px){.nesting-preview-grid{grid-template-columns:1fr}.nesting-legend{min-height:auto}}.detail-tabs{flex-wrap:wrap;gap:6px;display:flex}.detail-tabs button{border:1px solid var(--gray-300);border-radius:var(--r-md);background:var(--surface);font-weight:var(--fw-semibold);color:var(--gray-700);font-size:var(--fs-base);padding:9px 13px}.detail-tabs button.active{background:var(--brand);color:#fff;border-color:var(--brand)}.order-detail-block{border-radius:var(--r-lg);padding:var(--sp-3);background:var(--surface);border:1px solid var(--line);margin-bottom:var(--sp-3)}.true-shape-sheet-svg{width:100%;height:100%;display:block}.order-timeline{gap:var(--sp-3);display:grid;position:relative}.timeline-event{gap:var(--sp-3);grid-template-columns:44px 1fr;align-items:start;display:grid}.timeline-icon{border-radius:var(--r-md);width:38px;height:38px;font-size:17px;font-weight:var(--fw-bold);border:1px solid #0000;place-items:center;display:grid}.timeline-icon.blue{background:var(--brand-50);color:var(--brand-600)}.timeline-icon.green{background:var(--green-50);color:var(--green-txt)}.timeline-icon.orange{background:var(--orange-50);color:var(--orange-txt)}.timeline-icon.red{background:var(--red-50);color:var(--red-txt)}.timeline-icon.gray{background:var(--gray-100);color:var(--gray-600)}.timeline-body{border-radius:var(--r-lg);padding:var(--sp-3);background:var(--surface);border:1px solid var(--line)}.timeline-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.timeline-head b{font-size:var(--fs-md)}.timeline-body p{color:var(--muted);font-size:var(--fs-base);margin:6px 0 10px}.timeline-meta{color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-medium);flex-wrap:wrap;gap:10px;display:flex}.timeline-body details{margin-top:10px}.timeline-body summary{cursor:pointer;font-weight:var(--fw-semibold);color:var(--brand)}.timeline-body code{text-align:left;white-space:pre-wrap;background:var(--gray-100);border-radius:var(--r-sm);direction:ltr;margin-top:8px;padding:10px;font-size:11px;display:block}.filters-bar{margin-bottom:var(--sp-3);grid-template-columns:1fr 220px auto;align-items:center;gap:10px;display:grid}@media (width<=1150px){.filters-bar{grid-template-columns:1fr}}.finance-filter{grid-template-columns:1fr auto}.finance-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}@media (width<=1150px){.finance-actions,.finance-filter{grid-template-columns:1fr}}.production-filter{grid-template-columns:260px auto}.production-kanban{align-items:start}.production-lane{min-width:240px}.task-card-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.task-card{transition:border-color .12s}.task-card:hover{border-color:var(--gray-400)}.task-in_progress{border-color:var(--orange);background:var(--orange-50)}.task-paused{border-color:var(--red);background:var(--red-50)}.task-completed{border-color:var(--green);background:var(--green-50)}@media (width<=1150px){.production-filter{grid-template-columns:1fr}}.machine-row{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);grid-template-columns:1fr auto auto;align-items:center;gap:10px;margin-bottom:8px;padding:11px;display:grid}.machine-row span{color:var(--muted);font-weight:var(--fw-medium);font-size:var(--fs-sm)}.machine-create-box{border-radius:var(--r-lg);background:var(--gray-50);border:1px dashed var(--gray-300);padding:12px}.machine-create-box b{margin-bottom:10px;display:block}.machine-efficiency-list{gap:10px;display:grid}.machine-efficiency-row{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);grid-template-columns:1fr 180px auto;align-items:center;gap:12px;padding:11px;display:grid}.machine-efficiency-row b{font-size:var(--fs-base);display:block}.machine-efficiency-row small{color:var(--muted);font-size:var(--fs-xs);margin-top:3px;display:block}.eff-bar{background:var(--gray-100);border-radius:999px;height:10px;overflow:hidden}.eff-bar i{background:var(--brand);border-radius:999px;height:100%;display:block}.machine-alert-box{gap:10px;display:grid}.machine-alert-box div{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);padding:12px}.machine-alert-box span{color:var(--muted);font-size:var(--fs-xs);display:block}.machine-alert-box b{font-size:var(--fs-lg);font-weight:var(--fw-bold);margin-top:4px;display:block}@media (width<=1150px){.machine-efficiency-row{grid-template-columns:1fr}.eff-bar{width:100%}}.cost-breakdown{gap:10px;display:grid}.cost-breakdown div{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);padding:11px}.cost-breakdown span{color:var(--muted);font-size:var(--fs-xs);display:block}.cost-breakdown b{font-size:var(--fs-lg);font-weight:var(--fw-bold);margin:5px 0 8px;display:block}.cost-breakdown i{background:var(--brand);border-radius:999px;height:8px;display:block}.status-breakdown-list{gap:8px;display:grid}.status-breakdown-list div{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);justify-content:space-between;align-items:center;padding:11px;display:flex}.status-breakdown-list span{font-weight:var(--fw-semibold);color:var(--gray-700);font-size:var(--fs-base)}.status-breakdown-list b{font-size:var(--fs-md);font-weight:var(--fw-bold)}.json-editor{text-align:left;border:1px solid var(--gray-300);border-radius:var(--r-lg);background:var(--surface);resize:vertical;width:100%;min-height:260px;font-family:Consolas,monospace;font-size:var(--fs-sm);direction:ltr;padding:14px}.json-editor:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50);outline:none}.settings-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.settings-json-preview{margin-top:14px}.settings-json-preview summary{cursor:pointer;font-weight:var(--fw-semibold);color:var(--brand);margin-bottom:8px}@media (width<=1150px){.settings-form-grid{grid-template-columns:1fr}}.health-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.health-actions div{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);padding:13px}.health-actions b{font-size:var(--fs-base);display:block}.health-actions span{color:var(--muted);line-height:1.8;font-size:var(--fs-sm);margin-top:5px;display:block}@media (width<=1150px){.health-actions{grid-template-columns:1fr}}.quality-report{gap:12px;display:grid}.quality-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.quality-head b{color:var(--muted);font-weight:var(--fw-medium);display:block}.quality-head strong{font-size:var(--fs-2xl);font-weight:var(--fw-bold);margin-top:4px;display:block}.quality-report p{color:var(--gray-700);line-height:1.9;font-size:var(--fs-base);margin:0}.quality-stats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.quality-stats div{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);padding:10px}.quality-stats span{color:var(--muted);font-size:var(--fs-xs);display:block}.quality-stats b{font-size:var(--fs-base);margin-top:4px;display:block}.quality-actions,.quality-issues{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);gap:8px;padding:12px;display:grid}.quality-actions span{color:var(--gray-700)}.quality-issues div{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.quality-issues small{color:var(--muted)}@media (width<=1150px){.quality-stats{grid-template-columns:repeat(2,1fr)}}.task-pending{opacity:.85;background:var(--gray-50);border-style:dashed}.task-deps{background:var(--orange-50);border-radius:var(--r-sm);font-size:var(--fs-xs);margin-top:6px;padding:5px 7px;display:block;color:var(--orange-txt)!important}.task-deps.free{background:var(--green-50);color:var(--green-txt)!important}.gantt-list{gap:10px;display:grid}.gantt-row{grid-template-columns:220px 1fr;align-items:center;gap:12px;display:grid}.gantt-label b{font-size:var(--fs-base);display:block}.gantt-label small{color:var(--muted);font-size:var(--fs-xs)}.gantt-track{border-radius:var(--r-md);background:var(--gray-100);border:1px solid var(--line);height:28px;position:relative;overflow:hidden}.gantt-bar{border-radius:var(--r-sm);color:#fff;height:22px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);background:var(--brand);justify-content:center;align-items:center;min-width:70px;display:flex;position:absolute;top:3px}.gantt-bar.completed{background:var(--green)}.gantt-bar.paused{background:var(--red)}.gantt-bar.pending{background:var(--gray-400)}.gantt-bar.ready{background:var(--cyan)}@media (width<=1150px){.gantt-row{grid-template-columns:1fr}.gantt-track{height:26px}}.work-days{border-radius:var(--r-lg);background:var(--gray-50);border:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:10px;display:grid}@media (width<=1150px){.work-days{grid-template-columns:repeat(2,1fr)}}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}.metric-card span,.section-header p,.timeline-meta,.machine-efficiency-row small,.file-analysis-head small{color:var(--muted-strong)}.nav-group{margin-bottom:2px}.nav-group-label{font-size:11px;font-weight:var(--fw-semibold);letter-spacing:.4px;color:#7c8ba6;text-transform:uppercase;padding:14px 13px 6px}.sidebar{flex-direction:column;display:flex;overflow:hidden}.sidebar .brand{flex:none}.nav-scroll{flex:auto;min-height:0;overflow-y:auto}.sidebar .side-separator,.sidebar .user-box{flex:none}.user-box{cursor:default}.user-box .user-meta{overflow:hidden}.user-box .user-meta b{white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:var(--fs-sm);display:block;overflow:hidden}.user-box .user-meta small{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.user-box .logout-btn{color:#fff;border-radius:var(--r-sm);font-weight:var(--fw-semibold);cursor:pointer;background:#ffffff14;border:1px solid #ffffff24;margin-right:auto;padding:7px 10px;font-size:11px}.user-box .logout-btn:hover{background:#ffffff29}.mobile-nav-toggle{z-index:30;border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface);width:44px;height:44px;box-shadow:var(--shadow-md);cursor:pointer;font-size:19px;display:none;position:fixed;top:14px;left:14px}.sidebar-backdrop{display:none}.toast-stack{z-index:80;flex-direction:column;gap:10px;max-width:min(360px,92vw);display:flex;position:fixed;bottom:20px;left:20px}.toast{border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-lg);border:1px solid var(--line);font-weight:var(--fw-medium);font-size:var(--fs-base);align-items:flex-start;gap:10px;padding:12px 14px;animation:.18s toast-in;display:flex}.toast-icon{border-radius:var(--r-sm);width:20px;min-width:20px;height:20px;font-weight:var(--fw-bold);color:#fff;place-items:center;font-size:11px;display:grid}.toast-message{color:var(--gray-800);flex:1;line-height:1.7}.toast-close{cursor:pointer;color:var(--muted);background:0 0;border:0;padding:2px;font-size:16px;line-height:1}.toast-success .toast-icon{background:var(--green)}.toast-error .toast-icon{background:var(--red)}.toast-info .toast-icon{background:var(--brand)}.toast-success{border-color:#15803d40}.toast-error{border-color:#c0311a40}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.confirm-overlay{z-index:90;background:#10182873;place-items:center;padding:20px;animation:.12s confirm-fade;display:grid;position:fixed;inset:0}.confirm-card{width:min(420px,100%);padding:var(--sp-5);border-radius:var(--r-xl)}.confirm-card h2{font-size:var(--fs-lg);margin:0 0 10px}.confirm-card p{color:var(--muted-strong);line-height:1.9;font-size:var(--fs-base);margin:0 0 18px}.confirm-actions{justify-content:flex-end;gap:10px;display:flex}@keyframes confirm-fade{0%{opacity:0}to{opacity:1}}.fp-root{flex-direction:column;gap:14px;display:flex}.fp-viewport{border-radius:var(--r-xl);border:1px solid var(--line);direction:ltr;background:repeating-conic-gradient(#f7f9fb 0% 25%,#eef1f5 0% 50%) 50%/22px 22px;width:100%;height:min(62vh,620px);position:relative;overflow:hidden}.fp-viewport-fullscreen{height:min(72vh,860px)}.fp-stage{transform-origin:0 0;cursor:grab;position:absolute;inset:0}.fp-stage:active{cursor:grabbing}.fp-stage.expandable{cursor:zoom-in}.fp-stage svg{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%}.fp-controls{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-md);align-items:center;gap:6px;padding:6px 8px;display:flex;position:absolute;bottom:14px;left:14px}.fp-controls button{background:var(--gray-100);color:var(--brand-600);font-weight:var(--fw-bold);border-radius:var(--r-sm);cursor:pointer;border:0;place-items:center;width:28px;height:28px;font-size:15px;display:grid}.fp-controls button:hover{background:var(--brand-50)}.fp-controls button:last-child{width:auto;padding:0 10px;font-size:12px}.fp-controls span{text-align:center;min-width:46px;font-weight:var(--fw-semibold);color:var(--gray-700);font-size:var(--fs-xs)}.fp-expand-hint{color:#fff;font-size:11px;font-weight:var(--fw-semibold);pointer-events:none;white-space:nowrap;opacity:0;background:#101828c7;border-radius:999px;padding:6px 12px;transition:opacity .15s;position:absolute;bottom:14px;right:14px}.fp-viewport:hover .fp-expand-hint{opacity:1}.fp-issue-list{flex-direction:column;gap:8px;display:flex}.fp-issue-list-head{align-items:center;gap:8px;display:flex}.fp-issue-list-head b{font-size:var(--fs-base)}.fp-issue-count{background:var(--brand-50);color:var(--brand-600);font-size:11px;font-weight:var(--fw-semibold);border-radius:999px;padding:2px 9px}.fp-issue-empty{color:var(--green-txt);font-weight:var(--fw-semibold);font-size:var(--fs-base);border-radius:var(--r-md);background:var(--green-50);padding:10px 12px}.fp-issue-item{text-align:right;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-md);cursor:pointer;align-items:flex-start;gap:10px;width:100%;padding:9px 12px;transition:background .12s,border-color .12s;display:flex}.fp-issue-item:hover{background:var(--gray-50)}.fp-issue-item.active{border-color:var(--brand);background:var(--brand-50)}.fp-issue-item:disabled{cursor:default;opacity:.7}.fp-issue-badge{color:#fff;min-width:20px;height:20px;font-weight:var(--fw-bold);border-radius:999px;flex-shrink:0;place-items:center;margin-top:1px;font-size:11px;display:grid}.fp-issue-text{font-size:var(--fs-base);color:var(--gray-700);line-height:1.8}.fp-fullscreen-overlay{z-index:92;background:#1018288c;place-items:center;padding:20px;animation:.12s confirm-fade;display:grid;position:fixed;inset:0}.fp-fullscreen-card{border-radius:var(--r-xl);flex-direction:column;gap:14px;width:min(1500px,97vw);max-height:95vh;padding:20px;display:flex;overflow:auto}.fp-fullscreen-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.fp-fullscreen-head b{font-size:var(--fs-md)}.fp-fullscreen-body{flex-direction:column;gap:14px;display:flex}.skeleton{border-radius:var(--r-sm);background:var(--gray-100);position:relative;overflow:hidden}.skeleton-text{border-radius:6px;height:13px}.skeleton-row td{padding:14px 12px}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffffb3,#0000);animation:1.5s infinite skeleton-shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes skeleton-shimmer{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.empty-state{text-align:center;color:var(--muted-strong);padding:22px 20px}.empty-state-icon{opacity:.6;margin-bottom:8px;font-size:26px}.empty-state b{font-size:var(--fs-base);color:var(--gray-700);font-weight:var(--fw-semibold);margin-bottom:4px;display:block}.empty-state p{max-width:360px;line-height:1.8;font-size:var(--fs-sm);margin:0 auto}.empty-state-action{margin-top:12px}.demo-data-banner{border-radius:var(--r-md);background:var(--orange-50);color:var(--orange-txt);font-weight:var(--fw-semibold);font-size:var(--fs-sm);margin-bottom:var(--sp-3);border:1px solid #b4530940;align-items:center;gap:10px;padding:10px 14px;display:flex}.demo-data-icon{font-size:14px}.chart-box{direction:ltr;width:100%}.chart-box .recharts-legend-item-text,.chart-box .recharts-cartesian-axis-tick-value{font-family:Vazirmatn,Tahoma,sans-serif!important}.chart-legend-rtl{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--gray-700);direction:rtl;flex-wrap:wrap;justify-content:center;gap:14px;margin-top:10px;display:flex}.chart-legend-rtl span{align-items:center;gap:6px;display:inline-flex}.chart-legend-rtl i{border-radius:3px;width:10px;height:10px;display:inline-block}.gantt-v2{gap:10px;display:grid}.gantt-v2-axis{color:var(--muted-strong);font-size:11px;font-weight:var(--fw-medium);grid-template-columns:220px 1fr;gap:12px;padding:0 0 6px;display:grid}.gantt-v2-axis-track{height:16px;position:relative}.gantt-v2-axis-tick{white-space:nowrap;position:absolute;top:0;transform:translate(50%)}.gantt-v2-row{grid-template-columns:220px 1fr;align-items:center;gap:12px;display:grid}.gantt-v2-track{border-radius:var(--r-md);background:var(--gray-100);border:1px solid var(--line);height:28px;position:relative;overflow:hidden}.gantt-v2-today{background:var(--red);z-index:2;width:2px;position:absolute;top:0;bottom:0}.gantt-v2-bar{border-radius:var(--r-sm);height:22px;font-size:11px;font-weight:var(--fw-semibold);color:#fff;white-space:nowrap;text-overflow:ellipsis;align-items:center;padding:0 8px;display:flex;position:absolute;top:3px;overflow:hidden}.gantt-v2-legend{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--muted-strong);flex-wrap:wrap;gap:14px;display:flex}.gantt-v2-legend span{align-items:center;gap:6px;display:inline-flex}.gantt-v2-legend i{border-radius:3px;width:10px;height:10px;display:inline-block}.data-table tr.row-selected td{background:var(--brand-50)}.row-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.low-stock-alert-card{border:1px solid #b453094d;border-top:3px solid var(--orange);background:var(--orange-50)}@media (width<=1150px){.app-shell{padding:14px 12px}.mobile-nav-toggle{place-items:center;min-width:44px;min-height:44px;display:grid}.sidebar{inset-inline-start:0;z-index:40;border-radius:0;width:min(300px,84vw);transition:transform .22s;top:0;bottom:0;transform:translate(110%);height:100vh!important;position:fixed!important}[dir=rtl] .sidebar{transform:translate(110%)}.sidebar.open{transform:translate(0)}.sidebar-backdrop{z-index:35;background:#10182873;display:block;position:fixed;inset:0}.main-content{padding-top:54px}}@media (width<=900px){.metric-grid{grid-template-columns:repeat(2,1fr)}.quality-stats,.health-actions,.analysis-metrics{grid-template-columns:repeat(2,1fr)!important}.gantt-v2-row,.gantt-v2-axis{grid-template-columns:1fr}}@media (width<=560px){.metric-grid,.batch-metrics,.summary-box,.finance-summary{grid-template-columns:1fr!important}.page-header h1{font-size:22px}.toast-stack{max-width:none;left:10px;right:10px}}.my-tasks-list{gap:14px;display:grid}.my-task-card{padding:18px}.my-task-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.my-task-actions .crystal-btn{flex:160px;min-height:52px;font-size:17px}.my-task-done-row{border-bottom:1px solid var(--hair);justify-content:space-between;align-items:center;padding:10px 0;display:flex}.my-task-done-row:last-child{border-bottom:none}@media (width<=560px){.my-task-actions{flex-direction:column}.my-task-actions .crystal-btn{width:100%;min-height:56px;font-size:18px}}.tracking-stepper{flex-direction:column;gap:0;margin-top:12px;display:flex}.tracking-step{align-items:center;gap:12px;padding:8px 0;display:flex;position:relative}.tracking-step:not(:last-child){border-right:2px solid var(--hair);margin-right:7px;padding-right:21px}.tracking-step-dot{background:var(--hair);border:2px solid var(--hair);z-index:1;border-radius:50%;flex:none;width:16px;height:16px;margin-right:-29px}.tracking-step.done .tracking-step-dot{background:var(--accent-green,#22c55e);border-color:var(--accent-green,#22c55e)}.tracking-step.current .tracking-step-dot{background:var(--accent-blue,#2563eb);border-color:var(--accent-blue,#2563eb);box-shadow:0 0 0 4px #2563eb26}.tracking-step-label{color:var(--text-muted,#64748b);font-size:14px}.tracking-step.done .tracking-step-label,.tracking-step.current .tracking-step-label{color:var(--text-main,#0f172a);font-weight:600}.progress-track{background:var(--hair);border-radius:999px;width:100%;height:10px;margin-top:6px;overflow:hidden}.progress-fill{background:var(--accent-blue,#2563eb);border-radius:999px;height:100%;transition:width .3s}.table-scroll{width:100%;overflow-x:auto}.permission-matrix-table{white-space:nowrap}.permission-matrix-table th,.permission-matrix-table td{text-align:center}.permission-matrix-table th:first-child,.permission-matrix-table td:first-child{text-align:right;background:var(--surface,#fff);position:sticky;right:0}.permission-matrix-row{cursor:pointer}.permission-matrix-row:hover{background:#2563eb0f}.permission-yes{color:var(--accent-green,#16a34a);font-weight:700}.permission-no{color:var(--text-muted,#94a3b8)}.permission-matrix-detail{white-space:normal;flex-direction:column;gap:10px;padding:10px 4px;display:flex}.permission-matrix-action{border-bottom:1px solid var(--hair);padding-bottom:8px}.permission-matrix-action:last-child{border-bottom:none;padding-bottom:0}.permission-matrix-paths{margin-top:4px;font-family:monospace;font-size:12px}.app-shell{grid-template-columns:264px minmax(0,1fr)}.main-content{min-width:0}@media (width<=1150px){.app-shell{grid-template-columns:minmax(0,1fr)}}.wizard-grid>*,.designer-grid>*,.dashboard-grid>*,.form-grid>*,.mini-form>*{min-width:0}.crystal-btn:disabled,.btn:disabled,button:disabled{opacity:.5;cursor:not-allowed;transform:none}.crystal-btn.primary:disabled{background:var(--gray-400);border-color:var(--gray-400);color:#fff}.crystal-btn:disabled:hover{background:inherit}.input-pro:disabled,select:disabled,input:disabled,textarea:disabled{background:var(--gray-100);color:var(--gray-500);cursor:not-allowed}.crystal-btn.is-busy{cursor:progress;position:relative}.crystal-btn.is-busy:after{content:"";vertical-align:-1px;border:2px solid;border-top-color:#0000;border-radius:50%;width:11px;height:11px;margin-inline-start:8px;animation:.7s linear infinite btn-spin;display:inline-block}@keyframes btn-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.crystal-btn.is-busy:after{animation:none}}.jalali-clear{border:1px solid var(--gray-300);background:var(--surface);color:var(--gray-600);border-radius:var(--r-sm);cursor:pointer;flex:none;width:32px;height:32px;font-size:16px;line-height:1}.jalali-clear:hover{background:var(--red-50);color:var(--red)}.jalali-date-input{flex-wrap:wrap}.jalali-date-input select{flex:70px;min-width:0}.input-pro.is-invalid,.input-pro[aria-invalid=true]{border-color:var(--red);box-shadow:0 0 0 3px var(--red-50)}.field-error{color:var(--red-txt);font-size:var(--fs-xs);font-weight:var(--fw-semibold);margin-top:2px;display:block}.load-error{justify-content:space-between;align-items:center;gap:var(--sp-3);border-radius:var(--r-md);background:var(--red-50);color:var(--red-txt);margin:var(--sp-3) 0;font-weight:var(--fw-semibold);border:1px solid #c0311a40;flex-wrap:wrap;padding:12px 14px;display:flex}.load-error small{font-weight:var(--fw-regular);color:var(--muted-strong);margin-top:2px;display:block}.login-notice{border-radius:var(--r-md);background:var(--orange-50);color:var(--orange-txt);font-weight:var(--fw-semibold);margin-bottom:var(--sp-3);border:1px solid #b4530940;padding:10px 12px}.table-scroll{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.table-scroll>.table{min-width:560px}@media (pointer:coarse){.crystal-btn.sm,.btn.mini{min-height:40px;padding:8px 14px}.crystal-btn{min-height:42px}.nav button{min-height:44px}.input-pro,.form-grid input,.form-grid select,.mini-form input,.mini-form select{min-height:42px}.logout-btn,.user-box .logout-btn{min-height:40px;padding:8px 12px}.toast-close{min-width:36px;min-height:36px}.jalali-clear{min-width:40px;min-height:40px}.template-tabs button{min-height:40px}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media print{.sidebar,.mobile-nav-toggle,.sidebar-backdrop,.toast-stack,.confirm-overlay,.page-header .header-actions,.no-print,.crystal-btn,.btn,button,.local-agent-banner{display:none!important}.app-shell{padding:0!important;display:block!important}.main-content{padding:0!important}body,html{background:#fff!important}.card,.glass-card{break-inside:avoid;box-shadow:none!important;border:1px solid #ccc!important}.table-scroll{overflow:visible!important}.print-only{display:block!important}}.print-only{display:none}.field-hint{color:var(--muted);font-size:var(--fs-xs,12px);line-height:1.6;font-weight:var(--fw-regular,400);margin-top:3px;display:block}.app-topbar{z-index:25;background:var(--bg);justify-content:flex-end;align-items:center;min-height:44px;margin:0 -2px 8px;padding:0 2px 6px;display:flex;position:sticky;top:0}@media (width<=1150px){.main-content{padding-top:0}.app-topbar{padding:14px 12px 6px;margin:-14px -12px 8px;padding-inline-end:68px}}.sev-icon{flex:none}.sev-icon.sev-info{fill:var(--brand)}.sev-icon.sev-success{fill:var(--green)}.sev-icon.sev-warning{fill:var(--orange)}.sev-icon.sev-critical{fill:var(--red)}.notif-sev-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);border:1px solid #0000;border-radius:999px;padding:1px 8px;line-height:1.7;display:inline-block}.notif-sev-label.sev-info{background:var(--brand-50);color:var(--brand-600);border-color:var(--brand-100)}.notif-sev-label.sev-success{background:var(--green-50);color:var(--green-txt);border-color:#15803d40}.notif-sev-label.sev-warning{background:var(--orange-50);color:var(--orange-txt);border-color:#b453094d}.notif-sev-label.sev-critical{background:var(--red-50);color:var(--red-txt);border-color:#c0311a4d}.notif-wrap{position:relative}.notif-bell{border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--gray-700);cursor:pointer;box-shadow:var(--shadow-xs);place-items:center;transition:background .12s,border-color .12s;display:grid;position:relative}.notif-bell:hover,.notif-bell.is-open{background:var(--gray-50);border-color:var(--gray-400)}.notif-badge{min-width:20px;height:20px;font-size:11px;font-weight:var(--fw-heavy);color:#fff;border:2px solid var(--bg);background:var(--brand);border-radius:999px;place-items:center;padding:0 5px;line-height:1;display:grid;position:absolute;top:-6px;right:-6px}.notif-badge.sev-success{background:var(--green)}.notif-badge.sev-warning{background:var(--orange)}.notif-badge.sev-critical{background:var(--red)}.notif-backdrop{display:none}.notif-panel{z-index:5;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);width:min(420px,100vw - 24px);max-height:min(72vh,600px);box-shadow:var(--shadow-lg);outline:none;flex-direction:column;display:flex;position:absolute;top:calc(100% + 6px);left:0;overflow:hidden}.notif-panel-head{justify-content:space-between;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--hair);display:flex}.notif-panel-head h2{font-size:var(--fs-md);align-items:center;gap:var(--sp-2);margin:0;display:flex}.notif-count-chip{font-size:var(--fs-xs);font-weight:var(--fw-bold);background:var(--brand-50);color:var(--brand-600);border-radius:999px;padding:1px 8px}.notif-head-actions{align-items:center;gap:var(--sp-1);display:flex}.notif-close{border-radius:var(--r-sm);width:36px;height:36px;color:var(--muted-strong);cursor:pointer;background:0 0;border:0;font-size:22px;line-height:1}.notif-close:hover{background:var(--gray-100)}.notif-toolbar{justify-content:space-between;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--hair);background:var(--gray-25);flex-wrap:wrap;display:flex}.notif-prefs{gap:var(--sp-3);flex-wrap:wrap;display:flex}.notif-body{overscroll-behavior:contain;flex:auto;min-height:120px;overflow-y:auto}.notif-body>.empty-state,.notif-body>.load-error{margin:var(--sp-4)}.notif-skeleton{gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);display:grid}.notif-list{margin:0;padding:0;list-style:none}.notif-list li{border-bottom:1px solid var(--hair)}.notif-list li:last-child{border-bottom:0}.notif-stale{justify-content:space-between;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--orange-50);color:var(--orange-txt);font-weight:var(--fw-semibold);font-size:var(--fs-sm);border-bottom:1px solid #b4530933;display:flex}.notif-more{padding:var(--sp-3);border-top:1px solid var(--hair);justify-content:center;display:flex}.notif-item{align-items:flex-start;gap:var(--sp-3);width:100%;min-height:44px;padding:var(--sp-3) var(--sp-4);border:0;text-align:start;cursor:pointer;font:inherit;color:var(--ink);background:0 0;border-inline-start:4px solid #0000;display:flex}.notif-item:hover{background:var(--gray-50)}.notif-item .sev-icon{margin-top:2px}.notif-item.is-unread{background:var(--brand-50);border-inline-start-color:var(--brand)}.notif-item.is-unread.sev-success{border-inline-start-color:var(--green)}.notif-item.is-unread.sev-warning{border-inline-start-color:var(--orange);background:var(--orange-50)}.notif-item.is-unread.sev-critical{border-inline-start-color:var(--red);background:var(--red-50)}.notif-item.is-unread:hover{filter:brightness(.98)}.notif-item-main{flex:auto;gap:3px;min-width:0;display:grid}.notif-item-meta{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.notif-time{font-size:var(--fs-xs);color:var(--muted-strong);white-space:nowrap;margin-inline-start:auto}.notif-unread-flag{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--gray-800);align-items:center;gap:4px;display:inline-flex}.notif-dot{background:var(--brand);border-radius:50%;width:8px;height:8px}.notif-item-title{font-weight:var(--fw-medium);overflow-wrap:anywhere;line-height:1.6}.notif-item.is-unread .notif-item-title{font-weight:var(--fw-bold)}.notif-item-body{color:var(--muted-strong);font-size:var(--fs-sm);overflow-wrap:anywhere;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.7;display:-webkit-box;overflow:hidden}.notif-switch{align-items:center;gap:var(--sp-2);min-height:36px;font:inherit;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--gray-700);cursor:pointer;background:0 0;border:0;padding:0 4px;display:inline-flex}.notif-switch b{font-weight:var(--fw-bold);font-size:var(--fs-xs);color:var(--muted-strong);min-width:36px}.notif-switch.is-on b{color:var(--green-txt)}.notif-switch-track{background:var(--gray-300);border-radius:999px;flex:none;width:34px;height:20px;transition:background .15s;position:relative}.notif-switch.is-on .notif-switch-track{background:var(--green)}.notif-switch-thumb{top:2px;background:#fff;border-radius:50%;width:16px;height:16px;transition:inset-inline-start .15s;position:absolute;inset-inline-start:2px;box-shadow:0 1px 2px #1018284d}.notif-switch.is-on .notif-switch-thumb{inset-inline-start:16px}.notif-toast-stack{z-index:85;gap:var(--sp-2);pointer-events:none;flex-direction:column;width:min(380px,100vw - 24px);display:flex;position:fixed;top:72px;left:20px}.notif-toast{pointer-events:auto;background:var(--surface);border:1px solid var(--line);border-inline-start:4px solid var(--brand);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);align-items:stretch;animation:.2s notif-toast-in;display:flex}.notif-toast.sev-success{border-inline-start-color:var(--green)}.notif-toast.sev-warning{border-inline-start-color:var(--orange)}.notif-toast.sev-critical{border-inline-start-color:var(--red)}.notif-toast-main{align-items:flex-start;gap:var(--sp-3);min-width:0;min-height:44px;padding:var(--sp-3);text-align:start;cursor:pointer;font:inherit;color:var(--ink);background:0 0;border:0;flex:auto;display:flex}.notif-toast-text{gap:3px;min-width:0;display:grid}.notif-toast-text b{overflow-wrap:anywhere;line-height:1.6}.notif-toast-body{color:var(--muted-strong);font-size:var(--fs-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.6;display:-webkit-box;overflow:hidden}.notif-toast-close{width:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:none;align-self:flex-start;min-height:36px;font-size:20px}@keyframes notif-toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.notif-toast{animation:none}.notif-switch-thumb,.notif-switch-track{transition:none}}.notif-dialog-overlay{z-index:88;padding:var(--sp-5);background:#10182873;place-items:center;animation:.12s confirm-fade;display:grid;position:fixed;inset:0}.notif-dialog{width:min(640px,100%);max-height:calc(100dvh - 40px);padding:var(--sp-5);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow:hidden}.notif-dialog-head{margin-bottom:var(--sp-3);flex:none;justify-content:space-between;align-items:center;display:flex}.notif-dialog-head h2{margin:0}.notif-dialog-form{gap:var(--sp-3);flex-direction:column;flex:auto;min-height:0;display:flex}.notif-dialog-fields{gap:var(--sp-3);min-height:0;padding:2px 2px 4px;display:grid;overflow-y:auto}.notif-dialog-form fieldset{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3);min-width:0;margin:0}.notif-dialog-form legend{padding:0 var(--sp-2);font-weight:var(--fw-semibold);font-size:var(--fs-base);color:var(--gray-700)}.notif-recipient-list{max-height:190px;margin-top:var(--sp-2);gap:var(--sp-2);border:1px solid var(--hair);border-radius:var(--r-md);padding:var(--sp-2);display:grid;overflow-y:auto}.notif-group{gap:2px;display:grid}.notif-group-head{border-bottom:1px dashed var(--hair);min-height:36px;padding:4px 2px}.notif-group-users{gap:2px var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));padding:2px 22px 4px;display:grid}.notif-group-users .check{min-height:36px;font-weight:var(--fw-regular)}.notif-textarea{resize:vertical;width:100%;min-height:110px;line-height:1.8}.notif-counter{color:var(--muted-strong);font-weight:var(--fw-semibold);justify-self:end}.notif-counter.is-over{color:var(--red-txt)}.notif-dialog-row{gap:var(--sp-3);grid-template-columns:minmax(0,1fr) auto;align-items:start;display:grid}.notif-severity{gap:var(--sp-4);flex-wrap:wrap;align-items:center;display:flex}.notif-problems{padding:var(--sp-2) var(--sp-4) var(--sp-2) var(--sp-3);border-radius:var(--r-md);background:var(--red-50);color:var(--red-txt);font-weight:var(--fw-semibold);font-size:var(--fs-sm);border:1px solid #c0311a40;margin:0;padding-inline-start:var(--sp-5)}.notif-dialog-actions{gap:var(--sp-2);padding-top:var(--sp-2);border-top:1px solid var(--hair);flex:none;justify-content:flex-end;display:flex}.input-pro[aria-invalid=true]{border-color:var(--red)}.notif-rules-bar{justify-content:space-between;align-items:center;gap:var(--sp-2);margin:var(--sp-3) 0;flex-wrap:wrap;display:flex}.notif-rules-bar-actions{gap:var(--sp-1);flex-wrap:wrap;display:inline-flex}.table-scroll>.notif-rules-table{min-width:720px}.notif-rules-table th,.notif-rules-table td{vertical-align:middle}.notif-rules-table thead th{white-space:normal}.notif-rules-role-col,.notif-rules-switch-col{text-align:center!important}.notif-rules-event{z-index:1;background:var(--surface);min-width:190px;position:sticky;inset-inline-start:0;font-weight:var(--fw-semibold)!important;color:var(--ink)!important;font-size:var(--fs-base)!important}.notif-rules-table thead th:first-child{z-index:2;position:sticky;inset-inline-start:0}.notif-rules-label{align-items:center;gap:6px;line-height:1.6;display:flex}.notif-rules-event small{font-weight:var(--fw-regular);margin-top:2px;display:block}.notif-rules-table tr.is-changed td,.notif-rules-table tr.is-changed th.notif-rules-event{background:var(--orange-50)}.notif-rules-table tr.is-off .notif-rules-label{opacity:.6}.notif-rules-cell{text-align:center}.notif-rules-cell.is-custom{position:relative;box-shadow:inset 0 0 0 1px #b4530980}.notif-rules-cell.is-custom:after{content:"*";top:2px;color:var(--orange-txt);font-weight:var(--fw-heavy);position:absolute;inset-inline-end:6px}.notif-rules-check{width:20px;height:20px;accent-color:var(--brand);cursor:pointer}.notif-rules-check:disabled{cursor:not-allowed}.notif-rules-explicit{line-height:1.8;font-size:var(--fs-sm)!important}.notif-rules-note{margin:var(--sp-3) 0 0;font-size:var(--fs-sm)}@media (pointer:coarse){.notif-rules-check{width:26px;height:26px}.notif-switch{min-height:44px}.notif-close,.notif-toast-close{min-width:44px;min-height:44px}.notif-group-users .check{min-height:44px}}@media (width<=560px){.notif-backdrop{z-index:1;background:#10182873;display:block;position:fixed;inset:0}.notif-panel{z-index:2;width:auto;max-height:calc(100dvh - 76px);position:fixed;top:68px;left:8px;right:8px}.notif-toast-stack{width:auto;top:68px;left:8px;right:8px}.notif-dialog-overlay{place-items:stretch stretch;padding:0}.notif-dialog{width:100%;height:100dvh;max-height:none;padding:var(--sp-4);border-radius:0}.notif-dialog-row{grid-template-columns:1fr}.notif-rules-event{min-width:148px}.table-scroll>.notif-rules-table{min-width:640px}.notif-dialog-actions .crystal-btn{flex:1 1 0}}@media print{.app-topbar,.notif-toast-stack,.notif-dialog-overlay{display:none!important}}.notif-attention{z-index:1200;border-radius:var(--r-lg,16px);background:var(--surface,#fff);border:2px solid var(--green,#16a34a);grid-template-columns:auto 1fr;align-items:center;gap:10px 14px;width:min(560px,100vw - 32px);padding:16px 18px;animation:.55s cubic-bezier(.2,1.4,.4,1) both notif-attn-in,4s ease-in-out .9s infinite notif-attn-shake,1.6s ease-in-out infinite notif-attn-glow;display:grid;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 18px 50px #0f172a47}.notif-attention-icon{background:var(--green,#16a34a);color:#fff;border-radius:50%;place-items:center;width:46px;height:46px;font-size:24px;font-weight:700;animation:1.6s ease-in-out infinite notif-attn-pop;display:grid}.notif-attention-text{flex-direction:column;gap:3px;min-width:0;display:flex}.notif-attention-text b{font-size:var(--fs-md,16px);line-height:1.5}.notif-attention-text span{white-space:pre-line;font-size:var(--fs-sm);color:var(--gray-700)}.notif-attention-text small{color:var(--muted-strong);font-size:var(--fs-xs)}.notif-attention-actions{flex-wrap:wrap;grid-column:1/-1;justify-content:flex-end;gap:8px;display:flex}@keyframes notif-attn-in{0%{opacity:0;transform:translate(-50%,-120%)scale(.9)}to{opacity:1;transform:translate(-50%)scale(1)}}@keyframes notif-attn-shake{0%,82%,to{transform:translate(-50%)rotate(0)}85%{transform:translate(calc(-50% - 8px))rotate(-1.5deg)}88%{transform:translate(calc(8px - 50%))rotate(1.5deg)}91%{transform:translate(calc(-50% - 6px))rotate(-1deg)}94%{transform:translate(calc(4px - 50%))rotate(.5deg)}97%{transform:translate(-50%)rotate(0)}}@keyframes notif-attn-glow{0%,to{box-shadow:0 18px 50px #0f172a47,0 0 #16a34a73}50%{box-shadow:0 18px 50px #0f172a47,0 0 0 12px #16a34a00}}@keyframes notif-attn-pop{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.notif-bell.is-ringing{border-color:var(--green,#16a34a);color:var(--green,#16a34a);transform-origin:50% 4px;animation:1.2s ease-in-out infinite notif-bell-ring}@keyframes notif-bell-ring{0%,60%,to{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-12deg)}30%{transform:rotate(9deg)}40%{transform:rotate(-6deg)}50%{transform:rotate(3deg)}}@media (prefers-reduced-motion:reduce){.notif-attention{animation:2.4s ease-in-out infinite notif-attn-glow}.notif-attention-icon,.notif-bell.is-ringing{animation:none}}@media (width<=520px){.notif-attention{padding:12px;top:8px}.notif-attention-actions>*{flex:auto}}
