html{overflow-y:scroll}:root{--bg: #161a1e;--card: #1f2429;--card-2: #262c33;--border: #343b44;--text: #e6e9ec;--muted: #8b95a1;--primary: #3b82f6;--primary-hover: #2f6fd9;--green: #22c55e;--red: #ef4444;--radius: 8px;--running-bg: #1c2a20;--banner-bg: #3a2f12;--banner-border: #6b5518;--banner-text: #f5c451;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;color-scheme:dark}:root[data-theme=light]{--bg: #f4f6f8;--card: #ffffff;--card-2: #f0f2f5;--border: #d5dae1;--text: #1c2229;--muted: #5e6875;--primary: #2563eb;--primary-hover: #1d4ed8;--green: #16a34a;--red: #dc2626;--running-bg: #ecfdf3;--banner-bg: #fff7e0;--banner-border: #f0d17a;--banner-text: #7a5a00;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}h1,h2{margin:0;font-weight:600}h1{font-size:20px}h2{font-size:17px}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.page{max-width:820px;margin:0 auto;padding:24px max(16px,env(safe-area-inset-right)) calc(48px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.page.center{display:flex;flex-direction:column;min-height:100vh;align-items:center;justify-content:center}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--red)}.spacer{flex:1}.topbar{display:flex;align-items:center;gap:12px;margin-bottom:20px}.user{display:flex;align-items:center;gap:10px}.user img{width:28px;height:28px;border-radius:50%}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card.login{text-align:center;display:flex;flex-direction:column;gap:16px;min-width:320px}.card-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.empty{text-align:center;padding:24px 0}.banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--banner-bg);border:1px solid var(--banner-border);border-radius:var(--radius);padding:12px 16px;margin-bottom:16px}.banner.install{flex-wrap:wrap}.banner-actions{display:flex;gap:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:6px;border:1px solid var(--border);background:var(--card-2);color:var(--text);cursor:pointer;font:inherit;line-height:1.2}.btn:hover{background:var(--border);text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover:not(:disabled){background:var(--primary-hover)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:var(--card-2)}.btn.small{padding:5px 10px;font-size:13px}.link{background:none;border:0;padding:0;color:var(--primary);cursor:pointer;font:inherit}.link:hover{text-decoration:underline}.day{margin-top:14px}.day:first-of-type{margin-top:0}.day-head{display:flex;justify-content:space-between;font-size:13px;font-weight:600;padding:0 4px 6px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.entry-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.entry{display:flex;align-items:center;gap:8px;background:var(--card-2);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px}.entry.running{border-color:var(--green);box-shadow:0 0 0 1px #22c55e40}.entry.logged .entry-main,.entry.logged .entry-times,.entry.logged .entry-duration{opacity:.55}.icon-btn{width:34px;height:34px;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:0;background:transparent;color:var(--text);cursor:pointer}.icon-btn:hover:not(:disabled){background:var(--border)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.icon-btn.play.active,.icon-btn.check{color:var(--green)}.icon-btn.check.done{opacity:1;color:var(--green);background:#22c55e26;cursor:default}.icon-btn.close{color:var(--muted)}.icon-btn.close:hover:not(:disabled){color:var(--red)}.entry-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.entry-name{background:transparent;border:1px solid transparent;border-radius:4px;color:var(--text);font:inherit;font-weight:600;padding:2px 6px;margin-left:-6px;width:100%}.entry-name{text-overflow:ellipsis}.entry-name:hover{border-color:var(--border)}.entry-name:focus{outline:none;border-color:var(--primary);background:var(--card)}.entry-issue{position:relative;display:flex;gap:8px;align-items:baseline;font-size:13px;min-width:0}.issue-key{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--primary);white-space:nowrap}.issue-summary{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.entry-issue .issue-summary:hover{color:var(--text);text-decoration:none}.link:disabled{color:var(--muted);cursor:not-allowed;text-decoration:none}.entry-times{display:grid;grid-template-columns:minmax(7.5ch,max-content) 1.4em minmax(7.5ch,max-content);align-items:center;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}.entry-times>:first-child{justify-self:end;text-align:right}.entry-times>:nth-child(2){justify-self:center}.entry-times>:last-child{justify-self:start;text-align:left}.time-field{background:transparent;border:1px solid transparent;border-radius:4px;color:var(--muted);font:inherit;font-size:13px;padding:3px 6px;cursor:text}.time-field:hover{border-color:var(--border);color:var(--text)}.time-field.running-label{color:var(--green);cursor:default}.time-input{background:var(--card);border:1px solid var(--primary);border-radius:4px;color:var(--text);font:inherit;font-size:13px;padding:2px 6px}.entry-duration{background:transparent;border:1px solid transparent;border-radius:4px;color:var(--text);font:inherit;font-weight:600;font-variant-numeric:tabular-nums;padding:4px 8px;cursor:text;white-space:nowrap;min-width:90px;text-align:right}.entry-duration.running{color:var(--green)}.entry-duration:hover{border-color:var(--border)}.duration-input{width:96px;background:var(--card);border:1px solid var(--primary);border-radius:4px;color:var(--text);font:inherit;font-weight:600;padding:4px 8px;text-align:right}.duration-input.invalid{border-color:var(--red)}.badge{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:999px}.badge.offline,.badge.pending{background:var(--banner-bg);color:var(--banner-text);border:1px solid var(--banner-border)}.actions-row{display:flex;justify-content:flex-end;margin-top:12px}footer{margin-top:32px;text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center}.center-text{text-align:center}.inline-check{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.inline-check input[type=checkbox]{margin:0}.desktop-only{display:inline-flex}.mobile-only{display:none}.picker{position:absolute;z-index:20;top:100%;left:0;margin-top:4px;width:min(480px,90vw);background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #0006;overflow:hidden}.picker input{width:100%;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);padding:10px 12px;font:inherit}.picker input:focus{outline:none}.picker-list{max-height:280px;overflow-y:auto}.picker-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:0;background:transparent;color:var(--text);text-align:left;cursor:pointer;font:inherit;font-size:14px}.picker-item.active,.picker-item:hover{background:var(--card-2)}.picker-item img{width:16px;height:16px}.picker-msg{padding:10px 12px;font-size:13px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal{width:100%;max-width:520px;display:flex;flex-direction:column;gap:14px}.modal label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);min-width:0}.modal label>span:first-child{font-weight:500}.modal input,.modal textarea{background:var(--card-2);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:8px 10px;font:inherit;font-size:15px;width:100%;min-width:0}.modal input:focus,.modal textarea:focus{outline:none;border-color:var(--primary)}.modal input.invalid{border-color:var(--red)}.modal input[type=checkbox]{width:auto}.modal .row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.modal label.checkbox{flex-direction:row;align-items:center;gap:8px;color:var(--text)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.issue-field{position:relative}.issue-chip{display:flex;gap:8px;align-items:baseline;width:100%;background:var(--card-2);border:1px solid var(--border);border-radius:6px;padding:8px 10px;color:var(--text);cursor:pointer;font:inherit;text-align:left;min-width:0}.issue-chip:hover{border-color:var(--primary)}@media(max-width:640px){.modal .row{grid-template-columns:1fr}.entry{flex-wrap:wrap}.entry-main{flex-basis:calc(100% - 42px)}.entry-times{margin-left:42px}.entry-duration{min-width:0;margin-left:auto}}.running-bar{position:sticky;top:8px;z-index:15;display:flex;align-items:center;gap:12px;background:var(--running-bg);border:1px solid var(--green);border-radius:var(--radius);padding:10px 12px;margin-bottom:12px;box-shadow:0 6px 20px #00000059}.running-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.running-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.running-meta{font-size:13px}.running-time{font-weight:700;font-size:18px;font-variant-numeric:tabular-nums;color:var(--green);white-space:nowrap}.btn.stop{background:var(--green);border-color:var(--green);color:#fff;font-weight:600;min-height:40px}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.stop:hover{background:#1fb457}.fab{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));z-index:30;width:58px;height:58px;border-radius:50%;border:0;background:var(--primary);color:#fff;font-size:30px;line-height:1;cursor:pointer;box-shadow:0 8px 24px #00000073}.fab:active{transform:scale(.96)}.toasts{position:fixed;left:50%;transform:translate(-50%);bottom:calc(16px + env(safe-area-inset-bottom));z-index:60;display:flex;flex-direction:column;gap:8px;width:min(520px,calc(100vw - 32px))}.toast{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);background:var(--card);border:1px solid var(--border);box-shadow:0 8px 24px #00000073;font-size:14px}.toast.error{border-color:var(--red)}.toast.success{border-color:var(--green)}.toast.info{border-color:var(--primary)}.toast-message{flex:1}.toast-close{background:none;border:0;color:var(--muted);font-size:18px;cursor:pointer;padding:0 4px}.bulk-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow-y:auto}.bulk-list .inline-check{flex-direction:row;align-items:center;width:100%;gap:10px;padding:6px 8px;border-radius:6px;background:var(--card-2);font-size:14px}.bulk-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.bulk-duration{font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap}.modal-actions .spacer{text-align:left;align-self:center}.tempo-day{margin-top:16px}.day-progress{height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin-bottom:12px}.day-progress>div{height:100%;background:var(--primary);transition:width .3s}.worklog-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.worklog{display:flex;align-items:center;gap:10px;padding:4px 6px;border-radius:6px}.worklog:hover{background:var(--card-2)}.worklog.editable{cursor:pointer}.worklog-time{width:44px;font-variant-numeric:tabular-nums}.worklog-desc{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.worklog-duration{font-weight:600;font-variant-numeric:tabular-nums}.worklog .icon-btn{width:28px;height:28px}.entry-actions{display:flex;align-items:center;gap:4px}@media(max-width:640px){.page{padding-top:12px}.topbar h1{font-size:18px}.user-name,.desktop-only{display:none}.mobile-only{display:inline-flex;align-items:center;justify-content:center}.card{padding:14px 12px}.card-head{flex-wrap:wrap;gap:8px}input,textarea,select{font-size:16px}.icon-btn{width:40px;height:40px}.entry{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"play main duration" "play times actions";row-gap:6px;column-gap:8px;align-items:center}.entry .icon-btn.play{grid-area:play;align-self:start}.entry-main{grid-area:main}.entry-times{grid-area:times}.entry-duration,.duration-input{grid-area:duration;justify-self:end;min-width:0}.entry-actions{grid-area:actions;justify-self:end}.running-bar{top:4px;padding:8px 10px}.running-time{font-size:16px}.toasts{bottom:calc(90px + env(safe-area-inset-bottom))}main{padding-bottom:72px}}.quick-start{display:flex;gap:8px;align-items:center;margin-bottom:16px}.quick-input{flex:1;min-width:0;background:var(--card-2);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:10px 12px;font:inherit;font-size:15px}.quick-input:focus{outline:none;border-color:var(--primary)}.quick-issue{position:relative;max-width:40%}.issue-chip.small{padding:8px 10px;font-size:13px}.issue-chip.empty{color:var(--muted);border-style:dashed}.picker-section{padding:6px 12px 2px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.merge-hints{display:flex;flex-wrap:wrap;gap:6px 14px;padding:0 4px 8px;font-size:13px;color:var(--muted)}.merge-hint{display:inline-flex;gap:6px;align-items:baseline}.gap-hint{list-style:none;text-align:center;font-size:12px;color:var(--muted);margin:-4px 0}.entry.overlap{border-color:var(--red);box-shadow:0 0 0 1px #ef444440}.entry-wrap{position:relative}.entry-wrap:has(.picker){z-index:20}.entry-wrap .entry{position:relative;transform:translate(var(--dx, 0));transition:transform .15s;touch-action:pan-y}.entry-wrap.swiping .entry{transition:none}.swipe-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;padding:0 16px;border-radius:var(--radius);font-weight:600;opacity:0}.swipe-hint.left{justify-content:flex-start;background:#22c55e40;color:var(--green)}.swipe-hint.right{justify-content:flex-end;background:#ef444440;color:var(--red)}.entry-wrap.swiping .swipe-hint{opacity:.6}.entry-wrap.swiping .swipe-hint.armed{opacity:1}a.icon-btn{text-decoration:none}.shortcuts{border-collapse:collapse;width:100%}.shortcuts td{padding:6px 8px;border-bottom:1px solid var(--border);font-size:14px}.shortcuts td:first-child{width:110px}kbd{display:inline-block;padding:2px 7px;border:1px solid var(--border);border-bottom-width:2px;border-radius:4px;background:var(--card-2);font-family:ui-monospace,monospace;font-size:12px}.modal h3{margin:6px 0 0;font-size:15px}.help-list{margin:0;padding-left:18px;font-size:14px;display:flex;flex-direction:column;gap:4px}.modal.confirm{max-width:420px}.onboarding{padding:8px 4px 16px}.onboarding h3{margin:0 0 8px;font-size:16px}.onboarding ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;line-height:1.45}.onboarding code{background:var(--card-2);padding:1px 5px;border-radius:4px;font-size:13px}.field-hint{margin:-6px 0 0}.footer-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap;justify-content:center}footer select{background:var(--card-2);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:2px 6px;font:inherit;font-size:13px}.tempo-week{margin-top:16px}.week-nav{display:flex;align-items:center;gap:4px}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:12px}.week-day{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text);cursor:pointer;font:inherit}.week-day:hover{background:var(--card-2)}.week-day.selected{border-color:var(--primary);background:var(--card-2)}.week-day.today .week-day-name{color:var(--primary)}.week-day-name{font-size:12px;font-weight:600;color:var(--muted)}.week-bar{position:relative;width:100%;max-width:28px;height:56px;display:flex;flex-direction:column-reverse;background:var(--border);border-radius:4px;overflow:hidden}.week-bar-logged{background:var(--primary);width:100%}.week-bar-unlogged{background:repeating-linear-gradient(45deg,var(--muted),var(--muted) 3px,transparent 3px,transparent 6px);width:100%;opacity:.7}.week-day-hours{font-size:12px;font-variant-numeric:tabular-nums}.week-day-unlogged{font-size:11px;color:var(--muted)}.day-detail-head{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline;margin-bottom:6px}@media(max-width:640px){.quick-start{flex-wrap:wrap}.quick-input{flex-basis:100%}.quick-issue{flex:1;max-width:none}.week-day-hours{font-size:11px}.week-day-unlogged{display:none}}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:-8px 0 14px}.chip{display:inline-flex;align-items:stretch;border:1px solid var(--border);border-radius:999px;background:var(--card-2);overflow:hidden;max-width:100%}.chip.starred{border-color:var(--primary)}.chip-main{display:inline-flex;align-items:center;gap:6px;padding:5px 4px 5px 12px;border:0;background:transparent;color:var(--text);font:inherit;font-size:13px;cursor:pointer;min-width:0}.chip-main:hover{background:var(--border)}.chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.chip-star{border:0;background:transparent;color:var(--muted);padding:0 10px 0 4px;cursor:pointer;font-size:14px}.chip.starred .chip-star{color:var(--primary)}.chip-star:hover:not(:disabled){color:var(--primary)}.chip-star:disabled{opacity:.4;cursor:not-allowed}.select-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;margin-bottom:10px;border-radius:6px;background:var(--card-2);border:1px solid var(--primary);font-size:14px}.select-actions{display:flex;gap:6px;align-items:center}.select-actions .btn{white-space:nowrap}.entry-select{width:18px;height:18px;margin:0 2px;flex:none;accent-color:var(--primary)}.entry.selected{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,var(--card-2))}@media(max-width:640px){.chip-label{max-width:150px}.entry:has(.entry-select){grid-template-columns:auto auto 1fr auto;grid-template-areas:"sel play main duration" "sel play times actions"}.entry:has(.entry-select) .entry-select{grid-area:sel;align-self:start;margin-top:10px}}.split-row{display:flex;gap:10px;align-items:center}.split-row input[type=range]{flex:1;width:auto;accent-color:var(--primary)}.split-row input[type=time]{width:auto}.split-preview{display:grid;grid-template-columns:1fr 1fr;gap:10px}.split-preview>div{display:flex;flex-direction:column;gap:2px;padding:8px 10px;background:var(--card-2);border-radius:6px}.split-preview b{font-size:16px}.icon-btn.split{color:var(--muted)}.icon-btn.split:hover:not(:disabled){color:var(--text)}.timeline{position:relative;margin:0 4px 10px;-webkit-user-select:none;user-select:none}.timeline-hours{position:relative;height:14px}.timeline-hour{position:absolute;top:0;height:100%;border-left:1px solid var(--border)}.timeline-hour em{position:absolute;top:-1px;left:3px;font-style:normal;font-size:10px;color:var(--muted)}.timeline-now{position:absolute;top:0;height:calc(100% + 34px);border-left:2px solid var(--green);z-index:2;pointer-events:none}.timeline-track{position:relative;height:34px;background:repeating-linear-gradient(90deg,transparent,transparent calc(100% - 1px));border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.timeline-block{position:absolute;top:4px;height:26px;box-sizing:border-box;border-radius:4px;background:color-mix(in srgb,var(--primary) 35%,var(--card-2));border:1px solid var(--primary);cursor:grab;overflow:visible;touch-action:none;display:flex;align-items:center;z-index:1}.timeline-block:hover{z-index:3}.timeline-block.running{background:color-mix(in srgb,var(--green) 30%,var(--card-2));border-color:var(--green)}.timeline-block.logged{background:var(--card-2);border-color:var(--border);cursor:default;opacity:.8}.timeline-block.dragging{cursor:grabbing;z-index:4;box-shadow:0 4px 14px #00000059}.timeline-label{font-size:11px;padding:0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;flex:1}.timeline-handle{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;touch-action:none}.timeline-handle.left{left:-3px}.timeline-handle.right{right:-3px}.timeline-handle:after{content:"";position:absolute;top:6px;bottom:6px;left:3px;width:2px;border-radius:1px;background:currentColor;opacity:0}.timeline-block:hover .timeline-handle:after{opacity:.6}.timeline-tip{position:absolute;top:-22px;left:0;font-size:11px;background:var(--card);border:1px solid var(--border);border-radius:4px;padding:1px 6px;white-space:nowrap;z-index:5}@media(max-width:640px){.timeline{display:none}}.modal.changelog{max-width:560px}.changelog-body{max-height:55vh;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-right:4px}.changelog-body h3{margin:0 0 4px;font-size:14px}.changelog-body ul{margin:0;padding-left:18px;font-size:14px;display:flex;flex-direction:column;gap:3px}.feedback-shot{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.feedback-shot img{height:56px;border-radius:4px;border:1px solid var(--border)}.feedback-shot img.off{opacity:.4}.feedback-thanks{text-align:center;padding:16px 0;margin:0}.modal.feedback-mark{max-width:min(1100px,100%)}.feedback-mark canvas{display:block;width:100%;height:auto;margin:0 auto;border-radius:6px;border:1px solid var(--border);cursor:crosshair;touch-action:none}
