/* Round 186 — Visual Schedule and Meeting Prep. Builds on choice-board.css (cb-*). Mobile first. */
.vs [hidden],.pp [hidden],.vs-play [hidden]{display:none!important}
.vs-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:var(--bg,#DCEBFF);border-radius:18px;padding:10px;text-align:center;color:#2A1A14;font-weight:800;min-width:0}
.vs-pic{display:block;width:100%;flex:1 1 auto;min-height:0}.vs-pic img{width:100%;height:100%;object-fit:contain;display:block;max-height:100%}
.vs-lbl{font-size:1em;line-height:1.15;overflow-wrap:anywhere}
.vs-tile.is-small{width:84px;height:84px;font-size:12px;padding:6px;border-radius:14px;gap:2px}.vs-tile.is-small .vs-pic{height:46px;flex:0 0 46px}
.vs-strip{display:flex;gap:10px;overflow-x:auto;padding:6px 2px;align-items:flex-start}.vs-strip.is-ft{align-items:center}
.vs-sstep{display:flex;flex-direction:column;align-items:center;gap:2px;flex:0 0 auto}.vs-min{font-size:12px;color:#6b5b53}.vs-ftlab{font-weight:800;color:#B8341A;font-size:14px}
.vs-step .vs-steprow{display:flex;align-items:center;gap:6px;margin-bottom:6px}.vs-spacer{flex:1}
.vs-cur{display:flex;gap:8px;align-items:center;margin-bottom:6px}.vs-cur img{flex:0 0 auto;border-radius:10px;background:#f6f1ee}.vs-cur input{flex:1}
.vs-res{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.vs-pick{display:flex;flex-direction:column;align-items:center;gap:2px;width:78px;min-height:70px;border:2px solid var(--color-border,#e2d6cf);background:#fff;border-radius:12px;padding:4px;font:inherit;font-size:11px;cursor:pointer}.vs-pick.is-on,.vs-pick:hover{border-color:#D9411E}
.vs-minrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px;font-weight:700}
.vs-tprev{display:flex;justify-content:center}
.vs-disc{--p:100;--c:#2A5BD7;position:relative;width:180px;height:180px;border-radius:50%;background:conic-gradient(var(--c) calc(var(--p)*1%),#e9e4e0 0);border:4px solid #fff;box-shadow:0 0 0 3px #e2d6cf}
.vs-disc.is-big{width:min(70vw,60vh);height:min(70vw,60vh)}.vs-disc.is-mid{width:110px;height:110px}.vs-disc.is-prev{width:150px;height:150px}
.vs-count{font-size:48px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums;color:#2A1A14}.vs-count.is-mid{font-size:26px}
.vs-printarea{display:none}
/* full screen play */
.vs-play{position:fixed;inset:0;z-index:2147483000;background:#fffaf5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:56px 14px 14px;overflow:auto;touch-action:manipulation}
.vs-play canvas{pointer-events:none}
.vs-x{position:absolute;top:8px;right:8px;width:52px;height:52px;border-radius:50%;border:2px solid #d8cbc3;background:#fff;font-size:30px;line-height:1;cursor:pointer;z-index:5}
.vs-prog{font-weight:800;font-size:18px;color:#6b5b53}
.vs-dots{display:flex;gap:8px}.vs-dot{width:14px;height:14px;border-radius:50%;background:#e2d6cf}.vs-dot.is-done{background:#2e9e57}.vs-dot.is-cur{background:#D9411E;transform:scale(1.3)}
.vs-now{width:min(92vw,62vh);height:min(92vw,62vh);max-height:52vh;container-type:size}.vs-tile.is-play{width:100%;height:100%;font-size:clamp(22px,8cqmin,64px);border-radius:28px}
.vs-now .vs-tile.is-play{font-size:clamp(24px,9cqmin,70px)}
.vs-next{display:flex;align-items:center;gap:8px;font-weight:700;color:#6b5b53}
.vs-done{min-height:72px;min-width:min(86vw,360px);border:0;border-radius:24px;background:#2e9e57;color:#fff;font:inherit;font-size:28px;font-weight:800;cursor:pointer;box-shadow:0 4px 0 #1f7a42}.vs-done:active{transform:translateY(3px);box-shadow:none}
.vs-tarea{display:flex;gap:12px;align-items:center;justify-content:center;min-height:0}
.vs-ft{display:flex;flex-direction:column;gap:14px;width:min(94vw,640px);height:min(78vh,100%)}
@media (orientation:landscape) and (min-width:700px){.vs-ft{flex-direction:row;height:min(66vh,100%)}}
.vs-ftbtn{flex:1 1 0;min-height:0;display:flex;flex-direction:column;gap:6px;border:4px solid transparent;background:transparent;padding:6px;border-radius:30px;font:inherit;cursor:pointer;container-type:size}
.vs-ftword{font-size:28px;font-weight:800;color:#B8341A}.vs-ftbtn .vs-tile{flex:1;min-height:0;font-size:clamp(22px,14cqmin,64px)}
.vs-ftbtn.is-locked{opacity:.45;cursor:default}.vs-ftbtn.is-done{opacity:.5;filter:grayscale(.5)}
.vs-free{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;width:min(96vw,900px)}.vs-freebtn{position:relative;aspect-ratio:1;border:0;background:transparent;padding:0;font:inherit;cursor:pointer;container-type:size;display:flex}
.vs-freebtn .vs-tile{width:100%;height:100%;font-size:clamp(14px,11cqmin,36px)}.vs-freebtn.is-done{opacity:.45}.vs-tick{position:absolute;top:6px;right:10px;font-size:44px;color:#1f7a42;font-weight:800}
.vs-fin{display:flex;flex-direction:column;gap:14px;align-items:center;text-align:center}.vs-fin__big{font-size:clamp(40px,12vw,84px);font-weight:900;color:#2e9e57}.vs-fin__rw{font-size:clamp(24px,7vw,44px);font-weight:800;color:#2A1A14}
.vs-tbody{display:flex;flex-direction:column;align-items:center;gap:14px}.vs-end{font-size:clamp(34px,10vw,72px);font-weight:900;color:#D9411E;text-align:center}
.vs-saved h3{margin:0 0 6px}
/* meeting prep */
.pp-two{display:grid;grid-template-columns: minmax(0, 1fr);gap:8px}@media (min-width:640px){.pp-two{grid-template-columns:1fr 1fr}}
.pp textarea,.pp input[type=date]{width:100%;font-size:16px;font:inherit;min-height:46px;padding:8px;border:1px solid var(--color-border,#cdbfb6);border-radius:10px;background:#fff}
.pp-h3{margin:16px 0 6px;font-size:17px;color:#B8341A}.pp-addq{display:flex;gap:8px;margin-top:8px}.pp-addq input{flex:1}
.pp-sheet{background:#fff;color:#1a1a1a;font-size:15px;line-height:1.45}.pp-sheet h2{margin:0 0 4px;font-size:20px}.pp-sheet h3{margin:12px 0 2px;font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:#B8341A;border-bottom:1px solid #eadfd8;padding-bottom:2px}
.pp-sheet p{margin:3px 0}.pp-sheet ul{margin:3px 0 3px 20px;padding:0}.pp-meta,.pp-muted{color:#6b5b53}.pp-foot{margin-top:14px!important;font-size:12px;color:#6b5b53}
.pp-mail{white-space:pre-wrap;font:inherit;font-size:15px;background:#fbf7f4;padding:12px;border-radius:12px;margin:8px 0 0;overflow-wrap:anywhere}.pp-subj{font-weight:800}
.pp-steps li{margin:8px 0}.pp-gloss dt{font-weight:800;margin-top:10px}.pp-gloss dd{margin:2px 0 0 0;color:#4a342b}
.pp-printarea{display:none}
@media print{
  body.pp-printing>*:not(#pp-printarea),body.vs-printing>*:not(#vs-printarea){display:none!important}
  body.pp-printing #pp-printarea{display:block!important;padding:0}body.pp-printing .pp-sheet{font-size:12.5pt}
  body.vs-printing #vs-printarea{display:block!important;padding:8px}
  .vs-printarea h1{font-size:26pt;margin:0 0 10px;text-align:center}
  .vs-pgrid{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:14px}.vs-pcard{border:2px solid #333;border-radius:12px;padding:8px;text-align:center;break-inside:avoid}
  .vs-pnum{font-weight:800;font-size:16pt}.vs-pmin{font-size:12pt}.vs-pbox{width:28px;height:28px;border:3px solid #333;border-radius:6px;margin:6px auto 0}
  .vs-tile.is-print{width:100%;height:150px;font-size:20pt;background:#fff!important;border:0}.vs-tile.is-print .vs-pic{height:100px;flex:0 0 100px}.vs-pfoot{text-align:center;color:#666;font-size:10pt}
}
@media (prefers-reduced-motion:reduce){.vs-dot.is-cur{transform:none}.vs-done:active{transform:none}}

/* ===== Round 187: themes, scenery, animations, ready-made library, sticker book ===== */
.vs-th-sunny{--t1:#FFF3C4;--t2:#FFD98A;--ta:#F5A524}.vs-th-space{--t1:#2B2A6B;--t2:#0F0E3A;--ta:#8E7BFF}.vs-th-ocean{--t1:#BDEBFF;--t2:#5BB6F0;--ta:#1E88E5}
.vs-th-jungle{--t1:#D5F5C0;--t2:#7CCB6B;--ta:#2E9E57}.vs-th-candy{--t1:#FFD3EA;--t2:#FF9ACB;--ta:#EC4899}.vs-th-dino{--t1:#F3E3B0;--t2:#C9A24A;--ta:#8D6E1F}
.vs-play{background:linear-gradient(180deg,var(--t1,#fffaf5),var(--t2,#fffaf5))}
.vs-play.vs-th-space{color:#fff}.vs-play.vs-th-space .vs-prog,.vs-play.vs-th-space .vs-next,.vs-play.vs-th-space .vs-count,.vs-play.vs-th-space .vs-ftword{color:#fff}
.vs-c{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%;position:relative;z-index:2;min-height:0}
.vsfx-amb{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}.vsfx-amb img{position:absolute;width:clamp(44px,9vmin,84px);height:auto;opacity:.55;animation:vs-float 6s ease-in-out infinite}
@keyframes vs-float{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-16px) rotate(5deg)}}
.vsfx-p{position:absolute;pointer-events:none;z-index:6;will-change:transform,opacity;transform:translate(-50%,-50%)}
.vsfx-spark{position:absolute;pointer-events:none;z-index:7;width:9px;height:9px;border-radius:50%;box-shadow:0 0 8px 2px rgba(255,255,255,.8)}
.vs-play canvas{z-index:8}
.vs-x{z-index:9}
/* step tile motion */
.vs-now{display:block;border:0;background:transparent;padding:0;cursor:pointer;font:inherit}
.vs-enter{animation:vs-enter .55s cubic-bezier(.2,1.4,.4,1) both}
@keyframes vs-enter{0%{transform:translateX(60vw) rotate(10deg) scale(.7);opacity:0}100%{transform:none;opacity:1}}
.vs-leave{animation:vs-leave .5s ease-in forwards}
@keyframes vs-leave{0%{transform:none;opacity:1}30%{transform:scale(1.12) rotate(-3deg)}100%{transform:translateY(-70vh) scale(.2) rotate(25deg);opacity:0}}
.vs-wiggle{animation:vs-wiggle .6s ease}
@keyframes vs-wiggle{0%,100%{transform:none}20%{transform:rotate(-6deg) scale(1.05)}40%{transform:rotate(6deg) scale(1.05)}60%{transform:rotate(-4deg)}80%{transform:rotate(3deg)}}
.vs-tile.is-play{box-shadow:0 10px 0 rgba(0,0,0,.08),0 18px 40px rgba(0,0,0,.12)}
.vs-popin{animation:vs-popin .45s cubic-bezier(.2,1.5,.4,1) both}@keyframes vs-popin{0%{transform:scale(.3);opacity:0}100%{transform:none;opacity:1}}
.vs-done{animation:vs-pulse 1.6s ease-in-out infinite}@keyframes vs-pulse{0%,100%{box-shadow:0 4px 0 #1f7a42,0 0 0 0 rgba(46,158,87,.5)}50%{box-shadow:0 4px 0 #1f7a42,0 0 0 16px rgba(46,158,87,0)}}
.vs-ftbtn.is-ready:not(.is-done) .vs-tile{animation:vs-bob 2.2s ease-in-out infinite}@keyframes vs-bob{0%,100%{transform:none}50%{transform:translateY(-6px) scale(1.015)}}
.vs-unlock{animation:vs-unlock .7s cubic-bezier(.2,1.5,.4,1)}@keyframes vs-unlock{0%{transform:scale(.85);filter:grayscale(1)}60%{transform:scale(1.08)}100%{transform:none}}
.vs-lock{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);font-size:56px}.vs-ftbtn{position:relative}
.vs-dot.is-cur{animation:vs-dotpulse 1s ease-in-out infinite}@keyframes vs-dotpulse{50%{transform:scale(1.7)}}
.vs-dot.is-done{animation:vs-dotpop .4s cubic-bezier(.2,1.6,.4,1)}@keyframes vs-dotpop{0%{transform:scale(.3)}100%{transform:none}}
/* progress track + buddy */
.vs-track{position:relative;width:min(92vw,720px);height:64px;margin:4px 0 8px}
.vs-track__line{position:absolute;left:0;right:0;top:34px;height:10px;border-radius:6px;background:rgba(0,0,0,.14);overflow:hidden}.vs-track__fill{display:block;height:100%;background:linear-gradient(90deg,#ff5a5f,#ffa24a,#ffd54a,#6bd36b,#4aa8ff,#9b6bff);border-radius:6px;transition:width .7s cubic-bezier(.3,1.2,.4,1)}
.vs-stop{position:absolute;top:30px;width:18px;height:18px;margin-left:-9px;border-radius:50%;background:#fff;border:3px solid rgba(0,0,0,.18);transition:background .3s,transform .3s}.vs-stop.is-reached{background:var(--ta,#2e9e57);border-color:#fff;transform:scale(1.15)}
.vs-stop.is-goal{top:14px;width:30px;height:30px;margin-left:-15px;background:transparent;border:0;display:flex;align-items:center;justify-content:center;transform:none}.vs-stop.is-goal img{animation:vs-float 3s ease-in-out infinite}
.vs-buddy{position:absolute;top:0;margin-left:-22px;transition:left .7s cubic-bezier(.3,1.2,.4,1);z-index:3}.vs-buddy img{display:block;filter:drop-shadow(0 4px 4px rgba(0,0,0,.25))}.vs-buddy.is-hop img{animation:vs-hop .7s ease}
@keyframes vs-hop{0%{transform:none}30%{transform:translateY(-22px) rotate(-12deg) scale(1.2)}60%{transform:translateY(0) rotate(8deg)}100%{transform:none}}
/* finish */
.vs-fin__big{animation:vs-bounce 1s cubic-bezier(.2,1.6,.4,1) both}@keyframes vs-bounce{0%{transform:scale(.2) rotate(-12deg);opacity:0}100%{transform:none;opacity:1}}
.vs-reveal{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;min-height:200px;justify-content:center}
.vs-rays{position:absolute;width:260px;height:260px;border-radius:50%;background:repeating-conic-gradient(rgba(255,255,255,.55) 0 10deg,transparent 10deg 20deg);animation:vs-spin 9s linear infinite;mask-image:radial-gradient(circle,#000 30%,transparent 70%);-webkit-mask-image:radial-gradient(circle,#000 30%,transparent 70%)}
@keyframes vs-spin{to{transform:rotate(360deg)}}
.vs-sticker-big{position:relative;z-index:1;width:140px;height:140px;filter:drop-shadow(0 6px 8px rgba(0,0,0,.3));animation:vs-sticker 1.1s cubic-bezier(.2,1.5,.4,1) .35s both}
@keyframes vs-sticker{0%{transform:scale(0) rotate(-540deg);opacity:0}70%{transform:scale(1.25) rotate(12deg);opacity:1}100%{transform:none;opacity:1}}
.vs-reveal__t{position:relative;z-index:1;font-weight:800;font-size:clamp(18px,5vw,26px);animation:vs-bounce .8s ease 1s both}
/* ready-made library */
.vs-lib{display:grid;grid-template-columns: minmax(0, 1fr);gap:12px;margin-top:8px}@media (min-width:700px){.vs-lib{grid-template-columns:1fr 1fr}}
.vs-libcard{margin:0;background:linear-gradient(135deg,var(--t1,#fff),#fff 70%);border-left:6px solid var(--ta,#D9411E)}.vs-libcard h3{display:flex;align-items:center;gap:6px;color:var(--cb-ink,#2A1A14);font-size:17px}
.vs-libcard:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.08)}.vs-libcard{transition:transform .15s,box-shadow .15s}
#vs-q{margin:6px 0}
.vs-themes{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.vs-theme{display:inline-flex;align-items:center;gap:6px;min-height:46px;padding:6px 12px;border-radius:14px;border:2px solid var(--color-border,#e2d6cf);background:linear-gradient(135deg,var(--t1,#fff),var(--t2,#fff));font:inherit;font-weight:700;font-size:14px;cursor:pointer;color:#2A1A14}.vs-theme.is-on{border-color:#D9411E;box-shadow:0 0 0 3px rgba(217,65,30,.25)}
.vs-themes .vs-theme:not([class*=vs-th-]){background:#fff}
.vs-fun h3{margin-top:0}
/* sticker book */
.vs-book{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px}
.vs-sticker{position:relative;aspect-ratio:1;border-radius:18px;background:#fff;border:2px dashed #e2d6cf;display:flex;align-items:center;justify-content:center}.vs-sticker img{width:68%;height:68%;object-fit:contain}
.vs-sticker.is-own{border:2px solid #FFD54A;background:radial-gradient(circle,#FFF8D6,#fff);animation:vs-popin .5s both}.vs-sticker.is-locked img{filter:grayscale(1) brightness(.5) contrast(.4);opacity:.35}
.vs-sx{position:absolute;right:4px;bottom:2px;font-size:12px;font-weight:800;background:#2A1A14;color:#fff;border-radius:10px;padding:1px 6px}
@media (prefers-reduced-motion:reduce){.vsfx-amb img,.vs-done,.vs-ftbtn.is-ready .vs-tile,.vs-dot.is-cur,.vs-rays,.vs-stop.is-goal img{animation:none!important}.vs-enter,.vs-leave,.vs-popin,.vs-sticker-big,.vs-fin__big,.vs-reveal__t{animation-duration:.01s!important;animation-delay:0s!important}.vs-track__fill,.vs-buddy{transition:none}}
.vs-lock{pointer-events:none}
.vs-ft{height:min(60vh,100%);flex:0 0 auto}.vs-tarea,.vs-prog,.vs-dots,.vs-next,.vs-done{flex:0 0 auto}
.vs-play,.vs-timerplay{--cb-red:#D9411E;--cb-ink:#2A1A14;--cb-blue:#2A5BD7;--color-border:#e2d6cf}
.vs-theme.vs-th-space{color:#fff}.vs-theme.vs-th-space img{filter:none}
