:root{--tb-surface-bg:#f2eee7;--tb-surface-bg-soft:#f8f5ef;--tb-surface-paper:#fffdfa;--tb-surface-paper-muted:#fbf7f0;--tb-surface-ink:#1f201d;--tb-surface-ink-soft:#62605a;--tb-surface-ink-faint:#9b958a;--tb-surface-line:#ddd6ca;--tb-surface-line-strong:#c9c0b3;--tb-surface-teal:#2b7a6a;--tb-surface-teal-soft:rgba(43,122,106,0.1);--tb-surface-teal-deep:#214f47;--tb-surface-amber:#cb6f20;--tb-surface-amber-soft:rgba(203,111,32,0.12);--tb-surface-green:#23734f;--tb-surface-green-soft:rgba(35,115,79,0.12);--tb-surface-red:#b6504d;--tb-surface-red-soft:rgba(182,80,77,0.12);--tb-surface-radius-sm:8px;--tb-surface-radius-md:12px;--tb-surface-radius-lg:18px;--tb-surface-shadow-sm:0 1px 2px rgba(26,25,22,0.06),0 4px 10px rgba(26,25,22,0.04);--tb-surface-font-body:var(--font-manrope),"Manrope",-apple-system,BlinkMacSystemFont,sans-serif;--tb-surface-font-display:"Bitter",Georgia,serif;--tb-surface-font-mono:var(--font-jetbrains),"JetBrains Mono",monospace}.tb-surface{color:var(--tb-surface-ink);font-family:var(--tb-surface-font-body)}.tb-surface *,.tb-surface :after,.tb-surface :before{box-sizing:border-box}.tb-surface .login-error{font-size:13px;color:var(--tb-surface-red);background:var(--tb-surface-red-soft);border-radius:var(--tb-surface-radius-sm);padding:10px 14px}.tb-surface .board-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.tb-surface .board-header__left{display:flex;align-items:baseline;flex-wrap:wrap;gap:12px}.tb-surface .board-title{margin:0;font-family:var(--tb-surface-font-display);font-size:24px;font-weight:700;color:var(--tb-surface-ink)}.tb-surface .board-period{font-size:13px;color:var(--tb-surface-ink-soft)}.tb-surface .board-header__nav{display:flex;gap:6px}.tb-surface .summary-bar{display:flex;align-items:center;gap:24px;margin-bottom:20px;padding:14px 20px;flex-wrap:wrap;background:var(--tb-surface-paper);border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-md);box-shadow:var(--tb-surface-shadow-sm)}.tb-surface .summary-item{display:flex;flex-direction:column;gap:2px}.tb-surface .summary-item--status{margin-left:auto}.tb-surface .summary-item--actions{display:flex;flex-wrap:wrap;gap:8px}.tb-surface .summary-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tb-surface-ink-faint)}.tb-surface .summary-value{font-family:var(--tb-surface-font-mono);font-size:16px;font-weight:600;color:var(--tb-surface-ink)}.tb-surface .action-btn,.te-dialog__btn{border:none;border-radius:var(--tb-surface-radius-sm);font-family:var(--tb-surface-font-body);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease}.tb-surface .action-btn{padding:8px 18px}.tb-surface .action-btn--teal{background:var(--tb-surface-teal);color:#fff}.tb-surface .action-btn--teal:hover{background:var(--tb-surface-teal-deep)}.tb-surface .action-btn--amber{background:var(--tb-surface-amber);color:#fff}.tb-surface .action-btn--amber:hover{background:#a85a1a}.tb-surface .week-nav-btn{height:36px;padding:0 12px;display:grid;place-items:center;background:var(--tb-surface-paper);border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-sm);color:var(--tb-surface-ink-soft);font-family:var(--tb-surface-font-body);font-size:13px;cursor:pointer;transition:all .12s ease}.tb-surface .week-nav-btn:hover{background:var(--tb-surface-bg-soft);border-color:var(--tb-surface-line-strong);color:var(--tb-surface-ink)}.tb-surface .week-nav-btn--today{font-weight:600;color:var(--tb-surface-teal)}.tb-surface .week-nav-btn--today:hover{color:var(--tb-surface-teal-deep)}.tb-surface .week-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) 56px 56px;gap:10px;align-items:stretch}.tb-surface .day-card{min-height:220px;display:flex;flex-direction:column;gap:10px;padding:12px;background:var(--tb-surface-paper);border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-md);box-shadow:var(--tb-surface-shadow-sm);transition:box-shadow .15s ease,border-color .15s ease}.tb-surface .day-card:hover{border-color:var(--tb-surface-line-strong)}.tb-surface .day-card--today{border-color:var(--tb-surface-teal);box-shadow:0 0 0 1px rgba(43,122,106,.24),var(--tb-surface-shadow-sm)}.tb-surface .day-header{display:flex;flex-direction:column;gap:6px;margin-bottom:2px;padding-bottom:8px;border-bottom:1px solid var(--tb-surface-line)}.tb-surface .day-header__top{display:flex;align-items:center;gap:6px}.tb-surface .day-name{font-size:12px;font-weight:700;color:var(--tb-surface-ink);text-transform:uppercase}.tb-surface .day-date{font-size:11px;color:var(--tb-surface-ink-faint)}.tb-surface .day-total{margin-left:auto;font-family:var(--tb-surface-font-mono);font-size:12px;font-weight:700;color:var(--tb-surface-teal)}.tb-surface .day-total-of{color:var(--tb-surface-ink-faint);font-weight:400}.tb-surface .day-progress{width:100%;height:4px;overflow:hidden;border-radius:999px;background:var(--tb-surface-bg-soft)}.tb-surface .day-progress__fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--tb-surface-teal),#43b09a);transition:width .3s ease}.tb-surface .day-deviation{align-self:flex-end;font-family:var(--tb-surface-font-mono);font-size:10px;font-weight:700;letter-spacing:.02em}.tb-surface .day-deviation--under{color:var(--tb-surface-red)}.tb-surface .day-deviation--over{color:var(--tb-surface-amber)}.tb-surface .day-lane{display:flex;flex:1;flex-direction:column;gap:6px}.tb-surface .day-lane-header{margin-bottom:2px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tb-surface-teal)}.tb-surface .day-lane-header--plan{margin-top:8px;padding-top:8px;border-top:1px dashed var(--tb-surface-line);color:var(--tb-surface-amber)}.tb-surface .day-empty{display:flex;align-items:center;justify-content:center;flex:1;font-size:11px;color:var(--tb-surface-ink-faint);font-style:italic}.tb-surface .day-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:8px}.tb-surface .day-action-btn{flex:1;min-width:128px;padding:7px 10px;border:1px dashed var(--tb-surface-line-strong);border-radius:var(--tb-surface-radius-sm);background:transparent;color:var(--tb-surface-ink-soft);font-family:var(--tb-surface-font-body);font-size:11px;font-weight:700;cursor:pointer;transition:all .12s ease}.tb-surface .day-action-btn:hover{background:var(--tb-surface-teal-soft);border-color:var(--tb-surface-teal);color:var(--tb-surface-teal)}.tb-surface .day-action-btn--quick{flex:0 0 auto;min-width:auto}.tb-surface .day-action-btn--plan{border-color:rgba(203,111,32,.32);color:var(--tb-surface-amber)}.tb-surface .day-action-btn--plan:hover{background:var(--tb-surface-amber-soft);border-color:var(--tb-surface-amber);color:var(--tb-surface-amber)}.tb-surface .day-weekend-strip{min-height:220px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 4px;background:var(--tb-surface-paper-muted);border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-md);box-shadow:var(--tb-surface-shadow-sm)}.tb-surface .day-weekend-name{font-size:12px;font-weight:700;color:var(--tb-surface-ink-soft);text-transform:uppercase;writing-mode:vertical-rl;text-orientation:mixed}.tb-surface .day-weekend-date,.tb-surface .day-weekend-total{font-size:10px;writing-mode:vertical-rl;text-orientation:mixed}.tb-surface .day-weekend-date{color:var(--tb-surface-ink-faint)}.tb-surface .day-weekend-total{font-family:var(--tb-surface-font-mono);font-weight:700;color:var(--tb-surface-teal)}.tb-surface .day-weekend-badge{width:20px;height:20px;display:grid;place-items:center;border-radius:999px;background:var(--tb-surface-teal-soft);color:var(--tb-surface-teal);font-size:10px;font-weight:700}.tb-surface .entry{padding:8px 10px;border-radius:8px;font-size:12px}.tb-surface .entry--worklog{background:var(--tb-surface-teal-soft);border-left:3px solid var(--tb-surface-teal)}.tb-surface .entry--allocation{background:var(--tb-surface-amber-soft);border-left:3px solid var(--tb-surface-amber)}.tb-surface .entry--confirmed{background:var(--tb-surface-green-soft);border-left-color:var(--tb-surface-green);opacity:.7}.tb-surface .entry--running{animation:tb-surface-pulse-border 2s ease-in-out infinite}@keyframes tb-surface-pulse-border{0%,to{border-left-color:var(--tb-surface-teal)}50%{border-left-color:var(--tb-surface-amber)}}.tb-surface .entry-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.tb-surface .entry-source{font-weight:700;color:var(--tb-surface-ink);min-width:0}.tb-surface .entry-source-btn{padding:0;border:0;background:transparent;text-align:left;text-decoration:underline;text-decoration-color:rgba(31,32,29,.18);text-underline-offset:2px;cursor:pointer}.tb-surface .entry-source-btn:hover{color:var(--tb-surface-teal);text-decoration-color:var(--tb-surface-teal)}.tb-surface .entry-minutes{font-family:var(--tb-surface-font-mono);font-size:11px;font-weight:700;color:var(--tb-surface-ink-soft)}.tb-surface .entry-disposition{display:inline-flex;margin-top:4px;font-size:10px;font-weight:700;letter-spacing:.02em}.tb-surface .entry-comment{margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:var(--tb-surface-ink-soft)}.tb-surface .entry-running-badge{margin-top:4px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tb-surface-amber)}.tb-surface .entry-actions-group{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.tb-surface .entry-action{margin-top:0;padding:5px 9px;border:1px solid transparent;border-radius:6px;background:var(--tb-surface-amber);color:#fff;font-family:var(--tb-surface-font-body);font-size:10px;font-weight:700;cursor:pointer;transition:all .12s ease}.tb-surface .entry-action:hover{background:#a85a1a}.tb-surface .entry-action--secondary{background:transparent;border-color:var(--tb-surface-line-strong);color:var(--tb-surface-ink-soft)}.tb-surface .entry-action--secondary:hover{background:var(--tb-surface-bg-soft)}.tb-surface .entry-action--danger{background:transparent;border-color:rgba(182,80,77,.24);color:var(--tb-surface-red)}.tb-surface .entry-action--danger:hover{background:var(--tb-surface-red-soft)}.te-dialog{border:none;border-radius:var(--tb-surface-radius-md);padding:0;width:min(420px,90vw);min-width:340px;background:var(--tb-surface-paper);box-shadow:0 8px 32px rgba(0,0,0,.18)}.te-dialog::backdrop{background:rgba(31,32,29,.45);backdrop-filter:blur(2px)}.te-dialog__form{display:flex;flex-direction:column;gap:16px;padding:24px;font-family:var(--tb-surface-font-body)}.te-dialog__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.te-dialog__row--single{grid-template-columns:1fr}.te-dialog__title{margin:0 0 4px;font-family:var(--tb-surface-font-display);font-size:18px;font-weight:600;color:var(--tb-surface-ink)}.te-dialog__error{border-radius:var(--tb-surface-radius-sm);padding:10px 12px;font-size:13px;color:var(--tb-surface-red);background:var(--tb-surface-red-soft)}.te-dialog__field{display:flex;flex-direction:column;gap:4px;min-width:0}.te-dialog__label{font-size:13px;font-weight:500;color:var(--tb-surface-ink-soft)}.te-dialog__input{padding:8px 12px;border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-sm);background:var(--tb-surface-bg-soft);color:var(--tb-surface-ink);font-family:var(--tb-surface-font-body);font-size:14px;transition:border-color .15s ease,box-shadow .15s ease}.te-dialog__input--select{appearance:none;padding-right:44px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231f201d' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 16px center;background-repeat:no-repeat;background-size:12px 8px}.te-dialog__input--textarea{min-height:104px;resize:vertical;line-height:1.45}.te-dialog__input:focus{outline:none;border-color:var(--tb-surface-amber);box-shadow:0 0 0 2px rgba(194,120,60,.15)}.te-dialog__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.te-dialog__btn{padding:8px 18px}.te-dialog__btn--cancel{background:var(--tb-surface-bg);color:var(--tb-surface-ink-soft)}.te-dialog__btn--cancel:hover{background:#e8e4dc}.te-dialog__btn--submit{background:var(--tb-surface-amber);color:#fff}.te-dialog__btn--submit:hover{background:#a85a1a}.tb-review-queue{display:flex;flex-direction:column;gap:12px;max-width:350px}.review-queue__header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.review-queue__title{margin:0;font-family:var(--tb-surface-font-display);font-size:18px;font-weight:700;color:var(--tb-surface-ink)}.review-queue__period-nav{display:flex;align-items:center;gap:6px}.review-queue__period-label{font-size:13px;font-weight:600;color:var(--tb-surface-ink-soft);white-space:nowrap}.review-queue__loading{padding:40px 0;text-align:center;color:var(--tb-surface-ink-faint);font-size:13px}.review-queue__binding-notice{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--tb-surface-radius-sm);background:var(--tb-surface-amber-soft);color:var(--tb-surface-amber);font-size:12px;font-weight:600}.review-queue__binding-icon{font-size:14px}.review-queue__empty{padding:32px 0;text-align:center;color:var(--tb-surface-ink-faint);font-size:13px;font-style:italic}.review-queue__list{display:flex;flex-direction:column;gap:6px}.review-queue__item{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:var(--tb-surface-paper);border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-sm);cursor:pointer;text-align:left;font-family:var(--tb-surface-font-body);transition:all .15s ease}.review-queue__item:hover{border-color:var(--tb-surface-line-strong);box-shadow:var(--tb-surface-shadow-sm)}.review-queue__item--selected{border-color:var(--tb-surface-teal);box-shadow:0 0 0 1px rgba(43,122,106,.2)}.review-queue__item-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.review-queue__item-client{font-size:13px;font-weight:700;color:var(--tb-surface-ink)}.review-queue__item-badge{min-width:24px;height:22px;display:grid;place-items:center;padding:0 6px;border-radius:999px;background:var(--tb-surface-teal-soft);color:var(--tb-surface-teal);font-family:var(--tb-surface-font-mono);font-size:11px;font-weight:700}.review-queue__item-contract{font-size:12px;color:var(--tb-surface-ink-soft)}.review-queue__item-stats{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--tb-surface-ink-faint)}.review-queue__item-sep{color:var(--tb-surface-line-strong)}.review-queue__item-inactive{color:var(--tb-surface-amber)}.review-queue__item-tariff{font-size:11px;color:var(--tb-surface-ink-faint)}.tb-review-detail{flex:1;display:flex;flex-direction:column;gap:16px;overflow:auto}.review-detail__header{display:flex;align-items:center;gap:16px}.review-detail__title-group{display:flex;flex-direction:column;gap:2px}.review-detail__title{margin:0;font-family:var(--tb-surface-font-display);font-size:20px;font-weight:700;color:var(--tb-surface-ink)}.review-detail__subtitle{font-size:13px;color:var(--tb-surface-ink-soft)}.review-detail__select-all-bar{display:flex;align-items:center;padding:8px 0;margin-bottom:4px}.review-detail__bulk-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--tb-surface-teal-soft);border:1px solid rgba(43,122,106,.24);border-radius:var(--tb-surface-radius-sm);flex-wrap:wrap}.review-detail__bulk-count{font-size:13px;font-weight:700;color:var(--tb-surface-teal-deep)}.review-detail__bulk-label{font-size:12px;font-weight:600;color:var(--tb-surface-ink-soft)}.review-detail__bulk-error{font-size:12px;color:var(--tb-surface-red);font-weight:600}.review-detail__bulk-success{display:flex;align-items:center;padding:10px 16px;margin-bottom:12px;border-radius:8px;font-size:13px;font-weight:600;color:var(--tb-surface-teal-deep,#0d7a5f);background:color-mix(in srgb,var(--tb-surface-teal-deep,#0d7a5f) 8%,transparent);border:1px solid color-mix(in srgb,var(--tb-surface-teal-deep,#0d7a5f) 20%,transparent);animation:tb-fade-in .2s ease-out}@keyframes tb-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.review-detail__non-actionable-hint{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-top:12px;border-radius:6px;background:var(--tb-surface-bg-soft);border:1px solid var(--tb-surface-border);font-size:12px;color:var(--tb-surface-ink-faint)}.review-detail__hint-icon{font-size:14px}.review-ticket-section{padding:12px 0;border-bottom:1px solid var(--tb-surface-line-strong)}.review-ticket-section:last-child{border-bottom:none}.review-ticket-section__header{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:8px 0 4px;margin-bottom:4px}.review-ticket-section__meta{display:flex;align-items:center;gap:6px;min-width:0}.review-ticket-section__icon{font-size:14px;flex-shrink:0}.review-ticket-section__label{font-size:14px;font-weight:700;color:var(--tb-surface-ink)}.review-ticket-section__link{font-size:14px;font-weight:700;color:var(--tb-surface-teal);text-decoration:none}.review-ticket-section__link:hover{text-decoration:underline}.review-ticket-section__total{flex-shrink:0;font-family:var(--tb-surface-font-mono);font-size:12px;font-weight:700;color:var(--tb-surface-ink-soft);white-space:nowrap}.review-source-group__link{color:var(--tb-surface-teal);text-decoration:none}.review-source-group__link:hover{text-decoration:underline}.review-source-group{padding:12px 0;border-bottom:1px solid var(--tb-surface-line)}.review-source-group:last-child{border-bottom:none}.review-source-group__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:8px}.review-source-group__meta{display:flex;align-items:baseline;gap:14px;min-width:0;flex:1 1 auto;flex-wrap:wrap}.review-source-group__label{font-size:13px;font-weight:700;color:var(--tb-surface-ink);min-width:0}.review-source-group__stats{font-size:12px;color:var(--tb-surface-ink-faint);white-space:nowrap}.review-source-group__actions{margin-left:auto;flex-shrink:0}.review-source-group__shortcut-btn{font-size:11px;padding:3px 10px;border-radius:4px;border:1px solid var(--tb-surface-teal);background:transparent;color:var(--tb-surface-teal);cursor:pointer;transition:all .15s ease}.review-source-group__shortcut-btn:hover:not(:disabled){background:var(--tb-surface-teal-soft)}.review-source-group__shortcut-btn:disabled{opacity:.5;cursor:default;border-color:var(--tb-surface-ink-faint);color:var(--tb-surface-ink-faint)}.review-source-group__table{display:flex;flex-direction:column;gap:1px}.review-row{display:grid;grid-template-columns:32px 68px minmax(140px,.8fr) minmax(160px,1.5fr) 48px 148px minmax(140px,350px) 36px;align-items:center;gap:8px;padding:8px 10px;border-radius:4px;font-size:12px;transition:background .1s ease}.review-row:hover{background:var(--tb-surface-bg-soft)}.review-row--header{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tb-surface-ink-faint);border-bottom:1px solid var(--tb-surface-line);padding-bottom:6px;margin-bottom:2px}.review-row--header:hover{background:transparent}.review-row--disabled{opacity:.55}.review-row--selected{background:var(--tb-surface-teal-soft)}.review-row--selected:hover{background:rgba(43,122,106,.14)}.review-row--reviewed{background:color-mix(in srgb,var(--tb-surface-teal-deep,#0d7a5f) 8%,white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tb-surface-teal-deep,#0d7a5f) 14%,transparent)}.review-row--reviewed:hover{background:color-mix(in srgb,var(--tb-surface-teal-deep,#0d7a5f) 10%,white)}.review-row--reviewed.review-row--selected{background:var(--tb-surface-teal-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tb-surface-teal-deep,#0d7a5f) 18%,transparent)}.review-row__cell{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-self:center}.review-row__cell--check{display:flex;align-items:center;justify-content:center}.review-row__cell--date{font-family:var(--tb-surface-font-mono);font-size:11px;color:var(--tb-surface-ink-soft)}.review-row__cell--user{font-weight:600;color:var(--tb-surface-ink)}.review-row__cell--logged{font-family:var(--tb-surface-font-mono);font-weight:700;color:var(--tb-surface-ink);text-align:center}.review-row__cell--disp{text-align:center}.review-row__cell--decision,.review-row__cell--decision-header{min-width:0;padding-left:12px}.review-row__cell--comment{display:flex;align-items:flex-start;gap:6px;min-width:0;max-width:350px;align-self:center;white-space:normal;word-break:break-word}.review-row__cell--actions{display:flex;align-items:center;gap:4px;justify-content:center}.review-row__cell--decision-header{align-self:center}.review-row__decision-title{display:block;margin-bottom:4px;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tb-surface-ink-faint)}.review-row__decision,.review-row__decision-headings{display:grid;grid-template-columns:52px 60px minmax(0,1fr);gap:8px;min-width:0}.review-row__decision-headings{align-items:end}.review-row__decision-headings span{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--tb-surface-ink-faint);text-align:center}.review-row__decision{align-items:stretch;min-height:100%}.review-row__decision-item{min-width:0;display:flex;flex-direction:column;gap:3px;justify-content:center}.review-row__decision-label{display:none;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--tb-surface-ink-faint)}.review-row__decision-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-row__decision-value--minutes{font-family:var(--tb-surface-font-mono);text-align:center;color:var(--tb-surface-ink-soft)}.review-row__reason-chip{display:inline-flex;align-items:center;max-width:100%;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--tb-surface-bg-soft) 78%,white);color:var(--tb-surface-ink-faint);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-row__reason-chip--active{background:color-mix(in srgb,var(--tb-surface-amber) 12%,white);color:var(--tb-surface-ink-soft)}.review-row__checkbox{width:16px;height:16px;cursor:pointer;accent-color:var(--tb-surface-teal)}.review-row__inline-select{font-family:var(--tb-surface-font-body)}.review-row__inline-input,.review-row__inline-select{width:100%;padding:3px 4px;font-size:11px;border:1px solid var(--tb-surface-line);border-radius:4px;background:var(--tb-surface-paper)}.review-row__inline-input{font-family:var(--tb-surface-font-mono);text-align:right}.review-row__decision--edit .review-row__inline-input{text-align:left}.review-row__decision--edit .review-row__decision-item:not(.review-row__decision-item--reason) .review-row__inline-input{text-align:right}.review-row__cancel-btn,.review-row__edit-btn,.review-row__save-btn{padding:2px 6px;border:1px solid var(--tb-surface-line);border-radius:4px;background:transparent;cursor:pointer;font-size:12px;transition:all .12s ease}.review-row__edit-btn:hover{background:var(--tb-surface-teal-soft);border-color:var(--tb-surface-teal);color:var(--tb-surface-teal)}.review-row__save-btn{background:var(--tb-surface-teal);border-color:var(--tb-surface-teal);color:#fff}.review-row__cancel-btn:hover{background:var(--tb-surface-red-soft);color:var(--tb-surface-red)}.review-row__error{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--tb-surface-red);color:#fff;font-size:11px;font-weight:700;cursor:help}.review-row__status-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 6px;border-radius:4px;background:var(--tb-surface-bg);color:var(--tb-surface-ink-faint);border:1px solid transparent;white-space:nowrap;flex-shrink:0}.review-row__status-badge--approved{background:color-mix(in srgb,var(--tb-surface-green,var(--tb-surface-teal-deep,#0d7a5f)) 14%,white);border-color:color-mix(in srgb,var(--tb-surface-green,var(--tb-surface-teal-deep,#0d7a5f)) 28%,transparent);color:var(--tb-surface-green,var(--tb-surface-teal-deep,#0d7a5f))}.review-row__comment-text{min-width:0;white-space:normal;word-break:break-word;line-height:1.4;font-size:11px;color:var(--tb-surface-ink-soft)}@media (max-width:768px){.tb-surface .board-header{align-items:flex-start;flex-direction:column;gap:8px;padding:12px 0}.tb-surface .board-title{font-size:20px}.tb-surface .board-period{font-size:12px}.tb-surface .summary-bar{gap:8px;padding:12px}.tb-surface .summary-item{flex:1 1 40%;min-width:120px}.tb-surface .summary-item--status{margin-left:0}.tb-surface .summary-item--actions{flex:1 1 100%}.tb-surface .week-grid{grid-template-columns:1fr}.tb-surface .day-card{min-height:unset;padding:10px}.tb-surface .day-header__top{flex-wrap:wrap}.tb-surface .day-weekend-strip{min-height:unset;flex-direction:row;width:auto;padding:10px 12px}.tb-surface .day-weekend-date,.tb-surface .day-weekend-name,.tb-surface .day-weekend-total{writing-mode:horizontal-tb;text-orientation:mixed}.te-dialog{min-width:min(340px,92vw)}.te-dialog__form{padding:20px}.te-dialog__row{grid-template-columns:1fr}.review-source-group__header,.review-ticket-section__header{flex-wrap:wrap;gap:8px}.review-source-group__meta{gap:10px;width:100%}.review-source-group__actions{margin-left:0}.review-row{grid-template-columns:32px 64px minmax(100px,.8fr) minmax(120px,1fr) 64px minmax(132px,.9fr) minmax(140px,300px) 32px;align-items:start}.review-row__cell--comment{overflow:hidden}.review-row__cell--decision-header{grid-column:6/span 2}.review-row__cell--decision{grid-column:6/span 2;padding-left:0;border-left:none;margin-top:4px}.review-row__decision-headings{display:none}.review-row__decision{grid-template-columns:repeat(3,minmax(0,1fr));padding:8px 10px;border-radius:8px;background:color-mix(in srgb,var(--tb-surface-bg-soft) 72%,white)}.review-row__decision-label{display:block}}.tb-ts-review-queue{display:flex;flex-direction:column;gap:12px;max-width:350px}.ts-review-queue__header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.ts-review-queue__title{margin:0;font-family:var(--tb-surface-font-display);font-size:18px;font-weight:700;color:var(--tb-surface-ink)}.ts-review-queue__count{min-width:28px;height:24px;display:grid;place-items:center;border-radius:999px;background:var(--tb-surface-teal-soft);color:var(--tb-surface-teal);font-family:var(--tb-surface-font-mono);font-size:12px;font-weight:700}.ts-review-queue__loading{padding:40px 0}.ts-review-queue__empty,.ts-review-queue__loading{text-align:center;color:var(--tb-surface-ink-faint);font-size:13px}.ts-review-queue__empty{padding:32px 0;font-style:italic}.ts-review-queue__list{display:flex;flex-direction:column;gap:6px}.ts-review-queue__item{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:var(--tb-surface-paper);border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-sm);cursor:pointer;text-align:left;font-family:var(--tb-surface-font-body);transition:all .15s ease}.ts-review-queue__item:hover{border-color:var(--tb-surface-line-strong);box-shadow:var(--tb-surface-shadow-sm)}.ts-review-queue__item--selected{border-color:var(--tb-surface-teal);box-shadow:0 0 0 1px rgba(43,122,106,.2)}.ts-review-queue__item-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.ts-review-queue__item-user{font-size:13px;font-weight:700;color:var(--tb-surface-ink)}.ts-review-queue__item-badge{min-width:24px;height:22px;display:grid;place-items:center;border-radius:999px;background:var(--tb-surface-teal-soft);color:var(--tb-surface-teal);font-family:var(--tb-surface-font-mono);font-size:11px;font-weight:700}.ts-review-queue__item-dept{font-size:11px;color:var(--tb-surface-ink-faint)}.ts-review-queue__item-period{font-size:12px;color:var(--tb-surface-ink-soft)}.ts-review-queue__item-stats{display:flex;gap:4px;font-size:11px;color:var(--tb-surface-ink-soft)}.ts-review-queue__item-sep,.ts-review-queue__item-submitted{color:var(--tb-surface-ink-faint)}.ts-review-queue__item-submitted{font-size:10px}.tb-ts-review-detail{display:flex;flex-direction:column;gap:16px}.ts-review-detail__loading{padding:40px 0;text-align:center;color:var(--tb-surface-ink-faint);font-size:13px}.ts-review-detail__back{align-self:flex-start;padding:6px 12px;border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-sm);background:transparent;color:var(--tb-surface-ink-soft);font-family:var(--tb-surface-font-body);font-size:12px;font-weight:600;cursor:pointer;transition:all .12s ease}.ts-review-detail__back:hover{background:var(--tb-surface-bg-soft);border-color:var(--tb-surface-line-strong);color:var(--tb-surface-ink)}.ts-review-detail__header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.ts-review-detail__user-name{margin:0;font-family:var(--tb-surface-font-display);font-size:20px;font-weight:700;color:var(--tb-surface-ink)}.ts-review-detail__user-dept{font-size:12px;color:var(--tb-surface-ink-faint)}.ts-review-detail__period{font-size:14px;font-weight:600;color:var(--tb-surface-ink-soft)}.ts-review-detail__summary{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:14px 20px;background:var(--tb-surface-paper);border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-md);box-shadow:var(--tb-surface-shadow-sm)}.ts-review-detail__stat{display:flex;flex-direction:column;gap:2px}.ts-review-detail__stat--status{margin-left:auto}.ts-review-detail__stat-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tb-surface-ink-faint)}.ts-review-detail__stat-value{font-family:var(--tb-surface-font-mono);font-size:16px;font-weight:600;color:var(--tb-surface-ink)}.ts-review-detail__status-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.03em}.ts-review-detail__status-badge--submitted{background:var(--tb-surface-amber-soft);color:var(--tb-surface-amber)}.ts-review-detail__status-badge--approved{background:var(--tb-surface-green-soft);color:var(--tb-surface-green)}.ts-review-detail__status-badge--rejected{background:var(--tb-surface-red-soft);color:var(--tb-surface-red)}.ts-review-detail__status-badge--draft{background:var(--tb-surface-bg-soft);color:var(--tb-surface-ink-faint)}.ts-review-detail__status-badge--locked{background:var(--tb-surface-bg-soft);color:var(--tb-surface-ink-soft)}.ts-review-detail__worklogs{overflow-x:auto}.ts-review-detail__table{width:100%;border-collapse:collapse;font-size:12px}.ts-review-detail__table th{padding:8px 10px;text-align:left;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tb-surface-ink-faint);border-bottom:2px solid var(--tb-surface-line)}.ts-review-detail__table td{padding:8px 10px;border-bottom:1px solid var(--tb-surface-line);vertical-align:top}.ts-review-detail__td-date{font-family:var(--tb-surface-font-mono);font-size:11px;white-space:nowrap}.ts-review-detail__td-source{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ts-review-detail__td-mins{font-family:var(--tb-surface-font-mono);font-weight:600;text-align:right;white-space:nowrap}.ts-review-detail__td-comment{color:var(--tb-surface-ink-soft);white-space:normal;word-break:break-word;line-height:1.4;min-width:140px;max-width:350px}.ts-review-detail__disp{display:inline-block;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.02em}.ts-review-detail__disp--billable{background:var(--tb-surface-green-soft);color:var(--tb-surface-green)}.ts-review-detail__disp--non_billable{background:var(--tb-surface-bg-soft);color:var(--tb-surface-ink-faint)}.ts-review-detail__disp--goodwill{background:var(--tb-surface-amber-soft);color:var(--tb-surface-amber)}.ts-review-detail__disp--write_off{background:var(--tb-surface-red-soft);color:var(--tb-surface-red)}.ts-review-detail__actions{display:flex;gap:10px;margin-top:4px}.ts-review-detail__review-meta{font-size:12px;color:var(--tb-surface-ink-faint);font-style:italic}.tb-surface{--ink:var(--tb-surface-ink);--ink-soft:var(--tb-surface-ink-soft);--ink-faint:var(--tb-surface-ink-faint);--bg-soft:var(--tb-surface-bg-soft);--line:var(--tb-surface-line);--line-strong:var(--tb-surface-line-strong);--teal:var(--tb-surface-teal);--teal-soft:var(--tb-surface-teal-soft);--teal-deep:var(--tb-surface-teal-deep);--amber:var(--tb-surface-amber);--amber-soft:var(--tb-surface-amber-soft);--green:var(--tb-surface-green);--green-soft:var(--tb-surface-green-soft);--red:var(--tb-surface-red);--red-soft:var(--tb-surface-red-soft)}.tb-surface .planning-grid{overflow-x:auto;margin-top:4px}.tb-surface .planning-grid table{width:100%;border-collapse:collapse;font-size:12px}.tb-surface .planning-grid td,.tb-surface .planning-grid th{padding:6px 8px;border-bottom:1px solid var(--tb-surface-line);text-align:center;vertical-align:top}.tb-surface .planning-grid th{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--tb-surface-ink-faint);background:var(--tb-surface-paper-muted);position:sticky;top:0;z-index:1}.tb-surface .planning-grid td:first-child,.tb-surface .planning-grid th:first-child{text-align:left;min-width:140px;position:sticky;left:0;background:var(--tb-surface-paper);z-index:2}.tb-surface .planning-grid th:first-child{background:var(--tb-surface-paper-muted);z-index:3}.tb-surface .plan-cell--absent{background:var(--tb-surface-red-soft)}.tb-surface .capacity-grid{overflow-x:auto;margin-top:4px}.tb-surface .capacity-grid table{width:100%;border-collapse:collapse;font-size:12px;font-family:var(--tb-surface-font-mono)}.tb-surface .capacity-grid td,.tb-surface .capacity-grid th{padding:6px 8px;border-bottom:1px solid var(--tb-surface-line);text-align:center;vertical-align:middle}.tb-surface .capacity-grid th{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--tb-surface-ink-faint);background:var(--tb-surface-paper-muted);position:sticky;top:0;z-index:1}.tb-surface .capacity-grid td:first-child,.tb-surface .capacity-grid th:first-child{text-align:left;min-width:140px;font-family:var(--tb-surface-font-body);position:sticky;left:0;background:var(--tb-surface-paper);z-index:2}.tb-surface .capacity-grid th:first-child{background:var(--tb-surface-paper-muted);z-index:3}.tb-surface .capacity-cell--absent{background:var(--tb-surface-red-soft);color:var(--tb-surface-red);font-weight:700}.tb-surface .capacity-cell--weekend{background:var(--tb-surface-paper-muted);color:var(--tb-surface-ink-faint)}.tb-surface .capacity-cell--overloaded{background:var(--tb-surface-amber-soft);color:var(--tb-surface-amber);font-weight:700}.tb-surface .capacity-cell--full{color:var(--tb-surface-green);font-weight:600}.tb-surface .capacity-cell--zero{color:var(--tb-surface-ink-faint)}.tb-surface .data-table-wrap{overflow-x:auto}.tb-surface .data-table{width:100%;border-collapse:collapse;font-size:13px}.tb-surface .data-table td,.tb-surface .data-table th{padding:8px 12px;border-bottom:1px solid var(--tb-surface-line);text-align:left;vertical-align:middle}.tb-surface .data-table th{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--tb-surface-ink-faint);background:var(--tb-surface-paper-muted);position:sticky;top:0;z-index:1}.tb-surface .data-table__name{font-weight:600;color:var(--tb-surface-ink)}.tb-surface .data-table__mono{font-family:var(--tb-surface-font-mono);font-size:12px}.tb-surface .data-table__center{text-align:center}.tb-surface .data-table__empty{padding:32px 12px;text-align:center;color:var(--tb-surface-ink-faint);font-style:italic}.tb-surface .status-badge{display:inline-flex;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.tb-surface .status-badge--pending{background:var(--tb-surface-amber-soft);color:var(--tb-surface-amber)}.tb-surface .status-badge--active{background:var(--tb-surface-green-soft);color:var(--tb-surface-green)}.tb-surface .status-badge--closed{background:var(--tb-surface-bg-soft);color:var(--tb-surface-ink-faint)}.tb-surface .modal-overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:rgba(31,32,29,.45);backdrop-filter:blur(2px)}.tb-surface .modal-panel{background:var(--tb-surface-paper);border-radius:var(--tb-surface-radius-md);box-shadow:0 8px 32px rgba(0,0,0,.18);padding:20px;max-height:80vh;overflow-y:auto}.tb-surface .btn{border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-sm);background:var(--tb-surface-paper);color:var(--tb-surface-ink);font-family:var(--tb-surface-font-body);font-size:13px;font-weight:600;cursor:pointer;transition:all .12s ease;padding:6px 14px}.tb-surface .btn:hover{background:var(--tb-surface-bg-soft);border-color:var(--tb-surface-line-strong)}.tb-surface .btn--primary{background:var(--tb-surface-teal);border-color:var(--tb-surface-teal);color:#fff}.tb-surface .btn--primary:hover{background:var(--tb-surface-teal-deep)}.tb-surface .btn--ghost{background:transparent;border-color:transparent}.tb-surface .btn--ghost:hover{background:var(--tb-surface-bg-soft)}.tb-surface .btn--sm{padding:4px 10px;font-size:11px}.tb-surface .form-field{margin-bottom:10px}.tb-surface .form-field label{display:block;font-size:12px;font-weight:600;color:var(--tb-surface-ink-soft);margin-bottom:4px}.tb-surface .form-field input,.tb-surface .form-field select,.tb-surface .form-field textarea{width:100%;padding:7px 10px;border:1px solid var(--tb-surface-line);border-radius:var(--tb-surface-radius-sm);background:var(--tb-surface-bg-soft);color:var(--tb-surface-ink);font-family:var(--tb-surface-font-body);font-size:13px}.tb-surface .form-field input:focus,.tb-surface .form-field select:focus,.tb-surface .form-field textarea:focus{outline:none;border-color:var(--tb-surface-teal);box-shadow:0 0 0 2px var(--tb-surface-teal-soft)}