:root{
  --radius:10px;
  --background:oklch(1 0 0);
  --workspace-canvas:oklch(.975 .002 255);
  --foreground:oklch(.145 0 0);
  --card:oklch(1 0 0);
  --card-foreground:oklch(.145 0 0);
  --popover:oklch(1 0 0);
  --popover-foreground:oklch(.145 0 0);
  --primary:oklch(.205 0 0);
  --primary-foreground:oklch(.985 0 0);
  --secondary:oklch(.97 0 0);
  --secondary-foreground:oklch(.205 0 0);
  --muted:oklch(.97 0 0);
  --muted-foreground:oklch(.556 0 0);
  --accent:oklch(.97 0 0);
  --accent-foreground:oklch(.205 0 0);
  --destructive:hsl(0 72% 51%);
  --destructive-foreground:#fff;
  --border:oklch(.922 0 0);
  --input:oklch(.922 0 0);
  --ring:oklch(.708 0 0);
  --success:hsl(142 76% 36%);
  --warning:hsl(38 92% 50%);
  --info:hsl(221 83% 53%);
  --chart-1:hsl(221 83% 53%);
  --chart-2:hsl(270 70% 55%);
  --chart-3:hsl(174 62% 56%);
  --chart-4:hsl(142 76% 36%);
  --chart-5:hsl(38 92% 50%);
  --chart-6:hsl(239 49% 49%);
  --sidebar:oklch(.985 0 0);
  --sidebar-foreground:oklch(.145 0 0);
  --sidebar-primary:oklch(.205 0 0);
  --sidebar-primary-foreground:oklch(.985 0 0);
  --sidebar-accent:oklch(.97 0 0);
  --sidebar-accent-foreground:oklch(.205 0 0);
  --sidebar-border:oklch(.922 0 0);
  --shadow-sm:0 1px 2px rgb(0 0 0/.05);
  --shadow:0 1px 3px rgb(0 0 0/.08),0 1px 2px rgb(0 0 0/.04);
  --shadow-md:0 6px 18px rgb(0 0 0/.09);
  --shadow-lg:0 12px 30px rgb(0 0 0/.12);
  --shadow-xl:0 20px 45px rgb(0 0 0/.15);
  --header-h:64px;
  --sidebar-w:260px;
  --sidebar-collapsed:72px;
}

/* ==========================================================
   UP23 prototype rebuilt from scratch on Cleopatra 2.0.0 UI
   system: Neutral theme tokens + component geometry/behaviour.
   No production Timetracker CSS is reused here.
   ========================================================== */


*{box-sizing:border-box}html{scrollbar-gutter:stable}html,body{margin:0;min-height:100%;font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;color:var(--foreground);background:var(--background);background-image:none;-webkit-font-smoothing:antialiased}body{overflow-x:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}svg{display:block}h1,h2,h3,h4,p{margin:0}.hidden{display:none!important}
.icon{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon.sm{width:15px;height:15px}.icon.lg{width:21px;height:21px}.icon.xl{width:26px;height:26px}
.topbar{height:var(--header-h);position:fixed;inset:0 0 auto 0;background:var(--card);border-bottom:1px solid var(--border);z-index:50;display:flex;align-items:center}.brand{width:var(--sidebar-w);height:100%;display:flex;align-items:center;gap:10px;padding:0 20px;border-right:1px solid var(--border);flex:none}.brand-logo{display:block;width:116px;max-height:34px;object-fit:contain;object-position:left center}.topmain{display:flex;align-items:center;gap:8px;padding:0 20px;flex:1}.icon-btn{width:40px;height:40px;border:0;background:transparent;color:var(--muted-foreground);border-radius:8px;display:grid;place-items:center;transition:background .15s,color .15s}.icon-btn:hover{background:var(--muted);color:var(--foreground)}.top-spacer{flex:1}.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,hsl(24 95% 70%),hsl(24 95% 50%));color:white;display:grid;place-items:center;font-size:12px;font-weight:700;border:2px solid var(--card);box-shadow:0 0 0 1px var(--border)}.avatar>img,.mini-avatar>img{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit}
.sidebar{position:fixed;top:var(--header-h);bottom:0;left:0;width:var(--sidebar-w);background:var(--sidebar);color:var(--sidebar-foreground);border-right:1px solid var(--sidebar-border);z-index:40;overflow-y:auto;overflow-x:visible;transition:width .3s}.sidebar-inner{padding:20px 0}.nav-group{margin:0}.nav-label{display:flex;align-items:center;height:32px;padding:8px 24px;margin-top:16px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb,var(--sidebar-foreground) 50%,transparent);font-weight:600}.nav-group:first-child .nav-label{margin-top:0}.nav-link{position:relative;height:44px;padding:0 24px;display:flex;align-items:center;gap:12px;border-radius:0;color:var(--sidebar-foreground);font-size:14px;font-weight:500;text-decoration:none;transition:background .2s,color .2s;margin:0;cursor:pointer}.nav-link>.icon{width:20px;height:20px;flex:none;color:color-mix(in srgb,var(--sidebar-foreground) 50%,transparent);transition:color .2s}.nav-link:hover,.nav-link:focus{background:var(--sidebar-accent);color:var(--sidebar-foreground)}.nav-link:hover>.icon,.nav-link:focus>.icon{color:var(--sidebar-foreground)}.nav-link.active{background:color-mix(in srgb,var(--primary) 10%,transparent);color:var(--primary)}.nav-link.active>.icon{color:var(--primary)}.nav-link .nav-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-badge{margin-left:auto;font-size:11px;line-height:normal;padding:2px 6px;border-radius:5px;background:hsl(214 100% 96%);color:hsl(221 83% 53%);font-weight:600}.workspace-logo{width:32px;height:32px;border-radius:8px;background:var(--primary);color:var(--primary-foreground);display:grid;place-items:center;font-size:11px;font-weight:800}.workspace-meta strong{display:block;font-size:12px}.workspace-meta span{display:block;color:var(--muted-foreground);font-size:11px;margin-top:2px}

.main{margin-left:var(--sidebar-w);padding-top:var(--header-h);min-height:100vh;transition:margin-left .25s;background:var(--workspace-canvas)}.page{display:none;padding:24px;max-width:1740px;margin:0 auto}.page.active{display:block}#page-tasks{max-width:none;width:100%;box-sizing:border-box}#page-tasks>:not(.task-view){width:100%;max-width:1692px;margin-left:auto;margin-right:auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}.page-head .actions :is(.btn-outline,.btn-ghost){background:var(--card)}.page-head .actions :is(.btn-outline,.btn-ghost):hover{background:var(--accent)}.page-title{font-size:24px;line-height:1.2;letter-spacing:-.03em;font-weight:600}.page-sub{font-size:13px;color:var(--muted-foreground);margin-top:6px}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.setting-toggle.task-group-switch{min-height:40px;height:40px;padding:0;border:0;border-radius:0;background:transparent;justify-content:flex-start;gap:12px;cursor:pointer;user-select:none;width:auto;flex:none}.setting-toggle.task-group-switch:hover{background:transparent}.task-group-switch>span{min-width:max-content}.task-group-switch strong{font-size:12px;font-weight:500;white-space:nowrap}.task-group-switch input[type="checkbox"]{cursor:pointer}
.btn{height:40px;padding:0 16px;border-radius:6px;border:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;font-size:14px;font-weight:500;transition:all .15s;outline:none}.btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.btn-primary{background:var(--primary);color:var(--primary-foreground)}.btn-primary:hover{opacity:.9}.btn-secondary{background:var(--secondary);color:var(--secondary-foreground)}.btn-secondary:hover{opacity:.8}.btn-outline{background:var(--card);border:1px solid var(--border);color:var(--foreground)}.btn-outline:hover{background:var(--accent)}.btn-ghost{background:transparent;color:var(--foreground)}.btn-ghost:hover{background:var(--muted)}.btn-destructive{background:var(--destructive);color:var(--destructive-foreground)}.btn-sm{height:32px;padding:0 12px;font-size:12px}.btn-icon{width:40px;padding:0}.btn-icon.btn-sm{width:32px}.btn .icon{width:16px;height:16px}
.card{background:var(--card);color:var(--card-foreground);border:1px solid var(--border);border-radius:12px}.card-pad{padding:18px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.card-title{font-size:14px;font-weight:600}.card-sub{font-size:12px;color:var(--muted-foreground);margin-top:4px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px}.metric{padding:16px}.metric-top{display:flex;align-items:center;justify-content:space-between}.metric-label{font-size:13px;color:var(--muted-foreground)}.metric-icon{width:34px;height:34px;border-radius:9px;background:var(--muted);display:grid;place-items:center;color:var(--foreground)}.metric-value{font-size:27px;font-weight:700;letter-spacing:-.04em;margin-top:14px}.metric-bottom{display:flex;align-items:center;gap:7px;margin-top:7px;font-size:11px;color:var(--muted-foreground)}.delta{display:inline-flex;align-items:center;border-radius:5px;padding:3px 6px;font-weight:600}.delta.up{color:hsl(142 70% 33%);background:hsl(142 76% 95%)}.delta.down{color:hsl(0 70% 48%);background:hsl(0 85% 96%)}
.grid-12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.span-12{grid-column:1/-1}.span-8{grid-column:span 8}.span-7{grid-column:span 7}.span-6{grid-column:span 6}.span-5{grid-column:span 5}.span-4{grid-column:span 4}.span-3{grid-column:span 3}.stack{display:flex;flex-direction:column;gap:16px}.chart-card{padding:18px;min-height:300px}.chart-svg{width:100%;height:225px;margin-top:10px}.chart-grid{stroke:var(--border);stroke-width:1}.chart-label{fill:var(--muted-foreground);font-size:10px}.chart-area{fill:color-mix(in srgb,var(--primary) 11%,transparent)}.chart-line{fill:none;stroke:var(--primary);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.chart-line.alt{stroke:var(--chart-2);opacity:.8}.chart-bar{fill:color-mix(in srgb,var(--chart-1) 82%,white)}.legend{display:flex;align-items:center;gap:14px;font-size:11px;color:var(--muted-foreground)}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:8px;height:8px;border-radius:50%;background:var(--primary)}.legend .alt i{background:var(--chart-2)}
.progress{height:7px;border-radius:999px;background:var(--muted);overflow:hidden}.progress>span{display:block;height:100%;background:var(--chart-1);border-radius:inherit}.progress>span.tone-blue{background:var(--chart-1)}.progress>span.tone-purple{background:var(--chart-2)}.progress>span.tone-teal{background:var(--chart-3)}.progress>span.tone-green{background:var(--chart-4)}.progress>span.tone-amber{background:var(--chart-5)}.goal-ring{width:126px;height:126px;border-radius:50%;background:conic-gradient(var(--chart-1) 0 72%,var(--muted) 72% 100%);display:grid;place-items:center;margin:16px auto}.goal-ring:after{content:"";width:100px;height:100px;border-radius:50%;background:var(--card);position:absolute}.ring-wrap{position:relative;display:grid;place-items:center}.ring-label{position:absolute;z-index:2;text-align:center}.ring-label strong{font-size:22px}.ring-label span{display:block;font-size:11px;color:var(--muted-foreground);margin-top:2px}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--border);margin-bottom:16px}.tabs{display:flex;gap:3px;padding:4px;background:var(--card);border:1px solid var(--border);border-radius:10px}.tab{height:36px;border:0;background:transparent;color:var(--muted-foreground);border-radius:7px;padding:0 12px;font-size:13px;font-weight:500}.tab:hover{background:color-mix(in srgb,var(--chart-1) 6%,var(--card));color:var(--foreground)}.tab.active{color:var(--foreground);background:color-mix(in srgb,var(--chart-1) 13%,var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chart-1) 22%,var(--border))}.search{height:40px;display:flex;align-items:center;gap:8px;border:1px solid var(--input);border-radius:6px;background:var(--background);padding:0 11px;color:var(--muted-foreground);min-width:230px}.search input{border:0;outline:0;background:transparent;color:var(--foreground);min-width:0;width:100%;font-size:13px}.search input::placeholder{color:var(--muted-foreground)}
.form-control{width:100%;height:40px;border:1px solid var(--input);border-radius:6px;background:var(--background);color:var(--foreground);padding:0 12px;font-size:14px;outline:0}.form-control:focus{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ring) 20%,transparent)}.app-date-input-wrap{position:relative;width:100%;min-width:0}.app-date-input-wrap>.form-control{padding-right:42px}.app-date-picker-trigger{position:absolute;right:5px;top:50%;transform:translateY(-50%);z-index:1}.app-date-picker-trigger:disabled{cursor:default;opacity:.42}.app-date-native-picker{position:absolute;right:18px;bottom:1px;width:1px;height:1px;opacity:0;pointer-events:none;border:0;padding:0}.app-date-preset-menu{display:none;position:absolute;z-index:45;top:calc(100% + 6px);right:0;width:190px;padding:5px;border:1px solid var(--border);border-radius:8px;background:var(--card);box-shadow:var(--shadow-md)}.app-date-preset-menu.is-open{display:grid}.app-date-preset-menu.is-up{top:auto;bottom:calc(100% + 6px)}.app-date-preset-menu button{width:100%;min-height:34px;display:flex;align-items:center;gap:8px;padding:0 9px;border:0;border-radius:6px;background:transparent;color:var(--foreground);font:inherit;font-size:12px;text-align:left;cursor:pointer}.app-date-preset-menu button:hover,.app-date-preset-menu button:focus-visible{background:var(--muted);outline:0}.app-date-preset-separator{display:block;height:1px;background:var(--border);margin:4px 3px}.app-date-input-wrap.is-disabled .app-date-preset-menu{display:none}textarea.form-control{height:100px;padding:10px 12px;resize:vertical}.field label{font-size:13px;font-weight:500;display:block;margin-bottom:7px}.field small{display:block;font-size:11px;color:var(--muted-foreground);margin-top:5px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.select-wrap{position:relative}.select-wrap:after{content:"";position:absolute;right:12px;top:50%;width:16px;height:16px;background:var(--muted-foreground);transform:translateY(-50%) rotate(0deg);transition:transform .18s ease;pointer-events:none;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27m6 9 6 6 6-6%27/%3E%3C/svg%3E") center/16px 16px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27m6 9 6 6 6-6%27/%3E%3C/svg%3E") center/16px 16px no-repeat}.select-wrap.select-open:after{transform:translateY(-50%) rotate(180deg)}.select-wrap:has(select:disabled).select-open:after,.select-wrap:has(select[aria-disabled="true"]).select-open:after{transform:translateY(-50%) rotate(0deg)}.select-wrap select{appearance:none;-webkit-appearance:none;padding-right:38px}.select-wrap select:not(:disabled):not([aria-disabled="true"]){cursor:pointer}.select-wrap select:disabled,.select-wrap select[aria-disabled="true"]{cursor:default}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:600;border-radius:6px}.badge-priority:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.badge-gray{background:var(--muted);color:var(--muted-foreground)}.badge-blue{background:hsl(214 100% 96%);color:hsl(221 83% 53%)}.badge-green{background:hsl(142 76% 95%);color:hsl(142 76% 30%)}.badge-amber{background:hsl(48 96% 92%);color:hsl(32 95% 38%)}.badge-red{background:hsl(0 86% 96%);color:hsl(0 72% 51%)}.badge-purple{background:hsl(270 100% 96%);color:hsl(270 70% 45%)}
/* Cleopatra Todo mapping */
.kanban{--kanban-column-min-width:380px;display:grid;grid-template-columns:repeat(var(--kanban-column-count,4),minmax(var(--kanban-column-min-width),1fr));grid-auto-columns:minmax(var(--kanban-column-min-width),1fr);gap:16px;overflow-x:auto;overflow-y:visible;overscroll-behavior-x:contain;width:100%;max-width:100%;box-sizing:border-box;padding:0 4px 8px;scroll-padding-inline:4px;align-items:start}.kanban-col{--kanban-column-background:transparent;box-sizing:border-box;background:transparent;border:1px solid transparent;border-radius:12px;padding:12px;min-height:490px;width:auto;min-width:var(--kanban-column-min-width);max-width:none;transition:background-color var(--duration-150,150ms) ease,border-color var(--duration-150,150ms) ease,box-shadow var(--duration-150,150ms) ease}.kanban-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;position:relative}.kanban-col.is-current-day>.kanban-head:after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:2px;border-radius:999px;background:var(--chart-1)}.kanban-name{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;min-width:0}.kanban-name-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.kanban-name-copy>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kanban-date{font-size:10px;font-weight:500;line-height:1.2;color:var(--muted-foreground)}.kanban-capacity{font-size:10px;font-weight:600;line-height:1.2;color:var(--muted-foreground);background:var(--muted);padding:2px 6px;border-radius:5px;white-space:nowrap}.kanban-capacity.is-over{color:var(--destructive);background:color-mix(in srgb,var(--destructive) 8%,var(--card))}.kanban-capacity.is-over.is-informational{color:#b45309;background:color-mix(in srgb,#f59e0b 10%,var(--card))}.status-dot{width:10px;height:10px;border-radius:50%;background:#a8a29e}.status-dot.blue{background:#3b82f6}.status-dot.amber{background:#f59e0b}.status-dot.green{background:#10b981}.count{font-size:11px;color:hsl(221 83% 53%);background:hsl(214 100% 96%);padding:2px 6px;border-radius:5px;font-weight:600}.task-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:15px;box-shadow:none;transition:background .15s,border-color .15s,box-shadow .15s;cursor:pointer;margin-bottom:12px}.task-card:hover{background:color-mix(in srgb,var(--muted) 35%,var(--card));border-color:color-mix(in srgb,var(--foreground) 16%,var(--border))}.task-card.is-selected{background:color-mix(in srgb,var(--chart-1) 5%,var(--card));border-color:color-mix(in srgb,var(--chart-1) 78%,var(--border));box-shadow:0 0 0 1px color-mix(in srgb,var(--chart-1) 22%,transparent)}.task-card.is-selected:hover{background:color-mix(in srgb,var(--chart-1) 7%,var(--card));border-color:var(--chart-1)}.task-labels{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:11px}.task-title{font-size:13px;font-weight:600;line-height:1.45}.task-desc{font-size:11px;color:var(--muted-foreground);line-height:1.55;margin-top:5px}.task-foot{display:flex;align-items:center;justify-content:space-between;margin-top:13px}.avatars{display:flex}.mini-avatar{width:24px;height:24px;border-radius:50%;border:2px solid var(--card);margin-left:-5px;display:grid;place-items:center;color:white;font-size:9px;font-weight:600}.mini-avatar:first-child{margin-left:0}.mini-avatar.a{background:#6366f1}.mini-avatar.b{background:#0ea5e9}.mini-avatar.c{background:#10b981}.task-stats{display:flex;align-items:center;gap:6px;font-size:11px}.task-stat{display:flex;align-items:center;gap:3px;min-height:28px;padding:4px 6px;border-radius:6px;color:var(--info);font-weight:600;transition:background .15s,color .15s}.task-stat .icon{color:currentColor}.task-stat:hover{background:var(--muted);color:var(--foreground)}.task-stats>.icon-btn.small{width:28px;height:28px;border-radius:6px;color:var(--info)}.task-stats>.icon-btn.small:hover{background:var(--muted);color:var(--foreground)}
.table-card{overflow:hidden}.table-head,.table-row{display:grid;align-items:center;gap:14px;padding:12px 16px}.table-head{background:var(--muted);font-size:11px;font-weight:600;color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border)}.table-row{font-size:13px;border-bottom:1px solid var(--border);transition:background .15s,box-shadow .15s,border-color .15s}.table-row:last-child{border-bottom:0}.table-row:hover{background:color-mix(in srgb,var(--muted) 45%,transparent)}.table-row.is-selected{background:color-mix(in srgb,var(--chart-1) 5%,var(--card));border-bottom-color:color-mix(in srgb,var(--chart-1) 72%,var(--border));box-shadow:inset 1px 0 0 color-mix(in srgb,var(--chart-1) 72%,var(--border)),inset -1px 0 0 color-mix(in srgb,var(--chart-1) 72%,var(--border)),inset 0 1px 0 color-mix(in srgb,var(--chart-1) 72%,var(--border))}.table-row.is-selected+.table-row.is-selected{box-shadow:inset 1px 0 0 color-mix(in srgb,var(--chart-1) 72%,var(--border)),inset -1px 0 0 color-mix(in srgb,var(--chart-1) 72%,var(--border))}.table-row.is-selected:last-child{box-shadow:inset 1px 0 0 color-mix(in srgb,var(--chart-1) 72%,var(--border)),inset -1px 0 0 color-mix(in srgb,var(--chart-1) 72%,var(--border)),inset 0 1px 0 color-mix(in srgb,var(--chart-1) 72%,var(--border)),inset 0 -1px 0 color-mix(in srgb,var(--chart-1) 72%,var(--border))}.table-row.is-selected+.table-row.is-selected:last-child{box-shadow:inset 1px 0 0 color-mix(in srgb,var(--chart-1) 72%,var(--border)),inset -1px 0 0 color-mix(in srgb,var(--chart-1) 72%,var(--border)),inset 0 -1px 0 color-mix(in srgb,var(--chart-1) 72%,var(--border))}.table-row.is-selected:hover{background:color-mix(in srgb,var(--chart-1) 7%,var(--card))}.clients-grid{grid-template-columns:36px 2.2fr 1.2fr 1.1fr 1fr 1fr}.contracts-grid{grid-template-columns:2.1fr 1.4fr 1fr 1fr 1fr}.user-cell{display:flex;align-items:center;gap:11px;min-width:0}.user-cell .avatar{width:34px;height:34px;flex:none}.user-copy{min-width:0}.user-copy strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-copy span{display:block;font-size:11px;color:var(--muted-foreground);margin-top:2px}

.timeline{--timeline-marker-size:13px;--timeline-gutter:28px;--timeline-axis:6px;position:relative;padding-left:var(--timeline-gutter)}.timeline:before{content:"";position:absolute;left:var(--timeline-axis);top:7px;bottom:7px;width:1px;background:var(--border)}.timeline-item{position:relative;padding:0 0 16px 0}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:"";box-sizing:border-box;position:absolute;left:calc(-1 * var(--timeline-gutter));top:3px;width:var(--timeline-marker-size);height:var(--timeline-marker-size);border-radius:50%;background:var(--card);border:2px solid var(--chart-1)}.timeline-item strong{display:block;font-size:12px}.timeline-item span{display:block;font-size:11px;color:var(--muted-foreground);margin-top:3px}

.message-body{white-space:pre-wrap;overflow-wrap:anywhere}.message-link{color:var(--primary);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;overflow-wrap:anywhere;word-break:break-word}.message-link:hover{color:color-mix(in srgb,var(--primary) 82%,var(--foreground))}.msg-read-receipt{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;margin-left:5px;color:var(--success);vertical-align:-3px;cursor:help;outline:none}.msg-read-receipt .icon{width:12px;height:12px}.msg-read-receipt::after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 7px);z-index:120;padding:6px 8px;border:1px solid var(--border);border-radius:7px;background:var(--popover);box-shadow:var(--shadow-md);color:var(--popover-foreground);font-size:10px;font-weight:500;line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transform:translate(-50%,3px);transition:opacity .12s,visibility .12s,transform .12s}.msg-read-receipt:hover::after,.msg-read-receipt:focus::after{opacity:1;visibility:visible;transform:translate(-50%,0)}
.chat-layout{display:grid;grid-template-columns:280px 1fr;height:var(--workspace-panel-height,clamp(520px,calc(100dvh - 210px),760px));min-height:0;overflow:hidden}.chat-list{display:flex;min-height:0;flex-direction:column;overflow:hidden;border-right:1px solid var(--border)}.chat-conversations-scroll{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.chat-head-search{width:min(320px,36vw);min-width:210px;flex:none}.chat-head-actions{flex-wrap:nowrap;min-width:0}.chat-layout .chat-head-search{width:min(280px,28vw);min-width:180px}.chat-search-mark{padding:0 2px;border-radius:3px;background:color-mix(in srgb,var(--warning) 35%,var(--card));color:inherit}.chat-search-empty{padding:12px 10px;font-size:11px;color:var(--muted-foreground)}.msg-row.chat-search-match{cursor:pointer}.msg-row.chat-search-match:hover .msg{border-color:color-mix(in srgb,var(--primary) 30%,var(--border))}.msg-row.chat-search-target .msg{outline:3px solid var(--chart-1);outline-offset:2px;box-shadow:0 0 0 5px color-mix(in srgb,var(--chart-1) 18%,transparent),var(--shadow-sm);border-color:var(--chart-1)}.chat-project-link{border:0;background:transparent;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer}.chat-project-link:hover .user-copy strong,.chat-project-link:focus-visible .user-copy strong{color:var(--primary)}.chat-project-link:focus-visible{outline:2px solid color-mix(in srgb,var(--ring) 35%,transparent);outline-offset:4px;border-radius:6px}.chat-project-link:disabled{cursor:default;pointer-events:none}.conversation{position:relative;display:flex;align-items:center;gap:10px;padding:12px 34px 12px 14px;border-bottom:1px solid var(--border);transition:background .15s,border-color .15s,box-shadow .15s;cursor:pointer}.conversation:hover{background:color-mix(in srgb,var(--muted) 72%,var(--card))}.conversation.active{background:var(--muted);box-shadow:inset 0 0 0 1px var(--border)}.conversation.is-unread{background:color-mix(in srgb,var(--success) 5%,var(--card));border-left:2px solid var(--success);padding-left:12px}.conversation.is-unread:hover{background:color-mix(in srgb,var(--success) 10%,var(--muted))}.conversation.is-unread.active{background:color-mix(in srgb,var(--success) 14%,var(--muted));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--success) 28%,var(--border))}.conversation .avatar{width:32px;height:32px;flex:none}.conversation-copy{min-width:0;flex:1}.conversation-title-row{display:flex;align-items:center;gap:7px}.conversation strong{font-size:12px}.conversation.is-unread strong{font-weight:700}.conversation-unread-dot{position:absolute;right:14px;top:50%;width:8px;height:8px;border-radius:50%;background:var(--success);transform:translateY(-50%);box-shadow:0 0 0 3px color-mix(in srgb,var(--success) 12%,transparent)}.conversation p{font-size:10px;color:var(--muted-foreground);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.chat-main{display:flex;min-height:0;flex-direction:column}.chat-head{height:58px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px}.chat-messages{min-height:0;padding:18px;flex:1;background:color-mix(in srgb,var(--muted) 28%,transparent);overflow:auto;scrollbar-gutter:stable}.msg-row{display:flex;align-items:flex-end;gap:8px;margin-bottom:14px}.msg-row.me{justify-content:flex-start;flex-direction:row-reverse}.message-avatar{width:28px;height:28px;flex:none;font-size:10px;border-width:1px}.msg{max-width:68%;border:1px solid var(--border);border-radius:10px;background:var(--card);padding:10px 12px;font-size:12px;line-height:1.5;box-shadow:var(--shadow-sm)}.msg-row.me .msg{background:color-mix(in srgb,var(--primary) 9%,var(--card));border-color:color-mix(in srgb,var(--primary) 25%,var(--border))}
.msg-row.msg-admin .msg{background:color-mix(in srgb,var(--info) 16%,var(--card));border-color:color-mix(in srgb,var(--info) 36%,var(--border));color:var(--foreground)}
.msg-row.msg-client .msg{background:color-mix(in srgb,var(--success) 15%,var(--card));border-color:color-mix(in srgb,var(--success) 34%,var(--border));color:var(--foreground)}.msg-time{display:block;font-size:9px;color:var(--muted-foreground);margin-top:5px}.composer{padding:12px;border-top:1px solid var(--border);display:flex;align-items:flex-start;gap:8px}.composer textarea{height:auto;min-height:calc(5 * 1.5em + 20px);min-width:0;flex:1;resize:vertical}.composer>.icon-btn,.composer>.btn{flex:none}
.ui-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.swatches{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.swatch{height:72px;border:1px solid var(--border);border-radius:9px;padding:9px;font-size:10px;display:flex;align-items:flex-end}.swatch.primary{background:var(--primary);color:var(--primary-foreground)}.swatch.secondary{background:var(--secondary)}.swatch.muted{background:var(--muted)}.swatch.success{background:var(--success);color:white}.swatch.destructive{background:var(--destructive);color:white}.component-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.demo-section{padding:18px}.demo-section+.demo-section{border-top:1px solid var(--border)}.demo-label{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted-foreground);font-weight:600;margin-bottom:12px}

@media(max-width:1200px){.metrics{grid-template-columns:repeat(2,1fr)}.span-8,.span-7,.span-6,.span-5,.span-4,.span-3{grid-column:span 12}}
@media(max-width:900px){:root{--sidebar-w:0px}.brand{width:auto;border-right:0}.brandname{display:none}.sidebar{display:none}.main{margin-left:0}.page{padding:16px}.metrics{grid-template-columns:1fr 1fr}.ui-grid{grid-template-columns:1fr}.chat-layout{grid-template-columns:1fr;height:auto;min-height:0}.chat-list{display:none}.form-grid{grid-template-columns:1fr}.page-head{align-items:flex-start}.task-card{min-width:0}.task-title,.task-desc{overflow-wrap:anywhere}}
@media(max-width:620px){.metrics{grid-template-columns:1fr}.page-head{flex-direction:column}.actions{width:100%}.actions .btn{flex:1}.toolbar{align-items:stretch;flex-direction:column}.toolbar .actions{width:auto}.project-task-tools{display:grid;grid-template-columns:auto minmax(0,1fr);width:100%!important}.project-task-tools #projectTaskFilterToggle{width:auto}.project-task-search{width:100%;min-width:0}.search{width:100%}.swatches{grid-template-columns:1fr 1fr}.table-card{overflow-x:auto}.table-head,.table-row{min-width:850px}}

/* 0.3 - fixed Cleopatra style, separated client analytics/list and project detail */

.analytics-client-grid{grid-template-columns:2.2fr 1fr 1fr 1fr}.donut-wrap{position:relative;display:grid;place-items:center;height:150px;margin:4px 0 8px}.client-donut{width:132px;height:132px;border-radius:50%;background:conic-gradient(var(--success) 0 27%,var(--info) 27% 71%,var(--muted) 71% 100%);position:absolute}.client-donut:after{content:"";position:absolute;inset:22px;border-radius:50%;background:var(--card)}.donut-center{position:relative;z-index:2;text-align:center}.donut-center strong{display:block;font-size:24px}.donut-center span{font-size:11px;color:var(--muted-foreground)}.status-breakdown{display:grid;gap:9px;margin-top:8px}.status-breakdown>div{display:flex;align-items:center;justify-content:space-between;font-size:12px}.status-breakdown span{display:flex;align-items:center;gap:8px;color:var(--muted-foreground)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.green{background:var(--success)}.dot.blue{background:var(--info)}.dot.gray{background:#a8a29e}.bars-horizontal{display:grid;gap:14px;margin-top:14px}.bar-h{display:grid;grid-template-columns:72px 1fr 44px;align-items:center;gap:10px;font-size:11px}.bar-h>span{color:var(--muted-foreground)}.bar-h>div{height:8px;border-radius:999px;background:var(--muted);overflow:hidden}.bar-h i{display:block;height:100%;border-radius:inherit;background:var(--chart-1)}.bars-horizontal .bar-h:nth-child(6n+2) i{background:var(--chart-2)}.bars-horizontal .bar-h:nth-child(6n+3) i{background:var(--chart-3)}.bars-horizontal .bar-h:nth-child(6n+4) i{background:var(--chart-4)}.bars-horizontal .bar-h:nth-child(6n+5) i{background:var(--chart-5)}.bars-horizontal .bar-h:nth-child(6n+6) i{background:var(--chart-6)}.bar-h strong{text-align:right;font-size:11px}.list-footer{display:flex;align-items:center;justify-content:space-between;margin-top:14px;color:var(--muted-foreground);font-size:11px}.client-list-footer{justify-content:flex-end;margin-top:0;padding:12px 16px;border-top:1px solid var(--border);background:var(--card)}.pagination{display:flex;align-items:center;gap:4px}.pagination-item{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;font-size:12px;color:var(--foreground);background:none;border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.pagination-item:hover:not(:disabled):not(.is-active){background:var(--muted)}.pagination-item.is-active{background:var(--primary);color:var(--primary-foreground);border-color:var(--primary)}.pagination-item:disabled{opacity:.5;cursor:not-allowed}.pagination-item .icon{width:15px;height:15px}.pagination-next .icon{transform:rotate(180deg)}.pagination-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;color:var(--muted-foreground)}.pagination-sm .pagination-item{min-width:28px;height:28px;font-size:11px}.client-pagination-pages{display:flex;align-items:center;gap:4px}
.project-breadcrumb{display:flex;align-items:center;gap:6px;color:var(--muted-foreground);font-size:12px;margin-bottom:14px}.project-breadcrumb .btn{margin-left:-10px}.project-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.project-page-head{align-items:center}.project-metrics .metric-date{font-size:25px}.project-panel{display:none}.project-panel.active{display:block}.project-detail-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}.project-progress-main{margin:8px 0 20px}.project-progress-value{display:flex;align-items:end;justify-content:space-between;margin-bottom:10px}.project-progress-value strong{font-size:28px;letter-spacing:-.04em}.project-progress-value span{font-size:11px;color:var(--muted-foreground)}.progress.lg{height:9px}.project-progress-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;border-top:1px solid var(--border);padding-top:16px}.project-progress-grid>div>span{font-size:11px;color:var(--muted-foreground)}.project-progress-grid>div>strong{display:block;font-size:13px;margin:5px 0 9px}.project-task-grid{grid-template-columns:2fr 1fr .8fr}.row-sub{display:block;font-size:10px;color:var(--muted-foreground);margin-top:3px}.icon-btn.small{width:30px;height:30px}.info-list{display:grid}.info-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:10px 0;border-bottom:1px solid var(--border);font-size:12px}.info-row:last-child{border-bottom:0}.info-row span{color:var(--muted-foreground)}.info-row strong{text-align:right;font-weight:500}.project-client-card{display:flex;align-items:center;gap:11px}.project-client-card>div:last-child{min-width:0}.project-client-card strong{display:block;font-size:13px}.project-client-card span{display:block;font-size:11px;color:var(--muted-foreground);margin-top:3px}.client-access{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border);font-size:10px;color:var(--muted-foreground)}.link-list{display:flex;flex-direction:column;gap:6px;align-content:flex-start}.project-link-row{display:flex;align-items:center;gap:6px}.project-link-row>a{flex:1;min-width:0}.project-link-create-row{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) auto;margin-bottom:8px}.project-link-form-actions{display:flex;align-items:stretch;gap:8px;white-space:nowrap}.project-link-form-actions .btn{height:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}.link-list a{display:flex;align-items:center;gap:10px;padding:9px;border-radius:8px;text-decoration:none;color:var(--foreground);transition:background .15s}.link-list a:hover{background:var(--muted)}.link-icon{width:32px;height:32px;border:1px solid var(--border);border-radius:8px;display:grid;place-items:center;flex:none}.link-list strong{display:block;font-size:12px}.link-list span{display:block;font-size:10px;color:var(--muted-foreground);margin-top:2px}.done-card{opacity:.62}.project-files-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(330px,.76fr);grid-template-rows:auto minmax(0,1fr);gap:16px;--project-materials-height:min(540px,max(360px,calc(100dvh - 250px)));height:var(--project-materials-height);min-height:0;align-items:stretch}.file-grid{grid-template-columns:2fr .7fr .8fr 34px}.file-name{display:flex;align-items:center;gap:10px}.file-icon{width:34px;height:34px;border:1px solid var(--border);border-radius:8px;display:grid;place-items:center;font-size:9px;font-weight:700;color:var(--muted-foreground);background:var(--muted)}.file-name strong{display:block;font-size:12px}.file-name span{display:block;font-size:10px;color:var(--muted-foreground);margin-top:2px}.project-chat{display:flex;min-height:0;flex-direction:column;overflow:hidden}.project-chat .chat-messages{min-height:0;max-height:none;flex:1;scrollbar-gutter:stable}.project-chat .chat-head{flex:none;border-bottom:1px solid var(--border)}.project-task-toolbar{justify-content:space-between}.project-task-tools{flex-wrap:nowrap}.project-task-tools #projectTaskFilterToggle{flex:none}.project-task-search{min-width:230px;width:min(360px,40vw)}.admin-notes-chat .chat-messages{min-height:0;max-height:none;scrollbar-gutter:stable}.admin-notes-chat .msg{max-width:min(760px,88%)}.admin-note-message{width:100%}.admin-note-body{white-space:pre-wrap;overflow-wrap:anywhere}.admin-note-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:7px}.admin-note-meta .msg-time{margin-top:0}.admin-note-actions{display:flex;align-items:center;gap:4px;opacity:.62;transition:opacity .15s}.admin-note-message:hover .admin-note-actions,.admin-note-actions:focus-within{opacity:1}.admin-note-editor{display:grid;gap:10px;min-width:min(520px,70vw)}.admin-note-editor .form-control{resize:vertical}.admin-note-editor-actions{display:flex;justify-content:flex-end;gap:8px}.admin-notes-composer textarea{flex:1}.admin-note-send{flex:none}.admin-note-file-preview{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:0 12px 10px}.admin-note-file-chip{display:inline-flex;align-items:center;gap:5px;max-width:240px;padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--muted);font-size:10px}.admin-note-file-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-note-attachments{display:grid;gap:6px;margin-top:8px}.admin-note-attachment{color:var(--foreground);text-decoration:none}.admin-note-attachment:hover{background:var(--muted)}
@media(max-width:1100px){.project-detail-grid,.project-files-layout{grid-template-columns:1fr}.analytics-client-grid{min-width:740px}.project-progress-grid{grid-template-columns:1fr}}



/* ==========================================================
   Prototype 0.4 - application components
   New components are defined once and consume the shared tokens.
   ========================================================== */

/* top-right account */
.user-trigger{height:42px;border:0;background:transparent;border-radius:9px;display:flex;align-items:center;gap:9px;padding:4px 7px;color:var(--foreground)}
.user-trigger:hover,.user-trigger[aria-expanded="true"]{background:var(--muted)}
.user-trigger-copy{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2}
.user-trigger-copy strong{font-size:12px;font-weight:600}.user-trigger-copy span{font-size:10px;color:var(--muted-foreground);margin-top:2px}
/* Cleopatry: barwne avatary z jednolitym bursztynowym akcentem. */
.avatar-neutral,.avatar-amber{background:linear-gradient(135deg,hsl(24 95% 70%),hsl(24 95% 50%));color:#fff}.avatar-blue{background:#2563eb}.avatar-purple{background:#7c3aed}.avatar-lg{width:44px;height:44px;font-size:13px}
.user-menu{position:fixed;top:72px;right:20px;z-index:120;width:270px;max-width:calc(100vw - 32px);display:none;background:var(--popover);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);overflow:hidden;transform-origin:top right}
.user-menu.open{display:block;animation:menuIn .14s ease-out}.user-menu-profile{display:flex;align-items:center;gap:11px;padding:14px;border-bottom:1px solid var(--border)}.user-menu-profile>div:last-child{min-width:0}.user-menu-profile strong,.user-menu-profile span{display:block}.user-menu-profile strong{font-size:13px}.user-menu-profile span{font-size:11px;color:var(--muted-foreground);margin-top:3px;overflow:hidden;text-overflow:ellipsis}.menu-body{padding:6px}.menu-item{height:38px;width:100%;border:0;background:transparent;border-radius:7px;display:flex;align-items:center;gap:10px;padding:0 10px;color:var(--popover-foreground);font-size:13px;text-align:left}.menu-item:hover{background:var(--muted)}.menu-item.danger,.danger-text{color:var(--destructive)}.menu-divider{height:1px;background:var(--border);margin:5px 0}@keyframes menuIn{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}

.context-menu{position:fixed;z-index:130;min-width:220px;background:var(--popover);color:var(--popover-foreground);border:1px solid var(--border);border-radius:9px;box-shadow:var(--shadow-lg);padding:5px;display:none}.context-menu.open{display:block}.context-menu-label{padding:7px 10px 6px;color:var(--muted-foreground);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* overlays */
.overlay-backdrop{position:fixed;inset:0;z-index:100;background:rgb(0 0 0/.42);opacity:0;visibility:hidden;transition:opacity .18s ease,visibility .18s ease}.overlay-backdrop.open{opacity:1;visibility:visible}
.drawer{position:fixed;top:0;right:0;bottom:0;z-index:110;width:min(100%,560px);background:var(--card);border-left:1px solid var(--border);box-shadow:none;display:flex;flex-direction:column;transform:translateX(101%);transition:transform .22s ease,box-shadow .22s ease}.drawer.open{transform:none;box-shadow:var(--shadow-xl)}.drawer-lg{width:min(100%,520px)}.drawer-xl{width:min(100%,680px)}.drawer-header,.drawer-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px}.drawer-header{border-bottom:1px solid var(--border)}.drawer-footer{border-top:1px solid var(--border);background:var(--card)}.drawer-footer-leading{display:flex;align-items:center;gap:12px;min-width:0}.drawer-footer.split{justify-content:space-between}.drawer-body{padding:20px;overflow:auto;flex:1}.drawer-title{font-size:17px;font-weight:600;letter-spacing:-.01em}.drawer-close,.modal-close{width:34px;height:34px;border:0;border-radius:7px;background:transparent;color:var(--muted-foreground);display:grid;place-items:center}.drawer-close:hover,.modal-close:hover{background:var(--muted);color:var(--foreground)}.drawer-section{padding-top:20px;margin-top:20px;border-top:1px solid var(--border)}.drawer-section-title{font-size:13px;font-weight:600;margin-bottom:12px}.drawer-section-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.drawer-field,.modal-field{margin-top:16px}.helper{font-size:11px;color:var(--muted-foreground);line-height:1.5;margin-top:10px}
.modal{position:fixed;inset:0;z-index:111;display:none;align-items:center;justify-content:center;padding:20px;pointer-events:none}.modal.open{display:flex;pointer-events:auto}.modal-content{width:min(100%,640px);max-height:calc(100vh - 40px);display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-xl);animation:modalIn .16s ease-out}.modal-lg .modal-content{width:min(100%,760px)}.modal-xl .modal-content{width:min(100%,1040px)}.modal-header,.modal-footer{padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-header{border-bottom:1px solid var(--border)}.modal-footer{border-top:1px solid var(--border);background:transparent;border-radius:0 0 12px 12px;justify-content:flex-end}.modal-title{font-size:17px;font-weight:600}.modal-body{padding:20px;overflow:auto}.modal-grid-gap{margin-top:16px}@keyframes modalIn{from{opacity:0;transform:translateY(-8px) scale(.985)}to{opacity:1;transform:none}}.client-tour-modal{z-index:122;align-items:flex-end;justify-content:flex-end}.client-tour-modal .modal-content{width:min(420px,calc(100vw - 40px))}.client-tour-highlight{position:relative;z-index:121;outline:3px solid var(--chart-1);outline-offset:4px;box-shadow:0 0 0 7px color-mix(in srgb,var(--chart-1) 18%,transparent)}.client-tour-tab-highlight{position:relative;z-index:121;color:var(--foreground);background:color-mix(in srgb,var(--chart-1) 14%,var(--muted));outline:2px solid var(--chart-1);outline-offset:2px}
body.overlay-open{overflow:hidden}

/* time tracker */
.time-workspace-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,.7fr);gap:16px;align-items:stretch;margin-bottom:16px}.timer-card{padding:22px}.timer-head{margin-bottom:14px}.timer-display-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 0 26px;margin-bottom:20px;border-bottom:1px solid var(--border)}.timer-display{font-size:42px;line-height:1;font-weight:700;letter-spacing:-.045em;font-variant-numeric:tabular-nums}.timer-money{display:flex;align-items:baseline;gap:8px;margin-top:10px}.timer-money span{font-size:14px;font-weight:600}.timer-money small{font-size:11px;color:var(--muted-foreground)}.timer-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.timer-description{grid-column:1/-1}.timer-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}.time-summary-card .progress{margin-top:0}.time-summary-progress-list{display:grid;gap:12px;margin-top:16px}.time-summary-progress-row{display:grid;gap:7px}.time-summary-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted-foreground)}.time-summary-progress-head strong{color:var(--foreground);font-size:11px}.time-summary-main{display:flex;align-items:end;justify-content:space-between;gap:12px}.time-summary-main strong{font-size:30px;letter-spacing:-.04em}.time-summary-main span{font-size:14px;font-weight:600}.time-summary-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:10px;font-size:11px;color:var(--muted-foreground)}.time-summary-foot strong{color:var(--foreground)}.time-summary-goals{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.time-summary-goals span{display:inline-flex;align-items:center;gap:4px}.time-summary-goals strong{font-size:11px}.mini-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.mini-kpi-grid>div{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center;padding-bottom:13px;border-bottom:1px solid var(--border)}.mini-kpi-grid>div:last-child{padding-bottom:0;border-bottom:0}.mini-kpi-grid span{font-size:12px;color:var(--muted-foreground)}.mini-kpi-grid strong{font-size:13px}.mini-kpi-grid small{grid-column:1/-1;font-size:11px;color:var(--muted-foreground)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px}.time-entries-card{margin-bottom:22px}.time-entry-grid{grid-template-columns:minmax(300px,2.4fr) 1fr .7fr .7fr .9fr 42px}.time-entry-description-cell{display:flex;align-items:center;justify-content:flex-end}.time-entry-description-indicator{margin:0}.time-entry-description-indicator .icon{color:var(--muted-foreground)}.time-entry-row{cursor:pointer}.time-entry-row.selected{background:var(--muted)}.searchable-select-wrap{position:relative}.searchable-select-source{position:absolute!important;width:1px!important;height:1px!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;appearance:none!important;-webkit-appearance:none!important}.searchable-select-input{padding-right:38px}.searchable-select-input:not(:disabled){cursor:pointer}.searchable-select-open .searchable-select-input:not(:disabled){cursor:text}.searchable-select-input:disabled{cursor:default}.searchable-select-menu{display:none;position:absolute;z-index:40;top:calc(100% + 5px);left:0;right:0;max-height:260px;overflow:auto;padding:5px;background:var(--popover);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-lg)}.searchable-select-open .searchable-select-menu{display:block}.searchable-select-option{display:block;width:100%;border:0;background:transparent;color:var(--popover-foreground);text-align:left;padding:8px 10px;border-radius:6px;font:inherit;font-size:12px;cursor:pointer}.searchable-select-option:hover,.searchable-select-option.is-selected{background:var(--muted)}.searchable-select-empty{padding:9px 10px;font-size:11px;color:var(--muted-foreground)}.interaction-hint{font-size:10px;color:var(--muted-foreground);margin-left:auto;margin-right:6px}

/* users */
.users-grid{grid-template-columns:36px minmax(240px,1.55fr) .72fr .9fr 1fr 1fr .85fr}.user-row-clickable{cursor:pointer}.user-row-clickable:not(.is-selected):hover,.analytics-client-row:hover{background:color-mix(in srgb,var(--muted) 55%,transparent)}.entity-drawer-summary{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--border);border-radius:10px;margin-bottom:18px}.entity-avatar-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none}.entity-avatar-control{position:relative;padding:0;border:0;cursor:pointer;overflow:visible}.avatar>[data-avatar-content]{width:100%;height:100%;display:grid;place-items:center;overflow:hidden;border-radius:inherit}.avatar>[data-avatar-content] img{width:100%;height:100%;display:block;object-fit:cover}.entity-avatar-control:focus-visible{outline:2px solid var(--ring);outline-offset:3px}.entity-avatar-action{position:absolute;right:-4px;bottom:-4px;width:22px;height:22px;padding:0;border:2px solid var(--card);border-radius:50%;display:grid;place-items:center;background:var(--foreground);color:var(--background);box-shadow:var(--shadow-sm);cursor:pointer}.entity-avatar-action:hover{background:color-mix(in srgb,var(--foreground) 88%,var(--card))}.entity-avatar-action .icon{width:11px;height:11px}.entity-avatar-action.is-remove{background:var(--destructive);color:white}.entity-drawer-copy{min-width:0;flex:1}.entity-drawer-copy strong,.entity-drawer-copy span{display:block}.entity-drawer-copy strong{font-size:13px;line-height:1.35;font-weight:600}.entity-drawer-copy span{font-size:11px;line-height:1.4;color:var(--muted-foreground);margin-top:3px}.entity-drawer-badge{margin-left:auto;flex:none}.permission-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}.permission-list label{display:flex;align-items:center;gap:8px;font-size:12px;padding:10px;border:1px solid var(--border);border-radius:8px}.access-project-list,.user-project-access-list{display:flex;flex-direction:column;gap:10px}.access-project{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid var(--border);border-radius:8px}.access-project-main{display:flex;align-items:center;min-width:0;flex:1;padding:0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}.access-project-main:hover .access-project-title{color:var(--primary)}.access-project-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.access-project-title{display:block;font-size:12px;line-height:1.35;font-weight:600;color:var(--foreground)}.access-project-meta{display:block;font-size:11px;line-height:1.4;color:var(--muted-foreground)}.access-project-actions{display:flex;align-items:center;gap:10px;flex:none}.project-assignment-picker{margin-top:10px;padding:10px;border:1px solid var(--border);border-radius:9px;background:color-mix(in srgb,var(--muted) 35%,var(--card))}.project-assignment-picker .search{width:100%;min-width:0}.project-assignment-picker .search:focus-within{border-color:var(--ring);box-shadow:0 0 0 2px color-mix(in srgb,var(--ring) 18%,transparent)}.project-assignment-picker .search input{border:0!important;box-shadow:none!important;padding:0;background:transparent}.project-picker-results,.global-search-results{display:grid;gap:6px;margin-top:8px}.project-picker-result,.global-search-result{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:inherit;font:inherit;text-align:left;cursor:pointer}.project-picker-result:hover,.global-search-result:hover,.global-search-result:focus-visible{background:var(--muted)}.project-picker-result-copy,.global-search-result-copy{min-width:0}.project-picker-result-copy strong,.project-picker-result-copy span,.global-search-result-copy strong,.global-search-result-copy span{display:block}.project-picker-result-copy strong,.global-search-result-copy strong{font-size:12px;font-weight:600}.project-picker-result-copy span,.global-search-result-copy span{margin-top:2px;font-size:10px;color:var(--muted-foreground)}.project-picker-empty{padding:8px 4px;font-size:11px;color:var(--muted-foreground)}.entity-drawer-tabs{display:flex;align-items:center;justify-content:flex-start;gap:12px;margin-bottom:18px}.entity-drawer-tabs .tabs{justify-content:flex-start;flex-wrap:wrap}.project-drawer-panel,.client-drawer-panel,.user-drawer-panel{display:none}.project-drawer-panel.active,.client-drawer-panel.active,.user-drawer-panel.active{display:block}.client-billing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.client-billing-grid>div{padding:12px;border:1px solid var(--border);border-radius:8px}.client-billing-grid span,.client-billing-grid strong{display:block}.client-billing-grid span{font-size:10px;color:var(--muted-foreground)}.client-billing-grid strong{font-size:14px;margin-top:4px}

/* client analytics drawer */
.analytics-client-row,.client-row-clickable{cursor:pointer}.client-row-clickable:not(.is-selected):hover{background:color-mix(in srgb,var(--muted) 55%,transparent)}.drawer-metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:0}.drawer-metrics>div{padding:13px;border:1px solid var(--border);border-radius:9px}.drawer-metrics span,.drawer-metrics strong{display:block}.drawer-metrics span{font-size:11px;color:var(--muted-foreground)}.drawer-metrics strong{font-size:18px;margin-top:5px}.client-analytics-bars{height:172px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:stretch;gap:9px;padding:8px 0 24px;border-bottom:1px solid var(--border)}.client-analytics-bar{height:100%;position:relative;display:flex;align-items:flex-end;justify-content:center;outline:none}.client-analytics-bar-fill{display:block;background:var(--chart-1);width:min(52px,84%);height:var(--bar-height,3%);min-height:4px;border-radius:5px 5px 2px 2px;transition:opacity .15s,filter .15s}.client-analytics-bar:hover .client-analytics-bar-fill,.client-analytics-bar:focus .client-analytics-bar-fill{filter:brightness(.92)}.client-analytics-bar-month{position:absolute;top:100%;left:50%;transform:translate(-50%,6px);font-size:9px;color:var(--muted-foreground);white-space:nowrap}.client-analytics-bar:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:min(calc(var(--bar-height,3%) + 8px),calc(100% - 30px));z-index:5;transform:translateX(-50%) translateY(4px);padding:7px 9px;border:1px solid var(--border);border-radius:7px;background:var(--popover);box-shadow:var(--shadow-md);color:var(--popover-foreground);font-size:10px;font-weight:600;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .12s,transform .12s}.client-analytics-bar:hover:after,.client-analytics-bar:focus:after{opacity:1;transform:translateX(-50%) translateY(0)}.analytics-project{display:grid;grid-template-columns:1fr 180px;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}.analytics-project:last-child{border-bottom:0}.analytics-project strong,.analytics-project span{display:block}.analytics-project>div:first-child span{font-size:11px;color:var(--muted-foreground);margin-top:4px}.analytics-project .progress{margin-top:8px}

/* task drawer */
.drawer-edit-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px}.drawer-edit-toolbar .client-analytics-back{margin-right:auto}.task-drawer-panel{display:none}.task-drawer-panel.active{display:block}.task-time-fields{display:grid;grid-template-columns:1fr auto 1fr auto;gap:7px;align-items:center}.task-time-fields span{font-size:11px;color:var(--muted-foreground)}.task-description{min-height:110px;border-radius:0 0 8px 8px!important}.attachment-list{display:grid;gap:8px;margin-top:0}.attachment-list>div{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;padding:10px;border:1px solid var(--border);border-radius:8px;font-size:12px}.attachment-list small{color:var(--muted-foreground)}.task-editing .task-edit-control:disabled{opacity:1}

/* project */

/* client portal preview */
body.client-preview .topbar,body.client-preview .sidebar{display:none}body.client-preview .main{margin-left:0;padding-top:0;background:var(--workspace-canvas)}body.client-preview .page{max-width:none;padding:0}body.client-preview .page:not(#page-client-portal){display:none}.client-portal-page.active{display:block}.client-preview-toolbar{height:52px;background:var(--foreground);color:var(--background);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px}.client-preview-toolbar>div{display:flex;align-items:center;gap:10px;font-size:12px}.client-preview-toolbar .btn{background:transparent;color:var(--background);border-color:rgb(255 255 255/.25)}.client-portal-shell{min-height:calc(100vh - 52px);background:var(--workspace-canvas)}.client-portal-header{height:64px;background:var(--card);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px}.client-portal-header-inner{width:min(calc(100% - var(--sidebar-w)),1740px);margin:0 auto;display:flex;align-items:center;justify-content:space-between}.portal-brand,.portal-user{display:flex;align-items:center;gap:10px}.portal-brand-logo{display:block;width:116px;max-height:34px;object-fit:contain;object-position:left center}.portal-user strong,.portal-user span{display:block}.portal-user strong{font-size:12px}.portal-user span{font-size:10px;color:var(--muted-foreground);margin-top:2px}.portal-user{text-align:right}.client-portal-main{width:min(calc(100% - var(--sidebar-w)),1740px);margin:0 auto;padding:24px}/* Portal project header uses a bounded selector and a naturally sized contact card. */
.client-project-page-head{display:grid;grid-template-columns:minmax(260px,380px) minmax(0,1fr);align-items:center;column-gap:24px;row-gap:12px}
.client-project-switcher{display:flex;flex-direction:column;align-items:stretch;gap:6px;width:100%;min-width:0}
.client-project-switcher-label{font-size:12px;font-weight:600;color:var(--muted-foreground)}
.client-project-switcher .select-wrap{width:100%;min-width:0}
.client-project-switcher .form-control{width:100%;height:40px;min-height:40px;font-size:13px;font-weight:500;background:var(--card)}
.client-project-switcher .searchable-select-input{width:100%;text-overflow:ellipsis}
.client-project-switcher.is-single-project :is(.searchable-select-input,.form-control):disabled{opacity:1;color:var(--foreground);background:var(--card);cursor:default}
.client-page-caretaker{display:flex;align-items:center;justify-content:space-between;justify-self:end;gap:16px;width:min(100%,480px);min-width:0;min-height:66px;padding:10px 14px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}
.client-page-caretaker .project-client-card{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:10px}
.client-page-caretaker .avatar{width:40px;height:40px;flex:0 0 40px}
.client-page-caretaker-identity{min-width:0;flex:1}
.client-page-caretaker-identity .client-page-caretaker-label{display:block;color:var(--muted-foreground);font-size:10px;font-weight:500;margin:0 0 3px}
.client-page-caretaker-identity strong,.client-page-caretaker-identity .client-page-caretaker-email{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.client-page-caretaker-identity strong{font-size:12px;font-weight:600}
.client-page-caretaker-identity .client-page-caretaker-email{font-size:11px;color:var(--muted-foreground);margin-top:3px}
.client-page-caretaker .btn{flex:0 0 auto;white-space:nowrap;background:var(--card)}
.client-panel{display:none}.client-panel.active{display:block}.portal-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(300px,.75fr);gap:16px}.portal-stage-title{font-size:18px;margin-bottom:8px}.portal-copy{font-size:12px;line-height:1.6;color:var(--muted-foreground);margin-bottom:14px}.portal-full-btn{width:100%;margin-top:14px}.portal-file{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.portal-file:last-child{border-bottom:0}.portal-file strong,.portal-file span{display:block}.portal-file strong{font-size:12px}.portal-file span{font-size:10px;color:var(--muted-foreground);margin-top:3px}.client-task-grid{grid-template-columns:minmax(260px,2fr) minmax(120px,.7fr) minmax(110px,.58fr) minmax(145px,.8fr) minmax(150px,.8fr) minmax(180px,auto);min-width:1060px}.client-task-view{display:none}.client-task-view.active{display:block}.client-task-view-toolbar{margin-bottom:16px}.client-task-kanban .kanban-head .icon-btn{display:none}.client-task-kanban .task-card{cursor:pointer}.client-task-kanban .task-card .task-card-check,.client-task-kanban .task-card [data-task-to-timer]{display:none}.client-task-grid.is-focus-target,.client-task-kanban .task-card.is-focus-target{outline:2px solid var(--chart-1);outline-offset:-2px;background:color-mix(in srgb,var(--chart-1) 6%,var(--card));border-color:color-mix(in srgb,var(--chart-1) 78%,var(--border));box-shadow:0 0 0 4px color-mix(in srgb,var(--chart-1) 14%,transparent)}.client-task-grid>.badge{justify-self:start;align-self:center;width:max-content;max-width:100%}.client-task-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px;align-self:center}.client-decision-note-modal textarea{min-height:120px;resize:vertical}.portal-file-grid{grid-template-columns:2fr 1fr 1fr auto}

/* contracts */
.contract-form-body{display:block}.contract-form{display:grid;gap:16px;max-width:980px;margin:0 auto}.contract-repeater-rows{display:grid;gap:8px}.contract-section{border:1px solid var(--border);border-radius:10px;padding:16px;background:var(--card)}.contract-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.contract-section-title{font-size:13px;font-weight:600}.contract-section-sub{font-size:11px;color:var(--muted-foreground);margin-top:4px}.contract-item-grid{display:grid;grid-template-columns:minmax(0,1fr) 130px 130px 34px;gap:8px;align-items:end}.contract-tranche-grid{display:grid;grid-template-columns:1fr 120px 120px minmax(180px,1fr) 34px;gap:8px;align-items:end}.contract-row-labels{font-size:10px;color:var(--muted-foreground);margin-bottom:6px}.contract-row-labels.contract-item-grid,.contract-row-labels.contract-tranche-grid{align-items:center}.contract-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.contract-summary>div{border:1px solid var(--border);border-radius:8px;padding:11px}.contract-summary span,.contract-summary strong{display:block}.contract-summary span{font-size:10px;color:var(--muted-foreground)}.contract-summary strong{font-size:14px;margin-top:4px}.contract-notes{min-height:92px}.icon-btn.contract-remove{width:34px;height:40px;border:1px solid var(--border)}

/* misc */
.form-control:disabled{background:var(--muted);color:var(--foreground);opacity:.88}
@media(max-width:1200px){.time-workspace-grid,.portal-grid{grid-template-columns:1fr}.contract-item-grid,.contract-tranche-grid{grid-template-columns:1fr 1fr}.contract-row-labels{display:none}.time-entry-grid{min-width:1020px}}
@media(max-width:1180px){.client-project-page-head{grid-template-columns:minmax(0,1fr)}.client-project-switcher{max-width:420px}.client-page-caretaker{justify-self:stretch;width:100%;max-width:100%}}
@media(max-width:520px){.client-page-caretaker{gap:8px;flex-wrap:wrap}.client-page-caretaker .btn{width:100%;justify-content:center}}
@media(max-width:900px){.user-trigger-copy{display:none}.time-workspace-grid{grid-template-columns:1fr}.drawer-xl,.drawer-lg,.drawer{width:min(100%,620px)}.portal-grid{grid-template-columns:1fr}.client-portal-header{padding:0 18px}.client-portal-header-inner,.client-portal-main{width:100%}.client-portal-main{padding:24px 16px 44px}.client-preview-toolbar{height:auto;min-height:52px;padding:9px 14px;flex-wrap:wrap}.client-billing-grid,.contract-summary{grid-template-columns:1fr}}


/* ==========================================================
   Prototype 0.6 - shared components and new views
   ========================================================== */

/* toasts / alerts */


/* time - compact daily task focus */
.timer-actions>.actions{justify-content:flex-end}

/* task views and filters */
.task-filter-panel{display:none;padding:16px;margin-bottom:16px}.task-filter-panel.open{display:block}.task-filter-head,.task-filter-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.task-filter-head{margin-bottom:14px}.task-filter-actions{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);justify-content:flex-end}.task-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.task-filter-grid>.field:first-child{grid-column:span 2}.task-filter-range{grid-column:span 2}.task-filter-date-range{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.task-filter-date-range>span{font-size:11px;color:var(--muted-foreground)}.filter-checks{display:flex;gap:8px;flex-wrap:wrap}.filter-checks label{height:34px;display:flex;align-items:center;gap:7px;padding:0 10px;border:1px solid var(--border);border-radius:7px;font-size:11px;background:var(--card)}.filter-count{min-width:18px;height:18px;border-radius:999px;display:inline-grid;place-items:center;background:var(--foreground);color:var(--background);font-size:9px}.toolbar-select{min-width:180px}.toolbar-select .form-control{height:40px}.task-toolbar-deadline{min-width:185px}.task-view-toolbar>.actions{flex:1 1 auto;min-width:0;flex-wrap:nowrap;justify-content:flex-end}.task-view-toolbar .search{min-width:180px;flex:0 1 220px;max-width:240px}.task-view-toolbar .toolbar-select{flex:0 0 auto}.task-view{display:none}.task-view.active{display:block}.task-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:11px}.task-card-top .task-labels{margin-bottom:0}.task-card-check{flex:none;margin-top:1px}.task-table-grid{grid-template-columns:34px minmax(240px,2fr) minmax(150px,1fr) 1fr .8fr 1fr 1.1fr 40px}.task-table-actions{display:flex;align-items:center;justify-content:flex-end;gap:4px}.task-row-clickable{cursor:pointer}.task-row-clickable:not(.is-selected):hover{background:color-mix(in srgb,var(--muted) 55%,transparent)}

/* task financial and recurrence data */
.task-finance-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:16px}.task-finance-summary>div{padding:11px;border:1px solid var(--border);border-radius:8px;background:var(--card)}.task-finance-summary span,.task-finance-summary strong,.task-finance-summary small{display:block}.task-finance-summary span{font-size:10px;color:var(--muted-foreground)}.task-finance-summary strong{font-size:15px;margin-top:5px}.task-finance-summary small{font-size:9px;color:var(--muted-foreground);margin-top:3px}.task-repeat-control{margin-top:16px}

/* analytics goal */
.analytics-top-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px;align-items:stretch}.analytics-top-grid>.card{height:100%}.analytics-goal-card{padding:18px;margin:0;min-height:300px}.analytics-goal-copy{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:12px}.analytics-goal-month{width:170px;flex:none}.analytics-goal-data{display:grid;grid-template-columns:160px minmax(0,1fr);align-items:center;gap:24px;padding-top:14px;border-top:1px solid var(--border)}.analytics-status-card{min-height:300px}.analytics-new-clients-card{margin-bottom:16px}

/* settings */

/* Cleopatra alert component - copied from the reference design system. */
.alert{display:flex;align-items:flex-start;gap:var(--spacing-3,.75rem);padding:var(--spacing-4,1rem);border-radius:var(--radius-xl,.75rem);font-size:var(--text-sm,.875rem);animation:alertSlideIn var(--duration-300,300ms) ease-out}
.alert-content{flex:1;min-width:0}.alert-title{font-weight:var(--font-medium,500);margin-bottom:.25rem}.alert-description{opacity:.9}.alert-close{padding:0;background:none;border:none;cursor:pointer;opacity:.5;transition:opacity var(--duration-150,150ms) ease}.alert-close:hover{opacity:1}
.alert-info{background-color:color-mix(in srgb,var(--info) 10%,transparent);border:1px solid color-mix(in srgb,var(--info) 20%,transparent);color:var(--foreground)}.alert-info .alert-title,.alert-info .alert-close{color:var(--info)}
.alert-success{background-color:color-mix(in srgb,var(--success) 10%,transparent);border:1px solid color-mix(in srgb,var(--success) 20%,transparent);color:var(--foreground)}.alert-success .alert-title,.alert-success .alert-close{color:var(--success)}
.alert-warning{background-color:color-mix(in srgb,var(--warning) 10%,transparent);border:1px solid color-mix(in srgb,var(--warning) 20%,transparent);color:var(--foreground)}.alert-warning .alert-title,.alert-warning .alert-close{color:var(--warning)}
.alert-destructive,.alert-error{background-color:color-mix(in srgb,var(--destructive) 10%,transparent);border:1px solid color-mix(in srgb,var(--destructive) 20%,transparent);color:var(--foreground)}.alert-destructive .alert-title,.alert-destructive .alert-close,.alert-error .alert-title,.alert-error .alert-close{color:var(--destructive)}
.alert-minimal{padding:var(--spacing-3,.75rem) var(--spacing-4,1rem);border-left:4px solid;border-radius:0 var(--radius-lg,.5rem) var(--radius-lg,.5rem) 0;background-color:var(--muted);border-color:var(--border)}.alert-minimal.alert-info{border-left-color:var(--info);background-color:color-mix(in srgb,var(--info) 5%,var(--background))}.alert-minimal.alert-success{border-left-color:var(--success);background-color:color-mix(in srgb,var(--success) 5%,var(--background))}.alert-minimal.alert-warning{border-left-color:var(--warning);background-color:color-mix(in srgb,var(--warning) 5%,var(--background))}.alert-minimal.alert-destructive,.alert-minimal.alert-error{border-left-color:var(--destructive);background-color:color-mix(in srgb,var(--destructive) 5%,var(--background))}
.alert-exit{animation:alertSlideOut var(--duration-200,200ms) ease-in forwards}@keyframes alertSlideIn{from{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes alertSlideOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.5rem)}}

/* Cleopatra toast behavior with the same minimal visual variant used by project alerts. */
.toast-container{position:fixed;z-index:200;display:flex;flex-direction:column;gap:var(--spacing-2,.5rem);padding:var(--spacing-4,1rem);pointer-events:none}.toast-bottom-right{bottom:0;right:0}.toast{display:flex;align-items:flex-start;gap:var(--spacing-3,.75rem);min-width:20rem;max-width:28rem;padding:var(--spacing-3,.75rem) var(--spacing-4,1rem);background:var(--muted);color:var(--foreground);border:1px solid var(--border);border-left:4px solid var(--border);border-radius:0 var(--radius-lg,.5rem) var(--radius-lg,.5rem) 0;box-shadow:var(--shadow-lg);pointer-events:auto;animation:toastSlideIn var(--duration-300,300ms) ease}.toast.toast-exit{animation:toastSlideOut var(--duration-200,200ms) ease forwards}.toast-content{flex:1;min-width:0}.toast-title{font-size:var(--text-sm,.875rem);font-weight:var(--font-medium,500);color:var(--foreground)}.toast-description{margin-top:var(--spacing-1,.25rem);font-size:var(--text-sm,.875rem);color:var(--muted-foreground)}.toast-close{flex-shrink:0;padding:0;background:none;border:none;color:var(--muted-foreground);cursor:pointer;transition:color var(--duration-150,150ms) ease}.toast-close:hover{color:var(--foreground)}.toast-success{border-left-color:var(--success);background:color-mix(in srgb,var(--success) 5%,var(--background))}.toast-warning{border-left-color:var(--warning);background:color-mix(in srgb,var(--warning) 5%,var(--background))}.toast-destructive{border-left-color:var(--destructive);background:color-mix(in srgb,var(--destructive) 5%,var(--background))}.toast-info{border-left-color:var(--info);background:color-mix(in srgb,var(--info) 5%,var(--background))}@keyframes toastSlideIn{from{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes toastSlideOut{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}

.settings-toolbar{margin-bottom:16px}.settings-panel{display:none}.settings-panel.active{display:block}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.setting-list{display:grid;gap:8px}.setting-toggle{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:8px 0}.setting-toggle+ .setting-toggle{border-top:1px solid var(--border)}.setting-toggle strong,.setting-toggle small{display:block}.setting-toggle strong{font-size:12px}.setting-toggle small{font-size:10px;color:var(--muted-foreground);margin-top:4px;line-height:1.4}.setting-toggle input[type="checkbox"],.notification-pref-toggle input[type="checkbox"]{appearance:none;width:36px;height:20px;border-radius:999px;background:var(--muted);border:1px solid var(--border);position:relative;flex:none;transition:.15s}.setting-toggle input[type="checkbox"]:after,.notification-pref-toggle input[type="checkbox"]:after{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;border-radius:50%;background:var(--card);box-shadow:var(--shadow-sm);transition:.15s}.setting-toggle input[type="checkbox"]:checked,.notification-pref-toggle input[type="checkbox"]:checked{background:var(--chart-1);border-color:var(--chart-1)}.setting-toggle input[type="checkbox"]:checked:after,.notification-pref-toggle input[type="checkbox"]:checked:after{left:18px}.setting-toggle input[type="checkbox"]:focus-visible,.notification-pref-toggle input[type="checkbox"]:focus-visible{outline:2px solid var(--chart-1);outline-offset:2px}.setting-toggle-bordered{border:1px solid var(--border)!important;border-radius:9px;padding:11px 12px!important;margin-top:14px}.setting-toggle-bordered+.task-daily-capacity-fields{margin-top:14px}

/* client -> user relation */
.linked-user-card{display:grid;grid-template-columns:36px 1fr auto;gap:10px;align-items:center;padding:12px;border:1px solid var(--border);border-radius:9px;margin-bottom:18px;background:var(--muted)}.linked-user-icon{width:34px;height:34px;border-radius:8px;background:var(--card);border:1px solid var(--border);display:grid;place-items:center}.linked-user-card strong,.linked-user-card span{display:block}.linked-user-card strong{font-size:12px}.linked-user-card span{font-size:10px;color:var(--muted-foreground);margin-top:3px}.inline-check{display:flex;align-items:center;gap:6px;font-size:10px;white-space:nowrap}

@media(max-width:1200px){.task-filter-grid,.settings-grid{grid-template-columns:1fr 1fr}.task-filter-grid>.field:first-child,.task-filter-range{grid-column:span 2}.task-finance-summary{grid-template-columns:1fr 1fr}.analytics-goal-data{grid-template-columns:140px 1fr}.task-table-grid{min-width:980px}}
@media(max-width:900px){.task-filter-grid,.settings-grid,.analytics-top-grid{grid-template-columns:1fr}.task-filter-grid>.field:first-child,.task-filter-range{grid-column:span 1}.analytics-goal-copy{flex-direction:column}.analytics-goal-data{grid-template-columns:1fr;text-align:left}.analytics-goal-month{width:100%}}


/* ==========================================================
   Prototype 0.8 - shared refinements
   ========================================================== */

/* charts */
.chart-green .chart-line:not(.alt){stroke:var(--success)}
.chart-green .chart-area{fill:color-mix(in srgb,var(--success) 12%,transparent)}
.chart-green .legend span:first-child i{background:var(--success)}
.compact-chart-card{min-height:0}.dashboard-overview-grid{align-items:stretch}
.dashboard-table-head,.analytics-active-clients-head{padding:16px 16px 0}
.dashboard-task-grid{grid-template-columns:2.5fr 1.2fr 1fr 1fr}
.project-status-donut,.revenue-donut{width:132px;height:132px;border-radius:50%;position:absolute}
.project-status-donut{background:conic-gradient(var(--info) 0 53%,var(--warning) 53% 66%,var(--success) 66% 100%)}
.revenue-donut{--goal-progress:72%;background:conic-gradient(var(--success) 0 var(--goal-progress),var(--info) var(--goal-progress) 100%)}
.project-status-donut:after,.revenue-donut:after{content:"";position:absolute;inset:22px;border-radius:50%;background:var(--card)}
.dot.amber{background:var(--warning)}
.revenue-breakdown strong{font-variant-numeric:tabular-nums}
.status-bars{height:188px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;align-items:end;padding:6px 2px 0}
.status-bar-item{height:100%;display:grid;grid-template-rows:minmax(110px,1fr) auto auto;gap:5px;align-items:end;text-align:center}
.status-bar-track{height:100%;display:flex;align-items:flex-end;justify-content:center;border-bottom:1px solid var(--border)}
.status-bar-fill{display:block;width:min(56px,82%);min-height:12px;border-radius:5px 5px 2px 2px;background:var(--chart-1)}
.status-bar-fill.blue{background:var(--info)}.status-bar-fill.amber{background:var(--warning)}.status-bar-fill.green{background:var(--success)}
.status-bar-item>strong{font-size:11px}.status-bar-item>span{font-size:10px;color:var(--muted-foreground)}

/* time workspace alignment */
.time-workspace-grid>.stack{display:grid;grid-template-rows:1fr 1fr;height:100%;gap:16px}
.time-workspace-grid>.stack>.card{height:100%}

/* task drawer */
.task-title-field{margin:0 0 16px}
.task-create-mode #taskEditToggle{display:none}
.task-create-mode .task-finance-summary{opacity:.72}

/* project navigation and client spacing */
.project-detail-toolbar{margin-bottom:16px}
.metric>.progress{margin-top:12px}
.client-files-layout{margin-top:0}

/* contracts */
.contract-row-clickable{cursor:pointer}
.contract-row-clickable:hover{background:color-mix(in srgb,var(--muted) 55%,transparent)}
.contract-preview-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:18px}
.contract-preview-summary>div{border:1px solid var(--border);border-radius:8px;padding:12px}
.contract-preview-summary span,.contract-preview-summary strong{display:block}.contract-preview-summary span{font-size:10px;color:var(--muted-foreground)}.contract-preview-summary strong{font-size:13px;margin-top:4px}
.contract-preview-lines{display:grid;gap:8px}.contract-preview-lines>div{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border);font-size:12px}.contract-preview-lines>div:last-child{border-bottom:0}.contract-preview-lines span{color:var(--muted-foreground)}

@media(max-width:900px){.dashboard-task-grid{min-width:760px}.contract-preview-summary{grid-template-columns:1fr}}


/* shared list filtering - clients and projects */
.project-list-tools,.user-list-tools{margin-left:auto;flex-wrap:nowrap}.project-list-tools .search,.user-list-tools .search{min-width:230px}.projects-list-grid{grid-template-columns:36px minmax(260px,2.2fr) 140px 110px 150px 135px 135px 150px 145px 90px 110px;min-width:1570px}.project-list-row{cursor:pointer}.project-list-row:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.project-list-project,.project-list-billing,.project-list-finance,.project-list-progress{min-width:0}.project-list-billing strong,.project-list-billing span,.project-list-finance strong,.project-list-finance span,.project-list-progress strong,.project-list-progress span{display:block}.project-list-billing span,.project-list-finance span,.project-list-progress span{margin-top:3px;font-size:10px;color:var(--muted-foreground)}.project-list-billing strong,.project-list-finance strong,.project-list-progress strong{font-size:12px;font-weight:600}.project-list-finance.is-positive strong{color:var(--success, #15803d)}.project-list-finance.is-negative strong{color:var(--destructive, #dc2626)}.project-list-finance.is-warning strong{color:var(--warning-foreground, #a16207)}.projects-table-horizontal{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-gutter:stable}.projects-table-horizontal>.projects-scroll-region{overflow-x:hidden;overflow-y:auto}.projects-scroll-region{max-height:min(720px,72vh)}.projects-scroll-region>.table-row{min-height:var(--table-row-height)}.list-filter-panel{display:none;padding:16px;margin-bottom:16px}.list-filter-panel.open{display:block}.list-filter-head,.list-filter-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.list-filter-head{margin-bottom:14px}.list-filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.list-filter-actions{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);justify-content:flex-end}.list-empty{padding:28px;text-align:center;border:1px dashed var(--border);border-radius:10px;color:var(--muted-foreground);font-size:12px}.projects-list-table+.list-empty{margin-top:16px}
@media(max-width:900px){.list-filter-grid{grid-template-columns:1fr}}@media(max-width:620px){.project-list-tools,.user-list-tools{width:100%!important}.project-list-tools .btn,.user-list-tools .btn{flex:0 0 auto}.project-list-tools .search,.user-list-tools .search{flex:1;min-width:0}}


/* ==========================================================
   Prototype 0.9 - Cleopatra component extensions
   ========================================================== */
.drawer-xxl{width:min(100%,900px)}
.settings-tabs{flex-wrap:wrap}
.settings-card-wide{grid-column:1/-1}
.settings-grid-spaced{margin-top:16px}
.setting-list-columns{grid-template-columns:1fr 1fr;column-gap:24px}.notification-matrix{display:grid;border-top:1px solid var(--border)}.notification-matrix-head,.notification-matrix-row{display:grid;grid-template-columns:minmax(0,1fr) 120px 120px;align-items:center;column-gap:16px}.notification-matrix-head{padding:8px 0;color:var(--muted-foreground);font-size:10px}.notification-matrix-head strong{text-align:center;font-size:10px;color:var(--muted-foreground)}.notification-matrix-row{min-height:62px;padding:8px 0;border-top:1px solid var(--border)}.notification-matrix-row>span>strong,.notification-matrix-row>span>small{display:block}.notification-matrix-row>span>strong{font-size:12px}.notification-matrix-row>span>small{margin-top:4px;font-size:10px;line-height:1.4;color:var(--muted-foreground)}.notification-pref-toggle{display:flex;align-items:center;justify-content:center;cursor:pointer}.notification-pref-toggle input[type="checkbox"]{cursor:pointer}
.report-setting-block{padding:14px 0}.report-setting-block+.report-setting-block{border-top:1px solid var(--border)}.report-setting-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.report-setting-head strong,.report-setting-head small{display:block}.report-setting-head strong{font-size:12px}.report-setting-head small{font-size:10px;color:var(--muted-foreground);margin-top:4px;line-height:1.45}.plain-check{width:16px;height:16px;accent-color:var(--chart-1)}.report-setting-controls{display:flex;align-items:end;gap:10px;margin-top:10px}.report-setting-controls .report-time{flex:1;min-width:0}.report-setting-controls .btn{height:40px;flex:none}
.day-selector{display:flex;gap:6px;flex-wrap:wrap;margin:13px 0}.day-chip{height:30px;min-width:36px;padding:0 9px;border:1px solid var(--border);border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted-foreground);background:var(--card);cursor:pointer}.day-chip input{display:none}.day-chip.active{background:var(--chart-1);border-color:var(--chart-1);color:#fff}.report-time{max-width:180px}.compact-setting-list{margin-bottom:14px}.reminder-grid{margin-top:4px}
.settings-actions-row{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:16px;border-top:1px solid var(--border)}.status-pill{height:28px;padding:0 9px;border-radius:999px;display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:600}.status-pill i{width:7px;height:7px;border-radius:50%}.status-pill.success{background:hsl(142 76% 95%);color:hsl(142 76% 30%)}.status-pill.success i{background:var(--success)}.success-text{color:hsl(142 76% 30%)}
.system-stat-list{display:grid}.system-stat-list>div{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--border);font-size:12px}.system-stat-list>div:last-child{border-bottom:0}.system-stat-list span{color:var(--muted-foreground)}.system-stat-list strong{text-align:right}
.data-action-list{display:grid}.data-action{display:flex;grid-template-columns:minmax(0,1fr) auto;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border)}.data-action:last-child{border-bottom:0}.data-action>div:first-child{display:flex;flex-direction:column;gap:3px}.data-action-scope>.actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap}.data-action-scope>.actions .btn{min-height:34px;min-width:88px;padding:0 12px;flex:0 0 auto;white-space:nowrap}.data-action strong,.data-action small{display:block}.data-action strong{font-size:12px}.data-action small{font-size:10px;color:var(--muted-foreground);margin-top:4px;line-height:1.45}.danger-zone-card{border-color:color-mix(in srgb,var(--destructive) 28%,var(--border))}.clear-data-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.clear-data-grid label{height:38px;display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:7px;padding:0 10px;font-size:11px}.clear-data-grid input{accent-color:var(--chart-1)}
.log-heading{border-bottom:1px solid var(--border)}.log-filter-row{padding:12px 16px;border-bottom:1px solid var(--border);justify-content:flex-start}.log-grid{grid-template-columns:110px 110px minmax(260px,1.5fr) minmax(180px,1fr)}.system-overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.system-kpi{padding:16px}.system-kpi span,.system-kpi strong,.system-kpi small{display:block}.system-kpi span{font-size:11px;color:var(--muted-foreground)}.system-kpi strong{font-size:17px;margin-top:9px}.system-kpi small{font-size:10px;color:var(--muted-foreground);margin-top:5px}
.analytics-performance-card{margin-bottom:16px;min-height:0}.analytics-performance-head{margin-bottom:6px}.chart-mode-tabs{flex:none}.finance-chart-wrap{position:relative;height:clamp(390px,26vw,460px);min-height:390px}.dashboard-finance-card .finance-chart-wrap{height:clamp(340px,24vw,410px);min-height:340px}.finance-chart{width:100%;height:100%;overflow:visible;display:block}.finance-grid-line{stroke:var(--border);stroke-width:1}.finance-axis-label,.finance-month-label{fill:var(--muted-foreground);font-size:10px}.finance-month-label{text-anchor:middle}.finance-line{fill:none;stroke:var(--success);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.finance-area{fill:color-mix(in srgb,var(--success) 10%,transparent)}.finance-chart.mode-hours .finance-line{stroke:var(--info)}.finance-chart.mode-hours .finance-area{fill:color-mix(in srgb,var(--info) 10%,transparent)}.finance-point{fill:var(--card);stroke:var(--success);stroke-width:2.5;cursor:pointer}.finance-chart.mode-hours .finance-point{stroke:var(--info)}.finance-point:hover,.finance-point:focus{stroke-width:4}.finance-chart-tooltip{position:absolute;z-index:4;min-width:118px;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--popover);box-shadow:var(--shadow-md);font-size:10px;line-height:1.45;pointer-events:none;opacity:0;transform:translate(-50%,-100%) translateY(-10px);transition:opacity .12s}.finance-chart-tooltip.visible{opacity:1}.finance-chart-tooltip strong{display:block;font-size:11px;margin-bottom:2px}.finance-chart-tooltip span{color:var(--muted-foreground)}
.participant-list{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.participant-chip{height:34px;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:7px;padding:0 9px;font-size:11px;background:var(--card)}.participant-chip .mini-avatar{margin:0}.new-conversation-composer textarea{min-height:150px}.new-conversation-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.new-conversation-actions span{font-size:10px;color:var(--muted-foreground)}
@media(max-width:1200px){.system-overview-grid{grid-template-columns:1fr 1fr}}
@media(max-width:900px){.setting-list-columns,.clear-data-grid,.system-overview-grid{grid-template-columns:1fr}.notification-matrix-head,.notification-matrix-row{grid-template-columns:minmax(0,1fr) 88px 88px;column-gap:10px}.log-grid{min-width:760px}.data-action{grid-template-columns:1fr;flex-direction:column;align-items:flex-start}.data-action-scope>.actions{width:100%;justify-content:flex-start}.data-action-scope>.actions .btn{min-height:34px;min-width:96px;padding:0 14px}.drawer-xxl{width:100%}}

input[type="checkbox"]{accent-color:var(--chart-1)}
/* Cleopatra checkbox component - direct equivalent of src/components/ui/checkbox. */
.checkbox-wrapper{display:inline-flex;align-items:center;gap:var(--spacing-2,.5rem)}.checkbox{appearance:none;-webkit-appearance:none;width:1rem;height:1rem;border:1px solid var(--border);border-radius:var(--radius-sm,.25rem);background-color:var(--background);cursor:pointer;position:relative;transition:all var(--duration-150,150ms) ease;flex-shrink:0}.checkbox:hover{border-color:var(--chart-1)}.checkbox:focus-visible{outline:2px solid var(--chart-1);outline-offset:2px}.checkbox:checked{background-color:var(--chart-1);border-color:var(--chart-1)}.checkbox:checked::after{content:'';position:absolute;left:50%;top:45%;width:.25rem;height:.5rem;border:solid #fff;border-width:0 2px 2px 0;transform:translate(-50%,-50%) rotate(45deg)}.checkbox:disabled{opacity:.5;cursor:not-allowed}.checkbox-sm{width:.875rem;height:.875rem}.checkbox-sm:checked::after{width:.2rem;height:.4rem}.checkbox-label{font-size:var(--text-sm,.875rem);color:var(--foreground);cursor:pointer;user-select:none}
.contact-person-list{display:flex;flex-direction:column;gap:12px}.contacts-panel-head{margin-bottom:14px}.contact-person-card{padding:14px;border:1px solid var(--border);border-radius:10px;background:var(--card)}.contact-person-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.contact-person-card .form-grid{gap:12px}#contractFormDrawer input[readonly][data-contract-gross]{background:var(--muted);color:var(--muted-foreground);cursor:default}.auth-preview-stage{min-height:560px;display:flex;align-items:center;justify-content:center;padding:32px;background:var(--background)}.auth-preview-stage .login-shell{margin:auto}.auth-preview-stage .login-card{width:100%}@media(max-width:700px){.auth-preview-stage{min-height:0;padding:22px 14px}}

/* Cleopatra-derived empty states used by server-backed modules. */
.empty-state{min-height:160px;display:flex;align-items:center;justify-content:center;padding:28px;text-align:center}
.empty-state-inner{max-width:360px;display:flex;flex-direction:column;align-items:center;gap:8px}
.empty-state-icon{width:52px;height:52px;border-radius:50%;background:var(--muted);display:flex;align-items:center;justify-content:center;color:var(--muted-foreground);margin-bottom:4px}
.empty-state-icon .icon{width:24px;height:24px;opacity:.65}
.empty-state .empty-state-inner>strong{font-size:13px;line-height:1.4;font-weight:600;color:var(--foreground)}
.empty-state .empty-state-inner>p{font-size:11px;line-height:1.5;color:var(--muted-foreground);margin:0}
.empty-state.compact{min-height:112px;padding:20px;border:1px dashed var(--border);border-radius:10px;background:color-mix(in srgb,var(--muted) 34%,transparent)}
.empty-state.compact .empty-state-icon{width:40px;height:40px}.empty-state.compact .empty-state-icon .icon{width:19px;height:19px}

.server-attachment-item{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:12px!important;align-items:center!important}
.server-attachment-main{display:flex;align-items:center;gap:10px;min-width:0}.server-attachment-main .file-icon{flex:none}.server-attachment-copy{min-width:0;display:flex;flex-direction:column;gap:2px}.server-attachment-copy strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.server-attachment-copy small{font-size:10px;color:var(--muted-foreground)}
.server-attachment-actions{display:flex;align-items:center;gap:4px}
.project-chat .empty-state,.chat-layout .empty-state{min-height:220px}
.user-project-access-list .empty-state,.access-project-list .empty-state{margin-top:4px}.client-address-field{grid-column:1/-1}

/* RC1.6 - Cleopatra-aligned project notes and empty data states. */


@media(max-width:1100px){
  .task-card{min-width:0}
  .task-title,.task-desc{overflow-wrap:anywhere}
  .mobile-stack-table{overflow:visible}
  .mobile-stack-table>.table-head{display:none}
  .mobile-stack-table>.section-heading{align-items:flex-start;flex-direction:column}
  .mobile-stack-table>.table-row{display:grid;grid-template-columns:1fr;min-width:0;gap:9px;align-items:stretch;padding:14px}
  .mobile-stack-table>.table-row>[data-mobile-label]{position:relative;min-width:0;min-height:22px;padding-left:104px;overflow-wrap:anywhere}
  .mobile-stack-table>.table-row>[data-mobile-label]::before{content:attr(data-mobile-label);position:absolute;left:0;top:2px;width:92px;font-size:9px;line-height:1.35;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-foreground)}
  .mobile-stack-table>.table-row>.user-cell[data-mobile-label],.mobile-stack-table>.table-row>.file-name[data-mobile-label]{align-items:flex-start}
  .mobile-stack-table>.table-row>.client-task-actions[data-mobile-label],.mobile-stack-table>.table-row>.task-table-actions[data-mobile-label],.mobile-stack-table>.table-row>.file-action-group[data-mobile-label]{justify-content:flex-start}
  .mobile-stack-table>.table-row>:not([data-mobile-label]){justify-self:end}
  .users-grid,.time-entry-grid,.task-table-grid,.log-grid,.mail-queue-grid{min-width:0}
}


@media(max-width:780px){
  .chat-head{height:auto;min-height:58px;align-items:flex-start;flex-direction:column;gap:10px;padding:12px 14px}
  .chat-head .user-cell{width:100%}
  .chat-main>.chat-head .actions{width:100%;justify-content:flex-start}
  .chat-head-actions{flex-wrap:wrap}
  .chat-main>.chat-head .actions .btn{max-width:100%}
  .project-chat .chat-head{min-height:58px}
  .chat-head-search{width:100%;min-width:0}
  .msg{max-width:calc(100% - 40px)}
  .composer{padding:10px;gap:7px}
  .composer textarea{width:100%}
  .project-link-create-row{grid-template-columns:1fr}
  .project-link-form-actions{justify-content:flex-start}
  .client-tour-modal{align-items:flex-end;justify-content:center;padding:14px}
  .client-tour-modal .modal-content{width:100%}
}

/* RC1.22 - mobile normalization and stable Kanban geometry. */
.time-entry-main .entry-description{margin-top:3px}
.drawer-header>.actions{margin-left:auto;flex:none}
.mini-preview-table strong{font-size:12px;font-weight:600;line-height:1.4}.mini-preview-table>div>span:not(.badge){font-size:10px;color:var(--muted-foreground)}.mini-preview-table .badge{font-size:10px;font-weight:600}
.log-grid>*{text-align:left}

@media(max-width:900px){
  #page-time .mini-kpi-grid{grid-template-columns:1fr}
  [data-server-users-table] .user-access-cell,[data-server-users-table] .user-login-cell,[data-server-users-table] .user-activity-cell{display:none}
  .mobile-stack-table>.table-row>.file-action-group[data-mobile-label]{justify-content:flex-end!important}
  [data-settings-panel="logs"] .mobile-stack-table>.table-row>[data-mobile-label]{text-align:left;justify-self:stretch}
  [data-settings-panel="logs"] .mobile-stack-table>.table-row>[data-mobile-label]>*{text-align:left}
  .drawer-header>.actions{justify-content:flex-end}
  #taskDrawer .drawer-header>div:first-child{min-width:0;flex:1}
  #taskDrawer .drawer-title{overflow-wrap:anywhere}
  .user-menu.mobile-nav-menu{width:min(360px,calc(100vw - 32px));max-height:calc(100vh - 88px);overflow:auto}
  .user-menu .mobile-sidebar-nav{padding:6px;border-bottom:1px solid var(--border)}
  .user-menu .mobile-sidebar-nav .sidebar-inner{display:block;padding:0}
  .user-menu .mobile-sidebar-nav .nav-group{padding:4px 0}
  .user-menu .mobile-sidebar-nav .nav-label{padding:7px 10px 5px}
  .user-menu .mobile-sidebar-nav .nav-link{height:38px;border-radius:7px;padding:0 10px;margin:0;color:var(--popover-foreground)}
  .user-menu .mobile-sidebar-nav .nav-link.active{background:var(--muted);color:var(--foreground)}
}
@media(max-width:900px){
  #page-client-analytics .analytics-client-grid{min-width:0;width:100%}
  #page-client-analytics [data-server-analytics-client-rows]>.table-row{width:100%}
}



/* Kanban viewport behavior; base geometry is defined once with the component above. */
@media(min-width:901px){
  .kanban:not([data-server-task-kanban])>.kanban-col{height:var(--kanban-viewport-height,calc(100dvh - 230px));min-height:420px;overflow-y:auto;overscroll-behavior-y:contain;overscroll-behavior-x:auto}
  [data-server-task-kanban],#page-project-detail [data-project-panel="tasks"].active .project-kanban{height:var(--kanban-viewport-height,calc(100dvh - 230px));min-height:0;box-sizing:border-box;grid-template-rows:minmax(0,1fr);align-items:stretch;overflow-x:auto;overflow-y:hidden}
  [data-server-task-kanban]>.kanban-col,#page-project-detail [data-project-panel="tasks"].active .project-kanban>.kanban-col{height:100%;min-height:0;max-height:100%;overflow-y:auto;overscroll-behavior-y:contain;overscroll-behavior-x:auto}
  .kanban>.kanban-col>.kanban-head{position:sticky;top:-12px;z-index:3;padding:12px 0 10px}
}
.task-repeat-indicator{color:var(--muted-foreground)}
.task-project-indicator{cursor:pointer}.task-project-indicator.is-linked{opacity:1}
.task-group-card{padding:0;overflow:hidden}.task-group-card>summary{list-style:none;cursor:pointer;padding:13px 14px 12px}.task-group-card>summary::-webkit-details-marker{display:none}.task-group-card>summary::marker{display:none}.task-group-card[open]>summary{border-bottom:1px solid var(--border)}.task-group-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.task-group-title{display:flex;align-items:center;gap:7px;min-width:0;overflow:hidden}.task-group-title>.icon{width:14px;height:14px;flex:none;color:var(--muted-foreground)}.task-group-title>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;line-height:1.35;color:var(--foreground)}.task-group-chevron{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:6px;color:var(--muted-foreground);transition:transform var(--duration-150,150ms) ease,background var(--duration-150,150ms) ease,color var(--duration-150,150ms) ease}.task-group-card>summary:hover .task-group-chevron{background:var(--muted);color:var(--foreground)}.task-group-card[open] .task-group-chevron{transform:rotate(180deg)}.task-group-meta-row{display:flex;align-items:center;gap:7px;min-width:0;margin-top:8px;flex-wrap:wrap}.task-group-client-context{min-width:0;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;font-weight:500;line-height:1.25;color:var(--muted-foreground)}.task-group-card .task-group-meta-row .count{font-size:10px;padding:2px 6px}.task-group-date{display:inline-flex;align-items:center;gap:3px;margin-top:0;color:var(--info);font-size:10px;font-weight:600;line-height:1.2}.task-group-date .icon{width:12px;height:12px}.task-group-hint{display:none!important}.task-group-items{display:grid;gap:8px;padding:10px;background:color-mix(in srgb,var(--muted) 22%,var(--card))}.task-group-items>.task-card{margin-bottom:0}.task-group-item{border-radius:9px}.task-group-item.is-dragging{opacity:.45}@media(max-width:520px){.task-group-client-context{max-width:100%;flex:1 1 100%}}
.field-optional{font-size:10px;font-weight:400;color:var(--muted-foreground)}
.field:has(input[required],select[required],textarea[required],[data-required="true"])>label::after{content:" *";color:var(--destructive);font-weight:700}.task-clock-input{font-variant-numeric:tabular-nums;letter-spacing:.02em}
.task-schedule-warning{grid-column:1/-1;margin-top:-6px;padding:9px 10px;border:1px solid color-mix(in srgb,var(--warning) 35%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--warning) 8%,var(--card));color:var(--foreground);font-size:11px;line-height:1.4}.task-schedule-warning-message{font-weight:500}.task-schedule-available{margin-top:9px;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--warning) 24%,var(--border))}.task-schedule-available-title{display:flex;align-items:baseline;gap:6px;margin-bottom:6px;font-size:11px;font-weight:700;color:var(--foreground)}.task-schedule-available-title span{font-size:10px;font-weight:500;color:var(--muted-foreground)}.task-schedule-slots{display:flex;flex-wrap:wrap;gap:5px}.task-schedule-slot{min-height:28px;padding:4px 8px;border:1px solid var(--border);border-radius:7px;background:var(--card);color:var(--foreground);font:inherit;font-size:10.5px;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.task-schedule-slot:hover,.task-schedule-slot:focus-visible{border-color:color-mix(in srgb,var(--primary) 45%,var(--border));background:color-mix(in srgb,var(--primary) 8%,var(--card));color:var(--primary);outline:none}.task-schedule-available-empty{font-size:10.5px;color:var(--muted-foreground)}
.mini-kpi-grid{grid-template-columns:1fr}
@media(max-width:900px){
  .report-setting-controls{align-items:stretch;flex-direction:column}.report-setting-controls .btn{width:100%}
  .kanban{--kanban-column-min-width:min(84vw,340px);height:max(380px,calc(100dvh - var(--header-h) - 128px));max-height:calc(100dvh - var(--header-h) - 20px);min-height:0;grid-auto-flow:column;grid-auto-columns:var(--kanban-column-min-width);grid-template-columns:none;grid-template-rows:minmax(0,1fr);align-items:stretch;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;overscroll-behavior-y:none;scroll-snap-type:x proximity;scroll-padding-inline:4px;-webkit-overflow-scrolling:touch}
  .kanban>.kanban-col{width:var(--kanban-column-min-width);min-width:var(--kanban-column-min-width);max-width:var(--kanban-column-min-width);height:100%;max-height:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scroll-snap-align:start;-webkit-overflow-scrolling:touch}
  .kanban>.kanban-col>.kanban-head{position:sticky;top:0;z-index:4;padding-top:10px}
}

/* Canonical list rhythm and bounded table bodies. */
:root{--content-title-description-gap:5px;--app-list-max-height:min(680px,70vh);--table-head-height:43px;--table-row-height:59px}
.row-sub,.task-desc,.entry-description{margin-top:var(--content-title-description-gap)}
.time-entry-main .entry-description{margin-top:var(--content-title-description-gap)}
.table-scroll-region{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.table-scroll-region>.table-head{position:sticky;top:0;z-index:2;background:var(--muted)}
.dashboard-upcoming-scroll{max-height:calc(5 * var(--table-row-height))}
.analytics-clients-scroll{max-height:calc(5 * var(--table-row-height))}
.time-entries-scroll-region{max-height:var(--app-list-max-height)}
.clients-scroll-region,.users-scroll-region,.logs-scroll-region{max-height:var(--viewport-list-max-height,var(--app-list-max-height))}
.project-files-scroll{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.dashboard-upcoming-scroll>.table-row,.analytics-clients-scroll>.table-row,.clients-scroll-region>.table-row,.project-files-scroll>.table-row,.users-scroll-region>.table-row,.logs-scroll-region>.table-row{min-height:var(--table-row-height)}
/* Materiały projektu: wspólna wysokość kart i faktycznie przewijane listy w obu portalach. */
.project-files-layout>.card{display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden}
.project-files-layout>.card>.card-head,
.project-files-layout>.card>.section-heading,
.project-files-layout>.table-card>.table-head{flex:none}
.project-files-layout .project-files-scroll,
.project-files-layout .client-project-files-scroll,
.project-files-layout .link-list{
  min-height:0;
  max-height:none;
  flex:1 1 auto;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
@media(max-width:1100px){
  .project-files-layout{height:auto;grid-template-rows:auto}
  .project-files-layout>.card{height:var(--project-materials-height)}
}
@media(min-width:901px){
  #page-project-detail [data-project-panel="notes"].active .admin-notes-chat,#page-project-detail [data-project-panel="chat"].active .shared-project-chat,#page-client-portal [data-client-panel="chat"].active .shared-project-chat{height:var(--workspace-panel-height,calc(100dvh - 280px));min-height:0}
}

/* RC1.28 - collapsed sidebar uses the dedicated compact UP23 mark. */
.brand-logo-mini{display:none;width:36px;height:36px;object-fit:contain;object-position:center}
.brand-home-link{color:inherit;text-decoration:none;cursor:pointer}.brand-home-link:focus-visible{outline:2px solid color-mix(in srgb,var(--ring) 50%,transparent);outline-offset:4px;border-radius:8px}


.smtp-settings-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}.client-mail-test-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.smtp-status-list{margin-top:14px}.smtp-settings-grid .field small{display:block;margin-top:5px;font-size:10px;color:var(--muted-foreground)}@media(max-width:1200px){.smtp-settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.smtp-settings-grid,.client-mail-test-grid{grid-template-columns:1fr}}

/* RC1.66 - shared responsive layout rules. */
.project-task-view{display:none}.project-task-view.active{display:block}
.project-task-table-grid{grid-template-columns:minmax(200px,2fr) minmax(115px,.75fr) minmax(110px,.8fr) minmax(130px,.8fr) minmax(210px,1fr)}
.project-task-table-row,.project-task-overview-row{cursor:pointer}
.project-task-readonly-card>.table-scroll-region{overflow:visible;scrollbar-gutter:auto}
.project-task-table-row{min-height:68px}
.project-task-table-row:not(.is-selected):hover,.project-task-overview-row:hover{background:color-mix(in srgb,var(--muted) 55%,transparent)}
@media(max-width:900px){.project-task-table-grid{min-width:760px}.project-task-toolbar{align-items:stretch}}

.log-filter-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px 10px}.log-filter-toolbar .log-filter-row{padding:0}.log-filter-toolbar .toolbar-select{min-width:150px}
@media(max-width:760px){.log-filter-toolbar{align-items:stretch;flex-direction:column}.log-filter-toolbar .toolbar-select{width:100%}}

/* Client analytics: registered TimeTracker entries */
.client-analytics-time-table{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--card)}
.client-analytics-time-grid{grid-template-columns:minmax(175px,1.8fr) minmax(100px,.9fr) minmax(90px,.8fr) minmax(120px,1fr)}.client-analytics-time-row{cursor:pointer}.client-analytics-time-row:focus-visible{outline:2px solid var(--chart-1);outline-offset:-2px;background:color-mix(in srgb,var(--chart-1) 7%,var(--card))}
.client-analytics-time-scroll{max-height:420px}
.client-analytics-time-scroll .table-row:last-child{border-bottom:0}
@media(max-width:760px){.client-analytics-time-grid{min-width:510px}.client-analytics-time-table{overflow-x:auto}.client-analytics-time-scroll{overflow:visible;max-height:none}}

/* RC1.104: bounded project activity and shared client task presentation */
.project-activity-scroll{max-height:330px;overflow-y:auto;overscroll-behavior:contain;padding-right:8px;scrollbar-gutter:stable}.client-upcoming-task{cursor:pointer}.client-upcoming-tasks-card>[data-client-upcoming-tasks]>.table-row:last-child{border-bottom:0}

/* RC1.106: client current stage structure and task focus */
.client-current-stage-card .card-head{padding-bottom:14px;border-bottom:1px solid var(--border);margin-bottom:14px}.client-current-stage-body{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--muted) 38%,var(--card));transition:border-color var(--duration-150,150ms) ease,background-color var(--duration-150,150ms) ease}.client-current-stage-card.is-waiting-client .client-current-stage-body{border-color:color-mix(in srgb,var(--warning) 45%,var(--border));background:color-mix(in srgb,var(--warning) 5%,var(--card))}.client-current-stage-card.is-waiting-client .client-current-stage-kicker{color:var(--warning)}.client-current-stage-copy{min-width:0}.client-current-stage-kicker{display:block;margin-bottom:5px;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-foreground)}.client-current-stage-body .portal-stage-title{margin:0 0 6px}.client-current-stage-body .portal-copy{margin:0}.client-current-stage-body>[data-client-current-stage-action]{flex:none}@media(max-width:700px){.client-current-stage-body{align-items:flex-start;flex-direction:column}.client-current-stage-body>[data-client-current-stage-action]{width:100%}}

/* RC1.110 - unified task visuals, categories and project caretaker chat header */
.period-filter{padding:14px 16px;margin-bottom:16px}.period-filter-main{display:flex;align-items:center;justify-content:space-between;gap:16px}.period-filter-presets{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.period-filter-custom{display:grid;grid-template-columns:minmax(180px,220px) minmax(180px,220px) auto;gap:12px;align-items:end;padding-top:14px;margin-top:14px;border-top:1px solid var(--border)}.period-filter-custom.hidden{display:none}.analytics-category-card{margin-top:16px}.analytics-category-bars .bar-h{grid-template-columns:minmax(110px,180px) 1fr 90px}.context-menu .menu-item.hidden{display:none}.field-help{display:block;margin-top:6px;color:var(--muted-foreground);font-size:10px;line-height:1.4}
@media(max-width:760px){.period-filter-main{align-items:flex-start;flex-direction:column}.period-filter-custom{grid-template-columns:1fr}.period-filter-presets{width:100%}.period-filter-presets .btn{flex:1 1 auto}}

/* RC1.155 - simplified settings rows and task category management */
.task-category-settings-head{display:grid;grid-template-columns:minmax(220px,1.3fr) minmax(130px,.6fr) minmax(170px,.7fr) 44px;gap:10px;padding:0 10px 7px;color:var(--muted-foreground);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.task-category-settings-head span:last-child{text-align:center}
.task-category-settings-list{display:grid;gap:0;border-top:1px solid var(--border)}
.task-category-settings-row{display:grid;grid-template-columns:minmax(220px,1.3fr) minmax(130px,.6fr) minmax(170px,.7fr) 44px;gap:10px;align-items:center;padding:10px 0;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent}
.task-category-name-cell{position:relative;min-width:0}
.task-category-name-cell .form-control{padding-right:106px}
.task-category-kind{position:absolute;right:9px;top:50%;transform:translateY(-50%);padding:3px 6px;border-radius:999px;background:var(--muted);color:var(--muted-foreground);font-size:9px;font-weight:600;line-height:1;pointer-events:none}
.task-category-group-cell,.task-category-duration-cell{min-width:0}
.task-category-settings-actions{display:flex;align-items:center;justify-content:center;padding:0}
.task-category-settings-actions .icon-btn{width:34px;height:34px}
.task-category-settings-row input[readonly]{cursor:default}
@media(max-width:760px){
  .task-category-settings-head{display:none}
  .task-category-settings-row{grid-template-columns:1fr auto;padding:10px 0}
  .task-category-name-cell{grid-column:1/-1}
  .task-category-group-cell,.task-category-duration-cell{grid-column:1}
  .task-category-settings-actions{grid-column:2;grid-row:2/span 3;align-self:center}
}

.period-filter-presets [data-period-preset="custom"],.time-period-presets [data-time-period-preset="custom"]{flex:0 0 auto;min-width:0;width:auto;white-space:nowrap}
.time-filter-period{margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.time-filter-period .field-label{display:block;margin-bottom:8px;font-size:11px;font-weight:600;color:var(--foreground)}
.time-period-presets{justify-content:flex-start}
.time-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.time-filter-custom{grid-column:1/-1;display:grid;grid-template-columns:minmax(180px,220px) minmax(180px,220px);gap:12px;padding-top:4px}
.time-filter-custom.hidden{display:none}
@media(max-width:760px){
  .time-filter-grid{grid-template-columns:1fr}
  .time-filter-custom{grid-template-columns:1fr}
  .time-period-presets{width:100%}
  .time-period-presets .btn{flex:0 1 auto}
  .period-filter-presets [data-period-preset="custom"],.time-period-presets [data-time-period-preset="custom"]{flex:0 0 auto}
}


/* RC1.111 - compact KPI strip, unified date presets and task metadata hierarchy */
/* RC1.112 - timer shows live remaining task budget/time when a task budget is defined */
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;padding:0;background:var(--border);border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-bottom:16px}
.metrics>.metric{min-width:0;min-height:66px;padding:10px 12px;border:0;border-radius:0;background:var(--card);box-shadow:none;display:flex;flex-direction:column;justify-content:center}
.metrics .metric-top{gap:8px;min-width:0}
.metrics .metric-label{font-size:10px;line-height:1.25;font-weight:500;color:var(--muted-foreground)}
.metrics .metric-icon{width:27px;height:27px;border-radius:7px;flex:none}
.metrics .metric-icon .icon{width:15px;height:15px}
.metrics .metric-value{font-size:18px;line-height:1.2;font-weight:600;letter-spacing:-.025em;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.metrics .metric-bottom{display:none}
.metrics .metric>.progress{height:3px;margin-top:7px}
.project-metrics .metric-date{font-size:18px}
.list-filter-custom-range{align-self:end}
[data-custom-date-range].hidden{display:none!important}
.task-stat{color:var(--muted-foreground);font-weight:500}
.task-stat:hover{background:var(--muted);color:var(--foreground)}
.task-stats>.icon-btn.small{color:var(--muted-foreground)}
.task-stats>.icon-btn.small:hover{background:var(--muted);color:var(--foreground)}
.task-deadline{font-weight:600}
.task-deadline.urgent{color:hsl(0 70% 48%)}
.task-deadline.soon{color:hsl(32 90% 36%)}
.task-deadline.future{color:hsl(221 83% 53%)}
.task-deadline.waiting{color:hsl(270 65% 45%)}
@media(max-width:900px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.metrics{grid-template-columns:1fr 1fr}.metrics>.metric{min-height:62px;padding:9px 10px}.metrics .metric-value{font-size:17px}}

/* RC1.116 - project-task completion preserves the current project context (JS fix). */

/* RC1.118 - desktop timer API integration */
.desktop-timer-api-grid{grid-template-columns:minmax(0,1fr)}
.input-with-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.desktop-timer-api-meta{margin-top:14px}
@media(max-width:720px){.input-with-actions{grid-template-columns:1fr}.input-with-actions .btn{width:100%}}

.client-portal-toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.client-portal-toolbar-actions [data-client-tour-open]{background:var(--card);border-color:var(--border)}.client-correction-modal textarea{min-height:150px;resize:vertical}.client-correction-file-control{display:flex;align-items:center;gap:10px;min-width:0}.client-correction-file-control .btn{flex:none}.client-correction-file-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:var(--muted-foreground)}.client-correction-file-control .btn.is-selected{border-color:color-mix(in srgb,var(--success) 35%,var(--border));background:color-mix(in srgb,var(--success) 6%,var(--card))}@media(max-width:700px){.client-portal-toolbar-actions{width:100%}.client-portal-toolbar-actions .btn{flex:1}.client-correction-file-control{align-items:flex-start;flex-direction:column}.client-correction-file-name{width:100%;white-space:normal;overflow-wrap:anywhere}}

/* RC1.173 - shared WYSIWYG descriptions with compact document spacing */
.rich-editor-wrap{display:grid;gap:0}.rich-editor-source{display:none!important}.rich-editor-wrap .rich-toolbar{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:6px;border:1px solid var(--border);border-bottom:0;border-radius:8px 8px 0 0;background:var(--muted)}.rich-editor-wrap .rich-toolbar button{min-width:30px;height:28px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:var(--muted-foreground);font:inherit;font-size:11px;font-weight:600;cursor:pointer}.rich-editor-wrap .rich-toolbar button:hover,.rich-editor-wrap .rich-toolbar button.is-active{background:var(--card);color:var(--foreground)}.rich-editor-wrap .rich-toolbar button.is-active{box-shadow:inset 0 0 0 1px var(--border)}.rich-editor-wrap .rich-toolbar button:disabled{opacity:.45;cursor:default}.rich-editor-surface{min-height:110px;padding:10px 12px;border:1px solid var(--border);border-radius:0 0 8px 8px;background:var(--card);font-size:12px;line-height:1.5;color:var(--foreground);outline:none;overflow-wrap:anywhere;cursor:text}.rich-editor-surface:focus{border-color:color-mix(in srgb,var(--chart-1) 55%,var(--border));box-shadow:0 0 0 2px color-mix(in srgb,var(--chart-1) 12%,transparent)}.rich-editor-surface.is-empty:before{content:attr(data-placeholder);color:var(--muted-foreground);pointer-events:none}.rich-editor-content p,.rich-editor-content>div{margin:0 0 5px}.rich-editor-content p:last-child,.rich-editor-content>div:last-child{margin-bottom:0}.rich-editor-content h1,.rich-editor-content h2,.rich-editor-content h3,.rich-editor-content h4,.rich-editor-content h5,.rich-editor-content h6{margin:9px 0 3px;line-height:1.3}.rich-editor-content h1:first-child,.rich-editor-content h2:first-child,.rich-editor-content h3:first-child,.rich-editor-content h4:first-child,.rich-editor-content h5:first-child,.rich-editor-content h6:first-child{margin-top:0}.rich-editor-content h1{font-size:18px}.rich-editor-content h2{font-size:16px}.rich-editor-content h3{font-size:14px}.rich-editor-content h4,.rich-editor-content h5,.rich-editor-content h6{font-size:12px}.rich-editor-content ul,.rich-editor-content ol{margin:2px 0 5px;padding-left:19px}.rich-editor-content p+ul,.rich-editor-content p+ol,.rich-editor-content h1+ul,.rich-editor-content h1+ol,.rich-editor-content h2+ul,.rich-editor-content h2+ol,.rich-editor-content h3+ul,.rich-editor-content h3+ol,.rich-editor-content h4+ul,.rich-editor-content h4+ol{margin-top:0}.rich-editor-content li{margin:0;padding:0 0 1px}.rich-editor-content li+li{margin-top:1px}.rich-editor-content li>p{margin:0}.rich-editor-content blockquote{margin:5px 0;padding:4px 0 4px 10px;border-left:2px solid var(--border);color:var(--muted-foreground)}.rich-editor-content pre{margin:5px 0;padding:8px;border:1px solid var(--border);border-radius:6px;background:var(--muted);white-space:pre-wrap}.rich-editor-content a{color:var(--primary);text-decoration:underline}.rich-editor-content table{width:100%;margin:5px 0;border-collapse:collapse}.rich-editor-content th,.rich-editor-content td{padding:5px 6px;border:1px solid var(--border);text-align:left;vertical-align:top}.rich-editor-wrap.is-readonly .rich-toolbar{display:none}.rich-editor-wrap.is-readonly .rich-editor-surface{min-height:72px;border-radius:8px;background:var(--muted);cursor:default}.rich-editor-wrap.is-readonly .rich-editor-surface:focus{border-color:var(--border);box-shadow:none}.time-entry-main{display:flex;align-items:center;gap:8px;min-width:0}.time-entry-main>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.time-entry-description-indicator{flex:0 0 auto}
@media(max-width:700px){.time-summary-foot{align-items:flex-start}.time-summary-goals{display:grid;gap:4px}}

/* RC1.135 - taskboard sections inside Kanban columns */
.kanban-section{display:grid;gap:7px;margin:0 0 12px;padding:8px 0 0;border:0;border-radius:0;background:transparent;}.kanban-section+.kanban-section{padding-top:14px}
.kanban-section:last-child{margin-bottom:0}.kanban-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px;padding:2px 0 6px;border:0;border-bottom:1px solid color-mix(in srgb,var(--foreground) 22%,var(--border));border-radius:0;background:transparent}.kanban-section-title-wrap{display:grid;gap:2px;min-width:0}.kanban-section-title-line{display:flex;align-items:center;gap:7px;min-width:0}.kanban-section-title{font-size:13px;line-height:1.3;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kanban-section-title-line .count{font-size:9px;opacity:.72}.kanban-section-schedule{font-size:9px;line-height:1.3;color:var(--muted-foreground)}.kanban-section-actions{display:flex;align-items:center;gap:2px;flex:none;opacity:.7;transition:opacity .15s}.kanban-section:hover .kanban-section-actions,.kanban-section-actions:focus-within{opacity:1}.kanban-section-actions .icon-btn.small{width:26px;height:26px}.kanban-section-actions .section-move-up .icon{transform:rotate(180deg)}.kanban-section-body{min-height:34px;border-radius:8px;transition:background .15s,box-shadow .15s}.kanban-section-body.is-dragover{background:color-mix(in srgb,var(--chart-1) 7%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chart-1) 28%,transparent)}.kanban-section-body>.task-card:last-child{margin-bottom:0}.kanban-section-empty{padding:10px 8px;text-align:center;color:var(--muted-foreground);font-size:10px;border:1px dashed var(--border);border-radius:8px}.task-section-schedule-settings{margin:0;padding-top:4px}.task-section-schedule-settings .form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.kanban-col:has(.kanban-section)>.task-drop-indicator{display:none}
@media(max-width:720px){.task-section-schedule-settings .form-grid.three{grid-template-columns:1fr}.kanban-section-actions{opacity:1}}


/* RC1.143 - project readiness and category-level project time statistics */
.project-readiness-card{margin-bottom:16px}.project-readiness-head{align-items:flex-start}.project-readiness-summary{display:grid;gap:10px;margin:4px 0 14px}.project-readiness-summary>div:first-child{display:flex;align-items:end;justify-content:space-between;gap:16px}.project-readiness-summary strong{font-size:28px;line-height:1;letter-spacing:-.04em}.project-readiness-summary span{font-size:11px;color:var(--muted-foreground)}.project-readiness-list{display:grid;border-top:1px solid var(--border)}.project-readiness-row{display:grid;grid-template-columns:minmax(220px,1.7fr) minmax(120px,.7fr) minmax(140px,.8fr) minmax(110px,.55fr) auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--border)}.project-readiness-row-main{min-width:0}.project-readiness-row-main strong{display:block;font-size:12px;line-height:1.4}.project-readiness-row-main small{display:block;margin-top:3px;color:var(--muted-foreground);font-size:10px;line-height:1.45}.project-readiness-row .form-control{min-height:34px;height:34px;font-size:11px}.project-readiness-row-actions{display:flex;align-items:center;gap:4px;justify-content:flex-end}.project-readiness-blockers{margin-bottom:12px}.project-readiness-blockers .alert{margin:0}.project-readiness-blocker-list{margin:6px 0 0;padding-left:18px}.project-readiness-blocker-list li+li{margin-top:3px}.project-readiness-rule{margin-top:14px;margin-bottom:0}.client-readiness-card{margin:0 0 16px}.client-readiness-card .project-readiness-row{grid-template-columns:minmax(220px,1.7fr) minmax(110px,.7fr) minmax(120px,.8fr) minmax(100px,.55fr)}.project-work-breakdown .analytics-category-bars{display:grid;gap:12px}.project-work-breakdown .analytics-category-bars .bar-h{grid-template-columns:minmax(180px,260px) 1fr 90px}.project-work-breakdown .bar-h>span{min-width:0}.project-work-breakdown .bar-h>span>b{display:block;color:var(--foreground);font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-work-breakdown .bar-h small{display:block;margin:2px 0 0;color:var(--muted-foreground);font-size:9px;font-weight:500;text-transform:none;letter-spacing:0}.project-work-breakdown .bar-h strong{white-space:nowrap}
@media(max-width:900px){.project-readiness-row,.client-readiness-card .project-readiness-row{grid-template-columns:minmax(0,1fr) minmax(110px,.55fr);align-items:start}.project-readiness-row-main{grid-column:1/-1}.project-readiness-row-actions{justify-content:flex-start}.project-work-breakdown .analytics-category-bars .bar-h{grid-template-columns:minmax(120px,180px) 1fr 74px}}
@media(max-width:620px){.project-readiness-head{display:grid;gap:12px}.project-readiness-head .actions{width:100%;justify-content:space-between}.project-readiness-summary>div:first-child{align-items:flex-start}.project-readiness-row,.client-readiness-card .project-readiness-row{grid-template-columns:1fr}.project-readiness-row-main{grid-column:auto}.project-readiness-row-actions{justify-content:flex-start}.project-work-breakdown .analytics-category-bars .bar-h{grid-template-columns:1fr 72px}.project-work-breakdown .bar-h>div{grid-column:1/-1;grid-row:2}.project-work-breakdown .bar-h strong{grid-column:2;grid-row:1}}

/* RC1.144 - project template editor and project overview spacing */
.project-work-breakdown{margin-bottom:16px}
.project-template-settings-layout{display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);gap:16px;align-items:start}.project-template-browser,.project-template-editor{min-width:0}.project-template-list{display:grid;gap:6px}.project-template-list-item{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;text-align:left;padding:10px 11px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--foreground);cursor:pointer}.project-template-list-item:hover{background:var(--muted)}.project-template-list-item.active{border-color:var(--chart-1);box-shadow:inset 0 0 0 1px var(--chart-1)}.project-template-list-copy{min-width:0}.project-template-list-copy strong,.project-template-list-copy small{display:block}.project-template-list-copy strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-template-list-copy small{margin-top:3px;font-size:10px;color:var(--muted-foreground)}.project-template-list-meta{display:flex;align-items:center;gap:5px}.project-template-empty{min-height:240px;display:flex;align-items:center;justify-content:center}.project-template-editor-head{align-items:flex-start}.project-template-main-fields{margin-bottom:14px}.project-template-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.project-template-summary .badge{font-size:10px}.project-template-section{padding-top:16px;border-top:1px solid var(--border)}.project-template-section+.project-template-section{margin-top:18px}.project-template-section>.section-heading{margin-bottom:10px}.project-template-stage-list,.project-template-task-list{display:grid;gap:8px}.project-template-row{border:1px solid var(--border);border-radius:8px;background:var(--card);padding:10px}.project-template-stage-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.project-template-row-actions{display:flex;align-items:center;gap:4px;justify-content:flex-end}.project-template-row-actions .icon-btn:first-child .icon{transform:rotate(180deg)}.project-template-task-card{border:1px solid var(--border);border-radius:8px;background:var(--card);overflow:hidden}.project-template-task-card>summary{list-style:none;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 11px;cursor:pointer}.project-template-task-card>summary::-webkit-details-marker{display:none}.project-template-task-card[open]>summary{border-bottom:1px solid var(--border);background:var(--muted)}.project-template-task-summary-copy{min-width:0}.project-template-task-summary-copy strong,.project-template-task-summary-copy small{display:block}.project-template-task-summary-copy strong{font-size:12px}.project-template-task-summary-copy small{margin-top:3px;font-size:10px;color:var(--muted-foreground)}.project-template-task-summary-meta{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}.project-template-task-body{padding:11px}.project-template-task-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.project-template-task-grid .field-wide{grid-column:1/-1}.project-template-toggle-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.project-template-toggle-grid .setting-toggle{min-height:46px;padding:6px 0}.project-template-checklist{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.project-template-checklist-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.project-template-checklist-head strong{font-size:11px}.project-template-checklist-list{display:grid;gap:6px}.project-template-checklist-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}.project-template-task-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}
@media(max-width:1100px){.project-template-settings-layout{grid-template-columns:1fr}.project-template-browser{position:static}.project-template-task-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-template-task-grid .field-wide{grid-column:1/-1}}
@media(max-width:720px){.project-template-task-grid,.project-template-toggle-grid{grid-template-columns:1fr}.project-template-task-grid .field-wide{grid-column:1}.project-template-editor-head{display:grid;gap:10px}.project-template-editor-head .actions{width:100%;justify-content:flex-start;flex-wrap:wrap}.project-template-list-item{grid-template-columns:1fr}.project-template-list-meta{justify-content:flex-start}}


/* RC1.145 - project template selection during project creation */
.project-create-template{margin:0;padding:0;border:0}
.project-create-template-summary{margin-top:10px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--card)}
.project-create-template-metrics{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.project-create-template-optional{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.project-create-template-optional>strong,.project-create-template-optional>small{display:block}
.project-create-template-optional>strong{font-size:11px}
.project-create-template-optional>small{margin-top:2px;color:var(--muted-foreground);font-size:10px}
.project-create-template-optional-list{display:grid;gap:6px;margin-top:8px}
.project-template-optional-row{display:flex;align-items:flex-start;gap:8px;padding:8px;border:1px solid var(--border);border-radius:8px;cursor:pointer}
.project-template-optional-row:hover{background:var(--muted)}
.project-template-optional-row>span{min-width:0}
.project-template-optional-row strong,.project-template-optional-row small{display:block}
.project-template-optional-row strong{font-size:11px;line-height:1.35}
.project-template-optional-row small{margin-top:2px;color:var(--muted-foreground);font-size:9px}

/* RC1.145 - task checklist generated from project workflow templates */
.task-checklist-list{display:grid;gap:8px;margin-top:12px}
.task-checklist-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:0;border:0;border-radius:0;background:transparent}
.task-checklist-row input[type="checkbox"]{margin:0}
.task-checklist-row .form-control{min-width:0}
.task-checklist-row.is-completed .form-control{text-decoration:line-through;opacity:.7}
.task-checklist-empty{padding:12px 0;color:var(--muted-foreground);font-size:13px}
@media (max-width:640px){.task-checklist-row{grid-template-columns:auto minmax(0,1fr)}.task-checklist-row [data-task-checklist-remove]{grid-column:2;justify-self:start}}

/* RC1.150 - readiness gating and template reload in existing projects */
.project-readiness-task-gate{margin-bottom:16px}.project-readiness-task-gate .project-readiness-card{margin-bottom:0}.project-readiness-attention{margin-bottom:0}.project-template-project-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start}.project-template-reload-btn{margin-top:22px;white-space:nowrap}
@media(max-width:720px){.project-template-project-control{grid-template-columns:1fr}.project-template-reload-btn{margin-top:0;width:100%}}

/* RC1.150 - project billing tranches and unified template readiness editor */
.project-tranches-section{margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}
.project-tranches-list{display:grid;gap:8px;margin-top:10px}.project-tranche-row{display:grid;grid-template-columns:minmax(100px,1fr) minmax(96px,.7fr) minmax(132px,.85fr) minmax(140px,.85fr) auto;gap:8px;align-items:end}.project-tranche-row .field{margin:0}.project-tranche-remove{margin-bottom:3px}.project-template-readiness-simple-list{display:grid;border-top:1px solid var(--border)}.project-template-readiness-list-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left;padding:10px 0;border-bottom:1px solid var(--border);background:transparent;color:var(--foreground);cursor:pointer}.project-template-readiness-list-row:hover{background:var(--muted)}.project-template-readiness-list-copy{min-width:0;padding-left:8px}.project-template-readiness-list-copy strong,.project-template-readiness-list-copy small{display:block}.project-template-readiness-list-copy strong{font-size:12px;line-height:1.35}.project-template-readiness-list-copy small{margin-top:3px;color:var(--muted-foreground);font-size:10px;line-height:1.4}.project-template-readiness-list-meta{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap;padding-right:6px}.project-template-readiness-order{display:flex;align-items:center;gap:2px;margin-left:2px}.project-template-readiness-move-up .icon{transform:rotate(180deg)}.task-checklist-progress{white-space:nowrap}
@media(max-width:720px){.project-tranche-row{grid-template-columns:1fr}.project-tranche-remove{margin:0;justify-self:start}.project-template-readiness-list-row{grid-template-columns:1fr}.project-template-readiness-list-meta{justify-content:flex-start;padding:0 8px 8px}.project-template-readiness-list-copy{padding-right:8px}}

.client-current-stage-workflow{margin:6px 0 0}.client-current-stage-workflow .badge{font-size:10px}

.task-row-labels{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:5px}

/* RC1.156 - task quotes for ongoing client work */
.task-quote-section{display:grid;gap:12px}
.task-quote-section.hidden{display:none}
.task-quote-fields{margin:0}
.task-quote-meta{font-size:11px;line-height:1.5;color:var(--muted-foreground)}
.task-quote-actions{display:flex;justify-content:flex-end;gap:8px;margin:0}
.task-quote-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
.task-quote-badge{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:640px){.task-quote-fields{grid-template-columns:1fr}.task-quote-actions .btn,.task-quote-card-actions .btn{width:100%}}


/* RC1.162 - compact task toolbar and shared date presets */
#page-tasks [data-task-view-panel="table"]{width:100%;max-width:1692px;margin-left:auto;margin-right:auto}
.period-filter-custom>[data-period-apply]{height:40px;min-height:40px;width:auto;min-width:0;justify-self:start;padding-inline:16px}
@media(max-width:900px){.task-view-toolbar{align-items:flex-start}.task-view-toolbar>.actions{width:100%;flex-wrap:wrap}.task-view-toolbar .search{flex:1 1 220px;max-width:none}.task-toolbar-deadline{flex:0 1 190px;min-width:165px}}
@media(max-width:620px){.task-group-switch{width:auto}.task-view-toolbar .search,.task-toolbar-deadline{flex:1 1 100%;max-width:none}.period-filter-custom>[data-period-apply]{width:auto}}
/* RC1.165 — logowania klientów jako zakładka modułu Logi */
.client-login-grid{grid-template-columns:160px minmax(190px,1.05fr) minmax(220px,1.25fr) 120px minmax(160px,.9fr)}
.client-login-grid>*{min-width:0;text-align:left}
.client-login-grid>div strong,.client-login-grid>div .row-sub{display:block}
.client-logins-scroll-region{max-height:var(--viewport-list-max-height,var(--app-list-max-height))}
@media(max-width:900px){.client-login-grid{min-width:850px}}



/* RC1.171 - client portal data repair, task group header alignment and rich task descriptions */
.task-card .task-status-deadline{display:inline-flex;align-items:center;gap:6px;flex:none;white-space:nowrap}
.task-card .task-card-top .task-deadline{min-height:0;padding:0;border-radius:0;background:transparent;font-size:11px;line-height:1.2}
.task-card .task-card-top .task-deadline .icon{width:13px;height:13px}
.task-client-identity{display:flex;align-items:center;min-width:0;flex:none}
.task-client-name{--task-client-name-width:148px;width:var(--task-client-name-width);max-width:var(--task-client-name-width);min-width:var(--task-client-name-width);overflow:hidden;white-space:nowrap;color:var(--muted-foreground);font-size:11px;line-height:1.35}
.task-client-name-text{display:inline-block;min-width:max-content;will-change:transform;transform:translateX(0)}
.task-client-name.is-overflowing:hover .task-client-name-text,.task-client-name.is-overflowing:focus-within .task-client-name-text{animation:task-client-name-marquee var(--task-client-marquee-duration,3s) ease-in-out infinite alternate}
@keyframes task-client-name-marquee{from{transform:translateX(0)}to{transform:translateX(var(--task-client-marquee-distance,0px))}}
@media(prefers-reduced-motion:reduce){.task-client-name.is-overflowing:hover .task-client-name-text,.task-client-name.is-overflowing:focus-within .task-client-name-text{animation:none}}
@media(max-width:520px){.task-client-name{--task-client-name-width:118px}}

/* RC1.172 - group drag between task sections, grouped schedule reflow and persistent rich descriptions */
.task-group-summary[data-draggable-task-group]{cursor:grab}
.task-group-summary[data-draggable-task-group]:active{cursor:grabbing}
.task-group-card.is-dragging{opacity:.4}

/* RC1.175 - canonical mobile layout for project views, native tables, Kanban and chat */
@media(max-width:900px){
  /* Project/client overview: every grid child and card may shrink to the viewport. */
  #page-project-detail,#page-client-portal,.project-panel,.client-panel,.project-detail-grid,.portal-grid,
  .project-detail-grid>.stack,.portal-grid>.stack,.project-detail-grid .card,.portal-grid .card,
  .project-finance-grid>.card,.project-work-breakdown,.project-readiness-card{min-width:0;max-width:100%}
  #page-project-detail .card-head,#page-client-portal .card-head{min-width:0;flex-wrap:wrap;align-items:flex-start}
  #page-project-detail .card-head>div:first-child,#page-client-portal .card-head>div:first-child{min-width:0;flex:1 1 180px}
  #page-project-detail .card-title,#page-project-detail .card-sub,#page-client-portal .card-title,#page-client-portal .card-sub,
  #page-project-detail .timeline-item,#page-client-portal .timeline-item,#page-project-detail .link-list a>div:last-child,
  #page-client-portal .portal-file>div:last-child{min-width:0;overflow-wrap:anywhere;word-break:break-word}
  #page-project-detail .project-progress-value{align-items:flex-start;gap:8px;flex-wrap:wrap}
  #page-project-detail .project-progress-value span{max-width:100%;text-align:left;overflow-wrap:anywhere}
  #page-project-detail .info-row{min-width:0;gap:12px}
  #page-project-detail .info-row span{flex:0 1 46%}
  #page-project-detail .info-row strong{min-width:0;max-width:54%;overflow-wrap:anywhere;word-break:break-word}
  #page-project-detail .link-list a{min-width:0}
  #page-project-detail .link-list a>div:last-child{min-width:0;flex:1}
  #page-project-detail .link-list span{white-space:normal;overflow-wrap:anywhere;word-break:break-all}
  .project-user-list{display:grid;gap:8px;min-width:0}
  .project-user-row{display:flex;align-items:center;gap:10px;min-width:0;padding:8px 0}
  .project-user-row>.avatar{flex:0 0 34px}
  .project-user-row>.user-copy{min-width:0;flex:1}
  .project-user-row>.user-copy strong,.project-user-row>.user-copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .project-user-row>.badge{flex:none;max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  /* Client header/contact identity must not be crushed by flexible siblings. */
  .client-portal-header{height:auto;min-height:64px;padding:10px 14px}
  .client-portal-header-inner{min-width:0;gap:12px}
  .portal-brand{min-width:0;flex:1}
  .portal-brand-logo{width:min(104px,30vw);max-width:100%;height:auto;flex:none}
  .portal-user{min-width:0;max-width:62%;flex:0 1 auto;justify-content:flex-end;text-align:right}
  .portal-user>div:first-child{min-width:0}
  .portal-user strong,.portal-user span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .portal-user .avatar{flex:0 0 34px;width:34px;height:34px}
  #page-client-portal .project-client-card{min-width:0}
  #page-client-portal .project-client-card>.avatar{flex:0 0 34px;width:34px;height:34px}
  #page-client-portal .project-client-card>div:last-child{min-width:0;flex:1}
  #page-client-portal .project-client-card strong,#page-client-portal .project-client-card span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .client-current-stage-body,.client-current-stage-copy{min-width:0;max-width:100%}
  .client-current-stage-body .portal-stage-title,.client-current-stage-body .portal-copy{overflow-wrap:anywhere;word-break:break-word}

  /* These four modules intentionally stay tables on mobile and scroll horizontally as one table. */
  #page-time [data-server-time-table],#page-clients [data-server-clients-table],
  #page-contracts [data-server-contracts-table],#page-users [data-server-users-table]{
    max-width:100%;overflow-x:auto;overflow-y:visible;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable
  }
  #page-time [data-server-time-table]>.table-scroll-region,#page-clients [data-server-clients-table]>.table-scroll-region,
  #page-users [data-server-users-table]>.table-scroll-region{overflow:visible;max-height:none;scrollbar-gutter:stable}
  #page-time [data-server-time-table]>.table-head,#page-time [data-server-time-table] .table-row{min-width:760px}
  #page-clients [data-server-clients-table]>.table-head,#page-clients [data-server-clients-table] .table-row{min-width:800px}
  #page-contracts [data-server-contracts-table]>.table-head,#page-contracts [data-server-contracts-table]>.table-row{min-width:720px}
  #page-users [data-server-users-table]>.table-head,#page-users [data-server-users-table] .table-row{min-width:820px}
  #page-time [data-server-time-table]>.section-heading{min-width:min(100%,760px);position:sticky;left:0;z-index:3;background:var(--card)}

  /* Chat/messages: no child is allowed to establish a width beyond the viewport. */
  .chat-layout,.chat-main,.project-chat,.shared-project-chat,.admin-notes-chat,.chat-head,.chat-messages,.composer{min-width:0;max-width:100%}
  .chat-main{width:100%;overflow:hidden}
  .chat-messages{width:100%;padding:14px 10px;overflow-x:hidden;overflow-y:auto}
  .msg-row{min-width:0;max-width:100%;gap:7px}
  .msg{min-width:0;max-width:calc(100% - 38px);overflow-wrap:anywhere;word-break:break-word}
  .msg img,.msg video,.msg iframe,.msg table{max-width:100%;height:auto}
  .message-body,.admin-note-body{max-width:100%;overflow-wrap:anywhere;word-break:break-word}
  .composer{width:100%}
  .composer textarea{min-width:0;width:100%}
  .chat-head .user-cell,.chat-project-link{min-width:0;max-width:100%}
  .chat-head .user-cell .user-copy,.chat-project-link .user-copy{min-width:0;flex:1}
}
@media(max-width:620px){
  #page-project-detail .card-pad,#page-client-portal .card-pad{padding:14px}
  #page-project-detail .project-detail-grid,#page-client-portal .portal-grid{gap:12px}
  #page-project-detail .stack,#page-client-portal .stack{gap:12px}
  #page-project-detail .project-task-list>.card-head,#page-client-portal .client-upcoming-tasks-card>.card-head{gap:8px;padding:14px 14px 0!important}
  #page-project-detail .project-task-list>.card-head .btn,#page-client-portal .client-upcoming-tasks-card>.card-head .btn{flex:none;width:auto}
  .portal-user{max-width:68%}
  .chat-head{padding:10px 12px}
  .chat-head-actions{width:100%;display:grid;grid-template-columns:1fr;gap:8px}
  .chat-head-actions .btn,.chat-head-actions .search{width:100%;max-width:100%}
  .composer{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px;padding:9px}
  .composer>.btn{grid-column:1/-1;width:100%}
}


/* RC1.176 - native task tables on mobile, compact timer form, wrapped time-entry titles and mobile client tour */
.timer-fields{grid-template-columns:1fr}
.timer-fields>.field{min-width:0;width:100%}
.timer-description,.timer-quick-task{grid-column:auto}
.time-entry-main{width:100%;min-width:0;align-items:flex-start}
.time-entry-main>strong{max-width:100%;min-width:0;overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.4}
.time-entry-grid>*{min-width:0}
.client-upcoming-table-scroll{max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}
.client-upcoming-grid{grid-template-columns:minmax(280px,2fr) minmax(140px,1fr) minmax(120px,.8fr)}
.client-upcoming-task>div:first-child{min-width:0}
.client-upcoming-task>div:first-child>strong{display:block;white-space:normal;overflow-wrap:anywhere;word-break:break-word}

@media(max-width:900px){
  /* Task list stays a real table, exactly like the other list modules. */
  #page-tasks [data-server-task-table]{max-width:100%;overflow-x:auto;overflow-y:visible;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}
  #page-tasks [data-server-task-table]>.table-head,#page-tasks [data-server-task-table]>.table-row{min-width:980px}
  #page-tasks [data-server-task-table]>.table-row>div:nth-child(2)>strong{white-space:normal;overflow-wrap:anywhere;word-break:break-word}

  /* Client task list is also a native horizontally scrollable table. */
  #page-client-portal [data-client-task-table]{max-width:100%;overflow-x:auto;overflow-y:visible;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}
  #page-client-portal [data-client-task-table]>.table-scroll-region{overflow:visible;max-height:none;scrollbar-gutter:auto}
  #page-client-portal [data-client-task-table]>.table-head,#page-client-portal [data-client-task-table]>.table-scroll-region>.table-row{min-width:780px}
  #page-client-portal [data-client-task-table]>.table-scroll-region>.table-row>div:first-child>strong{display:block;white-space:normal;overflow-wrap:anywhere;word-break:break-word}

  /* Upcoming tasks remain a table and scroll inside the card instead of widening the portal. */
  #page-client-portal .client-upcoming-table-scroll{width:100%}
  #page-client-portal .client-upcoming-grid{min-width:620px}
  #page-client-portal .client-upcoming-tasks-card{overflow:hidden}
}

@media(max-width:700px){
  .timer-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px}
  .timer-actions>.actions{display:flex;flex-direction:column;align-items:stretch;width:100%;gap:8px}
  .timer-actions>.btn,.timer-actions>.actions>.btn{width:100%;justify-content:center}

  /* Tour becomes a compact bottom sheet; highlighted content is scrolled above it. */
  .client-tour-modal{padding:8px;align-items:flex-end;justify-content:center}
  .client-tour-modal .modal-content{width:100%;max-height:min(36dvh,320px);border-radius:12px}
  .client-tour-modal .modal-header{padding:12px 14px;align-items:flex-start}
  .client-tour-modal .modal-body{padding:12px 14px}
  .client-tour-modal .modal-footer{padding:10px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}
  .client-tour-modal .modal-footer>.actions{flex-wrap:nowrap;gap:6px}
  .client-tour-modal .modal-footer .btn{min-width:0;padding-inline:12px}
  .client-tour-highlight{outline-width:2px;outline-offset:2px;box-shadow:0 0 0 5px color-mix(in srgb,var(--chart-1) 18%,transparent);scroll-margin-top:92px;scroll-margin-bottom:40dvh}
  .client-tour-tab-highlight{outline-offset:1px}
}
@media(max-width:700px){.timer-actions>.actions{order:1}.timer-actions>#timerCancelBtn{order:2}}


/* RC1.177 - mobile tables, overlay geometry, scrollable tabs/chat and account-menu cleanup */
.new-conversation-composer + .alert{margin-top:16px}

/* RC1.178 - mobile chat viewport, nested Kanban scrolling and compact mobile onboarding */
@media(max-width:900px){
  /* Tabs stay one horizontal strip in every module/drawer instead of wrapping or squeezing labels. */
  .tabs{max-width:100%;width:100%;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tabs>.tab{flex:0 0 auto;white-space:nowrap}
  .toolbar>.tabs{min-width:0}

  /* Native tables requested on mobile: never convert these modules to vertical cards. */
  .analytics-active-clients-card,.project-task-list,
  #page-project-detail [data-project-panel="files"] .table-card,
  #page-client-portal [data-client-panel="files"] .table-card{max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}
  .analytics-active-clients-card>.table-head,.analytics-active-clients-card [data-server-analytics-client-rows]>.table-row{min-width:650px}
  #page-client-analytics .analytics-active-clients-card .analytics-client-grid{min-width:650px;width:auto}
  .project-task-list>.table-head,.project-task-list>.table-row{min-width:620px}
  #page-project-detail [data-project-panel="files"] .file-grid{min-width:680px}
  #page-project-detail [data-project-panel="files"] .project-files-scroll{overflow-x:visible}
  #page-client-portal [data-client-panel="files"] .portal-file-grid{min-width:620px}

  /* The message list must stay available on phones. It becomes a compact horizontal chooser. */
  #page-chat .chat-layout{display:grid;grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);height:calc(100dvh - var(--header-h) - 150px);min-height:430px;max-height:720px;overflow:hidden}
  #page-chat .chat-list{display:flex;min-width:0;max-width:100%;border-right:0;border-bottom:1px solid var(--border);overflow:hidden}
  #page-chat .chat-conversations-scroll{display:flex;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}
  #page-chat .conversation{flex:0 0 min(280px,82vw);min-width:0;border-right:1px solid var(--border);border-bottom:0}
  #page-chat .conversation p{max-width:190px}
  #page-chat .chat-main{min-height:0;overflow:hidden}

  /* Project/client chats scroll inside the component; the composer remains reachable without scrolling the whole page. */
  #page-project-detail .project-chat,#page-client-portal .project-chat{height:calc(100dvh - var(--header-h) - 18px);min-height:0;max-height:none;overflow:hidden;scroll-margin-top:calc(var(--header-h) + 8px)}
  #page-project-detail .project-chat .chat-messages,#page-client-portal .project-chat .chat-messages{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain}
  #page-project-detail .project-chat .composer,#page-client-portal .project-chat .composer{flex:none;padding-bottom:max(9px,env(safe-area-inset-bottom))}

  /* Mobile account menu: sidebar supplies Users/Settings; hide duplicate shortcuts and keep Notifications visually identical. */
  .user-menu.mobile-nav-menu .menu-body [data-go-page="users"],
  .user-menu.mobile-nav-menu .menu-body [data-go-page="settings"][data-settings-target="general"]{display:none}
  .user-menu.mobile-nav-menu .menu-body{padding:6px}
  .user-menu.mobile-nav-menu .menu-body .menu-item{height:38px;border-radius:7px;padding:0 10px;margin:0;font-size:14px;font-weight:500;color:var(--popover-foreground)}
  .user-menu.mobile-nav-menu .menu-body .menu-item>.icon{width:20px;height:20px;flex:none;color:color-mix(in srgb,var(--popover-foreground) 50%,transparent)}
  .user-menu.mobile-nav-menu .menu-body .menu-item:hover{background:var(--muted);color:var(--foreground)}
  .user-menu.mobile-nav-menu .menu-body .menu-item.danger{color:var(--destructive)}

  /* Header children must not crush drawer/modal titles into a vertical word. */
  .drawer-header,.modal-header{min-width:0;align-items:flex-start}
  .drawer-header>div:first-child,.modal-header>div:first-child{min-width:0;flex:1 1 auto}
  .drawer-title,.modal-title{min-width:0;white-space:normal;overflow-wrap:anywhere;word-break:normal;line-height:1.3}
  .drawer-header>.actions,.modal-header>.actions{width:auto!important;min-width:0;flex:0 0 auto;align-items:center;flex-wrap:nowrap}
  .drawer-header>.actions .btn,.modal-header>.actions .btn{flex:0 0 auto}
}

@media(max-width:700px){
  /* Floating mobile overlays: bounded height, no full-screen white sheet, independently scrollable body. */
  .drawer,.drawer-lg,.drawer-xl,.drawer-xxl{top:auto;right:10px;bottom:10px;left:10px;width:auto;height:auto;max-height:calc(100dvh - 20px);border:1px solid var(--border);border-radius:12px;overflow:hidden;transform:translateY(calc(100% + 20px))}
  .drawer.open{transform:translateY(0)}
  .drawer-header,.drawer-footer{flex:none;padding:13px 14px}
  .drawer-body{min-height:0;overflow-y:auto;overflow-x:hidden;padding:14px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .modal{padding:10px;align-items:center;justify-content:center;overflow:hidden}
  .modal-content,.modal-lg .modal-content,.modal-xl .modal-content{width:100%;height:auto;max-height:calc(100dvh - 20px);overflow:hidden;border-radius:12px}
  .modal-header,.modal-footer{flex:none;padding:13px 14px}
  .modal-body{min-height:0;overflow-y:auto;overflow-x:hidden;padding:14px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  body.overlay-open{height:auto;overflow:hidden}

  /* Client tour stays a compact bottom sheet on phones; generic modal centering must not override it. */
  #clientTourModal{align-items:flex-end;justify-content:center;padding:8px}
  #clientTourModal .modal-content{width:100%;height:auto;max-height:min(34dvh,290px);border-radius:12px}
  #clientTourModal .modal-header{padding:10px 12px}
  #clientTourModal .modal-header .card-sub{display:none}
  #clientTourModal .modal-body{padding:9px 12px}
  #clientTourModal .modal-body .card.card-pad{padding:10px}
  #clientTourModal .modal-footer{padding:9px 12px}

  /* Restore canonical Cleopatra button geometry after the global mobile .actions flex rule. */
  .timer-actions>.btn,.timer-actions>.actions>.btn{height:40px;min-height:40px;flex:0 0 40px;padding:0 16px;border-radius:6px}

  /* Chat head/composer stay compact enough to leave actual room for messages. */
  #page-chat .chat-head{max-height:150px;overflow-y:auto}
  #page-chat .composer,#page-project-detail .project-chat .composer,#page-client-portal .project-chat .composer{flex:none}
  #page-project-detail .project-chat,#page-client-portal .project-chat{height:calc(100dvh - var(--header-h) - 12px);min-height:0;max-height:none}
}
/* Finance/chart card heads stack content above their tab switcher on narrow screens. */
@media(max-width:700px){
  .analytics-performance-head{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:10px}
  .analytics-performance-head>div:first-child{min-width:0}
  .analytics-performance-head .chart-mode-tabs{width:100%;max-width:100%;justify-content:flex-start;overflow-x:auto;overscroll-behavior-x:contain}
}


/* RC1.182 - shared floating menus above scrollable overlays + stable WYSIWYG placeholder */
.floating-menu-layer{position:fixed;inset:0;z-index:220;pointer-events:none;overflow:visible}
.floating-menu-layer>.app-date-preset-menu,.floating-menu-layer>.searchable-select-menu{pointer-events:auto;z-index:221}
.app-date-preset-menu.is-floating{position:fixed;right:auto;bottom:auto}
.searchable-select-menu.is-open{display:block}
.searchable-select-menu.is-floating{position:fixed;right:auto;bottom:auto;overflow:auto}
.rich-editor-surface{position:relative}
.rich-editor-surface.is-empty:before{position:absolute;left:12px;right:12px;top:10px;display:block;margin:0;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* RC1.184 - deterministic task planning, category defaults and faster point updates */

/* RC1.186 - client-safe task preview for active and completed project tasks */
.client-task-row-clickable{cursor:pointer}
#page-client-portal [data-client-task-table]>.table-scroll-region{scrollbar-gutter:auto}
.client-task-preview-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.client-task-preview-field{min-width:0;padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:var(--card)}
.client-task-preview-field span,.client-task-preview-field strong{display:block}
.client-task-preview-field span{font-size:10px;font-weight:600;color:var(--muted-foreground);margin-bottom:5px}
.client-task-preview-field strong{font-size:12px;font-weight:600;overflow-wrap:anywhere}
.client-task-preview-description{margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}
.client-task-preview-description .drawer-section-title{margin-bottom:9px}
.client-task-preview-rich{font-size:12px;line-height:1.65;color:var(--foreground);overflow-wrap:anywhere}
.client-task-preview-rich p,.client-task-preview-rich ul,.client-task-preview-rich ol,.client-task-preview-rich blockquote,.client-task-preview-rich pre{margin:0 0 10px}
.client-task-preview-rich>:last-child{margin-bottom:0}
.client-task-preview-rich ul,.client-task-preview-rich ol{padding-left:20px}
.client-task-preview-rich a{color:var(--primary);text-decoration:underline;text-underline-offset:2px}
@media(max-width:700px){.client-task-preview-meta{grid-template-columns:1fr}.client-task-preview-modal .modal-content{width:100%}}

/* RC1.186 - komentarze tasków i odnośniki z czatu */
.task-comments-section{display:grid;gap:12px}.task-comments-section.hidden{display:none}.task-comments-list{display:grid;gap:8px;max-height:320px;overflow:auto;scrollbar-gutter:stable}.task-comment{padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--card)}.task-comment.is-client{background:color-mix(in srgb,var(--primary) 4%,var(--card))}.task-comment-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:5px}.task-comment-head strong{font-size:11px}.task-comment-head span{font-size:9px;color:var(--muted-foreground);white-space:nowrap}.task-comment-body{font-size:12px;line-height:1.55;overflow-wrap:anywhere}.task-comment-composer{display:grid;gap:8px}.task-comment-composer textarea{min-height:78px;resize:vertical}.task-comment-composer .actions{justify-content:flex-end}.client-task-preview-comments{margin-top:18px;padding-top:18px;border-top:1px solid var(--border);display:grid;gap:12px}.message-task-link{width:100%;display:flex;align-items:center;gap:7px;margin-top:8px;padding:7px 9px;border:1px solid var(--border);border-radius:7px;background:var(--muted);color:var(--foreground);font:inherit;text-align:left;cursor:pointer}.message-task-link span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-task-link:hover,.message-task-link:focus-visible{background:color-mix(in srgb,var(--primary) 8%,var(--muted));border-color:color-mix(in srgb,var(--primary) 30%,var(--border))}.message-task-link:focus-visible{outline:2px solid color-mix(in srgb,var(--ring) 35%,transparent);outline-offset:2px}@media(max-width:700px){.task-comment-head{align-items:flex-start;flex-direction:column;gap:2px}.task-comment-head span{white-space:normal}}


/* RC1.191 - formatted and scrollable "Teraz w projekcie" description */
.client-current-stage-body .client-current-stage-rich{
  max-height:calc(1.6em * 7);
  overflow-y:auto;
  overflow-x:hidden;
  padding-right:8px;
  scrollbar-gutter:stable;
  color:var(--foreground);
}
.client-current-stage-body .client-current-stage-rich p,
.client-current-stage-body .client-current-stage-rich ul,
.client-current-stage-body .client-current-stage-rich ol,
.client-current-stage-body .client-current-stage-rich blockquote,
.client-current-stage-body .client-current-stage-rich pre{margin-bottom:6px}
.client-current-stage-body .client-current-stage-rich>:last-child{margin-bottom:0}

/* RC1.207 — real client sessions use only the project portal shell. */
body.server-client .client-preview-toolbar{display:none!important}body.server-client .client-portal-shell{min-height:100vh}body.server-client .topbar,body.server-client .sidebar{display:none!important}body.server-client .main{margin-left:0!important;padding-top:0!important}




/* Materiały: osobne sekcje Pliki i Linki, bez drugiego filtra. */
.project-materials-toolbar{margin-bottom:16px}
.project-files-layout>.project-materials-toolbar{grid-column:1 / -1;min-width:0}
/* RC1.231: one event/channel notification matrix; previous 4-group matrix remains unused for compatibility. */
.notification-rule-scroll{max-width:100%;overflow-x:auto}
.notification-rule-matrix{min-width:660px;border-top:1px solid var(--border)}
.notification-rule-head,.notification-rule-row{display:grid;grid-template-columns:minmax(210px,1fr) repeat(4,minmax(75px,96px));gap:8px;align-items:center}
.notification-rule-head{padding:12px 0;font-size:11px;color:var(--muted-foreground)}
.notification-rule-head strong{text-align:center;font-size:10px;font-weight:600}
.notification-rule-row{padding:12px 0;border-top:1px solid var(--border);min-height:62px}
.notification-rule-row>span>strong,.notification-rule-row>span>small{display:block}
.notification-rule-row>span>strong{font-size:12px}
.notification-rule-row>span>small{font-size:10px;line-height:1.5;color:var(--muted-foreground);margin-top:3px}
.notification-rule-note{margin:12px 0 0;font-size:11px;line-height:1.6;color:var(--muted-foreground)}

/* RC1.233 — przewijane materiały niezależnie od wysokości ekranu. */
#page-client-portal .client-files-layout>.table-card{min-width:0;overflow:hidden}

/* Transient thumb only: width/gutter never changes while scrolling. */
html[data-up23-transient-scrollbars],html[data-up23-transient-scrollbars] :where(*:not(select):not(textarea)){scrollbar-width:thin;scrollbar-color:transparent transparent}
html[data-up23-transient-scrollbars]::-webkit-scrollbar,html[data-up23-transient-scrollbars] :where(*:not(select):not(textarea))::-webkit-scrollbar{width:6px;height:6px}
html[data-up23-transient-scrollbars]::-webkit-scrollbar-thumb,html[data-up23-transient-scrollbars] :where(*:not(select):not(textarea))::-webkit-scrollbar-thumb{border-radius:999px;background:transparent}
html[data-up23-transient-scrollbars]::-webkit-scrollbar-track,html[data-up23-transient-scrollbars] :where(*:not(select):not(textarea))::-webkit-scrollbar-track{background:transparent}
html[data-up23-transient-scrollbars].up23-scrollbar-active,html[data-up23-transient-scrollbars] :where(.up23-scrollbar-active){scrollbar-color:color-mix(in srgb,var(--muted-foreground) 48%,transparent) transparent}
html[data-up23-transient-scrollbars].up23-scrollbar-active::-webkit-scrollbar-thumb,html[data-up23-transient-scrollbars] :where(.up23-scrollbar-active)::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted-foreground) 48%,transparent)}
@media (forced-colors:active){html[data-up23-transient-scrollbars],html[data-up23-transient-scrollbars] :where(*:not(select):not(textarea)){scrollbar-width:auto;scrollbar-color:auto}}

/* Shared drawer section tabs: same Cleopatra tabs as client/project editors. */
.workspace-drawer-tabs{margin:0 0 16px;min-width:0}
.workspace-drawer-tabs .tabs{max-width:100%;overflow-x:auto;flex-wrap:nowrap}
.workspace-drawer-tabs .tab{white-space:nowrap;flex:none}
.client-analytics-panel{display:none;min-width:0}
.client-analytics-panel.active{display:block}
.task-finance-fields{margin:16px 0 0}
@media(max-width:650px){.workspace-drawer-tabs .tabs{width:100%}.task-finance-fields{grid-template-columns:1fr}}

/* Shared admin header: one active page-head mounts in topmain. */
.admin-page-head-slot{flex:1;min-width:0;height:100%;display:flex;align-items:center}
.admin-page-head-slot:empty{display:none}
.admin-page-head-slot>.page-head{height:100%;width:100%;min-width:0;margin:0;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:clamp(12px,2vw,26px)}
.admin-page-head-slot>.page-head>div:first-child{flex:0 1 300px;min-width:120px;overflow:hidden}
.admin-page-head-slot .page-title{font-size:clamp(16px,1.35vw,21px);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-page-head-slot .page-sub{font-size:11px;line-height:1.35;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-page-head-slot .project-title-row{flex-wrap:nowrap;min-width:0;gap:8px}
.admin-page-head-slot .project-title-row>.badge{flex:none;max-width:115px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-page-head-slot .actions{flex:0 1 auto;min-width:0;max-width:100%;align-items:center;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:3px 1px}
.admin-page-head-slot .actions::-webkit-scrollbar{display:none}
.admin-page-head-slot .actions>*{flex:none}
.admin-page-head-slot .btn{height:36px;padding-inline:12px;font-size:12px}
.topmain{min-width:0}
.topmain>.top-spacer{display:none}
.topmain>.user-trigger{flex:none;margin-left:12px}
@media(max-width:1450px) and (min-width:901px){
  .admin-page-head-slot>.page-head>div:first-child{flex-basis:220px}
  .admin-page-head-slot .page-sub{max-width:220px}
}
@media(max-width:900px){
  :root{--header-h:120px}
  body.client-preview,body.server-client{--header-h:64px}
  .topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:56px 64px;align-items:center}
  .topbar>.brand{grid-column:1;grid-row:1;max-width:170px}
  .topmain{display:contents}
  .admin-page-head-slot{grid-column:1/-1;grid-row:2;height:64px;padding:0 16px;border-top:1px solid var(--border);min-width:0}
  .topmain>.user-trigger{grid-column:2;grid-row:1;justify-self:end;margin:0 14px 0 0}
  .admin-page-head-slot>.page-head>div:first-child{flex-basis:clamp(110px,35vw,230px);min-width:105px}
  .admin-page-head-slot .page-title{font-size:16px}
  .admin-page-head-slot .page-sub{font-size:10px}
  .admin-page-head-slot .actions{width:auto;flex:1;max-width:none}
  .admin-page-head-slot .actions .btn{flex:none;height:34px;padding-inline:10px}
}

/* RC1.254: schedule management has one owner (the global Taski view). */
.project-task-readonly-card .project-task-table-grid{align-items:center}
.project-task-row-actions{display:flex;justify-content:flex-end;align-items:center;gap:6px;white-space:nowrap}
.project-task-table-row:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}

/* Termin taska projektu jest widoczny, ale zmienia się go tylko w Taskach. */
#taskDrawer.project-task-scheduling-locked [data-task-schedule-warning]{display:none!important}
.task-schedule-locked-note{grid-column:1/-1;display:none;align-items:center;justify-content:space-between;gap:10px;margin-top:-6px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:var(--muted);font-size:11px;line-height:1.4}
#taskDrawer.project-task-scheduling-locked:not(.task-create-mode) .task-schedule-locked-note{display:flex}
.task-planning-target{outline:3px solid var(--chart-1,#2563eb)!important;outline-offset:2px;scroll-margin:20px}
@media(max-width:900px){.project-task-table-grid{min-width:875px}}

/* Grouped tasks: quick add beside expand control. */
.task-group-heading .task-group-title{margin-right:auto}
.task-group-add{flex:0 0 26px;width:26px;height:26px;border-radius:6px}
.task-group-add:hover{background:var(--muted)}

/* RC1.261: Ustawienia — 7 głównych zakładek, rzadziej używane panele w podzakładkach. */
.settings-toolbar{flex-direction:column;align-items:flex-start;row-gap:10px}
.settings-subtabs{flex-wrap:wrap;max-width:100%}
.settings-subtabs .tab{font-size:12px}
