:root{--bg: #f6f7f9;--surface-1: #ffffff;--surface-2: #f1f3f6;--surface-3: #e9ecf1;--overlay: rgba(17, 24, 39, .45);--border: #e3e6ec;--border-strong: #d2d7e0;--ring: rgba(79, 70, 229, .35);--text: #161a22;--text-2: #4a5160;--text-3: #818897;--text-on-accent:#ffffff;--accent: #5b54e6;--accent-hover: #4a43d6;--accent-press: #3f38c4;--accent-soft: #ecebfd;--accent-text: #4a43d6;--success: #128a5b;--success-soft: #e3f5ec;--warning: #c2670a;--warning-soft: #fdf0e1;--danger: #d23b3b;--danger-soft: #fdeaea;--info: #2563eb;--info-soft: #e7effe;--prio-urgent: #d23b3b;--prio-high: #c2670a;--prio-normal: #2563eb;--prio-low: #818897;--timer-running: #128a5b;--timer-paused: #c2670a;--shadow-1: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.05);--shadow-2: 0 4px 12px rgba(16,24,40,.08), 0 2px 4px rgba(16,24,40,.05);--shadow-3: 0 12px 32px rgba(16,24,40,.16), 0 4px 8px rgba(16,24,40,.06);--shadow-pop: 0 16px 48px rgba(16,24,40,.22);--font-sans: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "SF Mono", "Cascadia Mono", "Roboto Mono", ui-monospace, monospace;--fs-display: 2.5rem;--fs-h1: 1.5rem;--fs-h2: 1.125rem;--fs-h3: 1rem;--fs-body: .875rem;--fs-sm: .8125rem;--fs-xs: .6875rem;--lh-tight: 1.2;--lh-normal: 1.5;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-pill:999px;--rail-w: 220px;--rail-w-min: 64px;--topbar-h: 56px;--right-w: 340px;--timeline-hour-h: 56px;--ease: cubic-bezier(.2,.8,.2,1);--dur-fast: .12s;--dur: .18s;--dur-slow: .26s}:root[data-theme=dark]{--bg: #0e1117;--surface-1: #161a22;--surface-2: #1d222c;--surface-3: #262c38;--overlay: rgba(0, 0, 0, .6);--border: #262c38;--border-strong: #333b49;--ring: rgba(129, 140, 248, .45);--text: #e8eaf0;--text-2: #a8aebd;--text-3: #939bab;--text-on-accent:#ffffff;--accent: #7c75f0;--accent-hover: #8d87f3;--accent-press: #6a62e8;--accent-soft: #21223a;--accent-text: #a39dff;--success: #34c98a;--success-soft: #11271f;--warning: #e0922f;--warning-soft: #2a1f12;--danger: #ef5a5a;--danger-soft: #2a1414;--info: #5b9bff;--info-soft: #121d2f;--prio-urgent: #ef5a5a;--prio-high: #e0922f;--prio-normal: #5b9bff;--prio-low: #6b7280;--timer-running: #34c98a;--timer-paused: #e0922f;--shadow-1: 0 1px 2px rgba(0,0,0,.4);--shadow-2: 0 6px 18px rgba(0,0,0,.45);--shadow-3: 0 16px 40px rgba(0,0,0,.55);--shadow-pop: 0 20px 56px rgba(0,0,0,.65)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);background:var(--bg);color:var(--text);font-size:var(--fs-body);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.tnum{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}h1,h2,h3{margin:0;font-weight:var(--fw-semibold);letter-spacing:-.01em}:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--radius-sm)}.btn,button.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:32px;padding:0 var(--sp-3);font:inherit;font-weight:var(--fw-medium);border:1px solid var(--border);background:var(--surface-1);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast),box-shadow var(--dur-fast);white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn:active{background:var(--surface-3)}.btn-primary{background:var(--accent);color:var(--text-on-accent);border-color:var(--accent);box-shadow:var(--shadow-1);height:36px;padding:0 var(--sp-4)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:active{background:var(--accent-press)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-danger{color:var(--danger);border-color:transparent;background:transparent}.btn-danger:hover{background:var(--danger-soft)}.btn-danger-solid{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-danger-solid:hover{filter:brightness(1.08)}.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid transparent;background:transparent;color:var(--text-2);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast)}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.sm{width:26px;height:26px}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{height:28px;padding:0 var(--sp-2);font-size:var(--fs-sm)}input,select,textarea{font:inherit;width:100%;height:32px;padding:0 var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-1);color:var(--text);transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}textarea{height:auto;padding:var(--sp-2);resize:vertical}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}input[type=checkbox],input[type=radio]{width:auto;height:auto}input[type=color]{padding:2px;height:32px;cursor:pointer}::placeholder{color:var(--text-3)}label.field-label,.field-label{display:block;font-size:var(--fs-xs);color:var(--text-3);margin-bottom:var(--sp-1);text-transform:none;font-weight:var(--fw-medium)}label{display:block;font-size:var(--fs-xs);color:var(--text-3);margin-bottom:var(--sp-1)}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:var(--sp-4)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-3)}.card-header h2,.card-header h3{font-size:var(--fs-h2);font-weight:var(--fw-semibold)}.grid{display:grid;gap:var(--sp-4)}.grid.cols-2{grid-template-columns:1fr 1fr}.grid.cols-3{grid-template-columns:repeat(3,1fr)}@media (max-width: 1000px){.grid.cols-2,.grid.cols-3{grid-template-columns:1fr}}.row{display:flex;gap:var(--sp-2);align-items:center}.row.wrap{flex-wrap:wrap}.between{justify-content:space-between}.spacer{flex:1}.grow{flex:1;min-width:0}.col{display:flex;flex-direction:column;gap:var(--sp-2)}.muted{color:var(--text-2)}.muted-3{color:var(--text-3)}.small{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-title{font-size:var(--fs-h1);font-weight:var(--fw-semibold)}.big-num{font-size:30px;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-semibold);background:var(--surface-2);color:var(--text-2)}.pill-urgent{background:var(--danger-soft);color:var(--danger)}.pill-high{background:var(--warning-soft);color:var(--warning)}.pill-normal{background:var(--info-soft);color:var(--info)}.pill-low{background:var(--surface-2);color:var(--text-3)}.pill-success{background:var(--success-soft);color:var(--success)}.pill-warning{background:var(--warning-soft);color:var(--warning)}.pill-info{background:var(--info-soft);color:var(--info)}.dot{width:10px;height:10px;border-radius:3px;flex-shrink:0;display:inline-block}.bar-track{background:var(--surface-2);border-radius:var(--radius-pill);overflow:hidden;height:8px;flex:1}.bar{height:8px;border-radius:var(--radius-pill);background:var(--accent)}.list{display:flex;flex-direction:column;gap:var(--sp-2)}.list-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-1);transition:background var(--dur-fast),border-color var(--dur-fast)}.list-item.hoverable:hover{background:var(--surface-2);cursor:pointer}.list-item .name{font-weight:var(--fw-semibold)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:var(--sp-2);border-bottom:1px solid var(--border)}th{font-size:var(--fs-xs);color:var(--text-3);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.03em}.divider{height:1px;background:var(--border);margin:var(--sp-3) 0}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-8) var(--sp-4);text-align:center;color:var(--text-2)}.empty .empty-icon{color:var(--text-3)}.app-shell{display:grid;grid-template-rows:var(--topbar-h) 1fr;height:100vh}.topbar{display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-4);background:var(--surface-1);border-bottom:1px solid var(--border);z-index:30}.brand{font-size:var(--fs-h2);font-weight:var(--fw-bold);color:var(--accent-text);display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer}.date-stepper{display:inline-flex;align-items:center;gap:2px}.date-stepper .date-label{min-width:132px;text-align:center;font-weight:var(--fw-medium);font-variant-numeric:tabular-nums}.shell-body{display:flex;min-height:0}.rail{width:var(--rail-w);flex-shrink:0;background:var(--surface-1);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:var(--sp-3) var(--sp-2);gap:2px;transition:width var(--dur) var(--ease)}.rail.collapsed{width:var(--rail-w-min)}.rail-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);color:var(--text-2);font-weight:var(--fw-medium);cursor:pointer;position:relative;transition:background var(--dur-fast),color var(--dur-fast)}.rail-item:hover{background:var(--surface-2);color:var(--text)}.rail-item.active{background:var(--accent-soft);color:var(--accent-text)}.rail-item.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--accent);border-radius:0 3px 3px 0}.rail.collapsed .rail-item span.label{display:none}.rail-spacer{flex:1}.rail-timer-dot{margin:var(--sp-2) auto 0;width:10px;height:10px;border-radius:50%;background:var(--text-3)}.rail-timer-dot.running{background:var(--timer-running)}.rail-timer-dot.paused{background:var(--timer-paused)}.center-outlet{flex:1;overflow:auto;padding:var(--sp-5);min-width:0}.right-panel{width:var(--right-w);flex-shrink:0;border-left:1px solid var(--border);background:var(--surface-1);display:flex;flex-direction:column;min-height:0}.timer-widget{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-1);border-left:3px solid var(--border-strong)}.timer-widget.running{border-left-color:var(--timer-running)}.timer-widget.paused{border-left-color:var(--timer-paused)}.timer-clock{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-semibold);font-size:16px;min-width:80px;text-align:right}.timer-widget.idle .timer-clock{color:var(--text-3)}.timer-label{font-size:var(--fs-sm);color:var(--text-2);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-status-dot{width:9px;height:9px;border-radius:50%;background:var(--timer-running)}.timer-status-dot.running{animation:pulse-dot 2s var(--ease) infinite}.timer-status-dot.paused{background:var(--timer-paused)}.timer-remaining{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-3)}.timer-remaining.warn{color:var(--warning)}.timer-remaining.over{color:var(--danger)}@keyframes pulse-dot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.7}}.day-layout{display:flex;gap:var(--sp-4);align-items:flex-start}.day-main{flex:1;min-width:0}.day-toolbar{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap}.timeline-wrap{position:relative;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-1);overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 200px)}.timeline{position:relative;width:100%}.tl-gutter{position:absolute;left:0;top:0;width:56px;bottom:0;pointer-events:none}.tl-hour-label{position:absolute;left:0;width:52px;text-align:right;font-size:var(--fs-xs);color:var(--text-3);transform:translateY(-6px);font-variant-numeric:tabular-nums}.tl-grid-line{position:absolute;left:56px;right:0;border-top:1px solid var(--border)}.tl-grid-line.quarter{border-top:1px dashed var(--surface-3)}.tl-canvas{position:absolute;left:56px;right:0;top:0;bottom:0}.tl-now-line{position:absolute;left:56px;right:0;height:0;border-top:1px solid var(--danger);z-index:6;pointer-events:none}.tl-now-dot{position:absolute;left:52px;width:8px;height:8px;border-radius:50%;background:var(--danger);transform:translateY(-4px)}.tl-block{position:absolute;border-radius:var(--radius-md);padding:3px 8px;overflow:hidden;cursor:grab;font-size:var(--fs-xs);box-shadow:var(--shadow-1);border:1px solid rgba(0,0,0,.08);-webkit-user-select:none;user-select:none;touch-action:none;transition:box-shadow var(--dur-fast),transform var(--dur-fast),opacity var(--dur-fast)}.tl-block:hover{box-shadow:var(--shadow-2)}.tl-block.selected{outline:2px solid var(--accent);outline-offset:1px;z-index:7}.tl-block.dragging{box-shadow:var(--shadow-3);transform:scale(1.02);z-index:8;cursor:grabbing;opacity:.96}.tl-block.dimmed{opacity:.65}.tl-block.conflict{outline:2px solid var(--warning);outline-offset:1px}.tl-block .tl-block-title{font-weight:var(--fw-semibold);line-height:1.25}.tl-block .tl-block-time{opacity:.9}.tl-block.running-block{box-shadow:var(--shadow-2)}.tl-block.running-block:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--timer-running);animation:pulse-edge 2s var(--ease) infinite}.tl-block.past-unused{background-image:repeating-linear-gradient(45deg,transparent,transparent 5px,rgba(127,127,127,.16) 5px,rgba(127,127,127,.16) 10px)}@keyframes pulse-edge{0%,to{opacity:1}50%{opacity:.45}}.tl-resize-handle{position:absolute;left:0;right:0;height:9px;cursor:ns-resize;z-index:3}.tl-resize-handle.top{top:-1px}.tl-resize-handle.bottom{bottom:-1px}.tl-resize-handle:after{content:"";position:absolute;left:50%;transform:translate(-50%);width:28%;min-width:18px;height:3px;border-radius:3px;background:currentColor;opacity:.35;transition:opacity var(--dur-fast),background var(--dur-fast),width var(--dur-fast)}.tl-resize-handle.top:after{top:2px}.tl-resize-handle.bottom:after{bottom:2px}.tl-block:hover .tl-resize-handle:after,.tl-block.selected .tl-resize-handle:after{background:var(--accent);opacity:1;width:40%}.tl-resize-handle:hover:after{background:var(--accent);opacity:1;width:46%}.tl-ghost{position:absolute;border-radius:var(--radius-md);background:var(--accent-soft);border:1px dashed var(--accent);pointer-events:none;z-index:9}.tl-ghost.ai{opacity:.85}.tl-drag-chip{position:fixed;z-index:200;pointer-events:none;background:var(--text);color:var(--bg);padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;box-shadow:var(--shadow-2);white-space:nowrap}.tl-block.snap-pop{animation:snap-pop 60ms var(--ease)}@keyframes snap-pop{50%{transform:scale(1.015)}}.tl-action-bar{position:absolute;z-index:12;display:flex;gap:2px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-2);padding:2px}.tl-context-menu{position:fixed;z-index:300;min-width:168px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-3);padding:4px;display:flex;flex-direction:column}.tl-context-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;background:none;cursor:pointer;font-size:var(--fs-sm);color:var(--text);text-align:left;border-radius:var(--radius-sm)}.tl-context-item:hover{background:var(--surface-2)}.tl-context-item.danger{color:var(--danger, #d33)}.tl-context-item.danger:hover{background:var(--danger-soft, rgba(211,51,51,.12))}.tl-context-sep{height:1px;background:var(--border);margin:4px 2px}.rp-tabs{display:flex;border-bottom:1px solid var(--border);padding:0 var(--sp-3)}.rp-tab{padding:var(--sp-3) var(--sp-3);cursor:pointer;color:var(--text-2);font-weight:var(--fw-medium);border-bottom:2px solid transparent}.rp-tab.active{color:var(--text);border-bottom-color:var(--accent)}.rp-body{flex:1;overflow:auto;padding:var(--sp-3)}.rp-quickadd{padding:var(--sp-3);border-top:1px solid var(--border)}.task-card{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-1);margin-bottom:var(--sp-2);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;transition:box-shadow var(--dur-fast),background var(--dur-fast)}.task-card:hover{background:var(--surface-2)}.task-card.dragging{box-shadow:var(--shadow-3);opacity:.9}.task-card .scheduled-check{color:var(--success)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:100;animation:fade-in var(--dur) var(--ease)}.modal{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);padding:var(--sp-5);width:480px;max-width:92vw;max-height:90vh;overflow:auto;animation:pop-in var(--dur) var(--ease)}.form-grid{display:grid;gap:var(--sp-3);margin:var(--sp-3) 0}.form-grid.cols-2{grid-template-columns:1fr 1fr}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:110;animation:fade-in var(--dur) var(--ease)}.drawer{position:fixed;top:0;right:0;bottom:0;width:480px;max-width:94vw;background:var(--surface-1);border-left:1px solid var(--border);box-shadow:var(--shadow-3);z-index:111;display:flex;flex-direction:column;animation:slide-in-right var(--dur-slow) var(--ease)}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4);border-bottom:1px solid var(--border)}.drawer-body{flex:1;overflow:auto;padding:var(--sp-4)}.drawer-footer{padding:var(--sp-4);border-top:1px solid var(--border);display:flex;gap:var(--sp-2)}.popover{position:absolute;z-index:120;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);padding:var(--sp-3);width:300px;animation:pop-in var(--dur-fast) var(--ease)}.palette-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:flex-start;justify-content:center;z-index:150;padding-top:12vh;animation:fade-in var(--dur-fast) var(--ease)}.palette{width:560px;max-width:92vw;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);overflow:hidden;animation:pop-in var(--dur-fast) var(--ease)}.palette input.palette-input{border:none;border-radius:0;border-bottom:1px solid var(--border);height:48px;font-size:var(--fs-h3);padding:0 var(--sp-4)}.palette input.palette-input:focus{box-shadow:none}.palette-chips{display:flex;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--border)}.palette-list{max-height:50vh;overflow:auto;padding:var(--sp-2)}.palette-group-label{font-size:var(--fs-xs);color:var(--text-3);padding:var(--sp-2) var(--sp-2) var(--sp-1);text-transform:uppercase;letter-spacing:.04em}.palette-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);cursor:pointer;color:var(--text)}.palette-item[aria-selected=true],.palette-item.active{background:var(--accent-soft);color:var(--accent-text)}.palette-item .palette-hint{margin-left:auto;font-size:var(--fs-xs);color:var(--text-3)}.toast-stack{position:fixed;bottom:var(--sp-5);left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:var(--sp-2);z-index:300;align-items:center}.toast{display:flex;align-items:center;gap:var(--sp-3);background:var(--surface-1);border:1px solid var(--border);border-left:3px solid var(--text-3);border-radius:var(--radius-md);box-shadow:var(--shadow-2);padding:var(--sp-3) var(--sp-4);min-width:280px;max-width:460px;animation:slide-up var(--dur) var(--ease)}.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--danger)}.toast.info{border-left-color:var(--info)}.toast .toast-action{margin-left:auto}.hero-tile{display:flex;flex-direction:column;gap:var(--sp-1)}.hero-tile .hero-label{font-size:var(--fs-xs);color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}.next-up{border-left:3px solid var(--accent)}.focus-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-5);text-align:center}.focus-exit{position:fixed;top:var(--sp-4);left:var(--sp-4)}.focus-theme{position:fixed;top:var(--sp-4);right:var(--sp-4)}.focus-clock{font-family:var(--font-mono);font-size:64px;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.focus-clock.running{animation:focus-pulse 2s var(--ease) infinite}.focus-clock.paused{color:var(--timer-paused)}@keyframes focus-pulse{0%,to{opacity:1}50%{opacity:.85}}.focus-progress{width:360px;max-width:80vw}.focus-progress .bar-track{height:6px}.focus-remaining{font-size:var(--fs-h3);color:var(--text-2);margin-top:var(--sp-2)}.focus-remaining.warn{color:var(--warning)}.focus-remaining.over{color:var(--danger)}.focus-actions{display:flex;gap:var(--sp-4)}.focus-actions .btn{height:44px;padding:0 var(--sp-5);font-size:var(--fs-h3)}.focus-link{color:var(--text-3);font-size:var(--fs-sm);cursor:pointer}.focus-link:hover{color:var(--text-2);text-decoration:underline}.banner{background:var(--warning-soft);border:1px solid var(--warning);color:var(--warning);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm)}.banner.err{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.banner.info{background:var(--info-soft);border-color:var(--info);color:var(--info)}.checkbox-row{display:flex;align-items:center;gap:var(--sp-2)}.subtask{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);padding:2px 0}.subtask.done span{text-decoration:line-through;color:var(--text-3)}.swatch-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--sp-2)}.swatch{width:28px;height:28px;border-radius:var(--radius-sm);cursor:pointer;border:2px solid transparent}.swatch.active{border-color:var(--text);box-shadow:0 0 0 2px var(--surface-1)}.seg{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.seg button{border:none;border-radius:0;background:var(--surface-1);color:var(--text-2);height:32px}.seg button.active{background:var(--accent-soft);color:var(--accent-text)}.seg button+button{border-left:1px solid var(--border)}.shimmer{background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes slide-in-right{0%{transform:translate(100%)}to{transform:none}}.route-fade{animation:route-fade var(--dur) var(--ease)}@keyframes route-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.stagger-in{animation:pop-in var(--dur) var(--ease) backwards}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.redirect-uri{flex:1;min-width:0;padding:6px 10px;font-size:var(--fs-xs);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-ligatures:none}.tl-ext-event{position:absolute;border-radius:var(--radius-md);padding:2px 7px;overflow:hidden;font-size:var(--fs-xs);border:1px solid var(--border);background:repeating-linear-gradient(45deg,var(--surface-2),var(--surface-2) 6px,var(--surface-1) 6px,var(--surface-1) 12px);color:var(--text-2);cursor:default;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:2;box-shadow:none}.tl-ext-event .tl-ext-title{font-weight:var(--fw-semibold);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tl-ext-event .tl-ext-time{opacity:.8}.tl-ext-badge{display:inline-flex;align-items:center;gap:3px;font-size:10px;padding:0 4px;border-radius:var(--radius-sm);background:var(--surface-3);color:var(--text-3);margin-right:4px;vertical-align:1px}.tl-allday-strip{display:flex;flex-wrap:wrap;gap:4px;margin-left:56px;padding:4px 4px 6px;border-bottom:1px dashed var(--border)}.tl-allday-chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--text-2);padding:1px 8px;border-radius:999px;background:repeating-linear-gradient(45deg,var(--surface-2),var(--surface-2) 6px,var(--surface-1) 6px,var(--surface-1) 12px);border:1px solid var(--border)}.tl-allday-label{font-size:10px;color:var(--text-3);align-self:center;text-transform:uppercase;letter-spacing:.04em;margin-right:2px}.gate-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--bg);color:var(--text);display:flex;align-items:center;justify-content:center;padding:max(24px,env(safe-area-inset-top)) 24px}.gate-card{width:360px;max-width:92vw;text-align:center;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);padding:var(--sp-6)}.gate-card h1{font-size:var(--fs-h1);margin-bottom:var(--sp-2)}.gate-card p{margin:0 0 var(--sp-4)}.gate-icon{width:56px;height:56px;margin:0 auto var(--sp-4);display:grid;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent-text)}.pin-input{height:64px;width:100%;text-align:center;font-size:32px;letter-spacing:12px;padding-left:12px;border-radius:var(--radius-md)}.auth-card{text-align:left}.auth-card h1,.auth-card>p{text-align:center}.auth-card label{display:block;font-size:var(--fs-sm);color:var(--text-2);margin-bottom:4px;font-weight:var(--fw-medium)}.auth-card input{width:100%}.ipad-connect-grid{display:flex;gap:var(--sp-4);align-items:flex-start;flex-wrap:wrap;margin-top:var(--sp-2)}.ipad-qr{flex-shrink:0;padding:8px;background:#fff;border-radius:10px}.ipad-connect-fields{flex:1;min-width:200px}.ipad-pin{flex:1;font-size:24px;font-weight:var(--fw-bold);letter-spacing:6px;padding:4px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text)}.ipad-steps{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px}.ipad-steps li{line-height:1.5}.ipad-addr-label{display:inline-flex;align-items:center}.ipad-disclosure{display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:4px 0;cursor:pointer;color:var(--text-2);font-size:var(--fs-sm);font-weight:var(--fw-medium);text-align:left}.ipad-disclosure:hover{color:var(--text)}.ipad-disclosure.tight{padding:0;flex-shrink:0}.ipad-other-addrs{margin-top:var(--sp-2)}.ipad-addr-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.ipad-addr-item{border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 8px;background:var(--surface-2)}.ipad-addr-row{display:flex;align-items:center;gap:8px}.ipad-addr-name{white-space:nowrap}.ipad-addr-qr{margin-top:8px;display:flex;justify-content:center;padding:8px;background:#fff;border-radius:8px}.ipad-help{margin-top:var(--sp-2)}.ipad-help-body{margin-top:4px;padding:8px 12px;background:var(--surface-2);border-radius:var(--radius-sm)}.ipad-help-body ol{margin:0 0 6px;padding-left:18px;display:flex;flex-direction:column;gap:6px}.ipad-help-body li{line-height:1.5}.ipad-help-body p{margin:0}.ipad-help-body code{padding:1px 5px;background:var(--surface);border:1px solid var(--border);border-radius:4px;font-size:var(--fs-xs)}.rp-drawer-toggle,.rp-drawer-backdrop{display:none}@media (pointer: coarse){.icon-btn{width:38px;height:38px}.icon-btn.sm{width:32px;height:32px}.btn{height:38px}.btn-sm{height:32px}.rail-item{padding:var(--sp-3) var(--sp-3)}.rp-tab{padding:var(--sp-4) var(--sp-3)}.tl-resize-handle{height:16px}.tl-block{padding:4px 9px}.task-card{padding:var(--sp-3)}.tl-context-item{padding:11px 12px}}@media (max-width: 1180px){:root{--rail-w: 200px;--right-w: 300px}}@media (max-width: 1080px){:root{--right-w: 280px}.day-layout{gap:var(--sp-3)}.rail:not(.collapsed){width:var(--rail-w-min)}.rail:not(.collapsed) .rail-item span.label{display:none}}@media (max-width: 900px){.day-layout{display:block}.day-main{width:100%}.timeline-wrap{max-height:calc(100vh - 180px)}.right-panel{position:fixed;top:var(--topbar-h);right:0;bottom:0;width:340px;max-width:86vw;transform:translate(100%);transition:transform var(--dur) var(--ease);z-index:115;box-shadow:var(--shadow-3)}.right-panel.rp-open{transform:translate(0)}.rp-drawer-backdrop{display:block;position:fixed;inset:var(--topbar-h) 0 0 0;background:var(--overlay);z-index:114;animation:fade-in var(--dur-fast) var(--ease)}.rp-drawer-toggle{display:inline-flex;align-items:center;gap:6px;position:fixed;right:16px;bottom:max(16px,env(safe-area-inset-bottom));z-index:113;height:48px;padding:0 18px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--accent);color:var(--text-on-accent);box-shadow:var(--shadow-2);font-weight:var(--fw-semibold);cursor:pointer}.ipad-connect-grid{flex-direction:column;align-items:center;text-align:center}.ipad-connect-fields{width:100%;text-align:left}}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.tracker-bar{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);min-height:56px;border-radius:var(--radius-lg);box-shadow:var(--shadow-1);position:sticky;top:0;z-index:20;margin-bottom:var(--sp-4)}.tracker-desc{flex:1 1 200px;min-width:120px;border:none;background:transparent;font-size:var(--fs-h3);height:40px}.tracker-desc:focus-visible{outline:2px solid var(--ring);border-radius:var(--radius-sm)}.tracker-clock{font-family:var(--font-mono);font-size:var(--fs-h2);font-variant-numeric:tabular-nums;font-weight:var(--fw-semibold);min-width:92px;text-align:right}.round-40{width:40px!important;height:40px!important;border-radius:50%!important}.btn-primary-round{display:inline-flex;align-items:center;justify-content:center;border:none;cursor:pointer;background:var(--accent);color:var(--text-on-accent)}.btn-primary-round:hover{background:var(--accent-hover)}.btn-primary-round:disabled{opacity:.5;cursor:not-allowed}.btn-stop{display:inline-flex;align-items:center;justify-content:center;border:none;cursor:pointer;background:var(--danger);color:#fff}.btn-stop:hover{filter:brightness(1.1)}.billable-toggle{width:32px;height:32px;color:var(--text-3)}.billable-toggle.on{background:var(--accent-soft);color:var(--accent-text)}.project-picker{position:relative}.picker-trigger{display:inline-flex;align-items:center;gap:6px;max-width:260px}.picker-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-pop{position:absolute;top:calc(100% + 4px);right:0;z-index:130;width:280px;max-height:320px;display:flex;flex-direction:column;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-3);animation:pop-in var(--dur-fast) var(--ease)}.picker-search{margin:8px;height:32px;flex-shrink:0}.picker-list{overflow-y:auto;padding-bottom:6px}.picker-group{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);padding:8px 12px 2px;font-weight:var(--fw-semibold)}.picker-option{display:flex;align-items:center;gap:8px;padding:7px 12px;cursor:pointer;font-size:var(--fs-body)}.picker-option.active{background:var(--surface-2)}.picker-option.selected{color:var(--accent-text);font-weight:var(--fw-semibold)}.picker-empty{padding:12px;font-size:var(--fs-sm)}.week-nav{margin:var(--sp-2) 0 var(--sp-3)}.week-label{font-weight:var(--fw-semibold);min-width:130px;text-align:center}.week-total{font-size:var(--fs-h3)}.week-total strong{font-family:var(--font-mono);font-size:var(--fs-h2)}.day-group{margin-bottom:var(--sp-3)}.day-header{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;padding:6px 4px;border-bottom:1px solid var(--border)}.day-header .tnum{font-family:var(--font-mono)}.entry-row{display:flex;align-items:center;gap:var(--sp-2);min-height:44px;padding:4px;width:100%;text-align:left;border-bottom:1px solid var(--border);background:transparent;cursor:pointer;position:relative}.entry-row:hover,.entry-row:focus-visible{background:var(--surface-2)}.entry-row:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.entry-desc{flex:1 1 auto;min-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry-desc.placeholder{color:var(--text-3);font-style:italic}.entry-chip{display:inline-flex;align-items:center;gap:6px;color:var(--text-2);flex-shrink:0}.entry-billable{color:var(--accent-text);display:inline-flex;flex-shrink:0}.entry-times{color:var(--text-2);font-family:var(--font-mono);font-size:var(--fs-sm);flex-shrink:0}.entry-duration{font-family:var(--font-mono);font-weight:var(--fw-semibold);min-width:76px;text-align:right;flex-shrink:0}.entry-actions{display:none;gap:2px;flex-shrink:0}.entry-row:hover .entry-actions,.entry-row:focus-within .entry-actions{display:inline-flex}.entry-kebab{display:none;position:relative}.kebab-menu{position:absolute;right:0;top:calc(100% + 2px);z-index:60;display:flex;flex-direction:column;min-width:140px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-3);padding:4px}.kebab-menu button{display:flex;align-items:center;gap:8px;padding:10px 12px;background:none;border:none;cursor:pointer;color:var(--text);border-radius:var(--radius-sm);text-align:left;min-height:44px}.kebab-menu button:hover{background:var(--surface-2)}.skeleton-row{height:44px;border-radius:var(--radius-md);margin:8px 0;background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite}input.invalid,.invalid input{border-color:var(--danger)!important}.partner-list{padding:0}.partner-row-wrap{border-bottom:1px solid var(--border)}.partner-row-wrap:last-child{border-bottom:none}.partner-row-wrap.archived{opacity:.6}.partner-row{display:flex;align-items:center;gap:var(--sp-2);padding:10px 12px;min-height:48px}.partner-name{flex-shrink:0}.partner-rate{color:var(--text-2);font-size:var(--fs-sm)}.partner-projects{padding:2px 12px 12px 44px}.partner-project-row{display:flex;align-items:center;gap:var(--sp-2);min-height:36px}.rate-note{color:var(--text-2)}.swatch-grid.inline{display:inline-flex;gap:4px;margin:0}.swatch-grid.inline .swatch{width:20px;height:20px;border-radius:5px;border:none;cursor:pointer}.swatch-grid.inline .swatch.active{outline:2px solid var(--ring)}.link-existing{max-width:220px}.month-stepper .month-label{font-weight:var(--fw-semibold);min-width:120px;text-align:center}.month-stepper .icon-btn{width:36px;height:36px}.invoice-card{margin-bottom:var(--sp-3)}.invoice-card-head{display:flex;align-items:center;gap:var(--sp-2);padding-bottom:8px;border-bottom:1px solid var(--border);margin-bottom:8px;flex-wrap:wrap}.invoice-total{font-family:var(--font-mono);font-weight:var(--fw-semibold)}.invoice-project-row{display:flex;align-items:center;gap:var(--sp-2);min-height:32px}.invoice-project-row .tnum{font-family:var(--font-mono)}.invoice-amount{min-width:100px;text-align:right;font-weight:var(--fw-semibold)}.invoice-entries-wrap{overflow-x:auto;margin-top:8px}.invoice-entries{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.invoice-entries th{font-size:var(--fs-xs);color:var(--text-3);text-align:left;padding:6px 8px;border-bottom:1px solid var(--border)}.invoice-entries th.tnum,.invoice-entries td.tnum{text-align:right;font-variant-numeric:tabular-nums}.invoice-entries td{padding:6px 8px;border-bottom:1px solid var(--border)}.invoice-entries td:first-child,.invoice-entries th:first-child{position:sticky;left:0;background:var(--surface-1)}.unassigned-banner{display:flex;align-items:center;flex-wrap:wrap;gap:4px;background:var(--warning-soft);color:var(--warning);border:1px solid var(--warning);border-radius:var(--radius-md);padding:10px 14px;margin-top:var(--sp-2);font-size:var(--fs-sm)}@media (max-width: 1024px){.entry-row .icon-btn{width:44px;height:44px}}@media (max-width: 834px){.tracker-bar{flex-wrap:wrap}.tracker-desc{flex-basis:100%}.entry-row{flex-wrap:wrap;padding:8px 4px}.entry-desc{flex-basis:55%;order:1}.entry-duration{order:2;margin-left:auto}.entry-kebab{display:inline-flex;order:3}.entry-actions{display:none!important}.entry-chip{order:4}.entry-billable{order:5}.entry-times{order:6}.invoice-project-row{flex-wrap:wrap}.partner-rate{flex-basis:100%;margin-left:34px}}@media (max-width: 480px){.tracking-page .seg{width:100%;display:flex}.tracking-page .seg button{flex:1}.week-label{min-width:0;font-size:var(--fs-sm)}}@media (pointer: coarse){.entry-actions{display:none!important}.entry-kebab{display:inline-flex}.month-stepper .icon-btn{width:44px;height:44px}}
