/* Shared CI motion. Keep these rules after priority-design.css. */
:root{--motion-fast:160ms;--motion-ui:260ms;--motion-enter:360ms;--motion-ease:cubic-bezier(.22,1,.36,1)}
button,input,select,textarea{font-family:var(--font-body)!important}
button{touch-action:manipulation}
:is(.btn,.pt-btn,.ui-control){position:relative;line-height:1.3;letter-spacing:0;vertical-align:middle}
.ui-control{min-height:40px;padding:9px 16px;border:1px solid var(--stroke);border-radius:11px;background:var(--glass);color:var(--ink);font-size:13px;font-weight:500;cursor:pointer}
:is(.btn,.pt-btn,.ui-control):not(:disabled){transition:background var(--motion-fast),border-color var(--motion-fast),box-shadow var(--motion-ui),transform var(--motion-fast) var(--motion-ease)}
.ui-control:hover:not(:disabled){background:var(--surface-alt);border-color:var(--border-strong);transform:translateY(-1px)}
.ui-control:active:not(:disabled){transform:scale(.98)}
.ui-control:disabled{opacity:.5;cursor:not-allowed}
[data-ui-pending=true]::after{content:'';display:inline-block;width:12px;height:12px;margin-left:9px;border:1.5px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-2px;animation:ui-spin .8s linear infinite}
[data-ui-pending=true]{cursor:progress!important}
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea{line-height:1.45}
select{padding-right:28px;cursor:pointer;transition:border-color var(--motion-fast),box-shadow var(--motion-ui),background var(--motion-ui)}
select:focus-visible{background:var(--surface);outline-offset:2px}
input[type=file]::file-selector-button{font:500 12px var(--font-body);padding:8px 12px;margin-right:12px;border:1px solid var(--stroke);border-radius:8px;color:var(--ink);background:var(--surface-alt);cursor:pointer;transition:background var(--motion-fast)}
input[type=file]::file-selector-button:hover{background:var(--accent-dim)}
:is(.ac-tab,.pill,.pub-tab,.filter-chip,[role=tab]){font-family:var(--font-body);transition:background var(--motion-ui),color var(--motion-fast),box-shadow var(--motion-ui),border-color var(--motion-ui)}
[role=tab][aria-selected=true]{box-shadow:0 2px 8px #2526210c}
.ui-timer{display:inline-flex;align-items:baseline;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:0;line-height:1.2}
.ui-timer-digit{position:relative;display:inline-block;overflow:hidden;width:.64em;height:1.2em;text-align:center;vertical-align:bottom}
.ui-timer-separator{display:inline-block;width:.26em;text-align:center;opacity:1;color:inherit}
.ui-timer-old,.ui-timer-next{display:block;position:absolute;inset:0;line-height:1.2}
.ui-timer-old{pointer-events:none}
.active-task-dock{background:var(--material-regular-bg);border-color:var(--stroke);animation:ui-dock-in var(--motion-enter) var(--motion-ease)}
.active-task-dock .ui-timer{font-size:22px;font-weight:450;min-width:6.3em}
.active-task-pulse{animation:ui-live 2.5s ease-in-out infinite}
.task-time-head .ui-timer{font-weight:450;min-width:6.3em;color:var(--ink)}
#live-timer.ui-timer{color:var(--ink)!important}
[data-ui-loading]{padding:24px!important;min-height:126px;border:1px solid var(--stroke-soft);border-radius:18px;background:var(--glass);max-width:100%;text-align:left}
.ui-loading-caption{display:block;font-size:13px;color:var(--ink-dim);margin-bottom:16px}
.ui-skeleton{display:flex;flex-direction:column;gap:10px;max-width:640px}
.ui-skeleton i{position:relative;display:block;overflow:hidden;height:10px;background:var(--surface-alt);border-radius:8px;width:100%}
.ui-skeleton i:nth-child(2){width:74%}.ui-skeleton i:nth-child(3){width:42%}
.ui-skeleton i::after{content:'';position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--glass-strong),transparent);animation:ui-shimmer 1.7s ease-in-out infinite}
:is(.modal,.modal-card,.pt-modal,dialog[open]){animation:ui-dialog-in 240ms var(--motion-ease)}
:is(.modal-overlay,.overlay,.vdo-overlay){animation:ui-fade-in 180ms ease-out}
.vdo-panel{animation:ui-drawer-in var(--motion-enter) var(--motion-ease)}
:is(.notif-panel,.toast){animation:ui-pop-in 240ms var(--motion-ease)}
:is(.card,.card-slot,.column){border-color:var(--stroke-soft)}
.board .column{border-radius:18px;background:var(--surface-alt);padding:12px;min-width:260px}
.board .column-head{padding:8px 6px 16px;font-family:var(--font-body)}
.board .column-head .name{font-family:var(--font-body);font-size:13px;font-weight:550;letter-spacing:0;text-transform:none}
.board .card{background:var(--glass-strong);border:1px solid var(--stroke-soft);border-radius:14px;padding:16px;box-shadow:0 2px 8px #25262104;transition:box-shadow var(--motion-ui),border-color var(--motion-ui),background var(--motion-fast)}
.board .card:hover{border-color:var(--border-strong);box-shadow:0 6px 20px -12px #25262138}
.board .card.dragging{opacity:.6;box-shadow:0 14px 30px -16px #25262150}
.add-card-btn{font:500 12px var(--font-body);border:1px dashed var(--border-strong);border-radius:10px;min-height:40px;color:var(--ink-dim);transition:background var(--motion-fast),border-color var(--motion-fast),color var(--motion-fast)}
.add-card-btn:hover{background:var(--glass);color:var(--ink);border-color:var(--ink-dim)}
.workflow-projekt-panel{padding:24px;border-radius:20px;background:linear-gradient(125deg,var(--glass-strong),var(--glass))}
.workflow-projekt-panel h3{font-weight:500;letter-spacing:-.02em}
.workflow-projekt-panel form{gap:18px}.workflow-projekt-panel label{gap:8px;line-height:1.5}
.workflow-projekt-panel :is(input:not([type=checkbox]),select){padding:10px 12px;width:100%;min-width:0}
.workflow-projekt-panel label:has(>input[type=checkbox]){display:flex;align-items:flex-start;gap:10px}
.workflow-projekt-panel input[type=checkbox]{flex:none;width:16px;height:16px;margin-top:3px}
.workflow-plan-asset{border:1px solid var(--stroke-soft);border-radius:14px;background:var(--surface);padding:18px;margin:14px 0;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);gap:14px}
.workflow-plan-asset legend{padding:0 7px;font-size:12px;color:var(--ink-dim)}
.workflow-projekt-panel summary{padding:8px 0;line-height:1.5;transition:color var(--motion-fast)}
.workflow-projekt-panel summary:hover{color:var(--ink)}
.workflow-kosten-summe strong{font-weight:450;font-variant-numeric:tabular-nums}
.priority-bar-item::after{content:attr(aria-label);position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%,4px);opacity:0;pointer-events:none;background:var(--nav-active);color:var(--nav-active-ink);padding:7px 10px;border-radius:8px;font-size:11px;white-space:nowrap;z-index:3;transition:opacity var(--motion-fast),transform var(--motion-ui)}
.priority-bar-item:is(:hover,:focus-visible)::after{opacity:1;transform:translate(-50%,0)}
@media(min-width:901px){
 /* Keep labels in layout while the rail shrinks; no display jump at the start. */
 .priority-nav-collapsed :is(.nav-label,.priority-wordmark,.kopf-name,.sidebar-client-info){display:initial!important;opacity:0;max-width:0;pointer-events:none;overflow:hidden}
 .nav-label,.priority-wordmark,.kopf-name,.sidebar-client-info{opacity:1;max-width:180px;transition:opacity 140ms ease,max-width 320ms var(--motion-ease)}
 .sidebar-toggle svg{transition:transform var(--motion-ui) var(--motion-ease)}
}
@media(max-width:600px){.workflow-plan-asset{grid-template-columns:1fr}.active-task-dock .ui-timer{font-size:18px} .priority-bar-item::after{white-space:normal;min-width:100px;max-width:140px}}
@keyframes ui-spin{to{transform:rotate(360deg)}}
@keyframes ui-shimmer{to{transform:translateX(100%)}}
@keyframes ui-fade-in{from{opacity:0}to{opacity:1}}
@keyframes ui-dialog-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes ui-drawer-in{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:translateX(0)}}
@keyframes ui-dock-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes ui-pop-in{from{opacity:0;transform:translateY(-5px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes ui-live{0%,100%{box-shadow:0 0 0 3px #ffcb1420}50%{box-shadow:0 0 0 6px #ffcb1410}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* The drop slot is a preview; only confirmed moves change the actual card. */
.board .card{position:relative}.board .card[draggable=true]{cursor:grab}
.board .card.is-drag-source{opacity:.25;border-style:dashed}
.board .column.dragover{outline:0;background:color-mix(in srgb,var(--accent) 13%,var(--surface-alt));box-shadow:inset 0 0 0 1.5px var(--accent)}
.kanban-drop-space{box-sizing:border-box;flex:none;width:100%;min-height:64px;border:1.5px dashed #b48c19;border-radius:14px;margin-bottom:8px;background:linear-gradient(130deg,#ffcb1418,transparent);display:grid;place-items:center;color:var(--ink-dim);font-size:12px}
.kanban-drop-pending{border-style:solid;background:var(--accent-dim)}
.kanban-drag-ghost{position:fixed;left:-2000px;top:-2000px;padding:16px;border-radius:14px;border:1px solid var(--accent);background:var(--surface);color:var(--ink);box-shadow:0 20px 45px -15px #25262160;transform:rotate(-1.5deg);font:14px var(--font-body)}
.kanban-drag-ghost .kanban-move{display:none}.kanban-drag-ghost .title{font-weight:550;margin:6px 0}.kanban-drag-ghost .meta{font-size:11px;color:var(--ink-dim)}
.board[data-kanban-saving=true]{cursor:progress}.board[data-kanban-saving=true] .card{cursor:progress}
.kanban-move{display:flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;width:32px;height:32px;margin:10px 0 0 auto;padding:7px;border-radius:8px;border:1px solid var(--stroke-soft);background:var(--surface-alt);color:var(--ink-dim);cursor:pointer;transition:background var(--motion-fast),color var(--motion-fast)}
.kanban-move svg{width:16px;height:16px}.kanban-move:hover,.kanban-move:focus-visible{background:var(--accent-dim);color:var(--ink)}
.kanban-move-dialog{max-width:min(480px,calc(100vw - 32px));width:100%;padding:28px;border:1px solid var(--stroke);margin:auto}
.kanban-move-dialog::backdrop{background:#25262155;backdrop-filter:blur(6px)}
.kanban-move-dialog h2{font-size:23px;margin:0 0 24px}.kanban-move-dialog label{display:grid;gap:8px}.kanban-move-dialog select{width:100%;padding:10px 12px}.kanban-move-dialog .modal-actions{margin-top:24px;display:flex;justify-content:flex-end;gap:10px}
.ui-sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important}

/* Chart motion releases transforms after entry so hover stays responsive. */
.priority-bar-fill{animation-fill-mode:backwards;transition:height 450ms var(--motion-ease),filter var(--motion-fast),transform var(--motion-ui) var(--motion-ease)}
.priority-track>span,.priority-compare-bars>span{transition:width 450ms var(--motion-ease)}
.priority-ring circle:last-child{transition:stroke-dasharray 500ms var(--motion-ease)}

/* On narrow screens filters keep a full row instead of a squeezed side stack. */
@media(max-width:700px){#ff-pills{flex-basis:100%!important;margin-bottom:4px}#ff-pills .filter-pill{white-space:nowrap}#ff-pills .dot{flex-shrink:0}}

/* Keep the timer's box stable while its absolute digit layers move. */
.ui-timer{align-items:center;vertical-align:middle;height:1.2em;contain:layout}
.ui-timer-digit{display:block;flex:none;line-height:1.2}
.ui-timer-separator{flex:none;height:1.2em;line-height:1.2}
/* U25: frame rules must not turn the animated digit slots into block rows. */
.task-time-head [data-time-value].ui-timer,.active-task-dock [data-active-elapsed].ui-timer{display:inline-flex;flex-flow:row nowrap;justify-content:flex-end;flex-shrink:0}
/* Board surfaces are columns, not a second framed panel around them. */
#ff-boards>.ff-section{background:transparent;border:0;box-shadow:none;border-radius:0;margin:28px 0 36px}
#ff-boards>.ff-section[hidden]{display:none!important}
#ff-boards .ff-section-head{padding:0 4px;margin-bottom:14px}
#ff-boards .board{gap:10px;padding:0 0 10px}
#ff-boards .column{flex:1 0 180px;min-width:180px;width:auto;max-height:540px;min-height:260px;padding:10px;box-shadow:none;background:color-mix(in srgb,var(--surface-alt) 75%,transparent);border:1px solid var(--stroke-soft)}
#ff-boards .card{padding:13px;transform:none}
#ff-boards .card .title{font-size:14px;line-height:1.45;overflow-wrap:anywhere}
#ff-boards .card .meta{font-size:12px;line-height:1.5;overflow-wrap:anywhere}
#ff-boards .card .title+.meta{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
#ff-pills{gap:6px;margin-bottom:0;align-items:center}
#ff-pills .filter-pill{min-height:38px;padding:8px 12px;border:1px solid transparent;background:transparent;border-radius:10px;font:500 13px var(--font-body);color:var(--ink-dim);white-space:nowrap}
#ff-pills .filter-pill.active{border-color:var(--stroke);background:var(--surface);color:var(--ink);box-shadow:0 2px 6px #25262108;outline:none}
#ff-pills .filter-pill:hover{background:var(--glass)}
.priority-ring-text{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;max-width:85px}
.priority-ring-text strong{display:block;line-height:1;white-space:nowrap}
.priority-ring-text span{max-width:80px;line-height:1.25;overflow-wrap:normal}
@media(max-width:700px){#ff-boards .column{flex-basis:260px;min-width:260px}#ff-boards>.ff-section{margin-top:22px}.priority-hero-aside{gap:12px}}

/* Veröffentlichung und Prüfung: gemeinsame Kanalidentität, kein Dekorstreifen. */
.pub-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin:0 0 24px}.pub-page-head h1{margin:4px 0 8px}.pub-page-head p,.pub-ready-row small{color:var(--ink-dim)}.pub-channel-list{display:flex;flex-wrap:wrap;gap:6px}.pub-channel{display:inline-flex;align-items:center;gap:5px;max-width:100%;font-size:11px;border:1px solid var(--border);border-radius:8px;padding:3px 6px;color:var(--ink);line-height:1.4}.pub-channel svg{width:14px;height:14px;flex:none}.pub-plan-status{font-size:10px;color:var(--ink-dim);line-height:1.4}.pub-ready-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;border-bottom:1px solid var(--border)}.pub-ready-row>div{display:grid;gap:6px;min-width:0;overflow-wrap:anywhere}.pub-ready-row .btn{flex:none}.pub-ready-row small{display:block;font-size:11px}.pub-cal-chip-row1{font-family:inherit}.pub-cal-chip{gap:6px}.pub-review-filter{display:grid;gap:6px;min-width:200px}.pub-review-filter select{min-height:44px;border:1px solid var(--border);border-radius:12px;padding:10px;background:var(--surface);color:var(--ink);font:inherit}.pub-client-picker{margin-left:auto}.pub-cal-chip .pub-channel>span{display:none}.pub-cal-chip .pub-channel{padding:3px}.pub-cal-chip .pub-channel svg{width:15px;height:15px}.pub-cal-head{gap:16px;flex-wrap:wrap}.pub-heute-row .title{min-width:0;overflow-wrap:anywhere}.pub-heute-row .title .pub-channel-list{margin:6px 0}@media(max-width:640px){.pub-client-picker{margin-left:0;width:100%;min-width:0}.pub-client-picker fieldset{min-width:0;width:100%;box-sizing:border-box}.pub-ready-row{flex-wrap:wrap}.pub-cal-chip-row1,.pub-plan-status{font-size:9px}.pub-cal-chip-row2{white-space:normal;overflow-wrap:anywhere}.pub-cal-chip{padding:5px}.pub-cal-grid{gap:3px}.pub-cal-cell{min-width:0}.pub-page-head{gap:16px}.pub-review-filter{width:100%;min-width:0}}

.pub-ready-row{display:grid;grid-template-columns:1fr;gap:10px}.pub-ready-row .btn{justify-self:start;text-decoration:none}.process-review .btn{text-decoration:none}.pub-cal-chip{font-family:var(--font-body,Outfit,sans-serif)}@media(max-width:640px){.pub-cal-grid{grid-template-columns:1fr}.pub-cal-kopf,.pub-cal-cell.pub-cal-pad,.pub-cal-cell:not(:has(.pub-cal-chip)){display:none}.pub-cal-cell{flex-direction:row;align-items:flex-start;min-height:0;gap:12px;padding:12px}.pub-cal-daynum{min-width:26px;padding-top:6px}.pub-cal-entries{flex:1;min-width:0}.pub-cal-chip{min-height:44px;padding:10px;gap:5px}.pub-cal-chip-row1,.pub-plan-status{font-size:11px}.pub-cal-chip-row2{font-size:13px}.pub-cal-chip .pub-channel>span{display:inline}}

.pub-page-description{margin:0 0 20px;color:var(--ink-dim);font-size:13px}

.studio-multi-picker summary,.client-service-options label{transition:background var(--motion-feedback),border-color var(--motion-feedback)}
@media(prefers-reduced-motion:no-preference){.studio-multi-picker[open] fieldset{animation:ui-dock-in var(--motion-feedback) var(--motion-ease)}.active-task-dock-u30[data-state="aktiv"] .active-task-fab svg{animation:ui-dock-in var(--motion-feedback) var(--motion-ease)}}
@media(prefers-reduced-motion:reduce){.active-task-dock-u30 .active-task-fab,.active-task-dock-u30 .active-task-popover{transition:none;animation:none;transform:none}}

/* Team-Verwaltung: gemeinsame Tokens und stabile Formulare. */
.team-controls { display:grid; gap:24px; }
.team-admin-list { display:grid; gap:16px; margin-top:20px; }
.team-admin-card { display:grid; gap:12px; padding:20px; border:1px solid var(--border); border-radius:var(--radius,20px); min-width:0; }
.team-admin-card h3 { margin:0; }
.team-admin-fields { display:flex; gap:16px; flex-wrap:wrap; }
.team-admin-fields label,.team-work-slot label { display:grid; gap:6px; flex:1; min-width:180px; }
.team-admin-fields select,.team-admin-fields input,.team-work-slot select { min-width:0; width:100%; min-height:42px; }
.team-role-confirm { display:flex; align-items:center; gap:10px; }
.team-role-confirm[hidden] { display:none; }
.team-role-confirm input { width:20px; height:20px; flex:none; }
.team-work-slot { display:flex; align-items:end; gap:12px; flex-wrap:wrap; }
.team-work-slot p { flex-basis:100%; margin:0; overflow-wrap:anywhere; }
.team-admin-card [data-message] { margin:0; overflow-wrap:anywhere; }
@media(max-width:600px) { .team-admin-card { padding:16px; }.team-admin-fields label,.team-work-slot label { min-width:0; flex-basis:100%; } }
.team-admin-card button { max-width:100%; white-space:normal; }

/* Reporting: Quellenkennungen lesbar, keine abgeschnittenen UUIDs. */
.report-source { margin-top:16px; }
.report-source>summary { cursor:pointer; font-weight:500; margin-bottom:12px; }
.report-post-detail .report-source dl { grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr)); }
.report-source dl>div { min-width:0; }
.report-post-detail .report-source dd { font-size:14px; overflow-wrap:anywhere; }

/* U72 · Projektkosten: Auswahllisten bleiben auch mit langen echten Titeln in der Karte. */
.project-cost-report .task-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.project-cost-report .task-field-grid label,.project-cost-report [data-cost-rate] label{display:grid;gap:8px;min-width:0}
.project-cost-report :is(select,input){box-sizing:border-box;width:100%;max-width:100%;min-width:0}
.project-cost-report [data-cost-rate]{display:grid;gap:16px;padding-top:16px}
.project-cost-report .workflow-kosten-summe{display:flex;align-items:baseline;flex-wrap:wrap;gap:12px;margin:16px 0}
.project-cost-report .workflow-tabelle{max-width:100%;overflow-x:auto}
.project-cost-report .workflow-tabelle :is(th,td):nth-child(2){white-space:nowrap}
@media(max-width:650px){.project-cost-report .task-field-grid{grid-template-columns:minmax(0,1fr)}}

/* U73 · KI-Verbrauch: belegte Werte und Reserven, keine vermeintliche Rechnung. */
.ki-cost-report :is(header p,small){color:var(--ink-dim)}
.ki-cost-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:24px 0}
.ki-cost-filters label{display:grid;gap:8px;min-width:0}.ki-cost-filters select{width:100%;max-width:100%;min-width:0}
.ki-cost-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.ki-cost-summary .stat-card{display:grid;gap:8px;min-width:0}.ki-cost-summary .num{font-size:clamp(24px,3vw,36px);overflow-wrap:anywhere}
.ki-cost-table{max-width:100%;overflow:auto;margin-top:24px}.ki-cost-table table{width:100%;min-width:780px;border-collapse:collapse}.ki-cost-table :is(th,td){padding:16px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);max-width:340px;overflow-wrap:anywhere}.ki-cost-table td p{margin:8px 0}.ki-cost-report details{margin-top:24px}
@media(max-width:650px){.ki-cost-filters,.ki-cost-summary{grid-template-columns:minmax(0,1fr)}}

/* Eine lange Übergabeaktion drückt den Save-Button auf schmalen Screens nicht zusammen. */
.script-editor-actions.modal-actions{justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:10px;}
.script-editor-actions.modal-actions .btn{flex:0 0 auto;max-width:100%;min-height:44px;}
.script-editor-actions #sk-feedback{flex:1 1 200px;font-size:var(--text-sm,12px);color:var(--ink-dim);}
@media(max-width:600px){.script-editor-actions #sk-feedback{flex-basis:100%;}.script-editor-actions.modal-actions .btn{white-space:normal;}}
