:root{color-scheme:light;--ink:#153b30;--muted:#64766c;--sage:#b4d2b7;--paper:#f2f5ef;--line:#dce5db;font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Noto Sans KR',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}main{width:min(100%,880px);margin:auto;padding:28px 20px 20px}header{display:flex;align-items:center;gap:12px;margin-bottom:26px}.brandmark{width:43px;height:43px;display:grid;place-items:center;border-radius:15px;background:var(--ink);color:#d8efc2;font-size:31px;flex-shrink:0}.eyebrow{font-size:11px;letter-spacing:.035em;color:var(--muted)}h1{font-size:23px;margin:3px 0 0;letter-spacing:-.7px}h2{font-size:17px;margin:0;letter-spacing:-.5px}.badge{font-size:10px;margin-left:auto;white-space:nowrap;background:#e1e7df;color:#6c766b;border-radius:20px;padding:8px 10px}.badge.online{background:#d8eacb;color:#365734}.month-section{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:30px 0 17px}.month-section h2{font-size:17px;margin-top:6px;line-height:1.45}.month-label{font-size:10px;color:var(--muted);flex-shrink:0;display:flex;flex-direction:column;gap:5px}input,select,button{font:inherit}input[type=month]{width:138px;min-height:44px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:8px;color:var(--ink);font-size:12px;min-width:0}.filters{display:flex;gap:6px;margin-bottom:16px}.filters button{flex:1;min-height:44px;font-size:13px;padding:8px 6px;white-space:nowrap;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--muted);cursor:pointer}.filters button.selected{background:var(--ink);color:#eef6e6;border-color:var(--ink)}.people{display:grid;grid-template-columns:1fr 1fr;gap:12px}.person{padding:19px 17px;border-radius:20px;min-width:0;background:#e1ecdc}.person.son{background:#e7ece5}.person-label{font-size:14px;font-weight:600}.person>div:not(.record){margin:15px 0 6px}.person strong{font-size:43px;letter-spacing:-2px;font-variant-numeric:tabular-nums}.total-unit{font-size:12px;margin-left:5px;color:var(--muted)}.person p{font-size:10px;margin:4px 0 14px;color:var(--muted);line-height:1.8}.record{border-top:1px solid #153b3010;padding-top:11px;font-size:10px;line-height:1.9;white-space:pre-line;color:#53634e}.panel{margin-top:17px;background:#fff;border:1px solid #e4eae1;border-radius:20px;padding:21px 19px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.section-heading>span{font-size:10px;color:var(--muted)}select{min-height:44px;border:1px solid var(--line);background:#fff;border-radius:10px;color:var(--ink);padding:8px;font-size:12px}.chart{height:130px;display:grid;gap:3px;align-items:end;margin-top:24px;border-bottom:1px solid var(--line);padding:0 1px 19px}.day{height:100%;display:flex;position:relative;align-items:end;gap:1px;min-width:0}.bar{min-width:0;width:50%;border-radius:3px 3px 0 0;background:#426f4e}.bar.son{background:#b8d0a7}.day-label{position:absolute;bottom:-17px;font-size:8px;color:#7b8878;width:100%;text-align:center}.legend{display:flex;justify-content:center;gap:18px;font-size:10px;color:var(--muted);margin-top:15px}.legend i{display:inline-block;width:7px;height:7px;margin-right:5px;border-radius:50%}.father-dot{background:#426f4e}.son-dot{background:#b8d0a7}.empty{font-size:12px;text-align:center;color:#85927e;line-height:1.8;margin:25px 0 13px}.history{padding:0;margin:9px 0 0;list-style:none}.history li{display:flex;align-items:center;gap:10px;padding:15px 0;border-bottom:1px solid #edf0e9}.history li:last-child{border:0}.history-icon{width:34px;height:34px;display:grid;place-items:center;background:#ecf2e8;border-radius:11px;font-size:13px;font-weight:600;flex-shrink:0}.history-info{min-width:0;flex:1}.history-info strong{font-size:12px;font-weight:500}.history-info time{display:block;font-size:10px;color:#869080;margin-top:5px}.history-count{font-size:19px;font-weight:600;white-space:nowrap}.history-count span{font-size:10px;color:var(--muted);margin-left:4px}.history-note{font-size:9px;color:#95a18f;margin:13px 0 0}footer{text-align:center;font-size:11px;color:#7c8c76;line-height:1.9;padding:16px 0 10px}footer span{font-size:10px;color:#96a08e}:focus-visible{outline:3px solid #88b862;outline-offset:3px}@media(max-width:390px){main{padding:22px 16px}.badge{padding:7px 8px;font-size:9px}h1{font-size:21px}.month-section h2{font-size:15px}.month-label input{width:125px}.person{padding:17px 13px}.person p,.record{font-size:9px}.filters button{font-size:12px}}@media(min-width:650px){main{padding:40px 30px}.people{gap:18px}.person{padding:25px}.person p,.record{font-size:12px}.person strong{font-size:52px}.chart{height:170px}.month-section h2{font-size:21px}}@media(min-width:650px){}

/* The same yellow pixel cats as the family's LCD, hosted entirely here. */
@font-face{font-family:Galmuri;src:url('./assets/fonts/Galmuri11.woff2') format('woff2');font-weight:400;font-display:swap}@font-face{font-family:Galmuri;src:url('./assets/fonts/Galmuri11-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
:root{color-scheme:dark;--ink:#f6f0d9;--muted:#9ba6b9;--sage:#ffc65c;--paper:#10151e;--line:#313b4c;font-family:Galmuri,-apple-system,sans-serif}body{background:radial-gradient(ellipse at 50% 0,#273041 0,transparent 65%),var(--paper)}main{max-width:850px;padding-bottom:calc(24px + env(safe-area-inset-bottom))}header{gap:11px;margin-bottom:24px}.brandmark{border-radius:9px;background:#ffd16b;color:#2e2516;box-shadow:3px 3px 0 #9e7030;font-size:24px;font-weight:700;position:relative}h1{font-size:21px;letter-spacing:-1px;font-weight:700}h1 em{font-size:14px;font-style:normal;color:#ffd16b}.eyebrow{font-size:10px}.badge{color:#a7b1c2;background:#263041;border:1px solid #394355;border-radius:8px;padding:8px}.badge.online{color:#bce9cc;background:#203d34;border-color:#3b6553}.month-section h2{font-size:17px}.month-section{margin-top:30px}input[type=month],select{background:#1e2837;border-color:#394559;color:#e9e5da;border-radius:8px}.filters button{border-radius:8px;background:#1b2533;border-color:#354256;color:#c6ceda}.filters button.selected{background:#ffd16b;border-color:#ffd16b;color:#31261a;font-weight:700}.people{gap:14px}.person,.person.son{padding:19px 17px;background:#202a39;border:1px solid #3d485b;border-radius:14px;box-shadow:0 4px 0 #090d14}.person.father{border-top:3px solid #f7bc54}.person.son{border-top:3px solid #87c4bb}.person>div.profile-head{margin:0;display:flex;justify-content:space-between;align-items:center;gap:2px;height:136px}.profile-head img{height:132px;width:auto;max-width:65%;object-fit:contain;image-rendering:pixelated}.person-label{font-size:15px;white-space:nowrap}.person-label small{display:block;font-size:10px;color:#f4c766;letter-spacing:.6px;margin-top:10px}.son .person-label small{color:#9ed4cb}.person strong{font-size:42px;letter-spacing:-2px;font-weight:700}.person p{color:#b5bed0;font-size:10px}.record{border-color:#394355;color:#aab7ca;font-size:10px}.panel{border-color:#313d51;background:#1a2331;border-radius:14px}.chart{border-color:#3d495b}.bar,.father-dot{background:#f5be5d}.bar.son,.son-dot{background:#8dc4ba}.empty{color:#95a3b7}.history li{border-color:#303c4d}.history-icon{background:#313f52;color:#eec87c;border-radius:7px}.history-info strong{font-size:12px;line-height:1.8}.history-info time{color:#9aa8bc}.history-note{color:#8595a9;line-height:1.7}footer{color:#b5becd;line-height:2.2;padding-top:26px}footer span{color:#8999ae}:focus-visible{outline-color:#ffd16b}[hidden]{display:none!important}
@media(max-width:390px){main{padding-top:22px}h1{font-size:18px}.brandmark{width:36px;height:39px}.eyebrow{font-size:9px}.badge{font-size:8px;padding:7px 5px}.person,.person.son{padding:14px 11px}.person-label{font-size:13px}.profile-head img{height:114px}.person>div.profile-head{height:120px}.person strong{font-size:38px}.people{gap:10px}.record{font-size:9px}}
@media(min-width:650px){.person>div.profile-head{height:160px}.profile-head img{height:156px}.person-label{font-size:21px}.person-label small{font-size:12px}.person strong{font-size:52px}.person p,.record{font-size:12px}}

/* One shared cat mark for the page, browser tab and home screen. */
header .brandmark{width:52px;height:52px;display:block;object-fit:contain;background:none;border-radius:0;box-shadow:none;flex-shrink:0;image-rendering:pixelated}
header h1{margin:0}footer #updated{display:block;font-size:10px;color:var(--muted);margin-bottom:5px}
@media(max-width:390px){header{gap:8px}header .brandmark{width:44px;height:44px}header h1{font-size:18px}}

/* Phone-first controls and readable stats, including iPhone safe areas. */
main{padding-top:max(22px,env(safe-area-inset-top));padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}button,input,select{touch-action:manipulation}button:active{transform:translateY(1px)}.filters button,input[type=month],select{min-height:48px}input[type=month],select{font-size:16px}input[type=month]{width:150px}.person p,.record{overflow-wrap:anywhere}footer .badge{display:inline-block;margin:0 0 12px;font-size:10px}footer #updated{margin-bottom:0}
@media(max-width:649px){header{margin-bottom:26px}.month-section{margin-top:0}.person p,.record{font-size:11px;line-height:1.9}.history-info strong{font-size:12px}.history-info time{font-size:11px}.section-heading h2{font-size:16px}.panel{padding:20px 15px}.history-count{font-size:21px}.history-note{font-size:10px}.month-label{font-size:11px}.month-section h2{font-size:16px}.profile-head img{max-width:61%}.person>div.profile-head{height:122px}}
@media(min-width:650px){main{padding-top:40px;padding-left:30px;padding-right:30px}}
.person p{white-space:pre-line}.record-row{display:flex;justify-content:space-between;gap:5px;line-height:2.1}.record-row span:last-child{white-space:nowrap;color:#d1d9e5;font-variant-numeric:tabular-nums}
.history-icon{width:44px;height:44px;display:block;border-radius:50%;object-fit:contain;image-rendering:pixelated;background:#344154}
/* Readable phone typography and month-by-month navigation. */
body{font-size:15px}.eyebrow{font-size:12px}header h1{font-size:23px}.month-section h2{font-size:19px}.month-label{font-size:12px}.filters button{font-size:15px;font-weight:700}
.person-label{font-size:22px;font-weight:700}.person-label small{font-size:12px}.person p{font-size:13px;line-height:1.9}.record{font-size:12px}.total-unit{font-size:15px}
.section-heading h2{font-size:20px}.history-info strong{font-size:14px;font-weight:700;line-height:1.6}.history-info time{font-size:12px;line-height:1.7}.history-count{font-size:24px}.history-count span{font-size:12px}.history-note{font-size:11px}.legend{font-size:14px}.empty{font-size:14px}footer{font-size:13px}footer #updated{font-size:12px}
.month-navigation{display:flex;align-items:center;justify-content:space-between;gap:8px}.month-navigation h2{font-size:20px;text-align:center}.month-navigation button{width:48px;height:48px;flex:0 0 48px;border:1px solid #45536a;border-radius:9px;background:#293648;color:#ffd16b;display:grid;place-items:center;cursor:pointer}.month-navigation svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.chart-caption{display:flex;justify-content:space-between;margin-top:18px;color:var(--muted);font-size:12px}.chart{height:190px;margin-top:22px;padding-bottom:22px;gap:3px}.day-label{font-size:11px;bottom:-20px;color:#b3bfd0}
@media(max-width:649px){.person-label{font-size:20px}.person-label small{font-size:12px}.person p{font-size:13px}.record{font-size:12px}.person>div.profile-head{height:122px}.profile-head img{max-width:59%}.month-navigation h2{font-size:19px}.section-heading h2{font-size:20px}.month-section h2{font-size:18px}}
