:root{
  --page:#eef1f0; --paper:#ffffff; --ink:#17212b; --muted:#566370; --line:#d5dcda; --soft:#f2f5f4; --tint:#e3efe9;
  --ilana:#8a2f6b; --ilana-soft:#f7e9f2;
  --gleb:#0e6f6a; --gleb-soft:#e0f1ef;
  --hard:#a5480a; --hard-soft:#fcefdc;
  --good:#1f7a3f; --bad:#b3261e;
  --me:var(--gleb); --me-soft:var(--gleb-soft);
  --font-head:"Bricolage Grotesque",system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-body:"Atkinson Hyperlegible",system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --r:6px;
  color-scheme:light;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --page:#10161c; --paper:#1a222b; --ink:#e8edf0; --muted:#a5b0ba; --line:#33404b; --soft:#212b35; --tint:#20322d;
    --ilana:#e79ccb; --ilana-soft:#3a2434; --gleb:#62d0c8; --gleb-soft:#18383a;
    --hard:#f2ab50; --hard-soft:#3b2c16; --good:#6fd08f; --bad:#ff8a80;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --page:#10161c; --paper:#1a222b; --ink:#e8edf0; --muted:#a5b0ba; --line:#33404b; --soft:#212b35; --tint:#20322d;
  --ilana:#e79ccb; --ilana-soft:#3a2434; --gleb:#62d0c8; --gleb-soft:#18383a;
  --hard:#f2ab50; --hard-soft:#3b2c16; --good:#6fd08f; --bad:#ff8a80;
  color-scheme:dark;
}
body[data-person="ilana"]{--me:var(--ilana);--me-soft:var(--ilana-soft);}
body[data-person="gleb"]{--me:var(--gleb);--me-soft:var(--gleb-soft);}

*{box-sizing:border-box;}
html,body{margin:0;min-height:100%;}
body{background:var(--page);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.45;-webkit-tap-highlight-color:transparent;}
h1,h2,h3{font-family:var(--font-head);line-height:1.15;margin:0;}
h2{font-size:1.35rem;font-weight:700;letter-spacing:-.01em;}
h3{font-size:1.05rem;font-weight:700;}
button,input,select,textarea{font:inherit;color:inherit;}
button{cursor:pointer;}
a{color:var(--me);text-underline-offset:2px;}
:focus-visible{outline:3px solid var(--me);outline-offset:2px;}
.muted{color:var(--muted);}
.small{font-size:.86rem;}
.hidden{display:none !important;}
@media (prefers-reduced-motion: reduce){*{transition:none !important;animation:none !important;}}

/* Header */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--page);padding:10px 14px 8px;}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:21;background:var(--page);}
.top-row{display:flex;align-items:center;gap:10px;max-width:720px;margin:0 auto;}
.brand{font-family:var(--font-head);font-weight:700;font-size:1.25rem;letter-spacing:-.02em;margin-right:auto;}
.who{display:flex;background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:3px;}
.who button{border:0;background:none;padding:8px 14px;border-radius:999px;font-weight:700;color:var(--muted);min-height:40px;}
.who button[data-p="ilana"].on{background:var(--ilana);color:var(--paper);}
.who button[data-p="gleb"].on{background:var(--gleb);color:var(--paper);}
.icon-btn{border:1px solid var(--line);background:var(--paper);width:42px;height:42px;border-radius:50%;display:grid;place-items:center;padding:0;}
.icon-btn svg{width:20px;height:20px;}

/* Day picker */
.weekbar{max-width:720px;margin:8px auto 0;display:flex;align-items:center;gap:4px;}
.weekbar .nav{border:0;background:none;width:32px;height:56px;color:var(--muted);font-size:1.3rem;padding:0;}
.days{flex:1;display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.chip{border:1px solid transparent;background:none;border-radius:14px;padding:4px 0 6px;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:64px;}
.chip .dn{font-size:.78rem;color:var(--muted);font-weight:700;}
.chip.sel{background:var(--paper);border-color:var(--line);}
.chip.today .dn{color:var(--me);}
.ring{width:36px;height:36px;position:relative;}
.ring svg{width:36px;height:36px;transform:rotate(-90deg);}
.ring b{position:absolute;inset:0;display:grid;place-items:center;font-size:.85rem;font-variant-numeric:tabular-nums;}
.ring .bg{stroke:var(--line);} .ring .fg{stroke:var(--me);transition:stroke-dashoffset .3s;}
.chip .hardmark{width:6px;height:6px;border-radius:50%;background:var(--hard);}
.chip .nomark{width:6px;height:6px;}

/* Main */
main{max-width:720px;margin:0 auto;padding:6px 14px 110px;}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin:10px 0;}
.dayhead{margin:12px 2px 2px;}
.dayhead h2{font-size:1.75rem;letter-spacing:-.02em;}
.dayhead h2 .dd{font-weight:500;color:var(--muted);}
.daymeta{margin:2px 0 0;color:var(--muted);display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;}
.daymeta .score{margin-left:auto;font-family:var(--font-head);font-weight:700;color:var(--me);font-variant-numeric:tabular-nums;}
.hardtag{color:var(--hard);font-weight:700;}
.badge{display:inline-block;font-size:.8rem;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--soft);border:1px solid var(--line);}
.badge.me{background:var(--me-soft);border-color:var(--me);color:var(--me);}

.strip{display:flex;gap:0;overflow-x:auto;margin:10px 0 6px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);scrollbar-width:none;}
.strip::-webkit-scrollbar{display:none;}
.stat{flex:0 0 auto;background:none;border:0;border-right:1px solid var(--line);padding:7px 12px 6px;min-width:66px;text-align:left;}
.stat:last-child{border-right:0;}
.stat b{display:block;font-family:var(--font-head);font-size:1.15rem;font-variant-numeric:tabular-nums;line-height:1.1;}
.stat span{font-size:.72rem;color:var(--muted);}
.stat.add{color:var(--me);font-weight:700;display:flex;align-items:center;padding:12px;}
.stat.cycle b{color:var(--ilana);}

.banner{border-left:4px solid var(--me);background:var(--me-soft);padding:10px 12px;margin:8px 0;display:flex;gap:10px;align-items:center;}
.banner.warn{border-color:var(--hard);background:var(--hard-soft);}
.banner p{margin:0;flex:1;font-size:.94rem;}
.banner button{border:1px solid currentColor;background:none;border-radius:8px;padding:6px 12px;font-weight:700;white-space:nowrap;min-height:38px;}

/* Next up: the one thing to do now */
.next{margin:12px 0 4px;padding:12px 14px 14px;border:2px solid var(--me);border-radius:6px;background:var(--paper);}
.next-when{margin:0;font-size:.82rem;font-weight:700;color:var(--me);font-variant-numeric:tabular-nums;}
.next h3{font-size:1.2rem;margin:2px 0 4px;}
.next p.small{margin:0 0 4px;color:var(--muted);}
.next-act{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px;}
.next-act .inline-field input{width:130px;}
.linkbtn{border:0;background:none;color:var(--me);font-weight:700;padding:8px 2px;min-height:40px;text-align:left;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;}

/* The day rail: time column, a line, nodes you tick */
.rail{margin-top:8px;}
.group{margin:14px 0 0;}
.group-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 0 2px 0;padding-left:56px;}
.group-head h3{font-size:.8rem;font-weight:700;color:var(--muted);letter-spacing:.02em;margin:0;}
.group-head .linkbtn{font-size:.84rem;padding:4px 0;min-height:32px;}
.items{position:relative;}
.items::before{content:"";position:absolute;left:75px;top:8px;bottom:8px;width:2px;background:var(--line);}
.item{position:relative;}
.item-row{display:grid;grid-template-columns:52px 46px 1fr;align-items:center;gap:0;min-height:56px;padding:3px 0;}
.when{font-family:var(--font-head);font-weight:700;font-size:.88rem;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;padding-right:8px;}
.when.now{color:var(--me);}
.tick{justify-self:center;position:relative;z-index:1;width:36px;height:36px;border-radius:50%;border:2px solid var(--line);background:var(--page);display:grid;place-items:center;padding:0;}
.tick svg{width:18px;height:18px;opacity:0;}
.tick[data-s="done"]{background:var(--me);border-color:var(--me);color:var(--paper);}
.tick[data-s="done"] svg{opacity:1;}
.tick[data-s="partly"]{border-color:var(--me);background:linear-gradient(90deg,var(--me) 50%,var(--page) 50%);}
.tick[data-s="missed"]{border-color:var(--bad);color:var(--bad);}
.tick[data-s="missed"] svg{opacity:1;}
.item.hard .tick:not([data-s="done"]){border-color:var(--hard);}
.item-main{min-width:0;border:0;background:none;text-align:left;padding:8px 4px 8px 6px;}
.item-title{font-weight:700;display:block;line-height:1.25;}
.item.s-done .item-title{color:var(--muted);}
.item-sub{font-size:.82rem;color:var(--muted);display:block;margin-top:1px;}
.item.open .item-main{color:var(--me);}
.item-body{display:none;margin:0 0 10px 98px;padding:2px 0 8px;font-size:.94rem;border-bottom:1px solid var(--line);}
.item.open .item-body{display:block;}
.item-body p{margin:6px 0;}
.seg{display:flex;gap:6px;margin:10px 0 4px;flex-wrap:wrap;}
.seg button{border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:7px 14px;font-weight:700;font-size:.86rem;min-height:40px;}
.seg button.on{background:var(--me);border-color:var(--me);color:var(--paper);}
.seg button.on.miss{background:var(--bad);border-color:var(--bad);}
.moves{list-style:none;margin:8px 0;padding:0;}
.moves li{padding:8px 0;border-top:1px dashed var(--line);}
.moves li:first-child{border-top:0;}
.move-name{font-weight:700;}
.dose{font-variant-numeric:tabular-nums;color:var(--me);font-weight:700;}
.cue{font-size:.88rem;color:var(--muted);margin-top:2px;}
.form{font-size:.84rem;margin-top:3px;border-left:3px solid var(--me);padding-left:8px;}
.yt{display:inline-block;font-size:.84rem;margin-top:3px;margin-right:10px;}
.inline-field{display:flex;align-items:center;gap:8px;margin:8px 0;}
.inline-field input{width:110px;}
.dayfoot{margin:22px 0 0;padding-top:10px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:flex-start;}
.btn{border:1px solid var(--me);background:var(--me);color:var(--paper);border-radius:8px;padding:10px 16px;font-weight:700;min-height:44px;text-decoration:none;display:inline-flex;align-items:center;}
.btn.ghost{background:none;color:var(--me);}
.btn.danger{background:var(--bad);border-color:var(--bad);}
.btn.block{width:100%;justify-content:center;}
.btn:disabled{opacity:.5;}
.btn-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}

/* Timeline (yoga, intervals) */
.tl{list-style:none;margin:8px 0;padding:0;}
.tl li{display:grid;grid-template-columns:62px 1fr;gap:8px;padding:8px 0;border-top:1px solid var(--line);}
.tl li:first-child{border-top:0;}
.tl .min{font-variant-numeric:tabular-nums;font-weight:700;color:var(--muted);}
.tl li.now{background:var(--me-soft);margin:0 -8px;padding:8px;border-radius:8px;}
.tl li.now .min{color:var(--me);}
.timer{display:flex;align-items:center;gap:10px;margin:6px 0 4px;}
.timer b{font-family:var(--font-head);font-size:1.6rem;font-variant-numeric:tabular-nums;min-width:90px;}

details.timeline{margin:10px 0;}
details.timeline summary{cursor:pointer;font-weight:700;color:var(--muted);padding:6px 2px;}
.tline{display:grid;grid-template-columns:96px 1fr;gap:6px 10px;font-size:.9rem;}
.tline .t{font-weight:700;font-variant-numeric:tabular-nums;}

/* Forms */
label.f{display:block;font-weight:700;font-size:.9rem;margin:12px 0 4px;}
.f-hint{font-weight:400;color:var(--muted);font-size:.82rem;}
input[type=number],input[type=text],input[type=time],input[type=date],input[type=url],input[type=password],select,textarea{
  background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px;width:100%;}
textarea{min-height:70px;resize:vertical;}
.stepper{display:flex;align-items:stretch;gap:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--paper);}
.stepper button{border:0;background:var(--soft);width:46px;font-size:1.3rem;font-weight:700;}
.stepper input{border:0;border-radius:0;text-align:center;font-variant-numeric:tabular-nums;font-weight:700;min-width:0;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
.fieldset{border-top:1px solid var(--line);margin-top:16px;padding-top:6px;}
.fieldset > h3{margin:6px 0 2px;}
.err-text{color:var(--bad);font-size:.86rem;}
.check{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line);}
.check:first-child{border-top:0;}
.check input{width:22px;height:22px;accent-color:var(--me);}

/* Charts */
.chart{width:100%;height:150px;display:block;}
.chart .axis{stroke:var(--line);stroke-width:1;}
.chart .line{fill:none;stroke:var(--me);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round;}
.chart .line2{fill:none;stroke:var(--muted);stroke-width:1.8;stroke-dasharray:1 0;}
.chart .dot{fill:var(--me);}
.chart .dot2{fill:var(--muted);}
.chart .target{stroke:var(--hard);stroke-width:1.5;stroke-dasharray:5 4;fill:none;}
.chart text{fill:var(--muted);font-size:10px;font-family:var(--font-body);}
.metric-head{display:flex;align-items:baseline;gap:8px;}
.metric-head h3{margin-right:auto;}
.big{font-family:var(--font-head);font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;}
.arrow{font-weight:700;font-size:.9rem;}
.arrow.good{color:var(--good);} .arrow.bad{color:var(--bad);} .arrow.flat{color:var(--muted);}
.toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;}
.toggle button{border:0;background:none;padding:6px 14px;font-weight:700;color:var(--muted);min-height:36px;}
.toggle button.on{background:var(--me);color:var(--paper);}

.kv{display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:baseline;}
.kv .v{font-weight:700;font-variant-numeric:tabular-nums;text-align:right;}
.kv .ok{color:var(--good);} .kv .no{color:var(--bad);}
.table{width:100%;border-collapse:collapse;font-size:.9rem;}
.table th,.table td{border-bottom:1px solid var(--line);padding:7px 4px;text-align:left;vertical-align:top;}
.table td.n{text-align:right;font-variant-numeric:tabular-nums;}
.scroll-x{overflow-x:auto;}

/* Bottom nav */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--paper);border-top:1px solid var(--line);
  padding:4px 6px calc(4px + env(safe-area-inset-bottom,0px));display:flex;justify-content:center;}
.tabs-in{display:grid;grid-template-columns:repeat(5,1fr);max-width:560px;width:100%;}
.tabs button{border:0;background:none;padding:8px 2px 6px;display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--muted);font-size:.74rem;font-weight:700;min-height:56px;}
.tabs button svg{width:24px;height:24px;}
.tabs button.on{color:var(--me);}

/* Sheets and dialogs */
.sheet-bg{position:fixed;inset:0;background:rgba(10,14,18,.5);z-index:40;display:flex;align-items:flex-end;justify-content:center;}
.sheet{background:var(--paper);width:100%;max-width:560px;border-radius:18px 18px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom,0px));max-height:92vh;overflow:auto;}
@media (min-width:640px){.sheet-bg{align-items:center;}.sheet{border-radius:18px;}}
.sheet h2{margin-bottom:6px;}
.pin-dots{display:flex;gap:14px;justify-content:center;margin:18px 0;}
.pin-dots i{width:16px;height:16px;border-radius:50%;border:2px solid var(--me);}
.pin-dots i.f{background:var(--me);}
.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:300px;margin:0 auto;}
.pad button{height:62px;border-radius:16px;border:1px solid var(--line);background:var(--soft);font-family:var(--font-head);font-size:1.5rem;font-weight:700;}
.pad button.ghost{background:none;border-color:transparent;font-size:1rem;font-family:var(--font-body);color:var(--muted);}
.shake{animation:shake .35s;}
@keyframes shake{20%,60%{transform:translateX(-8px);}40%,80%{transform:translateX(8px);}}

.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:50;
  background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:999px;font-weight:700;font-size:.9rem;max-width:90vw;}
.toast.err{background:var(--bad);}

.lock-screen{max-width:420px;margin:12vh auto 0;padding:0 18px;text-align:center;}
.lock-screen h1{font-size:2.2rem;letter-spacing:-.03em;}
.lock-screen .pick{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:28px;}
.lock-screen .pick button{border:2px solid var(--line);background:var(--paper);border-radius:18px;padding:26px 10px;font-family:var(--font-head);font-size:1.4rem;font-weight:700;}
.lock-screen .pick button[data-unlock="ilana"]{color:var(--ilana);border-color:var(--ilana);}
.lock-screen .pick button[data-unlock="gleb"]{color:var(--gleb);border-color:var(--gleb);}

.list-btn{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;border-top:1px solid var(--line);background:none;padding:14px 4px;text-align:left;font-weight:700;min-height:52px;}
.list-btn:first-child{border-top:0;}
.list-btn span.muted{font-weight:400;font-size:.88rem;}

.pick-days{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0;}
.pick-days button{border:2px solid var(--line);background:var(--paper);border-radius:12px;padding:14px 4px;font-weight:700;min-height:52px;}
.pick-days button.on{border-color:var(--hard);background:var(--hard-soft);color:var(--hard);}
.rules{margin:8px 0;padding-left:18px;}
.rules li{margin:4px 0;}

.cycle-big{font-family:var(--font-head);font-size:3.4rem;font-weight:700;color:var(--ilana);line-height:1;}

@media (max-width:380px){
  .who button{padding:8px 10px;}
  .item-row{grid-template-columns:44px 42px 1fr;}
  .items::before{left:64px;}
  .group-head{padding-left:46px;}
  .item-body{margin-left:46px;}
  .grid3{grid-template-columns:1fr 1fr;}
}

.oura-form .fieldset:first-child{border-top:0;margin-top:0;}
.more-fields summary{cursor:pointer;font-weight:700;padding:8px 0;}
.more-fields .sub3{font-size:.9rem;margin:10px 0 0;color:var(--muted);}
.savebar{position:sticky;bottom:calc(66px + env(safe-area-inset-bottom,0px));background:var(--paper);padding:10px 0 2px;margin-top:6px;}
.z2row{display:grid;grid-template-columns:1fr 88px auto;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--line);}
.z2row:first-of-type{border-top:0;}
.z2row label{font-weight:700;font-size:.92rem;}
