.btn{justify-content:center;align-items:center;gap:var(--space-sm);min-height:var(--tap-min);padding:0 var(--space-md);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:var(--text-label);line-height:var(--lh-label);font-weight:var(--weight-semi);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);border:1px solid #0000;display:inline-flex;position:relative}.btn--phone{min-height:var(--tap-min)}.btn--phone.btn--primary{min-height:var(--tap-primary)}.btn--desktop{min-height:40px}.btn--primary{background:var(--primary);color:var(--surface);border-color:var(--primary)}.btn--secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn--quiet{color:var(--accent);background:0 0}.btn--destructive{background:var(--danger);color:var(--surface);border-color:var(--danger)}@media (hover:hover){.btn--primary:hover:not(:disabled):not([aria-disabled=true]){background:var(--accent);border-color:var(--accent)}.btn--secondary:hover:not(:disabled):not([aria-disabled=true]){background:var(--bg)}.btn--quiet:hover:not(:disabled):not([aria-disabled=true]){background:var(--fill-off)}}.btn:disabled,.btn[aria-disabled=true]{background:var(--fill-off);color:var(--ink-muted);border-color:var(--fill-off);cursor:not-allowed}.btn--loading{cursor:progress}.btn--loading .btn__label{visibility:hidden}.btn__bar{left:var(--space-md);right:var(--space-md);background:var(--line);height:12px;margin-top:-6px;position:absolute;top:50%}.field{gap:var(--space-xs);flex-direction:column;display:flex}.field__label{font-size:var(--text-label);line-height:var(--lh-label);font-weight:var(--weight-semi);color:var(--ink)}.field__hint{font-size:var(--text-label);color:var(--ink-muted);margin:0}.field__error{align-items:center;gap:var(--space-xs);font-size:var(--text-label);font-weight:var(--weight-semi);color:var(--danger);margin:0;display:flex}.input{width:100%;font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--lh-body);color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:0 var(--space-md)}.input--phone{min-height:var(--tap-min)}.input--desktop{min-height:40px}.input--invalid{border:2px solid var(--danger)}.select{display:block;position:relative}.select__control{appearance:none;padding-right:var(--space-2xl)}.select__chevron{right:var(--space-md);pointer-events:none;color:var(--ink-muted);margin-top:-10px;position:absolute;top:50%}.textarea{padding-top:var(--space-sm);padding-bottom:var(--space-sm);resize:none}.tickbox{align-items:center;gap:var(--space-sm);min-height:var(--tap-min);cursor:pointer;display:inline-flex}.tickbox__input{opacity:0;width:var(--tap-min);height:var(--tap-min);cursor:pointer;margin:0;position:absolute}.tickbox__box{border:2px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);width:24px;height:24px;color:var(--surface);transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);place-items:center;margin:12px;display:grid}.tickbox__tick{opacity:0;transition:opacity var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);transform:scale(.6)}.tickbox__input:checked+.tickbox__box{background:var(--accent);border-color:var(--accent)}.tickbox__input:checked+.tickbox__box .tickbox__tick{opacity:1;transform:scale(1)}.tickbox__input:focus-visible+.tickbox__box{outline:3px solid var(--accent);outline-offset:2px}.tickbox__input:disabled+.tickbox__box{background:var(--fill-off);border-color:var(--fill-off)}.tickbox__label{font-size:var(--text-body)}.stepper{gap:var(--space-xs);flex-direction:column;display:flex}.stepper__label{font-size:var(--text-label);line-height:var(--lh-label);font-weight:var(--weight-semi);color:var(--ink)}.stepper__row{align-items:center;gap:var(--space-sm);grid-template-columns:56px 1fr 56px;display:grid}.stepper__btn{width:56px;height:56px;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;place-items:center;padding:0;display:grid}.stepper__btn:disabled{background:var(--fill-off);color:var(--ink-muted);border-color:var(--fill-off);cursor:not-allowed}.stepper__value{text-align:center;font-family:var(--font-display);font-size:var(--text-display);line-height:var(--lh-display);font-weight:var(--weight-semi);color:var(--accent);padding:var(--space-sm) 0;border-radius:var(--radius-sm)}.hours{min-height:24px;font-weight:var(--weight-semi);color:var(--ink)}.hours__error{color:var(--danger)}.card{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-1)}.card--phone{padding:var(--space-md)}.card--desktop{padding:var(--space-lg)}.card__title{font-size:var(--text-heading);margin-bottom:var(--space-sm)}.chip--teal{--c:var(--proj-teal);--c-tint:var(--proj-teal-tint)}.chip--amber{--c:var(--proj-amber);--c-tint:var(--proj-amber-tint)}.chip--violet{--c:var(--proj-violet);--c-tint:var(--proj-violet-tint)}.chip--rose{--c:var(--proj-rose);--c-tint:var(--proj-rose-tint)}.chip--olive{--c:var(--proj-olive);--c-tint:var(--proj-olive-tint)}.chip--brown{--c:var(--proj-brown);--c-tint:var(--proj-brown-tint)}.chip{align-items:center;gap:var(--space-sm);max-width:100%;height:28px;padding:0 var(--space-sm);border-radius:var(--radius-pill);font-size:var(--text-label);line-height:var(--lh-label);font-weight:var(--weight-semi);color:var(--ink);white-space:nowrap;display:inline-flex}.chip--project{background:var(--c-tint);border-left:4px solid var(--c);border-radius:var(--radius-sm)}.chip--solid{background:var(--c);height:auto;color:var(--surface);border-left:0;border-radius:7px;justify-content:center;padding:3px 8px;font-size:12px;line-height:1.4}.chip__dot{background:var(--c);border-radius:50%;flex:none;width:12px;height:12px}.chip__name{text-overflow:ellipsis;min-width:0;overflow:hidden}.chip--off{background:var(--fill-off);border:1px solid var(--line-strong)}.chip--missed{border:1px dashed var(--line-strong);color:var(--ink-muted);background:0 0}.chip--status{border:1px solid var(--line-strong);background:var(--surface)}.chip--status-ok{border-color:var(--ok);color:var(--ok)}.chip--status-waiting{border-color:var(--accent);color:var(--accent)}.chip--status-flag{border:1px dashed var(--danger);background:var(--fill-danger);color:var(--danger)}.chip--status-neutral{border-color:var(--line);background:var(--bg);color:var(--ink-muted)}.skel{display:block}.skel--line{width:100%;height:16px}.skel--block{border-radius:var(--radius-md);width:100%;height:96px}.skel--chip{border-radius:var(--radius-sm);width:96px;height:28px}.skel--tile{border-radius:var(--radius-md);width:100%;height:96px}.skel--tableRow{width:100%;height:var(--row-dense);border-radius:var(--radius-sm)}.table-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);position:relative}.table-box:focus-visible{outline-offset:0}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--text-label);line-height:var(--lh-label);font-variant-numeric:tabular-nums}.table th,.table td{height:var(--row-dense);text-align:center;vertical-align:middle;background:var(--surface);border-bottom:1px solid var(--line);font-weight:var(--weight-regular);white-space:nowrap;padding:8px}.table th{z-index:2;font-size:12px;font-weight:var(--weight-semi);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);border-bottom:1px solid var(--line-strong);position:sticky;top:0}.table tbody tr:last-child td{border-bottom:0}.table--left th,.table--left td{text-align:left}.table th:first-child,.table td:first-child{min-width:var(--col-first);text-align:left}.table th:not(:first-child),.table td:not(:first-child){min-width:var(--col-day)}.table--sticky-last th:last-child,.table--sticky-last td:last-child{min-width:var(--col-last)}.table--sticky-first th:first-child,.table--sticky-first td:first-child{z-index:1;border-right:1px solid var(--line);position:sticky;left:0}.table--sticky-first th:first-child{z-index:3}.table--sticky-last th:last-child,.table--sticky-last td:last-child{z-index:1;border-left:1px solid var(--line);position:sticky;right:0}.table--sticky-last th:last-child{z-index:3}.table tfoot td{font-weight:var(--weight-semi)}@media (hover:hover){.table tbody tr:hover td{background:var(--bg)}}.mcal{gap:var(--space-sm);min-width:0;font-family:var(--font-sans);color:var(--ink);display:grid}.mcal__head{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.mcal__title{font-family:var(--font-display);font-weight:var(--weight-semi);font-size:var(--text-body);text-align:center;flex:1;margin:0}.mcal__arrow{width:var(--tap-min);height:var(--tap-min);color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-md);cursor:pointer;flex:none;place-items:center;padding:0;display:grid}.mcal__arrow:disabled{color:var(--line-strong);border-color:var(--line);cursor:default}.mcal__grid{gap:var(--space-xs);touch-action:pan-y;grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.mcal__dow{text-align:center;color:var(--ink-muted);font-size:var(--text-label);line-height:var(--lh-label);font-weight:var(--weight-semi)}.mcal__gap{min-width:0}.mcal__day{min-width:0;min-height:var(--tap-min);font-family:var(--font-sans);font-size:var(--text-body);font-weight:var(--weight-semi);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);cursor:pointer;place-items:center;padding:0;display:grid;position:relative}.mcal__day.is-on{border-color:var(--ink);background:var(--fill-off)}.mcal__day.is-on .mcal__tick{color:var(--ink)}.mcal__day:disabled{background:var(--bg);color:var(--ink-muted);cursor:default}.mcal__day.is-logged{border-color:var(--line)}.mcal__tick{right:var(--space-xs);bottom:var(--space-xs);color:var(--line-strong);line-height:0;position:absolute}@keyframes enter-phone{0%{opacity:0;transform:translateX(calc(12px * var(--travel,1)))}to{opacity:1;transform:none}}@keyframes enter-desktop{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes enter-fade{0%{opacity:0}to{opacity:1}}@keyframes enter-sheet{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes enter-panel{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.page-transition--phone{animation:enter-phone var(--dur-screen) var(--ease-out) both}.page-transition--desktop{animation:enter-desktop var(--dur-base) var(--ease-out) both}.phone-shell{background:var(--surface);width:100%;max-width:100vw;height:100dvh;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-top:env(safe-area-inset-top);grid-template-rows:auto minmax(0,1fr) auto auto;margin:0 auto;display:grid;position:relative;overflow:hidden}@media (width>=481px){.phone-shell{border-left:1px solid var(--line-strong);border-right:1px solid var(--line-strong);max-width:430px}}.phone-shell__top{align-items:center;gap:var(--space-sm);min-height:56px;padding:0 var(--space-md);border-bottom:1px solid var(--line);display:flex}.phone-shell__title{font-size:var(--text-heading);line-height:var(--lh-heading);letter-spacing:-.01em}.phone-shell__back{width:var(--tap-min);height:var(--tap-min);margin-left:calc(var(--space-sm) * -1);color:var(--ink);border-radius:var(--radius-md);background:0 0;border:0;place-items:center;display:grid}.phone-shell__main{overscroll-behavior:contain;min-width:0;min-height:0;padding:var(--space-md);overflow:hidden auto}.phone-shell__action{padding:var(--space-sm) var(--space-md);border-top:1px solid var(--line);background:var(--surface)}.phone-shell__nav{min-height:64px;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--line);background:var(--surface);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.phone-shell__item{min-height:var(--tap-min);color:var(--ink-muted);font-size:var(--text-label);line-height:var(--lh-label);font-weight:var(--weight-semi);flex-direction:column;justify-content:center;align-items:center;gap:2px;text-decoration:none;display:flex}.phone-shell__item.is-active{color:var(--accent)}.phone-shell__top--eyebrow{justify-content:space-between;gap:var(--space-md);min-height:48px;font-size:12px;line-height:1.4;font-weight:var(--weight-semi);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);border-bottom:0}.phone-shell__nav--tabs{min-height:0;padding:var(--space-sm) var(--space-sm) calc(var(--space-sm) + env(safe-area-inset-bottom));gap:3px}.phone-shell__tab{min-height:var(--tap-min);border-radius:var(--radius-sm);color:var(--ink-muted);font-size:var(--text-label);line-height:var(--lh-label);font-weight:var(--weight-semi);place-items:center;padding:0 2px;text-decoration:none;display:grid}.phone-shell__tab.is-active{background:var(--primary);color:var(--surface)}button.phone-shell__item{cursor:pointer;background:0 0;border:0;font-family:inherit}.phone-shell__sheet-wrap{z-index:20;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0}.phone-shell__scrim{animation:enter-fade var(--dur-base) var(--ease-out) both;background:#0b0f1466;position:absolute;inset:0}.phone-shell__sheet{background:var(--surface);border-top:1px solid var(--line);border-radius:var(--radius-md) var(--radius-md) 0 0;max-height:85%;box-shadow:var(--shadow-2);padding-bottom:env(safe-area-inset-bottom);animation:enter-sheet var(--dur-base) var(--ease-out) both;flex-direction:column;display:flex;position:relative}.phone-shell__sheet-head{justify-content:space-between;align-items:center;gap:var(--space-sm);min-height:56px;padding:0 var(--space-md);border-bottom:1px solid var(--line);display:flex}.phone-shell__sheet-head .phone-shell__back{margin-left:0;margin-right:calc(var(--space-sm) * -1)}.phone-shell__sheet-title{font-size:var(--text-heading);line-height:var(--lh-heading)}.phone-shell__sheet-title:focus{outline:none}.phone-shell__sheet-body{padding:var(--space-sm) var(--space-md) var(--space-md);gap:var(--space-xs);display:grid;overflow:hidden auto}.phone-shell__sheet-link{min-height:var(--tap-min);padding:0 var(--space-xs);color:var(--ink);font-weight:var(--weight-semi);border-bottom:1px solid var(--line);align-items:center;text-decoration:none;display:flex}.phone-shell__sheet-link.is-active{color:var(--accent)}.phone-shell__sheet-foot{margin-top:var(--space-md)}
