:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:#17191b;background:#fff;font-synthesis:none;font-size:15px;line-height:1.5}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit;border-radius:0}button{border:1px solid #d5d9dc;background:#fff;padding:10px 13px;min-height:44px;cursor:pointer}button:hover{background:#faf9f5}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,canvas:focus-visible{outline:2px solid #D99400;outline-offset:3px}[hidden]{display:none!important}main{max-width:1600px;margin:auto;padding:24px}.intro h1{font-size:clamp(23px,2.4vw,32px);line-height:1.2;font-weight:550;margin:0 0 8px}.intro p{margin:0;max-width:820px;color:#505962}.steps{display:flex;gap:0;border-bottom:1px solid #dce0e3;margin:22px 0}.steps button{flex:1;border:0;border-bottom:3px solid transparent;padding:13px 8px;min-width:0;text-align:left}.steps [aria-current]{border-bottom-color:#F4A900}.steps span{display:inline-block;margin-right:9px;color:#626a70}.layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,.8fr);gap:28px;align-items:start}.preview{min-width:0;position:sticky;top:16px}.viewbar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.viewbar button{padding:8px 10px;font-size:13px;min-height:40px}.scene{position:relative;background:#fff;min-width:0;height:clamp(360px,54vh,630px);border:1px solid #e1e5e8;overflow:hidden}.scene canvas{display:block;width:100%;height:100%;touch-action:none}.scene #loading{position:absolute;top:16px;left:16px;right:60px;background:rgba(255,255,255,.94);padding:12px;margin:0;font-size:14px}.scene #retry{position:absolute;top:85px;left:16px;z-index:3}.camera{position:absolute;right:10px;top:10px;display:grid;gap:6px}.camera button{width:38px;min-height:38px;padding:4px;font-size:18px}.owner{position:absolute;bottom:14px;right:14px;font-size:12px;letter-spacing:.04em;color:#cbd0d4;pointer-events:none}.caption{padding:12px 0 6px;display:grid;gap:3px}.caption strong{font-weight:500}.caption span,.help{color:#535d65;font-size:14px;line-height:1.55}.motion,.engineering{border-top:1px solid #e2e5e7;border-bottom:1px solid #e2e5e7;padding:12px 0;margin:12px 0}.motion summary,.engineering summary,details>summary{cursor:pointer;padding:4px 0;font-weight:500}.motion label{margin:12px 0}.motion output{font-size:13px}.motion svg{width:100%;height:110px;display:block}input[type=range]{padding:0;accent-color:#D99400;min-height:34px}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 20px;margin:12px 0}.metrics>div{border-top:1px solid #e2e5e7;padding:9px 0;min-width:0}.metrics dt{font-size:12px;color:#5c666e}.metrics dd{font-size:16px;margin:3px 0 0;font-weight:400;overflow-wrap:break-word}.controls{min-width:0;max-height:calc(100svh - 150px);overflow-y:auto;scrollbar-width:thin;padding:0 8px 24px 0}.controls h2{font-size:21px;line-height:1.3;margin:0 0 12px;font-weight:500}.controls h2:not(:first-child){margin-top:26px}form label{display:grid;gap:6px;font-size:14px;margin-bottom:15px;min-width:0}input:not([type=checkbox]):not([type=range]),select,textarea{display:block;width:100%;min-width:0;max-width:100%;min-height:44px;padding:10px 11px;border:1px solid #cdd3d8;background:#fff}textarea{resize:vertical}input[type=checkbox]{width:18px;height:18px;accent-color:#D99400;flex:none}.check,.checks-inline label{display:flex;gap:10px;align-items:flex-start}.checks-inline{display:flex;flex-wrap:wrap;gap:0 18px;margin:15px 0}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.fields label{margin-bottom:14px}.primary{width:100%;background:#F4A900;border-color:#F4A900;font-weight:500;margin-top:16px}.primary:hover{background:#F4A900}.presets{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0}.presets button{font-size:13px;padding:8px 11px}.element{border-top:1px solid #dce1e5;padding:15px 0}.element-head{display:flex;gap:10px;align-items:center;margin-bottom:12px}.element-head strong{font-weight:500;flex:1;font-size:15px}.element-head button{padding:4px 8px;min-height:32px;font-size:13px}.element.selected{background:#FFF3D6}.element .fields{margin:0}.element .fields label{margin:0}.add{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}.add button{font-size:13px}.parts{margin-top:15px}.part{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;border-top:1px solid #e0e4e7;padding:13px 0;align-items:center}.part button{font-size:13px}.part b{display:block;font-size:14px;font-weight:500}.part small{display:block;color:#59636b;font-size:13px}.part .use{grid-column:1/-1;justify-self:start;min-height:34px;padding:5px 10px}.part.inspected{background:#FFF3D6}.bom-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;border-bottom:1px solid #e4e7e9;padding:10px 0;font-size:14px}.bom-row small{display:block;font-size:12px;color:#646e75}.check-row{padding:11px 0;border-bottom:1px solid #e4e7e9}.check-row b{font-weight:500;font-size:14px}.check-row p{font-size:13px;color:#515b63;margin:5px 0}.status{font-size:12px;margin-left:8px;color:#B37A00}#assessment p{margin:8px 0;font-size:14px}#assessment .issue,#request-error,#field-error{color:#862c23}#field-error{padding:10px 0}details{margin:15px 0}#config[inert]{opacity:.5}@media(max-width:740px){main{padding:16px}.intro p{font-size:14px}.steps{margin:17px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.steps button{font-size:13px;min-height:43px}.layout{display:block}.preview{position:static}.scene{height:340px}.controls{max-height:none;overflow:visible;padding:20px 0}.viewbar button{font-size:12px;padding:6px 8px;min-height:36px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.fields{gap:0 10px}.element-head{gap:6px}.element-head button{padding:4px 7px}.motion{margin:8px 0}.parts .part{grid-template-columns:minmax(0,1fr) auto}.primary{min-height:48px}}
.dimension-label{position:absolute;transform:translate(-50%,-50%);font-size:11px;line-height:1.25;white-space:nowrap;background:rgba(255,255,255,.92);color:#4c565f;padding:3px 5px;pointer-events:none}

/* ROLLSKRAN polish 27.10.2026: pressed states, readable padding in pickers and descriptions */
button{transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}
button:active:not(:disabled){transform:translateY(1px)}
.steps button{min-height:48px;padding:14px 12px;line-height:1.35}
.steps button:hover{background:#faf9f5}
.steps button:active{background:#FFF3D6}
.steps [aria-current]{background:#FFF3D6;font-weight:600;border-bottom-color:#F4A900;padding-bottom:11px}
.viewbar button{min-height:42px;padding:9px 13px;line-height:1.25}
.viewbar button[aria-pressed="true"]{background:#17191b!important;border-color:#17191b!important;color:#fff!important;font-weight:500}
.viewbar button[aria-pressed="true"]:hover{background:#2a2f34!important}
.viewbar button:active{background:#FFF3D6}
.camera button{width:44px;min-height:44px;font-size:19px}
.camera button:active{background:#FFF3D6;border-color:#D99400}
.presets button{min-height:40px;padding:9px 14px;line-height:1.25}
.presets button[aria-pressed="true"],.presets button.selected{background:#FFF3D6!important;border-color:#D99400!important;font-weight:500}
.primary:active{background:#F4A900!important;border-color:#D99400!important}
.element.selected{border-left:3px solid #F4A900;padding-left:12px}
.element-head button{min-height:36px;padding:6px 11px}
.part button{min-height:38px;padding:8px 13px}
.part .use{min-height:38px;padding:8px 14px}
.part b{line-height:1.4}
.part small{line-height:1.5;margin-top:2px}
input:not([type=checkbox]):not([type=range]),select,textarea{padding:11px 13px;line-height:1.4}
label{gap:7px;line-height:1.5}
.check,.checks-inline label{padding:6px 0}
.checks-inline{gap:2px 14px}
.checks-inline label{padding:8px 12px;background:#faf9f5;border:1px solid #e3e6e8}
.help,.caption span{font-size:14px;line-height:1.65}
.intro p{line-height:1.65;max-width:860px}
.motion label,.engineering label{padding:8px 0}
.motion summary,.engineering summary,details>summary{padding:10px 2px;min-height:40px}
.metrics>div{padding:12px 4px}
.metrics dt{line-height:1.45}
.check-row{padding:13px 4px}
#assessment p{margin:10px 0;line-height:1.6}
.bom-row{padding:12px 4px;line-height:1.45}
.status{padding:2px 7px;border-radius:10px;background:#FFF3D6}
.dimension-label{padding:4px 8px;line-height:1.35}
.part.inspected,.element.selected{background:#FFF3D6}
@media(max-width:740px){.steps button{min-height:54px;padding:14px 10px;font-size:13px}.viewbar button{min-height:44px;padding:10px 13px;font-size:13px}.camera button{width:48px;min-height:48px}.primary{min-height:52px;padding-top:14px;padding-bottom:14px}.presets button{min-height:44px;padding:11px 14px}.checks-inline label{padding:10px 12px}.part button,.part .use{min-height:44px;padding:10px 13px}}

/* pressed feedback for view/camera/preset buttons: visible after a click */
.viewbar button:focus,.presets button:focus,.element-head button:focus,.part button:focus{background:#FFF3D6;border-color:#D99400;box-shadow:inset 0 0 0 1px #D99400;outline:none}
.viewbar button[aria-pressed="true"]:focus{background:#17191b!important;color:#fff!important}
.camera button:focus{background:#FFF3D6;border-color:#D99400;outline:none}

/* 2026-10-28 · окна полей: полная аккуратная окантовка, фокус внутри поля (не обрезается контейнером) */
#config select,
#config input[type="number"],
#config input[type="text"],
#config textarea {
  border: 1px solid #cdd3d8 !important;
  border-radius: 8px !important;
  background-color: #fff !important;
  outline: none !important;
  box-shadow: none !important;
}
#config select {
  appearance: none !important;
  -webkit-appearance: none !important;
  padding-right: 38px !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%232c3237' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: right 14px center !important;
  background-size: 12px 8px !important;
}
#config select:focus,
#config select:focus-visible,
#config input:focus,
#config input:focus-visible,
#config textarea:focus,
#config textarea:focus-visible {
  outline: none !important;
  border-color: #D99400 !important;
  box-shadow: inset 0 0 0 2px #F4A900 !important;
}
