:root{
  --bg1:#0ea5e9;
  --bg2:#22c55e;
  --card: rgba(11,18,32,.78);
  --stroke: rgba(255,255,255,.14);
  --text:#e5e7eb;
  --muted: rgba(229,231,235,.82);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
  color: var(--text);
  background:
    radial-gradient(1200px 800px at 25% 10%, rgba(255,255,255,.18), transparent 60%),
    radial-gradient(900px 700px at 90% 25%, rgba(255,255,255,.12), transparent 60%),
    linear-gradient(135deg, var(--bg1), var(--bg2));
}

.wrap{max-width:980px;margin:0 auto;padding:18px 14px 26px;}

.head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.head h1{margin:0;font-size:1.6rem;letter-spacing:.2px;}
.sub{margin:.25rem 0 0;color:var(--muted)}

.timer{
  background: rgba(255,255,255,.10);
  border:1px solid var(--stroke);
  border-radius:18px;
  padding:12px 14px;
  min-width: 220px;
  box-shadow: 0 14px 30px rgba(0,0,0,.25);
}
.time{font-size:1.6rem;font-weight:800;letter-spacing:.8px;}
.zoneLabel{color: rgba(229,231,235,.88); margin-top:2px; font-size:.95rem;}

.card{
  margin-top:14px;
  background: var(--card);
  border: 1px solid var(--stroke);
  border-radius: 24px;
  box-shadow: 0 20px 55px rgba(0,0,0,.35);
  padding:16px;
  backdrop-filter: blur(10px);
}

.teeth{
  display:grid;
  grid-template-columns: repeat(3, minmax(86px, 1fr));
  gap:12px;
  max-width: 520px;
  margin: 8px auto 0;
}

.tooth{
  --fill: 0%;           /* how much is cleaned from top -> bottom */
  --brushY: 0%;         /* toothbrush position */
  position: relative;
  height: 110px;
  border-radius: 22px;
  overflow:hidden;
  border: 1px solid rgba(255,255,255,.16);
  background: linear-gradient(180deg, #c2a878, #b48a4a); /* dirty base */
  box-shadow: 0 16px 30px rgba(0,0,0,.25);
  transform: translateZ(0);
}

/* white clean layer that grows DOWN */
.tooth::before{
  content:"";
  position:absolute;
  inset:0;
  height: var(--fill);
  background: linear-gradient(180deg, #ffffff, #eef2ff);
  box-shadow: inset 0 -10px 22px rgba(0,0,0,.08);
  transition: height .12s linear;
}

/* subtle shine when fully clean */
.tooth.clean{
  box-shadow: 0 0 0 1px rgba(255,255,255,.20), 0 18px 34px rgba(0,0,0,.22), 0 0 18px rgba(255,255,255,.28);
}

/* dirt speckles that fade away as it becomes clean */
.dirt{
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 20% 25%, rgba(60,40,10,.35) 0 6px, transparent 7px),
    radial-gradient(circle at 70% 35%, rgba(60,40,10,.28) 0 5px, transparent 6px),
    radial-gradient(circle at 35% 70%, rgba(60,40,10,.28) 0 6px, transparent 7px),
    radial-gradient(circle at 80% 75%, rgba(60,40,10,.22) 0 5px, transparent 6px);
  opacity: calc(1 - (var(--fillNum) / 100));
  transition: opacity .12s linear;
  mix-blend-mode: multiply;
}

/* toothbrush icon moves DOWN with progress */
.tooth.active::after{
  content:"🪥";
  position:absolute;
  left: 50%;
  top: var(--brushY);
  transform: translate(-50%, -55%) rotate(-8deg);
  font-size: 34px;
  filter: drop-shadow(0 10px 16px rgba(0,0,0,.35));
  animation: wiggle .22s ease-in-out infinite alternate;
}

@keyframes wiggle{
  from{transform: translate(-50%,-55%) rotate(-10deg) translateX(-2px)}
  to{transform: translate(-50%,-55%) rotate(-6deg) translateX(2px)}
}

/* small bounce when switching zones */
.tooth.bump{
  animation: bump .28s cubic-bezier(.2,.9,.2,1);
}
@keyframes bump{0%{transform:scale(1)}50%{transform:scale(1.06)}100%{transform:scale(1)}}

.prompt{
  margin: 12px auto 0;
  max-width: 620px;
  padding: 12px 14px;
  border-radius: 18px;
  background: rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.14);
  color: rgba(229,231,235,.92);
}

.controls{
  display:flex;
  gap:10px;
  justify-content:center;
  align-items:center;
  flex-wrap:wrap;
  margin-top: 12px;
}

.btn{
  border:1px solid rgba(255,255,255,.18);
  background: rgba(255,255,255,.10);
  color: var(--text);
  padding: 12px 14px;
  border-radius: 16px;
  font-size: 1rem;
  font-weight: 800;
  cursor:pointer;
}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.primary{background: linear-gradient(135deg, rgba(34,197,94,.95), rgba(14,165,233,.95));}

.toggle{display:flex;align-items:center;gap:8px;color:rgba(229,231,235,.9);font-weight:700}
.toggle input{width:18px;height:18px;accent-color:#22c55e}

.foot{margin-top:12px;text-align:center;color:rgba(229,231,235,.82)}

@supports (padding: max(0px)){
  .wrap{padding-left:max(14px, env(safe-area-inset-left));
        padding-right:max(14px, env(safe-area-inset-right));
        padding-top:max(18px, env(safe-area-inset-top));
        padding-bottom:max(26px, env(safe-area-inset-bottom));}
}
