.global-search{position:relative;width:100%;min-width:0}.search-input{background:#ffffff26;border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:var(--radius-sm);padding:6px 12px;font-size:13px;width:100%;max-width:100%;box-sizing:border-box;transition:background .2s,border-color .2s,box-shadow .2s}.search-input::placeholder{color:#ffffff80}.search-input:focus{background:#ffffff40;border-color:#fff6;outline:none;box-shadow:0 0 0 2px #ffffff1f}.search-dropdown{position:absolute;top:100%;left:0;right:0;width:100%;min-width:0;box-sizing:border-box;margin-top:4px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:200;max-height:300px;overflow-y:auto;overflow-x:hidden}.search-item{padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--color-border-light)}.search-item:last-child{border-bottom:none}.search-item:hover{background:var(--color-primary-bg)}.search-item-heading{display:flex;align-items:center;gap:6px;min-width:0}.search-item-code{flex-shrink:0;font-size:11px;font-weight:600;color:var(--color-primary)}.search-item-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;color:var(--color-text)}.search-item-meta{display:flex;align-items:center;gap:6px;min-width:0;margin-top:2px;font-size:11px;color:var(--color-text-muted)}.search-item-project{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-empty{padding:10px 12px;font-size:12px;color:var(--color-text-muted)}@media (max-width: 768px){.search-input{min-height:36px;font-size:14px}.search-dropdown{position:fixed;top:calc(52px + env(safe-area-inset-top));left:var(--space-md);right:var(--space-md);width:auto;max-height:min(360px,calc(100dvh - 136px))}.search-item{padding:10px 12px}}.layout{display:flex;height:100vh;height:100dvh;min-height:0;overflow:hidden}.sidebar{width:220px;height:100vh;background:var(--color-primary-dark);color:#fff;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.sidebar-brand{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-lg);border-bottom:1px solid rgba(255,255,255,.1)}.brand-icon{width:32px;height:32px;background:#fff3;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px}.brand-text{font-size:18px;font-weight:600;letter-spacing:.5px}.sidebar-search{padding:var(--space-sm) var(--space-md)}.sidebar-nav{flex:1;padding:var(--space-md);display:flex;flex-direction:column;gap:2px;min-height:0;overflow-y:auto}.nav-item{display:flex;align-items:center;gap:var(--space-sm);padding:10px 12px;border-radius:var(--radius-sm);color:#ffffffb3;font-size:14px;transition:all .15s;text-decoration:none}.nav-item:hover{background:#ffffff1a;color:#fff}.nav-item.active{background:#ffffff26;color:#fff;font-weight:500}.sidebar-footer{padding:var(--space-md);border-top:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:space-between}.user-info{display:flex;align-items:center;gap:var(--space-sm);overflow:hidden}.user-avatar{width:32px;height:32px;background:var(--color-primary-light);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;flex-shrink:0}.user-detail{display:flex;flex-direction:column;overflow:hidden}.user-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:11px;color:#ffffff80}.btn-logout{background:none;border:none;color:#ffffff80;padding:4px;border-radius:4px;transition:all .15s}.btn-logout:hover{color:#fff;background:#ffffff1a}.main-content{flex:1;height:100vh;height:100dvh;padding:var(--space-xl);overflow-y:auto;min-width:0;min-height:0}.mobile-topbar{display:none}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg);gap:var(--space-md)}.page-title{font-size:22px;font-weight:700;color:var(--color-text)}.page-subtitle{font-size:14px;color:var(--color-text-secondary);margin-top:2px}@media (max-width: 768px){.layout{display:block;overflow:hidden}.sidebar{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:80;width:100%;max-width:none;height:calc(62px + env(safe-area-inset-bottom));min-height:0;padding-bottom:env(safe-area-inset-bottom);background:var(--color-surface);color:var(--color-text-secondary);border-top:1px solid var(--color-border);box-shadow:0 -8px 20px #0f172a14}.sidebar-brand,.sidebar-search,.sidebar-footer{display:none}.sidebar-nav{height:62px;flex:none;flex-direction:row;justify-content:space-around;align-items:stretch;gap:0;padding:6px 8px;overflow:visible}.nav-item{flex:1;flex-direction:column;justify-content:center;gap:3px;padding:6px 4px;color:var(--color-text-muted);font-size:11px;border-radius:var(--radius-md)}.nav-item svg{width:20px;height:20px}.nav-item:hover,.nav-item.active{background:var(--color-primary-bg);color:var(--color-primary)}.main-content{height:100vh;height:100dvh;width:100%;padding:var(--space-md);padding-bottom:calc(82px + env(safe-area-inset-bottom));overflow-y:auto;-webkit-overflow-scrolling:touch}.mobile-topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;flex-direction:row;gap:var(--space-sm);margin:calc(var(--space-md) * -1) calc(var(--space-md) * -1) var(--space-xl);padding:calc(var(--space-sm) + env(safe-area-inset-top)) var(--space-md) var(--space-sm);background:var(--color-primary-dark);color:#fff;box-shadow:var(--shadow-sm)}.mobile-brand{display:flex;align-items:center;gap:var(--space-sm);flex:0 0 auto;min-width:0}.mobile-brand .brand-icon{width:28px;height:28px;font-size:15px}.mobile-brand .brand-text{display:inline;font-size:15px;white-space:nowrap}.mobile-search{flex:1 1 auto;min-width:0}.page-header{align-items:flex-start;flex-direction:column;margin-top:var(--space-md);margin-bottom:var(--space-lg)}.page-header>.btn,.page-header>button{width:100%}.page-title{font-size:20px;line-height:1.25}.page-subtitle{font-size:13px}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg)}.login-card{width:400px;background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);overflow:hidden}.login-brand{background:var(--color-primary);color:#fff;text-align:center;padding:var(--space-2xl) var(--space-lg) var(--space-lg)}.login-logo{width:56px;height:56px;background:#fff3;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:700;margin:0 auto var(--space-md)}.login-brand h1{font-size:24px;font-weight:700;margin-bottom:4px}.login-brand p{font-size:14px;opacity:.8}.login-body{padding:var(--space-xl)}.login-hint{font-size:13px;color:var(--color-text-secondary);text-align:center;margin-bottom:var(--space-lg)}.login-divider{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg)}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.login-divider span{font-size:12px;color:var(--color-text-muted)}.login-label{display:block;font-size:13px;font-weight:500;margin-bottom:var(--space-xs);color:var(--color-text-secondary)}.login-error{color:var(--color-danger);font-size:13px;margin-top:var(--space-sm)}@media (max-width: 640px){.login-page{align-items:stretch;padding:var(--space-md)}.login-card{width:100%;max-width:420px;margin:auto;border-radius:var(--radius-lg)}.login-brand{padding:var(--space-xl) var(--space-md) var(--space-md)}.login-body{padding:var(--space-lg)}}.state-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-md);min-height:200px}.state-icon{font-size:40px;margin-bottom:var(--space-md)}.state-text{color:var(--color-text-muted);font-size:14px}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite;margin-bottom:var(--space-md)}@keyframes spin{to{transform:rotate(360deg)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#00000059;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease;padding:var(--space-md)}.modal-container{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:90%;max-height:80vh;overflow-y:auto;animation:slideUp .2s ease;min-width:0}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg);border-bottom:1px solid var(--color-border-light)}.modal-title{font-size:17px;font-weight:600}.modal-close{background:none;border:none;font-size:18px;color:var(--color-text-muted);width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center}.modal-close:hover{background:var(--color-border-light);color:var(--color-text)}.modal-body{padding:var(--space-lg)}.form-group{margin-bottom:var(--space-md)}.form-label{display:block;font-size:13px;font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--space-xs)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.form-actions{display:flex;justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border-light)}.form-hint{font-size:12px;color:var(--color-text-muted);margin-top:4px}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%2394A3B8' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width: 640px){.modal-overlay{align-items:flex-end;padding:0}.modal-container{width:100%!important;max-width:none!important;max-height:min(88vh,calc(100dvh - 24px));border-radius:16px 16px 0 0}.modal-header{position:sticky;top:0;z-index:2;padding:var(--space-md);background:var(--color-surface)}.modal-body{padding:var(--space-md);padding-bottom:calc(var(--space-lg) + env(safe-area-inset-bottom))}.form-row{grid-template-columns:1fr;gap:0}.form-actions{position:sticky;bottom:calc(-1 * (var(--space-lg) + env(safe-area-inset-bottom)));z-index:2;margin-left:calc(var(--space-md) * -1);margin-right:calc(var(--space-md) * -1);margin-bottom:calc((var(--space-lg) + env(safe-area-inset-bottom)) * -1);padding:var(--space-md);padding-bottom:calc(var(--space-md) + env(safe-area-inset-bottom));background:var(--color-surface);box-shadow:0 -8px 18px #0f172a0f}.form-actions .btn{flex:1}}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-md)}.project-filter-tabs{display:inline-flex;gap:4px;padding:4px;margin-bottom:var(--space-md);background:var(--color-border-light);border-radius:var(--radius-md)}.project-filter-tab{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:13px;transition:all .15s}.project-filter-tab:hover{color:var(--color-text)}.project-filter-tab.active{background:var(--color-surface);color:var(--color-primary);font-weight:500;box-shadow:var(--shadow-sm)}.project-filter-tab span{color:var(--color-text-muted);font-weight:500}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:all .15s;color:inherit;overflow:hidden;display:flex;flex-direction:column}.project-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.project-card-main{padding:var(--space-lg);text-decoration:none;color:inherit;flex:1}.project-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-sm)}.project-name{font-size:16px;font-weight:600;color:var(--color-text)}.project-desc{font-size:13px;color:var(--color-text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:var(--space-md)}.project-card-footer{display:flex;justify-content:space-between;padding-top:var(--space-sm);border-top:1px solid var(--color-border-light)}.project-card-actions{display:flex;justify-content:flex-end;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg) var(--space-lg)}@media (max-width: 640px){.project-grid{grid-template-columns:1fr;gap:var(--space-sm)}.project-filter-tabs{display:flex;width:100%;overflow-x:auto}.project-filter-tab{flex:1;justify-content:center;min-width:86px;padding:7px 10px}.project-card-main{padding:var(--space-md)}.project-card-header{gap:var(--space-sm)}.project-card-footer{flex-direction:column;gap:4px}.project-card-actions{padding:0 var(--space-md) var(--space-md)}.project-card-actions .btn{flex:1}}.tag-input{position:relative}.tag-list{display:flex;flex-wrap:wrap;gap:4px;align-items:center;min-height:32px;padding:4px 6px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:text}.tag-list:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-bg)}.tag-badge{display:inline-flex;align-items:center;gap:2px;padding:2px 8px;border-radius:10px;color:#fff;font-size:12px;font-weight:500}.tag-remove{background:none;border:none;color:#fff9;font-size:14px;padding:0 2px;cursor:pointer;line-height:1}.tag-remove:hover{color:#fff}.tag-input-field{border:none;outline:none;background:transparent;flex:1;min-width:80px;font-size:13px;color:var(--color-text);padding:2px 4px}.tag-input-field::placeholder{color:var(--color-text-muted);font-size:12px}.tag-suggestions{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:100;max-height:180px;overflow-y:auto}.tag-sugg-item{padding:6px 12px;font-size:13px;cursor:pointer;color:var(--color-text)}.tag-sugg-item:hover,.tag-sugg-item.active{background:var(--color-primary-bg);color:var(--color-primary)}.dashboard{display:flex;flex-direction:column;gap:var(--space-lg)}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-md)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);text-align:center}.stat-value{display:block;font-size:28px;font-weight:700;color:var(--color-primary)}.stat-label{display:block;font-size:13px;color:var(--color-text-secondary);margin-top:4px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg)}.progress-bar-container{width:100%;height:10px;background:var(--color-border-light);border-radius:5px;overflow:hidden;margin-bottom:var(--space-sm)}.progress-bar{height:100%;background:var(--color-primary);border-radius:5px;transition:width .5s ease}.progress-text{font-size:13px;color:var(--color-text-secondary)}.stage-bars{margin-top:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.stage-bar-row{display:flex;align-items:center;gap:var(--space-sm)}.stage-bar-label{font-size:12px;color:var(--color-text-secondary);width:60px;text-align:right}.stage-bar-track{flex:1;height:8px;background:var(--color-border-light);border-radius:4px;overflow:hidden}.stage-bar-fill{height:100%;border-radius:4px;transition:width .3s}.stage-bar-count{font-size:12px;color:var(--color-text-muted);width:24px;text-align:left}.priority-stats{display:flex;flex-direction:column;gap:var(--space-sm)}.priority-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0}.priority-count{font-size:16px;font-weight:600;color:var(--color-text)}.urgent-item{padding:10px 16px;border-bottom:1px solid var(--color-border-light);display:flex;justify-content:space-between;font-size:13px}.urgent-item:last-child{border-bottom:none}@media (max-width: 768px){.stats-row{grid-template-columns:repeat(2,1fr)}.stats-grid{grid-template-columns:1fr}}@media (max-width: 640px){.dashboard{gap:var(--space-md)}.stats-row{gap:var(--space-sm)}.stat-card{padding:var(--space-md);border-radius:var(--radius-md)}.stat-value{font-size:22px}.urgent-item{align-items:flex-start;flex-direction:column;gap:2px;padding:10px 0}}.calendar{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);overflow:hidden}.calendar-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border-light)}.calendar-title{font-size:16px;font-weight:600}.calendar-grid{--calendar-day-chrome-height: 33px;--calendar-project-track-height: var(--calendar-project-track-height-desktop, 99px);--calendar-project-row-min-height: 30px;--calendar-project-gap: 4px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekday{text-align:center;padding:8px;font-size:12px;font-weight:600;color:var(--color-text-muted);background:var(--color-bg)}.calendar-day{min-height:118px;min-width:0;padding:4px 6px;border-right:1px solid var(--color-border-light);border-bottom:1px solid var(--color-border-light);display:flex;flex-direction:column;gap:3px;overflow:visible}.calendar-grid.has-project-timelines .calendar-day{min-height:calc(var(--calendar-day-chrome-height) + var(--calendar-project-track-height))}.calendar-day:nth-child(7n){border-right:none}.calendar-day.empty{background:var(--color-bg)}.calendar-day.today{background:var(--color-primary-bg)}.calendar-day.today .day-num{background:var(--color-primary);color:#fff}.day-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;font-size:12px;border-radius:50%;flex:0 0 auto}.day-projects{display:grid;grid-template-rows:repeat(var(--calendar-visible-project-count, 1),minmax(0,1fr));gap:var(--calendar-project-gap);min-width:0;height:var(--calendar-project-track-height);flex:0 0 var(--calendar-project-track-height);margin:0 -6px}.day-project,.day-project-spacer{display:block;height:100%;min-height:0;min-width:0}.day-project{position:relative;z-index:1;display:flex;align-items:center;box-sizing:border-box;padding:2px 6px;border-top:1px solid var(--project-color);border-bottom:1px solid var(--project-color);border-left:0;border-right:0;border-radius:0;font-size:11px;line-height:1.18;font-weight:600;color:var(--color-text);text-decoration:none;overflow:hidden}.day-project-label{min-width:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}.day-projects[data-project-count="1"] .day-project{justify-content:center;text-align:center;font-size:12px}.day-project.segment-continue{margin-left:-1px}.day-project:not(.segment-end){margin-right:-1px}.day-project.segment-start{margin-left:0;padding-left:7px;border-left:3px solid var(--project-color);border-top-left-radius:9px;border-bottom-left-radius:9px}.day-project.segment-end{margin-right:0;border-right:1px solid var(--project-color);border-top-right-radius:9px;border-bottom-right-radius:9px}.day-project:hover{color:var(--color-primary);filter:saturate(1.15)}.calendar-projects{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border-light);display:flex;flex-direction:column;gap:8px}.calendar-empty-note{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border-light);font-size:13px;color:var(--color-text-muted)}.calendar-projects-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.calendar-section-label{font-size:12px;font-weight:600;color:var(--color-text-muted);white-space:nowrap;margin-right:8px}.calendar-project-count{font-size:12px;color:var(--color-text-muted)}.calendar-project-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.project-bars{display:flex;flex-wrap:wrap;gap:6px}.project-bar{position:relative;display:inline-flex;align-items:center;gap:var(--space-xs);padding:4px 10px;border-left:3px solid var(--project-color);border-radius:4px;font-size:12px;color:inherit;cursor:pointer;transition:background .15s,opacity .15s;-webkit-user-select:none;user-select:none}.project-bar input{position:absolute;opacity:0;pointer-events:none}.project-bar-switch{width:24px;height:14px;border-radius:999px;background:var(--color-border);position:relative;flex:0 0 auto;transition:background .15s}.project-bar-switch:after{content:"";position:absolute;width:10px;height:10px;left:2px;top:2px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0f172a40;transition:transform .15s}.project-bar.active .project-bar-switch{background:var(--project-color)}.project-bar.active .project-bar-switch:after{transform:translate(10px)}.project-bar.hidden{opacity:.62;background:var(--color-bg)}.project-bar:hover{background:var(--color-primary-bg)}.project-bar-name{font-weight:500}.project-bar-date{font-size:12px;color:var(--color-text-muted)}@media (max-width: 640px){.calendar-grid{--calendar-day-chrome-height: 29px;--calendar-project-track-height: var(--calendar-project-track-height-mobile, 87px);--calendar-project-row-min-height: 24px;--calendar-project-gap: 3px}.calendar{border-radius:var(--radius-md);margin:0 calc(var(--space-md) * -1);border-left:none;border-right:none}.calendar-header{padding:var(--space-md)}.calendar-title{font-size:15px}.calendar-projects,.calendar-empty-note{padding:var(--space-md)}.calendar-projects-head{align-items:flex-start;flex-direction:column;gap:var(--space-sm)}.calendar-project-actions{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.calendar-project-actions .btn{padding-left:6px;padding-right:6px}.project-bars{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}.project-bar{flex:0 0 auto;max-width:82vw}.project-bar-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-bar-date{display:none}.calendar-weekday{padding:6px 2px;font-size:11px}.calendar-day{min-height:76px;padding:3px 2px;gap:2px}.day-num{width:20px;height:20px;font-size:11px}.day-projects{margin:0 -2px;gap:3px}.day-project{padding:0 3px;font-size:10px;line-height:1.1}.day-project.segment-start{padding-left:4px;border-left-width:2px;border-top-left-radius:7px;border-bottom-left-radius:7px}.day-project.segment-end{border-top-right-radius:7px;border-bottom-right-radius:7px}.day-project-label{-webkit-line-clamp:2}.day-projects[data-project-count="1"] .day-project{font-size:10px}.day-projects[data-project-count="1"] .day-project-label{-webkit-line-clamp:3}}.list-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.list-table-wrapper{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sortable:hover{color:var(--color-primary)}.list-task-link{color:var(--color-text);font-weight:500;text-decoration:none}.list-task-link:hover{color:var(--color-primary)}.table tr{cursor:default}@media (max-width: 640px){.list-toolbar{align-items:stretch;flex-direction:column;gap:var(--space-sm)}.list-toolbar .input{max-width:none!important}.list-table-wrapper{overflow-x:auto;border-radius:var(--radius-md);-webkit-overflow-scrolling:touch}}.gantt{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.gantt-header{display:flex;border-bottom:1px solid var(--color-border);background:var(--color-bg)}.gantt-month{padding:6px 12px;font-size:12px;font-weight:600;color:var(--color-text-secondary);border-right:1px solid var(--color-border-light)}.gantt-body{max-height:500px;overflow-y:auto}.gantt-row{display:flex;border-bottom:1px solid var(--color-border-light);align-items:stretch}.gantt-label{width:200px;min-width:200px;padding:6px 12px;border-right:1px solid var(--color-border);display:flex;flex-direction:column;justify-content:center;font-size:13px}.gantt-task-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-bar-track{flex:1;position:relative;padding:8px 0;min-height:36px}.gantt-bar{position:absolute;top:8px;height:20px;border-radius:4px;padding:0 6px;font-size:10px;color:#fff;display:flex;align-items:center;white-space:nowrap;overflow:hidden;min-width:20px}@media (max-width: 640px){.gantt{overflow-x:auto;border-radius:var(--radius-md);-webkit-overflow-scrolling:touch}.gantt-header,.gantt-row{min-width:760px}.gantt-label{width:150px;min-width:150px}.gantt-body{max-height:420px}}.bulk-toolbar{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-primary-bg);border:1px solid var(--color-primary);border-radius:var(--radius-md);margin-bottom:var(--space-md)}.bulk-count{font-size:13px;font-weight:500;color:var(--color-primary);margin-right:auto}@media (max-width: 640px){.bulk-toolbar{flex-wrap:wrap}.bulk-count{width:100%;margin-right:0}.bulk-toolbar .btn{flex:1}}.activity-feed{margin-top:var(--space-lg)}.activity-title{font-size:14px;font-weight:600;margin-bottom:var(--space-sm);padding-left:4px}.activity-item{display:flex;gap:var(--space-sm);padding:8px 4px;border-bottom:1px solid var(--color-border-light)}.activity-icon{font-size:16px;flex-shrink:0;margin-top:1px}.activity-content{flex:1;min-width:0;display:flex;justify-content:space-between;align-items:baseline;gap:8px}.activity-text{font-size:13px;color:var(--color-text-secondary)}.activity-link{color:var(--color-primary);font-weight:500}.activity-time{font-size:11px;color:var(--color-text-muted);white-space:nowrap}.reminder-settings{display:flex;flex-direction:column;gap:var(--space-md)}.reminder-settings.muted{color:var(--color-text-muted);font-size:13px}.reminder-alert{padding:9px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:13px}.reminder-alert.success{color:var(--color-success);background:var(--color-success-bg);border-color:#10b9813d}.reminder-alert.error{color:var(--color-danger);background:var(--color-danger-bg);border-color:#ef44443d}.reminder-toggle{display:flex;align-items:center;gap:var(--space-sm);font-size:13px;color:var(--color-text)}.reminder-toggle input{width:16px;height:16px;flex:0 0 auto}.reminder-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.reminder-multi-select{min-height:132px;padding:8px;background-image:none!important}.reminder-multi-select option{padding:5px 6px}.reminder-meta{color:var(--color-text-muted);font-size:12px}.reminder-actions{display:flex;justify-content:flex-end;gap:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border-light)}@media (max-width: 640px){.reminder-grid{grid-template-columns:1fr;gap:0}.reminder-actions{flex-direction:column}.reminder-actions .btn{width:100%}}.workflow-tabs{display:flex;gap:4px;background:var(--color-border-light);padding:4px;border-radius:var(--radius-md)}.project-view-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px}.wf-tab{padding:6px 16px;border:none;background:transparent;border-radius:var(--radius-sm);font-size:14px;color:var(--color-text-secondary);transition:all .15s}.wf-tab:hover{color:var(--color-text)}.wf-tab.active{background:var(--color-surface);color:var(--color-primary);font-weight:500;box-shadow:var(--shadow-sm)}.kanban-board{display:flex;gap:var(--space-md);overflow-x:auto;padding-bottom:var(--space-md);min-width:0}.kanban-column{flex:1;min-width:240px;background:var(--color-bg);border-radius:var(--radius-lg)}.kanban-col-header{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);border-bottom:2px solid var(--color-border)}.stage-dot{width:8px;height:8px;border-radius:50%}.kanban-col-title{font-weight:600;font-size:14px;flex:1}.kanban-col-body{padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-sm);min-height:100px}.kanban-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md);transition:all .15s;text-decoration:none;color:inherit;display:flex;flex-direction:column;min-height:130px}.kanban-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm)}.kanban-card.selected{border-color:var(--color-primary);background:var(--color-primary-bg);box-shadow:0 0 0 2px var(--color-primary-bg)}.kanban-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-xs)}.kanban-check{font-size:16px;cursor:pointer;color:var(--color-text-muted);padding:0 2px;transition:color .15s;-webkit-user-select:none;user-select:none}.kanban-check:hover{color:var(--color-primary)}.kanban-card-title{font-size:14px;font-weight:500;margin:var(--space-sm) 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.kanban-card-meta{font-size:13px;color:var(--color-text-secondary);min-height:20px;line-height:20px;margin-bottom:var(--space-xs)}.kanban-card-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.view-tabs{display:flex;gap:4px;background:var(--color-border-light);padding:4px;border-radius:var(--radius-md)}.view-tab{padding:6px 16px;border:none;background:transparent;border-radius:var(--radius-sm);font-size:13px;color:var(--color-text-secondary);transition:all .15s;cursor:pointer}.view-tab:hover{color:var(--color-text)}.view-tab.active{background:var(--color-surface);color:var(--color-primary);font-weight:500;box-shadow:var(--shadow-sm)}.td-section-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md)}.td-info-item{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);min-width:0;padding:7px 0;border-bottom:1px solid var(--color-border-light);font-size:13px}.project-overview{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:var(--space-xl);align-items:start}.project-overview-main,.project-overview-side{display:flex;flex-direction:column;gap:var(--space-lg);min-width:0}.project-info-grid{margin-bottom:var(--space-lg)}.project-desc-block{padding-top:var(--space-md);border-top:1px solid var(--color-border-light)}.project-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-sm);margin-bottom:var(--space-lg)}.project-stat{padding:var(--space-md);background:var(--color-bg);border:1px solid var(--color-border-light);border-radius:var(--radius-md)}.project-stat-num{display:block;font-size:22px;line-height:1.1;font-weight:700;color:var(--color-text)}.project-stat-label{display:block;margin-top:4px;font-size:12px;color:var(--color-text-secondary)}.project-stage-summary,.project-member-list,.project-workflow-list{display:flex;flex-direction:column;gap:6px}.project-stage-row,.project-member-item{display:flex;align-items:center;gap:var(--space-sm);min-height:30px}.project-role-badge{margin-left:auto}.project-member-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:8px 0;border-bottom:1px solid var(--color-border-light)}.project-member-main,.project-member-actions,.project-add-member-header{display:flex;align-items:center;gap:var(--space-sm);min-width:0}.project-member-main{flex:1}.project-member-actions{flex-shrink:0}.project-role-select{width:96px;min-width:96px;padding-top:4px;padding-bottom:4px;font-size:13px}.project-add-member-header{justify-content:space-between;margin-top:var(--space-md);margin-bottom:var(--space-sm)}.project-add-member-header p{margin:0}.project-add-member-list{max-height:220px;overflow:auto}.project-stage-name{flex:1;font-size:13px}.project-workflow-item{padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border-light)}.project-workflow-item:last-child{border-bottom:none}.project-workflow-title{font-size:13px;font-weight:600;margin-bottom:6px}.project-workflow-stages{display:flex;flex-wrap:wrap;gap:6px}.project-workflow-stage{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;background:var(--color-bg);border-radius:4px;font-size:12px;color:var(--color-text-secondary)}.create-task-form,.stage-move-list{display:flex;flex-direction:column;gap:14px}.stage-move-list{gap:8px}.form-grid-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.assignee-picker{position:relative}.assignee-dropdown{position:absolute;top:100%;left:0;right:0;z-index:100;max-height:160px;overflow:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;box-shadow:var(--shadow-md)}.project-hidden-settings{margin-top:var(--space-md);border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-bg)}.project-hidden-settings summary{padding:10px 12px;cursor:pointer;font-size:13px;font-weight:600}.project-hidden-settings[open] summary{border-bottom:1px solid var(--color-border-light)}.project-hidden-settings .reminder-settings{padding:var(--space-md)}@media (max-width: 900px){.project-overview{grid-template-columns:1fr}.project-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 560px){.project-view-toolbar{display:block;margin-bottom:var(--space-md)}.page-header>.btn.btn-primary{width:100%;min-width:0;white-space:nowrap}.view-tabs,.workflow-tabs{width:100%;overflow-x:auto;scrollbar-width:none}.view-tabs::-webkit-scrollbar,.workflow-tabs::-webkit-scrollbar{display:none}.workflow-tabs{margin-top:var(--space-sm)}.view-tab,.wf-tab{flex:0 0 auto;min-width:74px;padding:7px 12px;white-space:nowrap}.kanban-board{gap:0;margin:0 calc(var(--space-md) * -1);padding:0 0 var(--space-md);scroll-snap-type:x mandatory;scroll-padding-inline:0;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}.kanban-board::-webkit-scrollbar{display:none}.kanban-column{flex:0 0 100%;min-width:100%;padding:0 var(--space-md);scroll-snap-align:start;scroll-snap-stop:always;border-radius:0}.kanban-col-header{position:sticky;top:0;z-index:1;background:var(--color-bg);padding:12px}.kanban-card{min-height:118px;padding:12px}.kanban-card-bottom{align-items:flex-start;flex-direction:column;gap:var(--space-sm)}.td-section{padding:var(--space-md);border-radius:var(--radius-md)}.td-section-header{align-items:flex-start;gap:var(--space-sm)}.td-info-grid{grid-template-columns:1fr;gap:0}.td-info-item{align-items:flex-start;gap:var(--space-sm)}.project-stat-grid{grid-template-columns:1fr}.project-stat{padding:var(--space-md)}.project-member-row,.project-member-actions,.project-add-member-header{align-items:stretch}.project-member-row{flex-direction:column;gap:var(--space-sm)}.project-member-actions,.project-add-member-header{width:100%}.project-role-select{flex:1;width:auto}.project-overview-main,.project-overview-side{gap:var(--space-md)}.form-grid-two{grid-template-columns:1fr;gap:0}.assignee-dropdown{max-height:220px}}.task-detail{min-width:0}.td-topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm);flex-wrap:wrap;gap:8px}.td-breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px}.td-bc-link{color:var(--color-text-secondary);text-decoration:none}.td-bc-link:hover{color:var(--color-primary)}.td-bc-sep{color:var(--color-text-muted)}.td-code{font-size:13px;font-weight:600;color:var(--color-primary);background:var(--color-primary-bg);padding:2px 10px;border-radius:4px;font-family:SF Mono,Consolas,monospace;letter-spacing:.5px}.td-header{margin-bottom:var(--space-lg)}.td-title{font-size:22px;font-weight:700;transition:color .15s}.td-title.editable{cursor:pointer}.td-title.editable:hover{color:var(--color-primary)}.td-edit-row{display:flex;gap:var(--space-sm);align-items:center}.td-edit-input{max-width:500px;font-size:22px;font-weight:700}.td-grid{display:grid;grid-template-columns:1fr 260px;gap:var(--space-xl);align-items:start}.td-main,.td-sidebar{display:flex;flex-direction:column;gap:var(--space-lg)}.td-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg)}.td-section h3{font-size:14px;font-weight:600;margin-bottom:var(--space-md)}.td-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md)}.td-section-header h3{margin-bottom:0}.td-desc{font-size:14px;line-height:1.7;color:var(--color-text-secondary);white-space:pre-wrap}.td-edit-area{display:flex;flex-direction:column;gap:var(--space-sm)}.td-edit-actions{display:flex;gap:var(--space-sm);justify-content:flex-end}.td-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px var(--space-xl)}.td-info-item{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid var(--color-border-light);font-size:13px;gap:var(--space-md)}.td-info-item .info-label{flex-shrink:0}.info-label{color:var(--color-text-secondary)}.info-grid{display:flex;flex-direction:column;gap:2px}.info-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--color-border-light);font-size:13px}.info-item:last-child{border-bottom:none}.person-info-item{align-items:center;gap:var(--space-sm)}.person-trigger{max-width:150px;padding:2px 6px;border:none;border-radius:4px;background:transparent;color:var(--color-primary);font-size:13px;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-trigger:hover{background:var(--color-primary-bg)}.person-editor{position:relative;width:150px;max-width:100%;flex-shrink:0}.person-input{width:100%;padding:4px 8px;font-size:12px}.person-suggestions{position:absolute;top:100%;right:0;left:0;z-index:60;margin-top:4px;padding:4px;max-height:220px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:var(--shadow-lg)}.person-option{width:100%;display:flex;align-items:center;gap:8px;padding:7px 8px;border:none;border-radius:6px;background:transparent;color:var(--color-text);font-size:12px;text-align:left}.person-option:hover{background:var(--color-bg)}.person-option.active{background:var(--color-primary-bg);color:var(--color-primary);font-weight:500}.person-avatar{width:22px;height:22px;border-radius:50%;background:var(--color-primary-light);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex-shrink:0}.person-option-text{min-width:0;display:flex;flex-direction:column;line-height:1.25}.person-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-id{color:var(--color-text-muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-empty{padding:8px;font-size:12px;color:var(--color-text-muted)}.badge.clickable{cursor:pointer;transition:opacity .15s}.badge.clickable:hover{opacity:.85}.td-dropdown-wrap{position:relative;display:inline-flex}.td-popover-menu{position:absolute;top:100%;right:0;z-index:50;min-width:140px;margin-top:4px;padding:4px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:var(--shadow-lg)}.td-priority-menu{min-width:128px}.td-priority-option{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--color-text)}.td-priority-option:hover{background:var(--color-bg)}.td-priority-option.active{color:#fff;background:var(--priority-color);font-weight:500}.td-priority-dot{width:8px;height:8px;border-radius:50%;background:var(--priority-color);flex-shrink:0}.td-priority-option.active .td-priority-dot{background:#fff;opacity:.6}.td-option-current{margin-left:auto;font-size:11px;opacity:.8}.td-info-item:nth-last-child(-n+2):nth-child(odd){border-bottom:none}.activity-item{display:flex;gap:var(--space-sm);padding:10px 0;border-bottom:1px solid var(--color-border-light)}.activity-item:last-child{border-bottom:none}.activity-item.comment{background:var(--color-bg);margin:0 -8px;padding:10px 8px;border-radius:8px;border-bottom:none}.activity-avatar{width:28px;height:28px;background:var(--color-primary-light);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.activity-body{flex:1;min-width:0}.activity-header{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px}.activity-badge{font-size:11px;color:var(--color-text-muted)}.activity-time{font-size:11px;color:var(--color-text-muted);margin-left:auto}.td-activity-comment-text{display:block;margin-top:4px;font-size:13px;color:var(--color-text-secondary);white-space:pre-wrap;line-height:1.5}.td-activity-reply-prefix{color:var(--color-primary);font-weight:600}.td-activity-comment-body{color:var(--color-text-secondary)}.activity-reply-btn{border:none;background:transparent;color:var(--color-primary);font-size:12px;padding:0 2px}.activity-reply-btn:hover{text-decoration:underline}.activity-reply-quote{display:flex;flex-direction:column;gap:2px;margin-top:6px;padding:7px 10px;border-left:3px solid var(--color-primary-light);border-radius:4px;background:var(--color-surface)}.activity-reply-author{font-size:11px;font-weight:600;color:var(--color-text-secondary)}.activity-reply-content{font-size:12px;line-height:1.45;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-context{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);padding:8px 10px;border-left:3px solid var(--color-primary);border-radius:4px;background:var(--color-primary-bg)}.reply-context-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.reply-context-label{font-size:12px;font-weight:600;color:var(--color-primary)}.reply-context-content{font-size:12px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-cancel{border:none;background:transparent;color:var(--color-text-muted);font-size:12px;padding:2px 4px;flex-shrink:0}.reply-cancel:hover{color:var(--color-danger)}.comment-input-row{display:flex;gap:var(--space-sm);margin-bottom:var(--space-md)}.comment-input-row .input{flex:1;font-size:13px}.comment-input-wrap{position:relative;flex:1;min-width:0}.comment-input-wrap .input{width:100%}.mention-suggestions{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:70;max-height:220px;overflow-y:auto;padding:4px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:var(--shadow-lg)}.mention-option{width:100%;display:flex;align-items:center;gap:8px;padding:7px 8px;border:none;border-radius:6px;background:transparent;color:var(--color-text);font-size:12px;text-align:left}.mention-option:hover{background:var(--color-bg)}.attachments-area{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border-light)}.attachments-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm)}.attachment-upload-button{flex-shrink:0}.attachment-file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.attachment-list{display:flex;flex-direction:column;gap:4px}.attachment-item{display:flex;align-items:center;gap:var(--space-sm);padding:6px 8px;border-radius:4px;text-decoration:none;color:inherit;font-size:13px}.attachment-item:hover{background:var(--color-bg)}.attachment-name{flex:1;color:var(--color-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attachment-size{font-size:11px;color:var(--color-text-muted)}.watcher-list{display:flex;flex-direction:column;gap:4px}.watcher-item{display:flex;align-items:center;gap:var(--space-sm);padding:4px 0}.watcher-avatar{width:24px;height:24px;background:var(--color-primary-light);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex-shrink:0}@media (max-width: 768px){.td-grid{grid-template-columns:1fr;gap:var(--space-md)}.td-main,.td-sidebar{gap:var(--space-md)}.td-info-grid{grid-template-columns:1fr;gap:0}}@media (max-width: 640px){.td-topbar{align-items:flex-start}.td-breadcrumb{max-width:100%;min-width:0;flex-wrap:wrap}.td-code{font-size:12px}.td-title{font-size:20px;line-height:1.3}.td-edit-row{align-items:stretch;flex-direction:column}.td-edit-input{max-width:none;font-size:18px}.td-section{padding:var(--space-md);border-radius:var(--radius-md)}.td-section-header,.td-info-item,.info-item{align-items:flex-start;gap:var(--space-sm)}.td-info-item{padding:9px 0}.td-info-item .badge.clickable{min-height:28px}.td-dropdown-wrap{justify-content:flex-end;max-width:58vw}.td-popover-menu{right:0;min-width:150px}.person-trigger,.person-editor{width:min(210px,58vw);max-width:min(210px,58vw)}.person-suggestions{position:fixed;left:var(--space-md);right:var(--space-md);top:auto;bottom:calc(76px + env(safe-area-inset-bottom));max-height:40vh}.comment-input-row{flex-direction:column}.mention-suggestions{position:fixed;left:var(--space-md);right:var(--space-md);top:auto;bottom:calc(76px + env(safe-area-inset-bottom));max-height:40vh}.comment-input-row .btn{width:100%}.activity-header{align-items:flex-start}.activity-time{width:100%;margin-left:0}.activity-reply-btn{margin-left:0}.reply-context{align-items:flex-start}.attachments-header{align-items:flex-start;flex-direction:column;gap:var(--space-sm)}.attachments-header .btn{width:100%}.attachment-item{align-items:flex-start;flex-direction:column;gap:2px}.watcher-item{flex-wrap:wrap}}.mydash{display:flex;flex-direction:column;gap:var(--space-xl)}.mydash-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-md)}.mydash-stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-xs)}.mydash-stat-num{font-size:28px;font-weight:700;color:var(--color-primary)}.mydash-stat-label{font-size:13px;color:var(--color-text-secondary)}.mydash-grid{display:grid;grid-template-columns:1fr 340px;gap:var(--space-xl);align-items:start}.mydash-main{display:flex;flex-direction:column;gap:var(--space-lg);min-width:0}.mydash-side{display:flex;flex-direction:column;gap:var(--space-lg)}.mydash-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.mydash-card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border-light);font-weight:600;font-size:14px}.mydash-card-body{padding:var(--space-md) var(--space-lg);overflow-x:hidden}.mydash-project-list{display:flex;flex-direction:column;gap:6px}.mydash-project-item{display:flex;align-items:center;gap:var(--space-md);padding:10px 12px;border-radius:var(--radius-sm);text-decoration:none;color:inherit;transition:background .15s}.mydash-project-item:hover{background:var(--color-bg)}.mydash-project-icon{width:36px;height:36px;border-radius:var(--radius-sm);background:var(--color-primary-bg);color:var(--color-primary);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;flex-shrink:0}.mydash-project-info{flex:1;min-width:0}.mydash-project-name{font-size:14px;font-weight:500}.mydash-project-meta{font-size:12px;color:var(--color-text-muted);margin-top:2px}.mydash-kanban{display:flex;gap:var(--space-sm);overflow-x:auto;padding-bottom:var(--space-sm);width:100%}.mydash-kanban-col{flex:0 0 auto;width:200px;height:360px;min-height:0;background:var(--color-bg);border-radius:var(--radius-md);padding:var(--space-sm);display:flex;flex-direction:column;overflow:hidden}.mydash-kanban-col-header{font-size:12px;font-weight:600;padding:4px 8px;border-radius:4px;margin-bottom:6px;display:flex;align-items:center;gap:6px;flex:0 0 auto;position:sticky;top:0;z-index:1}.mydash-kanban-col-body{flex:1 1 0;min-height:0;overflow-y:auto;padding-right:2px;overscroll-behavior:contain}.mydash-kanban-item{display:block;padding:8px 10px;border-radius:6px;background:var(--color-surface);border:1px solid var(--color-border);text-decoration:none;color:inherit;font-size:13px;transition:all .15s;margin-bottom:4px}.mydash-kanban-item:hover{border-color:var(--color-primary)}.mydash-kanban-item-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.mydash-kanban-item-meta{font-size:11px;color:var(--color-text-muted)}.mydash-timeline{-webkit-user-select:none;user-select:none}.mydash-timeline-labels{display:flex;border-bottom:1px solid var(--color-border);padding-bottom:var(--space-sm);margin-bottom:var(--space-sm)}.mydash-timeline-day-label{flex:1;text-align:center;font-size:12px;display:flex;flex-direction:column;align-items:center}.mydash-timeline-day-label span{color:var(--color-text-muted)}.mydash-timeline-day-label strong{font-size:15px}.mydash-timeline-grid{display:flex;height:1200px;width:100%;flex-shrink:0}.mydash-timeline-scroll{display:block;overflow-y:auto;overflow-x:auto;max-height:480px;overscroll-behavior:contain}.mydash-timeline-hours{width:40px;flex-shrink:0;position:relative;display:flex;flex-direction:column}.mydash-timeline-hour{flex:1;font-size:10px;color:var(--color-text-muted);display:flex;align-items:flex-start;justify-content:flex-end;padding-right:6px;margin-top:-6px}.mydash-timeline-col{flex:1;position:relative;border-left:1px solid var(--color-border-light);cursor:crosshair;touch-action:none}.mydash-timeline-cell{position:absolute;left:0;right:0;border-bottom:1px solid var(--color-border-light)}.mydash-timeline-cell:nth-child(odd){background:#00000003}.mydash-time-block{position:absolute;left:2px;right:2px;border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;min-height:16px;transition:opacity .15s}.mydash-time-block.saved{cursor:pointer;opacity:.85}.mydash-time-block.saved:hover{opacity:1}.mydash-time-block.dragging{background:#3b82f659;border:2px dashed #3B82F6}.mydash-time-block-label{font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 16px);color:#fff;padding:0 2px}.mydash-time-block-hours{font-size:10px;color:#fffc}.mydash-time-block-del{position:absolute;top:1px;right:2px;width:14px;height:14px;border-radius:50%;background:#0000004d;color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;cursor:pointer;opacity:0;transition:opacity .15s}.mydash-time-block.saved:hover .mydash-time-block-del{opacity:1}.time-entry-editor{margin-bottom:var(--space-md);padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border-light)}.time-entry-fields{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.time-entry-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:8px 10px;border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text-secondary);font-size:13px}.time-entry-summary span{font-weight:600;color:var(--color-primary)}.time-entry-project-list{display:flex;flex-direction:column;gap:6px}.time-entry-project-btn{justify-content:flex-start}.mydash-activity-list{display:flex;flex-direction:column}.mydash-activity-item{display:flex;gap:var(--space-sm);padding:8px 0;border-bottom:1px solid var(--color-border-light);font-size:13px}.mydash-activity-item:last-child{border-bottom:none}.mydash-activity-avatar{width:28px;height:28px;border-radius:50%;background:var(--color-primary-light);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.mydash-activity-content{flex:1;min-width:0}.mydash-activity-text{line-height:1.5}.mydash-activity-time{font-size:11px;color:var(--color-text-muted);margin-top:2px}.mydash-activity-comment{color:var(--color-text-secondary);font-size:12px;margin-top:2px}.mydash-icon-btn{width:28px;height:28px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-secondary);transition:all .15s}.mydash-icon-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.mydash-week-btn{width:24px;height:24px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:11px;color:var(--color-text-secondary);transition:all .15s;padding:0;line-height:1}.mydash-week-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-bg)}.mydash-kanban::-webkit-scrollbar,.mydash-kanban-col-body::-webkit-scrollbar,.mydash-timeline-scroll::-webkit-scrollbar{width:4px;height:4px}.mydash-kanban::-webkit-scrollbar-track,.mydash-kanban-col-body::-webkit-scrollbar-track,.mydash-timeline-scroll::-webkit-scrollbar-track{background:transparent}.mydash-kanban::-webkit-scrollbar-thumb,.mydash-kanban-col-body::-webkit-scrollbar-thumb,.mydash-timeline-scroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.mydash-kanban::-webkit-scrollbar-thumb:hover,.mydash-kanban-col-body::-webkit-scrollbar-thumb:hover,.mydash-timeline-scroll::-webkit-scrollbar-thumb:hover{background:#94a3b8}.mydash-kanban,.mydash-kanban-col-body,.mydash-timeline-scroll{scrollbar-width:thin;scrollbar-color:#CBD5E1 transparent}@media (max-width: 900px){.mydash-grid{grid-template-columns:1fr}.mydash-stats{grid-template-columns:repeat(2,1fr)}.mydash-timeline-grid{height:900px}.mydash-timeline-scroll{max-height:360px}}@media (max-width: 640px){.mydash{gap:var(--space-md)}.mydash-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.mydash-stat-card{padding:var(--space-md);border-radius:var(--radius-md)}.mydash-stat-num{font-size:22px}.mydash-grid,.mydash-main,.mydash-side{gap:var(--space-md)}.mydash-card{border-radius:var(--radius-md)}.mydash-card-header{align-items:flex-start;gap:var(--space-sm);padding:var(--space-md);flex-wrap:wrap}.mydash-card-body{padding:var(--space-md)}.mydash-kanban{margin:0 calc(var(--space-md) * -1);padding:0 var(--space-md) var(--space-sm);scroll-snap-type:x mandatory}.mydash-kanban-col{width:82vw;max-width:320px;height:340px;scroll-snap-align:start}.mydash-kanban-item-title{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.mydash-project-item{align-items:flex-start;padding:10px 0}.mydash-project-item>.badge{margin-left:auto}.mydash-timeline-labels{min-width:620px}.mydash-timeline-grid{min-width:620px;height:780px}.mydash-timeline-scroll{max-height:420px;margin:0 calc(var(--space-md) * -1);padding:0 var(--space-md)}.mydash-time-block-label{display:none}.time-entry-fields{grid-template-columns:1fr;gap:0}}.admin-page{display:flex;flex-direction:column;gap:var(--space-xl)}.admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-md)}.admin-stat-card{min-width:0;padding:var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:4px}.admin-stat-card strong{font-size:28px;line-height:1.2;color:var(--color-text)}.admin-stat-card small{color:var(--color-text-muted);font-size:12px;line-height:1.5}.admin-stat-label{color:var(--color-text-secondary);font-size:13px}.admin-alert{padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--color-border);font-size:13px}.admin-alert.success{color:var(--color-success);background:var(--color-success-bg);border-color:#10b9813d}.admin-alert.error{color:var(--color-danger);background:var(--color-danger-bg);border-color:#ef44443d}.admin-hidden-settings{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.admin-hidden-settings summary{min-height:48px;padding:var(--space-md) var(--space-lg);cursor:pointer;font-size:14px;font-weight:700}.admin-hidden-settings[open] summary{border-bottom:1px solid var(--color-border-light)}.admin-hidden-settings .reminder-settings{padding:var(--space-lg)}.admin-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--space-lg);align-items:start}.admin-panel{min-width:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.admin-panel-wide{grid-row:span 2}.admin-panel-header{min-height:52px;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border-light);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.admin-panel-header h2{font-size:15px;font-weight:700}.admin-panel-header span{color:var(--color-text-muted);font-size:12px;white-space:nowrap}.admin-table-wrap{overflow-x:auto}.admin-table{min-width:1060px}.admin-table th{letter-spacing:0;text-transform:none}.admin-user-cell{display:flex;align-items:center;gap:var(--space-sm);min-width:0}.admin-avatar{width:30px;height:30px;border-radius:50%;background:var(--color-primary-bg);color:var(--color-primary);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:0 0 auto}.admin-strong{color:var(--color-text);font-weight:600;line-height:1.4}.admin-muted{color:var(--color-text-muted);font-size:12px;line-height:1.4}.admin-status-badge{margin-left:6px}.admin-access-controls{display:flex;gap:6px;align-items:center}.admin-select{min-width:88px;height:30px;padding:0 8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:12px}.admin-select:disabled{color:var(--color-text-muted);background:var(--color-bg);cursor:not-allowed}.admin-project-list,.admin-activity-list,.admin-audit-list{display:flex;flex-direction:column}.admin-project-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-md);padding:12px var(--space-lg);border-bottom:1px solid var(--color-border-light);color:inherit}.admin-project-row:hover{background:var(--color-bg)}.admin-project-row:last-child{border-bottom:0}.admin-project-main{min-width:0}.admin-project-metrics{display:flex;flex-direction:column;align-items:flex-end;gap:4px;color:var(--color-text-secondary);font-size:12px;white-space:nowrap}.admin-activity-item{display:flex;gap:var(--space-sm);padding:12px var(--space-lg);border-bottom:1px solid var(--color-border-light);font-size:13px}.admin-activity-item:last-child{border-bottom:0}.admin-activity-body{min-width:0;flex:1}.admin-activity-body a{font-weight:600}.admin-activity-content{margin-top:4px;padding:6px 8px;border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text-secondary);line-height:1.5;word-break:break-word}.admin-activity-body time{display:block;margin-top:4px;color:var(--color-text-muted);font-size:12px}.admin-audit-item{display:flex;flex-direction:column;gap:4px;padding:12px var(--space-lg);border-bottom:1px solid var(--color-border-light);font-size:13px}.admin-audit-item:last-child{border-bottom:0}.admin-audit-main{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.admin-audit-change{display:flex;align-items:center;gap:6px;color:var(--color-text-secondary);font-size:12px}.admin-audit-item time{color:var(--color-text-muted);font-size:12px}@media (max-width: 1120px){.admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-grid{grid-template-columns:1fr}.admin-panel-wide{grid-row:auto}}@media (max-width: 640px){.admin-page{gap:var(--space-md)}.admin-stats{grid-template-columns:1fr;gap:var(--space-sm)}.admin-stat-card{padding:var(--space-md)}.admin-stat-card strong{font-size:22px}.admin-panel-header,.admin-project-row,.admin-activity-item,.admin-audit-item{padding-left:var(--space-md);padding-right:var(--space-md)}.admin-project-row{grid-template-columns:1fr;gap:var(--space-sm)}.admin-project-metrics{align-items:flex-start;flex-direction:row;flex-wrap:wrap}}:root{--color-primary: #2563EB;--color-primary-light: #3B82F6;--color-primary-dark: #1D4ED8;--color-primary-bg: #EFF6FF;--color-bg: #F8FAFC;--color-surface: #FFFFFF;--color-text: #1E293B;--color-text-secondary: #64748B;--color-text-muted: #94A3B8;--color-border: #E2E8F0;--color-border-light: #F1F5F9;--color-success: #10B981;--color-success-bg: #ECFDF5;--color-warning: #F59E0B;--color-warning-bg: #FFFBEB;--color-danger: #EF4444;--color-danger-bg: #FEF2F2;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 6px -1px rgba(0,0,0,.07), 0 2px 4px -2px rgba(0,0,0,.05);--shadow-lg: 0 10px 15px -3px rgba(0,0,0,.08);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.6;color:var(--color-text);background:var(--color-bg);min-height:100%;overflow-x:hidden}#root{min-height:100%}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-dark)}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}@media (max-width: 640px){:root{--space-md: 12px;--space-lg: 16px;--space-xl: 20px;--space-2xl: 28px}html{font-size:15px}body{line-height:1.5}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:1px solid transparent;border-radius:var(--radius-sm);font-size:14px;font-weight:500;transition:all .15s ease;line-height:1.4;min-height:34px}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-outline{background:var(--color-surface);color:var(--color-primary);border-color:var(--color-border)}.btn-outline:hover{background:var(--color-primary-bg);border-color:var(--color-primary)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:#dc2626}.btn-sm{padding:4px 10px;font-size:13px}.btn-lg{padding:10px 24px;font-size:16px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-header{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border-light);font-weight:600;font-size:15px;display:flex;align-items:center;justify-content:space-between}.card-body{padding:var(--space-lg)}.input{width:100%;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:14px;color:var(--color-text);background:var(--color-surface);transition:border-color .15s;outline:none}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg)}.input::placeholder{color:var(--color-text-muted)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:500}.badge-blue{background:var(--color-primary-bg);color:var(--color-primary)}.badge-green{background:var(--color-success-bg);color:var(--color-success)}.badge-yellow{background:var(--color-warning-bg);color:var(--color-warning)}.badge-red{background:var(--color-danger-bg);color:var(--color-danger)}.badge-gray{background:var(--color-border-light);color:var(--color-text-secondary)}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--color-border-light);font-size:14px}.table th{font-weight:600;color:var(--color-text-secondary);background:var(--color-bg);font-size:13px;text-transform:uppercase;letter-spacing:.5px}.table tr:hover td{background:var(--color-primary-bg)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.text-sm{font-size:13px}.text-muted{color:var(--color-text-secondary)}.font-semibold{font-weight:600}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mb-md{margin-bottom:var(--space-md)}.p-md{padding:var(--space-md)}.w-full{width:100%}@media (max-width: 640px){.btn{min-height:38px;padding:8px 12px;font-size:13px;white-space:nowrap}.btn-sm{min-height:32px;padding:5px 9px;font-size:12px}.input{min-height:38px;padding:8px 10px;font-size:14px}.card-header,.card-body{padding:var(--space-md)}.table{min-width:680px}.table th,.table td{padding:9px 10px;font-size:13px}}
