body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial}
.jd-cep-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:#111;color:#fff}
.jd-cep-actions{display:flex;gap:8px}
.jd-cep-btn{border:1px solid #444;background:#1a1a1a;color:#fff;padding:8px 10px;border-radius:8px;cursor:pointer}
.jd-cep-btn:hover{background:#222}
.jd-cep-primary{background:#2563eb;border-color:#2563eb}
.jd-cep-primary:hover{background:#1d4ed8}
.jd-cep-main{display:grid;grid-template-columns:320px 1fr;height:calc(100vh - 110px)}
.jd-cep-panel{padding:14px;border-right:1px solid #eee;background:#fafafa;overflow:visible}
.jd-cep-stage{display:flex;align-items:center;justify-content:center;background:#eaeaea;overflow:visible;position:relative;}
.jd-cep-canvas-wrap{background:#fff;border:1px solid #ccc;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.12);padding:10px;max-width:calc(100% - 40px);max-height:calc(100% - 40px);overflow:visible;position:relative;display:flex;align-items:center;justify-content:center;}
.jd-cep-block{background:#fff;border:1px solid #e5e5e5;border-radius:10px;padding:12px;margin-bottom:12px}
.jd-cep-block label{display:block;font-weight:700;margin-bottom:8px}
.jd-cep-row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.jd-cep-btn-sm{border:1px solid #ccc;background:#fff;padding:6px 10px;border-radius:8px;cursor:pointer}
.jd-cep-btn-sm:hover{background:#f2f2f2}
.jd-cep-help{font-size:12px;color:#444;line-height:1.4}
.jd-cep-mini{font-size:12px;color:#555;margin:8px 0 0}
.jd-cep-footer{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-top:1px solid #eee;background:#fff;color:#333}

.jd-board{position:absolute;width:2551px;height:1819px;background:#fff;overflow:visible}
.jd-board img#jdBg{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;object-position:center;user-select:none;pointer-events:none}

.jd-textbox{position:absolute;left:300px;top:260px;width:1800px;min-height:120px;padding:10px;box-sizing:border-box;border:2px dashed rgba(37,99,235,.8);border-radius:10px;background:rgba(255,255,255,.0);cursor:move;transform-origin:center center}
.jd-textbox .jd-edit{outline:none;white-space:pre-wrap;word-break:break-word;cursor:text;user-select:text}
.jd-textbox.selected{border-style:solid}

.jd-imgbox{position:absolute;left:320px;top:300px;width:400px;height:300px;padding:0;box-sizing:border-box;border:2px dashed rgba(37,99,235,.8);border-radius:10px;background:transparent;cursor:move;transform-origin:center center;overflow:visible}
.jd-imgbox.selected{border-style:solid}
.jd-imgbox img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}
.jd-handle{position:absolute;width:14px;height:14px;background:#2563eb;border-radius:4px;right:-8px;bottom:-8px;cursor:nwse-resize}


/* Curved text preview */
.jd-curve-canvas{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;}


/* Keep the existing design while fitting narrow screens and touch gestures. */
.jd-cep-actions{flex-wrap:wrap;justify-content:flex-end}
.jd-textbox,.jd-imgbox,.jd-handle{touch-action:none}
.jd-edit{touch-action:manipulation}
.jd-cep-panel{overflow:auto}
@media(max-width:900px){
 .jd-cep-header{flex-wrap:wrap;gap:10px}
 .jd-cep-main{grid-template-columns:1fr;height:auto}
 .jd-cep-panel{display:flex;flex-wrap:wrap;gap:8px;border-right:0;max-height:34vh}
 .jd-cep-block{flex:1 1 130px;margin-bottom:0;min-width:0}
 .jd-cep-stage{height:65vh;min-height:300px;overflow:hidden}
 .jd-cep-footer{flex-wrap:wrap;gap:8px}
 .jd-cep-actions{justify-content:flex-start}
}

/* Workshop shell: canvas coordinates and print sizes are unchanged. */
:root{--jd-ink:#263e3b;--jd-accent:#356c61;--jd-soft:#edf4f0;--jd-line:#dce3de}
*{box-sizing:border-box}body{color:var(--jd-ink);background:#f6f7f4}
button,input,select{font:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c69b58;outline-offset:3px}
.jd-cep-app{min-height:100vh;display:flex;flex-direction:column}
.jd-cep-header{background:#fff;color:var(--jd-ink);border-bottom:1px solid var(--jd-line);padding:20px 28px;gap:20px}
.jd-cep-brand{min-width:230px}.jd-eyebrow{display:block;font-size:10px;text-transform:uppercase;letter-spacing:1.6px;color:#657771;margin-bottom:6px}
.jd-cep-brand h1{font-family:Georgia,serif;font-size:24px;font-weight:400;margin:0 0 6px}.jd-product-name{font-size:12px;color:#62746d}
.jd-cep-actions{gap:7px;max-width:820px}.jd-cep-btn{background:#fff;color:var(--jd-ink);border:1px solid var(--jd-line);padding:11px 13px;border-radius:6px;font-size:13px;font-weight:500}
.jd-cep-btn:hover{background:var(--jd-soft);border-color:#a7bdb4}.jd-cep-primary{background:var(--jd-accent);border-color:var(--jd-accent);color:#fff}.jd-cep-primary:hover{background:#28564d;color:#fff}
button:disabled{opacity:.4;cursor:default}.jd-cep-main{grid-template-columns:270px minmax(0,1fr);height:calc(100vh - 172px);min-height:490px;flex:1}
.jd-cep-panel{padding:22px;background:#fff;border-color:var(--jd-line)}.jd-selection{padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--jd-line)}.jd-selection strong{font-size:14px;font-weight:500}
.jd-cep-block{border:0;padding:0;margin:0 0 24px;background:transparent;border-radius:0}.jd-cep-block label{font-size:12px;font-weight:600;margin-bottom:10px}
.jd-cep-block select{width:100%;padding:9px;border:1px solid var(--jd-line);border-radius:5px;background:#fff;color:var(--jd-ink)}input[type=range]{width:100%;accent-color:var(--jd-accent)}input[type=color]{width:100%;height:34px;border:1px solid var(--jd-line);background:#fff;border-radius:5px}
.jd-cep-row{gap:5px}.jd-cep-btn-sm{font-size:11px;border-color:var(--jd-line);padding:8px;border-radius:4px}.jd-cep-btn-sm[aria-pressed=true]{background:var(--jd-soft);border-color:var(--jd-accent);color:#224f44}
.jd-cep-help,.jd-cep-mini{font-size:11px;line-height:1.6;color:#64766e}.jd-cep-mini{margin-bottom:15px}#jdSizeValue{float:right;font-weight:400;color:#6e7c77}
.jd-cep-stage{background:#edf0eb;overflow:hidden;min-width:0}.jd-cep-canvas-wrap{border:0;border-radius:0;padding:0;box-shadow:0 12px 38px #25382e24}
.jd-cep-footer{font-size:11px;color:#64766e;padding:14px 24px;border-color:var(--jd-line);gap:15px}#jdStatus{font-weight:500}
.jd-textbox,.jd-imgbox{border:0;border-radius:0;outline:calc(1px / var(--jd-scale,1)) dashed #356c6160}.jd-textbox.selected,.jd-imgbox.selected{outline:calc(1.5px / var(--jd-scale,1)) solid var(--jd-accent)}
.jd-textbox .jd-edit{line-height:1.25}.jd-handle{width:calc(12px / var(--jd-scale,1));height:calc(12px / var(--jd-scale,1));right:calc(-6px / var(--jd-scale,1));bottom:calc(-6px / var(--jd-scale,1));border-radius:50%;background:var(--jd-accent);border:calc(2px / var(--jd-scale,1)) solid white;display:none}
.jd-drag{position:absolute;top:calc(-28px / var(--jd-scale,1));left:0;padding:calc(4px / var(--jd-scale,1)) calc(8px / var(--jd-scale,1));font:calc(11px / var(--jd-scale,1)) system-ui;background:var(--jd-accent);color:white;border:0;border-radius:calc(4px / var(--jd-scale,1));cursor:move;white-space:nowrap;display:none;touch-action:none}
.selected .jd-handle,.selected .jd-drag{display:block}.jd-preview .jd-textbox,.jd-preview .jd-imgbox{outline:none}.jd-preview .jd-handle,.jd-preview .jd-drag,.jd-preview #jd-safety-overlay{display:none!important}.jd-preview .jd-board{pointer-events:none}
#jdCurveControls{flex-wrap:wrap;font-size:12px;max-width:300px}#jdCurveControls input{width:100px}
@media(max-width:900px){.jd-cep-header{padding:15px}.jd-cep-main{display:flex;flex-direction:column;height:auto;min-height:0}.jd-cep-stage{order:-1;height:55vh;min-height:310px}.jd-cep-panel{max-height:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:18px;gap:18px}.jd-selection,.jd-cep-help{grid-column:1/-1;margin:0}.jd-cep-block{margin:0}.jd-cep-header h1{font-size:22px}.jd-cep-footer{padding:12px 16px}.jd-cep-actions{justify-content:flex-start}.jd-cep-primary{flex-grow:1}.jd-cep-btn{padding:10px;font-size:12px}}

@media(min-width:901px){.jd-cep-app{height:100dvh;min-height:0}.jd-cep-main{height:auto;min-height:0}.jd-cep-panel{min-height:0}.jd-cep-header{flex-shrink:0}.jd-cep-footer{flex-shrink:0}.jd-cep-stage{min-height:0}}

#jdTextValue{width:100%;resize:vertical;min-height:72px;padding:10px;border:1px solid var(--jd-line);border-radius:5px;font:13px/1.5 system-ui;color:var(--jd-ink);background:#fff}

/* Visible save feedback; kept outside the inert editor. */
.jd-save-overlay[hidden]{display:none!important}
.jd-save-overlay{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(15,23,42,.68);cursor:wait}
.jd-save-notice{box-sizing:border-box;width:min(520px,100%);padding:32px 26px;border:3px solid #e9ad35;border-radius:16px;background:#fff;color:#172033;text-align:center;box-shadow:0 16px 70px #0006;font-family:Arial,sans-serif;animation:jd-save-glow 1.8s ease-in-out infinite}
.jd-save-notice h2{font-size:23px;line-height:1.3;margin:18px 0;color:#172033}
.jd-save-notice p{font-size:16px;line-height:1.5;margin:12px 0}
.jd-save-notice .jd-save-step{font-size:14px;color:#475569;margin-top:22px}
.jd-save-spinner{display:inline-block;width:42px;height:42px;border:5px solid #e2e8f0;border-top-color:#a96800;border-radius:50%;animation:jd-save-spin 1s linear infinite}
@keyframes jd-save-spin{to{transform:rotate(360deg)}}
@keyframes jd-save-glow{50%{border-color:#ffcf70;box-shadow:0 16px 70px #0006,0 0 0 7px #ffcf7040}}
@media(prefers-reduced-motion:reduce){.jd-save-notice,.jd-save-spinner{animation:none}}
