@font-face{font-family:StudioUI;font-weight:400;src:url(../fonts/IBMPlexSansArabic-400.ttf);font-display:swap}@font-face{font-family:StudioUI;font-weight:500;src:url(../fonts/IBMPlexSansArabic-500.ttf);font-display:swap}@font-face{font-family:StudioUI;font-weight:700;src:url(../fonts/IBMPlexSansArabic-700.ttf);font-display:swap}:root{color-scheme:light;--sand:#e8d3ac;--beige:#d6ba8c;--taupe:#a38d70;--espresso:#2a241d;--page:#f5f2ec;--surface:#fff;--field:#fff;--tint:#f1ece2;--soft:#f3e9d6;--ink:#211d18;--muted:#6b6358;--accent-text:#80623a;--accent:#8c6d3f;--line:#e4ded3;--line-strong:#c9c0b1;--ring:#8c6d3f38;--primary:#2a241d;--primary-hover:#40372c;--on-primary:#f9f5ec;--stage:radial-gradient(120% 90% at 50% 35%, #3a3228, #231e18);--good:#2f6b4a;--warn:#80622f;--bad:#a0392a;--bad-soft:#f9e8e3;--warn-soft:#f6eedd;--shadow-card:0 1px 2px #211d180d;--ease:cubic-bezier(.2,.7,.3,1);--r-card:14px;--r-ctl:10px}:root[data-theme=dark]{color-scheme:dark;--page:#171512;--surface:#211e19;--field:#1c1915;--tint:#2b2720;--soft:#3a3224;--ink:#f3eee4;--muted:#afa696;--accent-text:#dcc296;--accent:#d9be8e;--line:#342f28;--line-strong:#514a3f;--ring:#d9be8e38;--primary:#e8d3ac;--primary-hover:#f1e2c5;--on-primary:#211d18;--stage:radial-gradient(120% 90% at 50% 35%, #26211b, #100e0c);--good:#8fcba4;--warn:#dcc08c;--bad:#ec9c8a;--bad-soft:#43241d;--warn-soft:#3b321f;--shadow-card:0 1px 2px #0000004d}*{box-sizing:border-box}html,body{margin:0}body{background:var(--page);color:var(--ink);-webkit-font-smoothing:antialiased;font:400 15px/1.65 StudioUI,system-ui,sans-serif;overflow-x:hidden}h1{margin:0;font-size:26px;font-weight:700;line-height:1.3}h2{margin:0 0 12px;font-size:15.5px;font-weight:700}h3{margin:20px 0 4px;font-size:14px;font-weight:700}h4{margin:10px 0 2px;font-size:13px;font-weight:500}.lede{color:var(--muted);margin:2px 0 20px;font-size:14px}input,select,button{font:inherit;color:inherit}input,select{background:var(--field);border:1px solid var(--line);border-radius:var(--r-ctl);min-width:0;padding:8px 12px;transition:border-color .18s,box-shadow .18s,background-color .18s}input:hover,select:hover{border-color:var(--line-strong)}input:focus,select:focus{border-color:var(--taupe);box-shadow:0 0 0 4px var(--ring);background:var(--surface);outline:0}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--taupe);outline-offset:2px;border-radius:8px}input[aria-invalid=true]{border-color:var(--bad)}input[aria-invalid=true]:focus{box-shadow:0 0 0 4px #a0432f24}input[type=range],input[type=checkbox]{accent-color:var(--taupe)}#print-root{display:none}.app{flex-direction:column;min-height:100dvh;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:65px;padding:12px clamp(18px,3vw,32px);display:flex}.brand{color:inherit;flex-direction:column;gap:1px;line-height:1.3;text-decoration:none;display:flex}.brand-name{letter-spacing:.16em;text-align:right;font-size:15px;font-weight:700}.brand-name em{letter-spacing:.02em;color:var(--accent-text);margin-inline-start:2px;font-style:normal;font-weight:400}.brand-sub{color:var(--muted);font-size:12.5px}.topbar-end{gap:6px;display:flex}.icon-btn{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:50%;place-items:center;transition:background-color .18s,color .18s,border-color .18s;display:grid}.icon-btn:hover{background:var(--surface);border-color:var(--line);color:var(--ink)}main{flex:1;width:100%;max-width:1280px;margin-inline:auto;padding:clamp(18px,2.5vw,32px) clamp(16px,3vw,32px)}.loading{color:var(--muted);justify-content:center;align-items:center;gap:10px;padding:90px 0;display:flex}.load-failed{text-align:center;padding:70px 0}.load-failed h1{margin-bottom:8px}.spinner{border:2px solid var(--line-strong);border-top-color:currentColor;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}.spinner.small{vertical-align:-1px;width:12px;height:12px;margin-inline-end:6px}@keyframes spin{to{transform:rotate(360deg)}}.footer{background:var(--surface);border-top:1px solid var(--line);text-align:center;color:var(--muted);padding:13px 16px;font-size:12.5px}.footer a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--beige);text-underline-offset:4px;align-items:center;gap:4px;font-weight:500;transition:text-decoration-color .18s;display:inline-flex}.footer a:hover{text-decoration-color:currentColor}.rise{animation:rise .24s var(--ease) backwards}.rise-2{animation-delay:50ms}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.main-studio{max-width:none;padding:0;display:flex}.main-studio>div,.main-studio>.loading{width:100%}.studio{grid-template-columns:minmax(0,1fr) minmax(400px,46%);height:100%;min-height:100%;display:grid}.form-panel{justify-content:center;min-width:0;padding:clamp(24px,4vh,44px) clamp(20px,4vw,56px);display:flex}.form-inner{width:100%;max-width:500px}.fields{gap:15px;margin-bottom:24px;display:grid}.field label{justify-content:space-between;align-items:center;gap:10px;min-height:22px;margin-bottom:5px;font-size:14px;font-weight:500;transition:color .16s;display:flex}.field-state{color:var(--good);white-space:nowrap;font-variant-numeric:tabular-nums;align-items:center;gap:5px;font-size:11.5px;font-weight:400;display:inline-flex}.input-wrap{border-radius:var(--r-ctl);position:relative;overflow:hidden}.field input{width:100%;padding:11px 14px 12px;font-size:17px;display:block}.field input::placeholder{color:var(--muted);opacity:.65;font-size:15px}.meter{inset-inline:0;background:var(--accent);transform-origin:100%;height:2.5px;transition:transform .2s var(--ease), background-color .2s;pointer-events:none;position:absolute;bottom:0}.meter.warn{background:var(--warn)}.meter.bad{background:var(--bad)}.field-msg{margin:7px 0 0;font-size:13px;line-height:1.55;overflow:hidden}.field-msg.bad{color:var(--bad)}.field-msg.warn{color:var(--warn)}.main-actions{grid-template-columns:minmax(0,1.8fr) minmax(max-content,1fr);gap:10px;display:grid}.main-actions .btn{white-space:nowrap}.kbd-hint{color:var(--muted);text-align:center;margin:12px 0 0;font-size:12px}kbd{font:inherit;border:1px solid var(--line-strong);border-radius:4px;padding:0 5px;font-size:11px}.btn{border-radius:var(--r-ctl);border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-weight:500;transition:border-color .16s,color .16s,box-shadow .16s,background-color .16s,transform .12s;display:inline-flex}.btn svg{flex:none}.btn:hover:not(:disabled){border-color:var(--ink)}.btn:active:not(:disabled){transform:translateY(1px)scale(.995)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover);transform:translateY(-1px);box-shadow:0 8px 20px -10px #211d188c}.btn.primary:disabled{background:var(--tint);border-color:var(--line);color:var(--muted);opacity:1}.btn.quiet{color:var(--muted);border-color:var(--line);background:0 0}.btn.quiet:hover:not(:disabled){color:var(--ink);background:var(--tint);border-color:var(--line-strong)}.btn.ghost{background:0 0}.btn.big{min-height:52px;font-size:16px}.btn.small{padding:5px 12px;font-size:13px}.btn.danger,.link.danger{color:var(--bad)}.btn.done{color:var(--good);border-color:var(--good)}.link{cursor:pointer;color:inherit;text-decoration:underline;text-decoration-color:var(--beige);text-underline-offset:4px;background:0 0;border:0;padding:2px 0;font-size:13px;transition:text-decoration-color .16s}.link:hover:not(:disabled){text-decoration-color:currentColor}.link:disabled{opacity:.55;cursor:not-allowed}.preview-stage{background:var(--stage);color:#efe8da;border-radius:12px;padding:22px;display:flex;overflow:auto}.preview-stage svg{background:#fff;border-radius:2px;flex:none;margin:auto;display:block;box-shadow:0 2px 4px #00000040,0 22px 44px -14px #0009}.preview[data-mode=calibration] .preview-stage svg{box-shadow:none;background:0 0;overflow:visible}.preview-tools{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.tool-btn{border:1px solid var(--line-strong);cursor:pointer;background:0 0;border-radius:8px;padding:4px 11px;font-size:13px;transition:border-color .16s,background-color .16s}.tool-btn:hover{border-color:currentColor}.tool-btn[aria-pressed=true]{background:#e8d3ac29}.switch{cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:3px 0;font-size:13px;display:inline-flex}.switch i{background:var(--line-strong);border-radius:99px;flex:none;width:32px;height:18px;transition:background-color .18s;position:relative}.switch i:after{content:"";top:2px;width:14px;height:14px;transition:inset-inline-start .18s var(--ease);background:#fff;border-radius:50%;position:absolute;inset-inline-start:2px;box-shadow:0 1px 2px #0000004d}.switch[aria-checked=true] i{background:var(--accent)}.switch[aria-checked=true] i:after{inset-inline-start:16px}.stage-hint{color:var(--muted);text-align:center;margin:8px 2px 0;font-size:12px}.op-fade{animation:.15s ease-out op-fade}@keyframes op-fade{0%{opacity:.35}to{opacity:1}}.zone-active{fill:#8c6d3f1a;stroke:#8c6d3f;stroke-width:.35px;pointer-events:none}.zone-hit{cursor:text;transition:fill .14s}.zone-hit:hover{fill:#8c6d3f0d}.studio .preview-panel{background:var(--stage);color:#efe8da;--muted:#bdb3a1;--line-strong:#5c5345;--accent:#d9be8e;--good:#9ad3ae;--warn:#e6c98f;--bad:#f2a796;flex-direction:column;min-width:0;padding:18px clamp(16px,2.5vw,30px);display:flex}.studio .preview{flex-direction:column;flex:1;min-height:0;display:flex}.studio .preview-tools{justify-content:center;margin-bottom:4px}.studio .preview-stage{background:0 0;flex:1;padding:14px 0}.preview-simple .preview-stage svg{height:clamp(460px,100dvh - 300px,900px)}.preview-simple .preview-stage svg.big{height:clamp(760px,170dvh - 510px,1500px)}.studio .segmented{background:#ffffff14}.studio .segmented button{color:#cfc6b6}.studio .segmented button:hover:not(.on){color:#fff}.studio .segmented button.on{color:#211d18;box-shadow:none;background:#f5efe2}.status-bar{border-top:1px solid #ffffff1a;padding-top:12px}.status-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.status{align-items:center;gap:8px;font-size:13.5px;font-weight:500;display:inline-flex}.status i{background:currentColor;border-radius:50%;width:7px;height:7px}.status.idle{color:var(--muted)}.status.good{color:var(--good)}.status.warn{color:var(--warn)}.status.bad{color:var(--bad)}.calibration-note{color:var(--muted);margin:6px 0 0;font-size:12.5px;line-height:1.6}.calibration-note a{color:#f5efe2;text-decoration-color:var(--beige);text-underline-offset:4px;font-weight:500}.toasts{bottom:20px;z-index:30;gap:8px;max-width:min(380px,100vw - 40px);display:grid;position:fixed;inset-inline-start:20px}.toast{color:#f9f5ec;background:#2a241d;border-radius:12px;justify-content:space-between;align-items:center;gap:14px;padding:11px 16px;font-size:13.5px;display:flex;box-shadow:0 14px 30px -14px #0009}:root[data-theme=dark] .toast{color:#211d18;background:#f3eee4}.toast:before{content:"";background:var(--beige);border-radius:50%;flex:none;width:7px;height:7px}.toast span{flex:1}.toast.success:before{background:#9cc7a8}.toast.error:before{background:#e7a08d}.toast .link{color:var(--sand);font-weight:700;text-decoration-color:currentColor}:root[data-theme=dark] .toast .link{color:#211d18}.settings{grid-template-columns:190px minmax(0,1fr);align-items:start;gap:8px clamp(18px,3vw,36px);display:grid}.settings h1{grid-column:1/-1;margin-bottom:12px;font-size:22px}.tabs{gap:2px;display:grid;position:sticky;top:16px}.tabs a{isolation:isolate;color:var(--muted);white-space:nowrap;border-radius:9px;padding:8px 13px;font-size:14px;text-decoration:none;transition:color .16s,background-color .16s;position:relative}.tabs a:hover:not(.on){color:var(--ink);background:var(--tint)}.tabs a.on{color:var(--on-primary);font-weight:500}.tab-line{z-index:-1;background:var(--primary);border-radius:9px;position:absolute;inset:0}.split{grid-template-columns:minmax(0,1fr) minmax(300px,500px);align-items:start;gap:clamp(16px,2.4vw,28px);display:grid}.settings-col,.narrow{gap:16px;min-width:0;display:grid}.narrow{max-width:760px}.group{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);min-width:0;box-shadow:var(--shadow-card);padding:clamp(18px,2.2vw,26px)}.settings .preview-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-card);padding:16px;position:sticky;top:16px}.batch{gap:16px;display:grid}.batch-title{margin:0}.batch-title small{color:var(--muted);margin-inline-start:8px;font-size:13px;font-weight:400}.gate{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-card);color:var(--muted);justify-items:start;gap:10px;padding:24px;display:grid}.gate h2,.gate .hint{color:var(--ink);margin:0}.gate input{width:180px}.steps{margin:0 0 10px;padding-inline-start:20px;font-size:13.5px}.hint{color:var(--muted);margin:8px 0;font-size:13px}.hint.center{text-align:center;padding:40px 0}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.row.end{flex-wrap:wrap;justify-content:flex-end;margin-top:14px}.row.between{justify-content:space-between}.row input,.row select{flex:150px;min-width:130px}.font-pick{align-items:center;gap:10px;font-size:14px;font-weight:500;display:flex}.font-pick select{flex:1}.tpl-list{max-width:360px;margin:8px 0 0;padding:0;list-style:none}.tpl-list li{justify-content:space-between;padding:2px 0;display:flex}.issues{gap:6px;margin:10px 0;padding:0;font-size:13px;list-style:none;display:grid}.issues li{border-radius:var(--r-ctl);padding:8px 12px}.issues .error{background:var(--bad-soft);color:var(--bad);font-weight:500}.issues .warning{background:var(--warn-soft);color:var(--ink)}.segmented{background:var(--tint);border-radius:var(--r-ctl);gap:2px;padding:3px;display:inline-flex}.segmented button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:4px 11px;font-size:13px;transition:background-color .18s,color .18s}.segmented button:hover:not(.on){color:var(--ink)}.segmented button.on{background:var(--surface);color:var(--ink);font-weight:500;box-shadow:0 1px 2px #211d1824}.segmented.wide{margin-bottom:12px;display:flex}.segmented.wide button{flex:1;padding:8px}.zoom{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.zoom input{width:90px;padding:0}.settings .preview-stage{max-height:calc(100vh - 150px)}.tick{stroke:#d8cfbe;stroke-width:.12px}.tick-label{fill:#d8cfbe;direction:ltr;font:2px StudioUI,sans-serif}.zone-coord{fill:#8a7458;direction:ltr;font:1.5px ui-monospace,Menlo,monospace}.nudge{grid-template-columns:minmax(70px,1fr) auto 26px;align-items:center;gap:8px;max-width:480px;padding:3px 0;font-size:13px;display:grid}.nudge-ctl{display:flex}.nudge-ctl button{border:1px solid var(--line);background:var(--tint);cursor:pointer;width:28px;padding:4px 0;line-height:1.2;transition:background-color .14s}.nudge-ctl button:hover{background:var(--soft)}.nudge-ctl button:first-child{border-radius:8px 0 0 8px}.nudge-ctl button:last-child{border-radius:0 8px 8px 0}.nudge-ctl input{text-align:center;border-inline:0;border-radius:0;width:62px;padding:3px 2px}.nudge-unit{color:var(--muted);font-size:11px}.selects{grid-template-columns:1fr 1fr;gap:8px;max-width:480px;margin-top:8px;display:grid}.selects label{gap:2px;font-size:12.5px;display:grid}.zone-tabs{flex-wrap:wrap;gap:5px;margin-bottom:10px;display:flex}.zone-tabs button{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:99px;padding:3px 11px;font-size:12.5px;transition:border-color .14s,background-color .14s}.zone-tabs button:hover{border-color:var(--line-strong)}.zone-tabs button.on{background:var(--soft);border-color:var(--taupe)}.table-wrap{margin:10px 0;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:start;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;padding:6px 4px;font-size:12px;font-weight:500}td{border-bottom:1px solid var(--line);padding:3px 4px}tr:last-child td{border-bottom:0}td input:not([type=checkbox]){border-radius:8px;width:100%;min-width:120px;padding:4px 8px}tr{transition:background-color .14s}tr.focus{background:var(--soft)}.num{color:var(--muted);font-variant-numeric:tabular-nums}.actions{white-space:nowrap}.actions .link{margin-inline-end:8px}.empty{text-align:center;color:var(--muted);padding:28px}.badge{white-space:nowrap;background:var(--tint);border-radius:99px;padding:1px 9px;font-size:11px;font-weight:500}.badge.good{color:var(--good)}.badge.warn{color:var(--warn)}.badge.bad{color:var(--bad);background:var(--bad-soft)}.modal-back{z-index:20;background:#14110d80;justify-content:center;align-items:flex-start;padding:30px 14px;animation:.18s fade;display:flex;position:fixed;inset:0;overflow:auto}@keyframes fade{0%{opacity:0}}.modal{background:var(--surface);width:min(560px,100%);animation:rise .2s var(--ease);border-radius:18px;padding:24px;box-shadow:0 24px 60px -20px #14110d80}.modal h2{margin:0 0 14px;font-size:18px}.print-note{background:var(--tint);border-radius:var(--r-ctl);margin:10px 0;padding:11px 13px;font-size:13px}.print-note ul{margin:4px 0 0;padding-inline-start:18px}.pick-next{color:var(--accent-text);margin:8px 0;font-weight:500}.pick-wrap{max-width:100%;display:inline-block;position:relative}.pick-wrap img{cursor:crosshair;max-width:100%;max-height:60vh;display:block}.pick-dot{color:#f9f5ec;pointer-events:none;background:#2a241d;border-radius:50%;place-items:center;width:20px;height:20px;margin:-10px;font-size:11px;display:grid;position:absolute}.guide table{max-width:100%}.plain td,.plain th{padding:7px}td input.mm{text-align:center;-moz-appearance:textfield;appearance:textfield;width:100%;min-width:54px;max-width:90px;padding:4px 0;font-size:13px}td input.mm::-webkit-inner-spin-button,td input.mm::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ref-table td:last-child{text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}@media (width<=1040px){.split{grid-template-columns:1fr}.settings .preview-panel{position:static}}@media (width<=900px){.studio{grid-template-columns:minmax(0,1fr) minmax(320px,44%)}.settings{grid-template-columns:1fr}.tabs{scrollbar-width:none;gap:4px;margin-bottom:8px;display:flex;position:static;overflow-x:auto}}@media (width<=680px){.studio{grid-template-columns:1fr}.preview-simple .preview-stage svg{height:560px}.preview-simple .preview-stage svg.big{height:900px}.main-actions{inset-inline:0;z-index:10;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line);margin:0;position:fixed;bottom:0}.fields{margin-bottom:0}.kbd-hint{display:none}.app{padding-bottom:74px}.toasts{bottom:84px;inset-inline-start:16px}.field input{font-size:16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}}@media print{html,body{background:0 0!important;margin:0!important;padding:0!important}#root{display:none!important}#print-root{display:block!important}.print-page{break-after:page;break-inside:avoid;display:block}.print-page:last-child{break-after:auto}}
