:root{--bg:#000;--surface:#0c0d0f;--surface-2:#16181c;--text:#eef0f2;--text-mute:#9499a3;--text-faint:#5d626b;--line:#ffffff3d;--line-strong:#fff6;--accent:#4a9eff;--accent-soft:#4a9eff8c;--accent-ink:#0d1a2b;--accent-dim:#4a9eff17;--radius-sm:6px;--radius-md:10px;--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--col-label:210px;--col-day:32px;--hdr-week:32px;--hdr-day:44px;--row-h:32px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{color-scheme:dark}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;user-select:none;touch-action:manipulation;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;padding:0}input{font:inherit}.app{max-width:1200px;height:100dvh;padding:calc(16px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(16px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));flex-direction:column;gap:12px;margin:0 auto;display:flex}.a2hs-banner{border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--surface);align-items:center;gap:12px;padding:12px 12px 12px 16px;display:none}.a2hs-banner.show{display:flex}.a2hs-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.a2hs-text strong{font-size:14px;font-weight:500}.a2hs-text span{font-family:var(--font-mono);color:var(--text-mute);text-transform:uppercase;letter-spacing:.08em;font-size:11px}.a2hs-banner button{border-radius:var(--radius-sm);background:var(--text);color:#000;flex:none;height:36px;padding:0 16px;font-size:14px;font-weight:500}.top{flex:none}.app-name{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--text-mute);align-items:center;gap:9px;margin:0 0 12px;font-size:11px;font-weight:500;display:flex}.app-name:before{content:"";background:var(--surface) center / cover no-repeat;background-image:url(/orca.jpg);border-radius:5px;width:22px;height:22px}.addbar{gap:8px;display:flex}.add-input-wrapper{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);flex:1;align-items:center;height:40px;transition:border-color .15s,box-shadow .15s;display:flex}.add-input-wrapper:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #4a9eff29}.addbar input{min-width:0;height:100%;color:var(--text);font-family:var(--font-mono);background:0 0;border:none;outline:none;flex:1;padding:0 12px 0 4px;font-size:13px}#emoji-btn{justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;display:flex}#add-btn{border-radius:var(--radius-sm);background:var(--accent);color:#fff;flex:none;height:40px;padding:0 20px;font-size:14px;font-weight:500;transition:filter .15s,transform 50ms}#add-btn:hover{filter:brightness(1.1)}#add-btn:active{transform:translateY(1px)}.month-nav{align-items:center;gap:10px;height:40px;margin-top:10px;display:flex}.month-nav button{border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);height:36px;color:var(--text);font-family:var(--font-mono);flex:none;padding:0 14px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s,transform 50ms}.month-nav button:hover{border-color:var(--line-strong-2,#3a3f47);background:#1a1d21}.month-nav button:active{transform:translateY(1px)}.month-label{text-align:center;font-family:var(--font-mono);letter-spacing:.04em;color:var(--text);flex:1;font-size:13px;font-weight:500}.ledger-scroll{border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--bg);scrollbar-width:thin;scrollbar-color:#262a30 transparent;flex:1;min-height:0;overflow:hidden auto}.ledger{min-height:100%;display:flex}.ledger-labels{flex:0 0 var(--col-label);background:var(--bg);border-right:1px solid var(--line-strong);z-index:1;position:relative}.ledger-days{scrollbar-width:thin;scrollbar-color:#262a30 transparent;flex:1;min-width:0;overflow:auto hidden}.ledger-scroll::-webkit-scrollbar{width:10px;height:10px}.ledger-days::-webkit-scrollbar{width:10px;height:10px}.ledger-scroll::-webkit-scrollbar-thumb{background:#262a30;border-radius:5px}.ledger-days::-webkit-scrollbar-thumb{background:#262a30;border-radius:5px}.ledger-scroll::-webkit-scrollbar-track{background:0 0}.ledger-days::-webkit-scrollbar-track{background:0 0}.grid-labels{grid-template-columns:var(--col-label);height:100%;display:grid}.grid-days{grid-template-columns:repeat(var(--n-days,7), var(--col-day));width:max-content;min-width:100%;height:100%;display:grid}.spacer{border:0}.grid-days .week,.grid-days .day,.grid-days .cb,.grid-days .sleep-cell,.grid-days .count-cell,.grid-days .week-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);position:relative}.grid-labels .corner,.grid-labels .row-label{border-bottom:1px solid var(--line)}.grid-days .wk{border-left:1px solid var(--line-strong)}.corner{background:var(--surface);border-bottom:1px solid var(--line-strong);flex-direction:column;justify-content:center;align-items:flex-start;gap:3px;padding:0 16px;display:flex}.corner .corner-title{letter-spacing:-.01em;font-size:18px;font-weight:600;line-height:1.1}.corner .corner-sub{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);font-size:9px;font-weight:500;line-height:1}.week{background:var(--surface);border-bottom:1px solid var(--line-strong);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-mute);white-space:nowrap;align-items:center;padding:0 10px;font-size:10px;font-weight:500;display:flex}.day{background:var(--surface);border-bottom:1px solid var(--line-strong);flex-direction:column;justify-content:center;align-items:center;gap:3px;display:flex}.day .dl{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);font-size:9px;font-weight:500;line-height:1}.day .dn{color:var(--text);font-size:15px;font-weight:600;line-height:1}.day.today .dn{color:var(--accent)}.day.today .dl{color:var(--accent-soft)}.row-label{background:var(--bg);color:var(--text);white-space:nowrap;cursor:pointer;align-items:center;gap:8px;padding:0 10px 0 14px;font-size:13px;font-weight:500;line-height:1;display:flex;overflow:hidden}.row-label:hover{background:var(--surface)}.row-label.selected{background:var(--accent-ink)}.row-icon{flex:none;font-size:14px;line-height:1}.row-name{text-overflow:ellipsis;min-width:0;overflow:hidden}.row-del{width:20px;height:20px;color:var(--text-mute);opacity:0;border-radius:4px;flex:none;justify-content:center;align-items:center;margin-left:auto;font-size:15px;line-height:1;transition:opacity .15s,color .15s,background-color .15s;display:inline-flex}.row-label:hover .row-del,.row-label:focus-within .row-del,.row-del:focus-visible{opacity:.6}.row-del:hover{opacity:1;color:#ff6b6b;background:#ff6b6b1f}@media (hover:none){.row-del{opacity:.4}}.cb{font-family:var(--font-mono);color:#0000;background:var(--bg);justify-content:center;align-items:center;font-size:13px;font-weight:600;transition:background-color .12s,color .12s;display:flex;box-shadow:inset 0 0 0 1px #ffffff38}.cb:not(.future):hover{box-shadow:inset 0 0 0 1px var(--accent-soft)}.cb:not(.future):active{transform:scale(.85)}.cb.checked{background:var(--accent);color:#fff}.cb.sel:not(.checked):not(.future){background:var(--accent-dim)}.cb.today:not(.future){background:#4a9eff0d}.cb.today.checked{background:var(--accent)}.cb.future{color:#0000;cursor:default;pointer-events:none;background:#ffffff09;box-shadow:inset 0 0 0 1px #ffffff29}.row-label.sum{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-mute);cursor:default;font-size:11px}.sleep-cell{font-family:var(--font-mono);color:var(--text);background:var(--bg);justify-content:center;align-items:center;font-size:12px;font-weight:500;display:flex}.sleep-cell:not(.future):hover{box-shadow:inset 0 0 0 1px var(--accent-soft);color:var(--accent)}.sleep-cell.future{color:var(--text-faint);cursor:default;pointer-events:none}.sleep-input{background:var(--surface-2);border:1px solid var(--accent);width:100%;height:100%;color:var(--text);text-align:center;font-family:var(--font-mono);outline:none;font-size:12px;font-weight:500;position:absolute;inset:0}.count-cell{font-family:var(--font-mono);color:var(--text);background:var(--bg);justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.count-cell.today{color:var(--accent)}.count-cell.future{color:var(--text-faint)}.week-cell{font-family:var(--font-mono);letter-spacing:.04em;color:var(--accent);background:var(--bg);justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex}.hint{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-faint);flex:none;margin:2px 4px 0;font-size:10px;line-height:15px}.cb:focus-visible,.row-label:focus-visible,#add-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.row-del:focus-visible{outline:1px solid var(--accent);outline-offset:1px}.saved{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));background:var(--accent);color:#fff;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:0;pointer-events:none;z-index:10;border-radius:6px;padding:8px 16px;font-size:12px;font-weight:500;transition:opacity .25s,transform .25s;position:fixed;transform:translate(-50%)translateY(8px);box-shadow:0 4px 20px #00000080}.saved.show{opacity:1;transform:translate(-50%)translateY(0)}.add-emoji-btn{border-radius:var(--radius-sm) 0 0 var(--radius-sm);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;transition:background-color .15s,transform .1s;display:flex}.add-emoji-btn:hover{background:#ffffff0f}.add-emoji-btn:active{transform:scale(.9)}.emoji-picker{-webkit-backdrop-filter:blur(12px);border:1px solid var(--line-strong);border-radius:var(--radius-md);z-index:100;background:#16181cf2;flex-direction:column;width:290px;height:310px;animation:.15s cubic-bezier(.16,1,.3,1) pickerFadeIn;display:none;position:absolute;overflow:hidden;box-shadow:0 12px 36px #000000b3}@keyframes pickerFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.emoji-picker-tabs{border-bottom:1px solid var(--line);background:#0c0d0f80;gap:2px;padding:4px;display:flex}.emoji-picker-tab-btn{border-radius:var(--radius-sm);flex:1;justify-content:center;align-items:center;height:32px;font-size:16px;transition:background-color .15s;display:flex}.emoji-picker-tab-btn:hover{background:#ffffff14}.emoji-picker-tab-btn.active{background:var(--surface-2);border-bottom:2px solid var(--accent);border-bottom-right-radius:0;border-bottom-left-radius:0}.emoji-picker-grids{flex:1;position:relative;overflow:hidden}.emoji-picker-grid{scrollbar-width:thin;scrollbar-color:#262a30 transparent;grid-template-columns:repeat(6,1fr);gap:6px;height:100%;padding:10px;display:none;overflow-y:auto}.emoji-picker-grid::-webkit-scrollbar{width:6px}.emoji-picker-grid::-webkit-scrollbar-thumb{background:#262a30;border-radius:3px}.emoji-picker-grid.active{display:grid}.emoji-btn{border-radius:var(--radius-sm);justify-content:center;align-items:center;height:38px;font-size:20px;transition:background-color .1s,transform .1s;display:flex}.emoji-btn:hover{background:#ffffff1a;transform:scale(1.15)}.emoji-btn:active{transform:scale(.9)}.emoji-picker-footer{border-top:1px solid var(--line);background:#0c0d0f80;justify-content:center;padding:8px;display:flex}.emoji-clear-btn{width:100%;height:32px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;border-radius:var(--radius-sm);border:1px dashed var(--line-strong);color:var(--text-mute);font-size:11px;font-weight:500;transition:color .15s,background-color .15s,border-color .15s}.emoji-clear-btn:hover{color:#ff6b6b;background:#ff6b6b14;border-color:#ff6b6b4d}.row-icon.placeholder{opacity:.2;transition:opacity .15s,transform .1s}.row-label:hover .row-icon.placeholder{opacity:.5;transform:scale(1.1)}@media (width<=720px){:root{--col-label:140px;--col-day:30px;--hdr-week:30px;--hdr-day:40px;--row-h:30px}.app{padding:calc(10px + env(safe-area-inset-top)) 10px calc(10px + env(safe-area-inset-bottom)) calc(10px + env(safe-area-inset-left));gap:10px}.corner{padding:0 10px}.corner .corner-title{font-size:16px}.corner .corner-sub{font-size:8px}.week{padding:0 8px;font-size:9px}.row-label{gap:6px;padding:0 6px 0 10px;font-size:12px}.day .dn{font-size:14px}.month-nav button{padding:0 10px}}@media (width<=520px){:root{--col-label:120px;--col-day:32px;--hdr-week:28px;--hdr-day:38px;--row-h:32px}.app{padding:calc(8px + env(safe-area-inset-top)) 8px calc(8px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left));gap:8px}.app-name{margin-bottom:6px;font-size:10px}.app-name:before{width:18px;height:18px}.addbar{flex-wrap:wrap}.add-input-wrapper{flex:100%;height:38px}.addbar input{padding:0 10px 0 4px;font-size:13px}#add-btn{flex:100%;height:36px;padding:0 14px;font-size:13px}.month-nav{gap:6px;height:36px;margin-top:6px}.month-nav button{height:32px;padding:0 10px;font-size:11px}.month-label{font-size:12px}.row-label{gap:5px;padding:0 4px 0 8px;font-size:12px}.row-icon{font-size:13px}.row-del{opacity:.35;width:22px;height:22px;font-size:16px}.day .dn{font-size:13px}.day .dl{font-size:8px}.corner .corner-title{font-size:14px}.corner .corner-sub{font-size:8px}.hint{font-size:9px;line-height:13px}.ledger-scroll{border-radius:var(--radius-sm)}.a2hs-banner{border-radius:var(--radius-sm);gap:8px;padding:8px 10px 8px 12px}.a2hs-text strong{font-size:13px}.a2hs-text span{font-size:10px}.a2hs-banner button{height:32px;padding:0 12px;font-size:13px}.emoji-picker{width:calc(100vw - 24px);max-width:290px;height:280px}.saved{bottom:calc(16px + env(safe-area-inset-bottom));padding:6px 14px;font-size:11px}.row-label.sum{font-size:10px}.sleep-cell,.count-cell{font-size:11px}.week-cell{font-size:10px}.week{padding:0 6px;font-size:8px}}@media (width<=430px){:root{--col-label:110px;--col-day:30px;--hdr-week:26px;--hdr-day:36px;--row-h:30px}.corner{padding:0 8px}.corner .corner-title{font-size:13px}.corner .corner-sub{font-size:7px}.row-label{gap:4px;padding:0 3px 0 6px}.row-icon{font-size:12px}.row-name{font-size:11px}}@media (width<=375px){:root{--col-label:100px;--col-day:28px;--hdr-week:24px;--hdr-day:34px;--row-h:28px}.app{padding:calc(6px + env(safe-area-inset-top)) 6px calc(6px + env(safe-area-inset-bottom)) calc(6px + env(safe-area-inset-left));gap:6px}.app-name{letter-spacing:.12em;margin-bottom:4px;font-size:9px}.add-input-wrapper{height:36px}.add-emoji-btn{width:34px;height:34px;font-size:16px}.addbar input{font-size:12px}#add-btn{height:34px;font-size:12px}.month-nav{height:32px;margin-top:4px}.month-nav button{height:28px;padding:0 8px;font-size:10px}.month-label{font-size:11px}.corner{padding:0 6px}.corner .corner-title{font-size:12px}.row-label{gap:3px;padding:0 2px 0 5px;font-size:11px}.row-icon{font-size:11px}.row-name{font-size:10px}.row-del{width:20px;height:20px;font-size:14px}.day .dn{font-size:12px}.day .dl{font-size:7px}.hint{font-size:8px;line-height:12px}.ledger-scroll{border-radius:4px}.emoji-picker{height:260px}.week{padding:0 4px;font-size:7px}.sleep-cell,.count-cell{font-size:10px}.week-cell,.row-label.sum{font-size:9px}}@media (width<=320px){:root{--col-label:88px;--col-day:26px;--hdr-week:22px;--hdr-day:30px;--row-h:26px}.app-name{font-size:8px}.corner .corner-title{font-size:11px}.corner .corner-sub{font-size:6px}.row-name{font-size:9px}}@media (height<=500px) and (orientation:landscape){.app{padding:calc(4px + env(safe-area-inset-top)) 10px calc(4px + env(safe-area-inset-bottom)) calc(10px + env(safe-area-inset-left));gap:4px}.app-name{margin-bottom:4px}.month-nav{height:30px;margin-top:4px}.hint{display:none}}
