*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --cream:#F5F1DE;
  --cream-deep:#ECE5C6;
  --card:#FFFFFF;
  --ink:#22301F;
  --ink-dim:#6E7A69;
  --sage:#8FAE7C;
  --sage-light:#E4ECDA;
  --coral:#FF6F91;
  --coral-light:#FFE3EA;
  --pill:#1E2A20;
  --pill-text:#FFFFFF;
  --border:rgba(34,48,31,0.10);
  --shadow:0 10px 28px rgba(60,70,40,0.14);
  --shadow-sm:0 4px 14px rgba(60,70,40,0.10);
}
/* Dark mode — only the app chrome (panels, text, buttons) switches; the
   pin canvas itself always draws with the colors the customer picked. */
:root[data-theme="dark"]{
  --cream:#191919;
  --cream-deep:#232323;
  --card:#242424;
  --ink:#EEEDE8;
  --ink-dim:#9C9C96;
  --sage:#8FAE7C;
  --sage-light:#25301F;
  --coral:#FF6F91;
  --coral-light:#3A222A;
  --pill:#F5F1DE;
  --pill-text:#1E2A20;
  --border:rgba(255,255,255,0.10);
  --shadow:0 10px 28px rgba(0,0,0,0.5);
  --shadow-sm:0 4px 14px rgba(0,0,0,0.35);
}
html,body{width:100%;min-height:100%;font-family:'Nunito',sans-serif;background:var(--cream);color:var(--ink);transition:background-color 0.2s ease,color 0.2s ease;}
button,input,textarea,select{font-family:inherit;color:inherit;}
h1,.cr-logo,.cr-title,.cr-sheet-title,.cr-design-title,.cr-btn-primary,.cr-icon-btn,.cr-product-name,.cr-size-num{font-family:'Baloo 2',cursive;}

.cr-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}

/* ── HEADER ── */
.cr-header{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;
  padding:16px 22px;background:var(--card);border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:50;
}
.cr-logo{font-size:21px;color:var(--ink);font-weight:700;}
.cr-logo .dot{color:var(--coral);}
.cr-logo small{font-family:'Nunito',sans-serif;font-size:10.5px;font-weight:800;color:var(--ink-dim);letter-spacing:1px;margin-left:6px;text-transform:uppercase;vertical-align:middle;}

.cr-theme-toggle{
  flex-shrink:0;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--border);background:var(--cream-deep);color:var(--ink-dim);cursor:pointer;padding:0;
}
.cr-theme-toggle svg{width:17px;height:17px;}
.cr-theme-toggle:hover{color:var(--ink);}

.cr-steps{display:flex;gap:20px;}
.cr-step{display:flex;align-items:center;gap:7px;opacity:0.4;transition:opacity 0.2s;}
.cr-step.active,.cr-step.done{opacity:1;}
.cr-step-num{
  width:24px;height:24px;border-radius:50%;background:var(--cream-deep);color:var(--ink-dim);
  display:flex;align-items:center;justify-content:center;font-family:'Baloo 2',cursive;font-size:12px;
}
.cr-step.active .cr-step-num{background:var(--coral);color:white;}
.cr-step.done .cr-step-num{background:var(--sage);color:white;}
.cr-step-label{font-size:11.5px;font-weight:800;letter-spacing:0.3px;color:var(--ink-dim);}
.cr-step.active .cr-step-label{color:var(--ink);}

/* ── MAIN / PANELS ── */
.cr-main{max-width:1080px;margin:0 auto;padding:30px 20px 80px;}
.cr-panel{display:none;}
.cr-panel.active{display:block;animation:crFade 0.25s ease;}
@keyframes crFade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}

.cr-title{font-size:26px;margin-bottom:6px;font-weight:700;}
.cr-sub{font-size:13.5px;color:var(--ink-dim);font-weight:700;margin-bottom:22px;}

.cr-link-back{background:none;border:none;color:var(--sage);font-weight:800;font-size:12.5px;cursor:pointer;padding:0;}
.cr-link-back:hover{text-decoration:underline;}

/* ── PRODUCT GRID ── */
.cr-product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;}
.cr-product-card{
  background:var(--card);border:1px solid var(--border);border-radius:20px;padding:20px 14px;
  text-align:center;cursor:pointer;transition:transform 0.15s,box-shadow 0.15s;position:relative;
  box-shadow:var(--shadow-sm);
}
.cr-product-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.cr-product-card.disabled{opacity:0.5;cursor:not-allowed;box-shadow:none;}
.cr-product-card.disabled:hover{transform:none;}
.cr-product-icon{
  width:52px;height:52px;border-radius:50%;background:var(--sage-light);
  display:flex;align-items:center;justify-content:center;font-size:26px;margin:0 auto 12px;
}
.cr-product-name{font-size:14px;font-weight:700;}
.cr-template-desc{font-size:11px;font-weight:700;color:var(--ink-dim);margin-top:4px;line-height:1.4;}
.cr-template-thumb{width:52px;height:52px;border-radius:14px;object-fit:cover;margin:0 auto 12px;display:block;background:var(--sage-light);}
.cr-template-admin-del{
  position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;
  background:var(--card);border:1px solid var(--border);color:var(--coral);
  display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-sm);
}
.cr-template-admin-del svg{width:13px;height:13px;}
.cr-template-admin-del:hover{background:var(--coral-light);}
.cr-template-admin-edit{
  position:absolute;top:8px;left:8px;width:26px;height:26px;border-radius:50%;
  background:var(--card);border:1px solid var(--border);color:var(--sage);
  display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-sm);
}
.cr-template-admin-edit svg{width:13px;height:13px;}
.cr-template-admin-edit:hover{background:var(--sage-light);}
.cr-skeleton-card{
  height:132px;border-radius:20px;background:var(--card);border:1px solid var(--border);
  box-shadow:var(--shadow-sm);position:relative;overflow:hidden;
}
.cr-skeleton-card::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,0.35),transparent);
  transform:translateX(-100%);animation:crSkeletonShimmer 1.3s infinite;
}
@keyframes crSkeletonShimmer{100%{transform:translateX(100%);}}
.cr-product-badge{
  position:absolute;top:10px;right:10px;background:var(--coral-light);color:var(--coral);
  font-size:8.5px;font-weight:800;padding:3px 8px;border-radius:20px;letter-spacing:0.4px;
}

/* ── SIZE GRID ── */
.cr-size-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;}
.cr-size-card{
  background:var(--card);border:1px solid var(--border);border-radius:20px;padding:24px 16px;
  text-align:center;cursor:pointer;transition:transform 0.15s,box-shadow 0.15s;box-shadow:var(--shadow-sm);
  position:relative;
}
.cr-size-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.cr-size-card.disabled{opacity:0.5;cursor:not-allowed;box-shadow:none;}
.cr-size-card.disabled:hover{transform:none;}
.cr-size-ring{border-radius:50%;border:3px solid var(--sage);margin:0 auto 14px;background:var(--sage-light);}
.cr-size-num{font-size:17px;font-weight:700;}
.cr-size-tag{font-size:10.5px;font-weight:800;color:var(--ink-dim);margin-top:4px;text-transform:uppercase;letter-spacing:0.4px;}

/* ── DESIGN STEP (full-viewport, pin always visible) ── */
.cr-panel-design.active{
  position:fixed;inset:0;z-index:60;background:var(--cream);
  display:flex;flex-direction:column;animation:none;
}
.cr-design-app{
  display:flex;flex-direction:column;height:100%;gap:12px;
  padding:14px 16px calc(12px + env(safe-area-inset-bottom));
}
.cr-design-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.cr-icon-btn{
  display:flex;align-items:center;gap:5px;
  background:var(--card);border:1px solid var(--border);color:var(--ink);
  border-radius:20px;padding:9px 14px;font-weight:700;font-size:12.5px;cursor:pointer;white-space:nowrap;
  box-shadow:var(--shadow-sm);
}
.cr-next-btn{background:var(--pill);border-color:var(--pill);color:var(--pill-text);}
.cr-next-btn:disabled{opacity:0.4;cursor:not-allowed;}
.cr-design-title{
  font-size:10px;font-weight:800;color:var(--ink-dim);text-align:center;flex:1;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px;text-transform:uppercase;letter-spacing:0.3px;
}
.cr-icon{width:16px;height:16px;flex-shrink:0;}

/* This is a ROW flex container (no flex-direction set), so align-items is
   the VERTICAL axis and justify-content is the HORIZONTAL one —
   align-items:flex-start (not center) is deliberate: on iOS Safari the
   address bar + bottom toolbar can dock over part of the viewport after
   this container's height is measured, so anything vertically centered in
   the full (chrome-inclusive) height ends up looking pushed down into the
   obscured area. Anchoring to the top keeps the pin — and the dock below
   it — reliably in the visible area regardless of that browser chrome.
   justify-content:center keeps it horizontally centered as normal.
   padding-bottom reserves room for the floating FAB row at the bottom. */
.cr-canvas-wrap{position:relative;flex:1;min-height:0;display:flex;align-items:flex-start;justify-content:center;padding-top:6px;padding-bottom:72px;}

/* In Loving Memory (funeral/memorial pins) swaps the bouncy sticker
   backdrop + spinning border ring for a calm static photo instead — see
   isMemorialProduct() in create.js. background-position:left keeps the
   photo's leaf cluster (its focal point) anchored on the left across any
   container width, instead of getting cropped out on narrower screens. */
.cr-canvas-wrap.memorial-bg{
  background-image:url('assets/ui/in-loving-memory-bg.png');
  background-size:cover;
  background-position:left center;
  background-repeat:no-repeat;
}

/* Decorative sticker backdrop, purely visual — sits behind the canvas
   (z-index:0 vs the canvas's z-index:1). Driven entirely by a JS physics
   loop (renderCanvasBgDecor/tickBgPhysics) — each sticker is a "bubble"
   with its own position/velocity, bouncing off the wrap edges, the pin,
   and each other (real circle-circle collision, so they never overlap).
   Positioned via transform:translate(), updated every animation frame.
   Re-spawned whenever the design step is entered or a new element is
   added — the pool is the customer's own added stickers/shapes/word art/
   character, falling back to random library presets before they've added
   anything. */
.cr-canvas-bg-decor{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none;}
.cr-bg-sticker{
  position:absolute;top:0;left:0;opacity:0.35;filter:blur(1.2px);pointer-events:none;
  will-change:transform;
}
.cr-design-app.isolate .cr-canvas-bg-decor{display:none;}

/* Whatever border the customer picked, echoed as a slow-spinning ring just
   outside the pin — same asset, just bigger. Sized in JS (updateCanvasBorderRing)
   to track the pin's actual rendered size. Sits behind the canvas (negative
   z-index within the stage's own stacking context) since border assets are
   authored with a transparent center anyway. */
.cr-canvas-border-ring{
  /* Sized as a % of the pin's own box (.cr-canvas-stage, position:relative)
     instead of a JS-computed px value — so it's mathematically part of the
     pin's box and can never drift out of sync with it, at any size, for
     any reason (tool panel opening/closing, window resize, orientation
     change, ...). JS only toggles visibility and sets the image src. */
  position:absolute;top:50%;left:50%;z-index:-1;
  width:128%;height:128%;
  pointer-events:none;opacity:0.50;
  animation:crBorderSpin 75s linear infinite;
}
@keyframes crBorderSpin{
  from{ transform:translate(-50%,-50%) rotate(0deg); }
  to{ transform:translate(-50%,-50%) rotate(360deg); }
}
.cr-design-app.isolate .cr-canvas-border-ring{display:none;}

/* All tool UI (fab row, notes, legend, rising panel, dock) lives here,
   absolutely positioned over the pin instead of being a normal-flow sibling
   of .cr-canvas-wrap — that's what used to make the pin visibly resize
   every time a tool panel opened/closed (each one competed for space in
   the same flex column, shrinking .cr-canvas-wrap, which the ResizeObserver
   then re-sized the pin to match). Now nothing inside here can affect
   .cr-canvas-wrap's own size, so the pin only resizes on a real viewport
   change. pointer-events:none on the wrapper + auto on real children lets
   taps/drags pass through the gaps to the canvas underneath. */
.cr-floating-tools{
  position:absolute;left:0;right:0;bottom:0;z-index:5;max-height:100%;
  display:flex;flex-direction:column;gap:8px;overflow-y:auto;
  padding:0 2px calc(6px + env(safe-area-inset-bottom));
  pointer-events:none;
  /* The dock/rise-panel/fab-row sit directly on top of the pin, so they
     keep the light-mode look at all times regardless of the app theme —
     re-declaring the theme vars here shadows any :root[data-theme="dark"]
     override for everything nested inside. */
  --cream:#F5F1DE; --cream-deep:#ECE5C6; --card:#FFFFFF;
  --ink:#22301F; --ink-dim:#6E7A69; --border:rgba(34,48,31,0.10);
  --pill:#1E2A20; --pill-text:#FFFFFF;
  --sage-light:#E4ECDA; --coral-light:#FFE3EA;
}
.cr-floating-tools > *{pointer-events:auto;}

/* Rotate rail — fixed to the right of the pin, vertically centered,
   shown only while a rotatable element is selected (see updateRotateRail()
   in create.js). Sits directly on top of the pin like .cr-floating-tools,
   so it re-declares the same light-mode vars for the same reason (see the
   comment on .cr-floating-tools above). */
.cr-rotate-rail{
  position:absolute; right:6px; top:50%; transform:translateY(-50%);
  z-index:5; display:flex; flex-direction:column; align-items:center; gap:10px;
  --cream:#F5F1DE; --cream-deep:#ECE5C6; --card:#FFFFFF;
  --ink:#22301F; --ink-dim:#6E7A69; --border:rgba(34,48,31,0.10);
  --pill:#1E2A20; --pill-text:#FFFFFF;
  --sage-light:#E4ECDA; --coral-light:#FFE3EA;
}
.cr-rotate-thumb{
  width:36px;height:36px;border-radius:50%;overflow:hidden;flex-shrink:0;
  background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-sm);
  display:flex;align-items:center;justify-content:center;color:var(--ink);
}
.cr-rotate-thumb img{width:100%;height:100%;object-fit:contain;}
.cr-rotate-thumb svg{width:18px;height:18px;}
.cr-rotate-slider-wrap{width:30px;height:150px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.cr-rotate-slider{
  width:150px;height:30px;margin:0;transform:rotate(-90deg);
  accent-color:var(--pill);
}

/* Resize rail — mirrors the rotate rail, fixed to the LEFT of the pin. Same
   light-mode var re-declaration, same reasoning (see .cr-floating-tools). */
.cr-resize-rail{
  position:absolute; left:6px; top:50%; transform:translateY(-50%);
  z-index:5; display:flex; flex-direction:column; align-items:center; gap:10px;
  --cream:#F5F1DE; --cream-deep:#ECE5C6; --card:#FFFFFF;
  --ink:#22301F; --ink-dim:#6E7A69; --border:rgba(34,48,31,0.10);
  --pill:#1E2A20; --pill-text:#FFFFFF;
  --sage-light:#E4ECDA; --coral-light:#FFE3EA;
}
.cr-resize-icon{
  width:30px;height:30px;border-radius:50%;flex-shrink:0;
  background:var(--card);border:1px solid var(--border);color:var(--ink-dim);
  display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);
}
.cr-resize-icon svg{width:15px;height:15px;}
.cr-resize-slider-wrap{width:30px;height:150px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.cr-resize-slider{
  width:150px;height:30px;margin:0;transform:rotate(-90deg);
  accent-color:var(--pill);
}

/* Element strip — sits over the top of the pin, between the rotate/resize
   rails. Only way to select an element now (canvas taps no longer select,
   see bindCanvasInteractions in create.js) and doubles as the lock toggle:
   tap an unselected icon to select it, tap the selected icon again to
   lock/unlock. Same forced light-mode vars as the rails, same reasoning. */
.cr-element-strip-wrap{
  position:absolute; top:4px; left:50%; transform:translateX(-50%);
  z-index:5; max-width:calc(100% - 96px);
  display:flex; flex-direction:column; align-items:center; gap:3px;
  --cream:#F5F1DE; --card:#FFFFFF;
  --ink:#22301F; --ink-dim:#6E7A69; --border:rgba(34,48,31,0.10);
  --pill:#1E2A20; --pill-text:#FFFFFF;
}
.cr-element-strip-label{
  font-size:10px;font-weight:700;color:var(--ink-dim);text-transform:uppercase;letter-spacing:0.05em;
  background:rgba(255,255,255,0.85);padding:1px 8px;border-radius:8px;flex-shrink:0;
}
.cr-element-strip{
  display:flex;gap:8px;overflow-x:auto;max-width:100%;padding:2px 3px;
  scrollbar-width:none;
}
.cr-element-strip::-webkit-scrollbar{display:none;}
.cr-element-strip-btn{
  position:relative;width:34px;height:34px;border-radius:50%;flex-shrink:0;
  background:var(--card);border:2px solid var(--border);overflow:hidden;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  box-shadow:var(--shadow-sm);padding:0;color:var(--ink);
}
.cr-element-strip-btn.selected{border-color:var(--pill);}
.cr-element-strip-btn img{width:100%;height:100%;object-fit:contain;}
.cr-element-strip-btn svg{width:16px;height:16px;}
.cr-element-strip-lock-overlay{
  position:absolute;inset:0;background:rgba(0,0,0,0.5);
  display:flex;align-items:center;justify-content:center;color:#fff;
}
.cr-element-strip-lock-overlay svg{width:14px;height:14px;}

/* Info/warning icon row — normal flow, above the pin (not part of
   .cr-floating-tools), so it stays put regardless of dock/panel state.
   Replaces what used to be always-visible legend/privacy/warning text —
   now a tap-to-open popup instead, freeing up vertical space for the dock
   below to show more tool icons at once. */
.cr-info-warning-row{display:flex;justify-content:center;gap:8px;flex-shrink:0;}
.cr-info-icon-btn,.cr-warning-icon-btn{
  width:28px;height:28px;border-radius:50%;flex-shrink:0;
  background:var(--card);border:1px solid var(--border);color:var(--ink-dim);
  display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-sm);
}
.cr-info-icon-btn svg,.cr-warning-icon-btn svg{width:15px;height:15px;}
.cr-warning-icon-btn{
  color:#c23d5e;border-color:rgba(255,111,145,0.35);
  animation:crWarningFlash 1.8s ease-in-out infinite;
}
@keyframes crWarningFlash{
  0%,100%{background:var(--card);box-shadow:var(--shadow-sm);}
  50%{background:#ff6f91;border-color:#ff6f91;color:#fff;box-shadow:0 0 10px rgba(255,111,145,0.55);}
}
.cr-warning-overlap-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;justify-content:center;}
.cr-warning-overlap-thumb{
  width:34px;height:34px;border-radius:8px;overflow:hidden;flex-shrink:0;
  background:var(--cream-deep);display:flex;align-items:center;justify-content:center;color:var(--ink-dim);
}
.cr-warning-overlap-thumb img{width:100%;height:100%;object-fit:cover;}
.cr-warning-overlap-thumb svg{width:17px;height:17px;}

/* Row of floating action buttons underneath the pin — isolate (full-screen)
   on the left, layers on the right. */
.cr-canvas-fab-row{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}

.cr-isolate-btn{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
  background:var(--card);border:1px solid var(--border);color:var(--ink);
  display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-sm);
}
.cr-isolate-btn svg{width:17px;height:17px;}
.cr-isolate-btn.active{background:var(--pill);border-color:var(--pill);color:var(--pill-text);}

.cr-fab-group{display:flex;align-items:center;gap:8px;}
.cr-fab-group-left{display:flex;align-items:center;gap:8px;}

.cr-paste-fab,.cr-duplicate-fab,.cr-add-fab{
  width:38px;height:38px;border-radius:50%;flex-shrink:0;
  background:var(--card);border:1px solid var(--border);color:var(--ink);
  display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-sm);
}
.cr-paste-fab svg,.cr-duplicate-fab svg,.cr-add-fab svg{width:18px;height:18px;}
.cr-design-app.isolate .cr-paste-fab,
.cr-design-app.isolate .cr-duplicate-fab,
.cr-design-app.isolate .cr-add-fab{display:none;}

.cr-layers-fab{
  width:46px;height:46px;border-radius:50%;flex-shrink:0;
  background:var(--card);border:1px solid var(--border);color:var(--ink);
  display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-sm);
}
.cr-layers-fab svg{width:22px;height:22px;}
.cr-design-app.isolate .cr-layers-fab{display:none;}

/* Isolate mode: hide everything except the canvas (and the toggle button)
   so there's maximum room to drag/position elements. The watermark itself
   is baked into the canvas drawing, so it stays visible regardless. */
.cr-design-app.isolate .cr-design-topbar,
.cr-design-app.isolate .cr-next-disabled-note,
.cr-design-app.isolate .cr-info-warning-row,
.cr-design-app.isolate .cr-tool-rise-panel,
.cr-design-app.isolate .cr-dock{
  display:none;
}

.cr-next-disabled-note{
  font-size:10.5px;font-weight:700;color:#c23d5e;background:var(--coral-light);
  border:1px solid rgba(255,111,145,0.35);border-radius:10px;padding:8px 10px;line-height:1.4;
}

.cr-privacy-note{font-size:9.5px;color:var(--ink-dim);text-align:center;font-weight:700;line-height:1.4;opacity:0.85;}

/* ── BOTTOM DOCK (GoDaddy-Studio style icon bar) — wraps into rows instead
   of horizontal-scrolling, so as many tool icons as possible are visible
   at once without needing to swipe (a max-height + scroll is only a safety
   net for the rare case of more icons than fit). ── */
.cr-dock{
  background:var(--card);border:1.5px solid var(--border);border-radius:18px;
  box-shadow:var(--shadow-sm);min-height:64px;display:flex;align-items:stretch;
  flex-shrink:0;max-height:40vh;overflow-y:auto;
}
.cr-add-row{display:flex;flex-wrap:wrap;align-content:flex-start;flex:1;min-width:0;}

.cr-dock-btn{
  flex:0 0 25%;min-width:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  padding:10px 6px;border:none;background:none;color:var(--ink);cursor:pointer;
}
.cr-dock-btn:active{opacity:0.6;}
.cr-dock-icon{
  width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:var(--ink-dim);
}
.cr-dock-icon svg{width:22px;height:22px;}
.cr-dock-icon-thumb{width:26px;height:26px;border-radius:8px;overflow:hidden;background:var(--cream-deep);}
.cr-dock-icon-thumb img{width:100%;height:100%;object-fit:cover;}
.cr-dock-icon-thumb svg{width:16px;height:16px;}
.cr-dock-label{font-size:9.5px;font-weight:800;color:var(--ink-dim);}

/* Tool-row: shown instead of the add-row once something is selected. A fixed
   close (X) button sits outside the wrapping grid so it's always reachable. */
.cr-tool-row-close{
  flex-shrink:0;width:44px;display:flex;align-items:center;justify-content:center;
  border:none;border-right:1px solid var(--border);background:none;color:var(--ink-dim);cursor:pointer;
}
.cr-tool-row-close svg{width:16px;height:16px;}
.cr-tool-row-scroll{flex:1;display:flex;flex-wrap:wrap;align-content:flex-start;min-width:0;}
.cr-tool-btn{
  flex:0 0 25%;min-width:60px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  padding:10px 8px;border:none;background:none;color:var(--ink);cursor:pointer;
}
.cr-tool-btn:active{opacity:0.6;}
.cr-tool-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center;color:var(--ink-dim);}
.cr-tool-icon svg{width:20px;height:20px;}
.cr-tool-label{font-size:9.5px;font-weight:800;color:var(--ink-dim);}
.cr-tool-btn.active .cr-tool-icon,.cr-tool-btn.active .cr-tool-label{color:var(--coral);}
.cr-tool-btn.on .cr-tool-icon{color:var(--pill);}
.cr-tool-btn.danger .cr-tool-icon,.cr-tool-btn.danger .cr-tool-label{color:var(--coral);}

/* ── RISING TOOL PANEL (compact bottom sheet, one control at a time) ── */
.cr-tool-rise-panel{
  max-height:0;overflow:hidden;background:var(--card);border:1px solid var(--border);border-radius:14px;
  box-shadow:var(--shadow-sm);transition:max-height 0.22s ease,opacity 0.22s ease,margin 0.22s ease;
  opacity:0;flex-shrink:0;
}
.cr-tool-rise-panel.show{max-height:40vh;opacity:1;overflow-y:auto;}
.cr-rise-handle{width:34px;height:4px;border-radius:3px;background:var(--border);margin:9px auto 0;}
.cr-rise-body{padding:8px 14px 14px;font-size:13px;}

/* ── LAYERS TAB ── */
.cr-layers-modal{max-width:380px;max-height:80vh;display:flex;flex-direction:column;}
.cr-layers-list{overflow-y:auto;}
.cr-layer-row{
  display:flex;align-items:center;gap:10px;padding:8px;margin-bottom:6px;
  background:var(--cream);border:1px solid var(--border);border-radius:12px;
  transition:transform 0.15s ease;
}
.cr-layer-row.dragging{
  position:relative;z-index:50;transition:none;background:var(--card);
  box-shadow:0 10px 24px rgba(0,0,0,0.22);
}
.cr-layer-row-handle{
  flex-shrink:0;width:26px;height:26px;display:flex;align-items:center;justify-content:center;
  border:none;background:none;color:var(--ink-dim);cursor:grab;touch-action:none;padding:0;
}
.cr-layer-row-handle svg{width:16px;height:16px;}
.cr-layer-row-thumb{
  flex-shrink:0;width:32px;height:32px;border-radius:8px;overflow:hidden;background:var(--card);
  display:flex;align-items:center;justify-content:center;color:var(--ink-dim);cursor:pointer;
}
.cr-layer-row-thumb img{width:100%;height:100%;object-fit:cover;}
.cr-layer-row-thumb svg{width:16px;height:16px;}
.cr-layer-row-label{flex:1;font-size:12.5px;font-weight:700;color:var(--ink);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cr-layer-row-lock{
  flex-shrink:0;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--border);background:var(--card);color:var(--ink-dim);cursor:pointer;padding:0;
}
.cr-layer-row-lock svg{width:12px;height:12px;}
.cr-layer-row-lock.locked{background:var(--pill);border-color:var(--pill);color:var(--pill-text);}
.cr-layer-row-delete{
  flex-shrink:0;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--border);background:var(--card);color:var(--ink-dim);cursor:pointer;padding:0;
}
.cr-layer-row-delete svg{width:12px;height:12px;}
.cr-layer-row-delete:hover{background:var(--coral-light);border-color:var(--coral);color:var(--coral);}

/* ── 3D PRINT PREVIEW ── */
.cr-pin3d-card{
  background:var(--cream);border-radius:24px;padding:22px;max-width:380px;width:100%;
  box-shadow:var(--shadow);position:relative;text-align:center;
}
.cr-pin3d-close{
  position:absolute;top:14px;right:14px;width:30px;height:30px;border-radius:50%;
  border:1px solid var(--border);background:var(--card);color:var(--ink-dim);
  display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;
}
.cr-pin3d-close svg{width:15px;height:15px;}
.cr-pin3d-stage{
  position:relative;perspective:900px;height:260px;
  display:flex;align-items:center;justify-content:center;
  touch-action:none;cursor:grab;user-select:none;-webkit-touch-callout:none;
}
.cr-pin3d-stage:active{cursor:grabbing;}
.cr-pin3d-shadow{
  position:absolute;width:170px;height:34px;left:50%;top:calc(50% + 105px);
  transform:translateX(-50%);pointer-events:none;
  background:radial-gradient(ellipse at center, rgba(0,0,0,0.28), rgba(0,0,0,0) 70%);
  filter:blur(2px);
}
/* Front face, edge wall, and back all live inside this shared preserve-3d
   body and rotate together as one rigid object — see create.js for how the
   edge wall's ~40 thin strips are generated (a classic CSS-3D "barrel"). */
.cr-pin3d{
  position:relative;width:210px;height:210px;
  transform-style:preserve-3d;transform:rotateX(14deg) rotateY(-10deg);
  transition:transform 0.4s cubic-bezier(.2,.8,.3,1);
}
.cr-pin3d.dragging{transition:none;}
/* Two 0-offset inset shadows — a tight one right at the rim plus a much
   broader one fading toward center — darken the edge uniformly on every
   side (never directionally: a directional inset is the standard CSS
   convention for a "pressed in" surface, the opposite of embossed). This
   is the PRIMARY convexity cue since — unlike the highlight below — a dark
   shadow stays visible no matter what color the design is, including a
   still-blank white pin. */
.cr-pin3d-face{
  position:absolute;inset:0;border-radius:50%;
  transform:translateZ(9px);
  box-shadow:0 16px 28px rgba(0,0,0,0.25),
             inset 0 0 16px rgba(0,0,0,0.28),
             inset 0 0 52px rgba(0,0,0,0.34);
}
.cr-pin3d-face canvas{position:absolute;inset:0;width:100%;height:100%;border-radius:50%;display:block;-webkit-user-drag:none;}
/* Specular highlight (bright, near the light source) plus a soft shadow on
   the OPPOSITE side of the surface — classic diffuse+specular shading, not
   a "dent": the previous version dropped the shadow half because paired
   with the old directional face-shadow it read as a dent, but that was the
   face shadow's fault (now fixed above), not this technique's. Position is
   recomputed on every drag in applyPin3dTransform() (create.js); this is
   just the resting default. soft-light lets the highlight both brighten
   AND darken depending on the design's own colors, and — importantly —
   still darkens visibly even where the design is pure white (a highlight
   alone can't get brighter than white, so the shadow half is what keeps
   the dome visible on a still-blank pin). */
.cr-pin3d-shine{
  position:absolute;inset:0;border-radius:50%;pointer-events:none;
  mix-blend-mode:soft-light;
  background:radial-gradient(circle at 63% 32%, rgba(255,255,255,0.95), rgba(255,255,255,0.55) 14%, rgba(255,255,255,0.12) 30%, rgba(255,255,255,0) 48%),
             radial-gradient(circle at 37% 68%, rgba(0,0,0,0.32), rgba(0,0,0,0) 55%);
}
.cr-pin3d-rim{
  position:absolute;inset:0;border-radius:50%;pointer-events:none;
  box-shadow:inset 0 0 0 3px rgba(255,255,255,0.55), inset 0 0 0 7px rgba(0,0,0,0.12);
}
.cr-pin3d-back{
  position:absolute;inset:0;border-radius:50%;
  transform:translateZ(-9px);
  background:radial-gradient(circle at 40% 35%, #8a919c, #4a505a 75%);
}
.cr-pin3d-edge-wall{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none;}
.cr-pin3d-edge-strip{
  position:absolute;left:50%;top:50%;height:18px;margin-top:-9px;
  background:linear-gradient(180deg,#eef0f3,#9aa1ab 45%,#666d78);
}
.cr-pin3d-hint{font-size:10.5px;font-weight:800;color:var(--ink-dim);margin-top:12px;text-transform:uppercase;letter-spacing:0.3px;}
.cr-pin3d-confirm-footer{display:none;flex-direction:column;align-items:center;gap:12px;margin-top:14px;width:100%;}
.cr-pin3d-confirm-footer.show{display:flex;}
.cr-pin3d-confirm-footer .cr-btn-primary{width:100%;}

/* ── UPLOAD INSTRUCTIONS MODAL ── */
.cr-modal-overlay{
  position:fixed;inset:0;z-index:120;background:rgba(30,40,25,0.55);
  display:none;align-items:center;justify-content:center;padding:24px;
}
.cr-modal-overlay.show{display:flex;}
.cr-modal{background:var(--cream);border-radius:20px;padding:22px;max-width:340px;width:100%;box-shadow:var(--shadow);}
.cr-modal-title{font-family:'Baloo 2',cursive;font-size:17px;margin-bottom:10px;}
.cr-modal-body{font-size:13px;color:var(--ink-dim);font-weight:700;line-height:1.6;margin-bottom:18px;}

/* ── TEXT EDIT — fullscreen, above everything (z-index higher than the
   regular .cr-modal-overlay's 120). Font-size on the input is deliberately
   large — anything under 16px triggers iOS Safari's auto-zoom on focus. ── */
.cr-text-edit-overlay{
  position:fixed;inset:0;z-index:200;background:#0b0b0b;
  display:none;flex-direction:column;
}
.cr-text-edit-overlay.show{display:flex;}
.cr-text-edit-topbar{
  display:flex;align-items:center;justify-content:space-between;flex-shrink:0;
  padding:calc(env(safe-area-inset-top,0px) + 14px) 18px 6px;
}
.cr-text-edit-icon-btn{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,0.14);color:#fff;border:none;cursor:pointer;padding:0;
}
.cr-text-edit-icon-btn svg{width:17px;height:17px;}
.cr-text-edit-confirm{background:#fff;color:#111;}
.cr-text-edit-center{
  flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:24px;
}
.cr-text-edit-input{
  width:100%;max-width:520px;background:transparent;border:none;outline:none;
  color:#fff;text-align:center;font-size:40px;font-family:'Cormorant Garamond',serif;
  caret-color:#fff;
}
.cr-text-edit-input::placeholder{color:rgba(255,255,255,0.35);}
/* Font picker — 3 independently-swipeable rows (see initFontCarousel in
   create.js). Whichever row the customer swipes becomes "active"; the item
   nearest that row's center scales up live as they drag (JS-driven, since
   scroll-driven CSS animations aren't reliably supported yet), settling
   there via scroll-snap on release. Swiping a different row resets the
   previous one back to uniform size. The mask-image fades each row toward
   the screen edges so items don't just hard-cut off mid-swipe. */
.cr-font-carousel{
  display:flex;flex-direction:column;gap:2px;flex-shrink:0;
  padding:8px 0 calc(env(safe-area-inset-bottom,0px) + 10px);
}
.cr-font-carousel-row{
  display:flex;align-items:center;overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  padding:24px 0; /* extra clearance so the ~2x-scaled centered item never clips vertically */
  mask-image:linear-gradient(to right, transparent, black 12%, black 88%, transparent);
  -webkit-mask-image:linear-gradient(to right, transparent, black 12%, black 88%, transparent);
}
.cr-font-carousel-row::-webkit-scrollbar{display:none;}
.cr-font-carousel-spacer{flex-shrink:0;}
.cr-font-carousel-item{
  /* Smaller base size + real margin between items — scale() doesn't push
     neighbors out of the way, so the centered item (which scales up to
     ~2x, see applyFontRowScale in create.js) needs real breathing room on
     both sides or it visually overlaps whatever's next to it. */
  flex-shrink:0;background:none;border:none;cursor:pointer;white-space:nowrap;
  color:rgba(255,255,255,0.5);font-size:13px;padding:4px 6px;margin:0 22px;
  transform:scale(1);transform-origin:center;transition:color 0.15s linear;
}
.cr-font-carousel-item.centered{color:#fff;}

/* ── PNG / TRANSPARENCY INFOGRAPHIC ── */
.cr-png-infographic{display:flex;align-items:center;justify-content:center;gap:10px;margin:4px 0;}
.cr-png-card{display:flex;flex-direction:column;align-items:center;gap:6px;}
.cr-png-swatch{
  width:76px;height:76px;border-radius:14px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--border);
}
.cr-png-swatch.solid{background:#cfd6c9;}
.cr-png-swatch.checker{background:repeating-conic-gradient(#d8d8d8 0% 25%, #f2f2f2 0% 50%) 50% / 16px 16px;}
.cr-png-shape{width:34px;height:34px;border-radius:50%;background:var(--coral);display:block;}
.cr-png-label{font-size:10.5px;font-weight:800;color:var(--ink-dim);text-align:center;}
.cr-png-card.bad .cr-png-label{color:#c23d5e;}
.cr-png-card.good .cr-png-label{color:#3f6b34;}
.cr-png-arrow{font-size:18px;color:var(--ink-dim);}

/* ── SAVE CODE / CONFIRMATION ── */
.cr-save-code{
  font-family:'Baloo 2',cursive;font-size:32px;letter-spacing:4px;color:var(--ink);
  background:var(--sage-light);border:2px dashed var(--sage);border-radius:16px;
  padding:16px;margin:16px 0;text-align:center;
}
.cr-done-steps{text-align:left;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px;margin:16px 0;}
.cr-done-step{font-size:13px;font-weight:700;color:var(--ink);line-height:1.6;margin-bottom:6px;}
.cr-done-step:last-child{margin-bottom:0;}
.cr-done-step b{color:var(--coral);}

/* ── SHARED CONTROLS (used in the tool panels + submit form) ── */
.cr-upload-btn{
  display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:11px;
  border-radius:13px;border:2px dashed var(--sage);background:var(--sage-light);color:var(--ink);
  font-weight:800;font-size:12px;cursor:pointer;text-align:center;
}

.cr-gradient-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;}
.cr-gradient-swatch{aspect-ratio:1/1;border-radius:10px;border:2px solid transparent;box-shadow:inset 0 0 0 1px var(--border);cursor:pointer;padding:0;}
.cr-gradient-swatch:active{border-color:var(--ink);}

.cr-preset-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;}
.cr-preset-thumb{
  aspect-ratio:1/1;border-radius:11px;border:1px solid var(--border);background:var(--card);
  cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.cr-preset-thumb img{width:100%;height:100%;object-fit:contain;}
.cr-preset-thumb svg{width:100%;height:100%;color:var(--ink-dim);}
.cr-preset-thumb.active{border-color:var(--coral);border-width:2px;}
.cr-preset-thumb.active svg{color:var(--coral);}

.cr-range{width:100%;accent-color:var(--sage);height:16px;margin:4px 0 2px;}
/* Midpoint sliders: default value sits at dead-center of the track — left of
   center shrinks/rotates counter-clockwise, right grows/rotates clockwise. */
.cr-range-mid{background:linear-gradient(to right, transparent 49.5%, var(--border) 49.5%, var(--border) 50.5%, transparent 50.5%);}
.cr-slider-val{font-weight:900;color:var(--ink);text-transform:none;letter-spacing:0;}

.cr-text-input{
  /* font-size must stay >=16px — anything smaller makes iOS Safari
     auto-zoom the whole page when the field gets focus. */
  width:100%;padding:9px 11px;border-radius:10px;border:1.5px solid var(--border);
  background:var(--card);color:var(--ink);font-size:16px;font-weight:700;outline:none;margin-bottom:6px;
}
.cr-text-input:focus{border-color:var(--sage);}
.cr-text-input::placeholder{color:rgba(34,48,31,0.35);font-weight:600;}

.cr-select{
  flex:1;padding:7px 10px;border-radius:10px;border:1.5px solid var(--border);background:var(--card);
  color:var(--ink);font-size:16px;font-weight:700;outline:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%236E7A69'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:22px;
}

.cr-checkbox-row{
  display:flex;align-items:center;gap:6px;margin-top:8px;font-size:11.5px;font-weight:700;color:var(--ink);cursor:pointer;
}
.cr-checkbox-row input{width:16px;height:16px;accent-color:var(--sage);flex-shrink:0;}
.cr-hint{font-size:10px;color:var(--ink-dim);margin-top:8px;line-height:1.4;font-weight:600;}
.cr-warning{
  margin-top:8px;padding:8px 10px;border-radius:10px;background:var(--coral-light);
  border:1px solid rgba(255,111,145,0.35);color:#c23d5e;font-size:11px;font-weight:700;line-height:1.4;
}
.cr-empty-hint{font-size:11.5px;color:var(--ink-dim);font-weight:700;padding:8px 2px 4px;}
.cr-preset-grid .cr-empty-hint{grid-column:1/-1;}

.cr-color-picker-btn{
  position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:44px;
  border-radius:12px;border:2px solid rgba(255,255,255,0.55);cursor:pointer;overflow:hidden;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,0.12);
}
.cr-color-picker-btn span{
  font-size:11.5px;font-weight:800;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,0.55);pointer-events:none;
}
.cr-color-picker-btn input[type=color]{
  position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0;
}

/* ── CURVE / COLOR GRID PICKERS (text tool) — font picking moved into the
   fullscreen text-edit overlay, see .cr-font-carousel ── */
.cr-curve-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;}
.cr-curve-swatch{
  aspect-ratio:1/0.85;border-radius:11px;border:1.5px solid var(--border);background:var(--card);
  cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:6px;
}
.cr-curve-swatch.active{border-color:var(--coral);border-width:2px;}
.cr-curve-icon{width:32px;height:20px;color:var(--ink);}
.cr-curve-icon svg{width:100%;height:100%;}
.cr-curve-label{font-size:9.5px;font-weight:800;color:var(--ink-dim);text-transform:uppercase;letter-spacing:0.02em;}

.cr-color-swatch-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;}
.cr-color-swatch{
  aspect-ratio:1/1;border-radius:50%;border:2px solid rgba(0,0,0,0.12);cursor:pointer;padding:0;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.4);position:relative;
}
.cr-color-swatch.active{border-color:var(--coral);border-width:3px;}
.cr-color-swatch-picker{
  display:flex;align-items:center;justify-content:center;background:var(--card);color:var(--ink-dim);overflow:hidden;
}
.cr-color-swatch-picker svg{width:60%;height:60%;pointer-events:none;}
.cr-color-swatch-picker input[type=color]{
  position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0;
}

.cr-btn-primary{
  width:100%;padding:15px;border-radius:50px;border:none;background:var(--pill);color:var(--pill-text);
  font-size:16px;cursor:pointer;box-shadow:var(--shadow);transition:transform 0.1s;
}
.cr-btn-primary:active{transform:scale(0.98);}
.cr-btn-primary:disabled{opacity:0.4;cursor:not-allowed;}

/* ── CANVAS PREVIEW ── */
.cr-canvas-stage{
  /* Actual size is set in JS (sizeCanvasStage) as an explicit square pixel
     value, already shrunk to leave margin for the decorations — percentage
     max-width/max-height here would fight that (a non-square wrap gives a
     non-square 80%, warping the circular pin into an oval), so this stays
     100% and only acts as a safety ceiling. */
  position:relative;z-index:1;max-width:100%;max-height:100%;
  margin-top:95px; /* clears the element strip above, with a gap = 1x its icon size */
  background:transparent;touch-action:none;
  /* drop-shadow (not box-shadow) hugs the actual circular pin shape drawn on
     the canvas, instead of casting a square shadow behind it. */
  filter:drop-shadow(0 10px 22px rgba(60,70,40,0.22));
  -webkit-user-select:none;user-select:none;
}
.cr-canvas-stage canvas{width:100%;height:100%;display:block;cursor:grab;border-radius:50%;}
.cr-canvas-stage canvas:active{cursor:grabbing;}
.cr-legend{display:flex;justify-content:center;gap:18px;font-size:10.5px;font-weight:800;color:var(--ink-dim);}
.cr-legend-swatch{display:inline-block;width:14px;height:3px;margin-right:6px;vertical-align:middle;border-radius:2px;}
.cr-legend-cut{background:var(--coral);}
.cr-legend-safe{background:var(--sage);border-top:2px dashed var(--sage);height:0;}

/* ── SUBMIT ── */
.cr-submit-layout{display:grid;grid-template-columns:1fr 320px;gap:24px;}
@media (max-width:820px){.cr-submit-layout{grid-template-columns:1fr;}}
.cr-field-label{display:block;font-size:10.5px;font-weight:800;color:var(--ink-dim);margin:10px 0 5px;text-transform:uppercase;letter-spacing:0.4px;}
.cr-back-link{display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:2px 0 8px;font-size:11.5px;font-weight:800;color:var(--coral);cursor:pointer;}
.cr-req{color:var(--coral);}
.cr-optional{color:var(--ink-dim);font-weight:600;text-transform:none;letter-spacing:0;}
.cr-submit-summary{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:18px;height:fit-content;box-shadow:var(--shadow-sm);}
.cr-submit-summary img{width:100%;border-radius:14px;margin-bottom:12px;display:block;}

/* ── DONE ── */
.cr-done-box{text-align:center;max-width:420px;margin:60px auto;}
.cr-done-icon{font-size:60px;margin-bottom:16px;}

/* ── MOBILE TIGHTENING ── */
@media (max-width:480px){
  .cr-main{padding:20px 14px 60px;}
  .cr-product-grid,.cr-size-grid{grid-template-columns:repeat(2,1fr);}
  .cr-steps{gap:12px;}
  .cr-step-label{display:none;}
}

/* Crawlable intro text under the product grid (SEO — see create.html) */
.cr-seo{margin-top:36px;padding-top:20px;border-top:1px solid var(--border);color:var(--ink-dim);font-size:13px;line-height:1.65;max-width:680px;}
.cr-seo h2{font-size:15px;color:var(--ink);margin-bottom:8px;}
.cr-seo h3{font-size:13px;color:var(--ink);margin:14px 0 4px;}
.cr-seo strong{color:var(--ink);}

/* ── HOME: sticker sheets feature card + separation from the pin types ── */
.cr-home-label{font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-dim);margin:6px 2px 10px;}
.cr-feature-card{
  display:flex;align-items:center;gap:16px;padding:14px 18px;border-radius:20px;text-decoration:none;color:var(--ink);
  background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-sm);position:relative;overflow:hidden;
  transition:transform 0.15s,box-shadow 0.15s;
}
.cr-feature-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(180deg,#bfe0a8,#ffd9a8 55%,#ff8fb1);}
.cr-feature-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.cr-feature-thumb{flex:0 0 auto;width:58px;height:74px;filter:drop-shadow(0 3px 6px rgba(0,0,0,.12));}
.cr-feature-text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1;}
.cr-feature-name{font-family:'Baloo 2',cursive;font-size:18px;font-weight:800;line-height:1.15;}
.cr-feature-desc{font-size:12.5px;font-weight:700;color:var(--ink-dim);line-height:1.4;}
.cr-feature-go{font-size:20px;font-weight:800;color:var(--coral);flex:0 0 auto;}
.cr-home-divider{display:flex;align-items:center;gap:12px;margin:22px 0 14px;color:var(--ink-dim);font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;}
.cr-home-divider::before,.cr-home-divider::after{content:'';flex:1;height:1px;background:var(--border);}
