:root{--bg:#fafcfc;--card:#fff;--line:#e5eef0;--line2:#eff5f6;--text:#5a6466;--head:#1f2c2f;--muted:#99a4a6;--g1:#ecf6f6;--g2:#d3ecec;--g3:#a3d5d6;--g4:#6bb9bc;--g5:#3f9aa0;--g6:#2a7379;--gold:#c9a45c;--red:#c98378;--r:18px;--sh:0 1px 2px rgba(31,44,47,.04),0 8px 28px rgba(31,44,47,.05);--ease:cubic-bezier(.22,.8,.26,1);color-scheme:light}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{background:var(--bg)}
body{margin:0;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;color:var(--text);background:radial-gradient(120% 60% at 50% -12%,rgba(255,231,205,.55) 0,rgba(232,245,246,.6) 45%,rgba(250,252,252,0) 75%) no-repeat,var(--bg);font:300 15.5px/1.6 "Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;letter-spacing:.005em}
.wrap{width:100%;max-width:480px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 28px) 22px 16px;flex:1}
.wrap.wide{max-width:780px}
[hidden]{display:none!important}
h1{color:var(--head);font-size:26px;line-height:1.2;margin:0;letter-spacing:-.025em;font-weight:400}
h2{color:var(--head);font-size:16px;margin:0 0 6px;letter-spacing:-.01em;font-weight:500}
p{margin:0 0 10px}
b,strong{font-weight:600;color:var(--head)}
a{color:var(--g6);text-decoration:none;border-bottom:1px solid var(--g3);transition:color .2s,border-color .2s}
a:hover{color:var(--g5);border-color:var(--g5)}
.muted{color:var(--muted)}.small{font-size:13px;line-height:1.55}.center{text-align:center}
.center-view{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;gap:14px;text-align:center}
.logo-big{width:46px;height:46px;animation:breathe 2.4s var(--ease) infinite}
@keyframes breathe{50%{opacity:.45;transform:scale(.94)}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;margin:16px 0;box-shadow:var(--sh);animation:rise .55s var(--ease) both}
@keyframes rise{from{opacity:0;transform:translateY(8px)}}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.card-head h2{margin:0}
/* brand */
.brand{text-align:center;padding:44px 0 26px}
.mark{display:block;margin:0 auto 18px;width:52px;height:52px}
.brand h1{font-size:30px;font-weight:300;letter-spacing:-.035em}
.brand h1 span,.wordmark span{color:var(--g5);font-weight:500}
.tag{color:var(--muted);margin:8px 0 0;font-size:14px;letter-spacing:.02em}
/* tabs */
.tabs{display:flex;gap:4px;padding:4px;border-radius:999px;background:var(--g1);margin:10px auto 0;max-width:280px}
.tab{flex:1;border:0;background:transparent;font:inherit;font-size:14px;font-weight:400;color:var(--muted);padding:9px 12px;border-radius:999px;cursor:pointer;transition:background .3s var(--ease),color .3s,box-shadow .3s}
.tab[aria-selected=true]{background:#fff;color:var(--head);font-weight:500;box-shadow:0 1px 3px rgba(31,44,47,.08)}
/* forms */
.form label{display:block;font-size:12.5px;font-weight:500;color:var(--muted);letter-spacing:.03em;margin:0 0 16px}
.form input{display:block;width:100%;margin-top:7px;font:inherit;font-size:16px;font-weight:400;color:var(--head);background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;outline:none;transition:border-color .2s,box-shadow .2s;-webkit-appearance:none;appearance:none;min-height:46px}
.form input:focus{border-color:var(--g3);box-shadow:0 0 0 4px var(--g1)}
.form input[type=date]{text-align:left}
.hint{font-weight:300;letter-spacing:0;text-transform:none}
.form-error{color:var(--red);font-size:13.5px;min-height:0;margin:0 0 10px}
.form-error:empty{display:none}
.notice{background:var(--g1);color:var(--g6);border-radius:12px;padding:11px 14px;font-size:13.5px;font-weight:400;display:flex;gap:10px;align-items:center}
.notice svg{flex:none}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-size:15px;font-weight:500;letter-spacing:.01em;border-radius:999px;padding:11px 22px;min-height:44px;cursor:pointer;border:1px solid transparent;text-decoration:none;transition:transform .2s var(--ease),background .25s,box-shadow .25s,color .2s,border-color .2s}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.55;cursor:default}
.btn.primary{background:var(--g5);color:#fff;box-shadow:0 4px 14px rgba(63,154,160,.22)}
.btn.primary:hover{background:#378f95}
.btn.ghost{background:#fff;color:var(--text);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--g3);color:var(--g6)}
.btn.wa{background:var(--g1);color:var(--g6);border-color:var(--g2)}
.btn.big{width:100%;min-height:50px;font-size:15.5px}
.btn.full{width:100%;margin-top:10px}
.btn.danger{color:var(--red)}
.btn.danger:hover{border-color:#eccdc7;color:#b56a5f}
.form .btn.big{margin-top:6px}
.link-btn{background:none;border:0;font:inherit;font-size:13px;font-weight:500;color:var(--g5);cursor:pointer;padding:6px 0;letter-spacing:.02em}
.icon-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;transition:color .2s,border-color .2s,transform .2s}
.icon-btn:hover{color:var(--g6);border-color:var(--g3)}
.icon-btn svg{width:18px;height:18px}
.row{display:flex;gap:10px;margin-top:14px}.row>.btn{flex:1}
.row-tight{display:flex;gap:8px}
/* header */
.top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:6px 0 22px}
.top .wordmark{display:block;font-size:13px;letter-spacing:.02em;color:var(--muted);margin-bottom:14px}
.date{color:var(--muted);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;margin:0 0 6px;font-weight:400}
/* hero */
.hero{position:relative;overflow:hidden;text-align:center;padding:34px 22px 64px;background:linear-gradient(180deg,#fff 0,#fff 55%,#f5fbfb 100%)}
.hero-art{position:absolute;inset:auto 0 0 0;height:100%;pointer-events:none;opacity:.9}
.hero-art svg{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:300px;height:auto;opacity:.85}
.hero-num{position:relative;font-size:84px;line-height:1;font-weight:200;letter-spacing:-.04em;color:var(--head)}
.hero-num.pop{animation:pop .7s var(--ease)}
@keyframes pop{30%{transform:scale(1.08);color:var(--g5)}}
.hero-label{position:relative;font-size:12.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--g5);margin-top:10px;font-weight:500}
.hero-sub{position:relative;font-size:13px;color:var(--muted);margin-top:8px}
/* clean question */
.q{text-align:center;padding:26px 22px}
.q h2{font-size:21px;font-weight:400;letter-spacing:-.02em;margin-bottom:4px}
.q p{color:var(--muted);font-size:14px;margin-bottom:18px}
.choices{display:flex;flex-direction:column;gap:10px}
.q.answered{display:flex;align-items:center;gap:14px;text-align:left;padding:16px 20px}
.q.answered h2{font-size:16px;font-weight:500;margin:0}
.q.answered p{margin:0;font-size:13px}
.big-emoji{width:40px;height:40px;flex:none;border-radius:50%;background:var(--g1);color:var(--g5);display:inline-flex;align-items:center;justify-content:center}
.big-emoji svg{width:20px;height:20px}
/* progress */
.progress{height:4px;background:var(--line2);border-radius:99px;overflow:hidden;margin:4px 0 10px}
.bar{height:100%;width:0;background:linear-gradient(90deg,var(--g3),var(--g5));border-radius:99px;transition:width .6s var(--ease)}
.bar.gold{background:linear-gradient(90deg,#e8d3a6,var(--gold))}
/* checklist */
.items{list-style:none;margin:10px 0 0;padding:0}
.items li{border-top:1px solid var(--line2)}
.items li:first-child{border-top:0}
.item{display:flex;align-items:center;gap:14px;width:100%;background:none;border:0;font:inherit;text-align:left;color:var(--head);padding:13px 2px;min-height:52px;cursor:pointer;transition:opacity .25s}
.item .tick{flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid #cddcdd;position:relative;transition:background .3s var(--ease),border-color .3s,transform .3s var(--ease)}
.item .tick::after{content:"";position:absolute;left:7px;top:3.5px;width:5px;height:10px;border:solid #fff;border-width:0 1.75px 1.75px 0;transform:rotate(45deg) scale(0);transition:transform .3s var(--ease)}
.item.done .tick{background:var(--g4);border-color:var(--g4);transform:scale(1.04)}
.item.done .tick::after{transform:rotate(45deg) scale(1)}
.item .ico{flex:none;width:30px;height:30px;border-radius:50%;background:var(--g1);display:inline-flex;align-items:center;justify-content:center;font-size:14px;filter:saturate(.7)}
.item .lbl{flex:1;font-size:15px;font-weight:400;line-height:1.4;transition:color .25s}
.item.done .lbl{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--g3);text-decoration-thickness:1px}
.item-text{display:block;width:calc(100% - 36px);margin:0 0 12px 36px;font:inherit;font-size:14.5px;color:var(--head);background:#fbfdfd;border:1px solid var(--line);border-radius:10px;padding:9px 12px;outline:none;transition:border-color .2s,box-shadow .2s}
.item-text:focus{border-color:var(--g3);box-shadow:0 0 0 4px var(--g1)}
.items.locked{opacity:.4;pointer-events:none;filter:grayscale(.3)}
.edit-row{display:flex;gap:8px;margin:8px 0}
.edit-row input{flex:1;font:inherit;font-size:15px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;outline:none;color:var(--head)}
.edit-row input:focus{border-color:var(--g3)}
.x{flex:none;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--muted);cursor:pointer;font-size:12px}
/* done card */
.done-card{text-align:center;padding:30px 22px 24px;border-color:var(--g2);background:linear-gradient(180deg,#f2f9fa,#fff 70%)}
.done-card .big-emoji{width:56px;height:56px;margin:0 auto 14px;background:#fff;border:1px solid var(--g2);box-shadow:0 6px 18px rgba(63,154,160,.15)}
.done-card .big-emoji svg{width:26px;height:26px}
.done-card h2{font-size:21px;font-weight:400;letter-spacing:-.02em}
.done-card p{color:var(--text);font-size:14.5px}
.mentor-phone{font-size:22px!important;font-weight:300;letter-spacing:.02em;color:var(--head)!important;margin:14px 0 16px!important;font-variant-numeric:tabular-nums}
.mentor-phone small{display:block;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-bottom:4px}
.contact{display:flex;gap:10px}.contact .btn{flex:1}
/* pills */
.pill{display:inline-block;font-size:11.5px;font-weight:500;letter-spacing:.03em;border-radius:999px;padding:4px 10px;background:var(--line2);color:var(--muted);margin:0 4px 4px 0}
.pill.ok{background:var(--g1);color:var(--g6)}
.pill.no{background:#fbf0ee;color:#b56a5f}
.pill.wait{background:#f7f4ec;color:#9c8350}
/* stats */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:14px 0 12px;border:1px solid var(--line2);border-radius:14px}
.stat{text-align:center;padding:14px 4px}
.stat+.stat{border-left:1px solid var(--line2)}
.stat-num{font-size:30px;font-weight:200;color:var(--head);letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums}
.stat-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:4px;font-weight:500}
.summary{display:grid;grid-template-columns:repeat(3,1fr);background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);margin:0 0 16px}
/* calendar */
.cal-head,.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center}
.cal-head{font-size:10.5px;letter-spacing:.12em;color:var(--muted);margin:12px 0 6px;font-weight:500}
.cal div{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:12px;border-radius:50%;color:var(--muted);transition:background .3s}
.cal .done{background:var(--g3);color:#fff;font-weight:500}
.cal .missed{background:transparent;color:#c9b7b2;box-shadow:inset 0 0 0 1px #f0e2df}
.cal .today{box-shadow:inset 0 0 0 1.5px var(--g4);color:var(--g6);font-weight:500}
.cal .istoday{box-shadow:inset 0 0 0 1.5px var(--g5)}
.cal .done.istoday{box-shadow:0 0 0 3px var(--g1)}
.cal .before{opacity:.35}
.legend{display:flex;gap:18px;justify-content:center;font-size:12px;color:var(--muted);margin-top:14px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%}
.dot.done{background:var(--g3)}.dot.missed{box-shadow:inset 0 0 0 1px #e6cfca}.dot.today{box-shadow:inset 0 0 0 1.5px var(--g5)}
/* prize */
.prize .card-head h2{display:flex;align-items:center;gap:8px}
.prize .card-head svg{width:16px;height:16px;color:var(--gold)}
/* install hint */
.install-hint{display:flex;align-items:flex-start;gap:14px;padding:16px 18px;box-shadow:none;background:rgba(255,255,255,.7)}
.install-hint p{margin:0}
.ih-ico{flex:none;width:34px;height:34px;border-radius:10px;background:var(--g1);color:var(--g5);display:inline-flex;align-items:center;justify-content:center}
.ih-ico svg{width:17px;height:17px}
.install-hint>div{flex:1}
.install-hint .x{width:28px;height:28px;border:0;background:transparent}
/* dialog */
dialog{border:0;border-radius:22px;padding:26px 22px;width:min(92vw,420px);box-shadow:0 30px 80px rgba(31,44,47,.18);color:var(--text)}
dialog::backdrop{background:rgba(31,44,47,.25);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
dialog[open]{animation:rise .35s var(--ease)}
dialog h2{font-size:19px;font-weight:400;margin-bottom:18px}
/* toast */
.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 24px);transform:translate(-50%,20px);background:rgba(31,44,47,.92);color:#fff;font-size:14px;font-weight:400;padding:11px 20px;border-radius:999px;opacity:0;pointer-events:none;transition:opacity .35s,transform .45s var(--ease);z-index:60;white-space:nowrap;max-width:92vw;overflow:hidden;text-overflow:ellipsis;backdrop-filter:blur(8px)}
.toast.show{opacity:1;transform:translate(-50%,0)}
/* footer */
.foot{text-align:center;font-size:12px;letter-spacing:.03em;color:var(--muted);padding:26px 16px calc(env(safe-area-inset-bottom) + 22px)}
.foot span{color:var(--text)}
.foot a{color:var(--g6)}
/* fireworks */
.fx{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:50}
/* admin */
.user{padding:20px}
.u-head{display:flex;align-items:center;gap:14px;cursor:pointer}
.u-av{flex:none;width:42px;height:42px;border-radius:50%;background:var(--g1);color:var(--g6);display:flex;align-items:center;justify-content:center;font-weight:500;font-size:16px}
.u-head>div:nth-child(2){flex:1;min-width:0}
.u-name{color:var(--head);font-weight:500;font-size:16px}
.u-meta{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-days{text-align:right;line-height:1.1}.u-days b{display:block;font-size:28px;font-weight:200;color:var(--head)}.u-days span{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.u-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin:16px 0 8px;font-size:12.5px;color:var(--muted)}
.u-grid b{display:block;font-size:15px;font-weight:500;color:var(--head);margin-top:1px}
.u-detail{border-top:1px solid var(--line2);margin-top:12px;padding-top:12px}
.u-detail ul{list-style:none;padding:0;margin:0 0 12px;font-size:14px}.u-detail li{padding:5px 0;border-bottom:1px dashed var(--line2)}
.mini-cal{display:flex;gap:4px;margin:6px 0 4px}
.mini-cal i{width:14px;height:14px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--line)}
.mini-cal .done{background:var(--g3);box-shadow:none}.mini-cal .missed{box-shadow:inset 0 0 0 1px #ecd5d0}.mini-cal .today{box-shadow:inset 0 0 0 1.5px var(--g5)}.mini-cal .before{opacity:.3}
@media (min-width:700px){.wrap.wide #users{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.hero-photo{margin:-6px 0 22px;border-radius:22px;overflow:hidden;box-shadow:var(--sh);aspect-ratio:3/2;background:#f3e3d2}.hero-photo img{display:block;width:100%;height:100%;object-fit:cover;animation:heroIn 1.2s var(--ease) both}@keyframes heroIn{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}
.item{transition:opacity .25s,transform .18s var(--ease),background-color .25s;border-radius:14px;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.item:active{transform:scale(.975);background-color:var(--g1)}
.item:active .tick{transform:scale(.88)}
.item.just-on .tick{animation:tickOn .55s cubic-bezier(.34,1.56,.64,1)}
.item.just-on .tick::before{content:"";position:absolute;inset:-2px;border-radius:50%;box-shadow:0 0 0 0 rgba(63,154,160,.45);animation:ring .6s ease-out forwards}
.item.just-off .tick{animation:tickOff .35s var(--ease)}
@keyframes tickOn{0%{transform:scale(.8)}45%{transform:scale(1.22)}100%{transform:scale(1.04)}}
@keyframes tickOff{0%{transform:scale(.9)}100%{transform:scale(1)}}
@keyframes ring{to{box-shadow:0 0 0 12px rgba(63,154,160,0)}}

/* animated logo */
.mark path,.logo-big path{stroke-dasharray:60;stroke-dashoffset:60;animation:lgDraw 1.1s var(--ease) forwards}
.mark path:nth-of-type(1),.logo-big path:nth-of-type(1){animation:lgRise 1.3s var(--ease) .15s both,lgDraw 1.1s var(--ease) .15s forwards,lgGlow 3.2s ease-in-out 1.6s infinite}
.mark path:nth-of-type(2),.logo-big path:nth-of-type(2){animation-delay:.05s}
.mark path:nth-of-type(3),.logo-big path:nth-of-type(3){animation-delay:.45s}
.mark circle,.logo-big circle{transform-origin:center;animation:lgCircle .9s var(--ease) both}
@keyframes lgDraw{to{stroke-dashoffset:0}}
@keyframes lgRise{from{transform:translateY(6px);opacity:.2}to{transform:none;opacity:1}}
@keyframes lgGlow{0%,100%{filter:none}50%{filter:drop-shadow(0 0 2.5px rgba(63,154,160,.55))}}
@keyframes lgCircle{from{transform:scale(.85);opacity:0}to{transform:none;opacity:1}}
.brand h1{animation:lgText .9s var(--ease) .55s both}
@keyframes lgText{from{opacity:0;transform:translateY(4px);letter-spacing:.04em}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.mark *,.logo-big *,.brand h1{animation:none!important;stroke-dashoffset:0!important}}

.home-strip{margin:4px 0 16px;height:84px;border-radius:18px;overflow:hidden;box-shadow:var(--sh);background:#f3e3d2;position:relative}
.home-strip img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 58%;animation:heroIn 1.2s var(--ease) both}
.home-strip::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,0) 55%,rgba(250,252,252,.35))}
