:root{--ink:#17221d;--muted:#6d7771;--line:#dfe4df;--paper:#f5f4ef;--green:#173f32;--green2:#2f6651;--cream:#f7f0df;--orange:#cc6b3e;--panel:#fff;--shadow:0 18px 55px rgba(31,42,36,.13)}
@media print{body{background:#fff}.site-header,.config-panel,.summary-panel,.preview-toolbar,.preview-note{display:none!important}.app-shell{display:block;min-height:0}.preview-area{background:#fff;padding:0;display:block}.stage{min-height:0;height:245mm;padding:24mm 20mm 12mm;display:flex;align-items:center;justify-content:center}.board{height:190mm;box-shadow:none;border:1px solid #888;-webkit-print-color-adjust:exact;print-color-adjust:exact}.measure-x{bottom:11mm}.measure-y{right:10mm}body::after{content:"Projekt produkcyjny · wygenerowano w konfiguratorze GóroTwór · skala podglądu informacyjna, wymiary podane w mm";display:block;text-align:center;font-size:9pt;color:#555}}

/* Edytor obiektowy */
textarea{width:100%;border:1px solid #ccd3ce;border-radius:7px;background:#fff;padding:10px 11px;font:500 12px "DM Sans";color:var(--ink);outline:none;resize:vertical}textarea:focus{border-color:var(--green2);box-shadow:0 0 0 3px rgba(47,102,81,.12)}
.unit-input{position:relative}.unit-input input{padding-right:34px}.unit-input span{position:absolute;right:10px;top:11px;color:var(--muted);font-size:10px}.editor-actions{display:flex;gap:6px;margin-top:13px}.add-button,.small-button,.delete-button{border-radius:7px;padding:10px 11px;font:600 10px "DM Sans";cursor:pointer}.add-button{border:0;background:var(--green);color:#fff;flex:1}.add-button.full{width:100%;margin-top:12px}.small-button{border:1px solid var(--green);background:#fff;color:var(--green)}.delete-button{border:1px solid #c9a79c;background:#fff;color:#90452f}.small-button:disabled,.delete-button:disabled{opacity:.38;cursor:not-allowed}.control-hint{font-size:9px;line-height:1.45;color:var(--muted);margin:7px 0 0}
.board{width:400px;height:600px;aspect-ratio:auto;max-width:none;transition:width .2s,height .2s,transform .2s,background .2s;touch-action:none;user-select:none}.objects-layer{position:absolute;inset:0;z-index:2}.design-object{position:absolute;left:0;top:0;cursor:grab;transform:translate(-50%,-50%);touch-action:none}.design-object:active{cursor:grabbing}.design-object.selected::after{content:"";position:absolute;inset:-7px;border:1px dashed #b45531;pointer-events:none}.text-object{white-space:pre-wrap;line-height:1.05;min-width:20px;max-width:92%;overflow-wrap:anywhere}.hole-object{width:1px;height:1px}.hole-dot{position:absolute;border-radius:50%;background:currentColor;transform:translate(-50%,-50%);box-shadow:inset 0 1px 1px rgba(0,0,0,.45)}.hole-object.selected::after{inset:var(--select-top,-15px) var(--select-right,-15px) var(--select-bottom,-15px) var(--select-left,-15px)}.board.placing{cursor:crosshair}.board.placing::after{content:"Kliknij, aby umieścić";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:8px 11px;border-radius:5px;background:rgba(23,63,50,.9);color:#fff;font-size:10px;z-index:5;pointer-events:none}.board-footer{z-index:1}
@media print{.design-object.selected::after{display:none}.board{width:auto!important;height:190mm!important;transform:none!important}}

/* Skala, linijki i siatka */
.board-workspace{display:grid;grid-template-columns:32px auto;grid-template-rows:32px auto;align-items:stretch;justify-items:stretch;transition:width .2s,height .2s}.ruler-corner{grid-column:1;grid-row:1;display:flex;align-items:center;justify-content:center;color:#737d77;font-size:8px;border-right:1px solid #c7cec8;border-bottom:1px solid #c7cec8}.ruler{position:relative;color:#68736d;font-size:7px;overflow:visible}.ruler-top{grid-column:2;grid-row:1;border-bottom:1px solid #aeb8b1}.ruler-left{grid-column:1;grid-row:2;border-right:1px solid #aeb8b1}.ruler-tick{position:absolute;background:#87928b}.ruler-top .ruler-tick{bottom:0;width:1px;height:5px}.ruler-top .ruler-tick.medium{height:8px}.ruler-top .ruler-tick.major{height:12px}.ruler-left .ruler-tick{right:0;height:1px;width:5px}.ruler-left .ruler-tick.medium{width:8px}.ruler-left .ruler-tick.major{width:12px}.ruler-label{position:absolute;white-space:nowrap;color:#5e6963}.ruler-top .ruler-label{top:5px;transform:translateX(3px)}.ruler-left .ruler-label{left:3px;transform:translateY(2px)}.board-workspace .board{grid-column:2;grid-row:2;transform:none!important}.grid-overlay{position:absolute;inset:0;z-index:1;pointer-events:none;background-image:linear-gradient(to right,rgba(32,74,58,.32) var(--grid-line,1px),transparent var(--grid-line,1px)),linear-gradient(to bottom,rgba(32,74,58,.32) var(--grid-line,1px),transparent var(--grid-line,1px));background-size:var(--grid-px,20px) var(--grid-px,20px);opacity:0}.board.black .grid-overlay{background-image:linear-gradient(to right,rgba(236,211,170,.3) var(--grid-line,1px),transparent var(--grid-line,1px)),linear-gradient(to bottom,rgba(236,211,170,.3) var(--grid-line,1px),transparent var(--grid-line,1px))}.grid-overlay.visible{opacity:1}.mount-holes{position:relative;z-index:3}.objects-layer{z-index:4}.board-footer{z-index:2}
.ruler-unit-select{width:38px;height:27px;margin:0;padding:0 13px 0 5px;border:0;border-radius:4px;background-color:transparent;color:#5e6963;font:600 8px "DM Sans";box-shadow:none;cursor:pointer;transform:translateX(-3px)}.ruler-unit-select:hover,.ruler-unit-select:focus{background-color:#fff;border:0;box-shadow:0 0 0 1px #aeb8b1;outline:none}
@media(max-width:720px){.board-workspace{grid-template-columns:25px auto;grid-template-rows:25px auto}.ruler-label{display:none}.ruler-corner{font-size:7px}}
@media print{.ruler,.ruler-corner,.grid-overlay{display:none!important}.board-workspace{display:block}.board-workspace .board{width:auto!important;height:190mm!important}}
.mount-holes{position:static}.mount-hole{z-index:3}
@media print{.board-workspace{width:auto!important;height:auto!important}}
.workspace-grid-controls{display:flex;align-items:center;gap:13px;min-height:28px}.toolbar-check{display:flex;align-items:center;gap:5px;font-size:9px;font-weight:600;color:var(--ink);cursor:pointer}.toolbar-check input{margin:0;accent-color:var(--green)}.toolbar-range{display:flex;align-items:center;gap:7px;font-size:8px;color:var(--muted);white-space:nowrap}.toolbar-range input{width:92px;margin:0}.toolbar-range output{min-width:35px;color:var(--ink);font-size:9px}.toolbar-range input:disabled{opacity:.38}.grid-overlay{--grid-line:1px}
@media(max-width:720px){.preview-toolbar{flex-wrap:wrap;gap:8px}.workspace-grid-controls{order:3;width:100%;justify-content:center}.toolbar-range input{width:120px}}

/* Niezależny, przewijany viewport projektu */
.app-shell{height:calc(100vh - 72px);min-height:600px;overflow:hidden}.config-panel,.preview-area,.summary-panel{min-height:0}.preview-area{overflow:hidden}.stage{display:block;min-height:0;padding:0;overflow:auto;scrollbar-gutter:stable both-edges;overscroll-behavior:contain}.stage-canvas{position:relative;display:grid;place-items:center;min-width:100%;min-height:100%;padding:48px 58px}.stage-canvas .measure-x{bottom:20px}.stage-canvas .measure-y{right:18px}
body.ctrl-pan .stage{cursor:grab}body.ctrl-pan .stage.panning{cursor:grabbing;user-select:none}body.ctrl-pan .stage .design-object,body.ctrl-pan .stage [contenteditable="true"]{cursor:grab!important}
@media(max-width:1050px){.app-shell{height:auto;min-height:0;overflow:visible}.preview-area{height:700px}.stage{height:600px}}
@media(max-width:720px){.app-shell{height:auto;min-height:0;overflow:visible}.preview-area{height:620px}.stage{height:520px}.stage-canvas{padding:36px 40px}}
@media print{.app-shell{height:auto;min-height:0;overflow:visible}.stage{overflow:visible}.stage-canvas{width:auto!important;height:auto!important;min-width:0;min-height:0;padding:0}}

/* Pasek przewijania dosunięty do prawego panelu */
.stage{margin-right:-36px;margin-left:-36px;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#87938c #dfe5df;border-right:1px solid #d8ded8}.stage::-webkit-scrollbar{width:10px;height:10px}.stage::-webkit-scrollbar-track{background:#dfe5df}.stage::-webkit-scrollbar-thumb{background:#87938c;border:2px solid #dfe5df;border-radius:999px;min-height:44px}.stage::-webkit-scrollbar-thumb:hover{background:#66746c}.stage::-webkit-scrollbar-corner{background:#dfe5df}.stage::-webkit-scrollbar-button{display:none;width:0;height:0}
@media(max-width:720px){.stage{margin-right:-13px;margin-left:-13px}}
@media print{.stage{margin-right:0;margin-left:0;border-right:0}}

/* Narzędzia bezpośredniej edycji */
.editor-toolbar{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 0 12px;border-bottom:1px solid rgba(107,120,112,.18)}.tool-button{display:flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid #cbd3cd;border-radius:8px;background:rgba(255,255,255,.76);color:var(--ink);font:600 10px "DM Sans";cursor:pointer;transition:background .15s,border-color .15s,color .15s}.tool-button:hover{background:#fff;border-color:#9eaaa2}.tool-button.active{background:var(--green);border-color:var(--green);color:#fff}.tool-icon{display:grid;place-items:center;width:18px;height:18px;font-size:15px;font-weight:700}.tool-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7}.text-object[contenteditable="true"]{cursor:text;outline:none;min-width:3px}.text-object[contenteditable="true"]:empty::before{content:"Wpisz tekst";color:currentColor;opacity:.45;white-space:nowrap}.shape-object{border:2px solid currentColor;background:transparent;min-width:8px;min-height:8px}.text-context-toolbar{position:absolute;z-index:30;display:flex;align-items:center;gap:5px;padding:6px;background:#fff;border:1px solid #d5ddd7;border-radius:9px;box-shadow:0 10px 30px rgba(22,34,28,.2);transform:translate(-50%,-100%);white-space:nowrap}.text-context-toolbar[hidden]{display:none!important}.text-context-toolbar select,.text-context-toolbar input{height:30px;border:1px solid #d5ddd7;border-radius:6px;padding:0 7px;font:500 10px "DM Sans";box-shadow:none}.text-context-toolbar select{width:auto;max-width:92px}.floating-size{position:relative}.floating-size input{width:62px;padding-right:23px}.floating-size span{position:absolute;right:6px;top:9px;font-size:8px;color:var(--muted)}.text-context-toolbar button{width:30px;height:30px;border:1px solid #d5ddd7;border-radius:6px;background:#fff;color:var(--ink);cursor:pointer}.text-context-toolbar button[aria-pressed="true"]{background:var(--green);border-color:var(--green);color:#fff}.text-context-toolbar .floating-delete{color:#9c4933;font-size:17px}.board.placing{cursor:crosshair}.board.placing .design-object{pointer-events:none}
@media(max-width:720px){.editor-toolbar{justify-content:flex-start;overflow-x:auto}.tool-button{flex:0 0 auto}.text-context-toolbar{gap:3px;padding:4px}.text-context-toolbar select{max-width:76px}}
@media print{.editor-toolbar,.text-context-toolbar{display:none!important}}
.left-tools{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.left-tools .eyebrow{margin-bottom:9px;color:var(--muted)}.left-tools .editor-toolbar{display:grid;grid-template-columns:1fr;gap:7px;padding:0;border:0;overflow:visible}.left-tools .tool-button{width:100%;justify-content:flex-start;padding:10px 12px;background:#fff}.left-tools .tool-button:hover{background:#f2f6f3}.left-tools .tool-button.active{background:var(--green);color:#fff}.left-tools .tool-icon{width:22px}.text-context-toolbar{margin-top:-4px}
@media(max-width:720px){.left-tools .editor-toolbar{display:grid;grid-template-columns:repeat(3,1fr)}.left-tools .tool-button{justify-content:center;flex-direction:column;text-align:center;padding:8px 4px}}

/* Krok wyboru formatu */
[hidden]{display:none!important}.setup-screen{min-height:calc(100vh - 72px);padding:46px 24px 38px;background:linear-gradient(145deg,#f4f5f0,#e8ece6);display:flex;flex-direction:column;align-items:center}.setup-heading{text-align:center;max-width:620px}.setup-heading h1{margin:0;font:600 34px/1.2 Lora,serif}.setup-heading>p:last-child{margin:12px 0 24px;color:var(--muted);font-size:13px}.orientation-switch{display:flex;padding:4px;border:1px solid #d4dcd5;border-radius:10px;background:rgba(255,255,255,.72);margin-bottom:30px}.orientation-switch button{display:flex;align-items:center;gap:7px;padding:9px 18px;border:0;border-radius:7px;background:transparent;color:var(--muted);font:600 11px "DM Sans";cursor:pointer}.orientation-switch button.active{background:var(--green);color:#fff}.orientation-icon{display:block;border:1.5px solid currentColor;border-radius:1px}.orientation-icon.portrait{width:9px;height:13px}.orientation-icon.landscape{width:13px;height:9px}.size-options{width:min(900px,100%);display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.size-option{height:230px;padding:18px 12px 15px;border:1px solid #d5ddd6;border-radius:12px;background:rgba(255,255,255,.78);color:var(--ink);cursor:pointer;display:flex;flex-direction:column;align-items:center;transition:transform .15s,border-color .15s,box-shadow .15s}.size-option:hover{transform:translateY(-2px);border-color:#9fada4}.size-option.active{border-color:var(--green);box-shadow:0 0 0 2px var(--green),0 12px 30px rgba(32,61,48,.1)}.size-visual{height:155px;width:100%;display:grid;place-items:center;margin-bottom:8px}.size-visual i{display:block;background-color:#d8bd8f;background-image:repeating-linear-gradient(86deg,rgba(85,55,28,.04) 0,transparent 10px,rgba(255,255,255,.12) 16px);box-shadow:0 7px 18px rgba(45,42,34,.16);transition:width .2s,height .2s}.size-option strong{font-size:13px}.size-option small{margin-top:3px;color:var(--muted);font-size:10px}.setup-selection{display:flex;gap:10px;margin-top:24px;font-size:11px}.setup-selection span{color:var(--muted)}.setup-next{margin-top:14px;min-width:260px;padding:14px 20px;border:0;border-radius:8px;background:var(--green);color:#fff;font:600 12px "DM Sans";cursor:pointer;display:flex;justify-content:center;gap:13px}.setup-next:hover{background:#245544}.current-format{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:11px 12px;border-radius:8px;background:#f1f4f1;font-size:10px}.current-format span{color:var(--muted)}.current-format strong{grid-column:1;font-size:11px}.current-format button{grid-column:2;grid-row:1/3;border:0;background:transparent;color:var(--green2);font:600 10px "DM Sans";cursor:pointer}
@media(max-width:720px){.setup-screen{padding:30px 15px}.setup-heading h1{font-size:27px}.size-options{grid-template-columns:1fr 1fr}.size-option{height:190px}.size-visual{height:115px}.orientation-switch{margin-bottom:20px}}

/* Rozszerzone formatowanie i uchwyt przesuwania tekstu */
.text-context-toolbar{align-items:flex-end;padding:7px 8px;gap:7px}.context-field{display:flex;flex-direction:column;gap:3px}.context-field>small{font:500 8px "DM Sans";line-height:1;color:#7a847e;text-transform:lowercase;letter-spacing:.02em}.context-style>span{display:flex;gap:3px}.text-context-toolbar .floating-size{position:static}.text-context-toolbar .floating-size .size-control{position:relative;display:block;right:auto;top:auto;color:inherit;font-size:inherit}.size-control input{width:66px;padding-right:24px}.size-control i{position:absolute;right:6px;top:9px;color:var(--muted);font:400 8px "DM Sans"}.text-context-toolbar .floating-move{cursor:grab;margin-bottom:0;background:#f1f4f1}.text-context-toolbar .floating-move:active{cursor:grabbing}.floating-move svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.context-style button{font-family:Georgia,serif}.context-style button i{font-family:Georgia,serif}.context-style button u{text-underline-offset:2px}
#floatingWeight{max-width:96px}.text-context-toolbar optgroup{font-family:"DM Sans",sans-serif}
.text-context-toolbar button:disabled{opacity:.35;cursor:not-allowed}
.shape-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(44px,1fr));gap:4px;padding:4px 0 6px}.shape-picker[hidden]{display:none}.shape-picker button{min-width:0;min-height:48px;padding:5px 2px 4px;border:1px solid #d5ddd7;border-radius:6px;background:#fff;color:var(--ink);font:500 7px/1.15 "DM Sans";cursor:pointer;overflow:hidden}.shape-picker button:hover{border-color:var(--green);background:#f2f6f3}.shape-picker button span{display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frame-preview{position:relative;display:block;width:26px;height:17px;margin:auto;border:1.25px solid currentColor}.frame-preview.rounded{border-radius:5px}.frame-preview.oval{border-radius:50%}.frame-preview.double::after{content:"";position:absolute;inset:3px;border:1px solid currentColor}
.text-layout-preview{display:flex!important;align-items:center;justify-content:center;height:18px;margin:0!important;color:var(--green);font:700 10px "DM Sans"!important;letter-spacing:.05em}.text-layout-preview.vertical{height:25px;font-size:7px!important;line-height:8px}.text-picker .polygon-preview text{fill:currentColor;stroke:none;font:700 7px "DM Sans"}.text-picker .polygon-preview path{opacity:.55}
.shape-object{border:0;background:transparent;min-width:8px;min-height:8px;z-index:0}.shape-frame{position:absolute;inset:0;border:2px solid currentColor;pointer-events:none}.shape-frame.rounded{border-radius:14%}.shape-frame.oval{border-radius:50%}.shape-frame.double::after{content:"";position:absolute;inset:6px;border:1px solid currentColor}.resize-handle{position:absolute;width:11px;height:11px;border:2px solid #fff;border-radius:50%;background:#b45531;z-index:4}.resize-handle.nw{left:-12px;top:-12px;cursor:nwse-resize}.resize-handle.ne{right:-12px;top:-12px;cursor:nesw-resize}.resize-handle.sw{left:-12px;bottom:-12px;cursor:nesw-resize}.resize-handle.se{right:-12px;bottom:-12px;cursor:nwse-resize}.text-object,.hole-object{z-index:2}
@media print{.resize-handle{display:none!important}}
.shape-frame.double::after{inset:var(--shape-inset,6px)}
@media(max-width:720px){.left-tools .shape-picker{grid-column:1/-1}}
.brand-logo{display:block;width:44px;height:44px;object-fit:contain}
.frame-preview.rounded,.shape-frame.rounded{border-radius:999px}.polygon-preview{display:block;width:28px;height:18px;margin:auto;fill:none;stroke:currentColor;stroke-width:1.5}.shape-frame.polygon{border:0}.shape-frame.polygon svg{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke:currentColor;stroke-width:2;vector-effect:non-scaling-stroke;pointer-events:none}.shape-frame.polygon polygon{vector-effect:non-scaling-stroke}
.line-preview path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.shape-frame.path{border:0}.shape-frame.path svg{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke:currentColor;stroke-width:var(--shape-stroke,2px);stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.shape-frame.path path{vector-effect:non-scaling-stroke}.rotate-handle{position:absolute;left:50%;top:-39px;width:13px;height:13px;border:2px solid #fff;border-radius:50%;background:var(--green);z-index:5;cursor:grab;transform:translateX(-50%)}.rotate-handle::after{content:"";position:absolute;left:50%;top:11px;width:1px;height:25px;background:#b45531;transform:translateX(-50%);pointer-events:none}.rotate-handle:active{cursor:grabbing}
@media(max-width:720px){.text-context-toolbar{gap:4px}.context-field>small{font-size:7px}.context-style button{width:27px}}
.curve-radius-field[hidden]{display:none!important}.curve-radius-field .shape-range{grid-template-columns:90px 43px}.curve-radius-field .shape-range input{width:90px}.curved-text-svg{display:block;width:100%;height:100%;overflow:visible}.curved-text-svg path{fill:none;stroke:none}.curved-text-svg text{fill:currentColor;pointer-events:none}.curved-text-svg .curve-text-render{pointer-events:visiblePainted;cursor:text}.curved-text-svg .curve-guide{fill:none;stroke:var(--green);stroke-width:.7;stroke-dasharray:3 3;vector-effect:non-scaling-stroke;pointer-events:none}.curved-text-svg .curve-hit-area{fill:none;stroke:transparent;stroke-width:12;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:text}.curve-inline-editor{position:absolute;z-index:12;width:2px!important;height:1.4em;padding:0!important;border:0!important;background:transparent!important;color:transparent!important;caret-color:#b45531;box-shadow:none!important;outline:none!important;transform-origin:0 50%;overflow:hidden}.external-text-rotate{position:absolute!important;z-index:45!important}.text-object.circular{padding:0;overflow:visible}.text-object.vertical .text-content{writing-mode:vertical-rl;text-orientation:upright;white-space:pre;letter-spacing:.08em}.board.natural .curved-text-svg text{fill:#81542f;filter:drop-shadow(0 -1px .55px rgba(56,31,13,.62)) drop-shadow(0 1px .5px rgba(255,245,220,.78))}.board.black .curved-text-svg text{fill:#c9965d;filter:drop-shadow(0 -1px .6px rgba(0,0,0,.9)) drop-shadow(0 1px .45px rgba(242,205,153,.35))}

/* Kontekstowe ustawienia grup otworów */
.hole-context-toolbar{position:absolute;z-index:31;display:flex;align-items:flex-end;gap:8px;padding:8px 9px;background:#fff;border:1px solid #d5ddd7;border-radius:10px;box-shadow:0 10px 30px rgba(22,34,28,.2);transform:translate(-50%,-100%);white-space:nowrap}.hole-context-toolbar[hidden]{display:none!important}.hole-context-toolbar select{height:32px;min-width:92px;padding:0 26px 0 8px;border:1px solid #d5ddd7;border-radius:6px;background:#fff;color:var(--ink);font:500 10px "DM Sans"}.hole-fields{display:flex;align-items:flex-end;gap:8px}.hole-range{display:grid;grid-template-columns:94px 43px;align-items:center;gap:5px;height:32px;padding:0 6px;border:1px solid #d5ddd7;border-radius:6px;background:#fff}.hole-range input{width:94px;margin:0;accent-color:var(--green)}.hole-range output{min-width:43px;color:var(--ink);font:600 9px "DM Sans";text-align:right}.hole-total{display:grid;grid-template-rows:8px 32px;gap:3px;align-self:flex-end;min-height:43px;padding:0 8px;border-left:1px solid #d9dfda}.hole-total small{align-self:start;color:#7a847e;font:500 8px/1 "DM Sans";text-transform:lowercase}.hole-total strong{display:flex;align-items:center;height:32px;color:var(--green);font:700 10px "DM Sans"}.hole-object{cursor:grab}.hole-object:active{cursor:grabbing}
.hole-drag-frame{position:absolute;display:block;pointer-events:none}.hole-drag-edge{position:absolute;display:block;pointer-events:auto;cursor:grab}.hole-drag-edge:active{cursor:grabbing}.hole-drag-edge.top,.hole-drag-edge.bottom{left:-5px;width:calc(100% + 10px);height:12px}.hole-drag-edge.top{top:-6px}.hole-drag-edge.bottom{bottom:-6px}.hole-drag-edge.left,.hole-drag-edge.right{top:-5px;width:12px;height:calc(100% + 10px)}.hole-drag-edge.left{left:-6px}.hole-drag-edge.right{right:-6px}
@media(max-width:900px){.hole-context-toolbar{max-width:min(620px,calc(100vw - 24px));overflow-x:auto}.hole-range{grid-template-columns:78px 40px}.hole-range input{width:78px}}
@media print{.hole-context-toolbar{display:none!important}}

/* Czytelny obrys i strefa chwytania zaznaczonej grupy otworów */
.hole-object.selected::after{display:none}
.hole-drag-frame{box-sizing:border-box;border:1px dashed #b45531}

/* Otwory na wylot — kolor obszaru widocznego za tablicą */
.preview-area{--hole-cutout:#e9ece6}
.hole-dot,.mount-hole{background:var(--hole-cutout);box-shadow:none}
.hole-object.selected .hole-dot{box-shadow:inset 0 0 0 .5px #111}
@media print{.preview-area{--hole-cutout:#fff}}

/* Relief grawerowania tekstów i ramek */
.board.natural .text-content{color:#81542f;text-shadow:0 -1px .55px rgba(56,31,13,.62),0 1px .5px rgba(255,245,220,.78)}
.board.black .text-content{color:#c9965d;text-shadow:0 -1px .6px rgba(0,0,0,.9),0 1px .45px rgba(242,205,153,.35)}
.board.natural .shape-frame{color:#81542f;filter:drop-shadow(0 -1px .45px rgba(56,31,13,.62)) drop-shadow(0 1px .4px rgba(255,245,220,.72))}
.board.black .shape-frame{color:#c9965d;filter:drop-shadow(0 -1px .5px rgba(0,0,0,.9)) drop-shadow(0 1px .35px rgba(242,205,153,.3))}

/* Tekst zachowuje naturalną szerokość; ramka służy wyłącznie do chwytania */
.text-object{width:max-content;max-width:calc(100% - 14px);box-sizing:border-box;padding:5px 7px}
.text-content{width:max-content;max-width:100%}

/* Kontekstowa grubość ścianki ramki */
.shape-context-toolbar{position:absolute;z-index:31;padding:8px 9px;background:#fff;border:1px solid #d5ddd7;border-radius:9px;box-shadow:0 10px 30px rgba(22,34,28,.2);transform:translate(-50%,-100%);white-space:nowrap}.shape-context-toolbar[hidden]{display:none!important}.shape-range{display:grid;grid-template-columns:120px 45px;align-items:center;gap:6px;height:32px;padding:0 7px;border:1px solid #d5ddd7;border-radius:6px;background:#fff}.shape-range input{width:120px;margin:0;accent-color:var(--green)}.shape-range output{color:var(--ink);font:600 9px "DM Sans";text-align:right}.shape-frame{border-width:var(--shape-stroke,2px)}.shape-frame.polygon svg{stroke-width:var(--shape-stroke,2px)}
@media print{.shape-context-toolbar{display:none!important}}
.shape-menu{position:fixed;z-index:100;padding:5px;background:#fff;border:1px solid #cbd3cd;border-radius:7px;box-shadow:0 8px 24px rgba(20,32,25,.2)}.shape-menu[hidden]{display:none}.shape-menu button{padding:8px 12px;border:0;border-radius:5px;background:#fff;color:var(--ink);font:600 11px "DM Sans";cursor:pointer}.shape-menu button:hover{background:#eef4f0}.point-edit-handle,.bezier-control{position:absolute;z-index:9;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border:2px solid #fff;background:#b45531;box-shadow:0 0 0 1px #7e321d;cursor:move}.point-edit-handle{border-radius:50%}.bezier-control{width:9px;height:9px;margin:-4.5px 0 0 -4.5px;background:#fff;border:2px solid var(--green);border-radius:2px}.bezier-line{position:absolute;z-index:7;height:1px;background:var(--green);transform-origin:0 50%;pointer-events:none}.shape-object.editing-points .resize-handle,.shape-object.editing-points .rotate-handle{display:none}
.shape-object.editing-points .shape-frame,.shape-object.editing-points .shape-frame svg{pointer-events:none}.shape-object.editing-points .shape-frame path,.shape-object.editing-points .shape-frame polygon{pointer-events:stroke;cursor:crosshair}

/* Zoom bez opóźnionego przeliczania geometrii */
.board{transition:background .2s}
.board-workspace{transition:none}
.stage-canvas{box-sizing:border-box}
.stage-canvas{padding-left:140px}
@media(max-width:720px){.stage-canvas{padding-left:96px}}

/* Tekst: edycja wewnątrz, przesuwanie za ramkę */
.text-object{padding:12px;cursor:default;white-space:normal}.text-object.selected{cursor:grab}.text-object.selected::after{inset:0;border:1px solid #b45531;border-radius:3px}.text-object.selected:active{cursor:grabbing}.text-content{white-space:pre-wrap;line-height:1.05;min-width:3px;outline:none;cursor:text}.text-object .text-content[contenteditable="true"]{cursor:text!important}.text-content[contenteditable="true"]:empty::before{content:"Wpisz tekst";color:currentColor;opacity:.45;white-space:nowrap}
