/* ============================================================
   Family Connection Site — shared design (Phase 1)
   Cozy "family living room" · phone-first · 3 themes
   ============================================================ */

/* ---- Theme tokens ---- */
:root,
[data-theme="cream"]{
  --bg:#FAF6F0; --bg2:#F3ECDD; --card:#FFFFFF; --ink:#2A2622; --muted:#8C8178;
  --sand:#C4A87A; --sand-dim:#EFE6D6; --red:#AA3131; --line:#EAE0D3;
  --green:#5B9A6B; --amber:#C89B4B; --sleep:#8A93A6;
  --shadow:0 2px 14px rgba(60,45,25,.06);
  --nav-bg:#FFFFFF;
}
[data-theme="night"]{
  --bg:#1C1A17; --bg2:#252118; --card:#26231F; --ink:#F0E9DF; --muted:#9A9186;
  --sand:#C4A87A; --sand-dim:#332E25; --red:#D06A5A; --line:#38322A;
  --green:#6FB57F; --amber:#D6B15E; --sleep:#8A93A6;
  --shadow:0 2px 16px rgba(0,0,0,.30);
  --nav-bg:#26231F;
}
[data-theme="scrapbook"]{
  --bg:#F6EFE4; --bg2:#EDE0CC; --card:#FFFDF8; --ink:#3A322A; --muted:#95856F;
  --sand:#D69A5C; --sand-dim:#F3E4CE; --red:#C25141; --line:#E6D6BE;
  --green:#6DA36B; --amber:#D9A054; --sleep:#9AA0AE;
  --shadow:0 3px 16px rgba(90,60,20,.10);
  --nav-bg:#FFFDF8;
}

*{box-sizing:border-box;margin:0;padding:0}
html{overscroll-behavior-y:none}
body{
  font-family:'Inter',system-ui,sans-serif; background:var(--bg); color:var(--ink);
  line-height:1.55; padding:20px 16px 225px; min-height:100dvh; transition:background .3s,color .3s;
  -webkit-tap-highlight-color:transparent; overscroll-behavior-y:none;
}
.wrap{max-width:960px;margin:0 auto}

/* ---- Header ---- */
.brand{text-align:center;margin-bottom:6px}
.brand h1{font-family:'Playfair Display',serif;font-weight:600;font-size:clamp(24px,7vw,32px);letter-spacing:.3px}
.brand p{color:var(--muted);font-size:14px;margin-top:2px}

/* ---- Family name (tap to rename) ---- */
.family-name{
  font-family:'Playfair Display',serif;font-style:italic;font-weight:600;font-size:22px;
  text-align:center;margin:2px 0 0;color:var(--ink);outline:none;border-bottom:1px dashed transparent;
  padding:2px 6px;border-radius:6px;cursor:text;
}
.family-name:hover, .family-name:focus{border-bottom-color:var(--sand);background:var(--sand-dim)}
.family-name-hint{text-align:center;font-size:10.5px;color:var(--muted);margin-top:2px}

.section-head{font-family:'Playfair Display',serif;font-style:italic;font-weight:600;font-size:16px;color:var(--ink);
  display:flex;align-items:center;gap:6px;margin:20px 0 10px}
.section-head .ic{font-style:normal;font-family:'Inter',sans-serif}

/* ---- Theme switch (top-right) ---- */
.theme-row{display:flex;justify-content:center;gap:7px;margin:12px 0 4px}
.theme-dot{
  width:26px;height:26px;border-radius:50%;cursor:pointer;border:2.5px solid transparent;transition:.2s;
}
.theme-dot.on{border-color:var(--ink)}
.td-cream{background:#FAF6F0}
.td-night{background:#26231F}
.td-scrapbook{background:linear-gradient(135deg,#F6EFE4,#D69A5C)}

/* ---- Toolbar ---- */
.bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:16px}
.btn{
  border:1px solid var(--sand);background:var(--card);color:var(--ink);font-family:inherit;
  font-size:13px;font-weight:500;cursor:pointer;padding:9px 16px;border-radius:10px;transition:.2s;
  display:inline-flex;align-items:center;gap:6px;
}
.btn:hover{background:var(--sand);color:#fff}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--red);border-color:var(--red);color:#fff}
.btn.primary:hover{filter:brightness(1.08)}

/* ---- Avatar (shared) ---- */
.av{width:46px;height:46px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px;color:#fff;position:relative;background-color:var(--sand)}
.status-ring{position:absolute;bottom:-1px;right:-1px;width:14px;height:14px;border-radius:50%;border:2.5px solid var(--card)}
.s-online{background:var(--green)}.s-away{background:var(--amber)}.s-asleep{background:var(--sleep)}

/* ---- Pin type chips (used in the pin modal) ---- */
.chip-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.chip{border:1px solid var(--line);background:var(--card);border-radius:20px;cursor:pointer;font-family:inherit;font-size:12px;padding:5px 12px;color:var(--muted);transition:.15s}
.chip.on{background:var(--sand-dim);border-color:var(--sand);color:var(--sand)}

/* ============================================================
   CORKBOARD — the group wall (scrapbook)
   ============================================================ */
.wall-title{font-family:'Playfair Display',serif;font-style:italic;font-weight:600;font-size:24px;margin:6px 2px 12px}

.board{
  position:relative; width:100%; min-height:560px; border-radius:14px; overflow:hidden;
  border:12px solid #7a5230; box-shadow:var(--shadow), inset 0 0 60px rgba(90,55,20,.25);
  background-color:#c9a06a;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(120,80,40,.18) 0 2px, transparent 3px),
    radial-gradient(circle at 65% 60%, rgba(120,80,40,.14) 0 2px, transparent 3px),
    radial-gradient(circle at 80% 20%, rgba(150,110,60,.16) 0 2px, transparent 3px),
    radial-gradient(circle at 40% 80%, rgba(120,80,40,.14) 0 2px, transparent 3px);
  background-size:26px 26px,34px 34px,30px 30px,38px 38px;
  touch-action:pan-y;
}
[data-theme="night"] .board{border-color:#4a3420;background-color:#8a6a44}

/* pinned items */
.pin{position:absolute;cursor:grab;user-select:none;-webkit-user-select:none;transition:box-shadow .15s;will-change:left,top;touch-action:none}
.pin:active{cursor:grabbing;z-index:50!important}
.pin .tack{position:absolute;top:-9px;left:50%;transform:translateX(-50%);width:16px;height:16px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#ff8a7a,#c23a2a);box-shadow:0 2px 4px rgba(0,0,0,.35);z-index:2}

/* polaroid photo */
.pin.photo{background:#fffdf8;padding:8px 8px 26px;border-radius:3px;box-shadow:0 6px 16px rgba(0,0,0,.28);width:150px}
.pin.photo img{width:100%;display:block;border-radius:2px;pointer-events:none}
.pin.photo .cap{font-family:'Playfair Display',serif;font-size:12px;text-align:center;color:#4a423b;margin-top:6px;font-style:italic}

/* sticky note */
.pin.note{width:130px;padding:14px 12px;border-radius:2px;box-shadow:0 5px 14px rgba(0,0,0,.22);font-size:13px;color:#4a3f2a;
  background:#fdf3a8;font-family:'Inter',sans-serif;line-height:1.4;transform-origin:center}
.pin.note.c-blue{background:#bfe0f0;color:#25414a}
.pin.note.c-pink{background:#f6c9d6;color:#5a2a3a}
.pin.note.c-green{background:#cbe8b8;color:#2f4a1f}

/* speech bubble */
.pin.bubble{width:150px;padding:12px 14px;background:#fffdf8;border:1px solid #e6d6be;border-radius:16px;
  box-shadow:0 5px 14px rgba(0,0,0,.20);font-size:13px;color:#3a322a}
.pin.bubble::after{content:'';position:absolute;bottom:-9px;left:24px;width:16px;height:16px;background:#fffdf8;
  border-right:1px solid #e6d6be;border-bottom:1px solid #e6d6be;transform:rotate(45deg)}
.pin.bubble .by{font-size:10.5px;color:#95856f;margin-top:5px;font-weight:500}

.pin .del-pin{position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;background:var(--red);color:#fff;
  border:none;font-size:12px;cursor:pointer;display:none;align-items:center;justify-content:center;line-height:1;z-index:3}
.pin:hover .del-pin{display:flex}

.board-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;
  color:#5a3f22;font-size:14px;font-style:italic;pointer-events:none;padding:30px 30px 60px}

/* toolbar embedded in the board's top edge */
.board-toolbar{
  position:absolute;top:10px;left:10px;right:10px;z-index:10;display:flex;gap:8px;justify-content:flex-end;
}
.board-toolbar .btn{background:rgba(255,253,248,.92);backdrop-filter:blur(2px);font-size:12px;padding:7px 12px}

/* ============================================================
   GROUP WALL — chat-style thread
   ============================================================ */
.wall-list{display:flex;flex-direction:column;gap:12px;min-height:60px}
.wall-empty{text-align:center;color:var(--muted);font-size:13px;font-style:italic;padding:20px 10px}
.wmsg{display:flex;gap:9px;align-items:flex-start}
.wmsg .wav{flex:none}
.wbody{background:var(--card);border:1px solid var(--line);border-radius:14px;border-top-left-radius:4px;
  padding:9px 12px;max-width:78%;box-shadow:var(--shadow);position:relative}
.whead{display:flex;align-items:baseline;gap:7px;margin-bottom:2px}
.wname{font-size:12px;font-weight:600;color:var(--ink)}
.wtime{font-size:10.5px;color:var(--muted)}
.wtext{font-size:14px;color:var(--ink);white-space:pre-wrap;word-break:break-word}
.wvoice{display:flex;align-items:center;gap:8px;padding:2px 0}
.wvoice .play{width:28px;height:28px;border-radius:50%;background:var(--sand);color:#fff;border:none;font-size:12px;cursor:pointer;flex:none;display:flex;align-items:center;justify-content:center}
.wvoice .bars{flex:1;display:flex;align-items:center;gap:2px;height:16px;min-width:60px}
.wvoice .bars span{width:3px;background:var(--sand);border-radius:2px;opacity:.6}
.wvoice .dur{font-size:10.5px;color:var(--muted);flex:none}
.wreacts{display:flex;gap:4px;margin-top:5px;flex-wrap:wrap;align-items:center}
.wreacts .rc{background:var(--bg);border:1px solid var(--line);border-radius:10px;font-size:10px;padding:1px 6px}
.wreact-add{border:none;background:none;color:var(--muted);font-size:11px;cursor:pointer;padding:1px 4px}
.wreact-pop{display:none;gap:3px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:4px 6px;
  box-shadow:var(--shadow);position:absolute;top:-38px;left:0;z-index:6}
.wreact-pop.show{display:flex}
.wreact-pop button{border:none;background:none;font-size:15px;cursor:pointer;padding:2px}

.wmsg.tease .wbody{background:#FFF3E0;border-color:#F0A93B}
[data-theme="night"] .wmsg.tease .wbody{background:#3a2a10;border-color:#D9A054}
.tease-label{font-size:10px;font-weight:700;color:#B5651D;margin-bottom:3px;display:flex;align-items:center;gap:4px}
[data-theme="night"] .tease-label{color:#F0A93B}

.wall-compose{
  position:sticky;bottom:212px;z-index:20;background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:8px 10px 10px;box-shadow:var(--shadow);margin-top:12px;
}
.compose-as{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);margin-bottom:6px}
.compose-as select{width:auto;padding:3px 8px;font-size:11px;border-radius:8px}
.compose-row{display:flex;align-items:center;gap:6px}
.compose-row input[type=text],.compose-row input:not([type]){flex:1;border-radius:20px;padding:8px 14px}
.compose-icon{border:none;background:var(--sand-dim);border-radius:50%;width:34px;height:34px;font-size:15px;cursor:pointer;flex:none;
  display:flex;align-items:center;justify-content:center}
.compose-icon.send{background:var(--red);color:#fff}
.compose-icon.recording{background:var(--red);color:#fff;animation:pulse 1s infinite}
.wrec-row{display:flex;align-items:center;gap:8px;flex:1;font-size:12px;color:var(--red)}
.wpending{display:flex;align-items:center;gap:6px;background:var(--sand-dim);border-radius:10px;padding:5px 9px;margin-bottom:6px;font-size:12px}
.wpending button{border:none;background:none;color:var(--muted);cursor:pointer;font-size:13px;margin-left:auto}

/* ============================================================
   PRESENCE CAROUSEL — fixed bottom, swipe to browse family
   ============================================================ */
.carousel-wrap{
  position:fixed;left:0;right:0;bottom:0;background:var(--nav-bg);border-top:1px solid var(--line);
  padding:46px 0 16px;z-index:40;box-shadow:0 -2px 14px rgba(60,45,25,.08);
  padding-bottom:calc(16px + env(safe-area-inset-bottom));
}
.carousel-bubble{min-height:32px;text-align:center;margin-bottom:6px;padding:0 16px;display:flex;align-items:center;justify-content:center;gap:8px}
.carousel-bubble .msg{display:inline-flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:6px 10px 6px 14px;font-size:12px;color:var(--ink);box-shadow:var(--shadow);max-width:78vw}
.carousel-bubble .msg > span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:56vw;display:inline-block;vertical-align:middle}
.carousel-bubble .msg .meta{color:var(--muted);font-size:10.5px;white-space:nowrap}
.carousel-bubble .qa{border:none;background:var(--sand-dim);border-radius:50%;width:24px;height:24px;font-size:12px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;color:var(--red);flex:none}
.carousel-track{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:4px 44vw;
  -webkit-mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent);mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent)}
.carousel-track::-webkit-scrollbar{display:none}
.citem{position:relative;flex:none;scroll-snap-align:center;text-align:center;transform:scale(.68);opacity:.45;cursor:pointer;will-change:transform,opacity}
.citem .av{margin:0 auto;box-shadow:0 6px 14px rgba(0,0,0,.35)}
.citem .nm{font-size:12px;color:var(--muted);margin-top:6px;font-weight:500;max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .15s,font-weight .15s}
.citem.active .nm{color:var(--ink);font-weight:600}
.citem.addnew .av{background:transparent;border:2px dashed var(--sand);color:var(--sand);font-size:22px}
.citem .thought{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:8px;background:#fff;color:#2A2622;
  font-family:'Inter',sans-serif;font-size:10.5px;border-radius:12px;padding:5px 10px;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;max-width:100px;box-shadow:0 3px 8px rgba(0,0,0,.3);pointer-events:none}
.citem .thought::after{content:'';position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);width:8px;height:8px;
  background:#fff;border-radius:50%}
.citem.active .thought{display:none}

@keyframes shake{
  0%,100%{transform:translateX(0) rotate(0)}
  20%{transform:translateX(-6px) rotate(-6deg)}
  40%{transform:translateX(5px) rotate(5deg)}
  60%{transform:translateX(-4px) rotate(-3deg)}
  80%{transform:translateX(3px) rotate(3deg)}
}
.citem .av.shake{animation:shake .5s ease}

/* ============================================================
   PHASE 2 — Expression
   ============================================================ */

/* 2A · presets, emoji picker, reactions */
.preset-row{display:flex;gap:6px;overflow-x:auto;padding:2px 0 4px;scrollbar-width:none}
.preset-row::-webkit-scrollbar{display:none}
.preset-chip{flex:none;border:1px solid var(--line);background:var(--card);border-radius:16px;cursor:pointer;font-family:inherit;font-size:12px;padding:6px 12px;color:var(--ink);white-space:nowrap}
.preset-chip:hover{background:var(--sand-dim);border-color:var(--sand)}
.text-tools{position:relative}
.emoji-btn{position:absolute;right:8px;top:8px;border:none;background:none;font-size:16px;cursor:pointer;z-index:2}
.emoji-pop{display:none;position:absolute;right:0;top:34px;background:var(--card);border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--shadow);padding:8px;grid-template-columns:repeat(5,1fr);gap:2px;z-index:5;width:190px}
.emoji-pop.show{display:grid}
.emoji-pop.up{top:auto;bottom:38px}
.emoji-pop button{border:none;background:none;font-size:18px;cursor:pointer;padding:5px;border-radius:6px}
.emoji-pop button:hover{background:var(--sand-dim)}

.pin .reacts{position:absolute;bottom:-9px;right:6px;display:flex;gap:2px;z-index:3}
.pin .reacts .rc{background:var(--card);border:1px solid var(--line);border-radius:10px;font-size:10px;padding:1px 5px;display:flex;align-items:center;gap:2px;box-shadow:0 2px 4px rgba(0,0,0,.15)}
.pin .react-btn{position:absolute;top:-9px;left:-9px;width:22px;height:22px;border-radius:50%;background:var(--card);border:1px solid var(--line);
  font-size:11px;cursor:pointer;display:none;align-items:center;justify-content:center;z-index:3}
.pin:hover .react-btn{display:flex}
.react-pop{display:none;position:absolute;top:-40px;left:-9px;background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:5px 7px;gap:3px;box-shadow:var(--shadow);z-index:6}
.react-pop.show{display:flex}
.react-pop button{border:none;background:none;font-size:16px;cursor:pointer;padding:2px}
.rpop-anim{animation:bump .35s}

/* 2B · voice pin */
.pin.voice{width:140px;padding:14px 12px;background:#3d3128;border-radius:10px;box-shadow:0 6px 16px rgba(0,0,0,.28);color:#f0e6d6}
[data-theme="cream"] .pin.voice, [data-theme="scrapbook"] .pin.voice{background:#4a3a2a}
.pin.voice .vrow{display:flex;align-items:center;gap:8px}
.pin.voice .play{width:30px;height:30px;border-radius:50%;background:#f0e6d6;color:#3d3128;border:none;font-size:13px;cursor:pointer;flex:none;
  display:flex;align-items:center;justify-content:center}
.pin.voice .bars{flex:1;display:flex;align-items:center;gap:2px;height:18px}
.pin.voice .bars span{width:3px;background:#c9b088;border-radius:2px}
.pin.voice .dur{font-size:10px;color:#c9b088;flex:none}
.rec-ui{text-align:center;padding:10px 0}
.rec-btn{width:64px;height:64px;border-radius:50%;background:var(--red);border:none;cursor:pointer;color:#fff;font-size:22px;
  display:flex;align-items:center;justify-content:center;margin:0 auto 10px}
.rec-btn.recording{animation:pulse 1s infinite}
.rec-time{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.rec-preview audio{width:100%;margin-top:8px}

/* 2C · avatar type + cartoon grid */
.type-row{display:flex;gap:6px;margin-top:6px}
.type-row .chip{flex:1;text-align:center}
.ava-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:8px}
.ava-opt{border:2px solid transparent;background:var(--bg);border-radius:10px;font-size:20px;padding:6px 0;cursor:pointer;text-align:center}
.ava-opt.on{border-color:var(--sand);background:var(--sand-dim)}

/* 2D · scheduling + reminder */
.sched-row{display:flex;align-items:center;gap:8px;margin-top:12px}
.sched-row input[type=checkbox]{width:auto}
.sched-row label{margin:0;font-size:12.5px;color:var(--ink);font-weight:400;text-transform:none;letter-spacing:0}
.pin .sched-badge{position:absolute;top:-9px;left:-9px;background:var(--amber);color:#3a2a05;font-size:9px;border-radius:8px;padding:2px 6px;font-weight:600}
.reminder-bar{display:flex;align-items:center;gap:10px;background:var(--sand-dim);border:1px solid var(--sand);border-radius:12px;
  padding:10px 14px;margin-bottom:14px;font-size:13px;color:var(--ink)}
.reminder-bar button{margin-left:auto;border:none;background:none;color:var(--muted);font-size:16px;cursor:pointer}

/* ============================================================
   PHASE 3 — Moment tags + highlights
   ============================================================ */
.tag-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;margin-bottom:6px}
.tag-milestone{background:#FAEEDA;color:#854F0B}
[data-theme="night"] .tag-milestone{background:#4a3a10;color:#FAC775}
.tag-atm{background:#E1F5EE;color:#0F6E56}
[data-theme="night"] .tag-atm{background:#0f2a22;color:#5DCAA5}
.tag-wisdom{background:#EEEDFE;color:#3C3489}
[data-theme="night"] .tag-wisdom{background:#221c40;color:#AFA9EC}
.tag-social{background:#FBEAF0;color:#72243E}
[data-theme="night"] .tag-social{background:#3a1a26;color:#ED93B1}

.pin.tagged{box-shadow:0 0 0 3px rgba(250,199,117,.55), 0 6px 16px rgba(0,0,0,.28)}
.wmsg.tagged .wbody{border-color:#EF9F27;border-width:1.5px}

.tag-select{width:auto;padding:5px 8px;font-size:11px;border-radius:8px;margin-bottom:8px}

.highlights-bar{display:flex;justify-content:flex-end;margin:2px 0 -4px}
.hl-toggle{border:1px solid var(--line);background:var(--card);border-radius:16px;font-size:11px;padding:5px 12px;cursor:pointer;color:var(--muted);font-family:inherit}
.hl-toggle.on{background:var(--sand-dim);border-color:var(--sand);color:var(--sand);font-weight:600}

/* ============================================================
   PHASE 5D — Device / profile lock + admin approval
   ============================================================ */
.compose-as{flex-wrap:wrap}
.lock-btn{padding:3px 8px;font-size:10px}
.lock-btn.on{background:var(--sand-dim);border-color:var(--sand);color:var(--sand)}
.locked-label{display:inline-flex;align-items:center;gap:4px;font-weight:600;color:var(--ink)}
.pending-bar{flex-wrap:wrap;gap:8px}
.pending-bar .btn{padding:4px 10px;font-size:11px}
.pending-bar button.dismiss-x{border:none;background:none;color:var(--muted);font-size:16px;cursor:pointer;margin-left:auto}
.locked-notice{text-align:center;font-size:13px;color:var(--muted);margin-bottom:6px}

/* ============================================================
   PHASE 5E — Carousel polish + photo lightbox
   ============================================================ */
#lbOverlay{background:rgba(10,8,6,.9)}
.lightbox-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.5)}

/* ============================================================
   PHASE 5 — Go live (sync + passcode gate)
   ============================================================ */
.lock-overlay{z-index:100;background:rgba(20,16,12,.75)}
.lock-modal{max-width:320px;text-align:center}
.lock-modal h3{margin-bottom:4px}
.lock-hint{font-size:13px;color:var(--muted);margin-bottom:14px}
.lock-modal input{text-align:center;letter-spacing:2px;font-size:16px}
.lock-msg{font-size:12px;color:var(--red);min-height:16px;margin-top:8px}

/* ============================================================
   PHASE 4 — Play + affection
   ============================================================ */

/* 4A · teasing uses .carousel-bubble .qa (shared) + .citem .av.shake (above) */

/* 4B · art for love — decorated pin + mini paint tool */
.pin.art{background:#fffdf8;padding:10px;border-radius:4px;box-shadow:0 6px 16px rgba(0,0,0,.28);width:150px;
  border:3px solid #fff;outline:2px dashed var(--sand);outline-offset:-1px}
.pin.art img{width:100%;display:block;border-radius:2px;pointer-events:none;background:#fff}
.pin.art .art-badge{position:absolute;top:-9px;right:-9px;width:22px;height:22px;border-radius:50%;background:var(--sand);
  color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,.25);z-index:3}
.pin.art .cap{font-family:'Playfair Display',serif;font-size:11.5px;text-align:center;color:#4a423b;margin-top:6px;font-style:italic}

.paint-canvas-holder{border:2px dashed var(--line);border-radius:10px;overflow:hidden;background:#fff;touch-action:none;margin-top:6px}
#pCanvas{display:block;width:100%;height:200px;cursor:crosshair;touch-action:none}
.paint-tools{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.paint-colors{display:flex;gap:6px;flex-wrap:wrap}
.paint-color{width:24px;height:24px;border-radius:50%;cursor:pointer;border:2px solid transparent;padding:0}
.paint-color.on{border-color:var(--ink)}
.paint-sizes{display:flex;gap:4px}
.paint-size-btn{border:1px solid var(--line);background:var(--card);border-radius:8px;cursor:pointer;width:30px;height:30px;
  display:flex;align-items:center;justify-content:center}
.paint-size-btn.on{border-color:var(--sand);background:var(--sand-dim)}
.paint-size-dot{border-radius:50%;background:var(--ink);display:block}
.paint-clear{margin-left:auto;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:5px 10px;
  font-size:11px;cursor:pointer;color:var(--muted);font-family:inherit}

/* ---- Inputs ---- */
label{display:block;font-size:12px;font-weight:500;color:var(--muted);margin:12px 0 5px}
input,select,textarea{width:100%;font-family:inherit;font-size:14px;color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--bg)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--sand)}
textarea{resize:none;min-height:64px}
.row{display:flex;gap:10px}.row>div{flex:1}
.swatches{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}
.sw{width:30px;height:30px;border-radius:50%;cursor:pointer;border:3px solid transparent}
.sw.on{border-color:var(--ink)}

/* ---- Modal ---- */
.overlay{position:fixed;inset:0;background:rgba(20,16,12,.5);display:none;align-items:center;justify-content:center;padding:20px;z-index:60}
.overlay.show{display:flex}
.modal{background:var(--card);border-radius:18px;padding:24px;width:100%;max-width:430px;box-shadow:0 20px 60px rgba(0,0,0,.30);max-height:90vh;overflow:auto}
.modal h3{font-family:'Playfair Display',serif;font-size:22px;font-weight:600;margin-bottom:8px}
.modal-btns{display:flex;gap:10px;margin-top:22px}
.modal-btns .btn{flex:1;justify-content:center;padding:12px}
.del{color:var(--red);background:none;border:none;font-size:12px;cursor:pointer;margin-top:14px;font-family:inherit}

/* ---- Toast ---- */
.toast{position:fixed;bottom:220px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--bg);
  font-size:13px;padding:10px 18px;border-radius:22px;opacity:0;transition:.3s;z-index:70;pointer-events:none;box-shadow:0 6px 20px rgba(0,0,0,.2)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.foot{text-align:center;color:var(--muted);font-size:12px;margin-top:30px}
.foot b{color:var(--sand);font-weight:600}

@media(min-width:620px){
  .carousel-track{padding:4px calc(50% - 40px)}
}
