@font-face{font-family:'Outfit';src:url(outfit.ttf) format('truetype');font-weight:100 900;font-display:swap}
/* Apple-style (iOS HIG): system font, grouped inset lists, large titles, translucent bars, spring motion */
:root{
  --bg:#f2f2f7; --card:#fff; --label:#000; --l2:rgba(60,60,67,.62); --l3:rgba(60,60,67,.3); --sep:rgba(60,60,67,.16);
  --fill:rgba(118,118,128,.12); --thumb:#fff; --blue:#007aff; --red:#ff3b30; --orange:#ff9500; --green:#34c759;
  --bar:rgba(249,249,249,.82); --spring:cubic-bezier(.32,.72,0,1);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue",Helvetica,Arial,sans-serif;
}
@media (prefers-color-scheme:dark){
  :root{ --bg:#000; --card:#1c1c1e; --label:#fff; --l2:rgba(235,235,245,.62); --l3:rgba(235,235,245,.3); --sep:rgba(84,84,88,.55);
    --fill:rgba(118,118,128,.24); --thumb:#636366; --blue:#0a84ff; --red:#ff453a; --orange:#ff9f0a; --green:#30d158; --bar:rgba(22,22,24,.82); }
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--label);font:400 17px/1.3 var(--font);-webkit-font-smoothing:antialiased;letter-spacing:-.022em}
body{max-width:600px;margin:0 auto;min-height:100vh;padding:0 16px calc(170px + env(safe-area-inset-bottom))}
button{font-family:inherit;letter-spacing:inherit}

header{padding:calc(22px + env(safe-area-inset-top)) 4px 14px;display:flex;align-items:flex-end;gap:10px}
header .t{flex:1;min-width:0}
.date{color:var(--l2);font-size:15px;font-weight:500;margin-bottom:2px}
h1{margin:0;font-size:34px;line-height:1.1;font-weight:700;letter-spacing:.012em}
.sub{color:var(--l2);font-size:15px;margin-top:4px}
.sync{width:7px;height:7px;border-radius:4px;background:var(--green);flex:none;margin-bottom:14px}
.sync.pend{background:var(--orange)} .sync.off{background:var(--l3)}
.iconbtn{width:34px;height:34px;border-radius:17px;border:0;background:var(--fill);color:var(--blue);font-size:24px;line-height:1;cursor:pointer;padding:0 0 2px;font-weight:400;transition:transform .3s var(--spring)}
.iconbtn:active{transform:scale(.88)}

/* grouped inset lists */
.sec{font-size:13px;color:var(--l2);margin:26px 16px 7px;display:flex;justify-content:space-between;font-weight:400}
.group{background:var(--card);border-radius:16px;overflow:hidden}
.row{position:relative;display:flex;align-items:center;gap:12px;min-height:52px;padding:0 16px}
.sw+.sw>.sw-c::before,.ci>.sw:first-child>.sw-c::before,.row+.row::before,.cat-block+.cat-block::before{content:"";position:absolute;top:0;left:16px;right:0;height:.5px;background:var(--sep)}
.cat-block{position:relative}
.name{flex:1;min-width:0;border:0;background:none;color:inherit;font:inherit;text-align:left;padding:10px 0;cursor:pointer;letter-spacing:inherit}
.name b{font-weight:400;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.name small{color:var(--l2);display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.late{color:var(--red)!important}
.trail{color:var(--l2);font-size:17px}
.chev{width:7px;height:7px;border-right:2px solid var(--l3);border-bottom:2px solid var(--l3);transform:rotate(-45deg);transition:transform .35s var(--spring);flex:none;margin:0 2px 0 4px}
.empty,.hint{color:var(--l2);padding:16px;text-align:center}

/* segmented status control: dots keep their meaning, the white thumb slides */
.seg{position:relative;flex:none;width:114px;height:32px;padding:2px;border-radius:16px;background:var(--fill);display:grid;grid-template-columns:repeat(3,1fr)}
.thumb{position:absolute;top:2px;left:2px;width:calc((100% - 4px)/3);height:28px;border-radius:14px;background:var(--thumb);
  transform:translateX(calc(var(--i) * 100%));transition:transform .38s var(--spring);box-shadow:0 3px 8px rgba(0,0,0,.12),0 3px 1px rgba(0,0,0,.04)}
.seg button{position:relative;z-index:1;border:0;background:none;padding:0;cursor:pointer}
.seg button::before{content:"";position:absolute;inset:-10px -1px}
.seg button::after{content:"";position:absolute;left:50%;top:50%;width:9px;height:9px;margin:-4.5px;border-radius:5px;background:var(--c);opacity:.5;transition:transform .35s var(--spring),opacity .2s}
.seg button.o{--c:var(--red)} .seg button.l{--c:var(--orange)} .seg button.k{--c:var(--green)}
.seg button.on::after{opacity:1;transform:scale(1.3)}
.seg button:focus-visible{outline:2px solid var(--blue);border-radius:14px}

/* categories */
.cat{width:100%;display:flex;align-items:center;gap:10px;border:0;background:none;color:inherit;min-height:52px;padding:0 16px;cursor:pointer;font-size:17px;text-align:left}
.cat span{flex:1}
.cat em{font-style:normal;color:var(--l2)}
.cat-block[data-open="1"] .chev{transform:rotate(45deg)}
.cb{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s var(--spring)}
.cat-block[data-open="1"] .cb{grid-template-rows:1fr}
.ci{overflow:hidden;min-height:0}

/* home */
.run-card{background:var(--card);border-radius:20px;padding:18px 18px 16px;margin-bottom:6px}
.run-h{display:flex;align-items:center;gap:12px}
.run-h b{font-size:20px;font-weight:700;display:block;letter-spacing:.01em}
.run-h small{color:var(--l2);font-size:15px}
.peek{list-style:none;margin:14px 0 4px;padding:0}
.peek li{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:17px}
.peek i{width:9px;height:9px;border-radius:5px;flex:none;background:var(--c)}
.peek li.more{color:var(--l2);padding-left:19px}
.primary{display:block;width:100%;height:50px;border:0;border-radius:25px;background:var(--blue);color:#fff;font:inherit;font-weight:600;cursor:pointer;margin-top:12px;transition:transform .3s var(--spring),opacity .2s}
.primary:active{transform:scale(.97);opacity:.9}
.sq{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:#fff;flex:none;background:var(--c)}
.sq.big{width:44px;height:44px;border-radius:12px}
.sq svg,.tab svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sq svg{width:19px;height:19px} .sq.big svg{width:25px;height:25px}
.mod{width:100%;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;display:flex;align-items:center;gap:14px;min-height:60px;padding:0 16px;position:relative;letter-spacing:inherit}
.mod+.mod::before{content:"";position:absolute;top:0;left:60px;right:0;height:.5px;background:var(--sep)}
.mod .tx{flex:1;min-width:0} .mod .tx small{display:block;color:var(--l2);font-size:14px}
.mod:active{background:var(--fill)}
.ok{display:flex;align-items:center;gap:12px;font-weight:600;font-size:17px;padding:2px 0}
.tick{width:30px;height:30px;border-radius:15px;background:var(--green);display:grid;place-items:center;flex:none}
.tick svg{width:17px;height:17px;fill:none;stroke:#fff;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}
.tick path{stroke-dasharray:1;stroke-dashoffset:0}
.enter .tick path{stroke-dashoffset:1;animation:draw .5s .25s var(--spring) forwards}
.enter{animation:rise .6s var(--spring) both}
@keyframes rise{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
@keyframes draw{to{stroke-dashoffset:0}}

/* reminders-style circle */
.circle{width:44px;height:44px;margin:0 -8px 0 -10px;border:0;background:none;padding:0;cursor:pointer;display:grid;place-items:center;flex:none}
.circle i{width:24px;height:24px;border-radius:12px;border:1.6px solid var(--l3);display:grid;place-items:center;transition:background .25s,border-color .25s,transform .35s var(--spring)}
.circle:active i{transform:scale(.88)}
.circle svg{width:14px;height:14px;fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .35s .05s var(--spring)}
.circle.done i{background:var(--blue);border-color:var(--blue)}
.circle.done svg{stroke-dashoffset:0}
.row.bought .name b{color:var(--l2);text-decoration:line-through}

/* grocery run (full screen) */
.runview{position:fixed;inset:0;z-index:40;background:var(--bg);overflow:auto;animation:sheetup .5s var(--spring) both}
.runview .in{max-width:600px;margin:0 auto;padding:0 16px calc(40px + env(safe-area-inset-bottom))}
.runbar{position:sticky;top:0;z-index:2;display:flex;justify-content:flex-end;padding:calc(10px + env(safe-area-inset-top)) 16px 6px;background:var(--bar);-webkit-backdrop-filter:blur(20px) saturate(1.8);backdrop-filter:blur(20px) saturate(1.8)}
.link{border:0;background:none;color:var(--blue);font:inherit;font-weight:600;cursor:pointer;padding:8px 4px}
.prog{height:4px;border-radius:2px;background:var(--fill);margin:14px 4px 4px;overflow:hidden}
.prog i{display:block;height:100%;width:var(--w);background:var(--blue);border-radius:2px;transition:width .5s var(--spring)}
@keyframes sheetup{from{transform:translateY(100%)}}

/* dock: command field + tab bar */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--bar);-webkit-backdrop-filter:blur(24px) saturate(1.8);backdrop-filter:blur(24px) saturate(1.8);border-top:.5px solid var(--sep);padding-bottom:env(safe-area-inset-bottom)}
.dock .in{max-width:600px;margin:0 auto}
.bar{display:flex;gap:8px;align-items:center;margin:8px 16px 4px;padding:0 4px 0 12px;height:38px;border-radius:19px;background:var(--fill)}
.bar input{flex:1;min-width:0;height:38px;border:0;background:none;color:inherit;font:inherit;font-size:17px;outline:none}
.bar input::placeholder{color:var(--l2)}
.bar button{width:32px;height:32px;border-radius:16px;border:0;background:none;color:var(--l2);cursor:pointer;display:grid;place-items:center;position:relative}
.bar button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.bar button.on{color:var(--red)}
.bar button.on::after{content:"";position:absolute;inset:0;border-radius:16px;border:2px solid var(--red);animation:pulse 1.2s ease-out infinite}
@keyframes pulse{from{transform:scale(1);opacity:.8}to{transform:scale(1.7);opacity:0}}
.tabs{display:flex;padding:2px 4px 0}
.tab{flex:1;border:0;background:none;color:var(--l2);padding:5px 0 4px;font:inherit;font-size:10px;font-weight:500;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;letter-spacing:.01em}
.tab svg{width:26px;height:26px}
.tab.on{color:var(--blue)}
.tab.on svg{animation:pop .45s var(--spring)}
@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.12)}100%{transform:scale(1)}}

/* feedback + sheets */
.toast{position:fixed;left:16px;right:16px;bottom:calc(150px + env(safe-area-inset-bottom));max-width:568px;margin:0 auto;background:rgba(44,44,46,.96);color:#fff;padding:13px 16px;border-radius:16px;display:flex;gap:12px;align-items:center;z-index:60;font-size:15px;animation:rise .4s var(--spring) both;box-shadow:0 8px 30px rgba(0,0,0,.25)}
.toast span{flex:1} .toast button{border:0;background:none;color:#64a8ff;font:inherit;font-weight:600;cursor:pointer}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:50;display:flex;align-items:flex-end;justify-content:center;animation:fade .25s both}
.sheet{background:var(--bg);width:100%;max-width:600px;border-radius:20px 20px 0 0;padding:10px 16px calc(22px + env(safe-area-inset-bottom));max-height:92vh;overflow:auto;animation:sheetup .5s var(--spring) both}
.sheet::before{content:"";display:block;width:36px;height:5px;border-radius:3px;background:var(--l3);margin:0 auto 14px}
.sheet h3{margin:0 0 4px 4px;font-size:22px;font-weight:700;letter-spacing:.01em}
@keyframes fade{from{opacity:0}}
label{display:block;font-size:13px;color:var(--l2);margin:16px 16px 6px}
.sheet input,.sheet select,.sheet textarea{width:100%;height:48px;border-radius:12px;border:0;background:var(--card);color:inherit;padding:0 16px;font:inherit;outline:none;-webkit-appearance:none;appearance:none}
.sheet input:focus,.sheet select:focus,.sheet textarea:focus{box-shadow:0 0 0 2px var(--blue)}
.sheet textarea{height:200px;padding:12px 16px;resize:vertical}
.btns{display:flex;gap:10px;margin-top:22px}
.btn{flex:1;height:50px;border-radius:25px;border:0;font:inherit;font-weight:600;cursor:pointer;background:var(--card);color:var(--blue);transition:transform .3s var(--spring)}
.btn:active{transform:scale(.97)}
.btn.p{background:var(--blue);color:#fff} .btn.d{color:var(--red);flex:none;padding:0 20px}
.opt{display:block;width:100%;text-align:left;height:52px;border:0;border-top:.5px solid var(--sep);background:none;color:var(--blue);font:inherit;cursor:pointer}
.login{padding-top:calc(110px + env(safe-area-inset-top))}
.login input{width:100%;height:50px;border-radius:12px;border:0;background:var(--card);color:inherit;padding:0 16px;font:inherit;margin-top:12px;outline:none}
.login input:focus{box-shadow:0 0 0 2px var(--blue)}
.err{color:var(--red);margin-top:10px;min-height:20px;font-size:14px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001s!important;animation-delay:0s!important;transition-duration:.001s!important}}
.circle.fresh svg{animation:drawin .45s var(--spring)}
.circle.fresh i{animation:fillpop .4s var(--spring)}
@keyframes drawin{from{stroke-dashoffset:1}}
@keyframes fillpop{0%{transform:scale(.8)}60%{transform:scale(1.12)}100%{transform:scale(1)}}
.tab.on svg{animation:none}
.tab.pop svg{animation:pop .45s var(--spring)}

/* swipe actions */
.sw{position:relative;overflow:hidden}
.sw-c{position:relative;z-index:1;background:var(--card);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.sw-act{position:absolute;top:0;bottom:0;display:flex;align-items:stretch;z-index:0;visibility:hidden}
.sw-s{left:0;right:0;align-items:center;gap:8px;padding-left:20px;color:#fff;font-weight:600}
.sw-i svg{display:block;width:22px;height:22px;fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.sw-e{right:0}
.sw-b{border:0;color:#fff;font:inherit;font-weight:600;font-size:15px;min-width:82px;flex:none;padding:0 6px;cursor:pointer}
.dot-s{width:10px;height:10px;border-radius:5px;background:var(--c);flex:none;margin-right:-2px;animation:dotin .5s var(--spring)}
.dot-r{width:9px;height:9px;border-radius:5px;background:var(--c);flex:none}
@keyframes dotin{from{transform:scale(0)}}
.dim{color:var(--l2)}
.foot{color:var(--l2);font-size:13px;text-align:center;margin:22px 24px 0}
.peek small{margin-left:auto;color:var(--l2);font-size:14px}
.late{color:var(--red)!important}
/* segmented (sheet) */
.segf{display:grid;grid-template-columns:repeat(3,1fr);background:var(--fill);border-radius:10px;padding:2px;margin:0 0 4px}
.segf button{border:0;background:none;height:34px;border-radius:8px;font:inherit;font-size:15px;color:var(--label);cursor:pointer;transition:background .25s,box-shadow .25s}
.segf button.on{background:var(--thumb);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.18)}
/* slide to confirm */
.slide{position:relative;height:56px;border-radius:28px;background:var(--fill);overflow:hidden;margin-top:16px;-webkit-user-select:none;user-select:none}
.slide-f{position:absolute;left:0;top:0;bottom:0;width:52px;border-radius:28px;background:rgba(0,122,255,.22)}
.slide-l{position:absolute;inset:0;display:grid;place-items:center;padding-left:44px;font-weight:500;pointer-events:none;
  background:linear-gradient(90deg,var(--l3) 35%,var(--label) 50%,var(--l3) 65%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:shim 2.6s linear infinite}
@keyframes shim{from{background-position:120% 0}to{background-position:-120% 0}}
.slide-t{position:absolute;left:2px;top:2px;width:52px;height:52px;border-radius:26px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.22);display:grid;place-items:center;cursor:grab;touch-action:none}
.slide-t svg{width:22px;height:22px;fill:none;stroke:var(--blue);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
@media (prefers-reduced-motion:reduce){.slide-l{animation:none;-webkit-text-fill-color:currentColor;color:var(--l2);background:none}}

/* rings */
.gl{position:relative;width:40px;height:40px;flex:none;margin-left:-3px}
.gl svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.gl circle{fill:none;stroke-width:3.4}
.gl .tr{stroke:var(--c);opacity:.18}
.gl .ar{stroke:var(--c);stroke-linecap:round;transition:stroke-dashoffset .8s var(--spring),stroke .4s}
.gl i{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;font-size:18px;line-height:1}
.ov{margin:6px 0 0}
.bar3{display:flex;gap:3px;height:8px}
.bar3 i{border-radius:4px;min-width:0;transition:flex .6s var(--spring)}
.bar3 i[style*="flex:0;"]{display:none}
.leg{display:flex;gap:16px;margin:9px 2px 0;color:var(--l2);font-size:13px}
.leg span{display:flex;align-items:center;gap:6px}
.leg i{width:8px;height:8px;border-radius:4px}
/* hero rings */
.hero{display:flex;align-items:center;gap:22px;background:var(--card);border-radius:22px;padding:20px 20px 20px 18px;margin-bottom:14px}
.hero svg{width:128px;height:128px;flex:none;transform:rotate(-90deg)}
.hero circle{fill:none;stroke-width:12}
.hero .tr{opacity:.17}
.hero .ar{stroke-linecap:round;transition:stroke-dashoffset 1.3s var(--spring)}
.hero .lg{flex:1;min-width:0;display:grid;gap:4px}
.hero .lg button{display:block;width:100%;border:0;background:none;text-align:left;font:inherit;color:inherit;padding:5px 0;cursor:pointer}
.hero .lg small{display:block;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c)}
.hero .lg b{font-size:20px;font-weight:600;letter-spacing:.005em}
.hero .lg b em{font-style:normal;font-size:14px;font-weight:400;color:var(--l2);margin-left:4px}

.avatar{width:36px;height:36px;border-radius:18px;border:0;background:var(--fill);color:var(--label);font:inherit;font-weight:600;cursor:pointer;flex:none;display:grid;place-items:center;transition:transform .3s var(--spring)}
.avatar:active{transform:scale(.92)}
.avatar.big{width:56px;height:56px;border-radius:28px;font-size:24px;background:var(--blue);color:#fff}
.acct{display:flex;align-items:center;gap:14px;margin:8px 4px 4px}
.acct b{display:block;font-size:20px}.acct small{color:var(--l2);font-size:15px}

/* ---- TV look: Outfit, dark glass panels, soft glows ---- */
:root,:root[data-theme]{
  color-scheme:dark;
  --font:'Outfit',-apple-system,BlinkMacSystemFont,'SF Pro Text',system-ui,sans-serif;
  --bg:#08080a; --card:#202023; --label:#fff; --l2:rgba(255,255,255,.66); --l3:rgba(255,255,255,.32); --sep:rgba(255,255,255,.1);
  --fill:rgba(255,255,255,.1); --thumb:#5a5a5e; --blue:#0a84ff; --red:#ff6b5e; --orange:#ffc857; --green:#4cd97b; --bar:rgba(18,18,20,.8);
}
html{background:#08080a}
body{background:radial-gradient(900px 520px at 8% -8%,rgba(76,217,123,.17),transparent 60%),radial-gradient(800px 560px at 105% 6%,rgba(10,132,255,.2),transparent 62%),radial-gradient(700px 500px at 50% 112%,rgba(255,200,87,.1),transparent 60%),#08080a;background-attachment:fixed;font-family:var(--font);letter-spacing:.005em;font-weight:400}
button,input,select,textarea{font-family:var(--font);letter-spacing:.005em}
h1{font-weight:600!important;letter-spacing:-.005em!important}
.sec{text-transform:uppercase;letter-spacing:.09em;font-size:12px;font-weight:500;color:rgba(255,255,255,.55)}
.name b{font-weight:500}
.group,.run-card,.hero,.sheet{border:1px solid rgba(255,255,255,.14);box-shadow:0 18px 40px rgba(0,0,0,.35)}
.run-card,.hero{background:linear-gradient(180deg,#2a2a2e,#161618)}
.sheet{background:linear-gradient(180deg,#2a2a2e,#161618);border-bottom:0}
.group{background:#202023}
.sw-c{background:#202023}
.dock{background:rgba(12,12,14,.93);border-top:1px solid rgba(255,255,255,.1)}
.bar{background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.08))!important;border:1px solid rgba(255,255,255,.22)}
#cmd{background:transparent!important;border:0!important;box-shadow:none!important}
.tab{font-weight:500;letter-spacing:.01em}
.iconbtn,.avatar{background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.08));border:1px solid rgba(255,255,255,.22);color:#fff}
.slide{background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.08));border:1px solid rgba(255,255,255,.22)}
.slide-t{background:#f5f5f7}
.runview{background:radial-gradient(800px 500px at 100% 0,rgba(10,132,255,.2),transparent 60%),#08080a}
.runbar{background:rgba(14,14,16,.7)}
.toast{background:rgba(44,44,48,.96);border:1px solid rgba(255,255,255,.14)}
.hero .lg b{font-weight:600;font-size:22px}
.date{letter-spacing:.09em;text-transform:uppercase;font-size:12px;font-weight:500}
.gl .tr{opacity:.22}

/* ---- photo background (home is bright and glassy; lists are dimmed for readability) ---- */
html{background:#08080a}
body{background:transparent!important}
#bg{position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(900px 520px at 8% -8%,rgba(76,217,123,.2),transparent 60%),radial-gradient(800px 560px at 105% 6%,rgba(10,132,255,.24),transparent 62%),#08080a}
#bg .ph{position:absolute;inset:0;background:center/cover no-repeat;opacity:0;transition:opacity 1.4s ease;transform:scale(1.04)}
#bg .ph.on{opacity:1;animation:drift 40s ease-in-out infinite alternate}
@keyframes drift{from{transform:scale(1.04) translate(0,0)}to{transform:scale(1.1) translate(-1.2%,-1%)}}
#bg::after{content:"";position:absolute;inset:0;transition:background .6s;background:linear-gradient(180deg,rgba(0,0,0,.78),rgba(0,0,0,0) 34%),linear-gradient(0deg,rgba(0,0,0,.85),rgba(0,0,0,0) 36%),rgba(0,0,0,.62)}
body.home #bg::after{background:linear-gradient(180deg,rgba(0,0,0,.72),rgba(0,0,0,0) 30%),linear-gradient(0deg,rgba(0,0,0,.82),rgba(0,0,0,0) 34%),rgba(0,0,0,.28)}
#app,main,header{position:relative;z-index:1}
body.home .hero,body.home .run-card,body.home .group{background:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,.05)),rgba(8,8,12,.38);-webkit-backdrop-filter:blur(26px) saturate(1.5);backdrop-filter:blur(26px) saturate(1.5);border:1px solid rgba(255,255,255,.24);box-shadow:0 20px 50px rgba(0,0,0,.28)}
body.home .mod{background:none}
body.home .slide{background:rgba(255,255,255,.14)}
body.home h1{font-size:44px;text-shadow:0 2px 18px rgba(0,0,0,.35)}
body.home .date{color:rgba(255,255,255,.8)}
body.home .hero .tr{opacity:.28}
body.home .hero .lg button:nth-child(3){--c:#6cb6ff}
body.home .hero .lg button:nth-child(1){--c:#6ee79a}
body.home .hero svg{width:112px;height:112px}
body.home .hero{padding:16px 18px;margin-bottom:12px}
body.home .run-card{padding:16px 16px 14px}

/* voice result card */
.vcard{position:fixed;left:14px;right:14px;top:calc(10px + env(safe-area-inset-top));max-width:572px;margin:0 auto;z-index:70;display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:20px;background:linear-gradient(180deg,rgba(60,60,66,.92),rgba(30,30,34,.94));-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:1px solid rgba(255,255,255,.2);box-shadow:0 18px 40px rgba(0,0,0,.4);animation:vin .55s var(--spring) both}
.vcard.out{animation:vout .35s ease forwards}
@keyframes vin{from{transform:translateY(-130%);opacity:0}}
@keyframes vout{to{transform:translateY(-130%);opacity:0}}
.vl{flex:1;min-width:0}.vr{display:flex;align-items:center;gap:10px;padding:2px 0}.vr i{width:9px;height:9px;border-radius:5px;flex:none}.vr b{font-weight:600}
.vcard button{border:0;background:none;color:#64a8ff;font:inherit;font-weight:600;cursor:pointer}
/* mini title bar, offline banner, skeleton, strip, pills, misc */
.mini{position:fixed;top:0;left:0;right:0;z-index:20;height:calc(46px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);display:grid;place-items:center;background:rgba(12,12,14,.8);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);border-bottom:1px solid rgba(255,255,255,.1);opacity:0;pointer-events:none;transition:opacity .3s}
.mini.on{opacity:1}.mini span{font-weight:600;font-size:17px}
.net{position:fixed;left:50%;top:calc(8px + env(safe-area-inset-top));transform:translate(-50%,-160%);z-index:60;padding:8px 16px;border-radius:20px;font-size:14px;background:rgba(255,200,87,.95);color:#2b2100;font-weight:500;transition:transform .5s var(--spring);white-space:nowrap}
.net.on{transform:translate(-50%,0)}
.skel{border-radius:22px;margin-bottom:14px;background:linear-gradient(100deg,rgba(255,255,255,.06) 30%,rgba(255,255,255,.14) 50%,rgba(255,255,255,.06) 70%);background-size:300% 100%;animation:skl 1.4s ease-in-out infinite}
@keyframes skl{from{background-position:120% 0}to{background-position:-120% 0}}
.strip{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.strip span{padding:7px 13px;border-radius:18px;font-size:14px;font-weight:500;background:linear-gradient(180deg,rgba(255,255,255,.2),rgba(255,255,255,.08));border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
.pills{display:flex;gap:8px;margin:14px 0 0;overflow-x:auto;scrollbar-width:none}
.pills::-webkit-scrollbar{display:none}
.pills button{flex:none;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.1);color:inherit;font:inherit;font-weight:500;font-size:15px;padding:7px 14px;border-radius:18px;cursor:pointer;transition:background .3s,color .3s,transform .3s var(--spring)}
.pills button:active{transform:scale(.95)}
.pills button.on{background:#f5f5f7;color:#111;border-color:transparent}
.pills em{font-style:normal;opacity:.6;margin-left:6px}
.who{color:#6cb6ff!important;font-size:13px!important}
.asg{width:26px;height:26px;border-radius:13px;display:grid;place-items:center;font-size:13px;font-weight:600;background:rgba(255,255,255,.14);flex:none}

.bar.think{animation:think 1.1s ease-in-out infinite}
@keyframes think{50%{box-shadow:0 0 0 3px rgba(100,168,255,.45)}}
#mic{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#mic.on{background:rgba(255,107,94,.22);transform:scale(1.18);transition:transform .25s var(--spring)}
