:root{--dpwad-cyan:#2ab5e0;--dpwad-ink:#334650;--dpwad-muted:#7d8c94;--dpwad-line:#dce5e9;--dpwad-bg:#f4f8fa}
.dpwad-shell{max-width:1240px;margin:28px auto;color:var(--dpwad-ink);font-family:Manrope,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.dpwad-tool-card,.dpwad-panel{background:#fff;border:1px solid var(--dpwad-line);border-radius:22px;box-shadow:0 18px 50px rgba(38,57,67,.06)}
.dpwad-tool-card{position:relative;overflow:hidden;margin-bottom:18px}.dpwad-tool-accent{position:absolute;left:28px;top:0;width:64px;height:4px;background:var(--dpwad-cyan);border-radius:0 0 6px 6px}
.dpwad-tool-head{padding:27px 30px;display:flex;align-items:center;justify-content:space-between;gap:25px}.dpwad-tool-head h2{font-size:29px;line-height:1.1;margin:5px 0 8px;font-weight:500}.dpwad-tool-head p{margin:0;color:var(--dpwad-muted);font-size:14px}.dpwad-eyebrow{font-size:10px;font-weight:800;letter-spacing:.16em;color:#249bb6}.dpwad-runtime,.dpwad-badge{border:1px solid #d8edf3;background:#f5fcfe;border-radius:999px;padding:9px 13px;font-size:11px;font-weight:800;white-space:nowrap}
.dpwad-grid{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:18px}.dpwad-panel{padding:22px;min-width:0}.dpwad-controls{display:flex;flex-direction:column;gap:12px}.dpwad-step{display:flex;align-items:center;gap:10px;margin-top:4px}.dpwad-step span{width:25px;height:25px;border-radius:50%;background:#f1f8fa;display:grid;place-items:center;color:#279eb9;font-size:10px;font-weight:800}.dpwad-step h3{margin:0;font-size:15px;font-weight:600}.dpwad-step em{font-style:normal;color:#94a1a8;font-size:11px;font-weight:500}
.dpwad-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dpwad-two label{position:relative;font-size:11px;font-weight:700}.dpwad-two label span{float:right;color:#98a3a9;font-weight:500}.dpwad-two input{width:100%;box-sizing:border-box;border:1px solid #d7e0e4;border-radius:10px;padding:10px 11px;margin-top:5px;font:inherit;font-size:13px;color:var(--dpwad-ink);background:#fff}.dpwad-two input:focus{outline:0;border-color:var(--dpwad-cyan);box-shadow:0 0 0 3px rgba(42,181,224,.1)}
.dpwad-help{margin:0;color:#86949b;font-size:11px;line-height:1.45}.dpwad-templates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dpwad-template{appearance:none;border:1px solid #dce4e8;border-radius:13px;background:#fff;padding:8px;cursor:pointer;text-align:left}.dpwad-template.is-active{border-color:var(--dpwad-cyan);box-shadow:0 0 0 2px rgba(42,181,224,.12)}.dpwad-template img{width:100%;height:110px;object-fit:contain;background:#f5f8f9;filter:grayscale(1) contrast(1.25)}.dpwad-template span{display:block;margin-top:7px;font-size:12px;font-weight:800}
.dpwad-upload{border:1px dashed #b8ced7;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:4px}.dpwad-upload strong{font-size:13px}.dpwad-upload span{font-size:11px;color:#829098;line-height:1.45}.dpwad-upload input{margin-top:7px;font-size:12px}
.dpwad-range-head,.dpwad-lockrow{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px}.dpwad-range-head output{font-size:12px;font-weight:800}.dpwad-range{width:100%;accent-color:var(--dpwad-cyan)}.dpwad-lock{border:1px solid #d8e1e5;background:#fff;border-radius:9px;padding:7px 9px;font-size:11px;font-weight:700;cursor:pointer}.dpwad-lock.is-locked{border-color:#bde7f2;background:#f4fcfe;color:#198da7}
.dpwad-hole-actions,.dpwad-hole-select{display:flex;gap:8px;flex-wrap:wrap}.dpwad-choice{border:1px solid #d8e1e5;background:#fff;border-radius:9px;padding:8px 10px;font-size:11px;font-weight:800;cursor:pointer}.dpwad-choice.is-active{border-color:var(--dpwad-cyan);color:#188ba5;background:#f3fcfe}
.dpwad-preview-panel{display:flex;flex-direction:column}.dpwad-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}.dpwad-preview-head div{display:flex;flex-direction:column;gap:5px}.dpwad-preview-head div span,.dpwad-export>div>span{font-size:10px;font-weight:850;letter-spacing:.15em;color:#279bb6}.dpwad-preview-head strong{font-size:15px;font-weight:500}
.dpwad-bed-wrap{padding:12px 6px 8px;display:grid;place-items:center}.dpwad-bed{width:min(570px,100%);position:relative;background:#3d464b;border:1px solid #222b2f;border-radius:10px;overflow:hidden;box-shadow:inset 0 0 0 3px #49545a,0 12px 30px rgba(30,44,51,.12)}.dpwad-bed-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:10% 10%,10% 10%,2% 2%,2% 2%}.dpwad-bed:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:rgba(42,181,224,.25)}.dpwad-bed:after{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:rgba(42,181,224,.25)}
.dpwad-bed-label{position:absolute;z-index:3;color:#d8e3e7;font-size:9px;font-weight:700;background:rgba(22,28,31,.6);padding:3px 6px;border-radius:5px}.dpwad-bed-x{left:50%;bottom:5px;transform:translateX(-50%)}.dpwad-bed-y{right:5px;top:50%;transform:translateY(-50%) rotate(-90deg)}
.dpwad-art{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;filter:drop-shadow(var(--depth,5px) var(--depth,5px) 0 rgba(12,16,18,.42))}.dpwad-art img{width:100%;height:100%;object-fit:contain;display:block;filter:grayscale(1) contrast(1.45) brightness(1.1)}.dpwad-depth-edge{position:absolute;inset:0;border:1px solid rgba(255,255,255,.15);pointer-events:none}
.dpwad-hole-marker{position:absolute;transform:translate(-50%,-50%);border:2px solid var(--dpwad-cyan);border-radius:50%;background:rgba(255,255,255,.8);min-width:12px;min-height:12px;padding:0;z-index:8;cursor:pointer}.dpwad-hole-marker.is-active{box-shadow:0 0 0 3px rgba(42,181,224,.3)}
.dpwad-preview-note{text-align:center;color:#87949a;font-size:11px;margin:12px 0 18px}.dpwad-export{border-top:1px solid var(--dpwad-line);padding-top:18px;margin-top:auto}.dpwad-export>div{display:flex;align-items:center;justify-content:space-between}.dpwad-export h3{font-size:22px;font-weight:400;margin:0}.dpwad-export-btn{width:100%;border:0;border-radius:13px;background:#2ba9c5;color:#fff;font-weight:800;padding:14px;margin-top:12px;cursor:pointer}.dpwad-export-btn.is-locked{background:#304956}.dpwad-export-status{font-size:11px;color:#85939a}.dpwad-generating{display:flex;gap:11px;align-items:center;border:1px solid #d8eef4;background:#f7fdff;border-radius:13px;padding:12px;margin-top:10px}.dpwad-generating>span{width:24px;height:24px;border:2px solid #d4eef4;border-top-color:#2aa8c4;border-radius:50%;animation:dpwad-spin .8s linear infinite}.dpwad-generating div{display:flex;flex-direction:column}.dpwad-generating small{color:#849198}
@keyframes dpwad-spin{to{transform:rotate(360deg)}}
@media(max-width:820px){.dpwad-grid{grid-template-columns:1fr}.dpwad-tool-head{padding:23px 22px}.dpwad-runtime{display:none}.dpwad-panel,.dpwad-tool-card{box-shadow:none}.dpwad-bed{width:min(82vw,520px)}}
@media(max-width:520px){.dpwad-shell{margin:16px auto}.dpwad-tool-head h2{font-size:25px}.dpwad-two{grid-template-columns:1fr 1fr}.dpwad-templates{grid-template-columns:repeat(2,1fr)}.dpwad-template img{height:95px}.dpwad-preview-head{align-items:center}.dpwad-badge{font-size:10px;padding:7px 9px}.dpwad-bed{width:min(86vw,430px)}.dpwad-panel{padding:18px}.dpwad-export h3{font-size:20px}}


/* 0.1.1 — Clear plate control and normalized preview */
.dpwad-clear-plate{
  width:100%;
  min-height:40px;
  border:1px solid #d8e1e5;
  border-radius:10px;
  background:#fff;
  color:var(--dpwad-ink);
  font:inherit;
  font-size:11px;
  font-weight:800;
  cursor:pointer;
}
.dpwad-clear-plate:hover{
  border-color:#c6d3d9;
  background:#f8fafb;
}
.dpwad-art.is-empty{
  filter:none;
}
.dpwad-art.is-empty img,
.dpwad-art.is-empty .dpwad-depth-edge{
  visibility:hidden;
}


/* 0.1.2 — Match Coaster Designer loading/typography behavior */

/* The author display:flex rule must never override the native hidden state. */
.dpwad-generating[hidden],
[data-generating][hidden]{
  display:none !important;
}

.dpwad-generating{
  gap:10px;
  padding:11px 12px;
  font-size:12px;
  line-height:1.35;
}
.dpwad-generating>span{
  width:22px;
  height:22px;
  flex:0 0 22px;
}
.dpwad-generating strong{
  font-size:12px;
  line-height:1.3;
  font-weight:700;
}
.dpwad-generating small{
  margin-top:2px;
  font-size:10px;
  line-height:1.35;
}

/* Keep general UI typography close to the Coaster Designer scale. */
.dpwad-controls,
.dpwad-preview-panel{
  font-size:13px;
}
.dpwad-step h3{
  font-size:14px;
}
.dpwad-tool-head h2{
  font-size:28px;
}
.dpwad-tool-head p{
  font-size:13px;
}
.dpwad-export h3{
  font-size:21px;
}

/* Transparent artwork should reveal the Bambu-style build plate. */
.dpwad-art img{
  background:transparent !important;
}

/* Make the currently selected mounting hole unmistakable. */
.dpwad-hole-select{
  margin-top:8px;
}
.dpwad-hole-select .dpwad-choice{
  min-width:72px;
}
.dpwad-hole-marker{
  color:#17333d;
}
.dpwad-hole-marker.is-active{
  border-color:#fff;
  background:var(--dpwad-cyan);
  box-shadow:0 0 0 3px rgba(42,181,224,.42),0 0 0 5px rgba(255,255,255,.9);
}

/* 0.1.3 — Scale maximum label */
.dpwad-scale-max{
  display:block;
  margin-top:4px;
  text-align:right;
  color:#7f8d94;
  font-size:10px;
  font-weight:700;
}


/* 0.2.1 — True non-uniform preview scaling.
   The STL pipeline already uses independent X/Y scale factors; the preview
   must do the same when Scale Ratio is unlocked. */
.dpwad-shell[data-scale-locked="1"] .dpwad-art img {
    object-fit: contain !important;
}

.dpwad-shell[data-scale-locked="0"] .dpwad-art img {
    object-fit: fill !important;
    width: 100% !important;
    height: 100% !important;
}

/* 0.2.2 — mobile usability / responsive polish */
@media (max-width:760px){
 .dpwad-shell{width:100%;max-width:100%;overflow:hidden}
 .dpwad-tool-head{padding:20px 16px 16px}
 .dpwad-tool-head h2{font-size:22px;line-height:1.15}
 .dpwad-tool-head p{font-size:12px;line-height:1.5}
 .dpwad-main{display:flex!important;flex-direction:column!important;gap:14px!important;padding:14px!important}
 .dpwad-preview-panel{order:-1;width:100%;min-width:0}
 .dpwad-controls{width:100%;min-width:0}
 .dpwad-preview-card{padding:12px;overflow:hidden}
 .dpwad-bed-wrap{width:100%;max-width:100%;min-height:0;overflow:visible}
 .dpwad-bed{width:min(100%,430px)!important;max-width:100%!important;margin-inline:auto!important;box-sizing:border-box}
 .dpwad-step{margin-bottom:10px}
 .dpwad-step h3{font-size:13px;line-height:1.25}
 .dpwad-two{grid-template-columns:1fr!important;gap:10px!important}
 .dpwad-controls label,.dpwad-range-head,.dpwad-help{font-size:11px}
 .dpwad-controls input[type="number"],.dpwad-controls input[type="text"],.dpwad-controls input[type="url"],.dpwad-controls select{
   min-height:46px;width:100%;box-sizing:border-box;font-size:16px!important;padding:10px 12px
 }
 .dpwad-choice,.dpwad-clear-plate,.dpwad-lock,.dpwad-export button{min-height:46px}
 .dpwad-choices,.dpwad-hole-select{gap:8px;flex-wrap:wrap}
 .dpwad-choice{flex:1 1 82px;padding:10px 12px}
 .dpwad-lock{width:100%;justify-content:center;padding:10px 12px}
 .dpwad-upload{padding:13px}
 .dpwad-template-grid,.dpwad-templates{
   display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:8px!important;
   overflow:visible!important;max-height:none!important
 }
 .dpwad-template{width:100%!important;min-width:0!important;padding:6px!important;min-height:46px}
 .dpwad-template img{max-width:100%;height:auto}
 .dpwad-range{min-height:40px;touch-action:pan-y}
 .dpwad-range::-webkit-slider-thumb{width:24px;height:24px}
 .dpwad-range::-moz-range-thumb{width:24px;height:24px}
 .dpwad-hole-marker{width:30px;height:30px;margin-left:-15px;margin-top:-15px}
 .dpwad-export{padding:16px}
 .dpwad-export h3{font-size:18px}
 .dpwad-export button{width:100%;font-size:13px}
 .dpwad-generating{align-items:flex-start}
}
@media (max-width:390px){
 .dpwad-main{padding:10px!important}
 .dpwad-tool-head{padding-inline:12px}
 .dpwad-template-grid,.dpwad-templates{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (any-pointer:coarse){
 .dpwad-choice,.dpwad-clear-plate,.dpwad-lock,.dpwad-export button{min-height:48px}
 .dpwad-hole-marker{min-width:30px;min-height:30px}
}

/* 0.2.4 — lighter build plate for stronger black-artwork contrast.
   Grid geometry remains unchanged. */
.dpwad-bed{
  background-color:#566268;
}
.dpwad-bed::before{
  opacity:.82;
}


/* 0.2.6 — denser template library on desktop.
   Keep the existing designer width; fit three templates per row instead. */
@media (min-width: 761px) {
  .dpwad-templates,
  .dpwad-template-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
  }

  .dpwad-template {
    min-width: 0;
    padding: 6px !important;
    border-radius: 11px;
  }

  .dpwad-template img {
    height: 92px !important;
    width: 100%;
    object-fit: contain;
  }

  .dpwad-template span {
    margin-top: 5px;
    font-size: 11px;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}

/* Slightly more breathing room on very wide screens while still using 3 columns. */
@media (min-width: 1180px) {
  .dpwad-template img {
    height: 100px !important;
  }
}


/* 0.2.7 — use the Deltaprints account modal instead of wp-login.php */




/* 0.2.8 — lock/member notice uses the same presentation as Coaster Designer */














/* 0.2.9 — exact Coaster Designer lock/CTA styling */
.dpwad-export-btn{width:100%;border:0;border-radius:14px;padding:14px 18px;margin-top:14px;background:var(--dpwad-cyan);color:#fff;font-weight:800;cursor:pointer}
.dpwad-export-btn.is-locked{background:#30434d}
.dpwad-member-cta{margin-top:12px;background:#f1f7fa;border-radius:14px;padding:14px}
.dpwad-member-cta strong,.dpwad-member-cta span{display:block}
.dpwad-member-cta strong{font-size:13px}
.dpwad-member-cta span{display:block}
.dpwad-member-cta>div{display:flex;gap:12px;flex-wrap:wrap;margin-top:9px}
.dpwad-member-cta a,.dpwad-member-cta button{border:0;background:none;padding:0;color:#1687a2;font:inherit;font-size:12px;font-weight:800;text-decoration:none;cursor:pointer}

/* Exact mobile behavior from the Coaster Designer CTA */
@media (max-width:760px){
  .dpwad-member-cta{
    padding:13px;
  }
  .dpwad-member-cta>div{
    flex-direction:column;
    align-items:flex-start;
    gap:8px;
  }
  .dpwad-member-cta a,
  .dpwad-member-cta button{
    min-height:38px;
    display:inline-flex;
    align-items:center;
    font-size:13px;
  }
}

.dpwad-member-cta{
  overflow-wrap:anywhere;
}
.dpwad-member-cta a,
.dpwad-member-cta button{
  -webkit-tap-highlight-color:transparent;
}


/* 0.3.0 — exact Coaster Designer locked-export layout.
   Scope aggressively so generic Wall Art flex rules cannot turn the CTA into columns. */
.dpwad-export > .dpwad-member-cta{
  display:block !important;
  width:auto !important;
  margin-top:12px !important;
  background:#f1f7fa !important;
  border:0 !important;
  border-radius:14px !important;
  padding:14px !important;
  box-shadow:none !important;
  text-align:left !important;
}
.dpwad-export > .dpwad-member-cta > strong,
.dpwad-export > .dpwad-member-cta > span{
  display:block !important;
  width:auto !important;
  margin-left:0 !important;
  margin-right:0 !important;
  text-align:left !important;
}
.dpwad-export > .dpwad-member-cta > strong{
  margin-top:0 !important;
  margin-bottom:0 !important;
  color:var(--dpwad-ink) !important;
  font-size:13px !important;
  line-height:1.35 !important;
  font-weight:600 !important;
  letter-spacing:0 !important;
  text-transform:none !important;
}
.dpwad-export > .dpwad-member-cta > span{
  margin-top:3px !important;
  margin-bottom:0 !important;
  color:var(--dpwad-muted) !important;
  font-size:12px !important;
  line-height:1.45 !important;
  font-weight:400 !important;
  letter-spacing:0 !important;
  text-transform:none !important;
}
.dpwad-export > .dpwad-member-cta > div{
  display:flex !important;
  width:auto !important;
  flex-direction:row !important;
  align-items:center !important;
  justify-content:flex-start !important;
  gap:12px !important;
  margin-top:9px !important;
  margin-left:0 !important;
  margin-right:0 !important;
}
.dpwad-export > .dpwad-member-cta > div > a,
.dpwad-export > .dpwad-member-cta > div > button{
  display:inline !important;
  width:auto !important;
  min-width:0 !important;
  min-height:0 !important;
  height:auto !important;
  flex:0 0 auto !important;
  margin:0 !important;
  border:0 !important;
  background:none !important;
  padding:0 !important;
  color:#1687a2 !important;
  font:inherit !important;
  font-size:12px !important;
  line-height:1.35 !important;
  font-weight:800 !important;
  letter-spacing:0 !important;
  text-transform:none !important;
  text-decoration:none !important;
  text-align:left !important;
  cursor:pointer !important;
  box-shadow:none !important;
}

@media (max-width:760px){
  .dpwad-export > .dpwad-member-cta{
    padding:13px !important;
  }
  .dpwad-export > .dpwad-member-cta > div{
    flex-direction:column !important;
    align-items:flex-start !important;
    gap:8px !important;
  }
  .dpwad-export > .dpwad-member-cta > div > a,
  .dpwad-export > .dpwad-member-cta > div > button{
    min-height:38px !important;
    display:inline-flex !important;
    align-items:center !important;
    font-size:13px !important;
  }
}


/* 0.3.1 — visible Coaster-style premium notice box */
.dpwad-export > .dpwad-member-cta{
  background:#f1f7fa !important;
  border:1px solid #d9edf3 !important;
  border-radius:14px !important;
}
