/* Project pilot: reusable tokens, scoped to this page until visual approval. */
.project-page{
 --ds-border:#cbd3e1;--ds-divider:#e3e8f0;--ds-text:#354766;--ds-muted:#697791;
 --ds-surface:#fff;--ds-soft:#f7f9fc;--ds-brand:#173d75;--ds-focus:#ee8024;
 --ds-radius:8px;--ds-panel-radius:12px;--ds-control-height:40px;--ds-gap:12px;
}
.project-page .wrap{width:100%;min-width:0;padding:24px clamp(12px,2vw,28px) 40px}
.project-page .view{min-width:0}
.project-page .view .panel{padding:20px;border:1px solid var(--ds-divider);border-radius:var(--ds-panel-radius);margin-bottom:20px}
.project-page .tl-task-section{padding:20px;margin:24px 0;border-radius:var(--ds-panel-radius)}
.project-page .view h2{line-height:1.3}.project-page .view h3{line-height:1.4}
.project-page :is(.controls,.tl-filters,.delivery-filters){gap:var(--ds-gap);align-items:end;margin:16px 0}
.project-page .controls{align-items:center}.project-page .controls>input[type=search]{flex:2 1 280px;min-width:0}
.project-page .controls>select{flex:1 1 175px;min-width:0;max-width:100%}
.project-page .controls .sort-label{flex:0 0 auto;margin:0}
.project-page :is(.tl-filters,.delivery-filters)>label:not(.tl-check):not(.delivery-check){display:flex;flex-direction:column;gap:6px;flex:1 1 170px;min-width:0;font-size:13px;font-weight:600}
.project-page :is(.tl-check,.delivery-check){gap:8px;min-height:var(--ds-control-height);margin:0}
.project-page #tlSummary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--ds-gap);align-items:stretch}
.project-page #tlSummary>[data-summary-tone]{min-width:0;min-height:118px;padding:16px;display:flex;flex-direction:column;align-items:flex-start}
.project-page #tlSummary small{margin-top:auto;padding-top:8px}
.project-page .kpis{gap:var(--ds-gap)}
/* Inputs have a visible resting border, one inset focus ring and a distinct error state. */
.project-page :where(.view,.tl-drawer,.phase-dialog,#failedDialog) :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not(.tl-native-calendar),select,textarea){
 box-sizing:border-box;min-height:var(--ds-control-height);border:1px solid var(--ds-border);border-radius:var(--ds-radius);padding:9px 11px;background:var(--ds-surface);color:var(--ds-text);font:inherit;line-height:1.4;max-width:100%;outline:none;box-shadow:none;
}
.project-page :where(.view,.tl-drawer,.phase-dialog,#failedDialog) textarea{min-height:88px;resize:vertical}
.project-page :where(.view,.tl-drawer,.phase-dialog,#failedDialog) :is(input,select,textarea):focus-visible{
 outline:2px solid var(--ds-focus);outline-offset:-2px;box-shadow:none;
}
.project-page :where(.view,.tl-drawer,.phase-dialog) :is(input,select,textarea):disabled{background:#f3f5f8;color:#697791;cursor:not-allowed}
.project-page :where(.view,.tl-drawer,.phase-dialog) :is(input,select,textarea)[aria-invalid=true]{border-color:#b42318;outline-color:#b42318;background:#fffafa}
.project-page :where(.view,.tl-drawer,.phase-dialog) :is(input[type=checkbox],input[type=radio]){width:17px;height:17px;min-height:0;flex:0 0 17px;margin:0;accent-color:var(--ds-brand)}
/* Standard actions; activity links and timeline bars retain their own compact semantics. */
.project-page :where(.view,.tl-drawer,.phase-dialog,.activity-discard,#failedDialog,.tabs) :where(button:not(.tl-bar):not([data-tl-open]):not(.backlog-open)){
 min-height:var(--ds-control-height);box-sizing:border-box;padding:9px 14px;border:1px solid var(--ds-border);border-radius:var(--ds-radius);background:#fff;color:var(--ds-brand);font:600 13px/1.4 Aptos,Arial,sans-serif;cursor:pointer;white-space:normal;
}
.project-page :where(.view,.tl-drawer,.phase-dialog,.activity-discard,#failedDialog) button.primary{background:#ff7700;border-color:#ff7700;color:#fff}
.project-page :where(.view,.tl-drawer,.phase-dialog,.activity-discard,#failedDialog,.tabs) button:focus-visible{outline:2px solid var(--ds-focus);outline-offset:-2px;box-shadow:none}
.project-page :where(.view,.tl-drawer,.phase-dialog,.activity-discard,#failedDialog) button:disabled{opacity:.55;cursor:not-allowed}
.project-page :where(.view,.tl-drawer,.phase-dialog) button:not(.tl-bar):hover:not(:disabled){filter:brightness(.98)}
.project-page .tabs{gap:8px;align-items:center}
.project-page .tabs button{background:var(--ds-brand);color:#fff;border-color:var(--ds-brand)}
.project-page .tabs .phase-manage-action{margin-left:auto;background:#fff;color:var(--ds-brand);border-color:var(--ds-border)}
.project-page :is(.tl-heading,.tl-period,.delivery-exports,.phase-actions,.activity-discard-actions){gap:var(--ds-gap)}
.project-page .tl-period>div{display:flex;gap:8px;flex-wrap:wrap}
.project-page .tl-period button[aria-pressed=true]{background:#fff0e3;border-color:#ee8024;color:#984900}
/* Tables keep independent scrolling; no overflow is hidden at page level. */
.project-page :is(.tablewrap,.tl-task-table-wrap,.delivery-table-wrap){border:1px solid var(--ds-divider);border-radius:var(--ds-radius);width:100%;max-width:100%;overflow:auto;background:#fff}
.project-page :is(.tablewrap,.tl-task-table-wrap,.delivery-table-wrap) table{margin:0;border-spacing:0}
.project-page :is(.tablewrap,.tl-task-table-wrap,.delivery-table-wrap) :is(th,td){padding:12px;vertical-align:top;text-align:left;border-bottom:1px solid var(--ds-divider);line-height:1.5}
.project-page :is(.tablewrap,.tl-task-table-wrap) th{background:#f0f3f9;color:#47516a;font-size:11px;font-weight:700}
.project-page :is(.tablewrap,.tl-task-table-wrap,.delivery-table-wrap) tr:last-child td{border-bottom:0}
.project-page #rows :is(input,select,textarea){font-size:12px;min-width:90px;background:#fff}
.project-page #rows textarea{min-height:64px;resize:none}
.project-page .tl-drawer{padding:24px}.project-page .tl-drawer form{gap:16px}
.project-page .tl-drawer label,.project-page .phase-dialog label{gap:6px;font-size:13px;font-weight:600}
.project-page .relations-editor{gap:16px;margin:8px 0}
.project-page .relations-editor fieldset{padding:16px;border-color:var(--ds-divider);border-radius:var(--ds-panel-radius)}
.project-page .tl-editor-actions{gap:var(--ds-gap);padding:16px 0;bottom:-24px}
.project-page :is(.tl-drawer,.phase-dialog) .tl-date-fields{gap:var(--ds-gap)}
/* Composite controls own the ring, avoiding nested outlines. */
.project-page .owners-select:focus-within{outline:none}
.project-page .owners-select #tlOwnersSearch{min-height:40px;padding:9px 11px;border:1px solid var(--ds-border);background:#fff;box-shadow:none}
.project-page .owners-select #tlOwnersSearch:focus-visible{outline:2px solid var(--ds-focus);outline-offset:-2px}
.project-page .owners-chip button{min-height:28px!important;padding:2px 5px!important}
.project-page #tlRemoveParent{width:40px;flex-basis:40px;padding:8px;display:grid;place-items:center;color:#64748b}
.project-page #tlRemoveParent:hover:not(:disabled){color:#b42318;background:#fff1f2;border-color:#efc6c9}
.project-page #rows .backlog-date .tl-date-entry>input[type=text]{min-height:36px;border:0;padding:7px;background:transparent;outline:none;box-shadow:none}
.project-page #rows .backlog-date .tl-date-entry>button{min-height:36px;border:0;padding:0;background:transparent;outline:none;box-shadow:none}
.project-page #rows .backlog-date .tl-date-entry:focus-within{outline:none;box-shadow:inset 0 0 0 2px var(--ds-focus)}
.project-page #rows .backlog-date.has-date-error .tl-date-entry{border-color:#b42318;box-shadow:inset 0 0 0 1px #b42318}
.project-page .tl-date-entry>.tl-native-calendar:not(.tl-calendar-fallback){min-height:0!important}
@media(max-width:1000px){.project-page #tlSummary{grid-template-columns:repeat(3,minmax(0,1fr))}.project-page .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){
 .project-page .wrap{padding:16px 12px 28px}.project-page .view .panel,.project-page .tl-task-section{padding:14px}
 .project-page #tlSummary,.project-page .kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.project-page #tlSummary>[data-summary-tone]{padding:12px;min-height:112px}
 .project-page .controls{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.project-page .controls>*{width:100%;min-width:0}
 .project-page :is(.tl-filters,.delivery-filters){display:grid;grid-template-columns:minmax(0,1fr)}
 .project-page :is(.tl-filters,.delivery-filters)>label{width:100%;min-width:0}
 .project-page .tabs .phase-manage-action{margin-left:0}
 .project-page .tl-drawer{padding:16px}.project-page .tl-editor-actions{bottom:-16px}
 .project-page .delivery-exports{width:100%}.project-page .delivery-exports>button{flex:1 1 140px}
}
@media print{.project-page :is(.tablewrap,.tl-task-table-wrap,.delivery-table-wrap){overflow:visible}}
/* Backlog's wide title column must not leak into the other grids. */
.project-page :is(.tl-task-table-wrap,.delivery-table-wrap) :is(th,td):nth-child(3){min-width:0}
.project-page .tl-task-table-wrap :is(th,td):nth-child(3){width:auto}
/* Reading density from Timeline onward: larger type, roomier rows and canvas. */
.project-page .wrap{max-width:1800px}
.project-page .tl-scroll{--tl-label-width:360px;max-height:72vh;min-height:360px}
.project-page .tl-row{min-height:156px}
.project-page .tl-label{padding:14px 16px;font-size:14px;gap:6px}
.project-page .tl-label>button{font-size:14px;line-height:1.5}
.project-page .tl-label small{font-size:12px}
.project-page .tl-day{font-size:14px;padding:9px 0}
.project-page .tl-track .tl-bar{min-height:40px;font-size:13px}
.project-page :is(.tl-task-table-wrap,.delivery-table-wrap) table{font-size:14px}
.project-page :is(.tl-task-table-wrap,.delivery-table-wrap) :is(th,td){font-size:14px;padding:14px;line-height:1.55}
.project-page .tl-task-table-wrap table{min-width:1250px}
.project-page .delivery-table-wrap table{min-width:920px}
.project-page .tl-unscheduled{padding:18px 0;gap:18px}
.project-page .tl-unscheduled p{font-size:14px;line-height:1.5}
.project-page .tl-task-description{min-width:240px;max-width:420px}
.project-page .tl-task-section h2,.project-page .tl-task-section h3{font-size:20px}
@media(max-width:700px){.project-page .tl-scroll{--tl-label-width:210px;max-height:65vh;min-height:300px}.project-page .tl-label{padding:12px;font-size:13px}.project-page .tl-label>button{font-size:14px}.project-page .tl-label small{font-size:11px}}
@media print{.project-page .tl-scroll{min-height:0;max-height:none}}

/* Uniform activity identifiers across dated and historical delivery groups. */
.project-page .delivery-table-wrap :is(th,td):first-child{width:205px;min-width:205px}
.project-page .delivery-table-wrap td:first-child button{display:block;width:176px;min-width:176px;max-width:176px;height:40px;padding:8px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
/* Status pills keep the same footprint and never split Backlog Futuro. */
.project-page .tl-task-table-wrap .tl-status{display:inline-flex;align-items:center;justify-content:center;width:196px;min-width:196px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5;white-space:nowrap;border-radius:6px}
.project-page .tl-scroll[data-scale=week] .tl-calendar-head{min-height:88px}
.project-page .tl-scroll[data-scale=week] .tl-day{font-size:20px;padding:12px 4px}
.project-page .tl-scroll[data-scale=week] .tl-day small{font-size:14px;line-height:1.6}
.project-page .tl-scroll[data-scale=week] .tl-day b{font-size:12px}
.project-page .tl-scroll[data-scale=week] .tl-label-head{font-size:16px;padding:18px 16px}
.project-page .tl-scroll[data-scale=week] .tl-label>button{font-size:16px}
.project-page .tl-scroll[data-scale=week] .tl-label{font-size:14px}
.project-page .tl-scroll[data-scale=week] .tl-track .tl-bar{font-size:14px;min-height:44px}

/* Compact, filter-aware section counts share one badge treatment. */
.project-page .project-section-title,.project-page .delivery-group h3{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.project-page .project-count,.project-page .delivery-group h3 .project-count{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:28px;padding:4px 11px;border-radius:999px;font:600 13px/1.4 Aptos,Arial,sans-serif;white-space:nowrap;vertical-align:middle}
.project-page .project-count strong{font:inherit;color:inherit;display:inline}
.project-page .project-count-blue{background:#dfeaff;color:#2448a5}
.project-page .project-count-green,.project-page .delivery-group h3 .project-count-green{background:#ddf5e8;color:#12623f}
.project-page .project-count-amber{background:#fff0c2;color:#805700}
/* Running activities use the same section accent treatment as overdue work. */
.project-page #tlRunning{border-top:3px solid #2563eb;background:#f8fbff}
.project-page #tlRunningTitle{color:#2448a5}
/* Section and table headings share typography, keeping each section's colour. */
.project-page #deliveredActivities{border-top:3px solid #12623f;background:#fbfefc}
.project-page #deliveredActivitiesTitle{color:#12623f}
.project-page :is(#tlBacklog,#tlRunning,#tlOverdue,#deliveredActivities) :is(.tl-task-table-wrap,.delivery-table-wrap) th{
 font:700 14px/1.5 Aptos,Arial,sans-serif;letter-spacing:.045em;text-transform:uppercase;color:#fff;padding:14px;text-align:left;vertical-align:middle;border-bottom:1px solid #ffffff30;
}
.project-page #tlBacklog .tl-task-table-wrap th{background:#173d75}
.project-page #tlRunning .tl-task-table-wrap th{background:#2448a5}
.project-page #tlOverdue .tl-task-table-wrap th{background:#b42318}
.project-page #deliveredActivities .delivery-table-wrap th{background:#12623f}
/* Backlog heading follows the blue section palette with breathing room. */
.project-page #tlBacklogTitle{color:#173d75;margin:0 0 20px}
.project-page #tlBacklog{border-color:#cbd1d8;border-top:3px solid #64748b;background:#fafbfc}

/* Compact shared activity editor, with a restrained lateral entrance. */
.project-page .tl-drawer{width:min(640px,100vw);box-sizing:border-box;padding:20px 24px;box-shadow:-12px 0 36px #173d751a}
.project-page .tl-drawer[open]:not(.tl-closing){animation:activity-enter 220ms ease-out}
.project-page .tl-drawer::backdrop{background:#12233b55;animation:activity-backdrop 220ms ease-out}
.project-page .tl-drawer.tl-closing::backdrop{animation:activity-backdrop 180ms ease-in reverse forwards}
.project-page .tl-drawer form{gap:12px}
.project-page .tl-drawer .tl-heading{position:sticky;top:-20px;z-index:3;background:#fff;padding:12px 0;border-bottom:1px solid var(--ds-divider)}
.project-page .tl-drawer #tlId{margin:0;font-size:12px;color:var(--ds-muted)}
.project-page .tl-drawer #tlDescription{min-height:100px}
.project-page .tl-drawer .tl-editor-actions{bottom:-20px;padding:14px 0;z-index:3}
.project-page .tl-drawer .relations-editor fieldset{padding:12px;margin:0}
.project-page .tl-drawer :is(#tlFormMessage,#tlOwnerNotice):empty{display:none}
.project-page .tl-drawer :is(#tlDateHelp,#tlHoursHelp,#tlLegacyDates,#tlOriginalFront)[hidden]{display:none!important}
@keyframes activity-enter{from{opacity:0;transform:translateX(48px)}to{opacity:1;transform:translateX(0)}}
@keyframes activity-backdrop{from{background:#12233b00}to{background:#12233b55}}
@media(max-width:700px){.project-page .tl-drawer{width:100vw;padding:16px}.project-page .tl-drawer .tl-heading{top:-16px}.project-page .tl-drawer .tl-editor-actions{bottom:-16px}}
@media(prefers-reduced-motion:reduce){.project-page .tl-drawer[open],.project-page .tl-drawer::backdrop{animation:none!important}}

/* Identical nine-column schema across overdue, running and backlog grids. */
.project-page .tl-task-table-wrap table{table-layout:fixed;min-width:1600px;width:100%}
.project-page .tl-task-table-wrap .tl-column-code{width:6%}
.project-page .tl-task-table-wrap .tl-column-activity{width:16%}
.project-page .tl-task-table-wrap .tl-column-description{width:20%}
.project-page .tl-task-table-wrap .tl-column-owner{width:16%}
.project-page .tl-task-table-wrap .tl-column-status{width:14%}
.project-page .tl-task-table-wrap .tl-column-phase{width:9%}
.project-page .tl-task-table-wrap .tl-column-start{width:6%}
.project-page .tl-task-table-wrap .tl-column-end{width:7%}
.project-page .tl-task-table-wrap .tl-column-late{width:6%}
.project-page .tl-task-table-wrap :is(th,td){min-width:0;max-width:none;overflow-wrap:anywhere}
.project-page .tl-task-table-wrap :is(th,td):nth-child(2){width:auto}
.project-page .tl-task-table-wrap .tl-task-description{min-width:0;max-width:none}


/* A descrição complementa o título sem limitar a altura da linha. */
.project-page .tl-calendar-description{font-size:12px;line-height:1.4;color:#66758a;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere}
html[data-theme=dark] .project-page .tl-calendar-description{color:#b8c3cc}
