:root{--bg:#fff;--surface:#fff;--text:#1a1a1a;--text-muted:#6b6b6b;--border:#e5e5e5;--accent:#2f6e5c;--danger:#b4463c;--vine:#c6dad0;--vine-leaf:#96c0aa;--vine-node:#6fa992;--vine-stem-img:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='26' height='44' viewBox='0 0 26 44'><path d='M13 0C17.5 7.3 17.5 14.7 13 22C8.5 29.3 8.5 36.7 13 44' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round'/></svg>");--vine-leaf-img:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='13' viewBox='0 0 20 13'><path d='M1 10.5C4 3.5 10 1.5 19 2.5C18 9.5 11 12.5 1 10.5Z' fill='black'/></svg>");--tier-a:#3f7a55;--tier-a-ink:#fff;--tier-b:#5f7c33;--tier-b-ink:#fff;--tier-c:#9a6c14;--tier-c-ink:#fff;--tier-d:#b2601f;--tier-d-ink:#fff;--tier-e:#a63b32;--tier-e-ink:#fff;--tier-f:#161616;--tier-f-ink:#fff;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-fade:cubic-bezier(.4, 0, .2, 1);--font:-apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", "Microsoft YaHei", "SF Pro Text", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}html{background:var(--bg);overflow-x:hidden}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none;scrollbar-gutter:stable;margin:0;font-size:16px;line-height:1.5;overflow-x:hidden}h1,h2,h3{text-wrap:balance;margin:0}button{touch-action:manipulation;font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.kicker-action,.checkin-toggle,.log-entry-edit,.log-pager-step,.note-attach{position:relative}.kicker-action:after,.checkin-toggle:after,.log-entry-edit:after,.log-pager-step:after,.note-attach:after{content:"";transform-origin:0;height:1px;transition:transform .3s var(--ease-out);background:currentColor;border-radius:1px;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}@media (hover:hover){.kicker-action:hover:after,.checkin-toggle:hover:after,.log-entry-edit:hover:after,.note-attach:hover:not(:disabled):after,.log-pager-step:hover:not(:disabled):after{transform:scaleX(1)}}@keyframes reveal{0%{opacity:0;transform:translateY(-8px)scaleY(.96)}to{opacity:1;transform:translateY(0)scaleY(1)}}@keyframes pop-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.page{max-width:860px;padding:clamp(24px,6vw,40px) 24px clamp(48px,10vw,64px);padding-left:max(24px, env(safe-area-inset-left));padding-right:max(24px, env(safe-area-inset-right));padding-bottom:max(clamp(48px, 10vw, 64px), env(safe-area-inset-bottom));margin:0 auto}.topbar{text-align:center;flex-direction:column;align-items:center;gap:8px;margin-bottom:clamp(20px,5vw,32px);display:flex}.brand{font-size:clamp(1.75rem,7vw,2.25rem);font-weight:600}.topbar-meta{align-items:center;gap:8px;display:flex}.today-date{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.8125rem}.topbar-divider{color:var(--border);font-size:.8125rem}.kicker-action{font:inherit;color:var(--text-muted);cursor:pointer;transition:color .2s var(--ease-fade);background:0 0;border:none;padding:0;font-size:.8125rem}.kicker-action:hover{color:var(--text)}.brand-edit{flex-direction:column;align-items:center;gap:10px;width:100%;max-width:340px;display:flex}.brand-input{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;text-align:center;border-radius:6px;padding:6px 10px;font-size:clamp(1.25rem,5vw,1.5rem);font-weight:600;transition:border-color .15s,box-shadow .15s}.brand-input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);outline:none}.brand-error{color:var(--danger);margin:0;font-size:.8125rem}.brand-edit-actions{align-items:center;gap:10px;display:flex}.t-A{background:var(--tier-a);color:var(--tier-a-ink)}.t-B{background:var(--tier-b);color:var(--tier-b-ink)}.t-C{background:var(--tier-c);color:var(--tier-c-ink)}.t-D{background:var(--tier-d);color:var(--tier-d-ink)}.t-E{background:var(--tier-e);color:var(--tier-e-ink)}.t-F{background:var(--tier-f);color:var(--tier-f-ink)}.tier-chip{letter-spacing:.02em;border:1px solid #0000;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;min-width:23px;height:23px;padding:0 5px;font-size:.8125rem;font-weight:700;line-height:1;display:inline-flex}.entry-time{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.8125rem}.diff-badge{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.75rem;font-weight:700}.diff-badge--worse{color:var(--tier-e)}.diff-badge--better{color:var(--tier-a)}.diff-badge--same{color:var(--text-muted)}.metric-list{flex-direction:column;display:flex}.metric-row{flex-direction:column;gap:10px;padding:clamp(16px,4vw,22px) 0;display:flex}.metric-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;display:flex}.metric-title{font-size:clamp(1rem,3.4vw,1.125rem);font-weight:600}.metric-state{align-items:center;gap:8px;display:inline-flex}.metric-state-none{color:var(--text-muted);font-size:.8125rem;font-weight:600}.metric-swing{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.75rem}.day-bars{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x;scrollbar-width:thin;scrollbar-color:var(--border) transparent;align-items:stretch;gap:2px;padding-top:5px;padding-bottom:6px;display:flex;overflow-x:auto}.day-bars::-webkit-scrollbar{height:4px}.day-bars::-webkit-scrollbar-track{background:0 0}.day-bars::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.bar{cursor:pointer;transform-origin:bottom;min-width:3px;height:clamp(28px,7vw,34px);transition:filter .2s var(--ease-fade), transform .3s var(--ease-out);border-radius:1px;flex-direction:column;flex:1 0 4px;display:flex;overflow:hidden}.bar:focus-visible{filter:brightness(1.2);transform:scaleY(1.12)}@media (hover:hover){.bar:hover{filter:brightness(1.2);transform:scaleY(1.12)}}.bar-seg{flex:1 1 0;min-height:0}.bar-seg--none{background:var(--border)}.bar-seg--note{background:var(--vine)}.bar-seg+.bar-seg{border-top:1px solid color-mix(in srgb, var(--bg) 65%, transparent)}@media (width<=480px){.bar{min-width:2.5px}}.metric-foot{color:var(--text-muted);align-items:center;gap:clamp(8px,2.5vw,12px);font-size:clamp(.8rem,2.6vw,.875rem);display:flex}.foot-label{white-space:nowrap}.foot-stat{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--text)}.foot-line{background:var(--border);flex:1;min-width:12px;height:1px}.today-chain{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.today-chain-label{color:var(--text-muted);white-space:nowrap;font-size:.75rem}.today-chain-step{align-items:center;gap:6px;display:inline-flex}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes tooltip-pop{0%{opacity:0;transform:translate(-50%)scale(.94)}to{opacity:1;transform:translate(-50%)scale(1)}}.bar-tooltip{z-index:20;border:1px solid var(--border);background:var(--surface);pointer-events:none;width:min(268px,100vw - 16px);transform-origin:var(--arrow-x,50%) 100%;animation:tooltip-pop .2s var(--ease-out);border-radius:8px;position:fixed;transform:translate(-50%);box-shadow:0 4px 16px #0000001f}.bar-tooltip--flip{transform-origin:var(--arrow-x,50%) 0}.bar-tooltip-body{border-radius:inherit;max-height:calc(100dvh - 2px - 2 * 8px - var(--safe-top) - var(--safe-bottom));padding:9px 11px;overflow:hidden}.bar-tooltip--free:after{display:none}.bar-tooltip:after{content:"";left:var(--arrow-x,50%);border:6px solid #0000;border-top-color:var(--surface);filter:drop-shadow(0 1px 0 var(--border));position:absolute;top:100%;transform:translate(-50%)}.bar-tooltip--flip:after{border-top-color:#0000;border-bottom-color:var(--surface);filter:drop-shadow(0 -1px 0 var(--border));top:auto;bottom:100%}.bar-tooltip-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:7px;padding-bottom:7px;display:flex}.bar-tooltip-metric{min-width:0;color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-weight:600;overflow:hidden}.bar-tooltip-date{color:var(--text-muted);white-space:nowrap;font-size:.75rem}.bar-tooltip-muted{color:var(--text-muted);font-size:.875rem}.tooltip-entries{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.tooltip-entry{flex-direction:column;gap:3px;padding:6px 0;display:flex}.tooltip-entry+.tooltip-entry{border-top:1px solid color-mix(in srgb, var(--border) 70%, transparent)}.tooltip-entry:first-child{padding-top:0}.tooltip-entry:last-child{padding-bottom:0}.tooltip-entry-head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tooltip-entry-image{border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;border-radius:4px;padding:0 5px;font-size:.6875rem;line-height:1.6}.tooltip-entry-note{-webkit-line-clamp:2;line-clamp:2;color:var(--text);white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:.8125rem;line-height:1.4;display:-webkit-box;overflow:hidden}.tooltip-more{border-top:1px solid var(--border);color:var(--text-muted);margin-top:7px;padding-top:7px;font-size:.75rem}@media (height<=560px){.tooltip-entry-note{-webkit-line-clamp:1;line-clamp:1}}.entries-error{color:var(--danger);margin:0 0 16px;font-size:.875rem}.logs{margin-top:clamp(32px,6vw,48px)}.logs-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:16px;display:flex}.logs-title{font-size:clamp(1.25rem,4vw,1.5rem);font-weight:600}.logs-range{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.8125rem}.logs-empty{color:var(--text-muted);margin:0}.log-vine{padding-bottom:20px;padding-left:34px;position:relative}.log-vine:before{content:"";background-color:var(--vine);width:26px;-webkit-mask-image:var(--vine-stem-img);-webkit-mask-image:var(--vine-stem-img);mask-image:var(--vine-stem-img);position:absolute;top:0;bottom:0;left:0;-webkit-mask-position:top;mask-position:top;-webkit-mask-size:26px 44px;mask-size:26px 44px;-webkit-mask-repeat:repeat-y;mask-repeat:repeat-y}.log-vine:after{content:"";background-color:var(--vine-leaf);width:20px;height:13px;-webkit-mask-image:var(--vine-leaf-img);-webkit-mask-image:var(--vine-leaf-img);mask-image:var(--vine-leaf-img);position:absolute;bottom:0;left:3px;transform:scaleX(-1);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.log-group{padding:14px 0 18px}.log-date{margin-bottom:10px;font-size:clamp(1.0625rem,3.6vw,1.1875rem);font-weight:600;position:relative}.log-date:before{content:"";background-color:var(--vine-leaf);width:20px;height:13px;-webkit-mask-image:var(--vine-leaf-img);-webkit-mask-image:var(--vine-leaf-img);mask-image:var(--vine-leaf-img);position:absolute;top:50%;left:-32px;transform:translateY(-50%);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.log-entries{flex-direction:column;gap:4px;display:flex}.log-entry{flex-direction:column;gap:6px;width:100%;padding:8px 6px;display:flex;position:relative}.log-entry:before{content:"";background:var(--vine-node);width:8px;height:8px;box-shadow:0 0 0 3px var(--bg);border-radius:50%;position:absolute;top:14px;left:-25px}@media (width<=480px){.log-vine{padding-left:30px}.log-date:before{left:-28px}.log-entry:before{left:-21px}}.log-entry-head{align-items:center;gap:8px;display:flex}.log-entry-metric{color:var(--text-muted);white-space:nowrap;margin-left:auto;font-size:.8125rem}.log-entry-edit{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8125rem;transition:color .15s}.log-entry-edit:hover{color:var(--accent)}.log-entry-note{color:var(--text);white-space:pre-wrap;margin:0;font-size:.9375rem}.log-entry-form{border-top:1px solid var(--border);transform-origin:top;animation:reveal .28s var(--ease-out);flex-direction:column;gap:10px;margin-top:2px;padding-top:12px;display:flex}.log-entry-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.log-entry-actions-right{align-items:center;gap:10px;display:inline-flex}.log-entry-delete{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8125rem;transition:color .15s}.log-entry-delete:hover{color:var(--danger)}.log-entry-confirm{color:var(--text-muted);animation:pop-in .22s var(--ease-out);align-items:center;gap:8px;font-size:.8125rem;display:flex}.log-entry-confirm-yes,.log-entry-confirm-no{font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-size:.8125rem;font-weight:600;transition:opacity .15s}.log-entry-confirm-yes{color:var(--danger)}.log-entry-confirm-no{color:var(--text-muted);font-weight:400}.log-entry-confirm-yes:disabled,.log-entry-confirm-no:disabled{opacity:.6;cursor:default}.log-pager{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding-top:14px;display:flex}.log-pager-step{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:.8125rem;transition:color .15s}.log-pager-step:hover:not(:disabled){color:var(--accent)}.log-pager-arrow{transition:transform .3s var(--ease-out);display:inline-block}@media (hover:hover){.log-pager-step:hover:not(:disabled) .log-pager-arrow--prev{transform:translate(-5px)}.log-pager-step:hover:not(:disabled) .log-pager-arrow--next{transform:translate(5px)}}.log-pager-step:disabled{opacity:.35;cursor:default}.log-pager-count{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.8125rem}.button-primary{border:1.5px solid var(--accent);color:var(--accent);font:inherit;cursor:pointer;transition:background-color .22s var(--ease-fade), color .22s var(--ease-fade), transform .28s var(--ease-out);background:0 0;border-radius:4px;padding:8px 16px;font-size:.9375rem;font-weight:600}@media (hover:hover){.button-primary:hover:not(:disabled){background:var(--accent);color:var(--bg);transform:translateY(-2px)}}.button-primary:active:not(:disabled){transition-duration:90ms;transform:translateY(1px)scale(.97)}.button-primary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);outline:none}.button-primary:disabled{opacity:.5;cursor:default;color:var(--accent);background:0 0}.checkin-row{margin-top:2px}.checkin-toggle{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8125rem;transition:color .15s}.checkin-toggle:hover{color:var(--accent)}.checkin-form{border-top:1px solid var(--border);transform-origin:top;animation:reveal .28s var(--ease-out);flex-direction:column;gap:10px;margin-top:8px;padding-top:14px;display:flex}.checkin-label{color:var(--text-muted);margin:0;font-size:.8125rem}.mode-toggle{border-bottom:1px solid var(--border);gap:20px;display:flex}.mode-toggle-btn{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:2px 1px 8px;font-size:.8125rem;transition:color .15s;position:relative}.mode-toggle-btn:hover:not(.is-selected){color:var(--text)}.mode-toggle-btn.is-selected{color:var(--accent);font-weight:600}.mode-toggle-btn:after{content:"";background:var(--accent);height:2px;transition:transform .3s var(--ease-out);border-radius:1px;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.mode-toggle-btn.is-selected:after{transform:scaleX(1)}.tier-picker{gap:6px;display:flex}.tier-picker-btn{min-width:0;height:42px;font:inherit;cursor:pointer;transition:border-color .2s var(--ease-fade), color .2s var(--ease-fade), transform .3s var(--ease-out);border:1.5px solid #0000;border-radius:6px;flex:1 1 0;font-size:1rem;font-weight:700}.tier-picker-btn.is-selected{transform:translateY(-3px)scale(1.05)}.tier-picker-btn:active{transition-duration:.11s;transform:scale(.94)}.tier-picker-btn:not(.is-selected){border-color:var(--border);color:var(--text-muted);background:0 0}.tier-picker-btn:not(.is-selected):hover{border-color:var(--text-muted);color:var(--text)}.time-field{color:var(--text-muted);align-items:center;gap:10px;font-size:.8125rem;display:flex}.time-field input{border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;font-variant-numeric:tabular-nums;border-radius:6px;padding:7px 9px;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.checkin-note{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);font:inherit;resize:vertical;border-radius:6px;padding:8px 10px;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.checkin-note:focus-visible,.time-field input:focus-visible,.login-input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);outline:none}.checkin-error{color:var(--danger);margin:0;font-size:.8125rem}.note-field{flex-direction:column;gap:6px;display:flex}.note-field-foot{align-items:center;gap:8px;display:flex}.note-attach{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8125rem;transition:opacity .15s}.note-attach:disabled{color:var(--text-muted);cursor:default}.note-hint{color:var(--text-muted);font-size:.75rem}.note-file{display:none}.note-image{border:1px solid var(--border);border-radius:8px;width:auto;max-width:100%;height:auto;max-height:320px;margin:6px 0;display:block}.note-image-button{width:fit-content;max-width:100%;font:inherit;cursor:zoom-in;background:0 0;border:none;margin:6px 0;padding:0;line-height:0;display:block}.note-image-button .note-image{transition:transform .3s var(--ease-out);margin:0}@media (hover:hover){.note-image-button:hover .note-image{transform:scale(1.025)}}.note-image-button:active .note-image{transition-duration:.12s;transform:scale(.98)}.note-link{color:var(--accent)}.note-code{background:color-mix(in srgb, var(--text) 6%, transparent);border-radius:4px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.checkin-actions{justify-content:flex-end;gap:10px;display:flex}.checkin-cancel{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:9px 4px;font-size:.875rem;transition:color .15s}.checkin-cancel:hover{color:var(--text)}.login-page{justify-content:center;align-items:center;min-height:100dvh;display:flex}.login-form{flex-direction:column;gap:14px;width:100%;max-width:320px;display:flex}.login-title{text-align:center;font-size:clamp(1.75rem,7vw,2.25rem);font-weight:600}.login-subtitle{color:var(--text-muted);text-align:center;margin:-6px 0 4px;font-size:.9375rem}.login-input{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:6px;padding:10px 12px;font-size:1rem;transition:border-color .15s,box-shadow .15s}.login-error{color:var(--danger);text-align:center;margin:0;font-size:.875rem}.login-submit{width:100%}@media (pointer:coarse){.checkin-note,.time-field input,.login-input{font-size:16px}}@keyframes veil-in{0%{opacity:0}to{opacity:1}}@keyframes veil-out{0%{opacity:1}to{opacity:0}}.lightbox{z-index:40;cursor:zoom-out;animation:veil-in .24s var(--ease-fade) both;background:#0c1210eb;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox.is-closing{animation:veil-out .28s var(--ease-fade) both}.lightbox-x,.lightbox-y{will-change:transform;display:block}.lightbox{outline:none}.lightbox-image{max-width:calc(100vw - 32px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));max-height:calc(100dvh - 32px - var(--safe-top) - var(--safe-bottom));will-change:transform;opacity:0;border-radius:8px;width:auto;height:auto;display:block}
