:root{--page-gutter:clamp(16px, 2.4vw, 36px);--workspace-max:1440px;color:#172033;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#eef3f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#eef3f8;min-width:320px;min-height:100vh;margin:0}html,body,#app{width:100%;min-height:100%}button,input,textarea,select,.secondary-action{font:inherit}button{color:#fff;cursor:pointer;background:#2563eb;border:0;border-radius:6px;min-height:44px;font-weight:700}.secondary-button{color:#1d4ed8;background:#fff;border:1px solid #cbd5e1}.secondary-button:hover:not(:disabled){background:#eff6ff;border-color:#93c5fd}button:hover:not(:disabled){background:#1d4ed8}button:disabled{cursor:not-allowed;opacity:.7}.secondary-action{color:#1d4ed8;background:#fff;border:1px solid #cbd5e1;border-radius:6px;justify-content:center;align-items:center;min-height:44px;padding:0 16px;font-weight:700;text-decoration:none;display:inline-flex}.secondary-action:hover{background:#eff6ff;border-color:#93c5fd}input,select{color:#172033;background:#fff;border:1px solid #cbd5e1;border-radius:6px;width:100%;min-height:44px;padding:10px 12px}textarea{resize:vertical;color:#172033;background:#fff;border:1px solid #cbd5e1;border-radius:6px;width:100%;min-height:112px;padding:10px 12px}input:focus-visible,textarea:focus-visible,select:focus-visible,button:focus-visible,.secondary-action:focus-visible{outline-offset:2px;outline:3px solid #93c5fd}input[aria-invalid=true]{border-color:#dc2626}.auth-shell{place-items:center;min-height:100vh;padding:32px 20px;display:grid}.auth-panel{background:#fff;border:1px solid #dbe3ef;border-radius:8px;grid-template-columns:minmax(0,.9fr) minmax(320px,1fr);align-items:start;gap:40px;width:min(100%,920px);padding:40px;display:grid;box-shadow:0 16px 40px #0f172a14}.auth-copy{padding-top:8px}.eyebrow,.status-label{color:#2563eb;letter-spacing:.04em;text-transform:uppercase;margin:0 0 12px;font-size:13px;font-weight:800}h1,h2{color:#0f172a;margin:0;line-height:1.1}h1{font-size:40px}h2{font-size:24px}.auth-copy p:not(.eyebrow),.success-state p:not(.status-label){color:#475569;margin:16px 0 0;line-height:1.6}.auth-form{gap:18px;display:grid}.auth-switch{color:#475569;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:14px;display:flex}.field{gap:8px;display:grid}label{color:#334155;font-size:14px;font-weight:700}.field-error,.form-error{color:#b91c1c;margin:0;font-size:14px;line-height:1.4}.form-error{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:10px 12px}.success-state{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:24px}.admin-shell{min-height:100vh;padding:24px var(--page-gutter) 36px;background:#eef3f8}.app-shell{min-height:100vh;padding:24px var(--page-gutter) 36px;background:#eef3f8;align-content:start;display:grid}.app-header,.app-content{width:min(100%, var(--workspace-max));margin:0 auto}.app-header{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:24px;padding:16px 0 20px;display:grid}.app-header h1{font-size:36px}.app-header p:not(.eyebrow){color:#475569;max-width:680px;margin:14px 0 0;line-height:1.6}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.app-content{background:#fbfdff;border:1px solid #dbe3ef;border-radius:8px;padding:18px 20px;box-shadow:0 10px 24px #0f172a0d}.workspace-nav{width:min(100%, var(--workspace-max));background:#fbfdff;border:1px solid #dbe3ef;border-radius:8px;flex-wrap:wrap;gap:8px;margin:0 auto 20px;padding:8px;display:flex;box-shadow:0 10px 24px #0f172a0d}.workspace-nav a{color:#334155;border-radius:6px;justify-content:center;align-items:center;min-height:40px;padding:0 14px;font-weight:800;text-decoration:none;display:inline-flex}.workspace-nav a:hover,.workspace-nav a[aria-current=page]{color:#fff;background:#2563eb}.workspace-page{width:min(100%, var(--workspace-max));gap:20px;margin:20px auto 0;display:grid}.project-panel{width:min(100%, var(--workspace-max));background:#fbfdff;border:1px solid #dbe3ef;border-radius:8px;grid-template-columns:minmax(0,.8fr) minmax(320px,1fr);gap:24px;margin:20px auto 0;padding:20px;display:grid;box-shadow:0 10px 24px #0f172a0d}.project-workspace-grid{width:min(100%, var(--workspace-max));grid-template-columns:minmax(340px,.75fr) minmax(0,1.25fr);gap:20px;margin:20px auto 0;display:grid}.project-workspace-grid .project-panel,.project-list-panel{width:100%;margin:0}.project-workspace-grid .project-panel{grid-template-columns:1fr}.project-list-panel,.project-detail-panel,.task-panel,.dashboard-panel,.kanban-panel,.gantt-panel,.notification-panel{background:#fbfdff;border:1px solid #dbe3ef;border-radius:8px;gap:16px;padding:20px;display:grid;box-shadow:0 10px 24px #0f172a0d}.notification-status{color:#334155;text-align:center;background:#f8fafc;border:1px solid #cbd5e1;border-radius:999px;align-self:start;min-width:96px;padding:6px 10px;font-size:13px;font-weight:800}.notification-status[data-status=connected]{color:#166534;background:#f0fdf4;border-color:#86efac}.notification-status[data-status=error]{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.notification-hint{color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:6px;margin:0;padding:10px 12px;font-size:14px;line-height:1.4}.notification-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.notification-list li{background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:6px;padding:14px;display:grid}.notification-list strong{overflow-wrap:anywhere;color:#0f172a}.notification-list span{color:#475569;font-size:14px;line-height:1.45}.notification-list time{color:#64748b;font-size:13px;font-weight:700}.gantt-scroll{gap:12px;min-width:0;padding-bottom:4px;display:grid;overflow-x:auto}.gantt-toolbar{grid-template-columns:minmax(180px,260px) auto;align-items:end;gap:8px;display:grid}.gantt-toolbar label{grid-column:1/-1}.gantt-scale{color:#475569;border-bottom:1px solid #e2e8f0;justify-content:space-between;gap:16px;min-width:760px;padding:0 0 8px 300px;font-size:12px;font-weight:800;display:flex}.gantt-row-list{gap:12px;min-width:760px;display:grid}.gantt-row{background:#fff;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:280px minmax(420px,1fr);align-items:center;gap:20px;min-height:112px;padding:14px;display:grid}.gantt-row-details{gap:10px;min-width:0;display:grid}.gantt-row-details h3{overflow-wrap:anywhere;color:#0f172a;margin:0;font-size:16px}.gantt-row-details dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin:0;display:grid}.gantt-row-details dt{color:#64748b;text-transform:uppercase;font-size:11px;font-weight:800}.gantt-row-details dd{overflow-wrap:anywhere;color:#172033;margin:3px 0 0;font-size:13px;font-weight:700}.gantt-track{background:repeating-linear-gradient(90deg,#f8fafc 0 72px,#eef2f7 73px);border:1px solid #e2e8f0;border-radius:6px;min-height:54px;position:relative}.gantt-bar{left:var(--gantt-left);width:max(var(--gantt-width), 18px);color:#172033;white-space:nowrap;background:#bfdbfe;border:1px solid #1d4ed8;border-radius:6px;justify-content:center;align-items:center;min-height:28px;font-size:12px;font-weight:800;display:flex;position:absolute;top:13px}.gantt-bar[data-bar-type=marker]{border-radius:999px;width:18px;min-width:18px;padding:0}.gantt-bar[data-bar-type=marker] span{position:absolute;left:24px}.gantt-bar.status-done{background:#bbf7d0;border-color:#15803d}.gantt-bar.status-in-progress{background:#fde68a;border-color:#b45309}.gantt-bar.priority-high{box-shadow:inset 0 -4px #dc2626}.gantt-bar.priority-medium{box-shadow:inset 0 -4px #2563eb}.gantt-bar.priority-low{box-shadow:inset 0 -4px #16a34a}.gantt-undated{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;gap:10px;padding:14px;display:grid}.gantt-undated h3{color:#0f172a;margin:0;font-size:18px}.gantt-undated ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.gantt-undated li{gap:4px;display:grid}.gantt-undated strong{overflow-wrap:anywhere;color:#0f172a}.gantt-undated span{color:#475569;font-size:13px;font-weight:700}.kanban-board{grid-template-columns:repeat(3,minmax(240px,1fr));gap:14px;padding-bottom:4px;display:grid;overflow-x:auto}.kanban-column{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;grid-template-rows:auto 1fr;align-content:start;gap:12px;min-width:240px;min-height:260px;padding:14px;display:grid}.kanban-column:has(.kanban-task-card:focus-within){border-color:#93c5fd}.kanban-column-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.kanban-column-header h3{color:#0f172a;margin:0;font-size:18px}.kanban-column-header span{color:#334155;text-align:center;background:#e2e8f0;border-radius:999px;min-width:32px;padding:4px 8px;font-size:13px;font-weight:800}.kanban-card-list{align-content:start;gap:10px;display:grid}.kanban-task-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:12px;padding:14px;display:grid}.kanban-task-card[draggable=true]{cursor:grab}.kanban-task-card[draggable=true]:active{cursor:grabbing}.kanban-task-card.is-updating{opacity:.72}.kanban-task-card h3{overflow-wrap:anywhere;color:#0f172a;margin:0;font-size:16px;line-height:1.25}.kanban-task-card p{overflow-wrap:anywhere;color:#64748b;margin:6px 0 0;font-size:13px;font-weight:700}.kanban-task-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.kanban-task-summary div{min-width:0}.kanban-task-summary dt{color:#64748b;text-transform:uppercase;font-size:11px;font-weight:800}.kanban-task-summary dd{overflow-wrap:anywhere;color:#172033;margin:3px 0 0;font-size:13px;font-weight:700}.kanban-status-control{gap:6px;display:grid}.kanban-status-control label{color:#334155;font-size:13px;font-weight:800}.kanban-status-saving{color:#475569;font-size:13px;font-weight:700}.kanban-empty{color:#475569;text-align:center;background:#fff;border:1px dashed #cbd5e1;border-radius:8px;place-items:center;min-height:164px;margin:0;padding:18px;display:grid}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.dashboard-section{align-content:start;gap:12px;min-width:0;display:grid}.dashboard-section h3{color:#0f172a;margin:0;font-size:18px}.dashboard-task-list,.dashboard-progress-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.dashboard-task-list li,.dashboard-progress-list li{background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:10px;padding:14px;display:grid}.dashboard-task-list strong,.dashboard-progress-list strong{overflow-wrap:anywhere;color:#0f172a;display:block}.dashboard-task-list span,.dashboard-progress-list span{color:#64748b;margin-top:4px;font-size:13px;font-weight:700;display:block}.dashboard-task-list dl,.dashboard-progress-list dl{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0;display:grid}.dashboard-progress-list dl{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-task-list dt,.dashboard-progress-list dt{color:#64748b;text-transform:uppercase;font-size:11px;font-weight:800}.dashboard-task-list dd,.dashboard-progress-list dd{overflow-wrap:anywhere;color:#172033;margin:3px 0 0;font-size:13px;font-weight:700}.dashboard-empty{color:#475569;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;margin:0;padding:18px}.dashboard-progress{grid-column:1/-1}.dashboard-progress-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.task-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.filter-control{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.task-list{gap:12px;display:grid}.task-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:14px;padding:16px;display:grid}.task-card h3{color:#0f172a;margin:0;font-size:18px;line-height:1.25}.task-card p{color:#475569;margin:8px 0 0;line-height:1.5}.task-card-summary{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:0;display:grid}.task-card-summary div{min-width:0}.task-card-summary dt{color:#64748b;text-transform:uppercase;font-size:12px;font-weight:800}.task-card-summary dd{overflow-wrap:anywhere;color:#172033;margin:4px 0 0;font-size:14px;font-weight:700}.task-card-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.project-workspace-detail{grid-column:1/-1}.form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.created-task,.created-comment{border-top:1px solid #e2e8f0;padding-top:16px}.comment-list{gap:12px;display:grid}.comment-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:10px;padding:16px;display:grid}.comment-card-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 14px;display:flex}.comment-card-header strong{overflow-wrap:anywhere;color:#0f172a;min-width:0}.comment-card-header time{color:#64748b;font-size:13px;font-weight:700}.comment-card p{color:#334155;white-space:pre-wrap;margin:0;line-height:1.55}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:14px;display:flex}.project-list{gap:12px;display:grid}.project-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:14px;padding:16px;display:grid}.project-detail{gap:18px;display:grid}.project-detail h3{color:#0f172a;margin:0;font-size:22px;line-height:1.25}.project-detail p{color:#475569;margin:8px 0 0;line-height:1.5}.detail-summary,.task-assignment-summary,.task-status-summary,.task-priority-dates-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.detail-actions{flex-wrap:wrap;gap:10px;display:flex}.task-placeholder{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;gap:8px;padding:16px;display:grid}.task-placeholder h3{color:#0f172a;margin:0;font-size:18px}.task-placeholder p{color:#475569;margin:0;line-height:1.5}.project-card h3{color:#0f172a;margin:0;font-size:18px;line-height:1.25}.project-card p{color:#475569;margin:8px 0 0;line-height:1.5}.project-card dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;display:grid}.project-card dt{color:#64748b;text-transform:uppercase;font-size:12px;font-weight:800}.project-card dd{overflow-wrap:anywhere;color:#172033;margin:4px 0 0;font-size:14px;font-weight:700}.project-count{color:#475569;margin:0;font-size:14px;font-weight:700}.project-panel h2{font-size:24px}.project-panel p:not(.eyebrow,.form-error,.success-message){color:#475569;margin:12px 0 0;line-height:1.6}.project-form{gap:16px;display:grid}.created-project{border-top:1px solid #e2e8f0;grid-column:1/-1;padding-top:16px}.project-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0;display:grid}.project-summary div{gap:6px;min-width:0;display:grid}.project-summary dt{color:#64748b;text-transform:uppercase;font-size:12px;font-weight:800}.project-summary dd{overflow-wrap:anywhere;color:#172033;margin:0;font-weight:700}.session-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;display:grid}.session-summary div{gap:6px;min-width:0;display:grid}.session-summary dt{color:#64748b;text-transform:uppercase;font-size:12px;font-weight:800}.session-summary dd{overflow-wrap:anywhere;color:#172033;margin:0;font-weight:700}.admin-header,.admin-content{width:min(100%, var(--workspace-max));margin:0 auto}.admin-header{grid-template-columns:minmax(0,1fr) minmax(320px,420px);align-items:end;gap:24px;padding:32px 0 24px;display:grid}.admin-header h1{font-size:36px}.admin-header p:not(.eyebrow){color:#475569;max-width:680px;margin:14px 0 0;line-height:1.6}.token-panel,.admin-content,.pending-user-card{background:#fbfdff;border:1px solid #dbe3ef;border-radius:8px;box-shadow:0 10px 24px #0f172a0d}.token-panel{gap:10px;padding:18px;display:grid}.token-actions{grid-template-columns:minmax(0,1fr) auto;gap:10px;display:grid}.admin-content{padding:20px}.success-message{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;margin:0 0 16px;padding:10px 12px;font-size:14px;line-height:1.4}.empty-state{color:#475569;text-align:center;border:1px dashed #cbd5e1;border-radius:8px;padding:28px}.pending-user-list{gap:14px;margin:0;padding:0;list-style:none;display:grid}.pending-user-card{box-shadow:none;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:18px;display:grid}.pending-user-card h2{font-size:20px}.pending-user-card p{color:#475569;margin:8px 0 0}.pending-user-card dl{flex-wrap:wrap;gap:16px;margin:14px 0 0;display:flex}.pending-user-card dl div{gap:4px;display:grid}.pending-user-card dt{color:#64748b;text-transform:uppercase;font-size:12px;font-weight:800}.pending-user-card dd{color:#172033;margin:0;font-size:14px;font-weight:700}.review-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.danger-button{background:#dc2626}.danger-button:hover:not(:disabled){background:#b91c1c}@media (width<=760px){.auth-shell{place-items:stretch stretch;padding:20px}.auth-panel{grid-template-columns:1fr;gap:28px;padding:24px}.admin-header,.app-header,.pending-user-card{grid-template-columns:1fr}.header-actions{justify-content:stretch}.header-actions button,.header-actions .notification-status{flex:1}.session-summary,.project-panel,.project-workspace-grid,.project-summary,.dashboard-grid,.dashboard-task-list dl,.kanban-board,.kanban-task-summary,.task-assignment-summary,.task-card-summary,.task-filter-grid,.task-status-summary,.task-priority-dates-summary,.detail-summary,.form-grid,.project-card dl,.token-actions,.gantt-toolbar{grid-template-columns:1fr}.review-actions{justify-content:stretch}.review-actions button{flex:1}.task-card-actions{justify-content:stretch}.task-card-actions button{flex:1}h1{font-size:32px}}
