:root{--bg: #F5F6FA;--surface: #FFFFFF;--border: #E4E6F0;--text: #1F2136;--text-secondary: #6B7089;--accent: #17C3B2;--accent-dark: #0FA294;--sidebar-bg: #241E46;--sidebar-text: #C9C4E8;--sidebar-active: #362C63;--danger: #E2445C;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-card: 0 1px 3px rgba(31, 33, 54, .06), 0 1px 2px rgba(31, 33, 54, .08);--shadow-modal: 0 20px 60px rgba(20, 16, 50, .35);--font-display: "Sora", sans-serif;--font-body: "Inter", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);margin:0}button,input,select,textarea{font-family:inherit;font-size:14px}button{cursor:pointer;border:none;background:none;color:inherit}a{color:var(--accent-dark);text-decoration:none}.muted{color:var(--text-secondary);font-size:14px}.page-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--text-secondary);font-family:var(--font-display)}.btn{padding:9px 16px;border-radius:var(--radius-md);font-weight:600;transition:transform .05s ease,opacity .15s ease;white-space:nowrap}.btn:active{transform:scale(.97)}.btn-accent{background:var(--accent);color:#05201d}.btn-accent:hover{background:var(--accent-dark)}.btn-outline{background:transparent;border:1.5px dashed var(--border);color:var(--text-secondary)}.btn-outline:hover{border-color:var(--accent);color:var(--accent-dark)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{color:var(--text)}.btn-small{padding:6px 12px;font-size:13px}.app-shell{display:flex;min-height:100vh}.sidebar{width:232px;flex-shrink:0;background:var(--sidebar-bg);color:var(--sidebar-text);display:flex;flex-direction:column;padding:20px 14px;gap:20px}.sidebar-brand{display:flex;align-items:center;justify-content:center;padding:10px 12px;background:#fff;border-radius:var(--radius-md)}.sidebar-brand-logo{max-width:100%;height:auto;display:block}.sidebar-nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--sidebar-text);font-size:14px;font-weight:500}.sidebar-link:hover{background:var(--sidebar-active)}.sidebar-link.active{background:var(--sidebar-active);color:#fff}.sidebar-footer{border-top:1px solid rgba(255,255,255,.08);padding-top:12px;display:flex;flex-direction:column;gap:10px}.sidebar-role-tag{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#8a82b8;background:var(--sidebar-active);border-radius:20px;padding:6px 10px;text-align:center}.sidebar-logout{font-size:13px;text-align:left;padding:4px 6px}.main-content{flex:1;padding:32px 40px;max-width:1280px;overflow-x:auto}.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:26px;gap:20px;flex-wrap:wrap}.topbar-subtitle{color:var(--text-secondary);margin-top:6px}.topbar-actions{display:flex;align-items:center;gap:12px}.topbar-profile-btn{border-radius:50%}.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:32px}.stat-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:18px;display:flex;align-items:center;gap:14px;border-left:4px solid var(--stat-color, var(--accent))}.stat-icon{font-size:26px}.stat-value{font-family:var(--font-display);font-size:24px;font-weight:700;margin:0}.stat-label{margin:2px 0 0;font-size:13px;color:var(--text-secondary)}.dashboard-activity{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:22px}.dashboard-activity h2{font-size:17px;margin-bottom:14px}.activity-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.activity-list li{display:flex;gap:10px;align-items:flex-start}.activity-list p{margin:0;font-size:14px}.activity-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:6px;flex-shrink:0}.activity-project{font-size:12px;color:var(--text-secondary)}.filters-bar{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}.filters-bar input,.filters-bar select{padding:9px 12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface)}.filters-bar input{flex:1;min-width:180px}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.project-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:20px;text-align:left;display:flex;flex-direction:column;gap:12px;transition:transform .1s ease}.project-card:hover{transform:translateY(-2px)}.project-card-top{display:flex;justify-content:space-between}.project-card h3{font-size:16px}.project-card-desc{margin:0;font-size:13px;color:var(--text-secondary);flex:1}.project-card-progress{display:flex;align-items:center;gap:8px}.project-card-progress span{font-size:12px;color:var(--text-secondary);width:32px}.project-card-footer{display:flex;align-items:center;justify-content:space-between}.project-card-date{font-size:12px;color:var(--text-secondary)}.empty-state{background:var(--surface);border-radius:var(--radius-lg);padding:40px;text-align:center;color:var(--text-secondary);display:flex;flex-direction:column;gap:14px;align-items:center}.pill{display:inline-block;padding:5px 10px;border-radius:var(--radius-sm);color:#fff;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.pill-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;color:#fff;font-weight:600;font-size:12px;padding:7px 10px;border-radius:var(--radius-sm);text-align:center;cursor:pointer}.pill-select:disabled{cursor:default;opacity:.85}.avatar-img,.avatar-fallback{border-radius:50%;object-fit:cover;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.avatar-fallback{color:#fff;font-weight:700;font-family:var(--font-display)}.avatar-upload{display:inline-block}.avatar-upload-preview{position:relative;cursor:pointer;border-radius:50%}.avatar-upload-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:#1f21368c;color:#fff;font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;text-align:center}.avatar-upload-preview:hover .avatar-upload-overlay{opacity:1}.members-stack{display:flex}.member-stack-item{margin-left:-8px}.member-stack-item:first-child{margin-left:0}.member-stack-item img,.member-stack-item .avatar-fallback{border:2px solid var(--bg)}.member-picker{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.member-chip{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:20px;border:1px solid var(--border);background:var(--surface);font-size:13px}.member-chip.selected{background:var(--accent);color:#05201d;border-color:var(--accent)}.project-meta-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:18px 20px;margin-bottom:16px}.project-meta-field{display:flex;flex-direction:column;gap:6px}.project-meta-field label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);font-weight:700}.project-meta-field select:not(.pill-select),.project-meta-field input{padding:7px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg)}.project-meta-progress{grid-column:span 1;justify-content:center}.project-team-bar{display:flex;align-items:center;gap:14px;margin-bottom:12px}.kanban-board{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:16px;margin-top:8px;align-items:start}.kanban-column{background:#eceef6;border-radius:var(--radius-lg);padding:12px;min-height:200px;transition:background .1s ease}.kanban-column.drag-over{background:#dde1f0}.kanban-column-header{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:13px;padding:6px 8px 12px;border-bottom:3px solid var(--col-color);margin-bottom:10px}.kanban-column-count{background:#00000014;border-radius:10px;padding:1px 8px;font-size:12px}.kanban-column-body{display:flex;flex-direction:column;gap:10px}.kanban-card{background:var(--surface);border-radius:var(--radius-md);padding:12px 14px;box-shadow:var(--shadow-card);cursor:grab;display:flex;flex-direction:column;gap:8px}.kanban-card.overdue{border-left:3px solid var(--danger)}.kanban-card-top{display:flex;justify-content:space-between;align-items:center}.kanban-card-date{font-size:11px;color:var(--text-secondary)}.kanban-card-title{margin:0;font-size:14px;font-weight:600;line-height:1.3}.kanban-card-footer{display:flex;justify-content:space-between;align-items:center}.kanban-card-meta{display:flex;gap:8px;font-size:12px;color:var(--text-secondary)}.kanban-add-btn{color:var(--text-secondary);font-size:13px;text-align:left;padding:8px}.kanban-add-btn:hover{color:var(--accent-dark)}.kanban-add-form input{width:100%;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14103273;display:flex;align-items:center;justify-content:center;z-index:100;padding:24px}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);padding:28px;width:100%;max-width:460px;position:relative;max-height:90vh;overflow-y:auto}.task-modal{max-width:660px}.modal-close{position:absolute;top:16px;right:16px;color:var(--text-secondary);font-size:16px}.modal-close:hover{color:var(--text)}.stacked-form{display:flex;flex-direction:column;gap:14px;margin-top:16px}.stacked-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--text-secondary)}.stacked-form input,.stacked-form textarea,.stacked-form select{border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;font-weight:400;color:var(--text)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-error{color:var(--danger);font-size:13px;margin:4px 0}.profile-modal-body{display:flex;align-items:center;gap:16px;margin-top:16px}.task-modal-project{margin:0 0 4px;font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.task-modal-title{margin-bottom:16px;padding-right:24px}.task-modal-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px;flex-wrap:wrap}.task-tab{padding:8px 14px;font-size:13px;font-weight:600;color:var(--text-secondary);border-bottom:2px solid transparent}.task-tab.active{color:var(--accent-dark);border-bottom-color:var(--accent)}.task-tab-panel{display:flex;flex-direction:column;gap:14px}.task-modal-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.task-modal-meta label,.task-tab-panel>label{display:block;font-size:11px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.task-modal-meta select,.task-modal-meta input{width:100%;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border)}.task-tab-panel textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;resize:vertical}.task-modal-section-header{display:flex;align-items:center;justify-content:space-between}.task-delete-btn{align-self:flex-start;font-size:13px;margin-top:4px}.checklist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.checklist li{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg);border-radius:var(--radius-sm);padding:8px 10px}.checklist li label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:400;text-transform:none;letter-spacing:0;color:var(--text);flex:1}.checklist-done{text-decoration:line-through;color:var(--text-secondary)}.checklist li button{color:var(--text-secondary);font-size:12px}.checklist li button:hover{color:var(--danger)}.task-files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}.task-file-item{position:relative;border-radius:var(--radius-sm);overflow:hidden;aspect-ratio:1;background:var(--bg)}.task-file-item img{width:100%;height:100%;object-fit:cover;display:block}.task-file-doc{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:100%;font-size:24px;text-align:center;padding:6px}.task-file-doc span{font-size:10px;color:var(--text-secondary);word-break:break-all}.task-file-item button{position:absolute;top:4px;right:4px;background:#0000008c;color:#fff;width:20px;height:20px;border-radius:50%;font-size:11px;line-height:1}.task-comments-list{display:flex;flex-direction:column;gap:12px;max-height:260px;overflow-y:auto}.task-comment{display:flex;gap:10px;align-items:flex-start}.task-comment strong{font-size:13px}.task-comment p{margin:2px 0 0;font-size:13px;color:var(--text)}.task-comment-form{display:flex;gap:8px}.task-comment-form input{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm)}.history-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;max-height:320px;overflow-y:auto}.history-list li{display:flex;gap:10px;align-items:flex-start}.history-list p{margin:0;font-size:13px}.history-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);margin-top:6px;flex-shrink:0}.history-time{font-size:11px;color:var(--text-secondary)}.progress-wrap{display:flex;align-items:center;gap:8px}.progress-track{flex:1;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .2s ease}.progress-label{font-size:12px;color:var(--text-secondary);width:34px}.calendar-nav{display:flex;align-items:center;gap:10px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.calendar-weekday{text-align:center;font-size:12px;font-weight:700;color:var(--text-secondary);padding:4px 0}.calendar-cell{background:var(--surface);border-radius:var(--radius-sm);min-height:100px;padding:6px;display:flex;flex-direction:column;gap:4px}.calendar-cell.empty{background:transparent}.calendar-cell.today{outline:2px solid var(--accent)}.calendar-day-number{font-size:12px;font-weight:700;color:var(--text-secondary)}.calendar-day-tasks{display:flex;flex-direction:column;gap:3px}.calendar-task-chip{background:color-mix(in srgb,var(--chip-color) 18%,white);border-left:3px solid var(--chip-color);font-size:11px;padding:3px 6px;border-radius:4px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-task-chip.overdue{border-left-color:var(--danger)}.calendar-more{font-size:10px;color:var(--text-secondary);padding-left:4px}.notif-wrap{position:relative}.notif-bell{font-size:18px;position:relative;padding:6px}.notif-badge{position:absolute;top:0;right:0;background:var(--danger);color:#fff;font-size:10px;border-radius:10px;padding:1px 5px;font-weight:700}.notif-popover{position:absolute;top:calc(100% + 8px);right:0;width:320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);z-index:30}.notif-popover-header{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border)}.link-quiet{font-size:12px;color:var(--accent-dark)}.notif-list{max-height:320px;overflow-y:auto}.notif-item{display:flex;gap:10px;padding:10px 14px;width:100%;text-align:left;border-bottom:1px solid var(--border)}.notif-item.unread{background:#f0fbfa}.notif-item:last-child{border-bottom:none}.notif-icon{font-size:16px}.notif-text{font-size:13px;display:flex;flex-direction:column;gap:2px}.notif-time{font-size:11px;color:var(--text-secondary)}.notif-empty{padding:20px;text-align:center;color:var(--text-secondary);font-size:13px}.report-list{display:flex;flex-direction:column;gap:10px}.report-row{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:14px 18px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}.report-row-main{display:flex;align-items:center;gap:10px;min-width:200px}.report-tags{display:flex;gap:10px;flex-wrap:wrap}.report-tag{font-size:12px;background:var(--bg);border-radius:12px;padding:4px 10px}.role-legend{background:var(--surface);border-radius:var(--radius-md);padding:14px 18px;margin-bottom:16px;font-size:13px;color:var(--text-secondary)}.link-danger{color:var(--danger);font-size:13px;font-weight:600}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--sidebar-bg) 0%,#14112B 100%);padding:20px}.auth-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);padding:40px;width:100%;max-width:400px}.auth-brand{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.auth-brand-logo{max-width:220px;height:auto;display:block}.auth-subtitle{color:var(--text-secondary);margin-top:6px;font-size:14px}.auth-switch{margin-top:18px;font-size:13px;color:var(--text-secondary);text-align:center}@media (max-width: 960px){.kanban-board{grid-template-columns:1fr}}@media (max-width: 860px){.app-shell{flex-direction:column}.sidebar{width:100%;flex-direction:row;align-items:center;overflow-x:auto}.sidebar-nav{flex-direction:row}.sidebar-footer{display:none}.main-content{padding:20px}}
