
:root{
  --cream:#F6F3EA; --ink:#111111; --green:#22C55E; --green-d:#16A34A; --green-l:#BBF7D0;
  --yellow:#FFD43B; --red:#FF5C5C; --white:#FFFFFF;
  --r:18px; --bw:3px; --shadow:4px 4px 0 var(--ink);
  --font-display:'Baloo 2','Nunito','Trebuchet MS','Segoe UI Rounded',system-ui,sans-serif;
  --font-body:'Nunito','Trebuchet MS','Segoe UI',system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; min-height:100vh; color:var(--ink); font-family:var(--font-body); font-size:17px; line-height:1.45;
  background-color:var(--cream);
  background-image:radial-gradient(rgba(17,17,17,.13) 1.4px, transparent 1.6px);
  background-size:22px 22px;
}
h1,h2,h3{font-family:var(--font-display); line-height:1.1; margin:0 0 .4em; font-weight:800; letter-spacing:-.01em}
h1{font-size:2rem} h2{font-size:1.45rem} p{margin:0 0 1em}
a{color:inherit}
.shell{max-width:480px; margin:0 auto; padding:14px 16px 40px}
.topbar{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:6px 2px 14px}
.topbar .logo{display:block}
.topbar form{margin:0}
.btn-sm{padding:8px 14px; font-size:.95rem; box-shadow:3px 3px 0 var(--ink)}
.foot{margin-top:28px; text-align:center; font-size:.85rem; font-weight:700; opacity:.65}

.card{
  background:var(--white); border:var(--bw) solid var(--ink); border-radius:var(--r);
  box-shadow:var(--shadow); padding:20px; margin:0 0 20px;
}
.card-yellow{background:var(--yellow)} .card-green{background:var(--green-l)}

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:52px;
  padding:12px 22px; font:800 1.1rem/1 var(--font-display); text-decoration:none; cursor:pointer;
  color:var(--ink); background:var(--green); border:var(--bw) solid var(--ink); border-radius:var(--r);
  box-shadow:var(--shadow); transition:transform .08s ease, box-shadow .08s ease; -webkit-tap-highlight-color:transparent;
}
.btn:active{transform:translate(2px,2px); box-shadow:2px 2px 0 var(--ink)}
.btn:focus-visible,.input:focus-visible,.toggle input:focus-visible+.toggle-track{outline:3px solid var(--ink); outline-offset:3px}
.btn-ghost{background:var(--white)} .btn-danger{background:var(--red)}
.btn-block{display:flex; width:100%}

.field{display:block; margin:0 0 16px}
.field-label{display:block; font:800 1rem var(--font-display); margin:0 0 6px}
.field-hint{display:block; font-size:.85rem; font-weight:600; opacity:.7; margin-top:6px}
.input{
  width:100%; min-height:52px; padding:12px 14px; font:700 1.05rem var(--font-body); color:var(--ink);
  background:var(--cream); border:var(--bw) solid var(--ink); border-radius:14px; box-shadow:inset 3px 3px 0 rgba(17,17,17,.12);
}
.input::placeholder{color:rgba(17,17,17,.4)}
.input:focus{background:#fff; outline:none; box-shadow:3px 3px 0 var(--yellow), 3px 3px 0 3px var(--ink)}

.toggle{display:flex; align-items:center; gap:14px; cursor:pointer; min-height:48px}
.toggle input{position:absolute; opacity:0; width:1px; height:1px}
.toggle-track{
  position:relative; flex:none; width:64px; height:36px; background:#d8d4c6; border:var(--bw) solid var(--ink); border-radius:999px;
  transition:background .15s ease;
}
.toggle-knob{
  position:absolute; top:2px; left:2px; width:26px; height:26px; background:var(--white); border:var(--bw) solid var(--ink);
  border-radius:50%; transition:transform .15s ease;
}
.toggle input:checked+.toggle-track{background:var(--green)}
.toggle input:checked+.toggle-track .toggle-knob{transform:translateX(28px); background:var(--yellow)}
.toggle-label{font-weight:800}

.banner{
  display:flex; align-items:center; gap:12px; padding:12px 14px; margin:0 0 18px; font-weight:800;
  border:var(--bw) solid var(--ink); border-radius:var(--r); box-shadow:var(--shadow); background:var(--green-l);
}
.banner-warn{background:var(--yellow)} .banner-error{background:#FFC9C9}
.banner-mascot{flex:none; margin:-6px 0 -10px -4px; line-height:0}
.banner-body{flex:1; min-width:0}

.empty{text-align:center; padding:8px 4px 4px}
.empty .mascot{margin:0 auto}
.card>.steps{margin:0}
.empty-title{margin-top:10px} .empty-text{opacity:.8; font-weight:600}
.empty-action{margin-top:16px}

.steps{display:flex; justify-content:center; gap:10px; list-style:none; padding:0; margin:0 0 20px}
.steps li{
  display:grid; place-items:center; width:38px; height:38px; font:800 1.05rem var(--font-display);
  background:var(--white); border:var(--bw) solid var(--ink); border-radius:50%;
}
.steps li.done{background:var(--green)}
.steps li.now{background:var(--yellow); box-shadow:3px 3px 0 var(--ink); transform:scale(1.12)}

.hero{display:flex; flex-direction:column; align-items:center; text-align:center; margin:2px 0 14px}
.hero h1{margin:6px 0 4px} .hero p{margin:0; font-weight:700; opacity:.75}
.hero .speech{
  position:relative; margin-top:-4px; padding:8px 16px; background:var(--yellow); border:var(--bw) solid var(--ink);
  border-radius:999px; box-shadow:3px 3px 0 var(--ink); font:800 1.05rem var(--font-display);
}
.mascot{overflow:visible; display:block}
.mascot-body{animation:bob 3.2s ease-in-out infinite}
.mascot-sad .mascot-body{animation:none}
.bulb{animation:glow 1.6s ease-in-out infinite; transform-box:fill-box; transform-origin:center}
.wave{animation:wave 1.1s ease-in-out infinite}
.cheer{animation:cheer .7s ease-in-out infinite alternate}
.dot{animation:blink 1.4s ease-in-out infinite} .d2{animation-delay:.2s} .d3{animation-delay:.4s}
.confetti{animation:fall 2.4s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes glow{0%,100%{filter:drop-shadow(0 0 0 #8CFFB1)}50%{filter:drop-shadow(0 0 7px #22C55E)}}
@keyframes wave{0%,100%{transform:rotate(0)}50%{transform:rotate(-24deg)}}
@keyframes cheer{from{transform:rotate(0)}to{transform:rotate(-10deg)}}
@keyframes blink{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes fall{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.pv-title{font:800 1rem var(--font-display); margin:26px 0 10px; display:inline-block; background:var(--ink); color:var(--cream); padding:4px 12px; border-radius:999px}
.pv-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:14px 10px; justify-items:center}
.pv-grid figure{margin:0; text-align:center; font-weight:800}
.center{display:flex; justify-content:center}
.howto{margin:0 0 16px; padding-left:1.4em; font-weight:600} .howto li{margin:0 0 10px; padding-left:4px}
.note{font-size:.95rem; font-weight:700; padding:10px 12px; background:var(--cream); border:2px dashed var(--ink); border-radius:14px}
.copybox{display:grid; grid-template-columns:1fr auto; gap:6px 10px; align-items:center; margin:0 0 12px; padding:12px; background:var(--cream); border:var(--bw) solid var(--ink); border-radius:14px}
.copybox-label{grid-column:1/-1; font:800 .95rem var(--font-display)}
.copybox-value{min-width:0; overflow-wrap:anywhere; font:700 .9rem ui-monospace,Menlo,Consolas,monospace}
.wiz-nav{display:flex; justify-content:space-between; gap:12px; margin-top:18px; flex-wrap:wrap}
.wiz-nav .btn{flex:1 1 140px; text-align:center; white-space:nowrap}
.card>.steps.wiz-steps{margin-bottom:18px}
.card .empty{padding-bottom:12px}
.row{display:flex; gap:12px; flex-wrap:wrap}
.muted{opacity:.7; font-weight:700; margin:0}
.gap{height:12px}
.back{display:inline-block; margin:0 0 8px; font:800 1rem var(--font-display); text-decoration:none}
.page-title{margin:0 0 14px}
.eyebrow{font:800 .8rem var(--font-display); text-transform:uppercase; letter-spacing:.08em; opacity:.6}
.home-head{margin:4px 0 12px} .home-user{margin:0; overflow-wrap:anywhere}
.section-title{margin:26px 0 12px}
.banner-action{margin-top:10px} .banner-action .btn{min-height:44px; padding:8px 18px; font-size:1rem}
.btn-icon{padding:0; width:52px; font-size:1.3rem}

.chips{display:flex; flex-wrap:wrap; gap:8px}
#chips:empty{display:none}
.chip{display:inline-block; padding:4px 12px; font:800 .95rem var(--font-display); background:var(--yellow); border:2px solid var(--ink); border-radius:999px; overflow-wrap:anywhere}
.badge{display:inline-block; margin:0 0 8px; padding:3px 12px; font:800 .85rem var(--font-display); background:var(--green-l); border:2px solid var(--ink); border-radius:999px}
.badge-post{background:var(--white)}

.auto-top{display:flex; gap:14px; align-items:flex-start}
.auto-thumb{flex:none; width:84px; height:84px; object-fit:cover; border:var(--bw) solid var(--ink); border-radius:14px; background:var(--cream)}
.auto-any{display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:2px; font:800 .8rem/1.1 var(--font-display); background:var(--green-l)}
.auto-any span:first-child{font-size:1.6rem}
.auto-main{flex:1; min-width:0}
.auto-stats{display:flex; gap:18px; margin:14px 0 4px; font-weight:700}
.auto-stats b{font:800 1.3rem var(--font-display)}
.stat-bad b{color:#C21F1F}
.auto-actions{display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:10px; flex-wrap:wrap}
.auto-actions form{margin:0}
.auto-btns{display:flex; gap:10px}
.auto-btns .btn{min-height:48px; padding:8px 16px; font-size:1rem}
.auto-off{background:#EFEBDD}
.auto-off .auto-thumb,.auto-off .chip{opacity:.55}
.switch{display:flex; align-items:center; gap:12px; min-height:48px; padding:0; background:none; border:0; font:inherit; color:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent}
.switch[aria-checked=true] .toggle-track{background:var(--green)}
.switch[aria-checked=true] .toggle-knob{transform:translateX(28px); background:var(--yellow)}
.switch:focus-visible{outline:3px solid var(--ink); outline-offset:3px; border-radius:14px}

.events{list-style:none; margin:0; padding:0}
.ev{display:flex; gap:12px; padding:12px 0; border-top:2px dashed rgba(17,17,17,.25)}
.ev:first-child{border-top:0; padding-top:0} .ev:last-child{padding-bottom:0}
.ev-icon{flex:none; margin-top:2px}
.ev-body{min-width:0; flex:1}
.ev-title{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.ev-tag{padding:1px 10px; font:800 .8rem var(--font-display); border:2px solid var(--ink); border-radius:999px; background:var(--white)}
.ev-sent{background:var(--green-l)} .ev-failed{background:#FFC9C9} .ev-skipped{background:var(--yellow)}
.ev-text{font-weight:600; opacity:.85; overflow-wrap:anywhere; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden}
.ev-meta{font-size:.85rem; font-weight:700; opacity:.6}

.step-title{display:flex; align-items:center; gap:10px; margin:0 0 14px}
.step-num{display:grid; place-items:center; width:32px; height:32px; font:800 1rem var(--font-display); background:var(--yellow); border:var(--bw) solid var(--ink); border-radius:50%}
.textarea{resize:vertical; min-height:130px; font-family:var(--font-body)}
.counter{text-align:right}
.picker{display:grid; grid-template-columns:repeat(3,1fr); gap:10px}
.pick{position:relative; display:block; cursor:pointer}
.pick input{position:absolute; opacity:0; width:1px; height:1px}
.pick-card{position:relative; display:block; aspect-ratio:1; overflow:hidden; background:var(--cream); border:var(--bw) solid var(--ink); border-radius:14px; transition:transform .08s ease}
.pick-card img{display:block; width:100%; height:100%; object-fit:cover}
.pick-any{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; text-align:center; background:var(--green-l)}
.pick-star{font-size:1.7rem} .pick-name{font:800 .85rem/1.1 var(--font-display)}
.pick-nothumb{display:grid; place-items:center; height:100%; font-weight:700; font-size:.8rem; opacity:.6}
.pick-check{position:absolute; top:6px; right:6px; display:none; place-items:center; width:28px; height:28px; font-weight:800; background:var(--green); border:var(--bw) solid var(--ink); border-radius:50%}
.pick input:checked+.pick-card{border-color:var(--ink); box-shadow:0 0 0 4px var(--green), 4px 4px 0 4px var(--ink); transform:translateY(-1px)}
.pick input:checked+.pick-card .pick-check{display:grid}
.pick input:focus-visible+.pick-card{outline:3px solid var(--ink); outline-offset:3px}
.card .toggle+.toggle{margin-top:8px}
.banner-body>div+div{margin-top:6px}
