/* =========================================================================
   Инструменты, выросшие из лаборатории: симулятор сварки (calc-sim),
   смета заказа (calc-quote), журнал сварщика (calc-journal).

   Перенесено из lab/assets/lab.css 26.10.2026 — только то, что нужно трём
   инструментам. Подключает inc/head.php на страницах этих трёх id.
   ========================================================================= */

:root{
  --lab-panel:#22262a;
  --lab-panel-2:#191c1f;
  --lab-scope:#0d1012;
  --lab-edge:#3a4046;
  --lab-glow:#ff9800;
  --lab-cool:#4fc3f7;
  --lab-hot:#ff7043;
  --lab-slag:#b39ddb;
  --lab-steel:#90a4ae;
}

/* --- смотровое окно --- */
.scope{position:relative;border-radius:16px;overflow:hidden;
  background:var(--lab-scope);border:1px solid var(--lab-edge);
  box-shadow:inset 0 0 60px rgba(0,0,0,.7),0 10px 30px rgba(0,0,0,.4)}
.scope::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 40%,transparent 55%,rgba(0,0,0,.55) 100%)}
.scope__svg{display:block;width:100%;height:auto}

/* Полоска приборов под картинкой. */
.hud{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));
  gap:1px;background:var(--lab-edge);border-top:1px solid var(--lab-edge)}
.hud__i{background:var(--lab-panel-2);padding:10px 12px;min-width:0}
.hud__k{display:block;font:600 .64rem/1.2 var(--mono);letter-spacing:.1em;
  text-transform:uppercase;color:var(--fg-3);margin-bottom:4px}
.hud__v{font:700 1.05rem/1.1 var(--mono);color:var(--fg);white-space:nowrap}
.hud__v small{font-size:.68em;color:var(--fg-3);font-weight:600}
.hud__i--main .hud__v{color:var(--accent);font-size:1.25rem}

/* --- вердикт --- */
.verdict{margin-top:18px;border-radius:14px;border:1px solid var(--line);
  background:var(--bg-2);padding:16px 18px}
.verdict__s{display:flex;align-items:center;gap:10px;margin-bottom:12px;
  font-weight:700;font-size:1.02rem}
.verdict__s .dot{width:10px;height:10px;border-radius:50%;flex:none;
  box-shadow:0 0 12px currentColor;background:currentColor}
.verdict--ok .verdict__s{color:var(--ok)}
.verdict--warn .verdict__s{color:var(--warn)}
.verdict--bad .verdict__s{color:var(--bad)}
.verdict__l{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.verdict__l li{display:grid;grid-template-columns:26px 1fr;gap:10px;align-items:start}
.verdict__n{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  font:700 .72rem/1 var(--mono);color:#111;background:var(--warn)}
.verdict__n--bad{background:var(--bad);color:#fff}
.verdict__d strong{display:block;font-size:.96rem}
.verdict__d span{color:var(--fg-2);font-size:.9rem;line-height:1.5}


/* ------------------------------------------------------ угол и скорость -- */

.game{max-width:820px;margin-inline:auto}
.scope--game{position:relative;cursor:crosshair;touch-action:none}
.game__over{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;
  background:rgba(9,11,13,.82);backdrop-filter:blur(3px)}
.game__hint{margin:0;color:var(--fg-3);font-size:.9rem}
.game__score{font:800 3rem/1 var(--mono);color:var(--accent)}
.game__verdict{font-weight:700;font-size:1.25rem}
.game__over--ok .game__verdict{color:var(--ok)}
.game__over--warn .game__verdict{color:var(--warn)}
.game__over--bad .game__verdict{color:var(--bad)}
.game__note{margin:0;max-width:520px;color:var(--fg-2);font-size:.95rem;line-height:1.55}

/* ---------------------------------------------------- симулятор сварки -- */

.sim{max-width:880px;margin-inline:auto}
.sim__ctl{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px 18px;
  margin-bottom:16px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--bg-2)}
.sim__g{min-width:0}
.sim__k{display:block;font:600 .68rem/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  color:var(--fg-3);margin-bottom:6px}
.sim__k output{color:var(--accent);margin-inline-start:6px}
.sim__n{margin:6px 0 0;color:var(--fg-3);font-size:.84rem;line-height:1.45}
.seg{display:flex;flex-wrap:wrap;gap:4px}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg label{padding:7px 10px;border:1px solid var(--line);border-radius:7px;font-size:.84rem;
  font-weight:600;color:var(--fg-2);cursor:pointer;user-select:none}
.seg input:checked+label{border-color:var(--accent);color:var(--accent);background:rgba(255,152,0,.08)}
.seg input:focus-visible+label{outline:2px solid var(--accent);outline-offset:2px}
.sim__cur{position:relative}
.sim__cur input{position:relative;z-index:1;width:100%;accent-color:var(--accent)}
.sim__win{position:absolute;bottom:-5px;height:4px;border-radius:2px;background:rgba(76,175,80,.7)}
.sim__sw{display:inline-block;width:18px;height:8px;border-radius:4px;background:rgba(76,175,80,.5);
  vertical-align:middle}
.sim__g--opt{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}
.sim__chk{display:flex;align-items:center;gap:6px;font-size:.9rem;color:var(--fg-2);cursor:pointer}
.sim__gyro.is-on{border-color:var(--ok);color:var(--ok)}

.scope--sim{touch-action:none;cursor:crosshair;user-select:none;-webkit-user-select:none}
.scope--sim.is-pf{max-width:420px;margin-inline:auto}
.sim__cv{display:block;width:100%;height:auto}
.sim__msg{min-height:2.9em;margin:0;padding:8px 14px;font-size:.88rem;line-height:1.45;
  background:var(--lab-panel-2);border-top:1px solid var(--lab-edge);color:#9aa4ab}
.sim__msg.is-on{color:#e8ecef}
.sim__msg--bad.is-on{color:#ef8b89}
.sim__msg--warn.is-on{color:#ffca4f}
.sim__msg--ok.is-on{color:#7fd383}
.sim__dab{position:absolute;right:12px;bottom:12px;z-index:3;min-width:96px;min-height:56px;
  border-radius:50px;border:1px solid var(--lab-cool);background:rgba(79,195,247,.15);
  color:var(--lab-cool);font-weight:700;touch-action:none}
.sim__hud .hud__v{color:#e8ecef}
.sim__hud .hud__k{color:#8a949c}
.sim__hud .hud__i--main .hud__v{color:var(--lab-glow)}
.sim__hud .hud__i--ok .hud__v{color:#7fd383}
.sim__hud .hud__i--warn .hud__v{color:#ffca4f}
.sim__hud .hud__i--bad .hud__v{color:#ef8b89}
.sim__hud .hud__k{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sim__acts{display:flex;justify-content:flex-end;margin-top:10px}
.sim__res{margin-top:6px}
.sim__h3{font-size:1rem;margin:14px 0 10px}
.sim__best{margin:0 0 6px;color:var(--fg-2);font-size:.9rem}
.sim__cut{display:grid;grid-template-columns:1fr 360px;gap:18px;align-items:start;margin-top:18px;
  border:1px solid var(--line);border-radius:14px;background:var(--bg-2);padding:16px 18px}
.sim__cut input{width:100%;accent-color:var(--accent)}
.sim__cut canvas{width:100%;max-width:360px;height:auto;border-radius:10px;border:1px solid var(--lab-edge)}
.sim__geo{font:600 .86rem/1.5 var(--mono);color:var(--fg-2)}
@media (max-width:700px){
  .sim__cut{grid-template-columns:1fr}
  .sim__ctl{padding:12px}
}

/* ---------------------------------------------------------- смета заказа -- */

.q{max-width:1100px;margin-inline:auto}
.q-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px}
.q-bar .sim__k{margin:0}
.q-pick{min-width:220px;flex:1 1 220px;max-width:420px}
.q-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
.q-box{border:1px solid var(--line);border-radius:14px;background:var(--bg-2);padding:12px 16px 14px;margin:0 0 14px;min-width:0}
.q-box legend{font:600 .7rem/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-3);padding:0 6px}
.q-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px 12px}
.q-row--5{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.q-f{display:flex;flex-direction:column;gap:4px;min-width:0;margin-bottom:8px}
.q-f label{font-size:.82rem;color:var(--fg-2);font-weight:600}
.q-f label small{color:var(--fg-3);font-weight:500}
.q-f input,.q-f select,.q-f textarea{width:100%;min-width:0}
.q-f--wide{grid-column:1/-1}
.q-row--line{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}
.q-line{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:var(--bg)}
.q-line--weld{border-inline-start:3px solid var(--lab-glow)}
.q-line--metal{border-inline-start:3px solid var(--lab-steel)}
.q-line--work{border-inline-start:3px solid var(--lab-cool)}
.q-line__h{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.q-line__sum{margin-inline-start:auto;font:700 .95rem/1 var(--mono);color:var(--accent)}
.q-line__acts{display:flex;gap:4px}
.q-line__acts .btn{min-height:32px;padding:4px 10px}
.q-line__info{margin:2px 0 0}
.q-adds{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.q-imp{margin-top:12px;border:1px dashed var(--line);border-radius:10px;padding:10px 12px}
.q-imp__h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.q-imp__i{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--line)}
.q-imp__i small{color:var(--fg-3)}

/* бланк — бумага, одинаковая в светлой и тёмной теме */
.q-sheet{background:#fff;color:#1b1d1f;border-radius:6px;padding:36px 40px;margin:8px auto 30px;max-width:820px;
  box-shadow:0 8px 30px rgba(0,0,0,.18);font-size:.92rem;line-height:1.45}
.q-sheet h2{margin:0 0 6px;font-size:1.35rem;color:#1b1d1f}
.q-sheet__top{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;
  border-bottom:2px solid #1b1d1f;padding-bottom:14px;margin-bottom:16px}
.q-sheet__from,.q-sheet__meta{display:flex;flex-direction:column;gap:2px}
.q-sheet__meta{text-align:end}
.q-sheet__logo{max-width:160px;max-height:60px;object-fit:contain;margin-bottom:6px}
.q-sheet__to{display:flex;gap:40px;flex-wrap:wrap;margin-bottom:16px}
.q-sheet__to div{display:flex;flex-direction:column}
.q-sheet__to small{color:#6b7178;text-transform:uppercase;letter-spacing:.06em;font-size:.7rem}
.q-pre{white-space:pre-line}
.q-tbl{width:100%;border-collapse:collapse;margin-bottom:12px}
.q-tbl th,.q-tbl td{border-bottom:1px solid #d6dade;padding:6px 6px;text-align:start;vertical-align:top}
.q-tbl th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:#6b7178;border-bottom:1.5px solid #1b1d1f}
.q-tbl .n,.q-sum .n{text-align:end;white-space:nowrap;font-variant-numeric:tabular-nums}
.q-sum{margin-inline-start:auto;border-collapse:collapse;min-width:280px}
.q-sum td{padding:4px 6px}
.q-sum__total td{font-weight:800;font-size:1.08rem;border-top:2px solid #1b1d1f;padding-top:8px}
.q-sheet__notes{margin-top:18px;color:#3b4045}
.q-sheet__sign{margin-top:42px;display:flex;justify-content:flex-end}
.q-sheet__sign span{min-width:220px;border-top:1px solid #1b1d1f;padding-top:4px;text-align:center;color:#6b7178;font-size:.8rem}
.q-sheet__empty{color:#6b7178;text-align:center;margin:30px 0}
@media (max-width:640px){
  .q-sheet{padding:20px 16px}
  .q-tbl{font-size:.82rem}
  .q-sheet__meta{text-align:start}
}
@media print{
  .q-noprint,.q-edit{display:none!important}
  .q-sheet{box-shadow:none;margin:0;padding:0;max-width:none;border-radius:0}
  .lab-wrap{padding:0}
}
/* поля сметы — как поля калькуляторов сайта (.calc input в main.css) */
.q-f input,.q-f select,.q-f textarea,.q-pick{padding:9px 11px;background:var(--bg);color:var(--fg);
  border:1px solid var(--field);border-radius:8px;font:500 1rem var(--font)}   /* 16 px — порог зума iOS */
.q-f input:focus,.q-f select:focus,.q-f textarea:focus,.q-pick:focus{border-color:var(--accent);outline:none}
.q-f input[type=number]{font-variant-numeric:tabular-nums}
.q-bar .btn,.q-adds .btn{min-height:40px;padding:8px 14px;font-size:.88rem}
.q-tblw{overflow-x:auto;margin-bottom:12px}
.q-tblw .q-tbl{margin-bottom:0;min-width:520px}
@media print{.q-tblw{overflow:visible}.q-tblw .q-tbl{min-width:0}}

/* -------------------------------------------------------- журнал сварщика -- */

.jr-form.is-edit{border-color:var(--accent)}
.jr-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.jr-nav{display:flex;align-items:center;gap:6px}
.jr-nav .btn{min-height:34px;padding:4px 12px}
.jr-nav__l{min-width:0;padding:0 4px;font-size:.95rem}
.jr-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:12px;overflow:hidden}
.jr-kpi__i{background:var(--bg);padding:10px 12px;display:flex;flex-direction:column;gap:3px;min-width:0}
.jr-kpi__i span{font:600 .66rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3)}
.jr-kpi__i b{font:700 1.05rem/1.15 var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jr-kpi__i.is-main{grid-column:1/-1}
.jr-kpi__i.is-main b{font-size:1.5rem;color:var(--accent)}
.jr-tbl{width:100%;border-collapse:collapse;min-width:480px}
.jr-tbl th,.jr-tbl td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:start}
.jr-tbl th{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-3)}
.jr-tbl .n{text-align:end;white-space:nowrap;font-variant-numeric:tabular-nums}
.jr-list{display:flex;flex-direction:column}
.jr-row{display:grid;grid-template-columns:110px 1fr auto auto;gap:10px;align-items:center;
  padding:8px 0;border-top:1px solid var(--line)}
.jr-row__d{font-size:.84rem;color:var(--fg-2)}
.jr-row__o{min-width:0}
.jr-row__o small{color:var(--fg-3)}
.jr-row__n{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jr-row__e{font-family:var(--mono);white-space:nowrap}
@media (max-width:560px){
  .jr-row{grid-template-columns:1fr auto;grid-template-areas:"d e" "o o" "a a"}
  .jr-row__d{grid-area:d}.jr-row__e{grid-area:e}.jr-row__o{grid-area:o}.jr-row .q-line__acts{grid-area:a}
}


.tools .tx-soon{margin:0 0 12px;padding:12px 16px;border-radius:10px;font-size:.9rem;
  color:var(--warn);background:rgba(255,179,0,.09);border:1px dashed rgba(255,179,0,.45)}
/* На сайте печатается только лист сметы: quote.js перед печатью ставит html.q-print
   и метит лист .q-sheet и его предков .q-keep — тот же приём, что у шаблонов (tpl.css). */
@media print{
  html.q-print body *:not(.q-keep):not(.q-sheet):not(.q-sheet *){display:none!important}
  html.q-print .q-keep{display:block!important;margin:0!important;padding:0!important;border:0!important;
    background:none!important;box-shadow:none!important;max-width:none!important;width:auto!important;position:static!important}
}
