:root{--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:32px;--sp-8:40px;--radius-sm:5px;--radius-md:7px;--radius-lg:10px;--fs-xs:12px;--fs-sm:13px;--fs-base:14px;--fs-md:15px;--fs-lg:18px;--fs-xl:22px;--fs-2xl:28px;--bg:#f6f6f8;--surface:#fff;--surface-hover:#f1f1f4;--border:#e3e3e8;--border-strong:#d3d3da;--text-primary:#16161d;--text-secondary:#5c5c6b;--text-tertiary:#8b8b98;--accent:#5b4ee5;--accent-hover:#4b3fd1;--accent-soft:#edebfd;--accent-contrast:#fff;--success:#1a8a56;--success-soft:#e4f6ed;--warning:#b26a00;--warning-soft:#fdf1dc;--danger:#c62d3a;--danger-soft:#fbe9ea;--info:#1c66c9;--info-soft:#e8f1fd;--shadow-sm:0 1px 2px #0f0f140f;--shadow-md:0 4px 16px #0f0f1414;--shadow-lg:0 12px 32px #0f0f1424;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, sans-serif;font:var(--fs-base)/1.5 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text-primary);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#101014;--surface:#17171d;--surface-hover:#1f1f27;--border:#2a2a33;--border-strong:#38383f;--text-primary:#eeeef2;--text-secondary:#a4a4b0;--text-tertiary:#71717d;--accent:#8b7ef0;--accent-hover:#a396f5;--accent-soft:#8b7ef029;--accent-contrast:#101014;--success:#3ec584;--success-soft:#3ec58424;--warning:#e6a23c;--warning-soft:#e6a23c24;--danger:#f0616c;--danger-soft:#f0616c24;--info:#5b9df0;--info-soft:#5b9df024;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 16px #00000059;--shadow-lg:0 16px 40px #00000080}}*{box-sizing:border-box}body{margin:0}::selection{background:var(--accent-soft)}a{color:inherit}button,input,select,textarea{font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,h4{font-family:var(--sans);color:var(--text-primary);margin:0}h1{font-size:var(--fs-xl);letter-spacing:-.01em;font-weight:650}h2{font-size:var(--fs-md);font-weight:650}h3{font-size:var(--fs-base);font-weight:600}p{margin:0}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary);font-size:var(--fs-xs)}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);width:232px;padding:var(--sp-4) var(--sp-3);flex-direction:column;flex-shrink:0;height:100vh;display:flex;position:sticky;top:0}.sidebar.collapsed{width:68px}.sidebar-brand{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2) var(--sp-5);color:var(--text-primary);text-decoration:none;display:flex}.sidebar-brand-mark{border-radius:var(--radius-sm);background:var(--accent);width:26px;height:26px;color:var(--accent-contrast);font-weight:700;font-size:var(--fs-sm);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-brand-name{font-weight:650;font-size:var(--fs-md);white-space:nowrap;overflow:hidden}.sidebar.collapsed .sidebar-brand-name,.sidebar.collapsed .nav-label,.sidebar.collapsed .sidebar-section-title,.sidebar.collapsed .sidebar-user-meta{display:none}.sidebar-section{margin-bottom:var(--sp-5)}.sidebar-section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);padding:0 var(--sp-2);margin-bottom:var(--sp-1);font-size:11px;font-weight:650}.nav-item{align-items:center;gap:var(--sp-2);padding:7px var(--sp-2);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--fs-base);white-space:nowrap;font-weight:500;text-decoration:none;display:flex;overflow:hidden}.nav-item:hover{background:var(--surface-hover);color:var(--text-primary)}.nav-item.active{background:var(--accent-soft);color:var(--accent)}.nav-icon{flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.sidebar-footer{border-top:1px solid var(--border);padding-top:var(--sp-3);align-items:center;gap:var(--sp-2);margin-top:auto;display:flex}.sidebar-user-meta{overflow:hidden}.sidebar-user-name{font-size:var(--fs-sm);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.sidebar-collapse-btn{color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;margin-left:auto;padding:4px}.sidebar-collapse-btn:hover{background:var(--surface-hover)}.mobile-topbar{padding:var(--sp-3) var(--sp-4);background:var(--surface);border-bottom:1px solid var(--border);z-index:40;justify-content:space-between;align-items:center;display:none;position:sticky;top:0}.mobile-menu-btn{border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;color:var(--text-primary);background:0 0;padding:6px 10px}.app-main{flex-direction:column;flex:1;min-width:0;display:flex}.content{padding:var(--sp-6) var(--sp-7);flex:1;width:100%;max-width:1320px;margin:0 auto}@media (width<=900px){.sidebar{display:none}.sidebar.mobile-open{z-index:50;width:240px;box-shadow:var(--shadow-lg);display:flex;position:fixed;inset:0 auto 0 0}.sidebar-scrim{z-index:45;background:#00000059;position:fixed;inset:0}.mobile-topbar{display:flex}.content{padding:var(--sp-4)}}.page-header{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap;display:flex}.page-header-text h1{margin-bottom:2px}.page-header-actions{align-items:center;gap:var(--sp-2);flex-shrink:0;display:flex}.breadcrumb{font-size:var(--fs-sm);color:var(--text-tertiary);margin-bottom:var(--sp-2);align-items:center;gap:6px;display:flex}.breadcrumb a{color:var(--text-tertiary);text-decoration:none}.breadcrumb a:hover{color:var(--text-primary)}.page-loading{padding:var(--sp-6) 0}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text-primary);border-radius:var(--radius-md);font-size:var(--fs-base);cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:7px 13px;font-weight:550;text-decoration:none;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--surface-hover)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--accent-soft);color:var(--accent);border-color:#0000}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-hover)}.btn-danger{color:var(--danger)}.btn-small{font-size:var(--fs-sm);padding:4px 9px}.btn-icon{padding:6px}.field{font-size:var(--fs-sm);color:var(--text-secondary);flex-direction:column;gap:5px;display:flex}input,select,textarea{border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--fs-base);background:var(--surface);color:var(--text-primary);padding:7px 10px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.inline-form{gap:var(--sp-2);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.inline-form input,.inline-form select{flex:1;min-width:180px}.search-box{min-width:220px;position:relative}.search-box input{width:100%;padding-left:30px}.search-box svg{color:var(--text-tertiary);position:absolute;top:50%;left:9px;transform:translateY(-50%)}.auth-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:360px;padding:var(--sp-7);gap:var(--sp-3);box-shadow:var(--shadow-md);flex-direction:column;display:flex}.auth-brand{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.auth-card h1{font-size:var(--fs-lg)}.auth-subtitle{color:var(--text-secondary);margin-bottom:var(--sp-2);font-size:var(--fs-sm)}.auth-switch{font-size:var(--fs-sm);text-align:center;margin-top:var(--sp-1);color:var(--text-secondary)}.auth-switch a{color:var(--accent);font-weight:600;text-decoration:none}.error-banner{background:var(--danger-soft);color:var(--danger);border-radius:var(--radius-md);margin-bottom:var(--sp-3);font-size:var(--fs-sm);padding:9px 12px}.card-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(230px,1fr));display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);color:inherit;text-decoration:none;transition:border-color .12s,box-shadow .12s;display:block}.card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.card-subtext{color:var(--text-tertiary);font-size:var(--fs-xs);margin-top:2px;display:block}.section{margin-bottom:var(--sp-7)}.section-header{margin-bottom:var(--sp-3);justify-content:space-between;align-items:center;display:flex}.section-header h2{font-size:var(--fs-md)}.badge{background:var(--surface-hover);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:650;display:inline-flex}.badge-accent{background:var(--accent-soft);color:var(--accent)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.avatar{background:var(--accent);color:var(--accent-contrast);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:inline-flex}.avatar-sm{width:20px;height:20px}.avatar-md{width:28px;height:28px;font-size:11px}.avatar-lg{width:40px;height:40px;font-size:15px}.avatar-stack{display:flex}.avatar-stack .avatar{border:2px solid var(--surface);margin-left:-6px}.avatar-stack .avatar:first-child{margin-left:0}.kpi-row{gap:var(--sp-3);margin-bottom:var(--sp-7);grid-template-columns:repeat(4,1fr);display:grid}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);gap:var(--sp-1);flex-direction:column;display:flex}.kpi-top{justify-content:space-between;align-items:center;display:flex}.kpi-icon{border-radius:var(--radius-md);background:var(--accent-soft);width:28px;height:28px;color:var(--accent);justify-content:center;align-items:center;display:flex}.kpi-value{font-size:var(--fs-2xl);letter-spacing:-.02em;font-weight:700}.kpi-label{font-size:var(--fs-sm);color:var(--text-secondary)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.table-scroll{overflow-x:auto}table.data-table{border-collapse:collapse;width:100%;font-size:var(--fs-base);min-width:640px}.data-table thead th{text-align:left;padding:10px var(--sp-4);text-transform:uppercase;letter-spacing:.03em;color:var(--text-tertiary);border-bottom:1px solid var(--border);background:var(--surface);font-size:11px;font-weight:650;position:sticky;top:0}.data-table tbody td{padding:11px var(--sp-4);border-bottom:1px solid var(--border);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--surface-hover)}.data-table .row-link{color:inherit;text-decoration:none;display:block}.cell-primary{color:var(--text-primary);font-weight:600}.cell-muted{color:var(--text-tertiary);font-size:var(--fs-sm)}.progress-bar{background:var(--surface-hover);vertical-align:middle;width:80px;height:6px;margin-right:var(--sp-2);border-radius:999px;display:inline-block;overflow:hidden}.progress-bar-fill{background:var(--accent);border-radius:999px;height:100%}.toolbar{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.empty-state{text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--text-secondary);border:1px dashed var(--border);border-radius:var(--radius-lg);background:var(--surface)}.empty-state-icon{background:var(--surface-hover);width:40px;height:40px;color:var(--text-tertiary);margin:0 auto var(--sp-3);border-radius:50%;justify-content:center;align-items:center;display:flex}.empty-state h3{margin-bottom:4px}.empty-state p{font-size:var(--fs-sm);margin-bottom:var(--sp-3)}.skeleton{background:linear-gradient(90deg, var(--surface-hover) 25%, var(--border) 37%, var(--surface-hover) 63%);border-radius:var(--radius-md);background-size:400% 100%;animation:1.4s infinite skeleton-loading}@keyframes skeleton-loading{0%{background-position:100%}to{background-position:0}}.skeleton-kpi-row{gap:var(--sp-3);margin-bottom:var(--sp-7);grid-template-columns:repeat(4,1fr);display:grid}.skeleton-kpi{border-radius:var(--radius-lg);height:84px}.skeleton-row{border-radius:var(--radius-md);height:44px;margin-bottom:var(--sp-2)}.skeleton-line{height:14px}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.modal-overlay{z-index:100;padding:var(--sp-4);background:#0a0a0e73;justify-content:center;align-items:center;animation:.12s fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border-radius:var(--radius-lg);width:400px;max-width:100%;box-shadow:var(--shadow-lg);animation:.14s modal-in}@keyframes modal-in{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}.modal-header{padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.modal-header h2{margin:0}.modal-close{color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:2px 6px;font-size:20px;line-height:1}.modal-close:hover{background:var(--surface-hover)}.modal-body{padding:var(--sp-5)}.modal-form{gap:var(--sp-3);flex-direction:column;display:flex}.toast-stack{bottom:var(--sp-5);right:var(--sp-5);gap:var(--sp-2);z-index:200;flex-direction:column;display:flex;position:fixed}.toast{background:var(--text-primary);color:var(--bg);border-radius:var(--radius-md);font-size:var(--fs-sm);box-shadow:var(--shadow-md);padding:10px 16px;animation:.16s toast-in}.toast.toast-error{background:var(--danger);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.project-header{border-bottom:1px solid var(--border);background:var(--surface);padding:var(--sp-5) var(--sp-7) 0}.project-header-top{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-4);display:flex}.project-title-row{align-items:center;gap:var(--sp-2);display:flex}.project-tabs{gap:var(--sp-1);scrollbar-width:none;display:flex;overflow-x:auto}.project-tabs::-webkit-scrollbar{display:none}.project-tab{margin-right:var(--sp-5);color:var(--text-secondary);font-size:var(--fs-base);white-space:nowrap;border-bottom:2px solid #0000;padding:9px 4px;font-weight:550;text-decoration:none}.project-tab:hover{color:var(--text-primary)}.project-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.project-body{padding:var(--sp-6) var(--sp-7)}@media (width<=900px){.project-header{padding:var(--sp-4) var(--sp-4) 0}.project-body{padding:var(--sp-4)}}.board-toolbar{margin-bottom:var(--sp-4);justify-content:space-between;align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.board{gap:var(--sp-3);padding-bottom:var(--sp-2);grid-template-columns:repeat(5,minmax(230px,1fr));display:grid;overflow-x:auto}.board-column{background:var(--bg);border-radius:var(--radius-lg);padding:var(--sp-2);min-height:160px;transition:background .15s}.board-column.drop-hover{background:var(--accent-soft)}.board-column-header{justify-content:space-between;align-items:center;padding:6px 8px 10px;display:flex}.board-column-header h2{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary)}.column-count{background:var(--surface);border:1px solid var(--border);color:var(--text-tertiary);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:650}.board-column-body{gap:var(--sp-2);flex-direction:column;min-height:40px;display:flex}.task-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-3);cursor:grab;gap:var(--sp-2);flex-direction:column;transition:border-color .12s,box-shadow .12s;display:flex}.task-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.task-title{font-size:var(--fs-base);color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;border:none;padding:0;font-weight:550;line-height:1.35}.task-card-footer{align-items:center;gap:var(--sp-2);display:flex}.priority-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.task-meta-chip{font-size:var(--fs-xs);color:var(--text-tertiary);align-items:center;gap:3px;display:inline-flex}.task-meta-chip.overdue{color:var(--danger)}.backlog-list{flex-direction:column;gap:5px;display:flex}.backlog-row{align-items:center;gap:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:8px var(--sp-3);display:flex}.drag-handle{cursor:grab;color:var(--text-tertiary);-webkit-user-select:none;user-select:none}.backlog-title{text-align:left;color:var(--text-primary);font-size:var(--fs-base);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;flex:1;padding:0;font-weight:500;overflow:hidden}.backlog-row select{border-radius:var(--radius-sm);font-size:var(--fs-xs);padding:4px 6px}.task-detail-grid{gap:var(--sp-6);grid-template-columns:1fr 240px;display:grid}.task-main>section{margin-bottom:var(--sp-6)}.task-description{resize:vertical;width:100%;min-height:80px}.comment-list{gap:var(--sp-2);margin-bottom:var(--sp-3);flex-direction:column;display:flex}.comment{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-3)}.comment-time{color:var(--text-tertiary);font-size:var(--fs-xs);margin-left:var(--sp-2)}.comment p{margin-top:4px}.attachment-list{margin:0 0 var(--sp-3);padding:0;list-style:none}.attachment-list li{padding:var(--sp-2) 0;border-bottom:1px solid var(--border);justify-content:space-between;display:flex}.link-button{color:var(--accent);cursor:pointer;font-size:var(--fs-base);text-align:left;background:0 0;border:none;padding:0}.attachment-size{color:var(--text-tertiary);font-size:var(--fs-xs)}.task-sidebar{gap:var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);flex-direction:column;align-self:flex-start;display:flex}.timeline{margin-top:var(--sp-2)}.timeline-axis{font-size:var(--fs-xs);color:var(--text-tertiary);margin-bottom:var(--sp-3);justify-content:space-between;display:flex}.timeline-row{align-items:center;gap:var(--sp-3);margin-bottom:10px;display:flex}.timeline-label{width:180px;font-size:var(--fs-base);text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;font-weight:500;overflow:hidden}.timeline-track{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);flex:1;height:22px;position:relative}.timeline-bar{background:var(--accent);border-radius:4px;position:absolute;top:2px;bottom:2px}.timeline-bar.status-done{background:var(--success)}.timeline-bar.status-in_progress{background:var(--warning)}.timeline-bar.status-review{background:var(--info)}.document-title-input{width:100%;font-size:var(--fs-xl);padding:0 0 var(--sp-3);margin-bottom:var(--sp-3);border:none;border-bottom:1px solid var(--border);background:0 0;font-weight:650}.document-title-input:focus{box-shadow:none;outline:none}.document-content{width:100%;min-height:60vh;font-size:var(--fs-md);resize:none;background:0 0;border:none;line-height:1.65}.document-content:focus{box-shadow:none;outline:none}.save-status{font-size:var(--fs-xs);color:var(--text-tertiary)}.activity-list{flex-direction:column;display:flex}.activity-item{gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--border);display:flex}.activity-item:last-child{border-bottom:none}.activity-icon{background:var(--surface-hover);width:28px;height:28px;color:var(--text-secondary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.activity-text{font-size:var(--fs-base)}.activity-text strong{font-weight:600}.activity-time{font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:2px}@media (width<=720px){.board,.task-detail-grid{grid-template-columns:1fr}.kpi-row{grid-template-columns:repeat(2,1fr)}}
