/* CutPrime 1.0 — "Night shift laser"
   Midnight base, glass panels, and the heat of the beam as the only colour:
   amber -> rose -> violet. Steel is brushed, cut parts are bright and glow. */
:root{
  --night-0:#070a17;
  --night-1:#0c1124;
  --night-2:#121935;
  --glass:rgba(255,255,255,.045);
  --glass-2:rgba(255,255,255,.075);
  --stroke:rgba(255,255,255,.09);
  --stroke-2:rgba(255,255,255,.16);
  --text:#eef1ff;
  --text-2:#b9c0e0;
  --muted:#8189ad;
  --amber:#ffb03b;
  --rose:#ec4899;
  --violet:#7c3aed;
  --cyan:#5eead4;
  --danger:#ff6b81;
  --ok:#4ade80;
  --heat:linear-gradient(120deg,#ffb03b 0%,#f97362 28%,#ec4899 58%,#7c3aed 100%);
  --heat-soft:linear-gradient(120deg,rgba(255,176,59,.18),rgba(236,72,153,.18) 55%,rgba(124,58,237,.2));
  --steel:linear-gradient(160deg,#3a4566 0%,#2a3352 45%,#323d5e 100%);
  --r-s:8px;--r-m:14px;--r-l:20px;
  --font:"Segoe UI Variable Text","Segoe UI","Inter",system-ui,sans-serif;
  --display:"Bahnschrift","Segoe UI Variable Display","DIN Alternate","Barlow",system-ui,sans-serif;
  --shadow:0 18px 50px rgba(3,5,15,.55);
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;color:var(--text);font:400 14px/1.5 var(--font);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;
  background:
    radial-gradient(900px 520px at 8% -10%,rgba(124,58,237,.30),transparent 60%),
    radial-gradient(800px 520px at 100% 0%,rgba(236,72,153,.18),transparent 60%),
    radial-gradient(900px 700px at 60% 120%,rgba(255,176,59,.12),transparent 60%),
    var(--night-0);
  background-attachment:fixed;overflow:hidden}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.42}
:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
[hidden]{display:none!important}
h1,h2,h3,p{margin:0}
a{color:#ffc56b}
::selection{background:rgba(236,72,153,.45)}
*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}

/* ---------- buttons ---------- */
.btn{position:relative;border:1px solid transparent;border-radius:999px;padding:8px 16px;background:none;font-weight:600;letter-spacing:.01em;white-space:nowrap;transition:transform .15s,box-shadow .2s,background .2s,border-color .2s}
.btn.primary{background:var(--heat);color:#fff;box-shadow:0 10px 30px -8px rgba(236,72,153,.65),inset 0 1px 0 rgba(255,255,255,.35)}
.btn.primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 14px 36px -8px rgba(236,72,153,.85),inset 0 1px 0 rgba(255,255,255,.4)}
.btn.primary:disabled{background:linear-gradient(120deg,#3b4161,#2d3352);box-shadow:none}
.btn.primary.big{width:100%;padding:14px 18px;font-size:16px;border-radius:var(--r-m)}
.btn.ghost{border-color:var(--stroke-2);background:var(--glass)}
.btn.ghost:hover:not(:disabled){background:var(--glass-2);border-color:rgba(255,255,255,.28)}
.btn.quiet{color:#ffc56b;border-radius:var(--r-s)}
.btn.quiet:hover:not(:disabled){background:rgba(255,176,59,.1)}

/* ---------- top bar ---------- */
.topbar{height:60px;display:flex;align-items:center;gap:18px;padding:0 18px;border-bottom:1px solid var(--stroke);background:linear-gradient(180deg,rgba(12,17,36,.85),rgba(12,17,36,.55));backdrop-filter:blur(14px)}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font:700 19px var(--display);letter-spacing:.02em}
.brand img{width:30px;height:30px;border-radius:8px;box-shadow:0 6px 18px -4px rgba(236,72,153,.6)}
.brand span{background:linear-gradient(90deg,#fff 30%,#ffd18a);-webkit-background-clip:text;background-clip:text;color:transparent}
.job{display:flex;align-items:baseline;gap:10px;min-width:0;padding-left:18px;border-left:1px solid var(--stroke)}
.job-name{font:600 15px var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:32vw}
.job-meta{color:var(--muted);font-size:13px;white-space:nowrap}
.top-actions{margin-left:auto;display:flex;gap:8px;align-items:center}
.menu{position:relative}
.menu-list{position:absolute;right:0;top:calc(100% + 8px);z-index:40;min-width:310px;background:rgba(18,25,53,.96);backdrop-filter:blur(18px);border:1px solid var(--stroke-2);border-radius:var(--r-m);box-shadow:var(--shadow);padding:6px;display:grid}
.menu-list button{text-align:left;border:0;background:none;padding:10px 12px;border-radius:var(--r-s);color:var(--text)}
.menu-list button:hover:not(:disabled){background:var(--heat-soft)}
.update-bar{display:flex;align-items:center;gap:12px;padding:8px 18px;background:var(--heat-soft);border-bottom:1px solid rgba(236,72,153,.35);font-size:13.5px}
.update-bar b{background:var(--heat);-webkit-background-clip:text;background-clip:text;color:transparent}
.update-bar .btn{padding:5px 14px;font-size:13px}

/* ---------- station layout ---------- */
.station{height:calc(100vh - 60px);display:grid;grid-template-columns:304px minmax(0,1fr) 322px;gap:12px;padding:12px}
body.has-update .station{height:calc(100vh - 60px - 41px)}
.pane{background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025));border:1px solid var(--stroke);border-radius:var(--r-l);display:flex;flex-direction:column;min-height:0;backdrop-filter:blur(12px);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
.pane-head{padding:16px 16px 12px;display:grid;gap:10px;border-bottom:1px solid var(--stroke)}
.pane-head h2{font:600 17px var(--display);display:flex;align-items:baseline;gap:8px}
.count{font:600 12px var(--font);padding:1px 8px;border-radius:999px;background:var(--heat-soft);color:#ffd8a8}
.count:empty{display:none}
.pane-head input[type=search]{width:100%;height:36px;border:1px solid var(--stroke-2);border-radius:999px;padding:0 14px;background:rgba(5,8,20,.45);color:var(--text)}
.pane-head input[type=search]::placeholder{color:var(--muted)}
.pane-foot{padding:12px 16px;color:var(--muted);font-size:12px;border-top:1px solid var(--stroke)}

.seg{display:inline-flex;padding:3px;border-radius:999px;background:rgba(5,8,20,.5);border:1px solid var(--stroke)}
.seg button{border:0;background:none;padding:5px 12px;font-size:13px;color:var(--text-2);border-radius:999px;transition:background .2s,color .2s}
.seg button.on{background:var(--heat);color:#fff;box-shadow:0 4px 14px -4px rgba(236,72,153,.7)}
.seg.wide{display:flex}
.seg.wide button{flex:1}

/* ---------- parts list ---------- */
.part-list{list-style:none;margin:0;padding:8px;overflow:auto;flex:1}
.part-row{display:grid;grid-template-columns:66px minmax(0,1fr) auto;gap:10px;align-items:center;height:94px;padding:8px 10px;border-radius:var(--r-m);cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s}
.part-row:hover{background:var(--glass-2);border-color:var(--stroke)}
.part-row.active{background:var(--heat-soft);border-color:rgba(236,72,153,.4)}
.thumb{width:66px;height:60px;overflow:hidden;border-radius:10px;display:grid;place-items:center;padding:5px;background:var(--steel);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.thumb svg{width:100%;height:100%;overflow:hidden;display:block}
.thumb path{fill:var(--c,#e9edff);stroke:var(--cs,#ffc56b);fill-rule:evenodd;vector-effect:non-scaling-stroke;stroke-width:1}
.pr-main{display:contents}
.part-row{grid-template-rows:auto auto auto;row-gap:2px;align-content:center}
.part-row .thumb{grid-row:1/4}
.pr-name{grid-column:2/4}
.pr-meta{grid-column:2/4}
.pr-dims{grid-column:2;grid-row:3;align-self:center}
.part-row .qty{grid-column:3;grid-row:3}
.pr-name .tag{flex:none}
.pr-name{font-weight:600;display:flex;gap:6px;align-items:center;flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pr-name .nm{overflow:hidden;text-overflow:ellipsis;min-width:64px;flex:0 1 auto}
.pr-meta{font-size:12.5px;font-weight:600;color:#e8ecff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pr-meta .miss{color:#ffd18a}
.part-row .swatch{width:8px;height:8px;border-radius:50%;background:var(--c);flex:none}
.btn.wide{width:100%}
.ctx{position:fixed;z-index:90;min-width:230px;padding:6px;border-radius:12px;background:#151b3c;border:1px solid rgba(255,255,255,.16);box-shadow:0 18px 50px rgba(0,0,0,.55)}
.ctx button{display:block;width:100%;text-align:left;padding:9px 12px;border:0;border-radius:8px;background:none;color:var(--text);font:inherit}
.ctx button:hover{background:rgba(255,255,255,.09)}
.edit-dlg{border:1px solid rgba(255,255,255,.16);border-radius:16px;background:#121836;color:var(--text);padding:22px;width:min(420px,92vw)}
.edit-dlg::backdrop{background:rgba(3,5,14,.65)}
.edit-dlg h3{margin:0 0 4px}
.edit-dlg form{display:grid;gap:12px}
.edit-dlg label{display:grid;gap:5px;font-size:13px;color:#aab3d8}
.edit-dlg input{height:38px;border-radius:10px;border:1px solid rgba(255,255,255,.18);background:#0c1230;color:#fff;padding:0 12px;font:inherit}
.edit-dlg .row{display:flex;gap:10px;justify-content:flex-end;margin-top:4px}
.pr-dims{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tag{font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:rgba(255,255,255,.08);color:var(--text-2)}
.tag.repeat{background:rgba(124,58,237,.25);color:#d9c8ff}
.tag.bend{background:rgba(255,159,10,.18);color:#ffc46b}
.tag.warn{background:rgba(255,176,59,.18);color:#ffd18a}
.tag.danger{background:rgba(255,107,129,.2);color:#ffb3c0}
.qty{display:flex;align-items:center;border:1px solid var(--stroke-2);border-radius:999px;background:rgba(5,8,20,.5);overflow:hidden}
.qty button{border:0;background:none;width:26px;height:28px;color:var(--text-2);font-size:16px}
.qty button:hover{background:rgba(255,255,255,.08)}
.qty input{width:40px;height:28px;border:0;background:transparent;text-align:center;font-weight:600;-moz-appearance:textfield}
.qty input::-webkit-inner-spin-button{-webkit-appearance:none}

/* ---------- stage ---------- */
.stage{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column;border-radius:var(--r-l);border:1px solid var(--stroke);background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.015));overflow:hidden}
.status{padding:8px 18px 10px;min-height:32px;color:var(--muted);font-size:12.5px;border-top:1px solid var(--stroke)}
.status:empty{display:none}
.status.error{color:var(--danger);font-weight:600}

.empty-plate{flex:1;display:grid;place-items:center;align-content:center;gap:34px;padding:32px;outline:none;position:relative}
.empty-plate::before{content:"";position:absolute;inset:0;background:radial-gradient(520px 260px at 50% 38%,rgba(236,72,153,.16),transparent 70%);pointer-events:none}
.empty-plate.drag .plate-sheet{stroke:var(--amber);stroke-width:3;stroke-dasharray:10 8}
.plate-art{width:min(640px,92%);height:auto;filter:drop-shadow(0 30px 60px rgba(3,5,15,.6));position:relative}
.plate-sheet{fill:url(#plateSteel);stroke:rgba(255,255,255,.18);stroke-width:1.5}
.plate-kerf{fill:none;stroke:#fff;stroke-width:2.6;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 6px rgba(255,190,90,.9));animation:cut 5.2s cubic-bezier(.4,0,.3,1) .3s forwards}
.plate-spark{fill:#fff;filter:drop-shadow(0 0 4px #fff) drop-shadow(0 0 12px #ffb03b) drop-shadow(0 0 22px #ec4899)}
@keyframes cut{to{stroke-dashoffset:0}}
.empty-copy{max-width:560px;text-align:center;display:grid;gap:14px;justify-items:center;position:relative}
.empty-copy h1{font:700 44px/1.05 var(--display);letter-spacing:-.01em;background:linear-gradient(100deg,#fff 0%,#ffe1b0 35%,#ffb3d5 70%,#cdb7ff 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.empty-copy p{color:var(--text-2);font-size:15.5px}
.empty-actions{display:flex;gap:10px;margin-top:6px}
.empty-actions .btn{padding:11px 22px;font-size:15px}
.fine{color:var(--muted)!important;font-size:12.5px!important}

.workspace{flex:1;display:flex;flex-direction:column;min-height:0}
.stage-tabs{display:flex;gap:6px;padding:12px 16px 0;border-bottom:1px solid var(--stroke)}
.tab{border:0;background:none;padding:9px 14px;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .2s}
.tab:hover{color:var(--text-2)}
.tab.on{color:var(--text);border-image:var(--heat) 1;border-bottom:2px solid}
.badge{font-size:11px;background:rgba(255,255,255,.1);color:var(--text-2);border-radius:999px;padding:0 7px;margin-left:5px}
.badge.danger{background:rgba(255,107,129,.25);color:#ffc2cc}
.badge:empty{display:none}
.view{flex:1;overflow:auto;padding:18px 18px 40px;min-height:0}

/* results */
.figures{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0}
.fig{position:relative;padding:14px 16px;border-radius:var(--r-m);background:linear-gradient(160deg,rgba(255,255,255,.07),rgba(255,255,255,.025));border:1px solid var(--stroke);overflow:hidden}
.fig dt{color:var(--muted);font-size:12.5px}
.fig dd{margin:4px 0 0;font:700 28px/1.05 var(--display);color:#fff}
.fig dd small{font:500 13px var(--font);color:var(--muted);margin-left:4px}
.fig .sub{color:var(--muted);font-size:12px;margin-top:4px}
.fig.lead{background:linear-gradient(150deg,rgba(255,176,59,.22),rgba(236,72,153,.2) 55%,rgba(124,58,237,.25));border-color:rgba(236,72,153,.4)}
.fig.lead dd{font-size:34px;background:linear-gradient(100deg,#fff,#ffe0b0);-webkit-background-clip:text;background-clip:text;color:transparent}
.fig.lead::after{content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle,rgba(255,176,59,.45),transparent 70%)}
.verdict{margin:12px 0 0;padding:11px 14px;border-radius:var(--r-m);background:var(--heat-soft);border:1px solid rgba(236,72,153,.3);color:#ffe7f2;font-size:13.5px}

.board-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 12px}
.th-chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--stroke-2);background:var(--glass);border-radius:999px;padding:6px 14px;font-size:13px;color:var(--text-2)}
.chip:hover{border-color:rgba(255,255,255,.3)}
.chip.on{background:var(--heat);border-color:transparent;color:#fff;box-shadow:0 6px 18px -6px rgba(236,72,153,.8)}
.board-meta{margin-left:auto;color:var(--muted);font-size:13px}
.sheet-wrap{border-radius:var(--r-l);padding:16px;display:grid;gap:12px;background:radial-gradient(700px 300px at 50% 0%,rgba(124,58,237,.18),transparent 70%),rgba(5,8,20,.55);border:1px solid var(--stroke)}
.sheet-svg{width:100%;height:auto;max-height:60vh;display:block;filter:drop-shadow(0 20px 40px rgba(0,0,0,.5))}
.sheet-svg .bed{fill:url(#bedSteel);stroke:rgba(255,255,255,.22)}
.sheet-svg .margin-line{fill:none;stroke:rgba(255,255,255,.22);stroke-dasharray:6 6}
.sheet-svg .cut{fill:url(#cutMetal);stroke:#ffd08a;fill-rule:evenodd;vector-effect:non-scaling-stroke;stroke-width:1;cursor:pointer;transition:fill .15s}
.sheet-svg .cut:hover{fill:#fff;stroke:#ff7ab6;stroke-width:2}
.sheet-svg .cut.hl{fill:#ffe9c7;stroke:#ff4fa3;stroke-width:2.2}
.sheet-svg .remnant{fill:none;stroke:#5eead4;stroke-width:2.4;stroke-dasharray:12 8;vector-effect:non-scaling-stroke}
.sheet-svg.mini{max-height:none;filter:none}
.sheet-svg.mini .cut{stroke-width:.6;cursor:inherit}
.sheet-foot{display:flex;align-items:center;gap:12px;color:var(--text-2);font-size:13px;flex-wrap:wrap}
.util-pair{display:flex;gap:14px}
.util-pair b{font:700 15px var(--display);background:var(--heat);-webkit-background-clip:text;background-clip:text;color:transparent}
.sheet-nav{display:flex;align-items:center;gap:6px;margin-left:auto}
.sheet-nav button{width:32px;height:30px;border:1px solid var(--stroke-2);border-radius:999px;background:var(--glass)}
.thumbs{display:flex;gap:10px;overflow-x:auto;padding:4px 2px 4px}
.sheet-thumb{flex:0 0 auto;border:1px solid var(--stroke);background:rgba(255,255,255,.04);border-radius:var(--r-m);padding:6px;display:grid;gap:4px;justify-items:center;font-size:11.5px;color:var(--text-2)}
.sheet-thumb svg{width:104px;height:52px}
.sheet-thumb.on{border-color:transparent;background:var(--heat-soft);box-shadow:0 0 0 1.5px rgba(236,72,153,.8)}
.method-note{color:var(--muted);font-size:12.5px;margin-top:12px;max-width:95ch;line-height:1.6}

/* progress */
.progress-card{max-width:560px;margin:10vh auto 0;display:grid;gap:16px;text-align:center}
.progress-card h3{font:700 28px var(--display);background:linear-gradient(100deg,#fff,#ffd6a3 50%,#ffb3d5);-webkit-background-clip:text;background-clip:text;color:transparent}
.progress-card p{color:var(--text-2)}
.heat{height:10px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
.heat i{display:block;height:100%;width:0;background:var(--heat);background-size:200% 100%;border-radius:999px;transition:width .35s;box-shadow:0 0 18px rgba(236,72,153,.8);animation:flow 2.4s linear infinite}
@keyframes flow{from{background-position:0 0}to{background-position:200% 0}}
.heat-label{color:var(--muted);font-size:12.5px}
.alert{border:1px solid rgba(255,107,129,.4);background:rgba(255,107,129,.1);color:#ffd5dc;border-radius:var(--r-m);padding:14px 16px;max-width:640px}
.alert b{display:block;margin-bottom:4px;color:#fff}
.idle{max-width:580px;margin:9vh auto 0;color:var(--text-2);display:grid;gap:12px;text-align:center}
.idle h3{font:700 26px var(--display);color:#fff}

/* report */
.report{display:grid;gap:20px;max-width:920px}
.report h3{font:600 18px var(--display);margin-bottom:6px}
.issue{display:grid;grid-template-columns:24px 1fr;gap:10px;padding:9px 0;border-bottom:1px solid var(--stroke)}
.issue i{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:700;background:rgba(255,176,59,.2);color:#ffd18a}
.issue.danger i{background:rgba(255,107,129,.25);color:#ffb3c0}
.issue b{font-weight:600}
.file-line{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--stroke);font-size:13.5px}
.file-line span:last-child{color:var(--muted)}

/* ---------- settings ---------- */
#planForm{overflow:auto;flex:1;padding:4px 16px 0}
fieldset{border:0;border-bottom:1px solid var(--stroke);margin:0;padding:14px 0 16px;display:grid;gap:11px}
legend{font:600 15px var(--display);padding:0;margin-bottom:2px;float:left;width:100%;display:flex;align-items:center;gap:8px}
legend::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--heat);box-shadow:0 0 10px rgba(236,72,153,.8)}
legend+*{clear:both}
.field{display:grid;gap:5px;font-size:13px;color:var(--text-2);position:relative}
.field .unit{position:absolute;right:0;top:0;color:var(--muted);font-size:12px}
.field input,.field select{height:36px;border:1px solid var(--stroke-2);border-radius:var(--r-s);background:rgba(5,8,20,.5);padding:0 10px;color:var(--text);min-width:0;width:100%;transition:border-color .2s,box-shadow .2s}
.field select option{background:#121935;color:var(--text)}
.field input:focus,.field select:focus,.speed-row input:focus{border-color:rgba(236,72,153,.7);outline:none;box-shadow:0 0 0 3px rgba(236,72,153,.18)}
.field input::placeholder,.speed-row input::placeholder{color:#5d6589}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.check{display:flex;gap:9px;align-items:flex-start;font-size:13.5px;cursor:pointer}
.check input{margin:3px 0 0;accent-color:#ec4899;width:15px;height:15px}
.check small{display:block;color:var(--muted);font-size:12px}
.check.inline{align-items:center}
.check.inline input{margin:0}
.hint{color:var(--muted);font-size:12px}
.speed-table{display:grid;gap:5px}
.speed-row{display:grid;grid-template-columns:62px 1fr 70px;gap:8px;align-items:center;font-size:13px}
.speed-row b{font-weight:600}
.speed-row input{height:32px;border:1px solid var(--stroke-2);border-radius:var(--r-s);padding:0 8px;width:100%;background:rgba(5,8,20,.5);color:var(--text)}
.speed-row input.edited{border-color:rgba(255,176,59,.7);background:rgba(255,176,59,.08)}
.speed-row span{color:var(--muted);font-size:12px}
.run{padding:14px 16px 16px;border-top:1px solid var(--stroke);display:grid;gap:8px}

/* ---------- inspector ---------- */
.inspector{position:fixed;inset:0;z-index:60;background:rgba(3,5,15,.7);backdrop-filter:blur(6px);display:grid;place-items:center;padding:22px}
.insp-frame{width:min(1440px,100%);height:min(920px,100%);background:linear-gradient(180deg,#141b3a,#0d1228);border:1px solid var(--stroke-2);border-radius:22px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 40px 90px rgba(0,0,0,.6),0 0 0 1px rgba(236,72,153,.15)}
.insp-head{display:flex;align-items:center;gap:16px;padding:14px 18px;border-bottom:1px solid var(--stroke)}
.insp-head h2{font:700 22px var(--display);background:linear-gradient(100deg,#fff,#ffd6a3);-webkit-background-clip:text;background-clip:text;color:transparent}
.insp-head p{color:var(--muted);font-size:13px}
.insp-tools{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.insp-body{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 350px;min-height:0}
.insp-canvas{position:relative;min-height:0;overflow:hidden;
  background:
    linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px) 0 0/24px 24px,
    linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px) 0 0/24px 24px,
    radial-gradient(700px 400px at 50% 40%,rgba(124,58,237,.22),transparent 70%),
    #0a0f22}
#inspSvg{width:100%;height:100%;display:block;cursor:grab;touch-action:none}
#inspSvg.measuring{cursor:crosshair}
#inspSvg.dragging{cursor:grabbing}
#inspSvg .body{fill:url(#partMetal);stroke:#ffd08a;fill-rule:evenodd;stroke-width:1.4;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 10px rgba(255,176,59,.25))}
#inspSvg .hole-hit{fill:transparent;stroke:transparent;stroke-width:8;vector-effect:non-scaling-stroke;cursor:pointer}
#inspSvg .hole-hl{fill:rgba(236,72,153,.25);stroke:#ff6fb5;stroke-width:2.2;vector-effect:non-scaling-stroke}
#inspSvg .dim{stroke:#9aa3cc;stroke-width:1;vector-effect:non-scaling-stroke;fill:none}
#inspSvg .dim-text{fill:#dfe4ff;font-family:var(--display);paint-order:stroke;stroke:#0a0f22;stroke-width:3px;stroke-linejoin:round}
#inspSvg .snap{fill:#0a0f22;stroke:#5eead4;stroke-width:2;vector-effect:non-scaling-stroke}
#inspSvg .m-line{stroke:#5eead4;stroke-width:2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 4px rgba(94,234,212,.8))}
#inspSvg .m-pt{fill:#5eead4}
#inspSvg .m-text{fill:#06231f;font-family:var(--display);font-weight:700}
#inspSvg .m-bg{fill:#5eead4}
#inspSvg .m-ghost{stroke:#5eead4;stroke-dasharray:6 4;stroke-width:1.6;vector-effect:non-scaling-stroke}
.readout{position:absolute;left:14px;bottom:12px;background:rgba(10,15,34,.85);border:1px solid var(--stroke-2);border-radius:999px;padding:6px 12px;font-size:12.5px;color:var(--text-2);pointer-events:none;backdrop-filter:blur(8px)}
.readout:empty{display:none}
.insp-side{border-left:1px solid var(--stroke);display:flex;flex-direction:column;min-height:0;background:rgba(255,255,255,.02)}
.stage-tabs.small{padding:8px 14px 0}
.itab{overflow:auto;padding:16px 18px;display:grid;gap:14px;align-content:start}
.kv{display:grid;grid-template-columns:1fr auto;gap:8px 12px;font-size:13.5px;margin:0}
.kv dt{color:var(--muted)}
.kv dd{margin:0;font-weight:600;text-align:right}
.kv dd.big{font:700 24px var(--display);background:var(--heat);-webkit-background-clip:text;background-clip:text;color:transparent}
.note{font-size:12.5px;color:var(--text-2);background:rgba(255,255,255,.05);border:1px solid var(--stroke);border-radius:var(--r-s);padding:9px 11px}
.note.warn{background:rgba(255,176,59,.1);border-color:rgba(255,176,59,.3);color:#ffe0ad}
.hole-table{width:100%;border-collapse:collapse;font-size:13px}
.hole-table th{text-align:left;color:var(--muted);font-weight:500;font-size:12px;padding:5px 6px;border-bottom:1px solid var(--stroke)}
.hole-table td{padding:7px 6px;border-bottom:1px solid var(--stroke)}
.hole-table tr{cursor:pointer}
.hole-table tbody tr:hover td,.hole-table tr.on td{background:var(--heat-soft)}
.hole-sum{display:flex;flex-wrap:wrap;gap:6px}
.measure-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.measure-list li{border:1px solid rgba(94,234,212,.3);border-radius:var(--r-m);padding:9px 12px;display:grid;grid-template-columns:1fr auto;gap:2px 10px;background:rgba(94,234,212,.06)}
.measure-list b{font:700 20px var(--display);color:#5eead4}
.measure-list span{color:var(--muted);font-size:12px}
.measure-list button{grid-row:1/3;grid-column:2;border:0;background:none;color:var(--muted)}
.kbd{display:inline-block;border:1px solid var(--stroke-2);border-bottom-width:2px;border-radius:5px;padding:0 6px;font-size:12px;background:rgba(255,255,255,.06)}

/* ---------- responsive ---------- */
@media (max-width:1240px){
  .station{grid-template-columns:270px minmax(0,1fr) 290px}
  .figures{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:920px){
  body{overflow:auto}
  .station{height:auto;grid-template-columns:1fr}
  .stage{order:1;min-height:70vh}
  .settings-pane{order:2}
  .parts-pane{order:3}
  .part-list{max-height:60vh}
  .job-meta{display:none}
  .insp-body{grid-template-columns:1fr;grid-template-rows:minmax(300px,1fr) auto}
  .insp-side{border-left:0;border-top:1px solid var(--stroke);max-height:40vh}
  .figures{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:560px){
  .topbar{gap:10px;padding:0 10px}
  .top-actions .btn{padding:6px 10px;font-size:13px}
  #demo{display:none}
  .empty-copy h1{font-size:30px}
  .inspector{padding:0}
  .insp-frame{border-radius:0}
  .insp-head{flex-wrap:wrap}
}
@media (prefers-reduced-motion:reduce){
  .plate-kerf{animation:none;stroke-dashoffset:0}
  .plate-spark{display:none}
  .heat i{animation:none}
  *{transition:none!important}
}

#inspSvg:focus{outline:none}
.fig dd{white-space:nowrap;font-size:clamp(20px,1.9vw,28px)}
.fig.lead dd{font-size:clamp(24px,2.3vw,34px)}

/* v1.1 live optimiser simulation */
.progress-card:has(.live-sim:not([hidden])){max-width:min(1180px,96%);margin-top:4vh}
.live-sim{margin:6px 0 0;display:grid;gap:10px;text-align:left}
.live-sim figcaption{font-size:12.5px;color:var(--text-2)}
.live-sim figcaption b{color:#ffd6a3}
.live-frame{border-radius:16px;padding:12px;background:linear-gradient(135deg,rgba(124,58,237,.18),rgba(236,72,153,.10)),#0b0f22;
  border:1px solid rgba(255,255,255,.08);box-shadow:0 20px 60px -30px rgba(236,72,153,.55),inset 0 0 0 1px rgba(255,176,59,.06)}
.live-frame img{display:block;width:100%;height:auto;max-height:60vh;object-fit:contain}

/* license gate */
.gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:radial-gradient(1200px 600px at 50% -10%,#1c2150 0%,#070a17 60%);padding:16px}
.gate[hidden]{display:none}
.gate-card{width:min(420px,100%);display:flex;flex-direction:column;gap:14px;align-items:stretch;text-align:center;padding:28px;border-radius:16px;background:rgba(20,26,56,.82);border:1px solid rgba(255,255,255,.12);box-shadow:0 20px 60px rgba(0,0,0,.5)}
.gate-card img{align-self:center}
.gate-card h1{margin:0;font-size:24px}
.gate-card p{margin:0;color:#aab3d8;font-size:14px}
.gate-card form{display:flex;flex-direction:column;gap:12px}
.gate-card .seg{align-self:center}
.gate-card input{font:600 17px/1.2 ui-monospace,Consolas,monospace;letter-spacing:.06em;text-align:center;padding:13px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.18);background:#0c1230;color:#fff}
.gate-card input:focus{outline:2px solid #ff4d8d;outline-offset:1px}
.gate-msg{min-height:1.3em;color:#ff8aa8 !important}
.live-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.live-grid svg{height:150px;width:auto;border-radius:6px;background:#161c3a}

.admin-frame{max-width:980px}
.admin-body{padding:8px 18px 18px;overflow:auto;max-height:70vh}
.admin-table{width:100%;border-collapse:collapse;font-size:13.5px}
.admin-table th,.admin-table td{padding:9px 8px;text-align:left;border-bottom:1px solid rgba(255,255,255,.08);vertical-align:middle}
.admin-table th{color:#aab3d8;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.admin-table input[type=date]{background:#0c1230;color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:8px;padding:5px 8px}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;background:rgba(255,255,255,.1)}
.pill.ok{background:rgba(70,200,140,.2);color:#7ff0b8}.pill.wait{background:rgba(255,190,80,.2);color:#ffd28a}.pill.admin{background:rgba(138,92,255,.25);color:#cdb8ff}

/* ---- launch intro: the CP plate is laser-cut, the letters drop out, the steel catches the light (about 5 s) ---- */
#intro{position:fixed;inset:0;z-index:300;background:#000;display:grid;place-items:center;overflow:hidden;animation:inOut .5s cubic-bezier(.7,0,.2,1) 2.55s forwards}
#intro.gone{display:none}
#intro .in-glow{position:absolute;inset:-20%;background:radial-gradient(34% 30% at 50% 44%,rgba(255,255,255,.10),rgba(255,255,255,.03) 50%,transparent 72%);opacity:0;animation:inFade 1s ease-out 1.5s forwards}
.in-stage{position:relative;display:flex;flex-direction:column;align-items:center;padding:0 16px}
.in-mark{width:clamp(150px,30vmin,240px);height:auto;overflow:visible}
.in-plate{filter:brightness(.32);animation:inLit .7s ease-out 1.5s forwards}
.in-slug{transform-box:fill-box;transform-origin:50% 50%;filter:brightness(.32)}
.in-slug-c{animation:inDropC .5s cubic-bezier(.5,0,.9,.4) 1.4s forwards}
.in-slug-p{animation:inDropP .5s cubic-bezier(.5,0,.9,.4) 1.45s forwards}
.in-shine{transform:translateX(0) skewX(-18deg);opacity:0;animation:inShine .8s cubic-bezier(.4,0,.2,1) 1.6s forwards}
.in-cut{fill:none;stroke:#fff;stroke-width:.55;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 1.2px #fff);animation:inDraw var(--d) linear var(--t) forwards,inCool .4s ease 1.4s forwards}
.in-cut1{--t:.2s;--d:.25s}.in-cut2{--t:.47s;--d:.42s}.in-cut3{--t:.92s;--d:.45s}
.in-head{opacity:0}
.in-head .in-halo{fill:#fff;opacity:.16}.in-head .in-dot{fill:#fff}
.in-head1{animation:inVis .25s linear .2s}.in-head2{animation:inVis .42s linear .47s}.in-head3{animation:inVis .45s linear .92s}
.in-word{opacity:0;animation:inFade .01s linear 1.65s forwards;margin:clamp(22px,4.5vh,40px) 0 0;font:650 clamp(40px,8vw,88px)/1 var(--display,Inter,system-ui,sans-serif);letter-spacing:-.045em;background:linear-gradient(180deg,#fff 25%,#9a9ca3);-webkit-background-clip:text;background-clip:text;color:transparent;display:flex}
.in-word span{display:inline-block;opacity:0;transform:translateY(.35em);filter:blur(10px);animation:inLetter .8s cubic-bezier(.2,.8,.2,1) forwards}
.in-tag{margin:clamp(14px,2.6vh,22px) 0 0;text-align:center;color:#86868b;font:500 clamp(13px,1.9vw,19px)/1.4 var(--display,Inter,system-ui,sans-serif)}
.in-tag span{display:inline-block;opacity:0;transform:translateY(8px);animation:inFadeUp .7s ease-out forwards;margin:0 .3em}
.in-tag span:nth-child(1){animation-delay:1.85s}.in-tag span:nth-child(2){animation-delay:1.95s}.in-tag span:nth-child(3){animation-delay:2.05s}
@keyframes inFade{to{opacity:1}}
@keyframes inFadeUp{to{opacity:1;transform:none}}
@keyframes inDraw{to{stroke-dashoffset:0}}
@keyframes inCool{to{opacity:0}}
@keyframes inVis{0%,96%{opacity:1}100%{opacity:0}}
@keyframes inLit{to{filter:brightness(1)}}
@keyframes inDropC{to{transform:translate(-2px,40px) rotate(-14deg);opacity:0}}
@keyframes inDropP{to{transform:translate(2px,40px) rotate(11deg);opacity:0}}
@keyframes inShine{0%{opacity:1;transform:translateX(0) skewX(-18deg)}100%{opacity:1;transform:translateX(110px) skewX(-18deg)}}
@keyframes inLetter{to{opacity:1;transform:none;filter:blur(0)}}
@keyframes inOut{to{opacity:0;transform:scale(1.04);visibility:hidden}}
@media (prefers-reduced-motion:reduce){#intro{animation-delay:.9s;animation-duration:.4s}#intro *{animation-duration:.01s !important;animation-delay:0s !important}.in-tag span,.in-word span{opacity:1 !important;transform:none !important;filter:none !important}.in-slug{opacity:0}.in-cut,.in-head{display:none}}
body.intro-on .topbar,body.intro-on .station{opacity:0}
body .topbar,body .station{transition:opacity .6s ease .1s}

.modes{display:grid;gap:8px;margin-top:6px}
.mode{display:grid;gap:2px;text-align:left;padding:11px 13px;border-radius:12px;border:1px solid var(--stroke-2);background:rgba(5,8,20,.45);color:var(--text);cursor:pointer;font:inherit}
.mode small{color:var(--muted);font-size:12px}
.mode.on{border-color:rgba(236,72,153,.55);background:var(--heat-soft)}
.mode.pro b{background:linear-gradient(100deg,#ffd28a,#ff4d8d 50%,#8a5cff);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:.02em}
.pro-time input{width:100%;accent-color:#ff4d8d}
.btn.big+.btn.big{margin-top:8px;width:100%}

/* ---------- about ---------- */
.about-btn{border:1px solid rgba(236,72,153,.55);background:linear-gradient(120deg,rgba(255,176,59,.16),rgba(236,72,153,.18) 55%,rgba(124,58,237,.22));color:#fff;padding-left:28px;overflow:hidden}
.about-btn::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translateX(-120%);animation:abShine 4.5s ease-in-out 5s infinite}
.about-btn i{position:absolute;left:12px;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:#ffb03b;box-shadow:0 0 0 0 rgba(255,176,59,.7);animation:abPing 2s infinite}
.about-btn:hover{box-shadow:0 10px 30px -10px rgba(236,72,153,.8);transform:translateY(-1px)}
@keyframes abShine{0%,70%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
@keyframes abPing{0%{box-shadow:0 0 0 0 rgba(255,176,59,.7)}80%,100%{box-shadow:0 0 0 9px rgba(255,176,59,0)}}
.gate-about{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);border-radius:12px;padding:10px 12px;color:#fff;font-weight:600;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.gate-about span{color:#ffc56b;font-weight:500}
.gate-about:hover{border-color:rgba(236,72,153,.5)}
@keyframes abIn{from{opacity:0;transform:scale(1.02)}to{opacity:1;transform:none}}
.update-toast{position:fixed;left:50%;bottom:22px;z-index:150;transform:translateX(-50%);display:flex;gap:12px;align-items:center;padding:10px 12px 10px 16px;border-radius:999px;background:#12193a;border:1px solid rgba(94,234,212,.45);box-shadow:0 18px 50px rgba(0,0,0,.5);font-size:13.5px}
.update-toast[hidden]{display:none}
.figures .fig{padding:12px 13px;min-width:0}
.figures .fig dd{font-size:clamp(16px,1.32vw,28px)}
.figures .fig.lead dd{font-size:clamp(20px,1.7vw,34px)}
.figures .fig dd small{font-size:12px;margin-left:3px}
@media (min-width:921px) and (max-width:1540px){.figures{grid-template-columns:repeat(3,minmax(0,1fr))}.figures .fig dd{font-size:22px}.figures .fig.lead dd{font-size:26px}}

/* =====================================================================
   CutPrime 2 · "Keynote" theme
   True black, graphite glass, white type, one calm accent (blue).
   Overrides the earlier night-shift palette; colour now carries meaning only.
   ===================================================================== */
:root{
  --night-0:#000;--night-1:#0b0b0d;--night-2:#141416;
  --glass:rgba(255,255,255,.045);--glass-2:rgba(255,255,255,.08);
  --stroke:rgba(255,255,255,.08);--stroke-2:rgba(255,255,255,.14);
  --text:#f5f5f7;--text-2:#c7c7cc;--muted:#86868b;
  --accent:#0a84ff;--accent-2:#2997ff;--accent-soft:rgba(10,132,255,.14);
  --amber:#2997ff;--rose:#0a84ff;--violet:#5e5ce6;--cyan:#64d2ff;--danger:#ff453a;--ok:#30d158;--warn:#ffd60a;
  --heat:linear-gradient(180deg,#2997ff,#0a84ff);
  --heat-soft:rgba(10,132,255,.14);
  --steel:linear-gradient(160deg,#2c2c2e,#1c1c1e);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Inter","Segoe UI Variable Text","Segoe UI",system-ui,sans-serif;
  --display:-apple-system,BlinkMacSystemFont,"SF Pro Display","Inter","Segoe UI Variable Display","Segoe UI",system-ui,sans-serif;
  --shadow:0 24px 60px rgba(0,0,0,.6);
}
body{background:radial-gradient(1200px 500px at 50% -220px,rgba(10,132,255,.10),transparent 70%),#000;letter-spacing:-.003em}
:focus-visible{outline:2px solid var(--accent-2)}
a{color:var(--accent-2)}
::selection{background:rgba(10,132,255,.45)}
*{scrollbar-color:rgba(255,255,255,.16) transparent}

.btn{font-weight:500;letter-spacing:0}
.btn.primary{background:var(--accent);color:#fff;box-shadow:none}
.btn.primary:hover:not(:disabled){background:#0077ed;transform:none;box-shadow:none}
.btn.primary:disabled{background:#2c2c2e;color:#8e8e93}
.btn.ghost{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1)}
.btn.ghost:hover:not(:disabled){background:rgba(255,255,255,.11);border-color:rgba(255,255,255,.18)}
.btn.quiet{color:var(--accent-2)}
.btn.quiet:hover:not(:disabled){background:var(--accent-soft)}

.topbar{background:rgba(22,22,23,.72);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(255,255,255,.07)}
.brand{font:600 19px var(--display);letter-spacing:-.01em}
.brand img{box-shadow:none}
.brand span{background:none;color:#f5f5f7}
.about-btn{border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06)}
.about-btn i{background:var(--accent-2);box-shadow:0 0 0 0 rgba(41,151,255,.7)}
@keyframes abPing{0%{box-shadow:0 0 0 0 rgba(41,151,255,.7)}80%,100%{box-shadow:0 0 0 9px rgba(41,151,255,0)}}
.about-btn:hover{box-shadow:none;background:rgba(255,255,255,.1)}
.menu-list,.ctx{background:rgba(30,30,32,.92);backdrop-filter:saturate(180%) blur(24px);border:1px solid rgba(255,255,255,.1);box-shadow:0 20px 50px rgba(0,0,0,.6)}
.menu-list button:hover:not(:disabled){background:var(--accent);color:#fff}

.pane{background:rgba(28,28,30,.72);border:1px solid rgba(255,255,255,.07);backdrop-filter:blur(20px);box-shadow:none}
.stage{background:rgba(18,18,20,.8);border:1px solid rgba(255,255,255,.07)}
.pane-head h2,legend{font:600 15px var(--display);letter-spacing:-.01em}
legend::before{width:6px;height:6px;background:var(--accent-2);box-shadow:none}
.count{background:rgba(255,255,255,.1);color:var(--text-2)}
.pane-head input[type=search],.field input,.field select,.speed-row input,.speed-row select,.qty{background:rgba(118,118,128,.18);border-color:transparent}
.field input:focus,.field select:focus,.speed-row input:focus,.speed-row select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.25)}
.field select option,.speed-row select option{background:#1c1c1e}
.field input::placeholder,.speed-row input::placeholder{color:#636366}
.seg{background:rgba(118,118,128,.2);border:0;padding:2px}
.seg button{color:var(--text-2)}
.seg button.on{background:#636366;color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.check input{accent-color:var(--accent)}
.mode{background:rgba(118,118,128,.12);border-color:transparent}
.mode.on{background:var(--accent-soft);border-color:rgba(10,132,255,.6)}
.mode.pro b{background:linear-gradient(90deg,#fff,#a1c9ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.pro-time input{accent-color:var(--accent)}

.part-row:hover{background:rgba(255,255,255,.05);border-color:transparent}
.part-row[draggable=true]{cursor:grab}
.part-row.active{background:var(--accent-soft);border-color:rgba(10,132,255,.35)}
.thumb{background:#2c2c2e;box-shadow:none}
.thumb path{stroke-width:.7}
.pr-meta{color:#e5e5ea}
.pr-meta .miss{color:var(--warn)}
.tag.repeat{background:rgba(94,92,230,.22);color:#c7c6ff}
.tag.warn{background:rgba(255,214,10,.14);color:#ffe36e}

.empty-plate::before{background:radial-gradient(520px 260px at 50% 38%,rgba(10,132,255,.12),transparent 70%)}
.empty-copy h1{font:700 48px/1.05 var(--display);letter-spacing:-.025em;background:linear-gradient(180deg,#fff 30%,#a1a1a6);-webkit-background-clip:text;background-clip:text;color:transparent}
.plate-sheet{fill:#1c1c1e;stroke:rgba(255,255,255,.16)}
.plate-kerf{filter:drop-shadow(0 0 6px rgba(41,151,255,.9))}
.plate-spark{filter:drop-shadow(0 0 4px #fff) drop-shadow(0 0 12px #2997ff)}
.tab.on{border-image:none;border-bottom:2px solid var(--text)}
.badge.danger{background:rgba(255,69,58,.22);color:#ff9f99}

.fig{background:rgba(44,44,46,.55);border:1px solid rgba(255,255,255,.06)}
.fig dt{color:var(--muted);font-size:12px}
.fig dd{font-weight:600;letter-spacing:-.02em}
.fig.lead{background:linear-gradient(160deg,rgba(10,132,255,.22),rgba(10,132,255,.06));border-color:rgba(10,132,255,.4)}
.fig.lead dd{background:none;color:#fff}
.fig.lead::after{display:none}
.fig .warn{color:var(--warn);font-weight:600}
.chip{background:rgba(118,118,128,.16);border-color:transparent;color:var(--text-2)}
.chip.on{background:#f5f5f7;color:#000;box-shadow:none}
.chip .dot-warn{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--warn);margin-left:4px;vertical-align:1px}
.board-bar{justify-content:space-between}
.gas-ctl{display:flex;align-items:center;gap:10px;margin-left:auto}
.gas-label{color:var(--muted);font-size:12.5px}
.gas-seg button{min-width:58px;font-weight:600}
.gas-seg button.on{background:var(--accent);color:#fff}
.gas-seg button:disabled{opacity:.35}

.sheet-wrap,.editor{border-radius:18px;background:#0b0b0d;border:1px solid rgba(255,255,255,.07)}
.editor{padding:12px;display:grid;gap:10px}
.ed-tools{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ed-tools button{border:0;background:rgba(118,118,128,.18);color:var(--text);border-radius:8px;padding:6px 10px;font-size:13px;font-weight:500;min-width:32px}
.ed-tools button:hover{background:rgba(118,118,128,.32)}
.ed-tools .sep{width:1px;height:20px;background:rgba(255,255,255,.12);margin:0 4px}
.ed-push{display:inline-flex;gap:2px}
.ed-push button{padding:6px 8px}
.ed-zoom{display:inline-flex;gap:2px;margin-left:auto}
.ed-state{font-size:12.5px;color:var(--muted);padding-left:6px}
.ed-state.ok{color:var(--ok)}
.ed-state.bad{color:var(--danger);font-weight:600}
.sheet-stage{position:relative;border-radius:12px;overflow:hidden;background:radial-gradient(800px 300px at 50% 0%,rgba(255,255,255,.04),transparent 70%),#050506;outline:2px dashed transparent;outline-offset:-2px;transition:outline-color .15s}
.sheet-stage.drop{outline-color:var(--accent)}
.sheet-svg{filter:none}
.sheet-svg.ed{max-height:62vh;min-height:260px;touch-action:none;user-select:none;cursor:default}
.sheet-svg.ed.panning,.sheet-svg.ed.grab{cursor:grab}
.sheet-svg .bed{fill:url(#bedSteel);stroke:rgba(255,255,255,.18)}
.sheet-svg .margin-line{stroke:rgba(255,255,255,.18)}
.sheet-svg .cut{fill:var(--pf,#e5e5ea);stroke:var(--ps,#3a3a3c);stroke-width:.8;transition:none}
.sheet-svg .cut:hover{fill:var(--pf,#e5e5ea);stroke:#fff;stroke-width:1.6}
.sheet-svg .cut.hl{fill:#fff;stroke:var(--accent);stroke-width:2}
.sheet-svg.ed .cut{cursor:move}
.sheet-svg .cut.sel{stroke:#64d2ff;stroke-width:2.4}
.sheet-svg .cut.bad{fill:#ff6961;stroke:#ff453a;stroke-width:2}
.sheet-svg .cut.bad.sel{stroke:#fff}
.sheet-svg .remnant{stroke:var(--ok)}
.sheet-svg .marquee{fill:rgba(10,132,255,.12);stroke:var(--accent-2);stroke-width:1;stroke-dasharray:5 4}
.sheet-svg.mini .cut{stroke-width:.4}
.sheet-foot .muted{color:var(--muted)}
.util-pair b{background:none;color:#fff;font-weight:600}
.sheet-nav button{background:rgba(118,118,128,.18);border:0}
.sheet-thumb{background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.07)}
.sheet-thumb.on{background:var(--accent-soft);box-shadow:0 0 0 1.5px var(--accent)}
.tray{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:32px}
.tray-title{color:var(--warn);font-size:12.5px;font-weight:600;margin-right:4px}
.tray-ok{color:var(--muted);font-size:12.5px}
.tray-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(255,214,10,.3);background:rgba(255,214,10,.07);color:var(--text);border-radius:10px;padding:3px 10px 3px 4px;font-size:12.5px;cursor:grab}
.tray-chip:hover{background:rgba(255,214,10,.14)}
.tray-chip .thumb.mini{width:30px;height:24px;padding:2px;border-radius:6px}
.tray-chip b{color:var(--warn)}

.ctx{min-width:250px;border-radius:12px;padding:5px}
.ctx button{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:7px 10px;border-radius:7px;font-size:13.5px}
.ctx button:hover{background:var(--accent);color:#fff}
.ctx button:hover kbd{color:rgba(255,255,255,.85)}
.ctx kbd{font:500 11.5px var(--font);color:var(--muted)}
.ctx hr{border:0;border-top:1px solid rgba(255,255,255,.08);margin:4px 6px}
.ctx-head{padding:7px 10px 6px;font-weight:600;font-size:13px;color:#fff;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:4px}
.ctx-head small{display:block;color:var(--muted);font-weight:400;font-size:12px;margin-top:2px}
.ctx-row{display:flex;align-items:center;gap:4px;padding:4px 10px;font-size:13.5px}
.ctx-row span{flex:1}
.ctx-row button{display:inline-grid;place-items:center;width:30px;height:28px;padding:0;background:rgba(118,118,128,.2)}
.edit-dlg{background:#1c1c1e;border-color:rgba(255,255,255,.1)}
.edit-dlg input{background:rgba(118,118,128,.18);border-color:transparent}
.edit-dlg input:focus{outline:2px solid var(--accent)}
.num-fields{display:grid;gap:10px}

.speed-row{grid-template-columns:minmax(0,1fr) 66px 64px}
.speed-row b{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.speed-row b small{color:var(--muted);font-size:12px;margin-left:2px}
.speed-row select{height:32px;border-radius:var(--r-s);padding:0 6px;color:var(--text);width:100%}
.speed-row input.edited{border-color:rgba(255,214,10,.55);background:rgba(255,214,10,.08)}

.progress-card h3{background:none;color:#fff;font-weight:600;letter-spacing:-.02em}
.heat i{background:var(--accent);box-shadow:none;animation:none}
.live-sim figcaption b{color:#fff}
.live-grid svg{background:#1c1c1e}
.idle h3{font-weight:600;letter-spacing:-.02em}
.alert{border-color:rgba(255,69,58,.4);background:rgba(255,69,58,.1)}

.insp-frame{background:#161617;border-color:rgba(255,255,255,.1);box-shadow:0 40px 90px rgba(0,0,0,.7)}
.insp-head h2{background:none;color:#fff;font-weight:600}
.insp-canvas{background:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px) 0 0/24px 24px,linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px) 0 0/24px 24px,#0b0b0d}
#inspSvg .body{fill:url(#partMetal);stroke:#8e8e93;filter:none}
#inspSvg .hole-hl{fill:rgba(10,132,255,.25);stroke:var(--accent-2)}
.kv dd.big{background:none;color:#fff}
.hole-table tbody tr:hover td,.hole-table tr.on td{background:var(--accent-soft)}

.gate{background:radial-gradient(900px 500px at 50% -10%,rgba(10,132,255,.18),#000 65%)}
.gate-card{background:rgba(28,28,30,.85);border-color:rgba(255,255,255,.1)}
.gate-card input{background:rgba(118,118,128,.18);border-color:transparent;font:500 16px var(--font);letter-spacing:0}
.gate-card input:focus{outline:2px solid var(--accent)}
.gate-msg{color:#ff9f99 !important}
.gate-about span{color:var(--accent-2)}
.gate-about:hover{border-color:rgba(10,132,255,.5)}

/* about page in the new palette */
.update-toast{background:#1c1c1e;border-color:rgba(10,132,255,.45)}

@media (max-width:860px){.gas-ctl{margin-left:0}.ed-zoom{margin-left:0}}
.gate{background:radial-gradient(900px 500px at 50% -10%,#0b2140 0%,#000 65%)}
.ed-zoom button{min-width:30px}
.menu-list button b{display:block;font-weight:600}
.menu-list button small{display:block;color:var(--muted);font-size:12px;margin-top:1px}
.menu-list button:hover small{color:rgba(255,255,255,.8)}
.ed-tools .ed-report{background:var(--accent);color:#fff;font-weight:600;margin-left:6px}
.ed-tools .ed-report:hover{background:#0077ed}
/* the export menu lives in the top bar: lift the bar above the blurred panes and keep the menu opaque */
.topbar{position:relative;z-index:50}
.menu-list{background:#1c1c1e;backdrop-filter:none;z-index:60}
.sheet-svg .cut.ghost{fill:none;stroke:var(--accent-2);stroke-width:1.2;stroke-dasharray:5 4;pointer-events:none;filter:none}

/* per-sheet size (offcut / cut-down last sheet) */
.sheet-size{color:var(--text-2)}
.sheet-size b{color:var(--text);font-weight:600}
.sheet-size.custom b{color:var(--accent)}
.sheet-acts{display:flex;gap:6px}
.sheet-acts button{border:0;background:rgba(118,118,128,.18);color:var(--text);border-radius:8px;padding:5px 10px;font-size:12.5px;font-weight:500}
.sheet-acts button:hover{background:rgba(118,118,128,.32)}
.bed-ghost{fill:rgba(255,255,255,.02);stroke:rgba(255,255,255,.22);stroke-width:1;stroke-dasharray:6 6}

/* ======================================================================= platform: home + three work areas
   Anthracite surfaces, a hint of brushed metal, cold blue used sparingly. Each work area has its own accent. */
:root{--ws-accent:#0a84ff;--ink-0:#050607;--ink-1:#0b0d10;--ink-2:#14171c;--metal:linear-gradient(180deg,#f5f6f8 0%,#c9ced6 55%,#8e95a1 100%)}
body[data-ws=extract]{--ws-accent:#64d2ff}
body[data-ws=quote]{--ws-accent:#0a84ff}
body[data-ws=studio]{--ws-accent:#8ea8ff}

/* ---------- home: the opening of the platform ----------
   Near-black anthracite, one ice-blue accent, technical drawings that come alive on hover. Motion uses transform and
   opacity only (compositor, 60 fps); the drawing of outlines plays once at the first opening. */
.home{--ice:#a9dcff;--ice-2:#6fc3ff;--line:rgba(196,208,224,.55);--line-2:rgba(196,208,224,.22);--card:#0d0f12;
  position:fixed;inset:0;z-index:40;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;
  padding:0 clamp(20px,4vw,64px) clamp(24px,4vh,48px);color:#eef1f5;
  background:radial-gradient(1200px 520px at 50% -160px,rgba(150,190,230,.10),transparent 70%),radial-gradient(900px 500px at 50% 115%,rgba(111,195,255,.05),transparent 70%),linear-gradient(180deg,#0b0c0e 0%,#060708 100%)}
/* a faint drafting grid that fades out towards the edges */
.home::before{content:"";position:fixed;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.028) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.028) 1px,transparent 1px);background-size:48px 48px;
  -webkit-mask-image:radial-gradient(ellipse 70% 55% at 50% 38%,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse 70% 55% at 50% 38%,#000 20%,transparent 75%)}
.home > *{position:relative}
.home-nav{height:72px;flex:none;width:100%;max-width:1360px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}
.home-brand{display:flex;align-items:center;gap:10px;font:600 15px var(--display);letter-spacing:.01em;color:#f2f4f7}
.home-brand img{border-radius:6px}
.home-links{display:flex;gap:2px}
.home-links button{border:0;background:none;color:#8d95a3;font:500 13.5px var(--font);padding:8px 12px;border-radius:999px;transition:color .2s,background-color .2s}
.home-links button:hover{color:#eef1f5;background:rgba(255,255,255,.05)}
.home-hero{text-align:center;margin:auto auto clamp(28px,6vh,64px);padding-top:clamp(16px,4vh,48px);max-width:900px}
.home-hero h1{font:600 clamp(32px,4.6vw,64px)/1.08 var(--display);letter-spacing:-.025em;text-wrap:balance;
  background:linear-gradient(180deg,#ffffff 0%,#dfe5ec 55%,#9aa5b4 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.home-hero p{margin-top:clamp(12px,1.6vh,18px);font:400 clamp(15px,1.4vw,19px)/1.4 var(--font);color:#8a92a0;letter-spacing:.005em}

.home-cards{width:100%;max-width:1360px;margin:0 auto auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,24px)}
.ws-card{--mx:50%;--my:0%;position:relative;display:flex;flex-direction:column;text-align:left;padding:0;border-radius:28px;color:inherit;
  border:1px solid rgba(255,255,255,.065);background:linear-gradient(180deg,#121418 0%,var(--card) 100%);overflow:hidden;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 30px 80px -40px rgba(0,0,0,.9);
  transition:transform .5s cubic-bezier(.2,.7,.2,1),border-color .4s,box-shadow .5s}
/* edge light following the pointer (border only) */
.ws-card::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;opacity:0;transition:opacity .4s;
  background:radial-gradient(320px 200px at var(--mx) var(--my),rgba(169,220,255,.55),transparent 70%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.ws-card:hover,.ws-card:focus-visible{transform:translateY(-3px);border-color:rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 40px 90px -40px rgba(0,0,0,.95)}
.ws-card:hover::before,.ws-card:focus-visible::before{opacity:1}
.ws-card:focus-visible{outline:none}
.ws-card:active{transform:translateY(-1px) scale(.995)}

/* the drawing: technical paper with registration marks */
.ws-stage{position:relative;display:block;align-self:stretch;width:auto;aspect-ratio:16/10;margin:12px 12px 0;border-radius:18px;overflow:hidden;
  background:radial-gradient(120% 90% at 50% 0%,rgba(169,220,255,.045),transparent 60%),
    linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px) 0 0/24px 24px,linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px) 0 0/24px 24px,#0a0b0e;
  border:1px solid rgba(255,255,255,.04)}
.ws-stage svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.reg{position:absolute;width:12px;height:12px;border-color:rgba(169,220,255,.35);border-style:solid;border-width:0;transition:border-color .4s}
.reg.a{top:12px;left:12px;border-top-width:1px;border-left-width:1px}.reg.b{top:12px;right:12px;border-top-width:1px;border-right-width:1px}
.reg.c{bottom:12px;left:12px;border-bottom-width:1px;border-left-width:1px}.reg.d{bottom:12px;right:12px;border-bottom-width:1px;border-right-width:1px}
.ws-card:hover .reg{border-color:rgba(169,220,255,.7)}
.ws-stage svg *{vector-effect:non-scaling-stroke}
.ws-stage svg:not(.pfam):not(.ncard):not(.aicard) path,.ws-stage svg:not(.pfam):not(.ncard):not(.aicard) circle,.ws-stage svg:not(.pfam):not(.ncard):not(.aicard) rect{fill:none;stroke:var(--line);stroke-width:1.1;stroke-linejoin:round}

.ws-meta{align-self:stretch;width:100%;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:16px;padding:22px 28px 26px}
.ws-name{grid-column:1;font:600 clamp(20px,1.7vw,26px)/1.15 var(--display);letter-spacing:-.015em;color:#f4f6f8}
.ws-line{grid-column:1;margin-top:6px;font:400 15px/1.4 var(--font);color:#8a92a0}
.ws-go{grid-column:2;grid-row:1 / span 2;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.12);position:relative;transition:border-color .4s,background-color .4s,transform .5s cubic-bezier(.2,.7,.2,1)}
.ws-go::before{content:"";position:absolute;left:12px;top:19px;width:15px;height:1.5px;background:#dfe5ec;border-radius:1px}
.ws-go::after{content:"";position:absolute;left:20px;top:15px;width:7px;height:7px;border-top:1.5px solid #dfe5ec;border-right:1.5px solid #dfe5ec;transform:rotate(45deg)}
.ws-card:hover .ws-go{border-color:rgba(169,220,255,.6);background:rgba(169,220,255,.08);transform:translateX(3px)}

/* shared motion */
.ws-stage g,.ws-stage .scan{transition:transform .9s cubic-bezier(.2,.75,.2,1),opacity .6s}

/* hover state shared by mouse and touch (touch: plays once, see goHome) */
/* DXF Studio: packages stacked; the parts leave the front one, each into its own DXF file */
.ws-card[data-ws=extract] .pkg{transition:transform .8s cubic-bezier(.2,.75,.2,1),opacity .6s}
.ws-card[data-ws=extract] .pkg.back2,.ws-card[data-ws=extract] .pkg.back1{fill:#0b0d10}
.ws-card[data-ws=extract] .pkg.back2{stroke:rgba(196,208,224,.16)}
.ws-card[data-ws=extract] .pkg.back1{stroke:rgba(196,208,224,.28)}
.ws-card[data-ws=extract] .pkg.front path{fill:#0c0e11}
.ws-card[data-ws=extract] text{fill:#8a92a0;stroke:none;font:600 9px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.04em}
.ws-card[data-ws=extract] .file{opacity:.22;transform:none;transition:opacity .45s ease,transform .6s cubic-bezier(.2,.75,.2,1);transition-delay:0s}
.ws-card[data-ws=extract] .file path{stroke:rgba(169,220,255,.55);fill:rgba(169,220,255,.03);stroke-dasharray:3 3;transition:stroke-dasharray 0s linear var(--d)}
.ws-card[data-ws=extract] .file text{opacity:0;transition:opacity .4s}
.ws-card[data-ws=extract]:hover .file path,.home.touch .ws-card[data-ws=extract].live .file path{stroke-dasharray:none}
.ws-card[data-ws=extract]:hover .file text,.home.touch .ws-card[data-ws=extract].live .file text{opacity:1;transition-delay:var(--d)}
.ws-card[data-ws=extract] .file text{fill:var(--ice);font-size:7.5px;transition:opacity .4s}
.ws-card[data-ws=extract] .pp{transition:transform .95s cubic-bezier(.3,.7,.2,1);transition-delay:0s}
.ws-card[data-ws=extract] .pp *{transition:stroke .5s}
.ws-card[data-ws=extract]:hover .file,.home.touch .ws-card[data-ws=extract].live .file{opacity:1;transform:none;transition-delay:var(--d)}
.ws-card[data-ws=extract]:hover .pp,.home.touch .ws-card[data-ws=extract].live .pp{transform:translate(var(--dx),var(--dy));transition-delay:var(--d)}
.ws-card[data-ws=extract]:hover .pp *,.home.touch .ws-card[data-ws=extract].live .pp *{stroke:var(--ice)}
.ws-card[data-ws=extract]:hover .pkg.front,.home.touch .ws-card[data-ws=extract].live .pkg.front{opacity:.45}
.ws-card[data-ws=extract]:hover .pkg.back1,.home.touch .ws-card[data-ws=extract].live .pkg.back1{transform:translate(-4px,4px);transition-delay:.9s}
.ws-card[data-ws=extract]:hover .pkg.back2,.home.touch .ws-card[data-ws=extract].live .pkg.back2{transform:translate(-4px,4px);transition-delay:1s}

/* Cost Studio: the laser line measures the layout; material, cutting time and the total in lira fill in */
.ws-card[data-ws=quote] .dimt{fill:#6f7785;stroke:none;font:500 10px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.04em}
.ws-card[data-ws=quote] .sheet{stroke:rgba(255,255,255,.4)}
.ws-card[data-ws=quote] .nested *{stroke:var(--line);fill:rgba(169,220,255,.025);transition:fill .6s,stroke .6s}
.ws-card[data-ws=quote] .scan{fill:var(--ice);stroke:none;opacity:0;transform:translateX(0);filter:drop-shadow(0 0 6px rgba(169,220,255,.8));transition:transform .2s,opacity .2s}
.ws-card[data-ws=quote] .panel{fill:rgba(255,255,255,.025);stroke:rgba(255,255,255,.1)}
.ws-card[data-ws=quote] .bill text{stroke:none}
.ws-card[data-ws=quote] .lbl{fill:#a3abb8;font:500 11px var(--font)}
.ws-card[data-ws=quote] .lbl.tot{fill:#eef1f5;font-weight:600}
.ws-card[data-ws=quote] .unit{fill:#6f7785;font:500 10px var(--font);text-anchor:end}
.ws-card[data-ws=quote] .tl{fill:#eef1f5;font:600 20px var(--display);text-anchor:end;opacity:.35;transition:opacity .5s,fill .5s}
.ws-card[data-ws=quote] .track{stroke:none;fill:rgba(255,255,255,.07)}
.ws-card[data-ws=quote] .bar{stroke:none;fill:var(--ice);transform-box:fill-box;transform-origin:0 50%;transform:scaleX(0);transition:transform .9s cubic-bezier(.2,.75,.2,1)}
.ws-card[data-ws=quote] .bar.total{fill:#eef1f5}
.ws-card[data-ws=quote] .rule{stroke:rgba(255,255,255,.14);stroke-width:.9}
.ws-card[data-ws=quote]:hover .scan,.home.touch .ws-card[data-ws=quote].live .scan{transform:translateX(250px);opacity:1;transition:transform 1.2s cubic-bezier(.45,0,.2,1),opacity .2s}
.ws-card[data-ws=quote]:hover .nested *,.home.touch .ws-card[data-ws=quote].live .nested *{fill:rgba(169,220,255,.07);stroke:var(--ice);transition-delay:.25s}
.ws-card[data-ws=quote]:hover .b1,.home.touch .ws-card[data-ws=quote].live .b1{transform:scaleX(.78);transition-delay:.5s}
.ws-card[data-ws=quote]:hover .b2,.home.touch .ws-card[data-ws=quote].live .b2{transform:scaleX(.55);transition-delay:.75s}
.ws-card[data-ws=quote]:hover .b3,.home.touch .ws-card[data-ws=quote].live .b3{transform:scaleX(.66);transition-delay:1s}
.ws-card[data-ws=quote]:hover .total,.home.touch .ws-card[data-ws=quote].live .total{transform:scaleX(1);transition-delay:1.3s}
.ws-card[data-ws=quote]:hover .tl,.home.touch .ws-card[data-ws=quote].live .tl{opacity:1;fill:var(--ice);transition-delay:1.5s}

/* Nest Studio: scattered irregular parts turn and lock together; the sheet fills without waste */
.ws-card[data-ws=studio] .sheet{stroke:rgba(255,255,255,.4)}
.ws-card[data-ws=studio] .nz{transform-box:fill-box;transform-origin:center;transform:translate(var(--dx),var(--dy)) rotate(var(--r));opacity:.8;
  transition:transform 1s cubic-bezier(.25,.8,.25,1),opacity .6s;transition-delay:0s}
.ws-card[data-ws=studio] .nz *{fill:rgba(169,220,255,.02);transition:stroke .5s,fill .5s}
.ws-card[data-ws=studio]:hover .nz,.home.touch .ws-card[data-ws=studio].live .nz{transform:none;opacity:1;transition-delay:var(--d)}
.ws-card[data-ws=studio]:hover .nz path,.home.touch .ws-card[data-ws=studio].live .nz path{stroke:var(--ice);fill:rgba(169,220,255,.10);transition-delay:calc(var(--d) + .5s)}
.ws-card[data-ws=studio]:hover .nz circle,.home.touch .ws-card[data-ws=studio].live .nz circle{stroke:var(--ice)}

/* the open project, one quiet line */
.home-project{margin:clamp(18px,3vh,32px) auto 0;padding:8px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.03);color:#8a92a0;font-size:13px;text-align:center;max-width:100%}
.home-project b{color:#dfe5ec;font-weight:500}

/* first opening: brand, headline, then the cards one after another; outlines draw once */
.home.intro .home-nav{animation:hmFade .8s ease both}
.home.intro .home-hero h1{animation:hmRise 1s cubic-bezier(.2,.7,.2,1) .15s both}
.home.intro .home-hero p{animation:hmRise 1s cubic-bezier(.2,.7,.2,1) .3s both}
.home.intro .ws-card{animation:hmRise .9s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(.45s + var(--i) * .1s)}
.home.intro .ws-stage .draw{stroke-dasharray:1;stroke-dashoffset:1;animation:hmDraw 1.4s cubic-bezier(.4,0,.2,1) both;animation-delay:calc(.8s + var(--i) * .1s)}
.home.intro .ws-card[data-ws=extract] .frame{animation:hmFade 1.2s ease .8s both}
@keyframes hmFade{from{opacity:0}to{opacity:1}}
@keyframes hmRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes hmDraw{to{stroke-dashoffset:0}}
.home.leaving{animation:hmOut .3s ease forwards}
@keyframes hmOut{to{opacity:0;transform:scale(1.01)}}
body.ws-enter .topbar,body.ws-enter .station{animation:wsIn .45s cubic-bezier(.2,.7,.2,1)}
@keyframes wsIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* layout across screens: three side by side on the desktop; one column of wide cards on tablets; stacked on phones */
@media (min-width:1600px){.home-cards,.home-nav{max-width:1480px}}
@media (max-height:820px) and (min-width:1000px){.home-hero{margin:auto auto 28px;padding-top:16px}.ws-meta{padding:16px 24px 20px}}
@media (max-width:999px){
  .home-cards{grid-template-columns:1fr;max-width:760px}
  .ws-card{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center}
  .ws-stage{margin:12px}
  .ws-meta{padding:16px 24px 16px 8px}
}
@media (max-width:620px){
  .home-cards{gap:14px}
  .ws-card{display:flex}
  .ws-stage{margin:10px 10px 0;width:calc(100% - 20px)}
  .ws-meta{padding:16px 20px 20px}
  .home-hero{margin:8px auto 28px;padding-top:16px}
  .home-cards{margin-bottom:0}
}
/* low-power devices: no pointer light, no drawing; reduced motion: everything still */
.home.lite .ws-card::before{display:none}
.home.lite .ws-stage .draw{animation:none!important;stroke-dasharray:none}
.home.lite .ws-card{box-shadow:none}
@media (prefers-reduced-motion:reduce){
  .home *,.home *::before,.home *::after{animation:none!important;transition:none!important}
  .ws-stage .draw{stroke-dasharray:none!important}
  .home.leaving,body.ws-enter .topbar,body.ws-enter .station{animation:none}
}

/* work-area badge in the top bar: which tool am I in */
.ws-badge{display:none;align-items:center;gap:8px;padding:4px 12px 4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.04);color:#d9dde4;font-size:13px;font-weight:500;white-space:nowrap}
.ws-badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ws-accent);box-shadow:0 0 10px var(--ws-accent)}
body[data-ws=extract] .ws-badge,body[data-ws=quote] .ws-badge,body[data-ws=studio] .ws-badge{display:inline-flex}

/* which parts of the shared station each work area shows */
body[data-ws=home] .topbar,body[data-ws=home] .station{display:none}
.steps,.bulk-mat{display:none}
body[data-ws=extract] .settings-pane{display:none}
body[data-ws=extract] .station{grid-template-columns:330px minmax(0,1fr)}
body[data-ws=extract] .stage-tabs [data-view=nest],body[data-ws=extract] #downloadPdf,body[data-ws=extract] #downloadNest{display:none}
body:not([data-ws=extract]) .stage-tabs [data-view=parts]{display:none}
body[data-ws=quote] .steps{display:flex}
body[data-ws=quote] #modeSeg,body[data-ws=quote] #proTime,body[data-ws=quote] #downloadNest{display:none}
body[data-ws=quote] .pane-foot{display:none}
@media (max-width:920px){body[data-ws=extract] .station{grid-template-columns:1fr}}

/* quote: guided steps */
.steps{list-style:none;margin:0 0 6px;padding:4px 2px 10px;flex-direction:column;gap:2px;counter-reset:st;border-bottom:1px solid rgba(255,255,255,.07)}
.steps li{counter-increment:st;display:flex;align-items:center;gap:10px;padding:5px 6px;color:#8e95a1;font-size:13px}
.steps li::before{content:counter(st);width:20px;height:20px;flex:none;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(255,255,255,.16);font-size:11px;color:#a3aab6}
.steps li.done{color:#d9dde4}
.steps li.done::before{content:"✓";border-color:transparent;background:rgba(10,132,255,.25);color:#cfe4ff}
.steps li.now{color:#fff;font-weight:500}
.steps li.now::before{border-color:var(--ws-accent);color:#fff}

/* extract: part gallery */
.pgal{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:12px;padding:16px;overflow:auto;max-height:100%}
.pgal-card{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:14px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.03);text-align:left;color:var(--text)}
.pgal-card:hover{border-color:rgba(100,210,255,.35);background:rgba(255,255,255,.05)}
.pgal-card .thumb{width:100%;height:112px;border-radius:10px;padding:8px}
.pgal-card .thumb svg{width:100%;height:100%}
.pgal-card b{font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pgal-card small{color:#8e95a1;font-size:12px}
.pgal-head{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:baseline;padding:16px 16px 0;color:#a3aab6;font-size:13px}
.pgal-head b{color:#f2f4f7;font:600 20px var(--display)}
.pgal-acts{margin-left:auto;display:flex;gap:8px}

/* quote: result sheet */
.quote{padding:18px;display:flex;flex-direction:column;gap:16px;overflow:auto;max-height:100%}
.q-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0}
.q-grid div{padding:14px 16px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06)}
.q-grid dt{color:#8e95a1;font-size:12.5px}
.q-grid dd{margin:4px 0 0;font:600 22px var(--display);letter-spacing:-.01em;color:#f2f4f7}
.q-grid dd small{font:400 12.5px var(--font);color:#8e95a1;margin-left:4px}
.q-grid .q-total{grid-column:span 2;background:rgba(10,132,255,.12);border-color:rgba(10,132,255,.35)}
.q-grid .q-total dd{font-size:30px}
.q-note{color:#8e95a1;font-size:12.5px;line-height:1.55}
.q-sheets{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.q-sheets figure{margin:0;padding:8px;border-radius:12px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06)}
.q-sheets figcaption{font-size:12px;color:#8e95a1;margin-top:4px}
.q-acts{display:flex;gap:10px;flex-wrap:wrap}
@media (max-width:1200px){.q-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.choice-dlg .row{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.stale-note{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:rgba(255,214,10,.1);color:#ffe36e;font-size:13px}
/* the work areas keep their bar for the work: about and members live on the home screen */
/* (about and admin now live in the account menu, available everywhere) */
.q-grid dd{white-space:nowrap}
.q-grid dd small{display:block;margin:2px 0 0;white-space:normal;line-height:1.35}
.ws-badge{cursor:pointer}
/* identical sheets shown once: how many times the layout is cut */
.sheet-thumb,.q-sheets figure{position:relative}
.sheet-thumb .rep,.q-sheets .rep{position:absolute;top:6px;right:6px;padding:1px 8px;border-radius:999px;background:var(--ws-accent,#0a84ff);color:#fff;font:600 12px var(--display);z-index:1}
.rep-note{color:var(--accent-2,#64d2ff);font-weight:600}

/* ---------- about: the same identity as the home screen ---------- */
.about{--ice:#a9dcff;position:fixed;inset:0;z-index:200;color:#eef1f5;
  background:radial-gradient(1200px 520px at 50% -160px,rgba(150,190,230,.10),transparent 70%),linear-gradient(180deg,#0b0c0e,#060708)}
.about[hidden]{display:none}
.about-scroll{height:100%;overflow-y:auto;padding:0 clamp(20px,4vw,64px) 40px}
.about-scroll>*{width:min(1180px,100%);margin-left:auto;margin-right:auto}
.abx-bar{position:sticky;top:0;z-index:2;height:72px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(180deg,#0b0c0e 60%,rgba(11,12,14,0))}
.abx-close{width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.03);position:relative;transition:border-color .3s,background-color .3s}
.abx-close::before,.abx-close::after{content:"";position:absolute;left:11px;top:18px;width:15px;height:1.5px;background:#dfe5ec;border-radius:1px;transform:rotate(45deg)}
.abx-close::after{transform:rotate(-45deg)}
.abx-close:hover{border-color:rgba(169,220,255,.6);background:rgba(169,220,255,.08)}
.abx-k{display:block;font:500 13px var(--font);color:var(--ice);letter-spacing:.02em;margin-bottom:12px}
.abx-foot{display:flex;justify-content:space-between;padding:40px 0 10px;color:#5e6572;font-size:12.5px}
.abx-foot a{color:#8d95a3;text-decoration:none}.abx-foot a:hover{color:#eef1f5;text-decoration:underline}
/* About: a scroll story in six sections. Sections fade in when they enter (.in); the "why" section is driven by
   scroll progress (--p, 0 … 1): scattered drawings settle into a parts library. */
.about-scroll>section{position:relative}
.abx-open{min-height:calc(100vh - 72px);display:grid;place-items:center;text-align:center;overflow:hidden;width:100%!important;max-width:none}
.abx-bg{position:absolute;inset:0;width:100%;height:100%;opacity:.5}
.abx-bg *{fill:none;stroke:rgba(169,220,255,.16);stroke-width:1;vector-effect:non-scaling-stroke}
.abx-bg .dimline{stroke:rgba(196,178,255,.18)}
.abx-bg g{animation:abxDrift 38s ease-in-out infinite alternate}
.abx-bg .bg-b{animation-duration:46s;animation-direction:alternate-reverse}.abx-bg .bg-c{animation-duration:52s}
.abx-bg path,.abx-bg circle{stroke-dasharray:1400;stroke-dashoffset:1400;animation:abxLine 6s cubic-bezier(.4,0,.2,1) .3s forwards}
.abx-open-in{position:relative;max-width:900px;padding:0 4px}
.abx-open h2{margin:0;font:600 clamp(38px,6vw,84px)/1.03 var(--display);letter-spacing:-.035em;text-wrap:balance;
  background:linear-gradient(180deg,#fff 0%,#e3e8ee 55%,#97a2b2 100%);-webkit-background-clip:text;background-clip:text;color:transparent;opacity:0;animation:abxUp 1.1s cubic-bezier(.2,.7,.2,1) .15s forwards}
.abx-open p{max-width:720px;margin:26px auto 0;font:400 clamp(16px,1.5vw,20px)/1.55 var(--font);color:#8f97a5;text-wrap:balance;opacity:0;animation:abxUp 1.1s cubic-bezier(.2,.7,.2,1) .45s forwards}
.abx-open .abx-k{opacity:0;animation:abxUp .9s ease .05s forwards}
.abx-scroll{position:absolute;left:50%;bottom:28px;width:1px;height:46px;background:linear-gradient(180deg,transparent,rgba(169,220,255,.6));animation:abxHint 2.4s ease-in-out infinite}
.about-scroll h3{margin:0;font:600 clamp(30px,4.2vw,58px)/1.06 var(--display);letter-spacing:-.03em;text-wrap:balance;color:#f4f6f8}

.abx-why{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(24px,4vw,64px);align-items:center;padding:clamp(70px,14vh,150px) 0}
.abx-probs{list-style:none;margin:clamp(24px,4vh,40px) 0 0;padding:0;display:grid;gap:4px;counter-reset:pr}
.abx-probs li{display:grid;gap:2px;padding:12px 0 12px 34px;position:relative;border-top:1px solid rgba(255,255,255,.06);opacity:.35;transition:opacity .5s}
.abx-probs li::before{counter-increment:pr;content:counter(pr,decimal-leading-zero);position:absolute;left:0;top:14px;font:600 11px ui-monospace,Menlo,monospace;color:#6f7785}
.abx-probs b{font:600 17px var(--display);color:#eef1f5;letter-spacing:-.01em}.abx-probs span{color:#8a92a0;font-size:14.5px}
.abx-probs li.lit{opacity:1}
.abx-why-vis svg{width:100%;height:auto;overflow:visible}
.lib-p{transform:translate(calc((var(--sx) * (1 - var(--p,0)) + var(--ex) * var(--p,0)) * 1px),calc((var(--sy) * (1 - var(--p,0)) + var(--ey) * var(--p,0)) * 1px)) rotate(calc(var(--sr) * (1 - var(--p,0)) * 1deg))}
.lib-p path{fill:rgba(169,220,255,calc(.02 + var(--p,0) * .06));stroke:rgba(214,228,242,calc(.45 + var(--p,0) * .4));stroke-width:1.2;vector-effect:non-scaling-stroke}
.lib-shelf path{stroke:rgba(169,220,255,.14);stroke-dasharray:3 5;opacity:var(--p,0);vector-effect:non-scaling-stroke}
.abx-cap{position:relative;height:20px;margin:18px 0 0;text-align:center;font:600 11px ui-monospace,Menlo,monospace;letter-spacing:.14em;text-transform:uppercase}
.abx-cap span{position:absolute;inset:0;transition:opacity .4s}
.abx-cap .c0{color:#6f7785;opacity:calc(1 - var(--p,0) * 2)}.abx-cap .c1{color:#9fd2ff;opacity:calc(var(--p,0) * 2 - 1)}

.abx-four{padding:clamp(40px,8vh,90px) 0;text-align:center}
.abx-ws{margin-top:clamp(30px,5vh,52px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.4vw,20px);text-align:left}
.abx-ws article{padding:16px 18px 22px;border-radius:24px;border:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,#121419,#0d0f12);opacity:0;transform:translateY(18px);
  transition:opacity .8s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.abx-four.in .abx-ws article{opacity:1;transform:none}
.abx-four.in .abx-ws article:nth-child(2){transition-delay:.1s}.abx-four.in .abx-ws article:nth-child(3){transition-delay:.2s}.abx-four.in .abx-ws article:nth-child(4){transition-delay:.3s}
.abx-ws article.ws4{border-color:rgba(190,200,255,.12);background:radial-gradient(90% 60% at 50% 0%,rgba(160,170,255,.06),transparent 70%),linear-gradient(180deg,#13151b,#0d0f12)}
.abx-ws svg{width:100%;height:auto;aspect-ratio:200/110;border-radius:14px;margin-bottom:14px;background:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px) 0 0/14px 14px,linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px) 0 0/14px 14px,#0a0b0e}
.abx-ws svg *{fill:none;stroke:rgba(214,228,242,.6);stroke-width:1.2;vector-effect:non-scaling-stroke;transition:transform 1.2s cubic-bezier(.2,.7,.2,1),opacity .8s,stroke-dashoffset 1.4s ease}
.abx-ws h4{margin:0 0 8px;font:600 19px var(--display);color:#f4f6f8;letter-spacing:-.01em}
.abx-ws p{margin:0;font-size:14px;line-height:1.55;color:#8a92a0}
.abx-ws small{display:block;margin-top:10px;font-size:12px;color:#6f7785}
/* DXF Studio: parts leave the package into their own files */
.ws1 .fl{stroke:rgba(169,220,255,.5);stroke-dasharray:3 3;opacity:.35}
.abx-four.in .ws1 .pt{transform:translate(86px,0);stroke:#bfe3ff;transition-delay:.6s}
.abx-four.in .ws1 .pt.b{transform:translate(82px,-2px)}.abx-four.in .ws1 .pt.c{transform:translate(78px,12px)}
.abx-four.in .ws1 .fl{opacity:1;stroke-dasharray:none;transition-delay:1.2s}
/* Fiyat: time and cost lines filled from the part */
.ws2 .ln{stroke:rgba(255,255,255,.08)}.ws2 .bar{stroke:#bfe3ff;stroke-width:3;stroke-linecap:round;stroke-dasharray:80;stroke-dashoffset:80}
.ws2 .tot{stroke:rgba(196,178,255,.7);stroke-width:2;opacity:0}
.abx-four.in .ws2 .bar{stroke-dashoffset:0;transition-delay:.6s}.abx-four.in .ws2 .b2{transition-delay:.8s}.abx-four.in .ws2 .b3{transition-delay:1s}.abx-four.in .ws2 .tot{opacity:1;transition-delay:1.6s}
/* Nest: parts settle on the sheet */
.ws3 .sh{stroke:rgba(255,255,255,.35)}.ws3 .np{stroke:#bfe3ff;opacity:0;transform:translate(0,-30px)}
.abx-four.in .ws3 .np{opacity:1;transform:none}
.abx-four.in .ws3 .n1{transition-delay:.5s}.abx-four.in .ws3 .n2{transition-delay:.65s}.abx-four.in .ws3 .n3{transition-delay:.8s}.abx-four.in .ws3 .n4{transition-delay:.95s}.abx-four.in .ws3 .n5{transition-delay:1.1s}
/* AI Studio: sketch → geometry → dimension */
.ws4 .sk{stroke:#a9afb8;stroke-dasharray:1;stroke-dashoffset:1}.ws4 .geo{stroke:#bfe3ff;opacity:0}.ws4 .dm{stroke:rgba(196,178,255,.7);opacity:0}
.abx-four.in .ws4 .sk{stroke-dashoffset:0;opacity:.25;transition:stroke-dashoffset 1.4s ease .5s,opacity .8s ease 2s}
.abx-four.in .ws4 .geo{opacity:1;transition-delay:1.9s}.abx-four.in .ws4 .dm{opacity:1;transition-delay:2.4s}

.abx-tech{padding:clamp(60px,10vh,120px) 0;text-align:center}
.abx-lead{max-width:620px;margin:18px auto 0;color:#8f97a5;font-size:clamp(15px,1.3vw,18px);line-height:1.55}
.abx-arch{position:relative;margin-top:clamp(30px,5vh,56px);aspect-ratio:1000/380}
.abx-arch svg{position:absolute;inset:0;width:100%;height:100%}
.abx-arch .fl{fill:none;stroke:rgba(169,220,255,.35);stroke-width:1.2;stroke-dasharray:4 7;vector-effect:non-scaling-stroke;animation:abxFlow 3.5s linear infinite;opacity:0;transition:opacity .8s}
.abx-tech.in .abx-arch .fl{opacity:1}
.abx-arch .f5{stroke:rgba(196,178,255,.45);animation-direction:reverse}
.nd{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,0) translateY(12px);width:min(250px,26%);padding:14px 16px;border-radius:16px;text-align:left;
  background:rgba(14,16,20,.92);border:1px solid rgba(255,255,255,.08);opacity:0;transition:opacity .8s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.n-core,.n-in,.n-nest,.n-est{transform:translate(-50%,-50%) translateY(12px)}
.abx-tech.in .nd{opacity:1;transform:translate(-50%,0)}
.abx-tech.in .n-core,.abx-tech.in .n-in,.abx-tech.in .n-nest,.abx-tech.in .n-est{transform:translate(-50%,-50%)}
.abx-tech.in .n-core{transition-delay:.1s}.abx-tech.in .n-nest{transition-delay:.35s}.abx-tech.in .n-est{transition-delay:.5s}.abx-tech.in .n-ai{transition-delay:.65s}
.nd b{display:block;font:600 14px var(--display);color:#eef1f5;letter-spacing:-.005em}
.nd span{display:block;margin-top:4px;font-size:12.5px;line-height:1.45;color:#8a92a0}
.n-core{border-color:rgba(169,220,255,.35);box-shadow:0 0 0 1px rgba(169,220,255,.06),0 20px 50px -25px rgba(120,170,255,.35)}
.n-ai{border-color:rgba(196,178,255,.25)}.n-in{width:min(170px,18%)}

.abx-vis2{position:relative;overflow:hidden;padding:clamp(90px,16vh,180px) 0;text-align:center}
.abx-rings{position:absolute;left:50%;top:50%;width:min(720px,120vw);transform:translate(-50%,-50%);opacity:.5;pointer-events:none}
.abx-rings *{fill:none;stroke:rgba(169,220,255,.1);stroke-width:1;vector-effect:non-scaling-stroke}
.abx-rings circle{transform-origin:300px 300px;animation:abxSpin 90s linear infinite}
.abx-rings circle:nth-child(2){stroke-dasharray:2 10;animation-duration:140s;animation-direction:reverse}
.abx-vis2 h3{position:relative;background:linear-gradient(180deg,#fff,#c9d2de);-webkit-background-clip:text;background-clip:text;color:transparent}
.abx-vis2 p{position:relative;max-width:700px;margin:24px auto 0;font-size:clamp(17px,1.6vw,21px);line-height:1.55;color:#a3abb8;text-wrap:balance}
.abx-vis2 p.sub{font-size:clamp(14px,1.2vw,16px);color:#6f7785;margin-top:18px}

.abx-end{padding:clamp(80px,14vh,160px) 0 clamp(50px,8vh,90px);text-align:center;border-top:1px solid rgba(255,255,255,.06)}
.abx-end h3{font-size:clamp(34px,5vw,68px)}
.abx-end h3 span{display:block;margin-top:10px;font-size:.5em;font-weight:500;letter-spacing:-.015em;color:#8f97a5}
.abx-cta{margin-top:36px;padding:14px 28px;font-size:16px;border-radius:999px}

/* reveal on enter */
.abx-why,.abx-tech>h3,.abx-tech>.abx-k,.abx-tech>.abx-lead,.abx-four>h3,.abx-four>.abx-k,.abx-vis2>h3,.abx-vis2>p,.abx-vis2>.abx-k,.abx-end>*{transition:opacity .9s ease,transform 1s cubic-bezier(.2,.7,.2,1)}
.about-scroll>section:not(.in):not(.abx-open) :is(h3,.abx-k,.abx-lead,p,.abx-cta){opacity:0;transform:translateY(16px)}
.abx-ws p,.nd span{opacity:1!important;transform:none!important}

@keyframes abxUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes abxLine{to{stroke-dashoffset:0}}
@keyframes abxDrift{from{transform:translate(0,0)}to{transform:translate(-24px,12px)}}
@keyframes abxHint{0%,100%{opacity:.2;transform:scaleY(.6);transform-origin:top}50%{opacity:1;transform:scaleY(1)}}
@keyframes abxFlow{to{stroke-dashoffset:-22}}
@keyframes abxSpin{to{transform:rotate(360deg)}}
@media (max-width:900px){
  .abx-why{grid-template-columns:1fr}.abx-ws{grid-template-columns:1fr}
  .abx-arch{aspect-ratio:auto;display:grid;gap:10px}.abx-arch svg{display:none}
  .nd,.abx-tech.in .nd{position:relative;left:auto;top:auto;width:auto;transform:none!important}
}
@media (max-width:560px){.abx-ws{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){
  .about *{animation:none!important;transition:none!important}
  .about-scroll>section :is(h3,.abx-k,.abx-lead,p,.abx-cta,h2),.abx-ws article,.nd,.abx-arch .fl,.ws3 .np,.ws4 .geo,.ws4 .dm,.ws2 .tot{opacity:1!important;transform:none!important}
  .abx-bg path,.abx-bg circle,.ws2 .bar,.ws4 .sk{stroke-dashoffset:0!important}
  .lib-p{--p:1}
}

/* report details, firm, customers */
.rep-dlg{width:min(680px,94vw);max-height:92vh;overflow:auto}
.rep-dlg .rep-sub{margin:0;color:var(--muted);font-size:13px}
.rep-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rep-dlg fieldset{border:0;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
.rep-dlg h4{margin:4px 0 0;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-2)}
.rep-dlg .wide{grid-column:1/-1}
.rep-dlg select,.rep-dlg textarea{min-height:38px;border-radius:10px;border:0;background:rgba(118,118,128,.18);color:#fff;padding:8px 10px;font:inherit}
.rep-dlg textarea{resize:vertical}
.rep-dlg label.check{display:flex;align-items:center;gap:8px;grid-column:1/-1}
.rep-dlg label.check input{height:auto;width:auto}
.rep-dlg input[type=file]{height:auto;padding:6px 0;background:none;font-size:12px;min-width:0}
.rep-pick{display:flex;gap:8px;align-items:center}
.rep-pick select{flex:1;min-width:0}
.rep-cust{margin:0;color:var(--text-2);font-size:13px;min-height:18px}
.rep-logo{display:flex;align-items:center;gap:8px;min-width:0}
.rep-logo img{max-height:34px;max-width:90px;border-radius:4px;background:#fff;padding:2px}
.edit-dlg .pair2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cust-dlg{width:min(980px,96vw);padding:0}
.cust-wrap{display:grid;grid-template-columns:280px 1fr;min-height:520px}
.cust-list{border-right:1px solid rgba(255,255,255,.08);padding:20px;display:grid;grid-template-rows:auto auto 1fr;gap:12px;min-width:0}
.cust-list input{height:36px}
#custItems{overflow:auto;max-height:60vh;display:grid;gap:2px;align-content:start}
#custItems button{display:flex;align-items:center;gap:10px;text-align:left;border:0;background:none;color:var(--text);padding:8px 10px;border-radius:10px;font:inherit;cursor:pointer;min-width:0}
#custItems button:hover{background:rgba(255,255,255,.06)}
#custItems button.on{background:rgba(10,132,255,.22)}
#custItems .av{flex:none;width:30px;height:30px;border-radius:8px;background:#fff center/contain no-repeat;display:grid;place-items:center;color:#1d1d1f;font-weight:700;font-size:13px}
#custItems span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#custItems small{display:block;color:var(--muted);font-size:11px}
#custItems .empty{color:var(--muted);font-size:13px;padding:8px}
#custForm{padding:20px;display:grid;gap:14px;align-content:start}
#custForm .grow{flex:1}
.btn.danger{color:#ff6b6b}
@media (max-width:720px){.cust-wrap{grid-template-columns:1fr}.cust-list{border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}#custItems{max-height:28vh}}
@media (max-width:620px){.rep-dlg fieldset{grid-template-columns:1fr}}

/* upload: package drawing or part files */
.upload-modes{display:grid;grid-template-columns:1fr 1fr;gap:14px;width:min(640px,100%);margin:6px auto 0}
.up-card{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;column-gap:14px;row-gap:3px;align-items:start;text-align:left;padding:16px 18px;border-radius:16px;
  border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:var(--text);font:inherit;cursor:pointer;transition:transform .2s,border-color .2s,background .2s,box-shadow .2s}
.up-card i{grid-row:1/3;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:rgba(10,132,255,.14);color:#64d2ff}
.up-card svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}
.up-card b{font-size:15px;font-weight:600}
.up-card small{color:var(--muted);font-size:12.5px;line-height:1.45}
.up-card:hover{transform:translateY(-2px);border-color:rgba(100,210,255,.5);background:rgba(10,132,255,.08)}
.up-card:focus-visible{outline:2px solid #0a84ff;outline-offset:2px}
.up-card[data-upload=package]{border-color:rgba(10,132,255,.5);background:linear-gradient(180deg,rgba(10,132,255,.16),rgba(10,132,255,.05))}
@media (max-width:620px){.upload-modes{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.up-card{transition:none}.up-card:hover{transform:none}}
/* top bar: the project name gives way to the actions */
.topbar .job{flex:1 1 0;overflow:hidden}
.topbar .job-name,.topbar .job-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.topbar .top-actions{flex:none}
@media (max-width:1400px){.topbar .job-meta{display:none}}
body[data-ws=extract] .up-card[data-upload=single],body[data-ws=extract] .up-card[data-upload=manual]{display:none}
body[data-ws=extract] .upload-modes{grid-template-columns:minmax(0,320px);justify-content:center}
body[data-ws=studio] #dlAll{display:none}

/* performance: the sheet is painted on its own, small moving lights on their own layers */
.sheet-stage{contain:layout paint}

/* ============================================================ Teklif Studio: the quote desk */
.desk{display:grid;gap:14px;padding:14px 16px 24px}
.dk-head{display:grid;grid-template-columns:minmax(260px,1.6fr) minmax(110px,.6fr) minmax(160px,1fr) minmax(170px,.9fr);gap:12px;align-items:end;padding:14px 16px;border-radius:16px;border:1px solid rgba(255,255,255,.09);background:linear-gradient(180deg,rgba(10,132,255,.10),rgba(255,255,255,.02))}
.dk-k,.dk-f>span{display:block;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.dk-cust small{display:block;margin-top:6px;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dk-pick{display:flex;gap:8px}
.dk-pick select{flex:1;min-width:0}
.desk select,.desk input[type=text],.desk input[type=number]{height:36px;border-radius:10px;border:1px solid transparent;background:rgba(118,118,128,.18);color:#fff;padding:0 10px;font:inherit;width:100%;min-width:0}
.desk select:focus,.desk input:focus{outline:2px solid #0a84ff;outline-offset:0}
.dk-from b{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dk-from{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:8px}
.dk-from .dk-k{grid-column:1/-1}
.dk-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}
.dk-lines{border-radius:16px;border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.02);overflow:hidden}
.dk-lines table{width:100%;border-collapse:collapse;font-size:13px}
.dk-lines th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.03);position:sticky;top:0}
.dk-lines td{padding:8px 12px;border-bottom:1px solid rgba(255,255,255,.05);vertical-align:middle}
.dk-lines tr:hover td{background:rgba(255,255,255,.025)}
.dk-lines td b{display:block;font-weight:600}
.dk-lines td small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.dk-lines .th{width:62px}
.dk-lines .th svg{width:52px;height:34px;display:block}
.dk-lines .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.dk-lines .muted,.ql .muted{color:var(--muted)}
.dk-lines .strong,.ql .strong{font-weight:600}
.dk-lines .warn{color:#ffb340}
.dk-price{width:104px!important;text-align:right;height:32px!important}
.dk-price.typed{border-color:#ffb340!important;background:rgba(255,179,64,.12)!important}
.dk-lines .q-note{margin:0;padding:10px 12px}
.dk-side{display:grid;gap:12px;position:sticky;top:8px}
.dk-box{border-radius:16px;border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.03);padding:14px;display:grid;gap:10px}
.dk-box h4{margin:0;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}
.dk-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dk-f{display:block;min-width:0}
.dk-chk{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--text-2)}
.dk-tot{gap:0;padding:6px 14px}
.dk-tot>div{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:13.5px}
.dk-tot>div span{color:var(--text-2)}
.dk-tot>div b{font-variant-numeric:tabular-nums;font-weight:600}
.dk-tot .grand{margin:6px -8px;padding:12px 10px;border:0;border-radius:12px;background:linear-gradient(135deg,#0a84ff,#5ab8ff);}
.dk-tot .grand span{color:#fff;font-weight:600}
.dk-tot .grand b{color:#fff;font-size:18px;font-weight:700}
.dk-tot .sub{font-size:12px;border:0;padding:3px 0}
.dk-tot .sub span{color:var(--muted)}
.dk-tot .sub.pos b{color:#30d158}
.dk-tot .sub.neg b{color:#ff6961}
.dk-acts{display:grid;gap:8px}
.dk-acts .btn{width:100%;justify-content:center}
.dk-prod summary{cursor:pointer;font-size:13px;color:var(--text-2)}
.dk-prod dl{margin:4px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
.dk-prod dt{font-size:11px;color:var(--muted)}
.dk-prod dd{margin:0;font-size:13px;font-weight:500}
.dk-prod .q-sheets{grid-template-columns:repeat(2,1fr)}
@media (max-width:1280px){.dk-grid{grid-template-columns:1fr}.dk-side{position:static}.dk-head{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.dk-head{grid-template-columns:1fr}.dk-lines{overflow-x:auto}.dk-lines table{min-width:560px}}

/* quotes list */
.ql-dlg{width:min(1080px,96vw)}
.ql-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}
.ql-stats div{padding:12px 14px;border-radius:12px;background:rgba(118,118,128,.14)}
.ql-stats span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.ql-stats b{font-size:18px;font-variant-numeric:tabular-nums}
.ql-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.ql-tools input{flex:1;min-width:200px;height:36px}
.ql-wrap{max-height:58vh;overflow:auto;border-radius:12px;border:1px solid rgba(255,255,255,.08)}
.ql{width:100%;border-collapse:collapse;font-size:13px}
.ql th{position:sticky;top:0;background:#1c1c1e;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:9px 10px}
.ql td{padding:8px 10px;border-top:1px solid rgba(255,255,255,.06);white-space:nowrap}
.ql .num{text-align:right}
.ql td .btn{padding:4px 10px;font-size:12px}
.ql select{height:30px;border-radius:8px;border:0;padding:0 8px;font:inherit;font-size:12.5px;color:#fff;background:rgba(118,118,128,.2)}
.ql select.st-gonderildi{background:rgba(10,132,255,.25)}
.ql select.st-onaylandi{background:rgba(48,209,88,.25)}
.ql select.st-reddedildi{background:rgba(255,105,97,.22)}
.ql .ql-lines td{white-space:normal;color:var(--text-2);font-size:12.5px;background:rgba(255,255,255,.02)}
.ql .ql-lines span{display:inline-block;margin:2px 14px 2px 0}
.ql .empty{text-align:center;color:var(--muted);padding:26px}
@media (max-width:720px){.ql-stats{grid-template-columns:1fr 1fr}.ql-wrap{overflow-x:auto}}

/* the desk follows the width of the middle area, not of the window */
.desk{container-type:inline-size}
.dk-lines td b{white-space:nowrap}
@container (max-width:980px){
  .dk-grid{grid-template-columns:1fr}
  .dk-side{position:static;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));align-items:start}
  .dk-head{grid-template-columns:1fr 1fr}
}
@container (max-width:560px){.dk-head{grid-template-columns:1fr}.dk-lines{overflow-x:auto}.dk-lines table{min-width:520px}}
/* downloading part files belongs to the extraction area */
body[data-ws=quote] #dlAll{display:none}

/* ============================================================ Nest Studio: Teklif tab; Fiyat Hesapla */
body:not([data-ws=studio]) .stage-tabs [data-view=offer]{display:none}
#viewOffer{overflow:auto}
/* Fiyat Hesapla: no settings, no cost table */
body[data-ws=quote] .settings-pane,body[data-ws=quote] #exportMenu,body[data-ws=quote] .stage-tabs [data-view=report]{display:none}
body[data-ws=quote] .station{grid-template-columns:330px minmax(0,1fr)}
@media (max-width:900px){body[data-ws=quote] .station{grid-template-columns:1fr}}
.est-idle .btn{margin-top:10px}
.est{max-width:760px;margin:0 auto;padding:28px 20px 40px;display:grid;gap:16px}
.est-card{border-radius:22px;padding:28px 30px;background:radial-gradient(500px 220px at 15% 0%,rgba(10,132,255,.32),transparent 70%),linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));border:1px solid rgba(100,170,255,.3);box-shadow:0 30px 80px rgba(0,30,90,.35)}
.est-k{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#64d2ff}
.est-range{font-size:clamp(40px,6vw,64px);font-weight:700;letter-spacing:-.03em;line-height:1.1;margin:8px 0 6px;font-variant-numeric:tabular-nums}
.est-range small{font-size:.5em;color:var(--text-2);font-weight:600}
.est-sub{color:var(--text-2);font-size:15px}
.est-card p{margin:14px 0 0;color:var(--muted);font-size:13px;line-height:1.5}
.est-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.est-facts div{border-radius:14px;padding:14px 16px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);min-width:0}
.est-facts span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.est-facts b{display:block;font-size:16px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.est-facts small{color:var(--muted);font-size:12px}
.est-mat{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.est-mat>span{font-size:13px;color:var(--text-2)}
.est-mat small{color:var(--muted);font-size:12px}
.est-lines{border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02);padding:12px 16px}
.est-lines summary{cursor:pointer;color:var(--text-2);font-size:14px}
.est-lines table{width:100%;border-collapse:collapse;margin-top:10px;font-size:13px}
.est-lines td{padding:7px 0;border-top:1px solid rgba(255,255,255,.06)}
.est-lines td small{display:block;color:var(--muted);font-size:11.5px}
.est-lines .num{text-align:right;white-space:nowrap;padding-left:14px;font-variant-numeric:tabular-nums}
@media (max-width:620px){.est-facts{grid-template-columns:1fr}}
/* admin: market averages */
.market{margin:0 0 16px;padding:16px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:rgba(10,132,255,.06);display:grid;gap:12px}
.mk-head h3{margin:0;font-size:15px}
.mk-head p{margin:4px 0 0;color:var(--muted);font-size:12.5px}
.mk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.mk-grid label{display:grid;gap:4px;font-size:12.5px;color:var(--text-2)}
.mk-grid small{color:var(--muted)}
.mk-grid input,.mk-grid select{height:34px;border-radius:9px;border:0;background:rgba(118,118,128,.2);color:#fff;padding:0 10px;font:inherit}
.mk-acts{display:flex;justify-content:flex-end;align-items:center;gap:12px}
.mk-acts span{color:var(--muted);font-size:12.5px}
body[data-ws=quote] .stage-tabs{display:none}

/* sheet price per material */
.sub-legend{margin:2px 0 6px;font-size:12.5px;color:var(--text-2);display:flex;justify-content:space-between}
.trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}
.trio .field{font-size:12px}

/* ============================================================ DXF Studio: the package gives up its parts, one by one
   14 s loop; each part: lit in the package, copied out to its slot (scaled), named; the package keeps a ghost.
   transform and opacity only. */
.pkg-art{display:none;width:min(980px,96%);height:auto}
body[data-ws=extract] .pkg-art{display:block}
body[data-ws=extract] .plate-art{display:none}
.pkg-sheet>rect:first-child{fill:#101826;stroke:rgba(169,220,255,.45);stroke-width:1.5}
.pkg-cell{fill:none;stroke:rgba(169,220,255,.16);stroke-dasharray:4 5}
.pkg-lbl{fill:#7f93ad;font:600 10px var(--font);letter-spacing:.06em;text-anchor:middle}
.pkg-title{fill:rgba(169,220,255,.06);stroke:rgba(169,220,255,.3)}
.pkg-ttl{fill:#9fb3cc;font:600 12px var(--font);letter-spacing:.12em}
.pkg-head{fill:#64d2ff;font:600 12px var(--font);letter-spacing:.24em}
.pkg-slot{fill:rgba(255,255,255,.025);stroke:rgba(169,220,255,.14)}
.pkg-flow{fill:none;stroke:rgba(169,220,255,.35);stroke-width:1.5;stroke-dasharray:5 7}
.pkg-arrow path{fill:none;stroke:rgba(169,220,255,.6);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pkg-dot{fill:#bfe6ff;animation:pkgDot 1.15s linear infinite}
@keyframes pkgDot{from{transform:translateX(0);opacity:0}15%{opacity:1}85%{opacity:1}to{transform:translateX(176px);opacity:0}}
.pkg-scan{animation:pkgScan 4.6s cubic-bezier(.45,0,.55,1) infinite}
@keyframes pkgScan{0%{transform:translateX(0);opacity:0}10%{opacity:1}90%{opacity:1}100%{transform:translateX(400px);opacity:0}}
.xp-src{stroke:#0b1220;stroke-width:1;fill-rule:evenodd;animation:xpSrc 14s ease-in-out infinite;animation-delay:var(--d)}
@keyframes xpSrc{0%{opacity:1}3%{opacity:1;stroke:#fff;stroke-width:3}9%{opacity:.18;stroke-width:1}84%{opacity:.18}94%,100%{opacity:1}}
.xp-fly{transform-box:fill-box;transform-origin:0 0;opacity:0;animation:xpFly 14s cubic-bezier(.55,0,.25,1) infinite;animation-delay:var(--d)}
.xp-fly path{stroke:#0b1220;stroke-width:1;fill-rule:evenodd}
@keyframes xpFly{0%,2%{opacity:0;transform:translate(0,0) scale(1)}4%{opacity:1;transform:translate(0,0) scale(1.06)}11%{opacity:1;transform:translate(var(--dx),var(--dy)) scale(.62)}84%{opacity:1;transform:translate(var(--dx),var(--dy)) scale(.62)}92%,100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.62)}}
.xp-tag,.xp-sub{opacity:0;animation:xpTag 14s ease infinite;animation-delay:var(--d)}
.xp-tag{fill:#e8f6ff;font:700 15px var(--font);letter-spacing:.04em}
.xp-sub{fill:#7f93ad;font:500 11px var(--font)}
@keyframes xpTag{0%,10%{opacity:0;transform:translateX(-6px)}13%{opacity:1;transform:none}84%{opacity:1}92%,100%{opacity:0}}
@media (prefers-reduced-motion:reduce){
  .pkg-scan,.pkg-dot{animation:none;opacity:0}
  .xp-src{animation:none;opacity:.18}
  .xp-fly{animation:none;opacity:1;transform:translate(var(--dx),var(--dy)) scale(.62)}
  .xp-tag,.xp-sub{animation:none;opacity:1}
}

/* texts that belong to one area */
.c-ext,.c-quote{display:none}
body[data-ws=extract] .c-ext,body[data-ws=quote] .c-quote{display:revert}
body[data-ws=extract] .c-nest,body[data-ws=quote] .c-nest{display:none}

/* ============================================================ Nest Studio: material / thickness lots
   Graphite panels, one ice-blue accent, hairlines. The library is a tree (material, then thickness); every thickness is
   a lot with its own settings, layout and optimisation record. */
.part-tree{flex:1;overflow:auto;padding:6px 8px 10px;display:grid;gap:10px;align-content:start}
.part-tree .part-list{overflow:visible;flex:none;padding:2px 0 4px 10px}
.mat{display:grid;gap:4px}
.mat-head{display:flex;align-items:baseline;gap:8px;padding:6px 6px 2px;font-size:12px;color:var(--muted)}
.mat-head b{font-size:13px;font-weight:650;letter-spacing:.02em;color:var(--text)}
.mat-head small{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.mat-head span{margin-left:auto;font-size:11.5px}
.lot{border:1px solid rgba(255,255,255,.07);border-radius:12px;background:rgba(255,255,255,.02);transition:border-color .15s,background .15s}
.lot.on{border-color:rgba(169,220,255,.55);background:rgba(90,184,255,.07);box-shadow:inset 2px 0 0 var(--ice,#a9dcff)}
.lot-head{width:100%;display:grid;grid-template-columns:14px auto 1fr;grid-template-rows:auto auto;column-gap:8px;row-gap:2px;align-items:center;padding:8px 10px;border:0;background:none;text-align:left;border-radius:12px}
.lot-head:hover{background:rgba(255,255,255,.03)}
.chev{grid-row:1/3;width:14px;height:14px;display:grid;place-items:center;border-radius:4px;cursor:pointer}
.chev::before{content:"";width:6px;height:6px;border-right:1.5px solid var(--text-2);border-bottom:1.5px solid var(--text-2);transform:rotate(-45deg);transition:transform .15s}
.lot.open>.lot-head .chev::before{transform:rotate(45deg) translate(-1px,-1px)}
.chev:hover{background:rgba(255,255,255,.08)}
.lt-th{font-size:14px;font-weight:650;color:#fff;font-variant-numeric:tabular-nums}
.lt-st{justify-self:end;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:2px 8px;border-radius:999px;border:1px solid rgba(255,255,255,.1)}
.st-tamam .lt-st{color:#30d158;border-color:rgba(48,209,88,.35)}
.st-hesaplaniyor .lt-st{color:var(--ice,#a9dcff);border-color:rgba(169,220,255,.5);animation:ltPulse 1.6s ease-in-out infinite}
.st-sirada .lt-st{color:var(--ice-2,#5ab8ff);border-color:rgba(90,184,255,.35)}
.st-eski .lt-st,.st-hata .lt-st{color:#ffd60a;border-color:rgba(255,214,10,.35)}
@keyframes ltPulse{50%{opacity:.45}}
.lt-nums{grid-column:2/4;display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.lt-nums em{font-style:normal;color:#ffd60a}
.pl-st{display:inline-block;margin-left:6px;padding:0 6px;border-radius:6px;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}
.pl-st.ok{color:#30d158;background:rgba(48,209,88,.12)}
.pl-st.miss{color:#ffd60a;background:rgba(255,214,10,.12)}
.mat.loose .mat-head b{color:#ffd60a}
/* settings of the selected lot */
.lot-headbox{display:grid;gap:2px;padding:10px 12px;margin:0 0 12px;border-radius:12px;border:1px solid rgba(169,220,255,.28);background:linear-gradient(180deg,rgba(90,184,255,.09),rgba(90,184,255,.02))}
.lot-headbox .lh-k{font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ice-2,#5ab8ff)}
.lot-headbox b{font-size:16px;color:#fff}
.lot-headbox small{font-size:12px;color:var(--muted)}
.lot-headbox:empty{display:none}
.apply-all{justify-self:start;margin-top:4px;padding:6px 10px;font-size:12.5px}
#calcAll{margin-top:8px}
/* result cards: one per lot, plus the project */
.lot-strip{display:flex;gap:10px;overflow-x:auto;padding:12px 16px 4px;scrollbar-width:thin}
.lc{flex:0 0 auto;min-width:208px;display:grid;gap:4px;align-content:start;text-align:left;padding:10px 12px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.025);color:inherit;transition:border-color .15s,background .15s}
button.lc:hover{border-color:rgba(169,220,255,.35)}
.lc.on{border-color:rgba(169,220,255,.7);background:rgba(90,184,255,.08)}
.lc-k{display:flex;justify-content:space-between;gap:8px;font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.lc-k i{font-style:normal;letter-spacing:.04em}
.lc.st-tamam .lc-k i{color:#30d158}.lc.st-eski .lc-k i,.lc.st-hata .lc-k i{color:#ffd60a}.lc.st-hesaplaniyor .lc-k i{color:var(--ice,#a9dcff)}
.lc>b{font-size:14.5px;font-weight:650;color:#fff}
.lc dl{margin:2px 0 0;display:grid;grid-template-columns:repeat(5,auto);gap:2px 12px}
.lc.total dl{grid-template-columns:repeat(4,auto)}
.lc dt{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.lc dd{margin:0;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.lc.total{border-style:dashed;border-color:rgba(255,255,255,.14);background:rgba(255,255,255,.015)}
.lc-miss{font-size:11.5px;color:#ffd60a}
.lc-ok{font-size:11.5px;color:#30d158}
.lc-run{justify-self:start;margin-top:2px;padding:3px 10px;border-radius:999px;border:1px solid rgba(169,220,255,.45);background:rgba(90,184,255,.1);color:var(--ice,#a9dcff);font-size:12px;font-weight:600}
.lot-idle{margin-top:6vh}
.lot-idle .li-k{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ice-2,#5ab8ff)}
.lot-idle .li-acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:6px}
.lot-idle .li-acts .btn{width:auto}
.lot-idle .li-msg{color:#ffd60a}
.board-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.hist-btn{margin-left:auto;padding:6px 12px;font-size:12.5px}

/* ---------- optimisation console */
.opt{display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto;gap:10px;height:100%;min-height:560px;padding:12px 16px 12px}
.opt-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.oh-lot{display:grid;line-height:1.2}
.oh-lot span{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ice-2,#5ab8ff)}
.oh-lot b{font-size:18px;color:#fff;font-weight:650}
.oh-state{display:flex;align-items:baseline;gap:8px;min-width:0;flex:1;font-size:13px}
.oh-state b{font-weight:600;white-space:nowrap}
.oh-state small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.oh-state .dot{width:7px;height:7px;border-radius:50%;background:var(--muted);flex:none;align-self:center}
.oh-state .dot.on{background:var(--ice,#a9dcff);box-shadow:0 0 8px var(--ice,#a9dcff);animation:ltPulse 1.4s ease-in-out infinite}
.oh-acts{display:flex;gap:10px;align-items:center}
.oh-sel{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.oh-sel select{height:30px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.05);color:#fff;padding:0 8px;font-size:12.5px}
.opt-run{height:2px;border-radius:2px;background:rgba(255,255,255,.08);overflow:hidden}
.opt-run i{display:block;height:100%;width:0;background:var(--ice,#a9dcff);transition:width .4s linear}
.opt-stats{margin:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.os{padding:8px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.025);min-width:0}
.os dt{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.os dd{margin:2px 0 0;font-size:16px;font-weight:650;color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.os small{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.os.lead{border-color:rgba(169,220,255,.35);background:rgba(90,184,255,.06)}
.os.lead dd{color:var(--ice,#a9dcff)}
.opt-main{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:10px;min-height:0}
.opt-view{position:relative;margin:0;min-height:320px;display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;border-radius:12px;border:1px solid rgba(169,220,255,.16);background:#05080f;overflow:hidden}
.opt-view:fullscreen{border-radius:0;padding:10px}
.opt-cap{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:8px 12px;font-size:12.5px;color:var(--text-2);border-bottom:1px solid rgba(255,255,255,.06)}
.opt-cap b{color:#fff}
.opt-cap small{color:var(--muted)}
.opt-cap em{flex-basis:100%;font-style:normal;color:#ffd60a;font-size:12px}
.opt-cap .tag{font-size:10px;font-weight:700;letter-spacing:.12em;padding:2px 7px;border-radius:5px;border:1px solid rgba(255,255,255,.18);color:var(--text-2)}
.opt-cap .tag.best{color:#04121f;background:var(--ice,#a9dcff);border-color:transparent}
.opt-cap .tag.cand{color:var(--ice,#a9dcff);border-color:rgba(169,220,255,.45)}
.live-pill{margin-left:auto;font-size:10px;font-weight:700;letter-spacing:.14em;color:#ff453a}
.live-pill::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#ff453a;margin-right:6px;vertical-align:1px;animation:ltPulse 1.2s ease-in-out infinite}
.opt-scene{position:relative;min-height:0;cursor:grab;touch-action:none}
.opt-scene:active{cursor:grabbing}
.opt-scene.nodraw .scene-svg{opacity:.25}
.opt-fs{position:absolute;right:8px;bottom:8px;width:30px;height:30px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:rgba(10,14,22,.8);color:var(--text-2)}
.scene-svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.scene-svg .sc-bed{fill:#0b1220;stroke:rgba(169,220,255,.55);stroke-width:1}
.scene-svg .sc-g1{fill:none;stroke:rgba(169,220,255,.06);stroke-width:1}
.scene-svg .sc-g5{fill:none;stroke:rgba(169,220,255,.13);stroke-width:1}
.scene-svg .sc-mg{fill:none;stroke:rgba(169,220,255,.22);stroke-width:1;stroke-dasharray:4 4}
.scene-svg .sp{fill:var(--pf,#d9dee8);stroke:var(--ps,#8b95a8);stroke-width:.8}
.opt-scene.anim .sp{transition:transform .55s cubic-bezier(.2,.7,.2,1)}
.scene-svg .sp.mv{stroke:var(--ice,#a9dcff);stroke-width:1.6}
.opt-scene.anim .sp.nw{animation:spIn .45s ease-out}
@keyframes spIn{from{opacity:0}}
.scene-svg.flash .sc-bed{animation:bedFlash 1s ease-out}
@keyframes bedFlash{0%{stroke:#fff;stroke-width:3}100%{stroke:rgba(169,220,255,.55);stroke-width:1}}
.scene-svg .sc-lb{fill:var(--text-2);font-family:var(--font)}
.scene-svg .sc-lb-n{fill:#fff;font-weight:650;letter-spacing:.08em}
.scene-svg .sc-dim{fill:var(--muted);font-family:var(--font)}
.opt-side{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:8px;min-height:0}
.opt-charts{position:relative;display:grid;gap:8px;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.02)}
.ch{display:grid;gap:2px;cursor:crosshair}
.ch-head{display:flex;align-items:baseline;gap:8px;font-size:11.5px;color:var(--muted)}
.ch-head b{color:#fff;font-size:13px;font-variant-numeric:tabular-nums}
.ch-head small{margin-left:auto;font-size:10.5px}
.ch svg{width:100%;height:64px;display:block;overflow:visible}
.ch-grid{stroke:rgba(255,255,255,.07);stroke-width:1;fill:none}
.ch-dots{stroke:rgba(200,210,225,.35);stroke-width:3;stroke-linecap:round;fill:none}
.ch-best{stroke:var(--ice,#a9dcff);stroke-width:2;fill:none;stroke-linejoin:round}
.ch-mark{stroke:var(--ice,#a9dcff);stroke-width:7;stroke-linecap:round;fill:none}
.ch-cur{stroke:rgba(255,255,255,.35);stroke-width:1;stroke-dasharray:3 3}
.ch-x{stroke:#fff;stroke-width:1}
.ch-axis{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted)}
.ch-tip{position:absolute;top:6px;z-index:3;pointer-events:none;padding:6px 9px;border-radius:8px;background:#151b26;border:1px solid rgba(169,220,255,.3);font-size:11.5px;line-height:1.4;color:var(--text-2);white-space:nowrap;box-shadow:0 10px 30px rgba(0,0,0,.5)}
.ch-tip b{color:#fff}.ch-tip i{font-style:normal;color:var(--ice,#a9dcff)}.ch-tip small{color:var(--muted)}
.oc-empty{font-size:12px;margin:0}
.opt-hhead{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);padding:0 2px}
.opt-hhead b{color:var(--text);font-size:12.5px}
.opt-hhead label{display:flex;gap:6px;align-items:center}
.opt-hist{list-style:none;margin:0;padding:4px;overflow:auto;min-height:120px;border-radius:12px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.015)}
.hr{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:2px 10px;padding:6px 8px;border-radius:8px;font-size:12.5px;cursor:pointer;border:1px solid transparent}
.hr:hover{background:rgba(255,255,255,.04)}
.hr.on{border-color:rgba(169,220,255,.5);background:rgba(90,184,255,.08)}
.hr .hn{font-weight:600;color:var(--text-2);font-variant-numeric:tabular-nums}
.hr .hs,.hr .hu{font-variant-numeric:tabular-nums;color:#fff}
.hr small{grid-column:1/-1;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hr.best .hn{color:var(--ice,#a9dcff)}
.hr .hb{position:static;grid-row:1;grid-column:4;align-self:center;font-style:normal;font-size:9.5px;font-weight:700;letter-spacing:.1em;color:var(--ice,#a9dcff)}
.hr.snap .hn::after{content:"";display:inline-block;width:5px;height:5px;margin-left:6px;border-radius:1px;background:rgba(169,220,255,.6);vertical-align:2px}
.hr.more{cursor:default;color:var(--muted);font-size:11.5px;display:block}
.opt-ctl{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.opt-ctl button{height:32px;padding:0 12px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);font-size:12.5px;color:var(--text)}
.opt-ctl button:hover{border-color:rgba(169,220,255,.4)}
.opt-ctl button.on,.opt-ctl .oc-play{border-color:rgba(169,220,255,.55);color:var(--ice,#a9dcff)}
.opt-ctl .sep{width:1px;height:20px;background:rgba(255,255,255,.1);margin:0 4px}
.oc-note{margin-left:auto;font-size:11.5px;color:var(--muted)}
.opt-cmp{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) auto;gap:8px;padding:8px;min-height:0}
.cmp-col{display:grid;grid-template-rows:auto minmax(0,1fr);gap:6px;min-height:0}
.cmp-col label{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}
.cmp-col select{flex:1;height:28px;border-radius:7px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.05);color:#fff;font-size:12px}
.cmp-scene{position:relative;min-height:200px;border-radius:8px;border:1px solid rgba(255,255,255,.06)}
.cmp-tab{grid-column:1/-1;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}
.cmp-tab th,.cmp-tab td{padding:4px 10px;text-align:right;border-top:1px solid rgba(255,255,255,.06)}
.cmp-tab th{font-size:11px;color:var(--muted);font-weight:600}
.cmp-tab td:first-child,.cmp-tab th:first-child{text-align:left;color:var(--muted)}
.cmp-tab .up{color:#30d158}.cmp-tab .down{color:#ff6961}.cmp-tab .eq{color:var(--muted)}
@media (max-width:1300px){.opt-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:1100px){.opt-main{grid-template-columns:1fr}.opt-view{min-height:360px}.opt{height:auto}}
@media (prefers-reduced-motion:reduce){.opt-scene.anim .sp{transition:none}.st-hesaplaniyor .lt-st,.oh-state .dot.on,.live-pill::before{animation:none}}

/* ---------- editor: drafting grid, dimension lines, fullscreen, sheet change */
.sheet-svg .grid1{fill:none;stroke:rgba(169,220,255,.05);stroke-width:1;pointer-events:none}
.sheet-svg .grid5{fill:none;stroke:rgba(169,220,255,.12);stroke-width:1;pointer-events:none}
.sheet-svg .dims path{fill:none;stroke:rgba(169,220,255,.45);stroke-width:1}
.sheet-svg .dims text{fill:var(--muted);font-family:var(--font)}
#edSvg.sw{animation:sheetIn .2s ease-out}
@keyframes sheetIn{from{opacity:.35}}
.editor:fullscreen{background:#05080f;padding:12px;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;gap:8px}
.editor:fullscreen .sheet-stage{height:auto;min-height:0}
@media (prefers-reduced-motion:reduce){#edSvg.sw{animation:none}}

/* ---------- a calm nesting screen: the sheet is the screen; figures and cost on request */
body[data-ws=studio] #viewNest{padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px}
.nest-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lot-tabs{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0}
.lt-tab{display:flex;align-items:baseline;gap:8px;height:32px;padding:0 12px;border-radius:9px;border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.03);font-size:13px;font-weight:600;color:var(--text-2)}
.lt-tab small{font-weight:500;font-size:11.5px;color:var(--muted)}
.lt-tab:hover{border-color:rgba(169,220,255,.35)}
.lt-tab.on{color:#fff;border-color:rgba(169,220,255,.65);background:rgba(90,184,255,.1)}
.lt-tab.st-eski small,.lt-tab.st-bekliyor small{color:#ffd60a}
.nb-btn{height:32px;padding:0 12px;border-radius:9px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.03);font-size:12.5px;color:var(--text-2)}
.nb-btn:hover,.nb-btn.on{border-color:rgba(169,220,255,.55);color:var(--ice,#a9dcff)}
.sum-panel{display:grid;gap:8px;padding:10px;border-radius:12px;border:1px solid rgba(169,220,255,.18);background:rgba(6,10,20,.6)}
.sum-panel .lot-strip{padding:0}
#groupView{flex:1;min-height:0;display:flex;flex-direction:column}
body[data-ws=studio] #groupView .editor{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px}
body[data-ws=studio] .sheet-stage{flex:1;min-height:420px}
body[data-ws=studio] #edSvg{width:100%;height:100%;display:block;position:absolute;inset:0}
body[data-ws=studio] .method-note{display:none}
body[data-ws=studio] .thumbs{max-height:96px;overflow:auto}
body[data-ws=studio] .sheet-foot .muted{display:none}
/* Metalix-like sheet view: sheet list on the left, part numbers on the sheet, wide view */
.ed-body{flex:1;min-height:0;display:grid;grid-template-columns:172px minmax(0,1fr);gap:8px}
.sheet-list{display:flex;flex-direction:column;min-height:0;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02);font-size:12px}
.sl-head,.sl-foot{display:flex;justify-content:space-between;align-items:baseline;padding:8px 10px;color:var(--muted)}
.sl-head b{color:#fff;font-size:12.5px}
.sl-foot{border-top:1px solid rgba(255,255,255,.07);font-size:11.5px}
.sl-foot b.ok{color:#30d158}.sl-foot b.miss{color:#ffd60a}
.sl-rows{flex:1;overflow:auto;padding:0 4px}
.sl-row{width:100%;display:grid;grid-template-columns:20px 1fr auto;grid-template-rows:auto auto;gap:0 6px;padding:6px;border-radius:7px;border:1px solid transparent;background:none;text-align:left;color:var(--text-2)}
.sl-row:hover{background:rgba(255,255,255,.04)}
.sl-row.on{border-color:rgba(169,220,255,.55);background:rgba(90,184,255,.08);color:#fff}
.sl-n{grid-row:1/3;color:var(--muted);font-variant-numeric:tabular-nums}
.sl-d{font-variant-numeric:tabular-nums;white-space:nowrap}
.sl-c{color:var(--ice,#a9dcff);font-variant-numeric:tabular-nums}
.sl-u{grid-column:2/4;font-size:11px;color:var(--muted)}
body[data-ws=studio] .thumbs{display:none}
.sheet-svg .pids text{fill:#0a0f18;font-weight:700;font-family:var(--font);text-anchor:middle;dominant-baseline:central;pointer-events:none;paint-order:stroke;stroke:rgba(255,255,255,.55);stroke-width:2px;vector-effect:non-scaling-stroke}
.pid-n{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;margin-right:2px;border-radius:5px;background:rgba(169,220,255,.16);color:var(--ice,#a9dcff);font-size:11px}
body.wide[data-ws=studio] .station{grid-template-columns:minmax(0,1fr)}
body.wide[data-ws=studio] .parts-pane,body.wide[data-ws=studio] .settings-pane{display:none}
@media (max-width:900px){.ed-body{grid-template-columns:1fr}.sheet-list{max-height:150px}}

/* ============================================================ Nest Studio: "Kalibre grafit"
   A calm engineering workspace. Neutral graphite (no navy), flat panels with hairlines, no glows or corner marks,
   one cool accent for selection and state, the warm laser colour only for the act of cutting. The sheet is the
   brightest surface on the screen; everything else steps back. */
body[data-ws=studio]{--g0:#0f1012;--g1:#16181b;--g2:#1c1f23;--g3:#23272c;--line:rgba(255,255,255,.07);--line-2:rgba(255,255,255,.12);
  --ice:#8fd0ff;--ice-2:#5fb3f0;--laser:#ffa24c;--edge:var(--line);--edge-2:var(--line-2);
  --text:#eceef1;--text-2:#b3b8c1;--muted:#7f8590;background:var(--g0)}
body[data-ws=studio] .topbar{background:var(--g0);border-bottom:1px solid var(--line);backdrop-filter:none}
body[data-ws=studio] .ws-badge{border:1px solid var(--line-2);background:transparent;color:var(--text-2);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;display:inline-flex}
body[data-ws=studio] .ws-badge::before{background:var(--ice);box-shadow:none;animation:none}
body[data-ws=studio] .station{gap:10px;padding:10px}
body[data-ws=studio] .pane,body[data-ws=studio] .stage{background:var(--g1);border:1px solid var(--line);border-radius:14px;box-shadow:none;backdrop-filter:none}
body[data-ws=studio] .pane::before,body[data-ws=studio] .stage::before,body[data-ws=studio] .pane::after,body[data-ws=studio] .stage::after{content:none}
body[data-ws=studio] .pane-head,body[data-ws=studio] .pane-foot,body[data-ws=studio] .status,body[data-ws=studio] .stage-tabs{border-color:var(--line)}
body[data-ws=studio] .pane-head h2{font-size:15px}
body[data-ws=studio] .stage-tabs .tab.on{color:#fff;box-shadow:inset 0 -2px 0 var(--ice)}
body[data-ws=studio] .settings-pane legend::before{background:var(--ice);box-shadow:none;transform:none;border-radius:50%}
body[data-ws=studio] .status{font-size:12px;color:var(--text-2)}
body[data-ws=studio] .status::before{content:none}
body[data-ws=studio] .field input,body[data-ws=studio] .field select,body[data-ws=studio] .pane-head input[type=search],body[data-ws=studio] .qty{background:var(--g2);border:1px solid var(--line)}
body[data-ws=studio] .mode{background:var(--g2);border:1px solid var(--line)}
body[data-ws=studio] .mode.on,body[data-ws=studio] [data-mode].on{border-color:var(--ice)!important;box-shadow:none;background:rgba(143,208,255,.07)}
body[data-ws=studio] #calculate:not(:disabled){background:var(--ice);color:#06121e;font-weight:700;box-shadow:none}
body[data-ws=studio] #calculate:not(:disabled):hover{background:#b3e0ff;transform:none}
body[data-ws=studio] #calculate::after{content:none}
body[data-ws=studio] .btn.ghost{background:transparent;border-color:var(--line-2)}
body[data-ws=studio] .part-row:hover{background:rgba(255,255,255,.035);border-color:transparent}
body[data-ws=studio] .thumb{background:var(--g3)}
body[data-ws=studio] .fig{background:var(--g2);border:1px solid var(--line);box-shadow:none}
body[data-ws=studio] .fig::after{content:none}
body[data-ws=studio] .fig dt{letter-spacing:.08em;text-transform:uppercase;font-size:10px;color:var(--muted)}
body[data-ws=studio] .fig dd{color:#fff;text-shadow:none}
body[data-ws=studio] .fig.lead{background:var(--g2);border-color:var(--line-2)}
/* the sheet: brushed-steel grey, the brightest surface */
body[data-ws=studio] .editor{border:0;background:transparent}
body[data-ws=studio] .sheet-stage{border-radius:12px;border:1px solid var(--line);background:#121417}
body[data-ws=studio] .sheet-svg .bed{fill:#23272d;stroke:rgba(255,255,255,.45)}
body[data-ws=studio] .sheet-svg .margin-line{stroke:rgba(255,255,255,.18)}
body[data-ws=studio] .sheet-svg .grid1{stroke:rgba(255,255,255,.035)}
body[data-ws=studio] .sheet-svg .grid5{stroke:rgba(255,255,255,.08)}
body[data-ws=studio] .ed-tools button,body[data-ws=studio] .ed-zoom button{border-color:var(--line);background:var(--g2)}
body[data-ws=studio] .ed-tools button:hover{border-color:var(--line-2);background:var(--g3);box-shadow:none}
body[data-ws=studio] .lot,body[data-ws=studio] .sheet-list,body[data-ws=studio] .opt-charts,body[data-ws=studio] .opt-hist,body[data-ws=studio] .os{background:var(--g2);border-color:var(--line)}
body[data-ws=studio] .lot.on{background:rgba(143,208,255,.06);border-color:rgba(143,208,255,.45)}
body[data-ws=studio] .lot-headbox{background:var(--g2);border-color:var(--line)}
body[data-ws=studio] .opt-view{background:#121417;border-color:var(--line)}
body[data-ws=studio] .scene-svg .sc-bed{fill:#23272d;stroke:rgba(255,255,255,.45)}
body[data-ws=studio] .scene-svg .sc-g1{stroke:rgba(255,255,255,.035)}
body[data-ws=studio] .scene-svg .sc-g5{stroke:rgba(255,255,255,.08)}
body[data-ws=studio] .lt-tab,body[data-ws=studio] .nb-btn{background:var(--g2);border-color:var(--line)}
body[data-ws=studio] .sum-panel{background:var(--g1);border-color:var(--line)}
body[data-ws=studio] .up-card{background:var(--g2);border:1px solid var(--line);box-shadow:none}
body[data-ws=studio] .up-card:hover{border-color:var(--ice);transform:translateY(-1px)}
body[data-ws=studio] .up-card i{background:rgba(143,208,255,.1);color:var(--ice);box-shadow:none}
body[data-ws=studio] .up-card[data-upload=package]{border-color:rgba(143,208,255,.35);background:var(--g2)}
body[data-ws=studio] .empty-copy h1{text-shadow:none;font-weight:650;letter-spacing:-.02em}
body[data-ws=studio] .empty-plate{background:radial-gradient(900px 420px at 50% 30%,rgba(255,255,255,.035),transparent 70%)}

/* ---------- empty Nest Studio: parts fly in from the pile and nest on the sheet (12 s loop, transform/opacity) */
.nest-art{display:none;width:min(1120px,96%);height:auto;margin:0 auto}
body[data-ws=studio] .nest-art{display:block}
body[data-ws=studio] .plate-art{display:none}
.na-bed{fill:#0b0c0e;stroke:rgba(255,255,255,.16);stroke-width:1}
.na-glow{fill:url(#naGlow);stroke:none}
.na-grid{display:none}
/* every part: its outline draws itself, then it fills as brushed steel - one after another, no colours */
.na-p{fill:url(#naMetal);fill-opacity:0;fill-rule:evenodd;stroke:rgba(236,239,243,.85);stroke-width:1;stroke-dasharray:1;stroke-dashoffset:1;
  vector-effect:non-scaling-stroke;opacity:0;transform-box:fill-box;transform-origin:center;
  animation:naIn 12s cubic-bezier(.22,.7,.2,1) infinite backwards;animation-delay:var(--d)}
@keyframes naIn{
  0%{opacity:0;stroke-dashoffset:1;fill-opacity:0;transform:translateY(8px) scale(.985)}
  3%{opacity:1}
  13%{stroke-dashoffset:0;transform:none}
  28%{fill-opacity:0;stroke:rgba(236,239,243,.85)}
  38%{fill-opacity:1;stroke:rgba(255,255,255,.35)}
  80%{opacity:1;fill-opacity:1;stroke-dashoffset:0;transform:none}
  90%,100%{opacity:0;fill-opacity:1;stroke-dashoffset:0;transform:none}}
/* one soft light passes over the finished sheet */
.na-scan{fill:url(#naSweep);mix-blend-mode:screen;opacity:0;animation:naScan 12s cubic-bezier(.45,0,.25,1) infinite;animation-delay:5.4s}
@keyframes naScan{0%{opacity:0;transform:translateX(0)}4%{opacity:1}20%{opacity:1;transform:translateX(920px)}22%,100%{opacity:0;transform:translateX(920px)}}
.na-k{fill:rgba(236,239,243,.42);font:500 13px var(--font);letter-spacing:.02em;text-anchor:middle}
@media (prefers-reduced-motion:reduce){.na-p{animation:none;opacity:1;fill-opacity:1;stroke-dashoffset:0}.na-scan{display:none}}

/* ============================================================ AI Studio */
/* home: four areas side by side on wide screens, two by two below */
@media (min-width:1101px){.home-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:721px) and (max-width:1100px){.home-cards{grid-template-columns:repeat(3,minmax(0,1fr));max-width:1100px}.ws-card{display:flex}}
/* Nest Studio: nesting and the quick quote are two tabs of one area */
.nest-seg{margin-left:6px}.nest-seg button{font-size:12.5px}
/* card: a pencil line, then the clean contour, then its dimensions */
/* AI Studio card: sketch → analysis → geometry → dimensioned DXF, one slow loop; brighter on hover */
.ws-card.ws-ai{--ai1:rgba(169,220,255,.55);--ai2:rgba(196,178,255,.5);--t:14s;
  background:radial-gradient(120% 70% at 50% -10%,rgba(150,170,255,.07),transparent 60%),linear-gradient(180deg,#13151b 0%,var(--card) 100%);
  border-color:rgba(190,200,255,.09);transform-style:preserve-3d}
.ws-card.ws-ai::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(140deg,rgba(169,220,255,.28),rgba(196,178,255,.08) 35%,transparent 55%,rgba(196,178,255,.18));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;transition:opacity .5s;opacity:.7}
.ws-card.ws-ai::before{background:radial-gradient(320px 200px at var(--mx) var(--my),rgba(206,196,255,.6),transparent 70%)}
.ws-card.ws-ai:hover{transform:perspective(1100px) translateY(-3px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 40px 90px -40px rgba(0,0,0,.95),0 0 60px -30px rgba(170,170,255,.35)}
.ws-card.ws-ai:hover::after{opacity:1}
.ws-ai .ws-stage{background:radial-gradient(90% 80% at 50% 10%,rgba(160,175,255,.06),transparent 65%),
  linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px) 0 0/24px 24px,linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px) 0 0/24px 24px,#0a0b0f}
.ws-ai svg{opacity:.62;transition:opacity .6s}
.ws-ai svg.pfam{opacity:1}
.ws-ai:hover svg,.home.touch .ws-ai.live svg{opacity:1}
.ws-ai .ai-sk path{stroke:#a9afb8;stroke-width:1.35;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:.9;animation:aiSk var(--t) ease-in-out infinite}
.ws-ai .ai-sk path:nth-child(2){stroke-width:.8;opacity:.45;animation-delay:.25s}
.ws-ai .ai-sk path:nth-child(3){animation-delay:.6s}
.ws-ai .ai-scan{stroke:none!important;animation:aiScan var(--t) cubic-bezier(.45,.05,.55,.95) infinite}
.ws-ai .ai-nodes circle{fill:#d6e9ff;stroke:none;opacity:0;animation:aiNode var(--t) ease infinite;animation-delay:calc(var(--k) * .12s)}
.ws-ai .ai-geo path{stroke:#bfe3ff;stroke-width:1.6;stroke-dasharray:1;stroke-dashoffset:1;animation:aiGeo var(--t) ease-in-out infinite}
.ws-ai .ai-geo path:nth-child(2){animation-delay:.35s}
.ws-ai .ai-dims{opacity:0;animation:aiDim var(--t) ease infinite}
.ws-ai .ai-dims path{stroke:rgba(223,229,236,.42);stroke-width:1}
.ws-ai .ai-dims .cl{stroke:rgba(196,178,255,.55);stroke-dasharray:6 3 1.5 3}
.ws-ai .ai-dims text{fill:#e6ebf1;stroke:none;font:600 12px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-anchor:middle;letter-spacing:.02em}
.ws-ai .ai-file rect{fill:rgba(169,220,255,.08);stroke:rgba(169,220,255,.6)}
.ws-ai .ai-file text{fill:#bfe3ff;font-size:10.5px}
.ai-steps{position:absolute;left:16px;bottom:12px;display:flex;gap:12px;font:600 9.5px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.12em;text-transform:uppercase}
.ai-steps i{font-style:normal;color:rgba(223,229,236,.28);animation:aiStep var(--t) ease infinite}
.ai-steps i:nth-child(2){animation-delay:calc(var(--t) * .2)}.ai-steps i:nth-child(3){animation-delay:calc(var(--t) * .4)}.ai-steps i:nth-child(4){animation-delay:calc(var(--t) * .62)}
@keyframes aiSk{0%{stroke-dashoffset:1;opacity:.9}18%{stroke-dashoffset:0;opacity:.9}42%{stroke-dashoffset:0;opacity:.85}56%{opacity:.12}88%{stroke-dashoffset:0;opacity:.1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes aiScan{0%,19%{transform:translateX(165px);opacity:0}21%{opacity:1}39%{transform:translateX(372px);opacity:1}41%,100%{transform:translateX(372px);opacity:0}}
@keyframes aiNode{0%,22%{opacity:0;r:2.2px}30%{opacity:1;r:3px}46%{opacity:.9;r:2.2px}58%,100%{opacity:0}}
@keyframes aiGeo{0%,40%{stroke-dashoffset:1;opacity:1}60%{stroke-dashoffset:0}90%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes aiDim{0%,60%{opacity:0}68%,90%{opacity:1}100%{opacity:0}}
@keyframes aiStep{0%{color:rgba(223,229,236,.28)}3%,17%{color:#cfe6ff}22%,100%{color:rgba(223,229,236,.28)}}
@media (prefers-reduced-motion:reduce){
  .ws-ai .ai-sk path,.ws-ai .ai-scan,.ws-ai .ai-nodes circle,.ws-ai .ai-geo path,.ws-ai .ai-dims,.ai-steps i{animation:none!important}
  .ws-ai .ai-sk path{stroke-dashoffset:0;opacity:.12}.ws-ai .ai-scan{opacity:0}.ws-ai .ai-geo path{stroke-dashoffset:0}.ws-ai .ai-dims{opacity:1}
  .ws-card.ws-ai:hover{transform:translateY(-3px)}
}

/* the area: graphite, three columns */
body[data-ws=ai]{--g0:#0f1012;--g1:#16181b;--g2:#1c1f23;--g3:#23272c;--line:rgba(255,255,255,.07);--line-2:rgba(255,255,255,.12);--ice:#8fd0ff;background:var(--g0)}
body[data-ws=ai] .station,body[data-ws=ai] #openFile,body[data-ws=ai] #exportMenu,body[data-ws=ai] #sendMenu,body[data-ws=ai] #job,body[data-ws=ai] #reset{display:none!important}
body[data-ws=ai] .topbar{background:var(--g0);border-bottom:1px solid var(--line);backdrop-filter:none}
.ai-studio{height:calc(100vh - 60px);display:grid;grid-template-columns:320px minmax(0,1fr) 340px;gap:10px;padding:10px}
.ai-studio>*{min-height:0;border-radius:14px;border:1px solid var(--line);background:var(--g1)}
.ai-left,.ai-right{display:flex;flex-direction:column;gap:12px;padding:16px;overflow:auto}
.ai-k{font-size:10.5px;font-weight:700;letter-spacing:.16em;color:var(--ice)}
.ai-head h2{margin:6px 0 0;font-size:17px;font-weight:650;line-height:1.3}
.ai-modes{display:grid;gap:6px}
.ai-mode{display:grid;gap:2px;text-align:left;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--g2);color:var(--text)}
.ai-mode b{font-size:13.5px;font-weight:600}.ai-mode small{font-size:11.5px;color:var(--muted)}
.ai-mode.on{border-color:rgba(143,208,255,.6);background:rgba(143,208,255,.07)}
.ai-mode:disabled{opacity:.45}
.ai-form{display:grid;gap:8px}
.ai-lbl{font-size:12px;color:var(--muted)}
.ai-form textarea{width:100%;resize:vertical;min-height:120px;border-radius:10px;border:1px solid var(--line);background:var(--g2);color:var(--text);padding:10px 12px;font:inherit;font-size:13.5px;line-height:1.5}
.ai-form textarea:focus{outline:2px solid rgba(143,208,255,.45);outline-offset:0}
body[data-ws=ai] .ai-form .btn.primary{background:var(--ice);color:#06121e;font-weight:700;box-shadow:none}
.ai-ex{display:flex;flex-wrap:wrap;gap:6px}
.ai-ex button{padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--text-2);font-size:12px;text-align:left}
.ai-ex button:hover{border-color:rgba(143,208,255,.45);color:#fff}
.ai-hist-wrap h3{margin:0 0 6px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ai-hist{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.ai-hist button{width:100%;display:grid;gap:1px;text-align:left;padding:7px 10px;border-radius:8px;border:1px solid transparent;background:var(--g2);color:var(--text-2);font-size:12px}
.ai-hist button b{color:var(--text);font-weight:600;font-size:12.5px}
.ai-hist button.on{border-color:rgba(143,208,255,.5)}
.ai-center{display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}
.ai-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ai-views button{font-size:12.5px}
.ai-coord{margin-left:auto;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.ai-canvas{position:relative;min-height:0;background:#121417;cursor:crosshair;touch-action:none}
.ai-canvas svg{position:absolute;inset:0;width:100%;height:100%}
.ai-empty{position:absolute;inset:0;display:grid;place-content:center;gap:6px;text-align:center;color:var(--muted);padding:20px}
.ai-empty b{color:var(--text);font-size:16px;font-weight:600}
.ai-g1{stroke:rgba(255,255,255,.035);stroke-width:1;fill:none}
.ai-g5{stroke:rgba(255,255,255,.08);stroke-width:1;fill:none}
.ai-e{fill:none;stroke:#e9edf2;stroke-width:1.5;stroke-linecap:round}
.ai-canvas.anim .ai-e{stroke-dasharray:var(--l);stroke-dashoffset:var(--l);animation:aiDraw .55s ease-out forwards;animation-delay:var(--d)}
@keyframes aiDraw{to{stroke-dashoffset:0}}
.v-io .ai-e.o{stroke:#8fd0ff}.v-io .ai-e.i{stroke:#ffa24c}
.v-fill .ai-fill{fill:#c9d1db;stroke:none}
.ai-fill{fill:none}
.ai-cl{stroke:rgba(143,208,255,.45);stroke-width:1;stroke-dasharray:6 3 1.5 3;fill:none}
.v-cut .ai-cl,.v-fill .ai-cl,.v-io .ai-cl{display:none}
.ai-dim{display:none}.v-dims .ai-dim{display:inline}
.ai-dim path{fill:none;stroke:rgba(143,208,255,.7);stroke-width:1}
.ai-dim text{fill:#dfe5ec;font-family:var(--font);text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:#121417;stroke-width:3px}
.ai-meas path{stroke:#ffa24c;stroke-width:1.5;fill:none}.ai-meas text{fill:#ffa24c;font-family:var(--font);text-anchor:middle;paint-order:stroke;stroke:#121417;stroke-width:3px}
.ai-status{display:grid;gap:4px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--g2)}
.ai-status b{font-size:13px;letter-spacing:.06em}
.ai-status small{color:var(--muted);font-size:12px;line-height:1.45}
.ai-status.draft b{color:#ffd60a}.ai-status.review b{color:#ffa24c}.ai-status.ok b{color:#30d158}
.ai-say{display:grid;gap:8px;font-size:13px}
.ai-say h4,.ai-props h4,.ai-checks h4{margin:0 0 4px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.ai-say ul{margin:0;padding-left:18px;display:grid;gap:3px}
.ai-say .unk li{color:#ffa24c}.ai-say .ask li{color:#ffd60a}
.ai-say .btn{justify-self:start;padding:6px 12px;font-size:12.5px}
.ai-props table{width:100%;border-collapse:collapse;font-size:12.5px}
.ai-props td{padding:3px 4px;color:var(--text-2)}
.ai-props input{width:72px;height:28px;border-radius:7px;border:1px solid var(--line);background:var(--g2);color:#fff;padding:0 6px;font:inherit;font-size:12.5px;font-variant-numeric:tabular-nums}
.ai-props .role{color:var(--muted);font-size:11px}
.ai-checks ul{list-style:none;margin:0;padding:0;display:grid;gap:5px;font-size:12.5px}
.ai-checks li{display:grid;grid-template-columns:16px 1fr;gap:6px}
.ai-checks li i{font-style:normal;font-weight:700}.ai-checks li.ok i{color:#30d158}.ai-checks li.no i{color:#ff6961}
.ai-checks li small{grid-column:2;color:var(--muted);font-size:11.5px}
.ai-acts{display:grid;gap:8px}
.ai-send{display:grid;gap:6px}
body[data-ws=ai] .ai-send .btn.primary:not(:disabled){background:var(--ice);color:#06121e;box-shadow:none}
.ai-fine{margin:auto 0 0;font-size:11.5px;color:var(--muted);line-height:1.5}
@media (max-width:1200px){.ai-studio{grid-template-columns:280px minmax(0,1fr);height:auto}.ai-right{grid-column:1/-1}.ai-center{min-height:520px}}
@media (max-width:760px){.ai-studio{grid-template-columns:1fr}.ai-center{min-height:420px}}

/* AI Studio phase 2: sketch upload, service and source lines, admin usage */
.ai-drop{display:grid;gap:8px;place-items:center;text-align:center;padding:14px;border:1px dashed rgba(143,208,255,.35);border-radius:12px;cursor:pointer;color:var(--text-2);font-size:12px;background:rgba(143,208,255,.04)}
.ai-drop:hover{border-color:rgba(143,208,255,.7)}
.ai-drop input{position:absolute;width:1px;height:1px;opacity:0}
.ai-drop img{max-width:100%;max-height:180px;border-radius:8px;background:#fff}
.ai-drop span{display:grid;gap:2px}.ai-drop b{color:var(--text);font-size:13px;font-weight:600}
.ai-svc{margin:0;font-size:12px;line-height:1.45;color:var(--muted);padding-left:10px;border-left:2px solid var(--line)}
.ai-svc.on{border-left-color:#8fd0ff;color:var(--text-2)}
.ai-src{margin:-4px 0 12px;font-size:12px;color:var(--muted)}.ai-src b{color:var(--text-2);font-weight:600}
.ai-usage{font-size:12px;color:var(--text-2);margin:8px 0}.ai-usage p{margin:4px 0}
.mk-grid .mk-check{display:flex;align-items:center;gap:8px;align-self:end;height:34px}.mk-grid .mk-check input{width:16px;height:16px;padding:0}

/* AI Studio: photo → portrait / stencil */
.ai-studio:not(.pt) .pt-left,.ai-studio:not(.pt) .pt-center,.ai-studio:not(.pt) .pt-right{display:none}
.ai-studio.pt .ai-form,.ai-studio.pt .ai-svc,.ai-studio.pt .ai-ex,.ai-studio.pt .ai-hist-wrap,.ai-studio.pt .ai-bar,.ai-studio.pt .ai-canvas,.ai-studio.pt .ai-right>:not(.pt-right){display:none}
.pt-left{display:grid;gap:14px}
.pt-sec{display:grid;gap:8px}
.pt-sec h4,.pt-right h4{margin:0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
.pt-styles{display:grid;gap:6px}
.pt-styles button{display:grid;gap:2px;text-align:left;padding:9px 12px;border-radius:11px;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer}
.pt-styles button small{color:var(--muted);font-size:11.5px}
.pt-styles button.on{border-color:rgba(143,208,255,.6);background:rgba(143,208,255,.08)}
.pt-sec .seg{display:flex;flex-wrap:wrap}
/* designs: template grid, name / date, design options */
.pt-tpls{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.pt-tpls button{display:grid;gap:1px;text-align:left;padding:8px 10px;border-radius:11px;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer;font-size:12.5px}
.pt-tpls button small{color:var(--muted);font-size:11px}
.pt-tpls button.on{border-color:rgba(143,208,255,.6);background:rgba(143,208,255,.08)}
.pt-texts{display:grid;gap:6px}
.pt-texts .pt-num input{width:150px}
.pt-note{margin:4px 0 0;font-size:11.5px;line-height:1.45;color:var(--muted)}
.ai-studio:not(.pt-design) .pt-design-only,.ai-studio.pt-design .pt-classic-only{display:none}
.ai-studio:not(.pt-dated) .pt-date{display:none}
.pt-range{display:grid;gap:4px;font-size:12.5px;color:var(--text-2)}
.pt-range input{width:100%;accent-color:#8fd0ff}
.pt-num{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-2)}
.pt-num input{width:84px;height:30px;border-radius:8px;border:0;background:rgba(118,118,128,.2);color:#fff;padding:0 8px;font:inherit;margin-left:auto}
.ai-studio.pt-art .pt-cut{opacity:.55}
.pt-center{position:relative;display:flex;flex-direction:column;min-height:0;height:100%}
.pt-steps{display:flex;gap:4px;padding:10px 12px;border-bottom:1px solid var(--line);overflow-x:auto}
.pt-steps button{flex:none;padding:6px 11px;border-radius:999px;border:0;background:transparent;color:var(--text-2);font-size:12.5px;cursor:pointer;white-space:nowrap}
.pt-steps button.on{background:rgba(255,255,255,.12);color:#fff}
.pt-steps button:disabled{opacity:.35;cursor:default}
/* design proposals: three interpretations side by side */
.pt-vars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:12px;border-bottom:1px solid var(--line)}
.pt-var{display:grid;gap:6px;padding:8px;border-radius:12px;border:1px solid var(--line);background:transparent;color:var(--text);text-align:left;cursor:pointer;font:inherit}
.pt-var.on{border-color:rgba(143,208,255,.7);background:rgba(143,208,255,.07)}
.pt-var img{width:100%;height:118px;object-fit:contain;background:#fff;border-radius:7px}
.pt-var b{font-size:12.5px;font-weight:600}.pt-var small{font-size:11px;color:var(--muted)}
.pt-var .q{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--text-2)}
.pt-var .q i{font-style:normal;font-weight:600;color:#fff}
.pt-var .q .no{color:#ff9f6b}.pt-var .q .ok{color:#7ee2a8}
.pt-ai{cursor:default;border-style:dashed}.pt-ainote{line-height:1.35}.pt-dact{display:flex;flex-wrap:wrap;gap:6px}
.pt-var .use[disabled]{opacity:.4;cursor:default}label.use{display:inline-block}
.pt-var .use{justify-self:start;font-size:11.5px;padding:4px 10px;border-radius:999px;border:0;background:rgba(255,255,255,.12);color:#fff;cursor:pointer}
.pt-qual{width:100%;border-collapse:collapse;font-size:12px;margin:6px 0 2px}.pt-qual td{padding:3px 0;color:var(--text-2)}.pt-qual td:last-child{text-align:right;color:var(--text)}
.pt-widen{margin-top:8px;padding:6px 12px;border-radius:999px;border:0;background:#0a84ff;color:#fff;font-size:12.5px;cursor:pointer}
.pt-legacy{display:grid;gap:6px}.pt-legacy summary{cursor:pointer;font-size:12px;color:var(--muted);padding:4px 2px}.pt-legacy[open]{gap:6px}.pt-legacy>button{margin-top:6px;width:100%}
.pt-view{position:relative;flex:1;min-height:320px;display:grid;place-items:center;padding:18px;overflow:hidden;background:repeating-conic-gradient(#1b1d21 0 25%,#16181b 0 50%) 0 0/22px 22px}
.pt-view>img,.pt-view>svg{max-width:100%;max-height:100%;width:auto;height:auto;background:#fff;box-shadow:0 10px 40px rgba(0,0,0,.45);border-radius:2px}
.pt-view>svg{width:auto;height:auto;max-width:100%;max-height:64vh}
.pt-busy{position:absolute;inset:auto 16px 16px auto;display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:12px;background:rgba(20,22,26,.92);border:1px solid var(--line);font-size:12.5px;color:var(--text-2)}
.pt-busy i{width:14px;height:14px;border-radius:50%;border:2px solid rgba(143,208,255,.3);border-top-color:#8fd0ff;animation:ptSpin .8s linear infinite}
@keyframes ptSpin{to{transform:rotate(360deg)}}
.pt-right{display:grid;gap:14px}
.pt-badges{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.pt-badges span{display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:10px;border:1px solid var(--line);font-size:12px;color:var(--muted)}
.pt-badges span.ok{color:#9ff0b8;border-color:rgba(80,220,130,.35);background:rgba(80,220,130,.06)}
.pt-badges span.no{color:#ffc58f;border-color:rgba(255,160,80,.35);background:rgba(255,160,80,.06)}
.pt-badges b{grid-column:1/-1;font-size:15px;padding:2px 2px 4px;color:var(--text)}
.pt-reasons ul{margin:0;padding-left:18px;font-size:12.5px;color:#ffc58f;line-height:1.5}
.pt-reasons p{margin:6px 0 0;font-size:12.5px;color:var(--text-2)}
.pt-stats{font-size:12.5px;color:var(--text-2);line-height:1.6}
.pt-stats b{color:var(--text);font-weight:600}
.pt-tools{display:flex;flex-wrap:wrap;gap:6px}
.pt-tools h4{width:100%}
.pt-tools button{padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--text-2);font-size:12px;cursor:pointer}
.pt-tools button:hover{color:#fff;border-color:rgba(143,208,255,.5)}
.pt-exp{display:flex;flex-wrap:wrap;gap:6px}.pt-exp h4{width:100%}
.pt-exp .btn{padding:6px 12px;min-height:0}
@media (prefers-reduced-motion:reduce){.pt-busy i{animation:none}}
.ai-studio.pt .ai-center{grid-template-rows:minmax(0,1fr)}
/* Auto Cut-Ready */
.pt-styles button.pt-auto{border-color:rgba(143,208,255,.35)}
.pt-styles button.pt-auto b::after{content:'önerilen';margin-left:8px;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#8fd0ff}
.pt-auto-note{margin:0;font-size:11.5px;color:var(--muted);line-height:1.45}
.pt-num select{margin-left:auto;height:30px;border-radius:8px;border:0;background:rgba(118,118,128,.2);color:#fff;padding:0 8px;font:inherit;max-width:190px}
.pt-badges b.ok{color:#9ff0b8}.pt-badges b.care{color:#ffd58f}
.pt-reasons ul.care{color:#ffd58f}
.pt-stats p{margin:0 0 8px}
.pt-rep{width:100%;border-collapse:collapse;font-size:12px}
.pt-rep td{padding:5px 0;border-top:1px solid var(--line);vertical-align:top}
.pt-rep td:first-child{color:var(--muted);width:42%;padding-right:8px}
.pt-rep small{color:var(--muted)}
.pt-oneclick{width:100%}
.pt-fine{border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.pt-fine summary{cursor:pointer;font-size:12.5px;color:var(--text-2)}
.pt-fine[open] summary{margin-bottom:10px}

/* AI Studio welcome */
.ai-studio{position:relative}
.ai-studio.welcoming>:not(.ai-welcome){display:none}
.ai-welcome{grid-column:1/-1;position:relative;z-index:6;display:grid;place-items:center;overflow:auto;border-radius:22px;padding:clamp(28px,6vh,64px) 16px;min-height:100%;
  background:radial-gradient(70% 55% at 50% 0%,rgba(150,165,255,.08),transparent 70%),linear-gradient(180deg,#101217,#0b0c0f);border:1px solid rgba(190,200,255,.08);
  animation:awIn .5s cubic-bezier(.2,.7,.2,1)}
.ai-welcome.leaving{animation:awOut .32s ease forwards}
.aw-inner{width:100%;max-width:1040px;text-align:center}
.aw-k{font:600 11px/1 var(--font);letter-spacing:.18em;color:#9fc9ef}
.aw-inner h2{margin:14px auto 0;max-width:760px;font:600 clamp(28px,4vw,52px)/1.08 var(--display);letter-spacing:-.025em;text-wrap:balance;
  background:linear-gradient(180deg,#fff,#cfd7e2 70%,#9aa5b4);-webkit-background-clip:text;background-clip:text;color:transparent}
.aw-inner>p{margin:16px auto 0;max-width:640px;font:400 clamp(15px,1.3vw,17px)/1.55 var(--font);color:#8a92a0}
.aw-opts{margin-top:clamp(28px,4vh,44px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.aw-opts button{display:grid;gap:6px;justify-items:start;text-align:left;padding:18px 20px 20px;border-radius:20px;border:1px solid rgba(255,255,255,.07);
  background:linear-gradient(180deg,#14161b,#0f1014);color:#f2f4f7;cursor:pointer;opacity:0;animation:awCard .6s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(.12s + var(--i) * .08s);
  transition:border-color .35s,transform .45s cubic-bezier(.2,.7,.2,1),background .35s}
.aw-opts button:hover,.aw-opts button:focus-visible{border-color:rgba(190,205,255,.35);transform:translateY(-3px);background:linear-gradient(180deg,#171a21,#101116);outline:none}
.aw-opts svg{width:100%;height:84px;margin-bottom:6px;border-radius:12px;background:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px) 0 0/12px 12px,linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px) 0 0/12px 12px,#0a0b0e}
.aw-opts svg *{fill:none;stroke:#bfe3ff;stroke-width:1.2;vector-effect:non-scaling-stroke}
.aw-opts svg .aw-l{stroke:rgba(223,229,236,.35)}
.aw-opts svg .aw-p{stroke:#a9afb8;stroke-dasharray:2 1.5}
.aw-opts svg .aw-c{stroke:rgba(196,178,255,.7)}
.aw-opts b{font:600 16px/1.25 var(--display);letter-spacing:-.01em}
.aw-opts small{font-size:13px;line-height:1.45;color:#8a92a0}
.aw-skip{margin-top:22px;border:0;background:none;color:#9fc9ef;font:500 14px var(--font);cursor:pointer;padding:8px 12px;border-radius:999px}
.aw-skip:hover{background:rgba(159,201,239,.08)}
.ai-intro{margin-left:8px;border:0;background:none;padding:0;color:var(--muted);font:500 10.5px var(--font);letter-spacing:.04em;text-transform:none;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
@keyframes awIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes awOut{to{opacity:0;transform:scale(.99)}}
@keyframes awCard{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (max-width:820px){.aw-opts{grid-template-columns:1fr}.aw-opts svg{height:64px}}
@media (prefers-reduced-motion:reduce){.ai-welcome,.ai-welcome.leaving,.aw-opts button{animation:none;opacity:1}}
/* narrow screens: the top bar and the home links wrap onto a second row instead of running off screen
   (no horizontal scroll here: it would clip the export / send drop-down menus) */
@media (max-width:720px){
  .topbar{height:auto;min-height:56px;flex-wrap:wrap;row-gap:8px;padding:8px 10px}
  .topbar .job{flex:1 1 0;min-width:0}
  .topbar .top-actions{flex:1 1 100%;margin-left:0;flex-wrap:wrap;gap:6px}
  .top-actions .btn{padding:6px 10px;font-size:13px}
  .home-nav{height:auto;flex-wrap:wrap;gap:6px;padding:10px 0}
  .home-links{flex-wrap:wrap}
  .home-links button{padding:6px 10px}
}
/* empty screen: open a saved project */
.up-proj{margin:14px auto 0;font-size:13px;color:#8d95a3;text-align:center}
.up-proj .linkish{border:0;background:none;padding:0;color:#64d2ff;font:inherit;cursor:pointer}
.up-proj .linkish:hover{text-decoration:underline}
/* account dialog */
.acct-dlg form{max-width:560px}
.acct-sec{border-top:1px solid rgba(255,255,255,.08);padding:16px 0 4px}
.acct-sec h4{margin:0 0 6px;font-size:14px}
.acct-sec p{margin:0 0 12px;color:#8d95a3;font-size:13px;line-height:1.5}
.acct-sec label{display:flex;flex-direction:column;gap:6px;font-size:13px;margin-bottom:10px}
.acct-sec label.acct-ok{flex-direction:row;align-items:center;gap:8px;color:#c9ced6}
.acct-danger h4{color:#ff9f99}
.btn.acct-del{background:#ff453a;color:#fff;border-color:transparent}
.btn.acct-del:disabled{opacity:.45;cursor:not-allowed}
.acct-msg{min-height:18px;margin:10px 0 0;font-size:13px;color:#7ee2a8}
.acct-msg.error{color:#ff9f99}

/* ---------------------------------------------------------------- membership: plans, locks, account, admin */
.plan-chip{--pc:#8e8e93}
.plan-chip[data-plan=pro]{--pc:#0a84ff}.plan-chip[data-plan=max]{--pc:#bf5af2}.plan-chip[data-plan=ultra]{--pc:#ff9f0a}
.plan-chip::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;vertical-align:1px;background:var(--pc);box-shadow:0 0 8px var(--pc)}
.home-nav .plan-chip{border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:4px 12px}
[data-need].locked{opacity:.62}
[data-need].locked::after{content:"PRO";margin-left:8px;padding:1px 6px;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.05em;color:#fff;background:linear-gradient(120deg,#0a84ff,#bf5af2);vertical-align:1px}
.menu-list [data-need].locked::after{position:absolute;right:12px;top:10px}
.menu-list [data-need]{position:relative}
.mode.locked{opacity:.6}

.plans-frame{max-width:1200px}
.plans-scroll,.admin-scroll{flex:1;overflow:auto;padding:18px}
.admin-scroll .admin-body{max-height:none;padding:8px 0 0}
.plans-msg{margin:0 0 14px;min-height:0;font-size:14px}
.plans-msg:empty{display:none}
.plans-msg.ok{color:var(--ok)}.plans-msg.error{color:var(--danger)}
.plans-period small{opacity:.75;font-size:11px;margin-left:4px}
.plans-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.plan-card{--pc:#8e8e93;position:relative;display:flex;flex-direction:column;gap:10px;padding:20px 18px;border-radius:18px;border:1px solid rgba(255,255,255,.1);background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015))}
.plan-card[data-plan=pro]{--pc:#0a84ff}.plan-card[data-plan=max]{--pc:#bf5af2}.plan-card[data-plan=ultra]{--pc:#ff9f0a}
.plan-card.pop{border-color:var(--pc);box-shadow:0 0 0 1px var(--pc),0 24px 60px -30px var(--pc)}
.plan-card.mine{outline:2px solid var(--ok);outline-offset:2px}
.plan-card h3{margin:0;font-size:20px;display:flex;align-items:center;gap:8px}
.plan-card h3::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--pc);box-shadow:0 0 12px var(--pc)}
.plan-card .tag{position:absolute;top:14px;right:14px;font-size:11px;padding:2px 8px;border-radius:99px;background:var(--pc);color:#fff;font-weight:600}
.plan-card .price{font-size:30px;font-weight:700;letter-spacing:-.02em}
.plan-card .price small{font-size:13px;font-weight:500;color:var(--muted);margin-left:4px}
.plan-card .per{margin:-6px 0 0;color:var(--muted);font-size:12px;min-height:1.3em}
.plan-card ul{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:7px;font-size:13.5px;color:var(--text-2)}
.plan-card li{display:flex;gap:8px;align-items:flex-start}
.plan-card li::before{content:"✓";color:var(--pc);font-weight:700}
.plan-card li.no{color:var(--muted);text-decoration:line-through;text-decoration-color:rgba(255,255,255,.2)}
.plan-card li.no::before{content:"–";color:var(--muted)}
.plan-card .btn{margin-top:auto}
.plans-table-wrap{margin-top:22px;overflow:auto}
.plans-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:640px}
.plans-table th,.plans-table td{padding:9px 10px;border-bottom:1px solid rgba(255,255,255,.07);text-align:center}
.plans-table th:first-child,.plans-table td:first-child{text-align:left;color:var(--text-2)}
.plans-table thead th{font-size:13px;color:#fff}
.plans-foot{margin:16px 0 0;color:var(--muted);font-size:12.5px;line-height:1.5}
@media (max-width:980px){.plans-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.plans-grid{grid-template-columns:1fr}.plans-scroll,.admin-scroll{padding:12px}}

.pay-way{display:flex;margin:6px 0 4px}.pay-way button{flex:1}
.pay-transfer{white-space:pre-wrap;padding:14px;border-radius:12px;background:rgba(118,118,128,.14);font-size:13.5px;line-height:1.55}
.pay-transfer b{display:block;margin-bottom:6px}

.acct-plan .ap-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;justify-content:space-between}
.acct-plan .ap-name{font-size:18px;font-weight:700}
.acct-plan .ap-meter{display:grid;gap:6px;margin:12px 0 4px;font-size:13px;color:var(--text-2)}
.acct-plan .bar{height:6px;border-radius:9px;background:rgba(255,255,255,.08);overflow:hidden}
.acct-plan .bar i{display:block;height:100%;border-radius:9px;background:var(--accent)}
.acct-plan .bar i.full{background:var(--danger)}
.team-list{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:6px}
.team-list li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;border-radius:10px;background:rgba(118,118,128,.12);font-size:13.5px}
.team-add{display:flex;gap:8px}.team-add input{flex:1;height:36px;border-radius:10px;border:0;background:rgba(118,118,128,.18);color:#fff;padding:0 10px;font:inherit}
.pay-table{font-size:12.5px}

.admin-tabs{display:flex;gap:4px;padding:10px 18px 0;border-bottom:1px solid var(--stroke);overflow-x:auto}
.admin-tabs button{border:0;background:none;color:var(--text-2);padding:9px 14px;border-bottom:2px solid transparent;font:inherit;font-size:14px;white-space:nowrap}
.admin-tabs button.on{color:#fff;border-bottom-color:var(--accent)}
.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:12px}
.admin-stats div{padding:12px 14px;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07)}
.admin-stats span{display:block;color:var(--muted);font-size:12px}.admin-stats b{font-size:20px}
.admin-filter{display:flex;gap:8px;flex-wrap:wrap}
.admin-filter input,.admin-filter select,.admin-table select{height:34px;border-radius:9px;border:1px solid rgba(255,255,255,.14);background:#0c1230;color:#fff;padding:0 10px;font:inherit;font-size:13px}
.admin-filter input{flex:1;min-width:180px}
.admin-table td .btn{padding:5px 10px;font-size:12.5px}
.admin-table .acts{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.admin-table small{display:block;color:var(--muted);font-size:11.5px}
.plans-admin-grid{display:grid;grid-template-columns:180px repeat(4,minmax(0,1fr));gap:6px 10px;align-items:center;font-size:13px;overflow-x:auto}
.plans-admin-grid b{font-size:13px}
.plans-admin-grid input[type=number],.plans-admin-grid input[type=text]{width:100%;height:32px;border-radius:8px;border:1px solid rgba(255,255,255,.14);background:#0c1230;color:#fff;padding:0 8px;font:inherit;font-size:13px}
.plans-admin-grid label{display:flex;justify-content:center}
#billingAdmin label{display:grid;gap:5px;font-size:13px;color:var(--text-2)}
#billingAdmin textarea,#billingAdmin input{border-radius:10px;border:1px solid rgba(255,255,255,.14);background:#0c1230;color:#fff;padding:8px 10px;font:inherit}
@media (max-width:720px){.plans-admin-grid{grid-template-columns:140px repeat(4,90px)}}

/* account menu: one quiet control top right; everything about the account opens from it */
.acct{position:relative;margin-left:4px}
.acct-btn{display:flex;align-items:center;gap:8px;height:36px;padding:3px 12px 3px 3px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#eef1f5;cursor:pointer;transition:background-color .2s,border-color .2s}
.acct-btn:hover,.acct-btn[aria-expanded=true]{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18)}
.acct-av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font:600 11.5px var(--font);letter-spacing:.02em;color:#fff;background:linear-gradient(140deg,#4f7cff,#a879ff);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.acct-btn .plan-chip,.home-nav .acct-btn .plan-chip{border:0;padding:0;font:500 12.5px var(--font);color:#c9ced8;background:none}
.acct-chev{width:7px;height:7px;border-right:1.5px solid #8d95a3;border-bottom:1.5px solid #8d95a3;transform:translateY(-2px) rotate(45deg);transition:transform .2s}
.acct-btn[aria-expanded=true] .acct-chev{transform:translateY(1px) rotate(225deg)}
.acct-panel{position:absolute;right:0;top:calc(100% + 10px);z-index:300;min-width:280px;padding:6px;display:grid;gap:1px;border-radius:16px;border:1px solid rgba(255,255,255,.09);background:rgba(30,30,32,.88);backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);box-shadow:0 28px 70px -14px rgba(0,0,0,.65),0 2px 8px rgba(0,0,0,.25);transform-origin:top right;animation:acctIn .18s cubic-bezier(.2,.8,.2,1)}
.acct-panel[hidden]{display:none}
@keyframes acctIn{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}
.acct-who{display:grid;gap:2px;padding:10px 12px 12px;margin-bottom:4px;border-bottom:1px solid rgba(255,255,255,.07)}
.acct-who b{font:600 14px var(--font);color:#eef1f5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-who small{font-size:12px;color:#8d95a3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-panel button,.home-links .acct-panel button{display:grid;gap:1px;width:100%;text-align:left;padding:9px 12px;border:0;border-radius:10px;background:none;color:#eef1f5;cursor:pointer;font:inherit;transition:background-color .15s}
.acct-panel button:hover,.home-links .acct-panel button:hover{background:rgba(255,255,255,.07);color:#fff}
.acct-panel button b{font:500 13.5px var(--font)}
.acct-panel button small{font-size:11.5px;color:#8d95a3}
.acct-panel button[hidden]{display:none}
.acct-sep{height:1px;margin:4px 8px;background:rgba(255,255,255,.07)}
.acct-panel .acct-out b{color:#ff8a80}
@media (prefers-reduced-motion:reduce){.acct-panel{animation:none}}
@media (max-width:560px){.acct-btn .plan-chip{display:none}.acct-panel{min-width:250px}}

/* AI Studio: a family photo becomes a cut-ready portrait, then a measured DXF (7 s loop, on the home card and at entry) */
.pfam{width:100%;height:100%;overflow:visible}
.pfam .pf-photo,.pfam .pf-scan,.pfam .pf-cut,.pfam .pf-br path,.pfam .pf-dxf>*,.pfam .pf-dims{animation-duration:7s;animation-iteration-count:infinite;animation-timing-function:cubic-bezier(.4,0,.2,1);animation-play-state:var(--pfplay,running)}
.pfam .pf-photo{animation-name:pfPhoto}
.pfam .pf-scan{animation-name:pfScan;opacity:0}
.pfam .pf-cut{animation-name:pfCut;opacity:0}
.pfam .pf-br path{animation-name:pfBr;opacity:0}
.pfam .pf-dxf>*{stroke-dasharray:1;stroke-dashoffset:1;animation-name:pfDxf}
.pfam .pf-dims{animation-name:pfDims;opacity:0}
@keyframes pfPhoto{0%,22%{opacity:1}36%,100%{opacity:0}}
@keyframes pfScan{0%,6%{opacity:0;transform:translateX(0)}9%{opacity:1}30%{opacity:1;transform:translateX(236px)}34%,100%{opacity:0;transform:translateX(236px)}}
@keyframes pfCut{0%,22%{opacity:0}34%,56%{opacity:1}66%,95%{opacity:.14}100%{opacity:0}}
@keyframes pfBr{0%,40%{opacity:0}45%,58%{opacity:1}66%,100%{opacity:0}}
@keyframes pfDxf{0%,56%{stroke-dashoffset:1;opacity:1}72%,96%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes pfDims{0%,70%{opacity:0}76%,96%{opacity:1}100%{opacity:0}}
.pfam text{font:500 11px var(--font);fill:#c9ced8;text-anchor:middle;stroke:none}
.pfam .pf-file rect{fill:rgba(143,208,255,.12);stroke:#8fd0ff}.pfam .pf-file text{fill:#8fd0ff;font-weight:600}
.pfam .pf-ok rect{fill:rgba(126,226,168,.1);stroke:#7ee2a8}.pfam .pf-ok text{fill:#7ee2a8;font-weight:600}
.ws-card[data-ws=ai] .ai-steps i{animation:pfStep 7s infinite}
.ws-card[data-ws=ai] .ai-steps i:nth-child(2){animation-delay:-4.9s}.ws-card[data-ws=ai] .ai-steps i:nth-child(3){animation-delay:-3.5s}.ws-card[data-ws=ai] .ai-steps i:nth-child(4){animation-delay:-1.4s}
@keyframes pfStep{0%,22%{color:#eef1f5;border-color:rgba(143,208,255,.6)}30%,100%{color:inherit;border-color:inherit}}
/* entry: what it is for, at a glance */
.aw-hero{width:min(760px,100%);height:min(46vh,470px);margin:clamp(10px,2vh,22px) auto 0}
.aw-hero .pfam{display:block;width:100%;height:100%}
.aw-flow{list-style:none;margin:clamp(18px,3vh,30px) auto 0;padding:0;max-width:980px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;counter-reset:aw}
.aw-flow li{counter-increment:aw;display:grid;gap:3px;text-align:left;padding:12px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);opacity:0;animation:awIn .5s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(.25s + var(--i) * .08s)}
.aw-flow li::before{content:counter(aw);font:600 11px var(--font);color:#8fd0ff;letter-spacing:.06em}
.aw-flow b{font:600 14px var(--font);color:#eef1f5}.aw-flow small{font-size:12px;line-height:1.4;color:#8d95a3}
@keyframes awIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.aw-cta{margin-top:clamp(18px,3vh,28px);display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap}
.aw-go{border:0;border-radius:999px;padding:12px 26px;font:600 15px var(--font);color:#fff;background:#0a84ff;cursor:pointer;box-shadow:0 10px 30px -10px rgba(10,132,255,.8);transition:transform .15s,background-color .2s}
.aw-go:hover{background:#2b95ff;transform:translateY(-1px)}
.aw-cta .aw-skip{margin-top:0}
@media (max-width:820px){.aw-flow{grid-template-columns:1fr 1fr}}
@media (prefers-reduced-motion:reduce){.pfam *{animation:none!important}.pfam .pf-photo,.pfam .pf-scan{opacity:0}.pfam .pf-cut,.pfam .pf-dims{opacity:1}.aw-flow li{opacity:1;animation:none}}

/* AI Studio card (until the real-result animation): photo → cut portrait → DXF, in type */
.ai-type{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:14px;font:600 clamp(15px,1.5vw,19px) var(--display, var(--font));color:#eef1f5;letter-spacing:-.01em}
.ai-type b{font-weight:600}.ai-type b:nth-of-type(2){color:#c9ced8}.ai-type b:last-of-type{color:#8fd0ff}
.ai-type i{width:28px;height:1px;background:linear-gradient(90deg,rgba(143,208,255,0),rgba(143,208,255,.7));position:relative}
.ai-type i::after{content:"";position:absolute;right:0;top:-3px;width:6px;height:6px;border-top:1px solid rgba(143,208,255,.8);border-right:1px solid rgba(143,208,255,.8);transform:rotate(45deg)}

/* empty stages fit one screen: the art gives way so the title and the upload buttons stay above the fold */
.empty-plate{gap:clamp(14px,2.6vh,30px);padding:clamp(16px,2.6vh,32px) 24px;overflow:auto}
.empty-plate>.plate-art,.empty-plate>.pkg-art,.empty-plate>.nest-art{width:auto;max-width:96%;height:clamp(150px,calc(100vh - 530px),640px)}
.empty-copy{max-width:700px;gap:12px}
.empty-copy>p.c-ext,.empty-copy>p.c-quote,.empty-copy>p.c-nest{max-width:600px}
@media (max-height:760px){.empty-copy h1{font-size:36px}.empty-copy .fine{display:none}}
@media (max-width:620px){.empty-plate>.plate-art,.empty-plate>.pkg-art,.empty-plate>.nest-art{height:auto;width:100%}}

/* home: the Nest Studio card - a real engine layout settles on the sheet, part after part, then turns to steel */
.ncard .nc-bed{fill:#0a0b0d;stroke:rgba(255,255,255,.16);stroke-width:1}
.ncard .nc-p{fill:url(#ncSteel);fill-rule:evenodd;fill-opacity:1;stroke:rgba(236,239,243,.55);stroke-width:.7;stroke-linejoin:round}
.ncard .nc-k{fill:rgba(236,239,243,.42);font:600 9px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em}
.ncard .nc-n{fill:rgba(236,239,243,.62);font:500 11px var(--font);text-anchor:end}
.ncard .nc-u{fill:#fff;font-weight:650}
.ncard .nc-sweep{opacity:0}
.ncard.nc-run .nc-p{animation:ncIn .65s cubic-bezier(.2,.8,.2,1) var(--d) both,ncFill .9s ease calc(var(--d) + .45s) both}
.ncard.nc-run .nc-n{animation:ncFade .8s ease 3.5s both}
.ncard.nc-run .nc-sweep{animation:ncSweep 1.5s cubic-bezier(.45,0,.25,1) 4.1s both}
.ws-card[data-ws=studio]:hover .nc-bed{stroke:rgba(255,255,255,.28)}
@keyframes ncIn{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}
@keyframes ncFill{from{fill-opacity:0;stroke:#fff}to{fill-opacity:1;stroke:rgba(236,239,243,.55)}}
@keyframes ncFade{from{opacity:0}to{opacity:1}}
@keyframes ncSweep{0%{opacity:1;transform:translateX(0)}100%{opacity:1;transform:translateX(520px)}}
@media (prefers-reduced-motion:reduce){.ncard.nc-run *{animation:none !important}}

/* home: the AI Studio card - the photo, a scan line, and the engine's cut portrait in steel behind it */
.aicard .ai-photo{clip-path:inset(0 0 0 100%)}
.aicard .ai-cut{clip-path:inset(0 0 0 0)}
.aicard .ai-wall{fill:url(#aiWall)}
.aicard .ai-metal{fill:#141517;filter:drop-shadow(3px 5px 4px rgba(0,0,0,.35))}
.aicard .ai-scan{fill:#fff;opacity:0;filter:drop-shadow(0 0 6px #fff)}
.aicard .ai-k{fill:rgba(236,239,243,.42);font:600 9px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em}
.aicard .ai-k2{text-anchor:end}
.aicard .ai-n{fill:rgba(236,239,243,.62);font:500 11px var(--font);text-anchor:end}
.aicard .ai-ok{fill:#fff;font-weight:650}
.aicard.ai-run .ai-photo{animation:aiPhotoIn .8s ease .3s both,aiWipeOut 1.6s cubic-bezier(.45,0,.25,1) 1.6s both}
.aicard.ai-run .ai-cut{animation:aiWipeIn 1.6s cubic-bezier(.45,0,.25,1) 1.6s both}
.aicard.ai-run .ai-scan{animation:aiScan 1.6s cubic-bezier(.45,0,.25,1) 1.6s both}
.aicard.ai-run .ai-k:not(.ai-k2){animation:aiLbl 3.4s ease both}
.aicard.ai-run .ai-k2,.aicard.ai-run .ai-n{animation:ncFade .8s ease 3.2s both}
@keyframes aiPhotoIn{from{opacity:0;clip-path:inset(0 0 0 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes aiWipeOut{from{clip-path:inset(0 0 0 0)}to{clip-path:inset(0 0 0 100%)}}
@keyframes aiWipeIn{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes aiScan{0%{opacity:1;transform:translateX(0)}92%{opacity:1}100%{opacity:0;transform:translateX(500px)}}
@keyframes aiLbl{0%,70%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.aicard.ai-run *{animation:none !important}}

/* ---- top-right: Hakkında / Yönetim links, the plan pill, and the account menu (redesigned) ---- */
.home-links{display:flex;align-items:center;gap:6px}
.nav-link{height:34px;padding:0 13px;border:0;border-radius:999px;background:none;color:#a1a6b0;font:500 13px var(--font);cursor:pointer;transition:color .2s,background-color .2s}
.nav-link:hover{color:#fff;background:rgba(255,255,255,.06)}
.nav-link[hidden]{display:none}
.plan-pill{display:inline-flex;align-items:center;gap:9px;height:36px;padding:0 14px;margin-left:4px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#eef1f5;cursor:pointer;font:500 12.5px var(--font);transition:background-color .2s,border-color .2s}
.plan-pill:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18)}
.plan-pill .plan-chip{border:0;padding:0;background:none;font:600 12.5px var(--font);color:#fff}
.plan-pill .pp-txt{color:#8d95a3;padding-left:9px;border-left:1px solid rgba(255,255,255,.12)}
.acct-btn{padding:3px 11px 3px 3px;gap:9px}
.acct-panel{width:330px;min-width:0;padding:8px;gap:0;border-radius:20px;background:rgba(24,24,27,.92);border-color:rgba(255,255,255,.08)}
.acct-head{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;padding:14px 14px 16px;margin:0 0 8px;border-radius:14px;
  background:radial-gradient(120% 140% at 0% 0%,rgba(255,255,255,.07),rgba(255,255,255,.015) 60%);border:1px solid rgba(255,255,255,.06)}
.acct-av-lg{grid-row:1/3;width:44px;height:44px;font-size:15px;background:linear-gradient(145deg,#f4f5f7,#9aa0a8);color:#111;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5),0 6px 18px -6px rgba(0,0,0,.6)}
.acct-head .acct-who{padding:0;margin:0;border:0;min-width:0}
.acct-head .acct-who b{font-size:14.5px;letter-spacing:-.005em}
.acct-badge{grid-column:2;justify-self:start;margin-top:8px;padding:3px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);font:600 11px var(--font);letter-spacing:.02em;color:#eef1f5}
.acct-badge::before{width:6px;height:6px;margin-right:6px}
.acct-label{padding:6px 10px 8px;font:600 10.5px var(--font);letter-spacing:.09em;text-transform:uppercase;color:#6e7480}
.acct-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px}
.acct-panel .acct-tile,.home-links .acct-panel .acct-tile{display:grid;justify-items:center;gap:8px;padding:14px 6px 12px;border-radius:12px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.05);text-align:center}
.acct-panel .acct-tile:hover,.home-links .acct-panel .acct-tile:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.12)}
.acct-panel .acct-tile b{font:500 12.5px var(--font)}
.acct-panel .acct-tile[hidden]{display:none}
.acct-ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;color:#d6d9de}
.acct-panel .acct-row,.home-links .acct-panel .acct-row{display:grid;grid-template-columns:20px 1fr auto;align-items:center;gap:12px;padding:11px 12px}
.acct-row span{display:grid;gap:1px}
.acct-go{width:7px;height:7px;border-right:1.5px solid #6e7480;border-top:1.5px solid #6e7480;transform:rotate(45deg);margin-right:4px}
.acct-panel .acct-out{margin-top:4px;border-top:1px solid rgba(255,255,255,.06);border-radius:0 0 12px 12px}
.acct-panel .acct-out .acct-ic{color:#ff8a80}
@media (max-width:560px){.plan-pill .pp-txt,.nav-link{display:none}.acct-panel{width:min(330px,calc(100vw - 24px))}}
.acct-btn .acct-av{background:linear-gradient(145deg,#f4f5f7,#9aa0a8);color:#111;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}

/* delete a part: a quiet icon on hover, "Parçayı sil" in the right-click menu, Delete key; an undo toast */
.part-row{position:relative}
.pr-del{position:absolute;top:8px;right:8px;width:28px;height:28px;display:grid;place-items:center;padding:0;border:1px solid rgba(255,255,255,.1);border-radius:9px;background:rgba(20,20,23,.9);color:#a1a6b0;cursor:pointer;opacity:0;transform:scale(.9);transition:opacity .15s,transform .15s,color .15s,background-color .15s,border-color .15s}
.pr-del svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.part-row:hover .pr-del,.part-row:focus-within .pr-del,.pr-del:focus-visible{opacity:1;transform:none}
.pr-del:hover{color:#ff8a80;border-color:rgba(255,138,128,.45);background:rgba(255,69,58,.12)}
.part-row:hover .pr-name,.part-row:focus-within .pr-name{padding-right:30px}
@media (hover:none){.pr-del{opacity:1;transform:none}.part-row .pr-name{padding-right:30px}}
.ctx-sep{display:block;height:1px;margin:4px 6px;background:rgba(255,255,255,.08)}
.ctx .ctx-del{display:flex;align-items:center;justify-content:space-between;color:#ff8a80}
.ctx .ctx-del:hover{background:rgba(255,69,58,.14)}
.ctx kbd{font:500 10.5px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#8d95a3;border:1px solid rgba(255,255,255,.12);border-radius:5px;padding:1px 5px}
.undo-toast{position:fixed;left:50%;bottom:64px;z-index:400;display:flex;align-items:center;gap:16px;padding:10px 10px 10px 18px;border-radius:999px;background:rgba(28,28,31,.94);border:1px solid rgba(255,255,255,.1);box-shadow:0 20px 50px -12px rgba(0,0,0,.7);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);color:#d6d9de;font:13px var(--font);transform:translateX(-50%);animation:undoIn .25s cubic-bezier(.2,.8,.2,1)}
.undo-toast b{color:#fff;font-weight:600;max-width:240px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.undo-toast button{height:30px;padding:0 14px;border:0;border-radius:999px;background:#fff;color:#111;font:600 12.5px var(--font);cursor:pointer}
.undo-toast.out{opacity:0;pointer-events:none;transition:opacity .25s}
@keyframes undoIn{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translateX(-50%)}}

/* three upload choices side by side (DXF Studio keeps only the package) */
.empty-copy{max-width:980px}
.upload-modes{grid-template-columns:repeat(3,minmax(0,1fr));width:min(980px,100%)}
@media (max-width:1100px){.upload-modes{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.upload-modes{grid-template-columns:1fr}}

/* separate DXFs: the info table (quality, thickness, quantity; Excel paste; bulk entry) */
.imp-dlg{width:min(980px,calc(100vw - 32px));max-height:calc(100vh - 48px);padding:0;border-radius:22px;border:1px solid rgba(255,255,255,.1);background:#141416;color:#eef1f5;box-shadow:0 40px 120px -20px rgba(0,0,0,.8)}
.imp-dlg::backdrop{background:rgba(0,0,0,.6);backdrop-filter:blur(6px)}
.imp-dlg form{display:flex;flex-direction:column;max-height:calc(100vh - 50px)}
.imp-head{display:flex;justify-content:space-between;gap:16px;padding:22px 24px 14px}
.imp-head h3{margin:0 0 4px;font:650 20px var(--font);letter-spacing:-.01em}
.imp-head .hint{margin:0;color:#8d95a3;font-size:13px}
.imp-x{width:32px;height:32px;flex:none;border:0;border-radius:50%;background:rgba(255,255,255,.06);color:#c9ced6;font-size:20px;line-height:1;cursor:pointer}
.imp-x:hover{background:rgba(255,255,255,.12)}
.imp-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:0 24px 14px}
.imp-paste-btn{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#eef1f5;font:500 13px var(--font);cursor:pointer}
.imp-paste-btn:hover{background:rgba(255,255,255,.09)}
.imp-paste-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.imp-bulk{display:flex;align-items:center;gap:6px;margin-left:auto;font-size:12.5px;color:#8d95a3}
.imp-bulk input{width:96px;height:34px;padding:0 10px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#0d0d0f;color:#fff;font:13px var(--font)}
.imp-bulk .btn{height:34px;padding:0 14px}
.imp-pastebox{margin:0 24px 14px;padding:14px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03)}
.imp-pastebox p{margin:0 0 10px;font-size:12.5px;line-height:1.5;color:#a1a6b0}
.imp-pastebox textarea{width:100%;box-sizing:border-box;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#0d0d0f;color:#fff;font:12.5px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}
.imp-paste-act{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}
.imp-paste-act .hint{margin:0;font-size:12.5px;color:#7ee2a8}
.imp-table-wrap{flex:1;min-height:120px;overflow:auto;margin:0 12px;border-top:1px solid rgba(255,255,255,.07);border-bottom:1px solid rgba(255,255,255,.07)}
.imp-table{width:100%;border-collapse:collapse;font-size:13px}
.imp-table th{position:sticky;top:0;z-index:1;background:#141416;text-align:left;padding:10px 8px;font:600 10.5px var(--font);letter-spacing:.08em;text-transform:uppercase;color:#6e7480}
.imp-table td{padding:6px 8px;border-top:1px solid rgba(255,255,255,.05);vertical-align:middle}
.imp-table tr{transition:background-color .4s}
.imp-table tr.flash{background:rgba(126,226,168,.10)}
.imp-table .c-ck{width:34px;text-align:center}
.imp-table input[type=checkbox]{width:16px;height:16px;accent-color:#fff}
.imp-th{width:54px;height:44px;padding:4px}
.imp-name b{display:block;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.imp-name small{color:#8d95a3;font-size:11.5px}
.imp-table input[data-f]{width:100%;min-width:80px;box-sizing:border-box;height:34px;padding:0 10px;border-radius:9px;border:1px solid rgba(255,255,255,.1);background:#0d0d0f;color:#fff;font:13px var(--font)}
.imp-table input[data-f]:focus{outline:none;border-color:rgba(255,255,255,.4)}
.imp-table input[data-f].miss{border-color:rgba(255,190,80,.55);background:rgba(255,190,80,.06)}
.imp-foot{display:flex;align-items:center;gap:10px;padding:14px 24px 20px}
.imp-missing{margin-right:auto;font-size:13px;color:#ffbe50}
.imp-missing.ok{color:#7ee2a8}
@media (max-width:760px){.imp-bulk{margin-left:0;flex-wrap:wrap}.imp-th{display:none}}

/* quick quote: machine and sheet price, the trimmed last sheet */
.est-ctl{display:flex;flex-wrap:wrap;gap:12px;margin:14px 0}
.est-ctl label{display:grid;gap:6px;flex:1 1 180px;font-size:12px;color:#8d95a3}
.est-ctl select,.est-ctl input{height:38px;padding:0 12px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:#0d0d0f;color:#fff;font:14px var(--font);width:100%;box-sizing:border-box}
.est-in{position:relative;display:block}
.est-in input{padding-right:52px}
.est-in i{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-style:normal;font-size:12px;color:#8d95a3}
.est-trim{display:grid;gap:6px;margin:14px 0;padding:14px 16px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);font-size:13px}
.est-trim div{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.est-trim div span{color:#c9ced6}
.est-trim small{color:#8d95a3}
@media (max-width:900px){.est-facts{grid-template-columns:1fr 1fr}}

/* Hızlı fiyat idle: parts fill two sheets and part of a third, the laser trims the last one, what is billed is shown */
.plate-art.qa{filter:none}
.qa .qa-sheet{fill:#0b0c0e;stroke:rgba(255,255,255,.2);stroke-width:1;opacity:0;animation:inFade .6s ease .1s forwards}
.qa .qa-p{fill:url(#qaSteel);fill-rule:evenodd;stroke:rgba(236,239,243,.55);stroke-width:.6;opacity:0;animation:qaIn .5s cubic-bezier(.2,.8,.2,1) var(--d) forwards}
.qa .qa-cut{fill:none;stroke:#fff;stroke-width:1.4;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 4px #fff);animation:inDraw .8s cubic-bezier(.5,0,.3,1) 2.9s forwards,qaCool .8s ease 3.9s forwards}
.qa .qa-dot{fill:#fff;opacity:0;filter:drop-shadow(0 0 6px #fff);animation:qaDot .8s cubic-bezier(.5,0,.3,1) 2.9s forwards}
.qa .qa-off{animation:qaOff 1s cubic-bezier(.4,0,.2,1) 3.8s forwards}
.qa .qa-off .qa-sheet{stroke-dasharray:4 4}
.qa .qa-offt{fill:rgba(236,239,243,.0);font:500 10px var(--font);text-anchor:middle;animation:qaTxt .6s ease 4.4s forwards}
.qa .qa-l{fill:rgba(236,239,243,.45);font:600 9px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em;text-anchor:middle;text-transform:uppercase;opacity:0;animation:inFade .6s ease .4s forwards}
.qa .qa-l3{animation-delay:4.2s}
.qa .qa-sum{fill:#eef1f5;font:500 12px var(--font);text-anchor:middle;opacity:0;animation:inFade .8s ease 4.6s forwards}
@keyframes qaIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@keyframes qaCool{to{stroke:rgba(255,255,255,.5);filter:none;stroke-width:1}}
@keyframes qaDot{0%{opacity:1;transform:translateX(0)}92%{opacity:1}100%{opacity:0;transform:translateX(172px)}}
@keyframes qaOff{to{opacity:.35;transform:translateY(10px)}}
@keyframes qaTxt{to{fill:rgba(236,239,243,.8)}}
@media (prefers-reduced-motion:reduce){.qa *{animation:none !important;opacity:1 !important;stroke-dashoffset:0 !important}.qa .qa-dot{display:none}}

/* ---- glass select: the same pill and the same glass list everywhere ---- */
:root{--gsel-bg:rgba(36,36,40,.72);--gsel-line:rgba(255,255,255,.12);--gsel-text:#f2f3f5;--gsel-muted:#8d95a3;--gsel-hover:rgba(255,255,255,.09);--gsel-chev:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='%23a1a6b0' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
select:not([multiple]):not([size]){-webkit-appearance:none;appearance:none;background-image:var(--gsel-chev) !important;background-repeat:no-repeat !important;background-position:right 11px center !important;background-size:12px 12px !important;padding-right:32px !important;border-radius:12px !important;cursor:pointer;transition:border-color .2s,box-shadow .2s,background-color .2s}
select:not([multiple]):not([size]):hover{border-color:rgba(255,255,255,.22)}
select:not([multiple]):not([size]):focus-visible,select.gsel-open{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.12)}
select option{background:#1c1c1f;color:#f2f3f5}
.gsel{position:fixed;inset:auto;margin:0;padding:6px;border-radius:16px;border:1px solid var(--gsel-line);background:var(--gsel-bg);color:var(--gsel-text);
  backdrop-filter:saturate(180%) blur(30px);-webkit-backdrop-filter:saturate(180%) blur(30px);box-shadow:0 24px 60px -12px rgba(0,0,0,.55),0 2px 10px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.08);
  overflow:auto;overscroll-behavior:contain;font:14px var(--font,Inter,system-ui,sans-serif);transform-origin:top center;animation:gselIn .16s cubic-bezier(.2,.8,.2,1)}
.gsel.up{transform-origin:bottom center}
.gsel:popover-open{display:block}
.gsel-o{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:34px;padding:7px 10px 7px 12px;border-radius:10px;cursor:pointer;white-space:nowrap;user-select:none}
.gsel-o span{overflow:hidden;text-overflow:ellipsis}
.gsel-o.act{background:var(--gsel-hover)}
.gsel-o.on{font-weight:600}
.gsel-o i{width:14px;height:14px;flex:none}
.gsel-o.on i{background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.4l2.6 2.6L11 4.4' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.4l2.6 2.6L11 4.4' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat}
.gsel-o.off{opacity:.4;cursor:default}
.gsel-g{padding:10px 12px 4px;font:600 10.5px var(--font,Inter,system-ui,sans-serif);letter-spacing:.08em;text-transform:uppercase;color:var(--gsel-muted)}
.gsel::-webkit-scrollbar{width:8px}.gsel::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:8px;border:2px solid transparent;background-clip:padding-box}
@keyframes gselIn{from{opacity:0;transform:scale(.97) translateY(-4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.gsel{animation:none}}

/* ---- login / sign-up: brand side + form, personal accounts ---- */
.gate{background:radial-gradient(900px 600px at 15% 0%,rgba(255,255,255,.06),transparent 60%),#050506;padding:20px}
.gate-shell{width:min(1040px,100%);min-height:min(640px,calc(100vh - 40px));display:grid;grid-template-columns:1.05fr 1fr;border-radius:28px;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:rgba(18,18,20,.8);box-shadow:0 40px 120px -30px rgba(0,0,0,.9)}
.gate-brand{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:28px;padding:40px;background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.09),transparent 55%),linear-gradient(160deg,#17181b,#0b0b0d);border-right:1px solid rgba(255,255,255,.06);overflow:hidden}
.gate-brand::after{content:"";position:absolute;right:-90px;bottom:-90px;width:320px;height:320px;background:url(/assets/icon.svg) center/contain no-repeat;opacity:.06;transform:rotate(-12deg)}
.gb-top{display:flex;align-items:center;gap:12px;font:650 20px var(--font);letter-spacing:-.01em;color:#fff}
.gb-mid h2{margin:0 0 26px;font:700 clamp(30px,3.4vw,42px)/1.08 var(--display,var(--font));letter-spacing:-.03em;background:linear-gradient(180deg,#fff 30%,#a1a6b0);-webkit-background-clip:text;background-clip:text;color:transparent}
.gb-mid h2 span{color:transparent}
.gb-mid ul{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.gb-mid li{display:grid;gap:3px;padding-left:18px;position:relative}
.gb-mid li::before{content:"";position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;background:#e6e9ed;box-shadow:0 0 10px rgba(255,255,255,.5)}
.gb-mid li b{font:600 14.5px var(--font);color:#fff}
.gb-mid li span{font-size:13.5px;color:#9aa0aa;line-height:1.45}
.gb-foot{margin:0;font-size:12.5px;color:#6e7480;position:relative;z-index:1}
.gate-card{width:auto;align-self:center;justify-self:center;max-width:400px;width:100%;gap:12px;padding:40px 36px;background:none;border:0;box-shadow:none;text-align:left}
.gate-logo{display:none}
.gate-card h1{font:700 28px var(--display,var(--font));letter-spacing:-.025em;color:#fff}
.gate-card .gate-lead{margin:-4px 0 6px;color:#8d95a3;font-size:14px}
.gate-seg{align-self:stretch !important;display:grid !important;grid-template-columns:1fr 1fr;margin-bottom:6px}
.gate-seg button{justify-content:center}
.gate-card form{gap:14px}
.gf{display:grid;gap:7px}
.gf>span:first-child{font:500 12.5px var(--font);color:#a1a6b0}
.gf[hidden]{display:none}
.gate-card .gf input{width:100%;box-sizing:border-box;height:46px;padding:0 14px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#fff;font:400 15px var(--font);letter-spacing:0;text-align:left;transition:border-color .2s,box-shadow .2s,background-color .2s}
.gate-card .gf input::placeholder{color:#5f6570}
.gate-card .gf input:focus{outline:none;border-color:rgba(255,255,255,.35);background:rgba(255,255,255,.06);box-shadow:0 0 0 4px rgba(255,255,255,.06)}
.gf-pass{position:relative;display:block}
.gf-pass input{padding-right:76px !important}
.gf-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);height:34px;padding:0 12px;border:0;border-radius:9px;background:none;color:#a1a6b0;font:500 12.5px var(--font);cursor:pointer}
.gf-eye:hover{background:rgba(255,255,255,.07);color:#fff}
.gate-note{margin:0;padding:11px 13px;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);font-size:12.5px;line-height:1.5;color:#a1a6b0 !important}
.gate-note b{color:#fff;font-weight:600}
.gate-card .btn.big{height:48px;border-radius:12px;font:600 15px var(--font);margin-top:4px}
.gate-card .btn.quiet{align-self:center}
.gate-about{margin-top:6px}
@media (max-width:860px){.gate-shell{grid-template-columns:1fr;min-height:0}.gate-brand{display:none}.gate-logo{display:block;align-self:flex-start}.gate-card{padding:32px 24px}}
.acct-tiles{grid-template-columns:1fr 1fr}
.acct-firm h4 small{font-weight:500;color:#8d95a3;margin-left:6px;font-size:12px}

/* ---- Yönetim: a full page (top bar, section menu, wide symmetric content) ---- */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.admin-page{z-index:150;padding:0;background:#09090a;backdrop-filter:none;display:block}
.admin-page[hidden]{display:none}
.admin-page .insp-frame{width:100%;height:100%;max-width:none;border:0;border-radius:0;box-shadow:none;background:#09090a}
.admin-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 28px;border-bottom:1px solid rgba(255,255,255,.07);background:rgba(16,16,18,.8);backdrop-filter:blur(20px)}
.ah-left{display:flex;align-items:center;gap:18px}
.ah-back{height:36px;padding:0 14px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#eef1f5;font:500 13px var(--font);cursor:pointer}
.ah-back:hover{background:rgba(255,255,255,.09)}
.ah-brand{display:flex;align-items:center;gap:10px;font:600 15px var(--font);color:#fff}
.ah-brand b{font-weight:500;color:#8d95a3;padding-left:10px;border-left:1px solid rgba(255,255,255,.14)}
.admin-layout{flex:1;min-height:0;display:grid;grid-template-columns:248px minmax(0,1fr)}
.admin-page .admin-tabs{flex-direction:column;align-items:stretch;gap:3px;padding:22px 14px;border-bottom:0;border-right:1px solid rgba(255,255,255,.07);overflow:auto}
.at-label{padding:0 12px 10px;font:600 10.5px var(--font);letter-spacing:.09em;text-transform:uppercase;color:#6e7480}
.admin-page .admin-tabs button{display:flex;align-items:center;gap:11px;padding:10px 12px;border:0;border-radius:11px;color:#a1a6b0;font:500 14px var(--font);text-align:left}
.admin-page .admin-tabs button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.admin-page .admin-tabs button:hover{background:rgba(255,255,255,.05);color:#fff}
.admin-page .admin-tabs button.on{background:rgba(255,255,255,.09);color:#fff;border:0}
.at-sub{margin:auto 12px 0;padding-top:16px;font-size:12px;color:#6e7480;line-height:1.5}
.admin-page .admin-scroll{padding:32px clamp(20px,4vw,48px) 48px}
.admin-page .admin-sec{max-width:1180px;margin:0 auto}
.admin-page .admin-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px}
.admin-page .admin-stats div{padding:18px 20px;border-radius:16px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07)}
.admin-page .admin-stats b{display:block;margin-top:6px;font-size:26px;font-weight:650;letter-spacing:-.02em}
.admin-page .admin-filter{margin-bottom:12px}
.admin-page .admin-filter input,.admin-page .admin-filter select,.admin-page .admin-table select{height:40px;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1)}
.admin-page .admin-body{border-radius:18px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.02);padding:6px 18px 10px;overflow:auto}
.admin-page .admin-table th{color:#6e7480;font-size:11px;letter-spacing:.07em;padding:14px 10px}
.admin-page .admin-table td{padding:12px 10px;border-bottom-color:rgba(255,255,255,.06)}
.admin-page .admin-table tr:last-child td{border-bottom:0}
.admin-page .market{margin:0 0 20px;padding:24px;border-radius:20px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);gap:18px}
.admin-page .mk-head h3{font:650 17px var(--font);letter-spacing:-.01em}
.admin-page .mk-head p{font-size:13px;line-height:1.5;max-width:760px}
.admin-page .mk-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 18px}
.admin-page .mk-grid label{display:flex;flex-wrap:wrap;align-items:baseline;align-content:flex-start;gap:7px 6px;font-size:13px;color:#c9ced6}
.admin-page .mk-grid label>input:not([type=checkbox]),.admin-page .mk-grid label>select{flex:1 0 100%}
.admin-page .mk-grid label small{color:#6e7480}
.admin-page .mk-grid input:not([type=checkbox]),.admin-page .mk-grid select,.admin-page .market textarea,.admin-page .market input:not([type=checkbox]),.admin-page .admin-table input[type=date]{width:100%;box-sizing:border-box;height:40px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#fff;padding:0 12px;font:14px var(--font)}
.admin-page .market textarea{height:auto;padding:10px 12px;line-height:1.5}
.admin-page .market label.wide{display:grid;gap:7px;font-size:13px;color:#c9ced6}
.admin-page .mk-grid .mk-check{align-self:end;flex-wrap:nowrap;align-items:center;gap:10px;height:40px;padding:0 14px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);cursor:pointer}
.admin-page .mk-check input{width:18px;height:18px;accent-color:#fff;margin:0}
.admin-page .admin-table input[type=date]{width:auto;height:38px;color-scheme:dark}
.admin-page .mk-acts{padding-top:16px;border-top:1px solid rgba(255,255,255,.06)}
@media (max-width:900px){.admin-layout{grid-template-columns:1fr;grid-template-rows:auto 1fr}.admin-page .admin-tabs{flex-direction:row;padding:10px 12px;border-right:0;border-bottom:1px solid rgba(255,255,255,.07)}.at-label,.at-sub{display:none}.admin-page .admin-stats{grid-template-columns:1fr 1fr}.admin-page .mk-grid{grid-template-columns:1fr 1fr}.ah-brand{display:none}}

/* theme switch (sun in dark, moon in light) */
.theme-btn{width:36px;height:36px;display:grid;place-items:center;padding:0;border-radius:50%;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#c9ced6;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}
.theme-btn:hover{background:rgba(255,255,255,.09);color:#fff}
.theme-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;grid-area:1/1;transition:opacity .25s,transform .35s cubic-bezier(.2,.8,.2,1)}
.theme-btn .tb-moon{opacity:0;transform:rotate(-40deg) scale(.6)}
:root[data-theme=light] .theme-btn .tb-sun{opacity:0;transform:rotate(40deg) scale(.6)}
:root[data-theme=light] .theme-btn .tb-moon{opacity:1;transform:none}

/* tables: actions sit in fixed slots so buttons line up from row to row; numbers and actions align right */
.admin-table td:last-child,.admin-table th:last-child{text-align:right}
.admin-table .acts{display:grid !important;grid-template-columns:auto 64px 124px;justify-content:end;align-items:center;gap:4px;white-space:nowrap}
.admin-table .acts>.btn{justify-self:stretch;text-align:center}
.admin-table .acts>.btn.quiet{padding-left:6px;padding-right:6px}
.admin-table td{white-space:nowrap}
.admin-table td:first-child{white-space:normal;min-width:220px}
.admin-head .insp-tools{display:flex;align-items:center;gap:10px}
.abx-acts{display:flex;align-items:center;gap:10px}
.gate-theme{position:fixed;top:18px;right:18px;z-index:2}

/* ---------- resizable parts pane (drag the right edge; double click resets) ---------- */
.station{grid-template-columns:var(--parts-w,304px) minmax(0,1fr) 322px}
@media (max-width:1240px){.station{grid-template-columns:var(--parts-w,270px) minmax(0,1fr) 290px}}
body[data-ws=extract] .station{grid-template-columns:var(--parts-w,330px) minmax(0,1fr)}
@media (max-width:920px){.station,body[data-ws=extract] .station{grid-template-columns:1fr}.pane-grip{display:none}}
.parts-pane{position:relative}
.pane-grip{position:absolute;top:0;bottom:0;right:-9px;width:12px;cursor:col-resize;z-index:5;touch-action:none}
.pane-grip::after{content:"";position:absolute;top:50%;left:4px;width:4px;height:44px;margin-top:-22px;border-radius:4px;background:rgba(255,255,255,.14);opacity:0;transition:opacity .2s,background .2s}
.parts-pane:hover .pane-grip::after,.pane-grip.on::after{opacity:1}
.pane-grip:hover::after,.pane-grip.on::after{background:var(--accent)}
body.resizing,body.resizing *{cursor:col-resize !important;user-select:none !important}
/* part row: tags wrap under the name instead of being cut off */
.pr-name{flex-wrap:wrap;row-gap:4px;white-space:normal;overflow:visible}
.pr-name .nm{white-space:nowrap;flex:1 1 64px;max-width:100%}
.pr-name .tag{white-space:nowrap}

/* ---------- Kontrol raporu: cards, map of open lines, part chips ---------- */
.report.rp{max-width:1180px;gap:22px}
.rp-sum{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.rp-sum div{border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:12px 14px;background:rgba(255,255,255,.03);display:grid;gap:2px}
.rp-sum b{font:700 24px var(--display);letter-spacing:-.02em}
.rp-sum span{font-size:12px;color:var(--muted)}
.rp-sum .bad b{color:#ff6b6b}.rp-sum .mid b{color:#ffc44d}
.rp-card{border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.025);margin-bottom:10px;overflow:hidden}
.rp-card.danger{border-color:rgba(255,99,99,.35);background:rgba(255,80,80,.05)}
.rp-card header{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:12px;align-items:start;padding:14px 16px}
.rp-card header i{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:800;font-size:12px;background:rgba(120,170,255,.16);color:#9cc2ff}
.rp-card.warn header i{background:rgba(255,190,70,.18);color:#ffd18a}
.rp-card.danger header i{background:rgba(255,90,90,.2);color:#ff9b9b}
.rp-card h4{font:600 15px var(--display);margin:1px 0 3px}
.rp-card header p{margin:0;font-size:13.5px;line-height:1.5;color:var(--text-2)}
.rp-card header small{display:block;margin-top:4px;font-size:11.5px;color:var(--muted)}
.rp-more{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:var(--text);border-radius:999px;padding:5px 12px;font-size:12.5px;cursor:pointer}
.rp-more:hover{background:rgba(255,255,255,.09)}
.rp-body{padding:0 16px 16px 56px;display:grid;gap:12px}
.rp-help{margin:0;font-size:13px;line-height:1.55;color:var(--muted);max-width:760px}
.rp-chips{display:flex;flex-wrap:wrap;gap:6px}
.rp-chip{display:inline-flex;gap:6px;align-items:center;max-width:260px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:var(--text);border-radius:999px;padding:4px 11px;font:600 12px var(--sans,inherit);cursor:pointer}
.rp-chip span{font-weight:400;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-chip:hover{border-color:var(--accent);background:rgba(10,132,255,.1)}
.rp-open{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:14px;align-items:start}
.rp-map{width:100%;max-height:440px;aspect-ratio:4/3;border-radius:12px;background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.07)}
.rp-map .rm-part{fill:rgba(255,255,255,.07);stroke:rgba(255,255,255,.28);stroke-width:1;vector-effect:non-scaling-stroke;fill-rule:evenodd}
.rp-map .rm-line{fill:none;stroke:#ff5a5a;stroke-linecap:round;stroke-linejoin:round;transition:stroke .15s}
.rp-map .rm-line.rp-on{stroke:#ffd84d}
.rp-map .rm-gap{stroke:#ffb340}
.rp-map .rm-end{fill:#ffb340}
.rp-map .rm-tag circle{fill:#ff5a5a}.rp-map .rm-tag.rp-on circle{fill:#ffd84d}
.rp-map .rm-tag text{fill:#fff;font-weight:800;text-anchor:middle;dominant-baseline:central}
.rp-map .rm-tag.rp-on text{fill:#111}
.rp-side{display:grid;gap:8px;max-height:440px;overflow:auto}
.rp-k{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-top:4px}
.rp-chain{border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:9px 11px;display:grid;gap:2px;font-size:12.5px;cursor:default}
.rp-chain.warn{border-color:rgba(255,179,64,.45);background:rgba(255,179,64,.07)}
.rp-chain span{color:var(--text-2)}.rp-chain small{color:#ffcf85}
.rp-lines{width:100%;border-collapse:collapse;font-size:12.5px}
.rp-lines td{padding:6px 6px;border-bottom:1px solid rgba(255,255,255,.06);color:var(--text-2)}
.rp-lines tr:hover td,.rp-lines tr.rp-on td{background:rgba(255,216,77,.08)}
.rp-n{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:50%;background:#ff5a5a;color:#fff;font-weight:800;font-size:11px}
@media (max-width:1100px){.rp-open{grid-template-columns:1fr}.rp-sum{grid-template-columns:repeat(3,minmax(0,1fr))}.rp-body{padding-left:16px}}
.rp-mapbox{position:relative}
.rp-zoom{position:absolute;right:10px;top:10px;border:1px solid rgba(255,255,255,.14);background:rgba(20,20,22,.75);backdrop-filter:blur(10px);color:var(--text);border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer}

/* grade chosen from a list; "Diğer" shows a field under it */
.edit-dlg label select[data-grade]{width:100%;height:auto;min-height:38px;margin-top:0;border-radius:10px !important;border:1px solid transparent !important;background-color:rgba(118,118,128,.18) !important;color:inherit;padding:9px 34px 9px 12px !important;font:inherit !important}
.edit-dlg label select[data-grade]:focus{outline:2px solid var(--accent)}
.edit-dlg label .grade-other{margin-top:8px}
.imp-bulk select[data-grade]{width:150px;height:34px;padding:0 30px 0 12px;border-radius:10px;font:13px var(--font)}
.imp-bulk .grade-other{width:120px}

/* ---------- Geçmiş işler: save button, list dialog, home strip ---------- */
.save-job{display:inline-flex;align-items:center;gap:7px}
.save-job svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round}
.jobs-dlg{width:min(1080px,94vw);max-height:88vh;flex-direction:column;gap:14px}
.jobs-dlg[open]{display:flex}
.jobs-dlg .rep-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.jobs-dlg .rep-head .hint{margin:4px 0 0}
.jobs-tools input{width:100%;height:40px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.05);color:inherit;padding:0 14px;font:inherit}
.jobs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;overflow:auto;padding:2px}
.jobs-empty{grid-column:1/-1;padding:30px 4px;text-align:center}
.job-card{display:grid;grid-template-rows:auto 1fr auto;border:1px solid rgba(255,255,255,.08);border-radius:16px;overflow:hidden;background:rgba(255,255,255,.03)}
.jc-open{display:block;border:0;padding:8px;background:rgba(128,128,128,.06);cursor:pointer;aspect-ratio:2/1}
.jc-open img{width:100%;height:100%;object-fit:contain;display:block}
.jc-empty{display:block;width:100%;height:100%;background:repeating-linear-gradient(45deg,rgba(255,255,255,.03) 0 10px,transparent 10px 20px)}
.jc-body{display:grid;gap:4px;padding:12px 14px 6px;min-width:0}
.jc-title{font:600 15px var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jc-body small{color:var(--muted);font-size:12px}
.jc-line{font-size:12.5px;color:var(--text-2)}
.jc-exp{font-size:11.5px;color:var(--muted)}
.jc-rename{height:32px;border-radius:8px;border:1px solid var(--accent);background:rgba(255,255,255,.06);color:inherit;padding:0 10px;font:600 14px var(--display)}
.jc-acts{display:flex;gap:6px;padding:8px 12px 12px;flex-wrap:wrap}
.jc-acts .btn{height:32px;padding:0 12px;font-size:12.5px}
.jc-acts .jc-del{margin-left:auto}
.home-jobs{width:100%;max-width:1360px;margin:30px auto 0;display:grid;gap:12px}
.hj-head{display:flex;justify-content:space-between;align-items:center}
.hj-head b{font:600 15px var(--display);letter-spacing:-.01em}
.hj-all{border:0;background:none;color:var(--accent);font:inherit;font-size:13px;cursor:pointer}
.hj-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.hj-card{display:grid;grid-template-rows:auto auto auto;gap:3px;text-align:left;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(255,255,255,.03);color:inherit;padding:0 0 10px;overflow:hidden;cursor:pointer;font:inherit;transition:transform .2s,border-color .2s}
.hj-card:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.2)}
.hj-card img,.hj-card .jc-empty{width:100%;aspect-ratio:2.2/1;object-fit:contain;background:rgba(128,128,128,.06);padding:8px;box-sizing:border-box;display:block}
.hj-card b{padding:6px 12px 0;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hj-card small{padding:0 12px;color:var(--muted);font-size:11.5px}
@media (max-width:900px){.hj-row{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* takım sayısı */
.set-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding:9px 10px 9px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03)}
.set-row>span{display:grid;gap:1px;min-width:0}
.set-row b{font-size:13px}
.set-row small{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.set-qty input{width:64px}
.per-set{color:var(--muted);font-weight:400}
