:root{--ink:#16202c;--ink-2:#47535f;--ink-3:#6b7681;--bg:#f3f4f5;--surface:#fff;--line:#e2e5e8;--line-strong:#c6ccd2;--weekend:#eeeff2;--accent:#1d5fd1;--accent-soft:#e4edfb;--today:#d9372c;--good:#1a7a4c;--warn:#a35f00;--crit:#bf2d24;--radius:4px;color:var(--ink);font-variant-numeric:tabular-nums;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:13px;line-height:1.35}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg)}.app{flex-direction:column;height:100%;min-height:0;display:flex}h1,h2,h3,p{margin:0}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.spacer{flex:1}.btn{white-space:nowrap;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);cursor:pointer;justify-content:center;align-items:center;gap:4px;height:28px;padding:0 10px;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:#f0f2f4}.btn:disabled{color:#a8afb6;border-color:var(--line);cursor:default}.btn-ghost{background:0 0;border-color:#0000}.btn-icon{width:28px;padding:0;font-size:15px}.btn-primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn-primary:hover:not(:disabled){background:#2a3a4c}.btn-danger{color:var(--crit);border-color:#e4b9b5}.btn-on{background:var(--accent-soft);border-color:var(--accent);color:#123f90}select,input:not([type=color],[type=checkbox]),textarea{background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);min-width:0;height:28px;padding:0 8px}textarea{resize:vertical;height:auto;padding:6px 8px}input[type=color]{border:1px solid var(--line-strong);border-radius:var(--radius);cursor:pointer;background:#fff;width:34px;height:26px;padding:1px}.segmented{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);display:inline-flex;overflow:hidden}.segmented button{cursor:pointer;border:0;border-left:1px solid var(--line);background:0 0;height:26px;padding:0 10px}.segmented button:first-child{border-left:0}.segmented button:hover{background:#f0f2f4}.segmented button.on{background:var(--ink);color:#fff}.badge{border:1px solid var(--line-strong);color:var(--ink-2);background:var(--surface);border-radius:3px;flex:none;padding:0 5px;font-size:11px;font-weight:400}.chip{border:1px solid #0000;border-radius:2px;flex:none;width:10px;height:10px;display:inline-block}.chip-lg{width:14px;height:14px}.topbar{background:var(--ink);color:#dfe4e9;scrollbar-width:none;flex:none;align-items:center;gap:22px;height:42px;padding:0 14px;display:flex;overflow-x:auto}.brand{color:#fff;white-space:nowrap;letter-spacing:.01em;font-size:15px;font-weight:400;text-decoration:none}.brand b{font-weight:700}.topnav{gap:2px;height:100%;display:flex}.topnav a,.topnav-link{white-space:nowrap;color:#b9c2cb;border-top:2px solid #0000;border-bottom:2px solid #0000;align-items:center;height:100%;padding:0 10px;text-decoration:none;display:flex}.topnav a:hover,.topnav-link:hover{color:#fff}.topnav a.router-link-active,.topnav-link.router-link-active{color:#fff;border-bottom-color:#f2a33a}.topbar-right{align-items:center;gap:10px;height:100%;margin-left:auto;display:flex}.user{white-space:nowrap;align-items:center;gap:7px;display:flex}.avatar{width:24px;height:24px;color:var(--ink);background:#f2a33a;border-radius:50%;place-items:center;font-size:10px;font-weight:700;display:grid}.topbar-logout{color:#b9c2cb;cursor:pointer;white-space:nowrap;border-radius:var(--radius);background:0 0;border:0;padding:4px 8px}.topbar-logout:hover{color:#fff;background:#ffffff1a}.demo-banner{color:#2a1c05;background:#f2a33a;flex:none;align-items:center;gap:10px;padding:5px 6px 5px 14px;font-size:13px;display:flex}.demo-tag{color:#fff;text-transform:uppercase;letter-spacing:.04em;background:#2a1c05;border-radius:3px;flex:none;padding:0 6px;font-size:11px;font-weight:700}.demo-text{flex:1;min-width:0}.demo-close{border-radius:var(--radius);width:30px;height:30px;color:inherit;cursor:pointer;background:0 0;border:0;flex:none}.demo-close:hover{background:#0000001f}.login{background:var(--ink);flex:1;place-items:center;padding:16px;display:grid;overflow:auto}.login-card{background:var(--surface);border-radius:8px;flex-direction:column;gap:14px;width:min(360px,100%);padding:26px 24px 20px;display:flex;box-shadow:0 12px 40px #00000059}.login-brand{font-size:24px;line-height:1.1}.login-brand b{font-weight:700}.login-company{color:var(--ink-2);margin-top:-10px}.login-field{color:var(--ink-2);flex-direction:column;gap:4px;font-size:13px;display:flex}.login-field input{height:42px;color:var(--ink);font-size:16px}.login-submit{border-radius:var(--radius);background:var(--ink);color:#fff;cursor:pointer;border:0;height:44px;margin-top:2px;font-size:15px;font-weight:600}.login-submit:hover{background:#2a3a4c}.login-note{color:var(--ink-3);font-size:12px}.page-planning,.page-overview{flex-direction:column;flex:1;min-height:0;display:flex}.toolbar{background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:6px 12px;display:flex}.toolbar-sep{background:var(--line-strong);width:1px;height:18px;margin:0 4px}.project-select{max-width:280px;font-weight:600}.edit-hint{color:var(--ink-3);font-size:12px}.planning-body{flex:1;min-height:0;display:flex;position:relative}.statusbar{background:var(--surface);border-top:1px solid var(--line);min-height:28px;color:var(--ink-2);flex:none;align-items:center;gap:16px;padding:4px 12px;font-size:12px;display:flex}.legend{flex-wrap:wrap;flex:1;gap:3px 12px;min-width:0;display:flex}.legend-item{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.status-numbers{white-space:nowrap;gap:14px;display:flex}.empty{z-index:6;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:6px;gap:10px;width:fit-content;margin:auto;padding:16px 20px;display:grid;position:absolute;inset:90px 0 auto}.gantt{background:var(--surface);--row:26px;overscroll-behavior:contain;flex:1;min-width:0;position:relative;overflow:auto}.g-inner{min-height:100%;position:relative}.g-head{z-index:6;background:var(--surface);display:flex;position:sticky;top:0}.g-left{z-index:3;width:var(--left);background:inherit;border-right:1px solid var(--line-strong);flex:none;align-items:center;height:100%;display:flex;position:sticky;left:0;overflow:hidden}.g-left-head{z-index:7;background:var(--surface);border-bottom:1px solid var(--line-strong);height:auto;color:var(--ink-3);align-items:flex-end;padding-bottom:4px;font-size:11px;position:sticky;left:0;overflow:visible}.g-rows{position:relative}.g-row{height:var(--row);background:var(--surface);border-bottom:1px solid #eff1f3;display:flex}.g-row:hover{background:#f8f9fa}.g-row.is-selected,.g-row.is-selected:hover{background:var(--accent-soft)}.g-row.is-group{font-weight:600}.g-row.depth-0.is-group{background:#f7f8f9}.g-row.depth-0.is-group.is-selected{background:var(--accent-soft)}.g-row.is-project{background:#f1f3f5;font-weight:700}.g-row.is-project .g-left{background:#f1f3f5}.g-left-head .c-num{justify-content:flex-end}.c-num{width:34px;color:var(--ink-3);flex:none;justify-content:flex-end;align-items:center;padding-right:6px;font-size:11px;font-weight:400;display:flex}.c-name{width:var(--name);flex:none;align-items:center;gap:5px;min-width:0;display:flex;overflow:hidden}.name-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.c-start{text-align:right;width:74px;color:var(--ink-2);white-space:nowrap;flex:none;padding-right:6px;font-size:12px;font-weight:400}.c-dur{text-align:right;width:46px;color:var(--ink-2);flex:none;padding-right:6px;font-size:12px;font-weight:400}.c-people{text-align:right;width:50px;color:var(--ink-2);flex:none;padding-right:6px;font-size:12px;font-weight:400}.c-hours{text-align:right;width:56px;color:var(--ink-2);flex:none;padding-right:8px;font-size:12px;font-weight:400}.c-booked{text-align:right;flex:none;width:92px;padding-right:8px;font-size:12px;font-weight:400}.g-left-head .c-start,.g-left-head .c-dur,.g-left-head .c-people,.g-left-head .c-hours,.g-left-head .c-booked{color:var(--ink-3);font-size:11px}.g-left-head .c-name{padding-left:6px}.is-narrow .c-name{width:100%;padding-right:4px}.is-project .c-name{padding-left:6px}.chev{cursor:pointer;width:16px;height:16px;color:var(--ink-3);background:0 0;border:0;flex:none;padding:0;font-size:11px;line-height:16px;transition:transform .1s}.chev.open{transform:rotate(90deg)}.chev-space{width:16px;display:inline-block}.c-name .chip{margin:0 3px}.grip{cursor:grab;color:var(--ink-3);font-size:11px;display:none}.is-edit .g-row:hover .grip{display:inline}.is-edit .g-row:hover .num{display:none}.cell-input{width:100%;font-size:12px;font-weight:400;border-color:var(--accent)!important;height:20px!important;padding:0 3px!important}.splitter{cursor:col-resize;z-index:2;width:7px;position:absolute;top:0;bottom:0;right:-3px}.g-track{touch-action:pan-x pan-y;background-image:linear-gradient(90deg, transparent calc(var(--dw) * 5), var(--weekend) calc(var(--dw) * 5)), linear-gradient(90deg, #dde0e4 1px, transparent 1px);background-size:calc(var(--dw) * 7) 100%, calc(var(--dw) * 7) 100%;flex:1;min-width:0;position:relative}.is-edit .g-track{cursor:crosshair}.bar{cursor:default;border:1px solid;border-radius:2px;height:15px;position:absolute;top:5px}.is-edit .bar{cursor:grab;touch-action:none}.is-dragging .bar{cursor:grabbing}.bar.is-sel{outline:2px solid var(--accent);outline-offset:1px;z-index:2}.bar-gap{pointer-events:none;background:#ffffffb8;margin-left:-1px;position:absolute;top:0;bottom:0}.bar-progress{pointer-events:none;height:3px;position:absolute;bottom:0;left:0}.handle{cursor:ew-resize;z-index:1;touch-action:none;width:9px;position:absolute;top:-2px;bottom:-2px}.h-start{left:-5px}.h-end{right:-5px}.bar.is-sel .handle:after,.is-edit .bar:hover .handle:after{content:"";background:var(--accent);border-radius:2px;width:3px;position:absolute;top:3px;bottom:3px;left:3px;box-shadow:0 0 0 1px #fff}.bar-group{background:var(--ink-2);cursor:default;height:6px;position:absolute;top:9px}.bar-group:before,.bar-group:after{content:"";background:inherit;width:3px;height:11px;position:absolute;top:0}.bar-group:before{left:0}.bar-group:after{right:0}.is-edit .bar-group{cursor:grab}.bar-group.is-sel{outline:2px solid var(--accent);outline-offset:2px}.bar-project{background:var(--ink)}.bar-label{white-space:nowrap;pointer-events:none;color:var(--ink);font-size:12px;font-weight:400;position:absolute;top:5px}.is-group .bar-label{font-weight:600}.today-line{background:var(--today);pointer-events:none;z-index:2;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.today-flag{background:var(--today);color:#fff;border-radius:0 2px 2px 0;padding:0 4px;font-size:10px;font-weight:400;position:absolute;top:-1px;left:2px}.marquee{z-index:4;border:1px solid var(--accent);pointer-events:none;background:#1d5fd11f;position:absolute}.drop-line{background:var(--accent);z-index:5;pointer-events:none;height:2px;position:absolute;left:0;right:0}.drag-label{z-index:5;background:var(--ink);color:#fff;white-space:nowrap;pointer-events:none;border-radius:3px;padding:2px 7px;font-size:11px;position:absolute}.tip{z-index:30;background:var(--ink);color:#eef1f3;pointer-events:none;border-radius:4px;max-width:300px;padding:7px 9px;font-size:12px;position:fixed;box-shadow:0 3px 12px #00000040}.tip strong{color:#fff;margin-bottom:2px;display:block}.tl-head{border-bottom:1px solid var(--line-strong);flex:none;position:relative}.tl-line{border-bottom:1px solid var(--line);height:18px;position:relative}.tl-line:last-child{border-bottom:0}.tl-cell{color:var(--ink-2);border-left:1px solid var(--line-strong);white-space:nowrap;padding:2px 4px;font-size:11px;position:absolute;top:0;bottom:0;overflow:hidden}.tl-months .tl-cell{color:var(--ink);font-weight:600}.tl-sticky{left:calc(var(--left) + 4px);position:sticky}.tl-days .tl-cell{text-align:center;border-left-color:var(--line);padding:2px 1px;font-size:10px}.tl-weekend{background:var(--weekend)}.tl-today{background:var(--today);color:#fff}.st-icon{margin-right:4px;font-size:9px;font-style:normal}.st-op-schema{color:var(--good)}.st-boven{color:var(--crit)}.st-onder{color:var(--warn)}.st-niet-gestart{color:var(--ink-3)}.panel{background:var(--surface);border-left:1px solid var(--line-strong);z-index:8;flex-direction:column;flex:none;width:340px;max-width:100%;min-height:0;display:flex;box-shadow:-3px 0 12px #0000000f}.panel-head{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:flex-start;gap:8px;padding:12px 14px;display:flex}.panel-head h2{margin-top:2px;font-size:14px;font-weight:600}.panel-kicker{color:var(--ink-3);font-size:11px}.panel-body{border:0;flex-direction:column;flex:1;gap:11px;min-width:0;margin:0;padding:12px 14px 20px;display:flex;overflow:auto}.field{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.field>span{color:var(--ink-2);font-size:11px}.field small{color:var(--ink-3);font-size:11px}.field-row{gap:8px;display:flex}.field-note{color:var(--ink-2);border-radius:var(--radius);background:#f5f6f7;padding:7px 9px;font-size:12px}fieldset:disabled input,fieldset:disabled select,fieldset:disabled textarea{color:var(--ink);opacity:1;border-color:var(--line);background:#f6f7f8}.color-row,.stepper-row{align-items:center;gap:6px;display:flex}.stepper-row input{text-align:center;width:64px}.stepper-row .btn{flex:1}.panel-hours{border-top:1px solid var(--line);margin-top:2px;padding-top:10px}.panel-hours h3{margin-bottom:6px;font-size:12px}.kv{grid-template-columns:1fr auto;gap:3px 10px;margin:0;display:grid}.kv dt{color:var(--ink-2)}.kv dd{text-align:right;margin:0;font-weight:600}.plain-list{border-top:1px dashed var(--line);gap:3px;margin:8px 0 0;padding:8px 0 0;list-style:none;display:grid}.plain-list li{justify-content:space-between;display:flex}@media (width<=760px){.panel{width:min(340px,92vw);position:absolute;inset:0 0 0 auto}}.dialog-backdrop{z-index:40;background:#0f161e66;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border-radius:6px;flex-direction:column;gap:10px;width:min(440px,100%);max-height:100%;padding:18px;display:flex;overflow:auto;box-shadow:0 10px 40px #00000040}.dialog h2{font-size:16px}.dialog-foot{gap:6px;margin-top:6px;display:flex}.ov-title{padding-left:10px}.ov-row{height:26px}.ov-left{gap:6px;padding:0 8px}.ov-sub{padding-left:26px;font-weight:400}.ov-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-decoration:none;overflow:hidden}a.ov-name:hover{text-decoration:underline}.ov-meta{color:var(--ink-3);flex:none;font-size:11px}.mini-bar{cursor:pointer;border:1px solid;border-radius:1.5px;height:7px;position:absolute}.ov .bar-group{cursor:pointer}.week-load{color:var(--ink);border-right:1px solid #fff;place-items:center;font-size:11px;font-weight:600;display:grid;position:absolute;top:3px;bottom:3px}.empty-inline{text-align:center;color:var(--ink-3);padding:24px}.tv{--tv-bg:#0d1218;--tv-panel:#141b23;--tv-line:#ffffff12;--tv-ink:#f2f5f7;--tv-ink-2:#98a4b0;--tv-accent:#f2a33a;--label:25%;background:var(--tv-bg);color:var(--tv-ink);flex-direction:column;gap:1.6vh;padding:2.4vh 2.2vw 1.6vh;font-size:clamp(12px,1.05vw,28px);display:flex;position:fixed;inset:0;overflow:hidden}.tv:not(.tv-chrome){cursor:none}.tv-head{flex:none;align-items:center;gap:3vw;display:flex}.tv-title{flex:1;min-width:0}.tv-company{color:var(--tv-ink-2);font-size:.95em}.tv-title h1{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:2.5em;font-weight:650;line-height:1.15;overflow:hidden}.tv-progress-block{flex:0 24%;min-width:170px}.tv-progress-text{color:var(--tv-ink-2);white-space:nowrap;justify-content:space-between;gap:1em;margin-bottom:.55vh;font-size:.85em;display:flex}.tv-progress-track{background:#ffffff17;border-radius:99px;height:.45em;overflow:hidden}.tv-progress-track span{background:var(--tv-accent);border-radius:99px;height:100%;display:block}.tv-stats{flex:none;gap:2.4vw;display:flex}.tv-stat,.tv-clock{white-space:nowrap;flex-direction:column;display:flex}.tv-stat strong,.tv-clock strong{font-size:2.5em;font-weight:650;line-height:1.1}.tv-stat span,.tv-clock span{color:var(--tv-ink-2);font-size:.9em}.tv-clock{border-left:1px solid var(--tv-line);align-items:flex-end;padding-left:2.4vw}.tv-main{flex:1;grid-template-columns:1fr minmax(240px,25%);gap:1.2vw;min-height:0;animation:.45s tv-fade;display:grid}@keyframes tv-fade{0%{opacity:.45;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.tv-main{animation:none}}.tv-chart{background:var(--tv-panel);border-radius:10px;flex-direction:column;min-width:0;min-height:0;padding:1.4vh 1.2vw 1.2vh;display:flex}.tv-chart-tasks{--label:36%}.tv-axis{height:3.1em;padding-left:var(--label);flex:none}.tv-axis-inner{height:100%;position:relative}.tv-week{color:var(--tv-ink-2);white-space:nowrap;padding-left:.3em;font-size:.82em;position:absolute;bottom:.35em}.tv-month{height:1.4em;color:var(--tv-ink);font-weight:600;display:block}.tv-today-flag{z-index:3;background:var(--tv-accent);color:#1a1206;border-radius:99px;padding:.05em .55em;font-size:.75em;font-weight:700;position:absolute;bottom:-.3em;transform:translate(-50%)}.tv-body{border-top:1px solid var(--tv-line);flex:1;min-height:0;position:relative;overflow:hidden}.tv-bg,.tv-today-wrap{top:0;bottom:0;left:var(--label);pointer-events:none;position:absolute;right:0}.tv-weekend{background:#ffffff06;position:absolute;top:0;bottom:0}.tv-gridline{background:var(--tv-line);width:1px;position:absolute;top:0;bottom:0}.tv-today{background:var(--tv-accent);width:2px;margin-left:-1px;position:absolute;top:0;bottom:0;box-shadow:0 0 10px #f2a33a80}.tv-line{align-items:center;display:flex;position:relative}.tv-label{width:var(--label);white-space:nowrap;text-overflow:ellipsis;flex:none;min-width:0;padding-right:1em;overflow:hidden}.tv-label span,.tv-label strong{text-overflow:ellipsis;overflow:hidden}.tv-track{flex:1;min-width:0;position:relative}.tv-bar{border-radius:4px;position:absolute;overflow:hidden}.tv-bar i{background:#0d12186b;position:absolute;top:0;bottom:0;right:0}.tv-bar.is-past{opacity:.32}.tv-bar.is-active{box-shadow:0 0 0 1.5px #ffffffd9}.tv-project{padding-top:.5vh}.tv-project+.tv-project{border-top:1px solid var(--tv-line);margin-top:.4vh}.tv-project-line{height:3.4vh}.tv-project-line .tv-track{height:100%}.tv-range{background:#ffffff59;border-radius:2px;height:2px;margin-top:-1px;position:absolute;top:50%}.tv-section-line{align-items:flex-start;padding:.45vh 0}.tv-section-line .tv-label{color:var(--tv-ink-2);font-size:.92em;line-height:var(--lane);padding-left:1em}.tv-tasks{flex-direction:column;height:100%;display:flex;position:relative}.tv-task-line{border-bottom:1px solid #ffffff09;flex:1 1 0;min-height:0;max-height:6vh}.tv-task-line .tv-track{height:100%}.tv-task-line .tv-label{color:#d5dce3;padding-left:.6em;font-size:.98em}.tv-task-line .tv-bar{top:22%;bottom:22%}.tv-task-line.is-now{background:linear-gradient(90deg,#ffffff0e,#fff0 70%)}.tv-task-line.is-now .tv-label{color:var(--tv-ink);font-weight:600}.tv-more{color:var(--tv-ink-2);padding:.7vh .6em;font-size:.88em}.tv-side{flex-direction:column;gap:.8vh;min-width:0;min-height:0;display:flex;overflow:hidden}.tv-side h2{color:var(--tv-ink-2);letter-spacing:.06em;text-transform:uppercase;margin-top:.5vh;font-size:.85em;font-weight:600}.tv-side h2:not(:first-child){margin-top:1.4vh}.tv-cards,.tv-next{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.tv-cards{gap:.6vh}.tv-cards li{background:var(--tv-panel);box-shadow:inset 4px 0 0 var(--tone);border-radius:8px;align-items:center;gap:.9em;padding:1vh .9em 1vh 1em;display:flex}.tv-card-main{flex:1;min-width:0}.tv-card-main strong{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;line-height:1.22;display:-webkit-box;overflow:hidden}.tv-card-main small{color:var(--tv-ink-2);white-space:nowrap;text-overflow:ellipsis;margin-top:.15em;font-size:.85em;display:block;overflow:hidden}.tv-days{flex-direction:column;flex:none;align-items:center;font-size:1.35em;font-weight:650;line-height:1.05;display:flex}.tv-days small{color:var(--tv-ink-2);font-size:.55em;font-weight:400}.tv-none{color:var(--tv-ink-2);box-shadow:none!important}.tv-next li{border-bottom:1px solid var(--tv-line);align-items:center;gap:.7em;padding:.75vh .2em;display:flex}.tv-next li:last-child{border-bottom:0}.tv-next-date{width:3.6em;color:var(--tv-ink-2);white-space:nowrap;flex:none;font-size:.88em}.tv-next-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:.95em;overflow:hidden}.tv-swatch{border-radius:3px;flex:none;width:.72em;height:.72em;display:inline-block}.tv-foot{color:var(--tv-ink-2);flex:none;align-items:center;gap:2vw;font-size:.86em;display:flex}.tv-legend{flex-wrap:wrap;flex:1;gap:.25em 1.3em;min-width:0;display:flex}.tv-legend span{white-space:nowrap;align-items:center;gap:.5em;display:inline-flex}.tv-dots{flex:none;gap:7px;display:flex}.tv-dot{background:#ffffff29;border-radius:50%;width:8px;height:8px}.tv-dot.on{background:var(--tv-ink)}.tv-rotation{background:var(--tv-accent);opacity:.7;height:2px;transition:width .25s linear;position:absolute;bottom:0;left:0}.tv-controls{opacity:0;pointer-events:none;z-index:5;background:#000c;border-radius:8px;gap:2px;padding:4px;font-size:14px;transition:opacity .2s;display:flex;position:absolute;bottom:3vh;left:50%;transform:translate(-50%)}.tv-chrome .tv-controls{opacity:1;pointer-events:auto}.tv-controls button,.tv-controls a{color:#fff;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:5px;padding:6px 12px;text-decoration:none}.tv-controls button:hover,.tv-controls a:hover{background:#ffffff26}.page-pad{flex:1;min-height:0;padding:16px 20px 40px;overflow:auto}.page-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.page-head h1{font-size:19px}.notice{border-radius:var(--radius);color:#5f4a1d;background:#fbf7ef;border:1px solid #ecdfc7;margin-bottom:12px;padding:8px 12px}.kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin-bottom:14px;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:2px;padding:10px 14px;display:flex}.kpi span{color:var(--ink-2);font-size:12px}.kpi strong{font-size:24px;font-weight:600;line-height:1.15}.kpi small{font-size:12px}.tabs{border-bottom:1px solid var(--line-strong);gap:2px;margin-bottom:-1px;display:flex;position:relative;overflow-x:auto}.tabs button{cursor:pointer;color:var(--ink-2);white-space:nowrap;background:0 0;border:1px solid #0000;border-bottom:0;border-radius:4px 4px 0 0;padding:7px 12px}.tabs button.on{background:var(--surface);border-color:var(--line-strong);color:var(--ink);font-weight:600;position:relative;top:1px}.table-wrap{background:var(--surface);border:1px solid var(--line);overflow-x:auto}.table-filter{border-bottom:1px solid var(--line);padding:8px}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;color:var(--ink-3);border-bottom:1px solid var(--line-strong);white-space:nowrap;padding:7px 10px;font-size:11px;font-weight:500}.data-table td{border-bottom:1px solid #eff1f3;padding:5px 10px}.data-table tbody tr:hover{background:#f8f9fa}.data-table .num{text-align:right;white-space:nowrap}.data-table input:not([type=color],[type=checkbox]),.data-table select{width:100%;min-width:110px}.row-project td{background:#f1f3f5;font-weight:700}.row-project a{text-decoration:none}.row-project a:hover{text-decoration:underline}.row-group td{font-weight:600}.tree-cell{align-items:center;gap:2px;display:inline-flex}.col-bar{width:26%;min-width:180px}.bullet{background:0 0;height:10px;position:relative}.bullet-planned{background:#e3e6ea;border-radius:1px;height:6px;position:absolute;top:2px;left:0}.bullet-fill{background:var(--accent);border-radius:1px 2px 2px 1px;height:6px;position:absolute;top:2px;left:0}.bullet-tick{background:var(--ink);width:2px;height:10px;margin-left:-1px;position:absolute;top:0}.bar-key{align-items:center;gap:4px;font-weight:400;display:inline-flex}.key-fill{background:var(--accent);width:12px;height:6px;display:inline-block}.key-tick{background:var(--ink);width:2px;height:10px;margin-left:8px;display:inline-block}.project-hours{white-space:nowrap;margin-right:10px;display:inline-block}.page-settings{flex-direction:column;gap:12px;display:flex}.page-settings .page-head{margin-bottom:0}.card{background:var(--surface);border:1px solid var(--line);border-radius:6px;width:100%;max-width:1100px;padding:14px 16px}.card h2{font-size:14px}.card-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.card-note{color:var(--ink-2);margin:4px 0 10px}.card>h2+.form-grid{margin-top:10px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;display:grid}.link-cell{white-space:nowrap}.button-row{flex-wrap:wrap;gap:6px;display:flex}.form-error{color:var(--crit);margin-top:8px}@media (width<=760px){.toolbar{padding:6px 8px}.toolbar .edit-hint,.status-numbers{display:none}.project-select{flex:100%;max-width:100%}.page-pad{padding:12px 12px 32px}.user-name{display:none}.topbar{gap:10px}}.te{background:var(--bg);-webkit-overflow-scrolling:touch;flex:1;min-height:0;font-size:16px;overflow:auto}.te-head{z-index:3;min-height:60px;padding:max(8px, env(safe-area-inset-top)) 16px 8px;background:var(--ink);color:#fff;align-items:center;gap:10px;display:flex;position:sticky;top:0}.te-back{color:#fff;cursor:pointer;background:0 0;border:0;flex:none;width:44px;height:44px;margin-left:-10px;font-size:22px}.te-title{flex-direction:column;flex:1;min-width:0;display:flex}.te-title small{color:#b9c2cb;font-size:12px}.te-title strong{font-size:19px;font-weight:600}.te-total{background:#ffffff21;border-radius:6px;flex:none;align-items:baseline;gap:3px;padding:4px 10px;display:flex}.te-total strong{font-size:18px}.te-total small{color:#d3dae0;font-size:12px}.te-body{max-width:560px;padding:14px 16px calc(32px + env(safe-area-inset-bottom));flex-direction:column;gap:8px;margin:0 auto;display:flex}.te-body h2{color:var(--ink-2);margin:12px 0 0;font-size:13px;font-weight:600}.te-chips{scrollbar-width:none;gap:6px;margin:0 -16px;padding:0 16px 2px;display:flex;overflow-x:auto}.te-chip{background:var(--surface);border:1px solid var(--line-strong);cursor:pointer;white-space:nowrap;border-radius:20px;flex:none;align-items:center;height:40px;padding:0 14px;font-size:14px;display:flex;position:relative}.te-chip.on{background:var(--ink);border-color:var(--ink);color:#fff}.te-chip-date input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.te-card{text-align:left;background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:8px;align-items:center;gap:12px;width:100%;min-height:62px;padding:10px 14px;display:flex}.te-card:active{background:#eef1f3}.te-card-compact{min-height:56px}.te-card-general{border-style:dashed;border-color:var(--line-strong);background:0 0}.te-card-main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.te-card-main strong{font-size:15px;font-weight:600;line-height:1.25}.te-card-main small{color:var(--ink-2);font-size:13px}.te-arrow{color:var(--ink-3);flex:none;font-size:24px}.te-crumb{color:var(--ink-2);font-size:13px;line-height:1.4}.te-crumb span{color:var(--ink-3);margin:0 2px}.te-entries{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:0;padding:0;list-style:none}.te-entries li{border-bottom:1px solid #eff1f3;align-items:center;gap:10px;padding:8px 6px 8px 14px;display:flex}.te-entries li:last-child{border-bottom:0}.te-entry-hours{flex:none;font-weight:700}.te-remove{width:40px;height:40px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;flex:none;font-size:14px}.te-demo{color:var(--ink-3);text-align:center;margin-top:14px;font-size:12px}.te-hours{gap:14px}.te-stepper{justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex}.te-stepper button{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;touch-action:manipulation;border-radius:50%;flex:none;width:72px;height:72px;font-size:30px}.te-stepper button:active{background:#e9ecef}.te-stepper output{flex-direction:column;flex:1;align-items:center;display:flex}.te-stepper strong{font-size:64px;font-weight:600;line-height:1}.te-stepper small{color:var(--ink-2);font-size:15px}.te-presets{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.te-presets button{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;touch-action:manipulation;border-radius:8px;height:52px;font-size:18px;font-weight:600}.te-presets button.on{background:var(--ink);border-color:var(--ink);color:#fff}.te-note{color:var(--ink-2);flex-direction:column;gap:4px;font-size:13px;display:flex}.te-note input{height:46px;color:var(--ink);border-radius:8px;padding:0 12px;font-size:16px}.te-save{background:var(--good);color:#fff;cursor:pointer;border:0;border-radius:10px;height:58px;font-size:18px;font-weight:600;position:sticky;bottom:12px}.te-toast{left:12px;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:5;background:var(--ink);color:#fff;border-radius:8px;align-items:center;gap:10px;max-width:536px;margin:0 auto;padding:10px 8px 10px 14px;font-size:14px;display:flex;position:fixed;box-shadow:0 6px 20px #0000004d}.te-toast span{flex:1;min-width:0}.te-toast button{color:#f2a33a;cursor:pointer;background:0 0;border:0;flex:none;height:40px;padding:0 10px;font-size:14px;font-weight:600}.te-unknown{text-align:center;padding-top:60px}.export{background:#d9dcdf;flex:1;min-height:0;overflow:auto}.export-actions{z-index:2;background:var(--surface);border-bottom:1px solid var(--line-strong);align-items:center;gap:10px;padding:8px 14px;display:flex;position:sticky;top:0}.sheet{color:#000;background:#fff;width:min(1560px,100% - 24px);margin:16px auto;padding:22px 26px;font-size:9.5px;box-shadow:0 2px 14px #0000002e}.sheet-head{grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:10px;display:grid}.sheet-company{font-size:17px;font-weight:700}.sheet-head h1{font-size:22px;font-weight:400}.sheet-period{text-align:right;font-size:11px}.sheet-grid{border:1px solid #000}.sg-head{border-bottom:1px solid #000;display:flex}.sg-left{border-right:1px solid #000;flex:none;align-items:center;width:34%;display:flex;overflow:hidden}.sg-track{flex:1;min-width:0;position:relative}.sg-num{text-align:right;color:#444;flex:none;width:24px;padding-right:4px}.sg-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;padding-left:2px;overflow:hidden}.sg-start{text-align:right;white-space:nowrap;flex:none;width:56px;font-weight:400}.sg-dur{text-align:right;flex:none;width:36px;padding-right:4px;font-weight:400}.sg-axis{height:30px}.sg-months,.sg-weeks{height:15px;position:relative}.sg-months{border-bottom:1px solid #999}.sg-months span,.sg-weeks span{white-space:nowrap;border-left:1px solid #999;padding:2px;position:absolute;top:0;bottom:0;overflow:hidden}.sg-row{break-inside:avoid;border-bottom:1px solid #e3e3e3;height:13.5px;display:flex}.sg-section,.sg-project{font-size:10px;font-weight:700}.sg-weekend{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#eeeef2;position:absolute;top:0;bottom:0}.sg-bar{-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1px solid;height:9px;position:absolute;top:2px;overflow:hidden}.sg-bar i{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fffc;position:absolute;top:0;bottom:0}.sg-group{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#1f2d3d;height:4px;position:absolute;top:4px}.sg-label{white-space:nowrap;position:absolute;top:1px}.sheet-legend{flex-wrap:wrap;gap:3px 12px;margin-top:8px;font-size:10px;display:flex}.sheet-legend .chip{-webkit-print-color-adjust:exact;print-color-adjust:exact}.sheet-foot{grid-template-columns:1fr 1fr 1fr;gap:18px;margin-top:10px;font-size:10.5px;display:grid}.sheet-foot dl{grid-template-columns:90px 1fr;gap:1px 8px;margin:0;display:grid}.sheet-foot dt{color:#444}.sheet-foot dd{margin:0}.sheet-sign{border-bottom:1px solid #000;min-height:44px}@media print{@page{size:A3 landscape;margin:8mm}html,body,#app,.app,.export{background:#fff;height:auto;display:block;overflow:visible}.no-print{display:none!important}.sheet{width:100%;box-shadow:none;margin:0;padding:0}}
