*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont;background:#f5f7fa}.task-form{background:#fff;border-radius:12px;padding:16px;max-width:600px;margin-bottom:32px}.task-form input,.task-form textarea,.task-form button{width:100%;margin-bottom:12px}.task-form input,.task-form textarea{padding:10px;border-radius:8px;border:1px solid #d1d5db}.task-form button{background:#2563eb;color:#fff;border:none;padding:10px;border-radius:8px;cursor:pointer}.role-select{padding:4px 8px;border-radius:6px;border:1px solid #e5e7eb;background:#fff}.kanban-page{background:#fff;border-radius:12px;padding:24px}.page-title{margin-bottom:24px}.kanban-board{display:flex;gap:24px;align-items:flex-start;overflow-x:auto}.kanban-column{min-width:280px;flex:1}.kanban-column:not(:first-child){border-left:1px solid #e5e7eb;padding-left:24px}.kanban-column-title{font-size:13px;font-weight:600;text-transform:uppercase;color:#6b7280;margin-bottom:16px}.kanban-card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:12px;margin-bottom:12px;cursor:grab}.kanban-card .meta{display:flex;gap:4px;font-size:12px;color:#4b5563;margin-top:4px}.kanban-card .meta .label{font-weight:600}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 12px #0000000f}.status-badge{display:inline-block;margin-top:8px;font-size:11px;padding:2px 8px;border-radius:999px;background:#eef2ff;color:#3730a3}.deadline-badge{display:inline-block;margin-top:8px;padding:4px 8px;border-radius:8px;font-size:12px;font-weight:600}.deadline-badge.ok{background:#ecfdf3;color:#047857}.deadline-badge.changed{background:#fff7ed;color:#c05621}.deadline-badge.overdue{background:#fef2f2;color:#b91c1c}@media(max-width:768px){.kanban-board{flex-direction:column}.kanban-column{border-left:none!important;padding-left:0!important}}.tasks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.task-card{background:#fff;padding:16px;border-radius:12px;border:1px solid #f1f5f9;transition:transform .1s ease,box-shadow .1s ease}.task-card.clickable{cursor:pointer}.task-card.clickable:hover{transform:translateY(-2px);box-shadow:0 10px 20px #0000000f}.task-meta{display:flex;gap:6px;font-size:14px;margin:4px 0}.task-meta .label{color:#6b7280}.status{display:inline-block;margin-top:8px;padding:4px 10px;border-radius:20px;font-size:12px}.status-created{background:#3b82f6;color:#fff}.status-in_progress{background:#0ea5e9;color:#fff}.status-need_info{background:#f59e0b;color:#fff}.status-info_provided{background:#8b5cf6;color:#fff}.status-done{background:#22c55e;color:#fff}.btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;font-size:14px;font-weight:500;border-radius:8px;border:1px solid transparent;cursor:pointer;background-color:#2563eb;color:#fff;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.btn:hover{background-color:#1d4ed8}.btn-secondary{background-color:#f3f4f6;color:#111827;border-color:#e5e7eb}.btn-secondary:hover{background-color:#e5e7eb}.btn-danger{background-color:#fee2e2;color:#dc2626;border-color:#fecaca}.btn-danger:hover{background-color:#fecaca}:root{--color-primary: #7C3AED;--color-primary-hover: #6D28D9;--color-primary-light: #C4B5FD;--color-primary-bg: #F3E8FF;--color-bg: #F6F7FB;--color-bg-card: #FFFFFF;--color-text: #1F1F1F;--color-text-secondary: #6B7280;--color-text-muted: #9CA3AF;--color-border: #E5E7EB;--color-border-strong: #D1D5DB;--color-success: #22C55E;--color-warning: #F59E0B;--color-danger: #EF4444;--color-info: #3B82F6;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.08);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--font-main: "Inter", sans-serif;--btn-height: 42px;--btn-radius: var(--radius-md);--btn-padding: 0 18px;--input-height: 44px;--input-radius: var(--radius-md);--input-padding: 0 16px}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-main)}a{text-decoration:none;color:inherit}.card{background:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-lg)}.content .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--btn-height, 42px);padding:var(--btn-padding, 0 18px);font-size:14px;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:background-color .15s ease}.content .btn-primary{background:var(--color-primary, #2563eb);color:#fff}.content .btn-primary:hover{background:var(--color-primary-hover, #1d4ed8)}.content .btn-secondary{background:#f3f4f6;color:#111827}.content .btn-danger{background:#fee2e2;color:#dc2626}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh;background:var(--color-bg)}.login-card{width:360px;background:var(--color-bg-card);padding:32px;border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}h2{margin-bottom:8px}.subtitle{color:var(--color-text-secondary);margin-bottom:16px}.error-box{background:var(--color-danger);color:#fff;padding:8px;border-radius:var(--radius-md);margin-bottom:12px}.sidebar{background:#fff;border-right:1px solid #e5e7eb}.sidebar-nav{display:flex;flex-direction:column;gap:4px}.sidebar-nav a{display:block;padding:10px 12px;border-radius:8px;color:#111827;text-decoration:none;font-size:14px}.sidebar-nav a:hover{background:#f1f5f9}.sidebar-nav a.active{background:#e0e7ff;color:#1d4ed8;font-weight:500}.sidebar-footer{margin-top:16px}.sidebar-logout{width:100%;border:1px solid #fecaca;background:#fee2e2;color:#b91c1c;padding:10px 12px;border-radius:10px;cursor:pointer;font-weight:600}.sidebar-logout:hover{background:#fecaca}.layout-root{min-height:100vh;background:#f5f7fa}.topbar{position:fixed;top:0;left:0;right:0;height:56px;padding:0 16px;display:flex;align-items:center;gap:12px;background:#fff;border-bottom:1px solid #e5e7eb;z-index:1000}@media(max-width:900px){.topbar{display:none}}.topbar-title{flex:1;text-align:center;font-weight:600;font-size:16px}.burger,.logout{appearance:none;background:transparent;border:none;cursor:pointer;font-size:18px;padding:6px}.logout{font-size:14px;padding:6px 12px;border-radius:8px;border:1px solid #fecaca;background:#fee2e2;color:#dc2626}.logout:hover{background:#fecaca}.burger{display:none}.burger:hover,.logout:hover{opacity:.8}.sidebar{position:fixed;top:56px;left:0;width:240px;height:calc(100vh - 56px);background:#fff;border-right:1px solid #e5e7eb;padding:16px 12px;overflow-y:auto;z-index:900;transform:translate(0);transition:transform .25s ease}.content{position:relative;margin-top:56px;margin-left:240px;padding:32px;min-height:calc(100vh - 56px)}.sidebar-overlay{display:none}@media(max-width:900px){.burger{display:block}.sidebar{transform:translate(-100%);top:0;left:0;height:100vh}.sidebar.open{transform:translate(0)}.content{margin-left:0;margin-top:0;padding:16px 16px 96px}.sidebar-overlay{display:block;position:fixed;inset:0;background:#0006;z-index:800}}.mobile-nav{display:none}@media(max-width:900px){.mobile-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid #e5e7eb;padding:8px 10px;gap:6px;z-index:1100}.mobile-nav a,.mobile-nav button{appearance:none;border:none;background:none;text-decoration:none;color:#111827;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:13px;padding:8px;border-radius:10px}.mobile-nav a.active,.mobile-nav button:focus-visible{background:#e0e7ff;color:#1d4ed8}.mobile-nav .icon{width:22px;height:22px}.mobile-nav .label{font-size:12px}}.content .comment{display:flex;align-items:flex-end;gap:10px;margin-bottom:12px}.content .comment.comment-own{justify-content:flex-end}.content .comment.comment-foreign{justify-content:flex-start}.comment-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#dbeafe,#e5e7eb);display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:#0f172a;border:1px solid #e5e7eb;flex-shrink:0}.comment-bubble{position:relative;max-width:78%;background:#f8fafc;padding:10px 48px 10px 12px;border-radius:16px;box-shadow:0 4px 12px #0000000f;display:flex;flex-direction:column;gap:4px}.comment-own .comment-bubble{background:#dbeafe;border-bottom-right-radius:8px;margin-left:40px}.comment-foreign .comment-bubble{border-bottom-left-radius:8px;margin-right:40px}.comment-header{display:flex;align-items:center;gap:8px}.comment-user{font-weight:700;font-size:13px;color:#0f172a}.comment-message{color:#111827;white-space:pre-wrap;word-break:break-word;line-height:1.45;font-size:14px}.comment-date{position:absolute;right:12px;bottom:8px;font-size:10px;color:#6b7280;letter-spacing:.2px}.task-details{max-width:1100px;display:flex;flex-direction:column;gap:16px}.task-header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.task-subtitle{text-transform:uppercase;font-size:12px;letter-spacing:.08em;color:#64748b}.task-badges{display:flex;flex-direction:column;gap:8px;align-items:flex-end}.deadline-badge{display:flex;gap:8px;align-items:center}.link-btn{appearance:none;border:none;background:none;color:#2563eb;cursor:pointer;font-weight:600}.deadline-editor{display:flex;flex-direction:column;gap:10px;align-items:flex-end}.deadline-editor input{padding:6px 10px;border-radius:8px;border:1px solid #e2e8f0}.deadline-actions{display:flex;gap:8px}.deadline-editor .btn{padding:8px 12px}.btn.ghost{background:#f8fafc;color:#111827}.status{padding:8px 14px;color:#fff;border-radius:10px;font-weight:600}.status-CREATED{background:#3b82f6}.status-IN_PROGRESS{background:#0ea5e9}.status-NEED_INFO{background:#f59e0b}.status-INFO_PROVIDED{background:#8b5cf6}.status-DONE{background:#22c55e}.badge{background:#f8fafc;border:1px solid #e2e8f0;padding:6px 10px;border-radius:8px}.task-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px}.assignee-block{border:1px solid #e2e8f0;padding:12px;border-radius:12px;display:flex;justify-content:space-between;align-items:center;gap:12px}.assignee-name{font-weight:600;font-size:16px}.assignee-form{display:flex;align-items:center;gap:8px}.history-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.history-title{font-weight:600}.history-meta{color:#6b7280;font-size:13px}.muted{color:#94a3b8}.comments-list{display:flex;flex-direction:column;gap:8px}.comment-input textarea{width:100%;height:90px;padding:12px;border-radius:10px;border:1px solid #e2e8f0}.comment-input button{margin-top:8px;padding:10px 16px;background:#2563eb;color:#fff;border:none;border-radius:10px;cursor:pointer}@media(max-width:768px){.task-header{flex-direction:column}}.kpi-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:20px}.kpi-card{background:var(--color-bg-card);padding:20px;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.gantt-page{background:#fff;border-radius:16px;padding:24px}.gantt-top{display:flex;justify-content:space-between;align-items:center}.gantt-controls button{padding:6px 14px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;cursor:pointer;margin-left:8px}.gantt-controls .active{background:#2563eb;color:#fff}.gantt{display:flex;margin-top:24px}.gantt-left{min-width:460px}.row{display:grid;grid-template-columns:2fr 2fr 1fr;padding:12px;border-bottom:1px solid #edf0f2}.row.header{font-weight:600}.status{padding:4px 10px;border-radius:10px;font-size:12px;width:fit-content}.status.created{background:#e0e7ff;color:#3730a3}.status.in_progress{background:#dbeafe;color:#1d4ed8}.status.need_info{background:#fef3c7;color:#92400e}.status.info_provided{background:#dcfce7;color:#166534}.status.done{background:#e5e7eb;color:#374151}.gantt-right{flex:1;overflow-x:auto;position:relative}.timeline-viewport{position:relative}.timeline-header{display:flex;position:sticky;top:0;background:#fff;z-index:5;border-bottom:1px solid #e5e7eb}.time-cell{flex-shrink:0;text-align:center;font-size:12px;padding:8px 0;white-space:nowrap;border-left:1px solid #f1f5f9}.timeline-body{position:relative}.timeline-row{height:48px;position:relative}.task-bar{position:absolute;top:11px;height:26px;border-radius:999px;cursor:pointer}.task-bar.created{background:#3b82f6}.task-bar.in_progress{background:#2563eb}.task-bar.need_info{background:#f59e0b}.task-bar.info_provided{background:#16a34a}.task-bar.done{background:#9ca3af}.today-line{position:absolute;top:0;bottom:0;width:2px;background:red;z-index:4}.tooltip{position:absolute;top:-30px;background:#111827;color:#fff;font-size:12px;padding:6px 10px;border-radius:6px;z-index:10;white-space:nowrap}.user-create{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.user-create input,.user-create select{padding:6px 8px;border:1px solid #e5e7eb;border-radius:6px}.user-create button{padding:6px 12px}.users-table{width:100%;border-collapse:collapse}.users-table th,.users-table td{padding:8px;border-bottom:1px solid #e5e7eb}.users-table th{text-align:left;font-weight:600;background:#f9fafb}.users-table select{padding:4px 6px}.users-table .actions{text-align:right}.users-table button{background:transparent;border:none;cursor:pointer;font-size:16px}.users-table button.danger{color:#dc2626}.user-create input,.user-create select{padding:6px 10px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;font-size:14px}.user-create input:focus,.user-create select:focus{outline:none;border-color:#2563eb}
