@font-face{font-family:"tabler-icons";font-style:normal;font-weight:400;font-display:block;src:url(tabler-pz.woff2) format("woff2")}.ti{font-family:"tabler-icons"!important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ti-mail:before{content:"\eae5"}.ti-device-floppy:before{content:"\eb62"}.ti-bell:before{content:"\ea35"}.ti-align-center:before{content:"\ea07"}.ti-align-left:before{content:"\ea09"}.ti-align-right:before{content:"\ea0a"}.ti-arrow-back-up:before{content:"\eb77"}.ti-arrow-forward-up:before{content:"\eb78"}.ti-bold:before{content:"\eb7b"}.ti-check:before{content:"\ea5e"}.ti-copy:before{content:"\ea7a"}.ti-flip-horizontal:before{content:"\eaa7"}.ti-focus-centered:before{content:"\f02a"}.ti-info-circle:before{content:"\eac5"}.ti-italic:before{content:"\eb93"}.ti-layout-grid:before{content:"\edba"}.ti-link:before{content:"\eade"}.ti-minus:before{content:"\eaf2"}.ti-palette:before{content:"\eb01"}.ti-photo:before{content:"\eb0a"}.ti-plus:before{content:"\eb0b"}.ti-rotate:before{content:"\eb16"}.ti-ruler-2:before{content:"\eed2"}.ti-send:before{content:"\eb1e"}.ti-shape:before{content:"\eb9c"}.ti-shirt:before{content:"\ec0a"}.ti-shopping-cart-plus:before{content:"\fb65"}.ti-sparkles:before{content:"\f6d7"}.ti-stack-back:before{content:"\fd26"}.ti-stack-front:before{content:"\fd29"}.ti-tag:before{content:"\eb34"}.ti-trash:before{content:"\eb41"}.ti-truck:before{content:"\ebc4"}.ti-truck-delivery:before{content:"\ec4b"}.ti-typography:before{content:"\ebc5"}.ti-upload:before{content:"\eb47"}.ti-x:before{content:"\eb55"}
@font-face{font-family:'Open Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url(/assets/fonts/opensans-var-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url(/assets/fonts/opensans-var-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* 15. 10. 2026: písmo rozhraní editoru je Poppins jako web, admin a e-maily (Adam, varianta B). Vlastní rodina PZ Poppins, aby se nepletla s písmem Poppins pro nápis zákazníka (fonty.js). Open Sans výše zůstává jako písmo pro nápisy. */
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/poppins-400-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/poppins-400-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'PZ Poppins';font-style:italic;font-weight:400;font-display:swap;src:url(/assets/fonts/poppins-400i-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'PZ Poppins';font-style:italic;font-weight:400;font-display:swap;src:url(/assets/fonts/poppins-400i-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/poppins-500-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/poppins-500-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/poppins-600-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/poppins-600-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'PZ Poppins';font-style:italic;font-weight:600;font-display:swap;src:url(/assets/fonts/poppins-600i-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'PZ Poppins';font-style:italic;font-weight:600;font-display:swap;src:url(/assets/fonts/poppins-600i-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/poppins-700-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/poppins-700-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:800;font-display:swap;src:url(/assets/fonts/poppins-800-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'PZ Poppins';font-style:normal;font-weight:800;font-display:swap;src:url(/assets/fonts/poppins-800-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'PZ Poppins';font-style:italic;font-weight:800;font-display:swap;src:url(/assets/fonts/poppins-800i-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'PZ Poppins';font-style:italic;font-weight:800;font-display:swap;src:url(/assets/fonts/poppins-800i-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{
  --bg:#161f19;--panel:#1c2620;--panel-2:#22302a;--stage:#141c17;
  --line:rgba(255,255,255,.11);--line-strong:rgba(255,255,255,.19);
  --ink:#eff5f2;--muted:#a6b8b1;--muted-2:#7f918a;
  --tq:#74ccd8;--tq-deep:#3f9fac;--lime:#c9dd68;--on-acc:#0b1710;
  --tq-soft:rgba(116,204,216,.13);--tq-glow:rgba(116,204,216,.4);
  --danger:#e8776a;
  --radius:10px;
  --font:"PZ Poppins",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html,body{height:100%}
body{font-family:var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;overflow:hidden}
button{font-family:inherit;cursor:pointer}
::selection{background:var(--tq);color:var(--on-acc)}

.app{display:flex;flex-direction:column;height:100vh;height:100svh}

/* TOP BAR */
.topbar{display:flex;align-items:center;gap:12px;height:58px;flex:none;padding:0 16px;border-bottom:1px solid var(--line);background:#121a15}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}
.brand-mark svg{width:30px;height:30px;display:block;filter:drop-shadow(0 2px 8px var(--tq-glow))}
.brand-txt{font-weight:800;letter-spacing:-.02em;font-size:1.05rem}
.brand-txt .z{background:linear-gradient(92deg,var(--tq),var(--lime));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.brand-txt em{font-style:normal;font-weight:400;color:var(--muted);font-size:.9rem}
.demo-chip{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:var(--lime);color:#1a2206;border-radius:6px;padding:3px 8px;flex:none}
@media(max-width:560px){.demo-chip{display:none}}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:8px}

.ic{width:34px;height:34px;border:1px solid var(--line-strong);border-radius:9px;background:rgba(255,255,255,.03);color:var(--muted);
  display:inline-flex;align-items:center;justify-content:center;font-size:17px;transition:.2s}
.ic:hover{color:var(--ink);border-color:var(--tq);background:var(--tq-soft)}
.ic.on{color:var(--on-acc);background:var(--tq);border-color:var(--tq)}
.ic.danger:hover{color:#fff;border-color:var(--danger);background:rgba(232,119,106,.18)}
.ic:disabled{opacity:.35;pointer-events:none}

.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid transparent;border-radius:999px;font-weight:700;font-size:.9rem;padding:9px 18px;transition:.25s;white-space:nowrap}
.btn i{font-size:16px}
.btn-primary{background:var(--tq);color:var(--on-acc)}
.btn-primary:hover{background:#8fddea;box-shadow:0 6px 22px -6px var(--tq-glow)}
.btn-lime{background:var(--lime);color:#1a2206}
.btn-lime:hover{filter:brightness(1.06);box-shadow:0 6px 22px -6px rgba(201,221,104,.4)}
.btn-ghost{background:rgba(255,255,255,.04);color:var(--ink);border-color:var(--line-strong)}
.btn-ghost:hover{border-color:var(--tq)}
.btn.wide{width:100%;justify-content:center;padding:12px}

/* WORKSPACE */
.workspace{flex:1;display:flex;min-height:0}
.panel{width:212px;flex:none;background:var(--panel);overflow-y:auto;overflow-x:hidden}
.panel-left{border-right:1px solid var(--line)}
.edi-h1{font-size:1.02rem;line-height:1.3;margin:2px 0 4px;letter-spacing:-.01em}
.edi-lead{font-size:.8rem;color:var(--muted);margin:0 0 14px;line-height:1.5}
.panel-right{border-left:1px solid var(--line)}
.grp{padding:14px 12px;border-bottom:1px solid var(--line)}
.lab{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted-2);margin-bottom:10px}
.mini{display:block;font-size:12px;color:var(--muted);margin:12px 0 6px}
.mini span{color:var(--ink);font-weight:600}
.req{color:var(--tq)}

/* 25. 9. 2026: mřížka 35 dlaždic (.prod-grid, .tile) nahrazena výběrem typů a modelů, viz VÝBĚR PRODUKTU na konci souboru */

.swatches{display:flex;flex-wrap:wrap;gap:8px}
.swatches.sm{gap:7px}
.sw{width:24px;height:24px;border-radius:50%;border:1px solid var(--line-strong);transition:.15s;position:relative}
.swatches.sm .sw{width:20px;height:20px;border-radius:6px}
.sw:hover{transform:scale(1.08)}
.sw.on{outline:2px solid var(--tq);outline-offset:2px}

.chips{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}
.chip{border:1px solid var(--line);border-radius:7px;padding:6px 0;font-size:12px;color:var(--muted);text-align:center;transition:.15s;background:none}
.chip:hover{color:var(--ink)}
.chip.on{border-color:var(--tq);color:var(--ink);background:var(--tq-soft)}

.stepper{display:flex;align-items:center;gap:6px}
.stepper input{flex:1;min-width:0;height:34px;text-align:center;background:rgba(255,255,255,.03);border:1px solid var(--line-strong);border-radius:8px;color:var(--ink);font-family:inherit;font-size:16px}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none}

.rbtn{display:flex;align-items:center;gap:9px;width:100%;background:var(--panel-2);border:1px solid var(--line);border-radius:9px;
  padding:10px 11px;font-size:12.5px;color:var(--ink);margin-bottom:8px;transition:.2s;text-align:left}
.rbtn i{font-size:17px;color:var(--tq)}
.rbtn:hover{border-color:var(--tq);background:#243a37}
.rbtn.sm{padding:8px 9px;font-size:12px;margin-bottom:0;flex:1;justify-content:center}
.rbtn.sm i{font-size:15px}

.props .txt-input,.props select{width:100%;height:36px;background:rgba(255,255,255,.03);border:1px solid var(--line-strong);border-radius:8px;
  color:var(--ink);font-family:inherit;font-size:13px;padding:0 10px}
.props select{cursor:pointer}
.props select option{background:#1c2620}
.row{display:flex;align-items:center;gap:6px;margin-top:12px;flex-wrap:wrap}
.divx{width:1px;height:22px;background:var(--line);margin:0 2px}
.obj-actions{margin-top:10px}

/* range */
input[type=range]{-webkit-appearance:none;width:100%;height:4px;border-radius:3px;background:var(--line-strong);outline:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--tq);cursor:pointer;border:2px solid #0d1712}
input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--tq);cursor:pointer;border:2px solid #0d1712}

.layers{display:flex;flex-direction:column;gap:6px}
.layer{display:flex;align-items:center;gap:8px;font-size:12px;padding:7px 8px;border:1px solid var(--line);border-radius:7px;color:var(--muted);cursor:pointer;transition:.15s}
.layer i.h{color:var(--muted-2);font-size:15px}
.layer .nm{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.layer:hover{border-color:var(--line-strong);color:var(--ink)}
.layer.on{border-color:var(--tq);color:var(--ink);background:var(--tq-soft)}
.layer .eye{color:var(--muted-2);font-size:15px}
.layers-empty{font-size:12px;color:var(--muted-2);padding:4px 2px}

/* STAGE */
.stage-wrap{flex:1;min-width:0;display:flex;flex-direction:column;background:
  radial-gradient(60% 55% at 50% 32%, #22302a, var(--stage))}
.stage-toolbar{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--line)}
.spacer{flex:1}
.view-toggle{display:inline-flex;border:1px solid var(--line-strong);border-radius:999px;overflow:hidden}
.vt{padding:6px 16px;font-size:12px;color:var(--muted);background:none;border:none}
.vt.on{background:var(--tq);color:var(--on-acc)}
.zoom-val{font-size:12px;color:var(--muted);min-width:40px;text-align:center}

.stage-scroll{flex:1;overflow:auto;display:flex;padding:24px;touch-action:pan-x pan-y;overscroll-behavior:contain;scrollbar-width:thin}
/* margin:auto místo align/justify center: po přiblížení jde odscrollovat i levý a horní okraj (flex centrování je ořezávalo) */
.stage{position:relative;width:560px;height:750px;flex:none;margin:auto;transform-origin:center center;border-radius:14px;overflow:hidden;background:#e9eae7}
.garment{position:absolute;inset:0}
.garment svg{width:100%;height:100%;display:block;filter:drop-shadow(0 30px 50px rgba(0,0,0,.5))}
.garment img{width:100%;height:100%;display:block;object-fit:cover;user-select:none;-webkit-user-drag:none}
/* 1. 10. 2026 (Adam: rámeček plochy je málo vidět): dřív 1,5 px tyrkysová s 45 % krytím, na bílém i černém textilu skoro
   neviditelná. Teď tmavá čárkovaná linka a kolem ní světlá 1 px kontura (box-shadow), ať je rámeček vidět na světlém
   i tmavém kusu. overflow:hidden ořezává jen obsah, stín zvenku nechá. */
.print-frame{position:absolute;border:2px dashed rgba(26,74,80,.85);box-shadow:0 0 0 1px rgba(255,255,255,.6);border-radius:4px;overflow:hidden}
.print-frame canvas{display:block}
/* 24. 9. 2026: vodítka přichytávání (střed a okraje plochy), kreslí je editor.js jen při přichycení */
.print-frame .prichyt-linka{position:absolute;display:none;background:#ff5a5f;pointer-events:none;z-index:6}
.print-frame .prichyt-linka.svisla{top:0;bottom:0;width:1px}
.print-frame .prichyt-linka.vodorovna{left:0;right:0;height:1px}
/* Velikost písma nastavuje applyLayout() podle šířky plochy. Napevno zadaných
   13 px bylo na velkém tričku ztracených a na rukávu přetékalo ven. */
.print-hint{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5em;
  background:none;border:0;padding:0;margin:0;color:var(--muted-2);text-align:center;line-height:1.3;cursor:pointer;
  font-family:inherit;overflow:hidden;-webkit-tap-highlight-color:transparent}
.print-hint .ph-plus{display:flex;align-items:center;justify-content:center;border-radius:50%;
  width:clamp(34px,2.8em,60px);height:clamp(34px,2.8em,60px);flex:none;
  border:1.5px dashed var(--tq-soft);background:rgba(116,204,216,.10);color:var(--tq);
  transition:transform .15s ease,background .15s ease}
.print-hint .ph-plus i{font-size:1.5em}
.print-hint .ph-txt{font-weight:600;color:var(--ink);opacity:.92}
.print-hint .ph-sub{font-size:.82em;opacity:.65}
/* Na telefonu se soubory nepřetahují, věta o přetažení by jen mátla (Adam 13. 9. 2026). */
@media (hover:none){.print-hint .ph-sub{display:none}}
/* Při psaní s otevřenou klávesnicí zbývá tričku málo místa: pilulky stran a štítek na chvíli schováme. */
body.m-klavesnice .view-toggle,body.m-klavesnice .print-max{visibility:hidden}
/* Okno Návrh je uložený: na úzkém displeji se pole a tlačítka zalomí pod sebe na plnou šířku,
   dřív Poslat na e-mail přeteklo přes okraj a tlačítka měla jen 40 px (kontrola 13. 9. 2026). */
@media (max-width:900px){
  .link-row{display:flex;flex-wrap:wrap;gap:8px}
  .link-row input{flex:1 1 100%;min-width:0;min-height:44px;box-sizing:border-box}
  .link-row .btn{flex:1 1 100%;min-height:44px;justify-content:center;white-space:normal}
}
.print-hint:hover .ph-plus,.print-hint:focus-visible .ph-plus{transform:scale(1.06);background:rgba(116,204,216,.18)}
.print-hint:active .ph-plus{transform:scale(.96)}
/* Na rukávu a jiné malé ploše zůstane jen kolečko s plusem, text by přetekl ven. */
.print-hint.jen-ikona{gap:0}
.print-hint.jen-ikona .ph-txt,.print-hint.jen-ikona .ph-sub,.print-hint.bez-podtitulku .ph-sub{display:none}

/* BOTTOM BAR */
.bottombar{display:flex;align-items:center;gap:12px;height:56px;flex:none;padding:0 16px;border-top:1px solid var(--line);background:#121a15}
.summary{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:7px}
.summary i{font-size:15px;color:var(--muted-2)}
.summary #summaryTxt{color:var(--ink)}

/* MODALS */
.modal-bg{position:fixed;inset:0;z-index:60;background:rgba(6,10,8,.72);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:20px}
.modal{position:relative;width:100%;max-width:620px;max-height:90vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:28px}
.modal h2{font-size:1.5rem;letter-spacing:-.02em;margin-bottom:6px}
.modal-sub{color:var(--muted);font-size:.95rem;margin-bottom:20px}
.modal-x{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:9px;border:1px solid var(--line-strong);background:rgba(255,255,255,.04);color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:18px}
.modal-x:hover{color:var(--ink);border-color:var(--tq)}
/* 14. 10. 2026 (krok 6 redesignu): jedna kontrola před košíkem (#kontrolaModal, editor.js kontrolaOkno). Každá položka je řádek s větou
   a tlačítky opravy; položka, která do košíku nepustí (velikost, šířka motivu), má jantarový proužek vlevo a větu „Bez opravy nepůjde do košíku“.
   Na telefonu se tlačítka opravy roztáhnou na celou šířku (prst), na počítači stojí vedle sebe. */
.kontrola .modal-sub{margin-bottom:14px}
.kontrola-seznam{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:10px}
.kontrola-polozka{border:1px solid var(--line-strong);border-radius:12px;padding:12px 14px;background:rgba(255,255,255,.03)}
.kontrola-polozka.nutne{border-left:4px solid #e7b04a}
.kontrola-veta{margin:0;font-size:.95rem;line-height:1.5;color:var(--ink)}
.kontrola-nutne{margin:4px 0 0;font-size:.82rem;color:#e7b04a;font-weight:600}
.kontrola-opravy{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.kontrola-opravy .btn{min-height:40px;white-space:normal;text-align:center;justify-content:center}
#kontrolaPridat:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:900px){
  .kontrola{padding:22px 16px 18px}
  .kontrola h2{font-size:1.25rem}
  .kontrola-opravy .btn{flex:1 1 100%;min-height:44px}
}
.quote-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.quote-preview{background:var(--stage);border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;padding:12px;min-height:220px}
.quote-preview img{max-width:100%;max-height:320px;display:block}
.quote-form label{margin-top:10px}
.quote-form label:first-child{margin-top:0}
.quote-form input,.quote-form textarea{width:100%;background:rgba(255,255,255,.03);border:1px solid var(--line-strong);border-radius:9px;color:var(--ink);font-family:inherit;font-size:16px;padding:11px 12px}
.quote-form input:focus,.quote-form textarea:focus{outline:none;border-color:var(--tq)}
.quote-form textarea{resize:vertical;min-height:70px}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.form-status{margin-top:12px;font-size:.92rem;font-weight:600;display:none}
.form-status.ok{display:block;color:var(--tq)}
.form-status.err{display:block;color:var(--danger)}
.info-body{font-size:.95rem;color:var(--muted)}
.info-body img{width:100%;border-radius:12px;border:1px solid var(--line);margin-bottom:14px;background:var(--stage)}
.link-row{display:flex;gap:8px;margin-top:12px}
.link-row input{flex:1;background:rgba(255,255,255,.04);border:1px solid var(--line-strong);border-radius:9px;color:var(--ink);font-size:16px;padding:10px 12px}

.modal-wide{max-width:720px}
.gtabs{display:flex;gap:8px;margin-bottom:16px}
.gtab{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;padding:10px;border:1px solid var(--line-strong);border-radius:10px;background:rgba(255,255,255,.03);color:var(--muted);font-size:13px;font-weight:600}
.gtab i{font-size:16px}
.gtab.on{border-color:var(--tq);color:var(--ink);background:var(--tq-soft)}
.gpane{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px;max-height:54vh;overflow:auto;padding:2px}
.gpane.tpl{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.gcell{aspect-ratio:1;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);display:flex;align-items:center;justify-content:center;color:var(--ink);cursor:pointer;transition:.15s;padding:14px}
.gcell:hover{border-color:var(--tq);background:#243a37;transform:translateY(-2px)}
.gcell svg{width:100%;height:100%;fill:currentColor}
.tplcell{border:1px solid var(--line);border-radius:12px;background:var(--panel-2);padding:15px;cursor:pointer;transition:.15s;display:flex;flex-direction:column;gap:6px;text-align:left}
.tplcell:hover{border-color:var(--tq);background:#243a37}
.tplcell .tphead{color:var(--tq);font-size:19px}
.tplcell .tpname{font-weight:600;font-size:13.5px;color:var(--ink)}
.tplcell .tphint{font-size:11.5px;color:var(--muted-2)}

/* 21. 9. 2026: pointer-events:none i na počítači (na mobilu to tak bylo už dřív). Hlášku nikdy nikdo
   neklepe, jen ji čte (toast() plní jen textContent), ale leží na 76 px odspodu, tedy přesně na bublině
   „Vypadá to dobře?" (78 px) i nad spodní lištou. Bez tohohle bylo po hlášce „Pozadí je pryč" tlačítko
   Přidat do košíku v bublině šest vteřin hluché. */
.toast{position:fixed;bottom:76px;left:50%;transform:translateX(-50%);z-index:80;background:var(--tq);color:var(--on-acc);
  font-weight:600;font-size:13px;padding:10px 18px;border-radius:999px;box-shadow:0 8px 30px -8px var(--tq-glow);
  pointer-events:none}

/* RESPONSIVE — panels become bottom sheets via tabs */
.mobile-tabs{display:none}
@media(max-width:900px){
  .workspace{flex-direction:column}
  .panel{width:100%;max-height:38vh;border:none;border-top:1px solid var(--line)}
  .panel-left{order:3}.stage-wrap{order:1}.panel-right{order:2}
  .brand-txt em{display:none}
  .quote-grid{grid-template-columns:1fr}
  .stage{width:420px;height:563px}
}
@media(max-width:520px){
  .stage{width:330px;height:365px}
  .summary{font-size:11px}.summary #summaryTxt{display:inline}
  .btn{padding:9px 14px;font-size:.85rem}
}

.quote-form .gdpr-row{display:flex;gap:9px;align-items:flex-start;margin-top:12px;font-size:12.5px;color:var(--muted);font-weight:400;line-height:1.45;cursor:pointer}
.quote-form .gdpr-row input{width:16px;height:16px;margin-top:1px;accent-color:var(--tq);flex:none;cursor:pointer}
.quote-form .gdpr-row a{color:var(--tq)}

/* ---- Produktová specifikace + cena ---- */
.prod-spec{margin:10px 0 0;font-size:11.5px;line-height:1.5;color:var(--muted-2)}
.prod-spec b{display:block;color:var(--ink);font-size:12.5px;font-weight:700;margin-bottom:2px}
.prod-spec em{display:block;font-style:normal;color:var(--muted);margin-top:4px}

.price-grp{background:linear-gradient(180deg,rgba(116,204,216,.07),transparent);border-bottom:none}
.price-head{display:flex;align-items:baseline;gap:6px}
.price-per{font-size:34px;font-weight:800;letter-spacing:-.02em;color:var(--tq);line-height:1;
  font-variant-numeric:tabular-nums}
.price-unit{font-size:13px;font-weight:600;color:var(--muted)}
.price-total{margin:6px 0 0;font-size:12px;color:var(--lime);font-weight:600;
  font-variant-numeric:tabular-nums;min-height:15px}
.price-break{list-style:none;margin:12px 0 0;padding:0;font-size:11.5px}
.price-break li{display:flex;justify-content:space-between;gap:10px;padding:5px 0;
  border-bottom:1px dashed var(--line);color:var(--muted)}
.price-break li:last-child{border-bottom:none}
.price-break li b{color:var(--ink);font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.price-break li.dim{opacity:.65;font-style:italic}
.price-break li.save,.price-break li.save b{color:var(--lime)}
.price-note{margin:11px 0 0;font-size:10.5px;line-height:1.5;color:var(--muted-2)}
.summary-price{color:var(--tq);font-weight:700;white-space:nowrap}
.price-grp{position:sticky;bottom:0;z-index:2;background:#1b241d;
  border-top:1px solid var(--line-strong);box-shadow:0 -10px 24px -12px rgba(0,0,0,.7)}
.price-total .dim{color:var(--muted-2);font-weight:400}
.btn.btn-ghost{background:rgba(255,255,255,.06);color:var(--ink);border:1px solid var(--line-strong)}
.btn.btn-ghost:hover{border-color:var(--tq);color:var(--tq)}
.cart-link[hidden]{display:none}
.cart-link{margin-right:8px}

/* ---- galerie motivů ---- */
.mcats{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.mcat{background:none;border:1px solid var(--line-strong);border-radius:99px;color:var(--muted);
  font:600 12px/1 inherit;font-family:inherit;padding:7px 13px;cursor:pointer;transition:all .2s}
.mcat:hover{color:var(--ink)}
.mcat.on{background:var(--lime);border-color:var(--lime);color:var(--on-acc)}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;max-height:52vh;overflow-y:auto;padding-right:4px}
.mcell{background:#232d27;border:1px solid var(--line);border-radius:12px;padding:8px 8px 9px;cursor:pointer;
  display:flex;flex-direction:column;gap:6px;transition:border-color .2s,transform .2s}
.mcell:hover{border-color:var(--tq);transform:translateY(-2px)}
.mcell svg{width:100%;aspect-ratio:100/130;display:block;background:#2c3831;border-radius:8px}
/* 9. 10. 2026 (halloweenská kampaň): motiv jako hotový obrázek (Halloween), podnadpisy skupin a věta pod kategoriemi */
.mcell img.mimg{width:100%;aspect-ratio:1/1;object-fit:contain;display:block;background:#2c3831;border-radius:8px;padding:6px;box-sizing:border-box}
.mgroup{grid-column:1/-1;margin:8px 0 0;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.mgroup:first-child{margin-top:0}
.mpozn{margin:-4px 0 10px;font-size:12.5px;line-height:1.4;color:var(--muted)}
.mcell span{font-size:11px;font-weight:600;color:var(--muted);text-align:center;line-height:1.25}

/* ---- tabulka velikostí ---- */
.size-help{background:none;border:0;color:var(--tq);font:600 12px/1 inherit;font-family:inherit;
  padding:7px 0 0;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.size-help:hover{text-decoration:underline}
.size-tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;margin:10px 0}
.size-tbl{border-collapse:collapse;width:100%;font-size:13px}
.size-tbl th{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted-2);
  text-align:left;padding:9px 13px;border-bottom:1px solid var(--line-strong);background:rgba(0,0,0,.18)}
.size-tbl td{padding:8px 13px;border-bottom:1px solid var(--line);color:var(--muted)}
.size-tbl td:first-child{color:var(--ink);font-weight:700}
.size-tbl tr:last-child td{border-bottom:0}
.size-tbl tr.on td{background:rgba(116,204,216,.09);color:var(--ink)}
.size-note{font-size:12px;color:var(--muted-2);line-height:1.5}
/* 25. 9. 2026 (tabulky podle výrobců): legenda a zdroj pod tabulkou, věta místo tabulky (kšiltovka, výrobce míry nezveřejňuje),
   věta o jedné velikosti v panelu Velikost. Míry s desetinami nesmí zalomit „48,5 cm" na dva řádky. */
.size-tbl td{white-space:nowrap}
.size-note+.size-note{margin-top:6px}
.size-note a,.size-veta a{color:var(--tq)}
.size-veta{margin:4px 0 14px;font-size:14px;line-height:1.5;color:var(--ink)}
.size-zdroj{color:var(--muted)}
.size-jedna{margin:2px 0 0;font-size:13px;line-height:1.45;color:var(--ink)}

/* ---- termín doručení ---- */
.delivery{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--lime);margin:2px 0 8px}
.delivery i{font-size:15px}

/* ---- mini-košík ---- */
.drawer-bg{position:fixed;inset:0;background:rgba(10,14,12,.55);backdrop-filter:blur(3px);z-index:80;
  opacity:0;transition:opacity .24s}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(400px,94vw);background:var(--panel);z-index:81;
  border-left:1px solid var(--line-strong);display:flex;flex-direction:column;
  transform:translateX(102%);transition:transform .24s cubic-bezier(.16,1,.3,1)}
body.drawer-on .drawer-bg{opacity:1}
body.drawer-on .drawer{transform:none}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}
.drawer-head h2{font-size:1.05rem;margin:0}
.drawer-items{flex:1;overflow-y:auto;padding:12px 18px}
.ditem{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.ditem:last-child{border-bottom:0}
.ditem img{width:52px;height:52px;object-fit:cover;border-radius:9px;background:#eceeea;flex:none}
.ditem .dph{width:52px;height:52px;border-radius:9px;background:#2c3831;flex:none}
.dinfo{flex:1;min-width:0}
.dinfo b{display:block;font-size:12.5px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dinfo span{font-size:11.5px;color:var(--muted)}
.dright{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.dright b{font-size:13px}
.ddel{background:none;border:0;color:var(--muted-2);cursor:pointer;font-size:15px;padding:2px}
.ddel:hover{color:#e2685f}
.drawer-foot{padding:14px 18px 18px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.drawer-ship{font-size:12px;color:var(--muted);margin:0}
.drawer-ship.ok{color:var(--lime);font-weight:700;display:flex;gap:6px;align-items:center}
.shipbar{display:block;height:6px;border-radius:99px;background:rgba(255,255,255,.1);margin-top:7px;overflow:hidden}
.shipbar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--tq),var(--lime));transition:width .4s}
.drawer-total{display:flex;justify-content:space-between;font-size:.95rem;margin:0}
.drawer-total b{font-size:1.15rem;color:var(--lime)}
.drawer-go{justify-content:center}
.drawer-stay{justify-content:center}

/* ---- mobilní spodní lišta ---- */
@media(max-width:900px){
  .mobile-tabs{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;
    background:rgba(22,31,25,.96);backdrop-filter:blur(12px);border-top:1px solid var(--line-strong);
    padding:6px max(8px,env(safe-area-inset-left)) max(8px,env(safe-area-inset-bottom))}
  .mobile-tabs{box-sizing:border-box;width:100%}
  .mobile-tabs button{flex:1;min-width:0;background:none;border:0;color:var(--muted);font:600 10px/1.2 inherit;font-family:inherit;
    display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;cursor:pointer;border-radius:9px}
  .mobile-tabs button:active{background:rgba(255,255,255,.07);color:var(--ink)}
  .mobile-tabs button i{font-size:19px}
  body{padding-bottom:64px}
}

/* pane motivů má vlastní vnitřní layout (chipy nahoře, mřížka pod nimi) */
#gpaneMotif{display:block;max-height:none;overflow:visible}

/* mobil: lišty se musí vejít do 375 px, jinak prohlížeč oddálí celou stránku */
@media(max-width:560px){
  .topbar{gap:6px;padding:0 8px;flex-wrap:nowrap;min-width:0}
  .topbar .brand-txt{display:none}   /* ikona loga zůstává, mizí jen text */
  .topbar .cart-link{padding:8px 10px;font-size:.8rem}
  .topbar .demo-chip,.topbar #undoBtn,.topbar #redoBtn{display:none}
  .bottombar{gap:8px;padding:0 10px}
  .bottombar #previewBtn,.bottombar #quoteBtn2{display:none}
  .bottombar .summary{min-width:0;overflow:hidden}
  .bottombar #summaryTxt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:34vw}
  .btn{white-space:nowrap}
}

/* volič vlastní barvy — duhové kolečko, uvnitř nativní picker */
.sw-pick{position:relative;overflow:hidden;cursor:pointer;
  background:conic-gradient(#f44,#fa0,#ff4,#4d4,#4cd,#44f,#c4f,#f44)!important;border:1px solid var(--line-strong)}
.sw-pick input{position:absolute;inset:-6px;width:calc(100% + 12px);height:calc(100% + 12px);opacity:0;cursor:pointer;border:0;padding:0}

/* 9. 10. 2026 (Adam: víc písem, kapátko a HEX kód, VELKÁ PÍSMENA): vlastní seznam písem s náhledem po skupinách, řádek s kódem barvy a kapátkem, tlačítko AA */
.fontpick{position:relative}
.fp-btn{width:100%;height:36px;display:flex;align-items:center;justify-content:space-between;gap:8px;background:rgba(255,255,255,.03);border:1px solid var(--line-strong);
  border-radius:8px;color:var(--ink);font-size:15px;padding:0 10px;text-align:left;transition:.2s}
.fp-btn:hover,.fp-btn[aria-expanded="true"]{border-color:var(--tq)}
.fp-jm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fp-btn i{color:var(--muted);font-size:15px;flex:none}
.fp-list{position:absolute;z-index:60;left:0;right:0;top:calc(100% + 4px);max-height:min(430px,62vh);overflow-y:auto;padding:4px;background:#1c2620;border:1px solid var(--line-strong);
  border-radius:10px;box-shadow:0 14px 40px rgba(0,0,0,.55);overscroll-behavior:contain}
.fp-sk{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted-2);margin:10px 8px 4px}
.fp-sk:first-child{margin-top:4px}
.fp-it{display:block;width:100%;text-align:left;background:none;border:0;border-radius:7px;color:var(--ink);font-size:17px;line-height:1.25;padding:7px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fp-it:hover{background:var(--tq-soft)}
.fp-it.on{background:var(--tq);color:var(--on-acc)}
.hexrow{display:flex;align-items:center;gap:7px;margin-top:9px}
.hex-ob{display:flex;align-items:center;gap:6px;flex:1;min-width:0;height:34px;padding:0 9px;background:rgba(255,255,255,.03);border:1px solid var(--line-strong);border-radius:8px}
.hex-ob:focus-within{border-color:var(--tq)}
.hex-vz{width:16px;height:16px;border-radius:5px;border:1px solid var(--line-strong);flex:none;background:transparent}
.hex-hash{color:var(--muted-2);font-size:13px}
.hex-inp{flex:1;min-width:0;width:100%;background:none;border:0;outline:0;color:var(--ink);font:600 13px/1 ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.04em;padding:0}
.hex-inp.chyba{color:var(--danger)}
.hex-pip{flex:none}
.ic-aa{font-size:12px;font-weight:800;letter-spacing:.02em;line-height:1}

/* ---- uvítací volba (příchod z reklamy) ---- */
.welcome-box{max-width:460px;text-align:center}
.w-eyebrow{font-size:11.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#256b70;margin:0 0 8px}
.welcome-box h2{margin:0 0 6px}
.w-opts{display:flex;flex-direction:column;gap:10px;margin:20px 0 16px}
.w-opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;
  background:#232d27;border:1px solid var(--line-strong);border-radius:14px;padding:14px 16px 14px 52px;
  cursor:pointer;position:relative;font-family:inherit;color:var(--ink);transition:border-color .2s,transform .2s,background .2s}
.w-opt:hover{border-color:var(--tq);transform:translateY(-2px);background:#26312b}
.w-opt i{position:absolute;left:16px;top:16px;font-size:22px;color:var(--lime)}
.w-opt b{font-size:15px}
.w-opt small{font-size:12.5px;color:var(--muted);line-height:1.4}
.w-trust{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px;margin:0 0 14px;padding:0}
.w-trust li{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.w-trust i{color:var(--lime);font-size:14px}
.w-skip{background:none;border:0;color:var(--muted-2);font:600 12.5px inherit;font-family:inherit;cursor:pointer;text-decoration:underline}
.w-skip:hover{color:var(--ink)}

/* zvýraznění výběru velikosti, když chybí */
.grp.need{animation:needPulse 1.1s ease 2}
/* Stejné zvýraznění i pro velikosti ve spodním panelu na mobilu. */
.qs-chips.need{animation:needPulse 1.1s ease 2;border-radius:10px}
@keyframes needPulse{0%,100%{box-shadow:none}50%{box-shadow:inset 0 0 0 2px var(--lime)}}

/* postrčení k košíku */
/* 21. 9. 2026: vrstva snížena ze 70 na 55, tedy POD modální okna (.modal-bg má 60).
   Bublina stojí u spodního okraje obrazovky, přesně tam, kde mají okna tlačítka (Zrušit,
   Přidat do košíku, Odeslat poptávku). S vyšší vrstvou ležela přes ně a brala jim klepnutí:
   v okně Odstranit pozadí klepnutí na Zrušit okno nezavřelo, ale spustilo objednání s obrázkem,
   který měl pozadí pořád na sobě. Pozadí okna teď bublinu překryje, i kdyby ji JS nestihlo schovat. */
.nudge{position:fixed;left:50%;transform:translate(-50%,20px);bottom:78px;z-index:55;
  display:flex;align-items:center;gap:12px;background:rgba(28,38,32,.97);border:1px solid var(--line-strong);
  border-radius:99px;padding:9px 10px 9px 20px;box-shadow:0 14px 40px rgba(0,0,0,.5);
  opacity:0;transition:opacity .26s,transform .26s cubic-bezier(.16,1,.3,1);max-width:calc(100vw - 24px)}
.nudge.in{opacity:1;transform:translate(-50%,0)}
.nudge span{font-size:13.5px;font-weight:600;white-space:nowrap}
.nudge button{background:var(--lime);color:var(--on-acc);border:0;border-radius:99px;padding:9px 18px;
  font:700 13px inherit;font-family:inherit;cursor:pointer;white-space:nowrap}
.nudge .x{background:none;color:var(--muted);padding:4px 8px;font-size:18px;line-height:1}
@media(max-width:560px){
  .nudge{bottom:74px;padding:8px 8px 8px 16px;gap:8px}
  .nudge span{font-size:12.5px}
  .nudge button{padding:8px 14px;font-size:12.5px}
}

/* nabídka firemní cesty u velkých objednávek */
.bulk-hint{border:1px solid rgba(201,221,104,.35);background:rgba(201,221,104,.07);border-radius:12px;
  padding:11px 13px;margin:4px 0 10px;display:flex;flex-direction:column;gap:5px}
.bulk-hint b{font-size:12.5px;color:var(--lime)}
.bulk-hint span{font-size:11.5px;color:var(--muted);line-height:1.45}
.bulk-hint button{margin-top:4px;background:none;border:1px solid var(--line-strong);border-radius:99px;
  color:var(--ink);font:700 12px inherit;font-family:inherit;padding:7px 14px;cursor:pointer;align-self:flex-start}
.bulk-hint button:hover{border-color:var(--lime);color:var(--lime)}

/* Uložení návrhu bylo dřív jen ikonka řetízku a pod 520 px se úplně skrývala,
   takže na mobilu se návrh nedal uložit vůbec. Teď je to viditelné tlačítko. */
.btn-ulozit{background:rgba(116,204,216,.14);color:var(--tq);border:1px solid var(--tq);white-space:nowrap}
.btn-ulozit:hover{background:rgba(116,204,216,.22)}
.btn-ulozit .ul-kratky{display:none}
/* 26. 9. 2026 (Adam, dávka editor-drobnosti: „Ikonka nový potisk dej někam více doleva a ať je to lépe vidět"): Nový návrh vlevo
   v hlavičce jako tlačítko s ikonou a textem, dřív jen šedá ikona vpravo mezi Vpřed a Uložit návrh. Tvar jako Uložit návrh, barvy
   neutrální (světlý text, rámeček), ať nesoupeří s hlavní akcí; výška 34 px jako ikonová tlačítka hlavičky. Na telefonu je v menu. */
.btn-novy{height:34px;padding:0 14px;gap:7px;font-size:.84rem;background:rgba(255,255,255,.06);color:var(--ink);border:1px solid var(--line-strong);flex:none}
.btn-novy i{font-size:16px;color:var(--tq)}
.btn-novy:hover{border-color:var(--tq);background:var(--tq-soft)}
.btn-novy:focus-visible{outline:2px solid var(--tq);outline-offset:2px}
/* S tlačítkem Nový návrh vlevo se hlavička na 1024 px s odkazem Košík nevešla (logo se smrsklo o 20 px a text přetékal přes
   štítek). Pod 1200 px proto zmizí podtitulek „· editor merche", pod 1024 px i štítek „Zdarma · bez registrace" (telefon je
   schovává už dřív). Ověřeno na 920 až 1440 px, česky i anglicky, s košíkem i bez: hlavička v jednom řádku, nic se nepřekrývá. */
@media(min-width:901px) and (max-width:1199px){.topbar .brand-txt em{display:none}}
@media(min-width:901px) and (max-width:1023px){.topbar .demo-chip{display:none}}

/* Nabídka uložení se ukáže sama, až má člověk rozdělanou práci. */
/* 21. 9. 2026 (kontrola UX-4): pod okna (.modal-bg má 60), ať karta nikdy nestojí nad jejich tlačítky */
.uloz-karta{position:fixed;left:14px;right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));
  z-index:55;max-width:460px;margin:0 auto;background:var(--panel,#1f2a23);
  border:1px solid var(--tq);border-radius:16px;padding:16px 18px 14px;
  box-shadow:0 18px 60px rgba(0,0,0,.55)}
.uk-zavrit{position:absolute;top:8px;right:10px;background:none;border:0;color:var(--muted);
  font-size:22px;line-height:1;cursor:pointer;padding:4px 8px}
.uk-text b{display:block;font-size:1rem;margin-bottom:3px;color:var(--ink)}
.uk-text span{display:block;font-size:.86rem;color:var(--muted);line-height:1.5}
.uk-radek{display:flex;gap:8px;margin-top:12px}
.uk-radek input{flex:1;min-width:0;background:rgba(255,255,255,.04);border:1px solid var(--line-strong);
  border-radius:9px;color:var(--ink);font-family:inherit;font-size:16px;padding:11px 12px}
.uk-radek .btn{white-space:nowrap}
.uk-pozn{margin:9px 0 0;font-size:.74rem;color:var(--muted);line-height:1.5}
.uk-pozn a{color:var(--tq)}
@media(max-width:900px){
  .uloz-karta{bottom:calc(78px + env(safe-area-inset-bottom,0px))}
}
@media(max-width:560px){
  .btn-ulozit .ul-dlouhy{display:none}
  .btn-ulozit .ul-kratky{display:inline}
}

/* Na telefonu se Zpět a Vpřed nevešly do horní lišty a byly schované, takže
   po nechtěném posunu prstem se návrh nedal vrátit. Teď plavou nad plátnem,
   u ruky a mimo pracovní plochu. Na desktopu zůstávají v liště. */
.mobil-kroky{display:none}
.stage-wrap{position:relative}
@media(max-width:560px){
  .mobil-kroky{display:flex;gap:6px;position:absolute;bottom:10px;left:10px;z-index:30}
  .mobil-kroky button{width:44px;height:44px;border-radius:12px;cursor:pointer;
    background:rgba(20,27,22,.82);backdrop-filter:blur(8px);
    border:1px solid var(--line-strong);color:var(--ink);font-size:20px;
    display:flex;align-items:center;justify-content:center}
  .mobil-kroky button:disabled{opacity:.32}
  .mobil-kroky button:active:not(:disabled){background:rgba(116,204,216,.22);border-color:var(--tq)}
}

/* 25. 9. 2026: pruh .prod-info nad plátnem zrušen (značka a gramáž jsou v patičce levého panelu, barvy v liště pod hlavičkou) */

/* Vkládání grafiky je hlavní důvod, proč sem člověk přišel. Tři šedé rámečky
   mezi ostatními se přehlédly, proto jsou teď větší, s tyrkysovým lemem
   a znatelnějším textem. */
.rbtn.hlavni{padding:13px 13px;font-size:13.5px;font-weight:600;
  background:rgba(116,204,216,.10);border-color:rgba(116,204,216,.55)}
.rbtn.hlavni i{font-size:20px}
.rbtn.hlavni:hover{background:rgba(116,204,216,.18);border-color:var(--tq)}
.rbtn.hlavni:active{transform:scale(.99)}

/* Provázení editorem: tmavý přehoz s dírou nad tím, o čem zrovna mluvíme.
   Díra je udělaná obrovským stínem okolo, ne maskou, funguje to všude. */
.navod-bg{position:fixed;inset:0;z-index:400}
.navod-svetlo{position:fixed;border-radius:14px;pointer-events:none;
  box-shadow:0 0 0 9999px rgba(8,12,10,.76), 0 0 0 3px var(--tq);
  transition:top .28s ease, left .28s ease, width .28s ease, height .28s ease}
.navod-bublina{position:fixed;z-index:401;max-width:300px;background:var(--panel,#1f2a23);
  border:1px solid var(--tq);border-radius:14px;padding:14px 16px;
  box-shadow:0 18px 50px rgba(0,0,0,.6)}
.nb-krok{display:block;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--tq);font-weight:700;margin-bottom:5px}
.navod-bublina b{display:block;font-size:1rem;margin-bottom:4px;color:var(--ink)}
.navod-bublina p{margin:0 0 12px;font-size:.85rem;line-height:1.5;color:var(--muted)}
.nb-ovladani{display:flex;align-items:center;justify-content:space-between;gap:10px}
.nb-preskoc{background:none;border:0;color:var(--muted);font:inherit;font-size:.82rem;
  cursor:pointer;padding:6px 2px;text-decoration:underline}
.nb-ovladani .btn{padding:9px 20px}
@media(max-width:560px){
  .navod-bublina{left:12px !important;right:12px;max-width:none;width:auto}
}

/* Rozpad velikostí: pole na kusy u každé velikosti produktu. */
.vel-mrizka{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:7px;margin:2px 0 6px}
.vel-mrizka label{display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.03);
  border:1px solid var(--line-strong);border-radius:9px;padding:5px 7px}
.vel-mrizka span{font-size:11px;font-weight:700;color:var(--muted);min-width:26px}
.vel-mrizka input{width:100%;min-width:0;background:none;border:0;color:var(--ink);
  font-family:inherit;font-size:16px;padding:2px 0;text-align:right;-moz-appearance:textfield}
.vel-mrizka input::-webkit-outer-spin-button,.vel-mrizka input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.vel-mrizka label:focus-within{border-color:var(--tq)}
.vel-souhrn{margin:0 0 8px;font-size:12px;color:var(--muted)}
.vel-souhrn b{color:var(--tq)}

/* ---- Odchodové okno: rozdělaný návrh, člověk míří pryč ---- */
.odchod-m{max-width:520px;padding:26px 26px 20px}
.od-hlava{display:flex;gap:16px;align-items:flex-start;margin-bottom:6px}
.od-hlava h2{font-size:1.3rem;margin:0 0 6px}.od-hlava .modal-sub{margin-bottom:0}
#odNahled{width:92px;height:92px;object-fit:contain;border-radius:12px;background:#fff;border:1px solid var(--line-strong);flex:none}
.od-cta{width:100%;justify-content:center;font-size:1.05rem;padding:14px 18px;margin-top:16px;font-weight:800}
.od-cta span{font-weight:600;opacity:.85;margin-left:6px}
.od-nebo{display:flex;align-items:center;gap:10px;margin:14px 0 2px;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.1em}
.od-nebo::before,.od-nebo::after{content:"";flex:1;height:1px;background:var(--line)}
.od-pryc{display:block;margin:14px auto 0;background:none;border:0;color:var(--muted);font-size:.85rem;text-decoration:underline;cursor:pointer;padding:6px 10px}
.od-pryc:hover{color:var(--ink)}
@media(max-width:560px){.odchod-m{padding:22px 18px 16px}.od-hlava{flex-direction:column;gap:10px}#odNahled{width:72px;height:72px}}

/* ---- Spodní lišta na telefonu: jedna velká výzva Objednat + Uložit ---- */
.bb-uloz{display:none}
@media(max-width:900px){
  .bottombar{height:auto;min-height:66px;padding:9px 10px calc(9px + env(safe-area-inset-bottom,0px));gap:8px}
  .bottombar .bb-uloz{display:inline-flex;padding:12px 13px;font-size:1.05rem}
  .bottombar #buyBtn2{flex:1;justify-content:center;font-size:1.02rem;font-weight:800;padding:13px 14px}
  .bottombar .summary{flex:0 1 38%;min-width:0}
  .uloz-karta{bottom:calc(92px + env(safe-area-inset-bottom,0px))}
}

/* Trvalé upozornění na rozlišení obrázku (viz dpiKontrola v editor.js). Stojí nad plátnem,
   ne v pomíjivém toastu, protože zákazník musí vědět, že tisk vyjde rozmazaný, dokud
   motiv nezmenší nebo nenahraje větší soubor. */
.dpi-warn{margin:0 12px 8px;padding:9px 12px;border-radius:10px;font-size:12.5px;line-height:1.45;
  background:rgba(224,143,127,.14);border:1px solid #e08f7f;color:var(--ink)}
.dpi-warn.mekce{background:rgba(224,192,116,.14);border-color:#e0c074}
.dpi-warn b{font-weight:800}
.dpi-warn button{margin-left:6px;background:var(--ink);color:var(--bg,#141b16);border:0;border-radius:999px;padding:4px 11px;
  font:700 12px inherit;cursor:pointer;vertical-align:middle}
.layer em.dpi{font-style:normal;font-size:10.5px;font-weight:800;padding:2px 6px;border-radius:999px;flex:none}
.layer em.dpi.ok{background:rgba(201,221,104,.16);color:#c9dd68}
.layer em.dpi.mekce{background:rgba(224,192,116,.18);color:#e0c074}
.layer em.dpi.spatne{background:rgba(224,143,127,.2);color:#e08f7f}
@media(max-width:700px){.dpi-warn{margin:0 0 8px;font-size:12px}}

/* Maximální velikost potisku přímo u rámečku: lidé roztahovali motiv od kraje ke kraji. */
.print-max{position:absolute;z-index:3;font-size:11px;line-height:16px;color:#f2f6f4;background:rgba(10,18,14,.78);padding:1px 7px;border-radius:6px;pointer-events:none;white-space:nowrap;letter-spacing:.02em}
.podminky-tisku{font-size:.72rem;line-height:1.45;color:#a9bcb4;margin:8px 0 0}
.podminky-tisku summary{cursor:pointer;color:#c9dd68;font-weight:600;list-style:none}
.podminky-tisku summary::before{content:'ⓘ ';opacity:.8}
.podminky-tisku p{margin:6px 0 0}

/* Přepínač CZ/EN v hlavičce editoru (angličtina se jinak zapne i podle jazyka prohlížeče) */
.lang-sw{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;flex:none}
.lang-sw a{padding:5px 9px;font-size:.72rem;font-weight:700;letter-spacing:.04em;color:var(--muted);text-decoration:none;line-height:1}
/* 17. 9. 2026: --acc v editoru není, aktivní CZ/EN bylo neviditelné */
.lang-sw a.on{background:var(--tq,#74ccd8);color:#0b1210}
.lang-sw a:not(.on):hover{color:var(--ink)}
@media (max-width:720px){.lang-sw a{padding:5px 7px}}

/* nápověda k množstevní slevě pod rozpisem ceny */
.qty-hint{margin:8px 0 0;font-size:12.5px;color:var(--lime);font-weight:700}

/* ================= MOBILNÍ APLIKACE (do 900 px), 12. 9. 2026 =================
   Adam na iPhonu: přiblížení se zaseklo v levém horním rohu a rozložení bylo nepoužitelné.
   Mobil proto nedostane přeložený desktop, ale skořápku aplikace s pevnou výškou: nahoře nízký
   proužek, uprostřed plocha s tričkem, dole jeden dok s výzvou Do košíku a ikonami, nástroje ve
   spodních panelech. Všechna pravidla jsou uvnitř media query, desktop se nemění. */
.m-dock,.m-sheet,.m-sheet-bg,.m-menu,.m-jen,.m-fonts,.m-jen-uchyt{display:none}
@media(max-width:900px){
  /* stránka se nikdy neroluje, výběr textu a systémová bublina při podržení prstu by rušily ovládání */
  html,body{height:100%;overflow:hidden;overscroll-behavior:none}
  body{padding-bottom:0!important;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
  input,textarea,select{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
  .app{height:100vh;height:100dvh;overflow:hidden}

  /* horní proužek: logo, zpět, vpřed, tři tečky */
  .topbar{height:calc(52px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) max(4px,env(safe-area-inset-right,0px)) 0 max(6px,env(safe-area-inset-left,0px));gap:2px;flex-wrap:nowrap}
  .topbar .brand{min-height:44px;min-width:44px;justify-content:center}
  .topbar .brand-mark svg{width:28px;height:28px}
  .topbar .brand-txt,.topbar .demo-chip,.topbar #langSw,.topbar #newBtn,.topbar #cartLink,.topbar #buyBtn{display:none!important}
  .topbar .top-actions{gap:0}
  .topbar #undoBtn,.topbar #redoBtn,.topbar .m-jen{display:inline-flex!important}
  /* 26. 9. 2026 (Adam, rozhodnutí B7): nabídka uložení už nevyskakuje sama, e-mail zůstává za viditelným tlačítkem Uložit návrh.
     Na telefonu bylo jen v menu pod třemi tečkami, teď je nahoře jako ikona disketa (44 px), text tlačítka je skrytý. */
  .topbar #saveBtn{display:inline-flex!important;width:44px;height:44px;padding:0;border:0;border-radius:12px;background:none;color:var(--tq);font-size:22px;justify-content:center;align-items:center}
  .topbar #saveBtn .ul-dlouhy,.topbar #saveBtn .ul-kratky{display:none!important}
  .topbar #saveBtn i{font-size:22px}
  .topbar .ic{width:44px;height:44px;border:0;border-radius:12px;background:none;color:var(--ink);font-size:22px}
  .topbar .ic:active{background:rgba(255,255,255,.08)}
  .topbar .ic:disabled{opacity:.3}

  .m-menu{display:flex;flex-direction:column;position:fixed;z-index:92;top:calc(50px + env(safe-area-inset-top,0px));right:8px;min-width:236px;
    background:#1f2a23;border:1px solid var(--line-strong);border-radius:16px;padding:6px;box-shadow:0 18px 50px rgba(0,0,0,.55)}
  .m-menu[hidden]{display:none!important}
  .m-menu button,.m-menu .cart-link{display:flex;align-items:center;gap:12px;min-height:48px;width:100%;padding:0 12px;border:0;border-radius:11px;
    background:none;color:var(--ink);font:600 .95rem/1.2 var(--font);text-align:left;text-decoration:none;margin:0}
  .m-menu button i,.m-menu .cart-link::before{font-size:20px;color:var(--tq);width:22px;text-align:center}
  .m-menu button:active,.m-menu .cart-link:active{background:rgba(255,255,255,.07)}
  .m-menu .cart-link[hidden]{display:none!important}
  .m-menu-lang{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;padding:0 6px 0 12px;border-top:1px solid var(--line);margin-top:4px;color:var(--muted);font-size:.9rem}
  .m-menu .lang-sw a{display:inline-flex;align-items:center;justify-content:center;min-width:52px;min-height:44px;font-size:.85rem}

  /* plocha: vyplní vše mezi proužkem a dokem, pohled řídí editor.js transformací (mPouzijPohled) */
  .workspace{flex:1;min-height:0;flex-direction:column}
  .panel-left,.panel-right,.prod-info,.mobil-kroky,.bottombar,.qsheet,.qsheet-bg,.drawer,.drawer-bg,.nudge{display:none!important}
  .stage-wrap{flex:1;min-height:0;order:0;position:relative;overflow:hidden}
  .stage-scroll{position:absolute;inset:0;display:block;overflow:hidden;padding:0;touch-action:none}
  .stage{position:absolute!important;left:0;top:0;margin:0;transform-origin:0 0;will-change:transform}
  .stage.m-anim{transition:transform .26s cubic-bezier(.2,.8,.2,1)}

  /* přepínání stran: malé pilulky nad plochou; vidět je 30 px, klepnout jde na 44 px */
  .stage-toolbar{position:absolute;top:6px;left:0;right:0;z-index:5;justify-content:center;border:0;padding:0 8px;pointer-events:none}
  .stage-toolbar>*:not(.view-toggle){display:none!important}
  .view-toggle{pointer-events:auto;border:0;border-radius:999px;background:rgba(14,20,16,.8);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
    max-width:100%;overflow-x:auto;scrollbar-width:none;padding:0 4px}
  .view-toggle::-webkit-scrollbar{display:none}
  .vt{position:relative;z-index:0;min-height:44px;padding:0 13px;font-size:12.5px;font-weight:600;white-space:nowrap;background:none!important;color:var(--muted)}
  .vt.on{color:var(--on-acc)}
  .vt.on::before{content:"";position:absolute;z-index:-1;left:1px;right:1px;top:7px;bottom:7px;border-radius:999px;background:var(--tq)}

  /* dok: výzva přes celou šířku + šest ikon */
  .m-dock{display:block;flex:none;background:#121a15;border-top:1px solid var(--line);
    padding:8px max(10px,env(safe-area-inset-right,0px)) env(safe-area-inset-bottom,0px) max(10px,env(safe-area-inset-left,0px))}
  .m-buy{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:56px;padding:0 18px;border:0;border-radius:16px;
    background:var(--lime);color:#1a2206;font:800 1.08rem/1 var(--font);box-shadow:0 8px 24px -10px rgba(201,221,104,.55)}
  .m-buy-t{display:inline-flex;align-items:center;gap:9px}
  .m-buy-t i{font-size:21px}
  .m-buy-cena{font-weight:700;font-size:.98rem;font-variant-numeric:tabular-nums;white-space:nowrap}
  .m-buy:active{filter:brightness(.94)}
  .m-buy:disabled{opacity:.6}
  .mobile-tabs{display:flex!important;position:static!important;width:auto!important;background:none!important;border:0!important;
    -webkit-backdrop-filter:none!important;backdrop-filter:none!important;padding:4px 0 2px!important}
  .mobile-tabs button{min-height:54px;gap:4px!important;font-size:10.5px!important;border-radius:12px!important}
  .mobile-tabs button i{font-size:22px!important}
  .mobile-tabs button.on{color:var(--tq)}
  .mobile-tabs button.kontext{color:var(--ink)}
  .mobile-tabs button.m-varuj i{color:#e08f7f}

  /* spodní panel */
  .m-sheet-bg{display:block;position:fixed;inset:0;top:calc(52px + env(safe-area-inset-top,0px));z-index:89;background:rgba(6,10,8,.34);opacity:0;transition:opacity .22s}
  .m-sheet{display:flex;flex-direction:column;position:fixed;left:0;right:0;bottom:0;z-index:90;max-height:52vh;max-height:52dvh;
    background:var(--panel);border-top:1px solid var(--line-strong);border-radius:20px 20px 0 0;box-shadow:0 -18px 50px rgba(0,0,0,.5);
    padding-bottom:env(safe-area-inset-bottom,0px);transform:translateY(105%);transition:transform .26s cubic-bezier(.2,.8,.2,1)}
  .m-sheet[hidden],.m-sheet-bg[hidden]{display:none!important}
  body.m-sheet-on .m-sheet{transform:none}
  body.m-sheet-on .m-sheet-bg{opacity:1}
  .m-sheet-head{flex:none;position:relative;padding:8px 56px 4px 18px;touch-action:none}
  .m-sheet-head .qs-handle{margin:0 auto 6px}
  .m-sheet-head h2{margin:0;font-size:1rem;font-weight:800;line-height:30px;letter-spacing:-.01em}
  .m-sheet-x{position:absolute;top:6px;right:6px;width:44px;height:44px;border:0;border-radius:12px;background:none;color:var(--muted);font-size:20px;display:flex;align-items:center;justify-content:center}
  .m-sheet-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:4px 16px 16px}
  /* patička panelu Velikost: mimo rolované tělo, takže Do košíku s cenou za kus je vždy vidět */
  .m-sheet-foot{flex:none;padding:8px 16px 10px;border-top:1px solid var(--line);background:var(--panel)}
  .m-sheet-foot[hidden]{display:none}
  /* 26. 9. 2026 (plán růstu A2): v patičce je vždy jedno tlačítko: Do košíku (panel Velikost) nebo „Hotovo, vybrat velikost"
     (Obrázek, Text, Prvek, galerie). Stejná výška 56 px, ať panel při přepnutí neposkočí. */
  .m-sheet-foot .m-buy[hidden]{display:none!important}
  .m-sheet-foot .m-hotovo .m-buy-t{min-width:0}
  .m-sheet-foot .m-hotovo .m-buy-t>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .m-sheet-foot .m-hotovo .m-buy-t i{font-size:20px}
  /* 26. 9. 2026 (kontrola v klonu): na 375 a 390 px se „Hotovo, vybrat velikost" s cenou do 1,08rem nevešlo a končilo trojtečkou;
     menší písmo a užší odsazení, celý text se vejde (hlídá test_vyber_prohlizec.js, oddíl 15) */
  .m-sheet-foot .m-hotovo{font-size:.98rem;padding:0 14px;gap:10px}
  .m-sheet-foot .m-hotovo .m-buy-cena{font-size:.9rem}
  /* u barvy a textu jen jemné ztmavení, jinak zákazník vidí triko tmavší, než ve skutečnosti je */
  body[data-mpane=barva] .m-sheet-bg,body[data-mpane=text] .m-sheet-bg{background:rgba(6,10,8,.08)}
  .m-sub{color:var(--muted);font-size:.86rem;line-height:1.45;margin:0 0 12px}
  .m-lab{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin:12px 0 0}
  .m-lab b{color:var(--ink)}
  .btn.m-wide{width:100%;justify-content:center;min-height:52px;font-size:1rem;margin-top:10px}
  .m-sheet input[type=range]{height:44px;background:linear-gradient(var(--line-strong),var(--line-strong)) center/100% 4px no-repeat;border-radius:0}
  .m-sheet input[type=range]::-webkit-slider-thumb{width:28px;height:28px}

  /* uvítání: tři volby */
  .m-start{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
  .m-start button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:96px;border-radius:16px;
    border:1px solid var(--line-strong);background:#232d27;color:var(--ink);font-family:var(--font)}
  .m-start button i{font-size:28px;color:var(--lime)}
  .m-start button b{font-size:.95rem}
  .m-start button:active{border-color:var(--tq);background:#26312b}

  /* 25. 9. 2026: dlaždice produktů ve skupinách (.m-prod) nahrazeny výběrem typů a modelů (VÝBĚR PRODUKTU na konci souboru) */

  /* barvy: kolečka 44 × 44 s názvem */
  .m-colors{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:12px 4px}
  .m-color{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:44px;padding:0;border:0;background:none;color:var(--muted);font:600 11px/1.2 var(--font);text-align:center}
  .m-sw{display:block;width:44px;height:44px;border-radius:50%;border:1px solid var(--line-strong)}
  .m-color.on{color:var(--ink)}
  .m-color.on .m-sw{outline:2px solid var(--tq);outline-offset:3px}

  /* text: pole, pás písem, barvy, velikost */
  #mTextSlot #textProps{display:flex;flex-direction:column;padding:0;border:0}
  #mTextSlot #textProps>.lab,#mTextSlot #textProps>#fontSelect,#mTextSlot #textProps>#fontPick,#mTextSlot #textProps>label.mini:nth-of-type(1),
  #mTextSlot #textProps>label.mini:nth-of-type(3),#mTextSlot #textProps>#letterSpace{display:none}
  #mTextSlot .txt-input{order:1;height:52px;font-size:17px;border-radius:12px;padding:0 14px}
  #mTextSlot .m-fonts{order:2;display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:10px -16px 0;padding:0 16px 2px}
  #mTextSlot .m-fonts::-webkit-scrollbar{display:none}
  .m-font{flex:none;min-height:44px;min-width:64px;padding:0 14px;border-radius:12px;border:1px solid var(--line-strong);background:rgba(255,255,255,.03);color:var(--ink);font-size:17px;white-space:nowrap}
  .m-font.on{border-color:var(--tq);background:var(--tq-soft)}
  #mTextSlot #textProps>label.mini:nth-of-type(4){order:3}
  #mTextSlot #textColors{order:4;gap:10px}
  #mTextSlot #hexRowText{order:4;margin-top:12px}   /* 9. 10. 2026: řádek s kódem barvy hned pod paletou (v DOM následuje za ní) */
  #mTextSlot #textProps>label.mini:nth-of-type(2){order:5}
  #mTextSlot #fontSize{order:6;height:44px;background:linear-gradient(var(--line-strong),var(--line-strong)) center/100% 4px no-repeat}
  #mTextSlot #textProps>.row{order:7;margin-top:6px}
  .m-sheet .swatches .sw,.m-sheet .swatches.sm .sw{width:44px;height:44px;border-radius:50%}
  .m-sheet .ic{width:44px;height:44px;font-size:19px}

  /* Varování o motivu mimo plochu (15. 9. 2026, po nezávislé kontrole): na mobilu leží přes plochu pod pilulkami stran,
     nad plátnem i nad pozadím otevřeného panelu. Zůstávalo v toku .stage-wrap, kde ho zakryla lišta stran (z-index 5) a
     absolutně umístěná plocha: zákazník ho neviděl a klepnutí na Vejít do plochy přepnulo stranu (O26-0511). */
  body.m-app #presahWarn{position:absolute;left:8px;right:8px;top:56px;z-index:91;margin:0;font-size:12px;background:#2c2a1f;box-shadow:0 6px 18px rgba(0,0,0,.35)}   /* plné pozadí: pod ním leží štítek plochy a plátno */
  body.m-app #presahWarn button{display:inline-flex;align-items:center;min-height:44px;margin:6px 0 0;padding:0 14px}
  /* obrázek */
  #mDpiSlot .dpi-warn{margin:0 0 6px;font-size:12.5px}
  #mDpiSlot .dpi-warn button{display:inline-flex;align-items:center;min-height:44px;margin:6px 0 0;padding:0 14px}
  /* akce nahoře: dlouhá hláška o rozlišení je dřív tlačila pod spodní hranu panelu */
  .m-pane[data-pane=obrazek]:not([hidden]){display:flex;flex-direction:column}
  .m-akce{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 8px;order:-1}
  .m-akce button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:60px;border-radius:12px;
    border:1px solid var(--line-strong);background:rgba(255,255,255,.03);color:var(--ink);font:600 11px/1.2 var(--font)}
  .m-akce button i{font-size:20px;color:var(--tq)}
  .m-akce button.danger i{color:var(--danger)}

  /* velikost, počet kusů a cena */
  #mVelSlot .grp{padding:4px 0 12px;border:0}
  #mVelSlot #sizeGrp>.lab{display:none}
  #mVelSlot .chips{grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:8px}
  #mVelSlot .chip{min-height:44px;font-size:15px;font-weight:700;border-radius:12px;color:var(--ink)}
  #mVelSlot .size-help{min-height:44px;padding:0;font-size:13px}
  #mVelSlot .size-jedna{font-size:15px;margin:0}   /* 25. 9. 2026: kšiltovka, věta o jedné velikosti v panelu Velikost */
  #mVelSlot .stepper .ic{width:52px;height:48px;font-size:20px}
  #mVelSlot .stepper input{height:48px;font-size:18px}
  #mVelSlot .price-grp{position:static;box-shadow:none;border-top:1px solid var(--line);border-radius:12px;padding:12px}
  #mVelSlot .bulk-hint button{min-height:44px}
  /* nevybraná velikost nesmí vypadat vybraně (state.size je jen výchozí hodnota pro cenu) */
  #mVelSlot #sizeChips.nevybrano .chip.on{border-color:var(--line);background:none}
  #mVelSlot #sizeChips.need .chip{animation:needPulse 1.1s ease 2}
  .m-vel-hint{display:flex;align-items:center;gap:8px;margin:2px 0 4px;color:var(--lime);font-weight:700;font-size:.92rem}
  .m-vel-hint[hidden]{display:none}
  /* 26. 9. 2026 (dávka editor-drobnosti, bod 1, EU 1007/2011): materiál a praní na telefonu jako nenápadný rozbalovací řádek
     v rolovaném těle panelu Produkt (pod modely) a Velikost (na konci). PROČ: složení bylo jen v levém panelu počítače; řádek
     v těle panelu nezakryje velikosti ani patičku s Do košíku. Klepací plocha 44 px, šipka jako u Dalších modelů. */
  .m-spec{margin:14px 0 0;border-top:1px solid var(--line);font-size:12.5px;line-height:1.5;color:var(--muted-2)}
  .m-spec[hidden]{display:none}
  .m-spec>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;cursor:pointer;list-style:none;
    color:var(--muted);font-weight:600;font-size:13px}
  .m-spec>summary::-webkit-details-marker{display:none}
  .m-spec>summary::after{content:'';flex:none;width:7px;height:7px;margin-right:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;
    transform:translateY(-2px) rotate(45deg);transition:transform .2s}
  .m-spec[open]>summary::after{transform:translateY(2px) rotate(-135deg)}
  .m-spec-text{margin:0 0 10px}
  .m-spec-text span{display:block;color:var(--ink)}
  .m-spec-text em{display:block;font-style:normal;color:var(--muted);margin-top:4px}

  /* prvek: barva a akce přesunuté z pravého panelu */
  #mPrvekSlot .grp{padding:0 0 10px;border:0}
  #mPrvekSlot .lab{margin:0 0 8px}
  #mPrvekSlot #objActions{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:4px 0 0}
  #mPrvekSlot #objActions[hidden]{display:none}
  #mPrvekSlot #objActions .ic{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:auto;height:auto;min-height:60px;
    border-radius:12px;border:1px solid var(--line-strong);background:rgba(255,255,255,.03);color:var(--ink);font-size:20px}
  #mPrvekSlot #objActions .ic i{color:var(--tq)}
  #mPrvekSlot #objActions .ic.danger i{color:var(--danger)}
  #mPrvekSlot #objActions .ic::after{content:attr(title);font:600 11px/1.2 var(--font);text-align:center}

  /* nabídka uložení jako obsah panelu: křížek i nadpis má panel sám */
  #mUlozSlot .uloz-karta{position:static!important;left:auto;right:auto;max-width:none;margin:0;padding:0;border:0;background:none;box-shadow:none;border-radius:0}
  #mUlozSlot .uloz-karta:not([hidden]){display:block!important}
  #mUlozSlot .uk-zavrit,#mUlozSlot .uk-text b{display:none}

  /* košík po přidání */
  .m-kos{display:flex;align-items:center;gap:12px}
  .m-kos img{width:64px;height:64px;object-fit:cover;border-radius:12px;background:#eceeea;flex:none}
  .m-kos-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
  .m-kos-info b{font-size:.95rem}
  .m-kos-info span{font-size:.82rem;color:var(--muted)}
  .m-kos-cena{font-size:1.05rem;color:var(--lime);white-space:nowrap}
  .m-kos-celkem{margin:12px 0 2px;font-size:.88rem;color:var(--muted)}
  .m-kos-celkem b{color:var(--ink)}
  /* 26. 9. 2026 (A6): řádek dopravy pod součtem košíku; .ok = doprava zdarma */
  .m-kos-doprava{margin:0 0 4px;font-size:.82rem;color:var(--muted);line-height:1.4}
  .m-kos-doprava:empty{display:none}
  .m-kos-doprava b{color:var(--ink)}
  .m-kos-doprava.ok{color:var(--lime);font-weight:700;display:flex;gap:6px;align-items:center}
  .m-kos-doprava .shipbar{max-width:260px}

  /* galerie motivů jako celoobrazovkový list: motivy hned nahoře */
  #galleryModal{padding:0;align-items:flex-end;background:rgba(6,10,8,.45);-webkit-backdrop-filter:none;backdrop-filter:none}
  #galleryModal .modal{display:flex;flex-direction:column;max-width:none;max-height:none;height:calc(100dvh - 36px - env(safe-area-inset-top,0px));
    border-radius:20px 20px 0 0;padding:8px 14px calc(10px + env(safe-area-inset-bottom,0px));overflow:hidden}
  #galleryModal .m-jen-uchyt{display:block;flex:none;margin:0 auto 6px}
  #galleryModal h2{font-size:1.05rem;margin:0 0 8px;line-height:30px}
  #galleryModal .modal-sub{display:none}
  #galleryModal .modal-x{top:6px;right:6px;width:44px;height:44px;border:0;background:none}
  #galleryModal .gtabs{flex:none;gap:6px;margin-bottom:8px}
  #galleryModal .gtab{min-height:44px;padding:4px 6px;font-size:12px}
  #gpaneMotif:not([hidden]){display:flex!important;flex-direction:column;flex:1;min-height:0}
  #galleryModal .mcats{flex:none;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -14px 8px;padding:0 14px}
  #galleryModal .mcats::-webkit-scrollbar{display:none}
  #galleryModal .mcat{flex:none;min-height:44px;min-width:44px;text-align:center;white-space:nowrap}
  #galleryModal .mgrid{flex:1;min-height:0;max-height:none;grid-template-columns:repeat(3,1fr);align-content:start;overscroll-behavior:contain}
  #galleryModal .gpane{flex:1;min-height:0;max-height:none;align-content:start;overscroll-behavior:contain}
  /* 26. 9. 2026 (A2): patička galerie („Hotovo, vybrat velikost" s cenou) pod mřížkou motivů, přes celou šířku listu */
  #galleryModal .g-hotovo:not([hidden]){display:block;flex:none;margin:8px -14px 0;padding:8px 14px 0;border-top:1px solid var(--line);background:var(--panel)}

  /* ostatní okna a plovoucí prvky nesmí překrýt dok */
  .modal-x{width:44px;height:44px}
  /* hláška jen informuje: nesmí chytat klepnutí určená pilulkám stran nebo pozadí panelu */
  /* 17. 9. 2026 (ED-21): left:50% nechal dlouhé hlášce jen polovinu šířky a zaoblení 999px ořezávalo první a poslední řádek */
  .toast{bottom:calc(var(--m-dock-h,132px) + 10px);z-index:95;text-align:center;pointer-events:none;
    left:12px;right:12px;transform:none;margin:0 auto;width:fit-content;max-width:none;border-radius:14px}
  body.m-sheet-on .toast{bottom:auto;top:calc(58px + env(safe-area-inset-top,0px))}
  .uloz-karta{bottom:calc(var(--m-dock-h,132px) + 10px)!important;z-index:50}
  .uk-zavrit{min-width:44px;min-height:44px}
  /* karta s nabídkou uložení a odchodové okno: pole, tlačítko i odkaz na zpracování údajů musí jít trefit prstem */
  .uk-radek input,.uk-radek .btn{min-height:44px}
  .uk-pozn a{display:inline-block;padding:15px 0;margin:-15px 0}
  /* nad otevřeným panelem nesmí vykukovat karta s nabídkou uložení, vždy jen jedna vrstva */
  body.m-sheet-on .uloz-karta{display:none!important}
  .m-sheet a.btn{text-decoration:none}
  /* lišta zámku cizího návrhu: pod pilulkami stran, jako obdélník (kulatý rámeček se na úzkém displeji zalomil do kruhu) */
  #lockBar{top:calc(110px + env(safe-area-inset-top,0px))!important;left:8px!important;right:8px!important;transform:none!important;
    border-radius:16px!important;flex-wrap:wrap;justify-content:center;text-align:center;padding:10px 12px!important}
  #lockBar button{min-height:44px}
}
/* 16. 9. 2026: okno Tisk by byl rozmazany (tri cesty pod sebou, na telefonu na celou sirku) */
.btns-svisle{display:flex;flex-direction:column;gap:8px;margin-top:4px}
/* 17. 9. 2026 (ED-11): delší anglický text tlačítka přetékal přes okraj, smí se zalomit */
.btns-svisle .btn{justify-content:center;min-height:44px;white-space:normal;text-align:center}
/* 17. 9. 2026 (kontrola, ED-20): ikony, které podmnožina písma tabler-pz.woff2 nemá (dlaždice mikin, kšiltovek, tašek,
   zástěry a hrnku, šablony, oko ve vrstvách). Místo prázdného čtverce se vykreslí jako maska v barvě textu. */
.ti-file-plus:before,.ti-hanger:before,.ti-hat:before,.ti-shopping-bag:before,.ti-tools-kitchen-2:before,.ti-coffee:before,.ti-shield:before,.ti-quote:before,.ti-calendar:before,.ti-music:before,.ti-eye:before,.ti-eye-off:before,.ti-arrow-right:before{content:"";display:inline-block;width:1em;height:1em;vertical-align:-.125em;background:currentColor;-webkit-mask:var(--ti-m) center/contain no-repeat;mask:var(--ti-m) center/contain no-repeat}
/* 17. 9. 2026 (nezávislá kontrola, CZ-06): Nový návrh měl stejné holé plus jako Přiblížit a Více kusů, protože
   podmnožina písma ikonu ti-file-plus nemá. Kreslí se proto maskou stejně jako ostatní chybějící ikony. */
.ti-file-plus{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4'/%3E%3Cpath d='M17 21H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7l5 5v11a2 2 0 0 1-2 2z'/%3E%3Cpath d='M12 11v6M9 14h6'/%3E%3C/svg%3E")}
.ti-hanger{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6a3 3 0 1 1 3 3v1.5L3.6 16.8A1.6 1.6 0 0 0 4.6 19.7h14.8a1.6 1.6 0 0 0 1-2.9L12 10.5'/%3E%3C/svg%3E")}
.ti-hat{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 17h13c3 0 5-1 5-2.5M5 17a7 7 0 1 1 14 0M12 7V5'/%3E%3C/svg%3E")}
.ti-shopping-bag{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.3 8h11.4a1 1 0 0 1 1 .9l1 10a1 1 0 0 1-1 1.1H5.3a1 1 0 0 1-1-1.1l1-10a1 1 0 0 1 1-.9zM9 11V6a3 3 0 0 1 6 0v5'/%3E%3C/svg%3E")}
.ti-tools-kitchen-2{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 3v2a3 3 0 0 0 6 0V3M9 5L5 8M15 5l4 3M7 9h10l-1 12H8z'/%3E%3C/svg%3E")}
.ti-coffee{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9h12v5a5 5 0 0 1-5 5H9a5 5 0 0 1-5-5zM16 11h1.5a2.5 2.5 0 0 1 0 5H16M8 3v3M12 3v3'/%3E%3C/svg%3E")}
.ti-shield{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z'/%3E%3C/svg%3E")}
.ti-quote{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 7H5v6h4v1a3 3 0 0 1-3 3M19 7h-5v6h4v1a3 3 0 0 1-3 3'/%3E%3C/svg%3E")}
.ti-calendar{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5h14a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zM16 3v4M8 3v4M4 11h16'/%3E%3C/svg%3E")}
.ti-music{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 17V5l10-2v12M9 17a3 3 0 1 1-6 0 3 3 0 0 1 6 0zM19 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0z'/%3E%3C/svg%3E")}
.ti-eye{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12zM12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z'/%3E%3C/svg%3E")}
.ti-eye-off{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3l18 18M10.6 10.6a3 3 0 0 0 4.2 4.2M9.4 5.4A10 10 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-3 3.8M6.6 6.6C3.8 8.4 2 12 2 12s3.5 7 10 7a9.6 9.6 0 0 0 5.4-1.6'/%3E%3C/svg%3E")}
.ti-arrow-right{--ti-m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E")}

/* ---- ODSTRANĚNÍ POZADÍ (21. 9. 2026) ----
   Okno s náhledem před a po. Šachovnice za výsledkem je jediný způsob, jak zákazník na tmavém rozhraní pozná,
   co je průhledné a co je bílé; bez ní by bílé logo na bílém pozadí vypadalo stejně jako odstraněné pozadí. */
.pozadi-modal{max-width:560px}
.pozadi-nahledy{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 4px}
.pozadi-nahledy figure{margin:0}
.pozadi-nahledy figcaption{font-size:11.5px;color:var(--muted-2);text-transform:uppercase;letter-spacing:.06em;margin:0 0 5px}
/* 21. 9. 2026 (kontrola UX-4): na monitoru 1366 × 768 (okno kolem 650 px) se okno s varováním nevešlo a tlačítka
   „Poslat k posouzení" i „Zrušit" spadla pod okraj. Zákazník, kterému editor právě řekl, že to neumí, pak viděl
   jako jedinou možnost Použít. Náhledy proto mají pružnou výšku podle okna a spodní tlačítka drží u dna okna. */
.pozadi-ramecek{display:flex;align-items:center;justify-content:center;height:min(180px,22vh);min-height:104px;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--stage);overflow:hidden}
.pozadi-modal .btns-svisle{position:sticky;bottom:0;padding:8px 0 2px;background:var(--panel)}
.pozadi-ramecek img,.pozadi-ramecek canvas{max-width:100%;max-height:100%;display:block;object-fit:contain}
.pozadi-ramecek.sachovnice{background-color:#f3f5f4;
  background-image:linear-gradient(45deg,#cfd6d3 25%,transparent 25%,transparent 75%,#cfd6d3 75%),
                   linear-gradient(45deg,#cfd6d3 25%,transparent 25%,transparent 75%,#cfd6d3 75%);
  background-size:16px 16px;background-position:0 0,8px 8px}
.pozadi-varovani{font-size:.88rem;line-height:1.5;color:#f0c9a8;background:rgba(224,143,127,.12);border:1px solid rgba(224,143,127,.3);
  border-radius:10px;padding:9px 11px;margin:0 0 12px}
.pozadi-prepinac{display:flex;align-items:center;gap:9px;margin:10px 0 0;font-size:.9rem;color:var(--ink);cursor:pointer}
.pozadi-prepinac input{width:18px;height:18px;accent-color:var(--tq);flex:none;cursor:pointer}
.pozadi-pozn{font-size:12px;line-height:1.45;color:var(--muted-2);margin:5px 0 14px}
/* skrytá tlačítka v panelu i v mobilní liště: pravidla s třídou by [hidden] přebila, proto výslovně */
.row .rbtn[hidden],.m-akce button[hidden]{display:none!important}
/* odznak „bez pozadí" ve vrstvách; u téhle vrstvy jde jméno na první řádek a odznaky pod něj (úzký panel) */
.layer .layer-txt{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px}
.layer .layer-txt .nm{max-width:100%}
.layer .layer-znacky{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.layer .bezpoz{font-style:normal;font-size:10px;font-weight:700;letter-spacing:.02em;padding:2px 6px;border-radius:999px;
  background:var(--tq-soft);color:var(--tq);border:1px solid rgba(116,204,216,.34);white-space:nowrap}
@media(max-width:900px){
  /* telefon: okno se musí vejít na výšku i s klávesnicí zavřenou, náhledy proto nižší a menší odsazení */
  .pozadi-modal{padding:18px 16px 16px;max-height:calc(100dvh - 40px)}
  .pozadi-modal h2{font-size:1.2rem}
  .pozadi-modal .modal-sub{font-size:.85rem;margin-bottom:12px}
  .pozadi-ramecek{height:24vh;max-height:180px}
  #pozadiModal .m-jen-uchyt{display:block;flex:none;margin:0 auto 6px}   /* úchyt pro zavření tahem dolů */
  #pozadiModal .modal-x{top:6px;right:6px;width:44px;height:44px;border:0;background:none}
  .pozadi-pozn{margin-bottom:10px}
  /* pátý a šestý nástroj v panelu Obrázek: mřížka je čtyřsloupcová, tahle dvojice se zalomí na druhý řádek */
  .m-akce{grid-template-columns:repeat(4,1fr)}
  .m-akce button{font-size:10.5px;line-height:1.15}
}

/* ================= NOVÝ VÝBĚR PRODUKTU A LIŠTA POD HLAVIČKOU (25. 9. 2026) =================
   Adam schválil maketu (navody/zbytek-2026-09-25/podklady/gen.py): na počítači barva, velikost, počet kusů, cena a Do košíku
   v liště pod hlavičkou, levý panel jen výběr produktu (6 typů 3 × 2, nejvýš 3 modely s důvodem a rozdílem ceny, Další modely).
   Na mobilu lišta není, nad záložkami je shrnutí s cenou a Do košíku a panel Produkt ukazuje stejný výběr. Barvy jen z :root. */
.konfig{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px;min-height:76px;padding:8px 20px;
  border-bottom:1px solid var(--line);background:#1a241e;position:relative;z-index:20}
.konfig .kl-cast{padding:0;border:0;display:flex;flex-direction:column;gap:7px;min-width:0}
.konfig .lab{margin:0;font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--muted-2);line-height:14px;white-space:nowrap}
.konfig .kl-hodnota{color:var(--ink);letter-spacing:0;text-transform:none;font-weight:600}
.kl-oddel{width:1px;align-self:stretch;margin:6px 0;background:var(--line)}
#sizeGrp[hidden]+.kl-oddel{display:none}
.konfig .swatches{gap:8px;flex-wrap:nowrap}
.konfig .sw{width:26px;height:26px}
/* velikost: nadpis a Tabulka velikostí na jednom řádku, pilulky pod nimi (vnitřek #sizeGrp je stejný jako na mobilu, proto
   odkaz na tabulku leží v řádku nadpisu absolutně; mřížka se spojenými sloupci se ve WebKitu nerozšířila podle pilulek) */
#konfigLista #sizeGrp{position:relative;min-width:236px;padding:4px 6px;margin:-4px -6px;border-radius:9px}
#konfigLista #sizeHelpBtn{position:absolute;top:4px;right:6px;padding:0;font-size:12px;line-height:14px}
#konfigLista #sizeChips{display:flex;gap:5px}
#konfigLista #sizeJedna{max-width:280px;margin:0;font-size:12.5px;line-height:1.35;color:var(--ink)}
#konfigLista .chip{min-width:40px;height:30px;padding:0 8px;border-radius:7px;border:1px solid var(--line-strong);background:none;
  color:var(--ink);font-size:12.5px;font-weight:700}
#konfigLista .chip:hover{border-color:var(--tq)}
#konfigLista .chip.on{background:var(--tq);border-color:var(--tq);color:var(--on-acc)}
/* nevybraná velikost nesmí vypadat vybraně ani na počítači (state.size je jen výchozí hodnota pro cenu), stejně jako na mobilu */
#konfigLista #sizeChips.nevybrano .chip.on{background:none;border-color:var(--line-strong);color:var(--ink)}
/* 26. 9. 2026 (plán růstu A4 b): okénko s velikostmi pod #sizeGrp po klepnutí na Do košíku bez velikosti (editor.js velOknoUkaz);
   leží v #konfigLista (position:relative), šipka míří na skupinu velikostí. Pilulky dědí vzhled lišty (#konfigLista .chip). */
.vel-okno{position:absolute;z-index:45;min-width:236px;max-width:360px;padding:12px 44px 12px 14px;background:var(--panel);border:1px solid var(--tq);
  border-radius:12px;box-shadow:0 18px 50px rgba(0,0,0,.55)}
.vel-okno::before{content:"";position:absolute;top:-7px;left:28px;width:12px;height:12px;background:var(--panel);border-left:1px solid var(--tq);border-top:1px solid var(--tq);transform:rotate(45deg)}
.vel-okno[hidden]{display:none}
.vel-okno-text{margin:0 0 8px;font-size:13px;font-weight:700;color:var(--lime)}
.vel-okno-chips{display:flex;flex-wrap:wrap;gap:6px}
.vel-okno .chip{min-width:44px;height:34px;padding:0 10px;font-size:13px}
.vel-okno-x{position:absolute;top:4px;right:4px;width:36px;height:36px;border:0;border-radius:10px;background:none;color:var(--muted);font-size:20px;line-height:1;cursor:pointer}
.vel-okno-x:hover{color:var(--ink);background:rgba(255,255,255,.06)}
@media(max-width:900px){.vel-okno{display:none!important}}
/* počet kusů: kompaktní − 1 +, vedle nejbližší levnější pásmo */
#konfigLista #qtyGrp{display:grid;grid-template-columns:auto auto;grid-template-areas:"lab lab" "krok pasmo";column-gap:8px;row-gap:7px;align-items:center}
#konfigLista #qtyGrp>.lab{grid-area:lab}
#konfigLista .stepper{grid-area:krok;gap:0;height:30px;border:1px solid var(--line-strong);border-radius:8px}
#konfigLista .stepper .ic{width:32px;height:28px;border:0;border-radius:7px;background:none;color:var(--ink);font-size:14px}
#konfigLista .stepper .ic:hover{background:var(--tq-soft)}
#konfigLista .stepper input{flex:none;width:42px;height:28px;border:0;border-radius:0;background:none;font-size:14px;font-weight:700;padding:0;-moz-appearance:textfield}
.kl-pasmo{grid-area:pasmo;margin:0;max-width:78px;font-size:10.5px;line-height:1.25;color:var(--lime);font-weight:600}
.kl-cena{margin-left:auto;position:relative;flex:none}
.kl-cena-btn{display:flex;flex-direction:column;align-items:flex-end;gap:1px;background:none;border:0;border-radius:9px;color:var(--ink);padding:4px 6px;text-align:right}
.kl-cena-btn:hover{background:rgba(255,255,255,.04)}
.kl-cena-hl{font-size:22px;font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums;white-space:nowrap}
#cenaOd,.kl-cena-j{font-size:13px;font-weight:600;color:var(--muted)}
.kl-cena-pod{font-size:11.5px;color:var(--muted);white-space:nowrap}
@media(max-width:1180px){ .kl-cena-pod>#cenaPod,.kl-cena-pod>.kl-tecka{display:none} }
.kl-cena-pod u{text-decoration-color:rgba(166,184,177,.55);text-underline-offset:2px}
.kl-cena-btn[aria-expanded=true] .kl-cena-pod u{color:var(--tq)}
#buyBtn.kl-kosik{flex:none;height:46px;padding:0 24px;border-radius:10px;font-size:15px;font-weight:800;justify-content:center}
/* rozpis ceny pod tlačítkem s cenou; #priceBox je tentýž uzel jako dřív v levém panelu */
.cena-pop{position:absolute;right:0;top:calc(100% + 10px);width:340px;max-height:calc(100vh - 170px);overflow:auto;z-index:40;
  background:var(--panel);border:1px solid var(--line-strong);border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.55);scrollbar-width:thin}
.cena-pop::-webkit-scrollbar{width:8px}
.cena-pop::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:8px}
.cena-pop .price-grp{position:static;box-shadow:none;border:0;background:none;padding:14px 16px}
.price-od{font-size:15px;font-weight:700;color:var(--tq);margin-right:4px}
.price-head{flex-wrap:wrap}

/* levý panel: jen výběr produktu */
.panel-left{width:300px;display:flex;flex-direction:column;padding:14px 16px 12px}
/* 25. 9. 2026 večer (nezávislá kontrola, nález 3): děti panelu se nesmršťují. H1 má overflow:hidden, takže jeho nejmenší výška
   ve flexu je 0 a při obsahu vyšším než panel ho flex smrštil na 0 px (1024 až 1366 px nadpis nebyl vidět, na 1440 po rozbalení
   Dalších modelů zmizel a výběr poskočil). Posuvník panelu i margin-top:auto u .vyber-detail fungují dál. */
.panel-left>*{flex-shrink:0}
.panel-left .edi-h1{font-size:13px;line-height:1.35;margin:0 0 12px;color:var(--muted);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.panel-left .vyber-grp{padding:0;border:0;border-radius:10px}
.panel-left .vyber-grp>.lab{margin-bottom:8px;font-weight:700}
.panel-left .edi-lead{font-size:11.5px;line-height:1.5;margin:10px 0 0;color:var(--muted-2)}
.vyber{display:flex;flex-direction:column;gap:10px}
.vyber-typy{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.vyber-typ{position:relative;min-width:0;height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:0 4px;
  border-radius:9px;border:1px solid var(--line-strong);background:transparent;color:var(--muted)}
.vyber-typ b{max-width:100%;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vyber-typ>span:not(.sr-jen){font-size:11px;color:var(--muted-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.vyber-typ:hover{color:var(--ink);border-color:rgba(255,255,255,.32)}
.vyber-typ[aria-selected=true]{background:var(--tq-soft);border-color:var(--tq);color:var(--ink)}
/* 25. 9. 2026 večer (nález 7): cena ve vybrané záložce světlejší, #7f918a na složeném pozadí #273c38 měla jen 3,5 : 1,
   #a6b8b1 má 5,6 : 1 (WCAG AA pro 11 px chce 4,5 : 1) */
.vyber-typ[aria-selected=true]>span:not(.sr-jen){color:var(--muted)}
/* tečka u typu, ve kterém je vybraný produkt, když si zákazník prohlíží jiný typ */
.typ-tecka{display:none;position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;background:var(--tq)}
.vyber-typ.ma-vybrany[aria-selected=false] .typ-tecka{display:block}
.sr-jen{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.typ-popis{margin:0;font-size:12px;line-height:1.45;color:var(--muted)}
.vyber-panel{display:flex;flex-direction:column;gap:10px}
.modely{display:flex;flex-direction:column;gap:8px}
.modely-dalsi{gap:6px}
.model,.vyber-vybrany{display:flex;align-items:center;gap:12px;width:100%;min-width:0;padding:8px 10px 8px 8px;border-radius:10px;
  border:1px solid var(--line);background:var(--panel-2);color:var(--ink);text-align:left;font-family:inherit}
.model:hover{border-color:rgba(255,255,255,.3)}
.model[aria-pressed=true]{background:var(--tq-soft);border-color:var(--tq)}
.vyber-vybrany{border-color:var(--tq);background:var(--tq-soft)}
.vyber-vybrany.skryty{border-color:#e0c074;background:rgba(224,192,116,.1)}
.vyber-vybrany.skryty .md-duvod{color:#e0c074}
.md-foto{flex:none;width:54px;height:72px;border-radius:8px;overflow:hidden;background:#dfe3df;display:flex}
.md-foto img{display:block;width:100%;height:100%;object-fit:cover}
.md-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.md-uroven{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--lime);line-height:1.3}
.md-nazev{font-size:14px;font-weight:700;line-height:1.25}
.md-duvod{font-size:12px;line-height:1.35;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.md-cena{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.md-kc{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.md-rozdil:empty{display:none}   /* 28. 9. 2026: rozdíl +/− Kč zrušen, zůstává jen „vybráno" */
.md-rozdil{font-size:11px;font-weight:600;color:var(--muted);white-space:nowrap}
/* 26. 9. 2026 (cenový model B): na kartě modelu bez motivu i cena samotného trička („bez potisku 135 Kč") */
.md-bez{font-size:11px;font-weight:600;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
/* 26. 9. 2026: v úzkém levém panelu na počítači se „bez potisku 135 Kč" zalomí do dvou řádků („bez potisku" / „135 Kč"). PROČ: na jednom
   řádku sloupec cen zúžil názvy modelů a „Klasické 165 g" i „Prémiové 195 g" se zalomily, výběr byl o 42 px vyšší (sonda 1024 až 1440 px).
   Anglicky („without print" / „135 CZK") je sloupec stejně široký jako „from 380 CZK". Telefon (#mProdGrid) má místo, zůstává jeden řádek. */
#prodGrid .md-bez{white-space:normal;max-width:66px;text-align:right;line-height:1.2}
html[lang=en] #prodGrid .md-bez{max-width:80px}
.md-rozdil.vybrano{color:var(--tq)}
.md-rozdil.drazsi{color:var(--lime)}
.model-maly{padding:6px 10px 6px 6px}
.model-maly .md-foto{width:36px;height:46px;border-radius:6px}
.model-maly .md-nazev{font-size:13px}
.dalsi-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:40px;border-radius:9px;border:1px dashed var(--line-strong);
  background:transparent;color:var(--muted);font-size:13px;font-weight:600}
.dalsi-btn:hover{color:var(--ink);border-color:var(--tq)}
.dalsi-sipka{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s}
.dalsi-btn[aria-expanded=true] .dalsi-sipka{transform:translateY(2px) rotate(-135deg)}
.vyber-detail{margin-top:auto;padding-top:10px;border-top:1px solid var(--line);font-size:11.5px;line-height:1.5;color:var(--muted-2)}
.vyber-detail>summary{cursor:pointer;list-style:none}
.vyber-detail>summary::-webkit-details-marker{display:none}
.vyber-detail>summary:hover{color:var(--muted)}
.vyber-detail .prod-spec{margin-top:6px}
.vyber-typ:focus-visible,.model:focus-visible,.dalsi-btn:focus-visible,.kl-cena-btn:focus-visible,.konfig .sw:focus-visible,
.konfig .chip:focus-visible,.vyber-detail>summary:focus-visible,.m-shrn-info:focus-visible{outline:2px solid var(--tq);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.dalsi-sipka{transition:none}}
@media(min-width:1400px){.panel-left{width:330px}}
/* užší počítač: menší prvky lišty, lišta se v nouzi zalomí do dvou řádků (flex-wrap), nikdy nepřeteče */
@media(max-width:1280px){
  .konfig{gap:8px 16px;padding:8px 14px}
  .kl-pasmo{display:none}
}
@media(max-width:1180px){
  .panel-left{width:260px;padding:12px}
  .md-foto{width:46px;height:62px}
  .model{gap:9px}
  .konfig .sw{width:22px;height:22px}
  .konfig .swatches{gap:6px}
  #konfigLista .chip{min-width:32px;padding:0 5px}
  .kl-cena-hl{font-size:18px}
  #buyBtn.kl-kosik{padding:0 16px;font-size:14px}
}
/* 25. 9. 2026 večer (nález 4): panel zůstává do 901 px široký 260 px (dřív 240 px). Záložka měla jen 68 px a přetékala:
   „Kšiltov…", „Wome…" a „from 415 CZK" přes rámeček (iPad na šířku, notebook 1024). Při 260 px má 74 px jako do 1180 px. */
/* 25. 9. 2026 v noci (druhé kolo kontroly): přepínač stran nad plátnem se na 1000 až 1050 px nezalomí (plátno o 48 px užší
   kvůli levému panelu 260 px); menší vodorovný padding a mezery lišty. Pod 1000 px se smí zalomit jako dřív na produkci.
   Třetí kolo: jen pro počítač (od 901 px). Pravidlo stojí za mobilním blokem a na telefonu přebilo plovoucí přepínač
   (o 9 px níž, užší tlačítka, skoro na štítku max. potisk). */
@media(min-width:901px) and (max-width:1050px){
  .vt{padding:6px 10px}
  .stage-toolbar{gap:6px;padding:9px 12px}
}
@media(max-width:1050px){
  .md-foto{width:40px;height:54px}
  .model{gap:8px;padding:6px 8px 6px 6px}
  .md-nazev{font-size:13px}
  .md-duvod{font-size:11.5px}
  .md-kc{font-size:13px}
  .kl-oddel{display:none}
  .konfig{gap:8px 14px}
}

@media(max-width:900px){
  .konfig{display:none!important}
  /* panel Produkt: výběr je samostatný krok, smí zakrýt víc plátna; klepnutí na kartu panel zavře */
  body[data-mpane=produkt] .m-sheet{max-height:84vh;max-height:84dvh}
  #mProdGrid .vyber-typy{position:sticky;top:-4px;z-index:1;margin-top:-4px;padding:4px 0 8px;background:var(--panel)}
  /* 26. 9. 2026 (Adam B4, mikiny jako 7. typ): 7 nebo 8 záložek na telefonu ve 4 sloupcích (4 + 3), ne 3 + 3 + 1; na 375 px má
     sloupec 80 px, „Kšiltovky" i „Mikiny" se vejdou. Na počítači zůstávají 3 sloupce (panel 260 až 330 px). */
  #mProdGrid .vyber-typy[data-typu="7"],#mProdGrid .vyber-typy[data-typu="8"]{grid-template-columns:repeat(4,minmax(0,1fr))}
  #mProdGrid .vyber-typ{height:50px}
  #mProdGrid .vyber-typ b{font-size:13.5px}
  #mProdGrid .md-foto{width:48px;height:64px}
  #mProdGrid .md-nazev{font-size:15px}
  #mProdGrid .model{min-height:48px}
  #mProdGrid .model-maly .md-foto{width:36px;height:46px}
  #mProdGrid .dalsi-btn{height:44px}
  #mVelSlot #qtyPasmo{display:none}
  /* shrnutí nad záložkami: co je vybrané, cena za kus a Do košíku */
  .m-shrn{display:flex;align-items:center;gap:8px;padding:0 0 6px}
  .m-shrn-info{flex:1 1 auto;min-width:0;min-height:48px;display:flex;align-items:center;gap:10px;border:0;background:none;padding:0;color:var(--ink);text-align:left;font-family:inherit}
  .m-shrn-foto{flex:none;width:38px;height:50px;border-radius:6px;overflow:hidden;background:#dfe3df;display:flex}
  .m-shrn-foto img{display:block;width:100%;height:100%;object-fit:cover}
  .m-shrn-text{min-width:0;display:flex;flex-direction:column;gap:1px}
  /* 25. 9. 2026 večer (nález 8): název smí na dva řádky. Na jednom se na iPhonu (95 až 116 px) usekla právě gramáž nebo
     rozlišující slovo („Dámské prém…", „Women's Ever…"). Číslo s jednotkou drží pohromadě .nezlom (nazevHtml). */
  .m-shrn-text b{font-size:14px;font-weight:700;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;overflow-wrap:anywhere}
  /* barva · velikost · kusy · Změnit smí na dva řádky (dlouhý anglický text), nic se neusekne v půlce slova */
  .m-shrn-detail{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:12px;line-height:1.3;color:var(--muted)}
  .m-shrn-zmenit{white-space:nowrap;color:var(--tq);font-weight:600}
  .m-shrn-cena{flex:none;display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}
  .m-shrn-cena b{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
  .m-shrn-cena .m-od{font-size:11px;font-weight:600;color:var(--muted)}
  .m-shrn-cena small{font-size:10.5px;color:var(--muted);white-space:nowrap}
  .m-shrn .m-buy{flex:none;width:auto;min-width:104px;min-height:48px;padding:0 12px;border-radius:12px;justify-content:center;
    background:var(--tq);color:var(--on-acc);font-size:.92rem;box-shadow:none}
  .m-shrn .m-buy-t i{display:none}   /* jako v maketě jen text, jméno produktu potřebuje místo */
}
/* 25. 9. 2026 večer (nález 8): užší iPhony (375 až 400 px): název 13 px, „za kus s potiskem" se smí zalomit pod cenu (sloupec
   ceny je jen tak široký jako cena) a menší mezery. Název se tak vejde na dva řádky celý, česky i anglicky („Lehce vypasované
   180 g", „Women's premium 195 g"); Do košíku zůstává stejně široké. */
@media(max-width:400px){
  .m-shrn{gap:6px}
  .m-shrn-info{gap:8px}
  .m-shrn-text b{font-size:13px}
  .m-shrn-cena{width:min-content}
  .m-shrn-cena small{white-space:normal;text-align:right}
}
@media(max-width:360px){ .m-shrn-cena small{display:none} .m-shrn{gap:8px} }
/* 25. 9. 2026 večer (nález 6): telefon na šířku (výška okna do 430 px): záložky typů v jednom řádku po šesti, dvouřádkové
   přilepené záložky zabraly 118 z 233 px panelu a byla vidět jen jedna karta */
@media(max-width:900px) and (max-height:430px){
  /* 26. 9. 2026 (dávka editor-drobnosti, bod 7): na šířku patička „Hotovo, vybrat velikost" / Do košíku nižší (tlačítko 44 px,
     menší odsazení), dřív zabrala 75 z 203 px panelu a z obsahu byl vidět jen proužek; klepací plocha 44 px zůstává */
  .m-sheet-foot{padding:4px 16px 5px}
  .m-sheet-foot .m-buy{min-height:44px;border-radius:12px}
  #mProdGrid .vyber-typy{grid-template-columns:repeat(6,minmax(0,1fr))}
  #mProdGrid .vyber-typy[data-typu="7"]{grid-template-columns:repeat(7,minmax(0,1fr))}   /* 26. 9. 2026 (B4): 7 typů v jednom řádku */
  #mProdGrid .vyber-typy[data-typu="8"]{grid-template-columns:repeat(8,minmax(0,1fr))}
  #mProdGrid .vyber-typ{height:44px}
}
/* 25. 9. 2026 večer (nález 2): patička levého panelu (#vyberPata) s nápovědou k množstevní slevě, termínem doručení a boxem
   pro firmy. Přilepená u spodního okraje panelu jako dřív cenový box, takže je vidět bez rozpisu ceny i při posunutém výběru
   (obsah panelu pod ní jen proteče, na konci posuvníku leží pod perexem). Záporné okraje a bottom ruší vnitřní okraj panelu. */
.vyber-pata{position:sticky;bottom:-12px;z-index:2;display:flex;flex-direction:column;gap:7px;margin:10px -16px -12px;padding:10px 16px 12px;
  background:var(--panel);border-top:1px solid var(--line-strong);box-shadow:0 -10px 24px -12px rgba(0,0,0,.7)}
.vyber-pata .qty-hint{margin:0;font-size:12px;line-height:1.4}
.vyber-pata .delivery{margin:0;font-size:12px;line-height:1.35}
.vyber-pata .bulk-hint{margin:0}
/* 25. 9. 2026 v noci (třetí kolo kontroly): box pro firmy v patičce sevřenější (od 20 ks patička kryje méně výběru), text zůstává
   celý; na nízkém okně ještě menší písmo a tlačítko vedle nadpisu */
.vyber-pata .bulk-hint{padding:9px 11px;gap:3px}
.vyber-pata .bulk-hint span{font-size:11px;line-height:1.4}
.vyber-pata .bulk-hint button{margin-top:3px;padding:5px 12px}
@media(max-height:820px){
  .vyber-pata .bulk-hint{display:grid;grid-template-columns:1fr auto;column-gap:8px;row-gap:2px;align-items:center}
  .vyber-pata .bulk-hint b{grid-column:1}
  .vyber-pata .bulk-hint button{grid-column:2;grid-row:1;margin:0;padding:4px 10px;font-size:11.5px}
  .vyber-pata .bulk-hint span{grid-column:1 / -1;font-size:10.5px;line-height:1.35}
}
@media(max-width:1180px){ .vyber-pata{margin:10px -12px -12px;padding:10px 12px 12px} }
/* číslo s jednotkou v názvu modelu („205 g") se nezalomí, jednotka nezůstane sama na řádku (nález 4) */
.nezlom{white-space:nowrap}

/* 9. 10. 2026 (měřítko trička): štítek velikosti, na kterou se fotka přizpůsobila (editor.js pouzijMeritkoOdevu) */
.odev-vel{position:absolute;left:10px;bottom:8px;z-index:5;font:600 12px/1.3 var(--font);color:#28302c;background:rgba(255,255,255,.82);padding:3px 9px;border-radius:8px;pointer-events:none}
/* 9. 10. 2026 (Adam: „ty centimetry tam neukazuj"): štítek rozměru tiskové plochy nad rámečkem se zákazníkovi neukazuje (text v uzlu zůstává kvůli testům) */
#printMax{display:none!important}

/* 9. 10. 2026 (Adam, velká tlačítka u obrázku): Odstranit pozadí a Upravit kvalitu jsou první v panelu obrázku, přes celou šířku a větší než ostatní nástroje */
.img-velka{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
.rbtn.velke{padding:14px 14px;font-size:14px;font-weight:700;margin-bottom:0;background:rgba(116,204,216,.12);border-color:rgba(116,204,216,.45)}
.rbtn.velke i{font-size:20px}
.rbtn.velke:hover{background:rgba(116,204,216,.2)}
.rbtn.velke[hidden]{display:none}

/* 13. 10. 2026 (krok 1 redesignu editoru): velikosti a kusy v jednom okně. Matice #sizeMatrix je uvnitř #sizeGrp; pilulky a jeden počet kusů
   se schovají třídou html.pz-sm (nastavuje editor.js sqRender jen na počítači v novém vzhledu a na telefonu u produktů s víc velikostmi) */
html.pz-sm #sizeChips,html.pz-sm #qtyGrp,html.pz-sm #qtyHint{display:none!important}
.sm{display:block;width:100%}
.sm[hidden]{display:none}
.sm-radky{display:flex;flex-direction:column}
.sm-radek{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid var(--line)}
.sm-v{min-width:44px;font-size:15px;font-weight:700;color:var(--ink)}
.sm-radek.on .sm-v{color:var(--tq)}
.sm-krok{display:flex;align-items:center;height:36px;border:1px solid var(--line-strong);border-radius:9px;overflow:hidden}
.sm-krok button{width:36px;height:34px;padding:0;border:0;background:none;color:var(--ink);font-size:15px;cursor:pointer}
.sm-krok button:hover{background:var(--tq-soft)}
.sm-krok input{width:46px;height:34px;padding:0;border:0;border-radius:0;background:none;text-align:center;color:var(--ink);font:700 15px/1 inherit;font-family:inherit;-moz-appearance:textfield}
.sm-krok input::-webkit-outer-spin-button,.sm-krok input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.sm-radek.on .sm-krok input{background:var(--tq-soft)}
.sm-sum{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:12px}
.sm-sum-t{font-size:14px;font-weight:700;color:var(--ink)}
.sm-sum-c{font-size:22px;font-weight:800;color:var(--ink);white-space:nowrap;flex:none}   /* 13. 10. 2026: „420 Kč / ks“ se na úzkém sloupci lámalo do dvou řádků */
.sm-pasmo{margin:5px 0 0;font-size:12.5px;font-weight:600;line-height:1.35;color:var(--lime)}
.sm.need .sm-radek{animation:needPulse 1.1s ease 2}
@media (max-width:900px){
  #mVelSlot .sm-radky{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px}
  #mVelSlot .sm-radek{padding:7px 0;gap:6px}
  #mVelSlot .sm-v{min-width:34px;font-size:16px}
  #mVelSlot .sm-krok{flex:1;min-width:0;max-width:132px;height:46px;border-radius:12px;margin-left:auto}
  #mVelSlot .sm-krok button{flex:none;width:38px;height:44px;font-size:17px}
  #mVelSlot .sm-krok input{flex:1;min-width:24px;width:auto;height:44px;font-size:18px}
  #mVelSlot .sm-sum{margin-top:14px}
  #mVelSlot .sm-sum-c{font-size:24px}
}

/* 23. 10. 2026 (Adam, dávka D „bílé logo na šachovnici“): pod každým náhledem obrázku, který může být průhledný nebo bílý, je šachovnice.
   PROČ: bílé logo s průhledným pozadím nebylo na světlé ploše vidět. V okně Odstranit pozadí vypadal panel „Bez pozadí“ prázdný, protože dosavadní
   světlá šachovnice (#f3f5f4 a #cfd6d3) bílou kresbu pohltila, a „Původní obrázek“ ležel na prosté světlé ploše. Středně šedá dvojice dává kontrast
   bílé i černé kresbě (stejný důvod jako u příloh v administraci). Jen CSS pod náhledy: obrázek, uložený návrh, tisková data ani cena se nemění.
   Barvy jdou změnit proměnnými --sach-a a --sach-b; třída .pz-sach dá šachovnici kterémukoli dalšímu náhledu. Dlaždice Motivů mají dřív plnou tmavou
   (#2c3831) nebo světlou (#e9e7e0) barvu, tu přebíjí tahle šachovnice (stejně u vektorových i obrázkových motivů, ať je mřížka jednotná).
   Šachovnice je i pod náhledy potisku v okně Jména a čísla (#e04Dialog), které jsou průhledné PNG samotného motivu. */
:root{--sach-a:#848f8a;--sach-b:#a2aba6}
.pz-sach,
.pozadi-ramecek.sachovnice,.orez-obal.sachovnice,
.mcell img.mimg,.mcell.mcell-svetle img.mimg,.mcell svg,
#e04Dialog .e04-previews img,
.layer .layer-mini{
  background-color:var(--sach-b);
  background-image:repeating-conic-gradient(var(--sach-a) 0 25%,var(--sach-b) 0 50%);
  background-size:16px 16px;background-position:0 0}
.mcell img.mimg,.mcell svg,.layer .layer-mini{background-size:10px 10px}
/* dlaždice Motivů: kresba je většinou bílá (tiskne se na tmavý textil) a tenké nápisy by na středně šedé ztratily kontrast, proto tmavší dvojice; černá kresba je na ní pořád vidět */
.mcell{--sach-a:#5f6a64;--sach-b:#76817b}
/* miniatura nahraného obrázku ve Vrstvách (editor.js layerMini): malý čtverec na šachovnici místo ikony fotky */
.layer .layer-mini{flex:none;width:30px;height:30px;box-sizing:border-box;border:1px solid var(--line-strong);border-radius:6px;overflow:hidden;display:flex;align-items:center;justify-content:center}
.layer .layer-mini img{width:100%;height:100%;object-fit:contain;display:block}
