/* 版面：手機優先的單欄，底部三個分頁；池塘水藍底，鴨黃為主色。 */
:root{
  --bg:#EDF5FA; --surface:#FFFFFF; --surface-2:#E1EEF6; --ink:#1F2D3D; --muted:#5F7385; --line:#D2E2EC;
  --duck:#FFCF3F; --duck-shade:#F1B21A; --beak:#FF8A3D; --blush:#FF9FA8; --eye:#2A2A33; --shine:#FFFFFF;
  --on-duck:#2B2100;
  --pee:#F2BE14; --pee-soft:#FFF2C2; --pee-ink:#7A5A00;
  --water:#3A9BDC; --water-deep:#2479B5; --water-soft:#DCEEFA;
  --tea:#76A043; --tea-soft:#E6F0D6;
  --soup:#E2703A; --soup-soft:#FBE2D4;
  --other:#8C7BC0; --other-soft:#ECE7F7;
  --danger:#C93C3C; --ok:#4E9A5B;
  --scrim:rgba(15,24,34,.45);
  --font-display:"LXGW WenKai TC","Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;
  --font-body:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;
  --font-num:"Fredoka","Noto Sans TC",system-ui,sans-serif;
  --r-lg:22px; --r-md:14px; --r-sm:10px;
  --nav-h:64px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0F1822; --surface:#172332; --surface-2:#1F2E3F; --ink:#E8F0F7; --muted:#9BADBE; --line:#2A3B4E;
    --duck:#FFD254; --duck-shade:#E9AE1E; --beak:#FF9550; --blush:#F58C98;
    --pee:#F6C935; --pee-soft:#3A3216; --pee-ink:#FFE08A;
    --water:#5DB3EE; --water-deep:#2E86C4; --water-soft:#15324A;
    --tea:#9CC266; --tea-soft:#24331A;
    --soup:#F08A5D; --soup-soft:#3B2418;
    --other:#ADA0E0; --other-soft:#2A2440;
    --danger:#F07272; --ok:#7CC88A;
    --scrim:rgba(0,0,0,.6);
    color-scheme:dark;
  }
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.55;-webkit-tap-highlight-color:transparent;
  padding-top:env(safe-area-inset-top,0px)}
[hidden]{display:none!important}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--water);outline-offset:2px}
.wrap{max-width:600px;margin:0 auto;padding-inline:16px;padding-block:14px calc(var(--nav-h) + 28px + env(safe-area-inset-bottom,0px))}

/* header */
.top{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.top .mascot{width:52px;height:47px;flex:none;animation:bob 3.2s ease-in-out infinite}
.top h1{font-family:var(--font-display);font-size:1.45rem;line-height:1.15;margin:0;flex:1;min-width:0}
.sync{font-size:.74rem;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 10px;white-space:nowrap}
.sync::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--muted);margin-right:6px;vertical-align:1px}
.sync.ok::before{background:var(--ok)}
.sync.busy::before{background:var(--water)}
.sync.off::before{background:var(--pee)}
.sync.err::before{background:var(--danger)}
@keyframes bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-3px) rotate(-2deg)}}

.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px}
.stack{display:flex;flex-direction:column;gap:14px}
.eyebrow{font-size:.75rem;letter-spacing:.12em;color:var(--muted);margin:0}
.day-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.day-head h2{font-family:var(--font-display);font-size:1.5rem;margin:0}
.day-head .wd{color:var(--muted);font-size:.9rem}

/* big buttons */
.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.big{display:flex;align-items:center;justify-content:center;gap:10px;border:0;border-radius:var(--r-md);padding:16px 10px;font-weight:700;font-size:1.08rem;transition:transform .12s}
.big > span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;flex:none}
.big svg{width:28px;height:28px}
.big.pee > span{background:#FFFFFF}
.big.drink > span{background:rgba(255,255,255,.22)}
.big:active{transform:translateY(2px)}
.big.pee{background:var(--pee);color:#3D2D00;box-shadow:0 4px 0 var(--duck-shade)}
.big.drink{background:var(--water);color:#FFFFFF;box-shadow:0 4px 0 var(--water-deep)}
.small-actions{display:flex;gap:8px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 12px 6px 8px;font-size:.88rem;font-weight:500}
.pill svg{width:20px;height:20px}
.pill:hover{background:var(--surface-2)}

/* stats */
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.stat{border-radius:var(--r-md);padding:10px 12px;min-width:0}
.stat .k{font-size:.75rem;color:var(--muted);letter-spacing:.05em}
.stat .v{font-family:var(--font-num);font-size:1.55rem;font-weight:600;line-height:1.15;font-variant-numeric:tabular-nums;white-space:nowrap}
.stat .v small{font-size:.78rem;font-weight:500;margin-left:2px;font-family:var(--font-body)}
.stat .sub{font-size:.72rem;color:var(--muted);min-height:1.2em}
.stat.p{background:var(--pee-soft)} .stat.p .v{color:var(--pee-ink)}
.stat.u{background:var(--surface-2)}
.stat.w{background:var(--water-soft)} .stat.w .v{color:var(--water)}

/* intake pond */
.intake{background:var(--surface-2);border-radius:var(--r-md);padding:12px 14px 14px}
.intake-top{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--muted);flex-wrap:wrap}
.intake-top b{color:var(--ink);font-family:var(--font-num);font-weight:600}
.intake-top .grow{flex:1}
.pond{position:relative;height:16px;border-radius:999px;background:var(--surface);border:1px solid var(--line);margin-top:26px}
.pond .seg{position:absolute;inset:0 auto 0 0;width:100%;display:flex;border-radius:999px;overflow:hidden}
.pond .seg i{display:block;height:100%}
.pond .swimmer{position:absolute;top:-27px;width:34px;height:30px;transform:translateX(-50%);transition:left .5s cubic-bezier(.3,1.4,.5,1)}
.kinds-row{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:10px;font-size:.78rem;color:var(--muted)}
.kinds-row span{display:inline-flex;align-items:center;gap:5px;font-variant-numeric:tabular-nums}
.kinds-row i{width:9px;height:9px;border-radius:50%;display:inline-block}

/* entries */
.list-title{font-size:.8rem;color:var(--muted);letter-spacing:.08em;margin:0 0 -6px}
.entries{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
.entry{width:100%;display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:12px;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-md);padding:9px 12px}
.entry:hover{border-color:var(--water)}
.entry time{font-family:var(--font-num);font-weight:500;font-variant-numeric:tabular-nums;font-size:1rem;min-width:3.1em}
.entry .ico{width:34px;height:34px;border-radius:50%;display:grid;place-items:center}
.entry .ico svg{width:24px;height:24px}
.entry .txt{min-width:0}
.entry .txt b{display:block;font-weight:700}
.entry .txt small{display:block;color:var(--muted);font-size:.8rem;overflow-wrap:anywhere}
.entry .edit{font-size:.75rem;color:var(--muted)}
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 8px 4px;color:var(--muted)}
.empty svg{width:120px;height:100px}
.empty b{color:var(--ink);font-family:var(--font-display);font-size:1.08rem;margin-top:2px}
.empty p{margin:4px 0 0;font-size:.88rem;max-width:30ch}

/* calendar */
.cal-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.cal-head h2{font-family:var(--font-display);font-size:1.3rem;margin:0;flex:1}
.cal-head h2 span{font-family:var(--font-num);font-weight:600}
.icon-btn{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;font-size:1.15rem;line-height:1;flex:none}
.icon-btn:hover{background:var(--surface-2)}
.text-btn{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 12px;font-size:.82rem}
.text-btn:hover{background:var(--surface-2)}
.week,.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.week div{text-align:center;font-size:.75rem;color:var(--muted);padding-bottom:4px}
.week div:first-child,.week div:last-child{color:var(--soup)}
.day{position:relative;aspect-ratio:1/1.08;max-width:100%;border:0;border-radius:var(--r-sm);background:var(--surface-2);padding:5px 3px 8px;display:flex;flex-direction:column;align-items:center;gap:3px;overflow:hidden}
.day .n{font-family:var(--font-num);font-weight:500;font-size:.95rem;line-height:1}
.day .pc{font-family:var(--font-num);font-size:.72rem;font-weight:600;line-height:1;background:var(--pee);color:#3D2D00;border-radius:999px;padding:3px 6px 2px;display:inline-flex;align-items:center;gap:2px}
.day .pc svg{width:8px;height:10px}
.day .bar{position:absolute;left:5px;right:5px;bottom:4px;height:4px;border-radius:2px;background:var(--line);overflow:hidden}
.day .bar i{display:block;height:100%;background:var(--water);border-radius:2px}
.day.blank{background:transparent;pointer-events:none}
.day.today{box-shadow:inset 0 0 0 2px var(--duck)}
.day.today .n{color:var(--beak)}
.day.sel{background:var(--duck);color:var(--on-duck);box-shadow:none}
.day.sel .n{color:var(--on-duck)}
.day.sel .pc{background:#FFFFFF}
.day.sel .bar{background:rgba(255,255,255,.55)}
.day.future{opacity:.5}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:12px;font-size:.78rem;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend .sw-p{width:16px;height:10px;border-radius:999px;background:var(--pee)}
.legend .sw-w{width:16px;height:4px;border-radius:2px;background:var(--water)}

/* me */
.rows{display:flex;flex-direction:column}
.row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.row:first-child{border-top:0;padding-top:2px}
.row .lbl{flex:1;min-width:0}
.row .lbl b{display:block;font-weight:500}
.row .lbl small{display:block;color:var(--muted);font-size:.8rem;overflow-wrap:anywhere}
.goal-input{width:96px}
.goal-input input{width:100%;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:7px 34px 7px 10px;font-family:var(--font-num);text-align:right;font-variant-numeric:tabular-nums}

/* bottom nav */
.nav{position:fixed;left:0;right:0;bottom:0;z-index:10;background:var(--surface);border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom,0px)}
.nav-in{max-width:600px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);height:var(--nav-h)}
.nav button{border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.74rem;color:var(--muted)}
.nav button svg{width:26px;height:26px}
.nav button[aria-current="page"]{color:var(--ink);font-weight:700}
.nav button[aria-current="page"] .nav-dot{background:var(--duck);color:var(--on-duck)}
.nav-dot{width:40px;height:30px;border-radius:999px;display:grid;place-items:center}

/* login */
.login{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding-inline:16px;padding-block:24px}
.login-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:14px;text-align:center}
.login-card .duck{width:150px;height:135px;margin:0 auto -6px;animation:bob 3.2s ease-in-out infinite}
.login-card h1{font-family:var(--font-display);font-size:1.9rem;margin:0}
.login-card p{margin:0;color:var(--muted)}
.login-card form{display:flex;flex-direction:column;gap:12px;text-align:left;margin-top:6px}
.code-input{font-family:var(--font-num)!important;font-size:1.6rem!important;letter-spacing:.5em;text-align:center;padding-left:.5em!important}
.linkish{border:0;background:none;color:var(--water);padding:4px;font-size:.88rem;text-decoration:underline;text-underline-offset:3px}
.linkish:disabled{color:var(--muted);text-decoration:none;cursor:default}
.login-foot{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}

/* form controls (sheet + login) */
.field{display:flex;flex-direction:column;gap:5px;font-size:.85rem;font-weight:500;min-width:0}
.field small{color:var(--muted);font-weight:400}
.field input{width:100%;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:10px 12px;font-size:1rem;min-width:0}
.field input:focus{border-color:var(--water);outline:none}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.unit{position:relative;display:block}
.unit input{padding-right:42px;font-family:var(--font-num);font-variant-numeric:tabular-nums}
.unit span{position:absolute;right:11px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:.85rem;pointer-events:none}
.err{color:var(--danger);font-size:.85rem;margin:0}
.btn{border-radius:999px;padding:10px 18px;font-weight:700;border:1px solid var(--line);background:var(--surface)}
.btn:hover{background:var(--surface-2)}
.btn.primary{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.btn.primary:hover{background:var(--ink);opacity:.9}
.btn.primary:disabled{opacity:.5;cursor:default}
.btn.block{width:100%;padding:13px}
.btn.danger{color:var(--danger);border-color:transparent;background:transparent;padding-inline:8px}
.btn.danger.armed{background:var(--danger);color:#FFFFFF;padding-inline:14px}

/* sheet */
.overlay{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:20;padding:16px}
.sheet{width:100%;max-width:460px;background:var(--surface);border-radius:var(--r-lg);padding:18px 18px 16px;display:flex;flex-direction:column;gap:14px;max-height:calc(100% - 8px);overflow:auto;box-shadow:0 20px 50px rgba(0,0,0,.25)}
@media (max-width:560px){
  .overlay{align-items:flex-end;padding:0}
  .sheet{border-radius:var(--r-lg) var(--r-lg) 0 0;max-width:none;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}
}
.sheet-head{display:flex;align-items:center;gap:10px}
.sheet-head .ico{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none}
.sheet-head .ico svg{width:28px;height:28px}
.sheet-head h3{font-family:var(--font-display);font-size:1.3rem;margin:0;flex:1}
.kinds{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.kinds legend{font-size:.85rem;font-weight:500;padding:0;margin-bottom:5px}
.kind{position:relative}
.kind input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.kind label{display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 4px 7px;border:1.5px solid var(--line);border-radius:var(--r-md);font-size:.88rem;font-weight:500}
.kind label svg{width:28px;height:28px}
.kind input:checked + label{border-color:var(--kc);background:var(--ks)}
.kind input:focus-visible + label{outline:3px solid var(--water);outline-offset:2px}
.quick{display:flex;flex-wrap:wrap;gap:6px}
.quick button{border:1px solid var(--line);background:var(--surface-2);border-radius:999px;padding:4px 12px;font-family:var(--font-num);font-size:.88rem;font-variant-numeric:tabular-nums}
.quick button:hover{border-color:var(--water)}
.sheet-actions{display:flex;align-items:center;gap:8px;padding-top:4px}
.sheet-actions .spacer{flex:1}

.toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:9px 18px;border-radius:999px;font-size:.9rem;z-index:30;box-shadow:0 8px 24px rgba(0,0,0,.2);max-width:calc(100% - 32px);text-align:center}

@media (prefers-reduced-motion: reduce){
  .top .mascot,.login-card .duck{animation:none}
  .pond .swimmer,.big{transition:none}
}
