.sprint-shell{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr);background:var(--color-bg)}.sprint-sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:22px 14px 14px;background:#172033;color:#fff}.sprint-brand{display:flex;flex-direction:column;padding:0 10px 18px}.sprint-brand strong{font-size:20px;letter-spacing:-.02em}.sprint-brand span,.sprint-user span{color:#aebbd0;font-size:12px}.sprint-project{margin:0 6px 16px;padding:10px 12px;border:1px solid #344057;border-radius:8px;color:#dce4f0;font-size:13px}.sprint-nav{display:flex;flex:1;flex-direction:column;gap:3px}.sprint-nav-item{display:flex;align-items:center;gap:10px;min-height:42px;padding:9px 11px;border-radius:7px;color:#c7d1e0;text-decoration:none;font-size:14px}.sprint-nav-item:hover{color:#fff;background:#222e45}.sprint-nav-item.active{color:#fff;background:#2563eb}.sprint-user{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 8px 2px;border-top:1px solid #344057}.sprint-user div{min-width:0;display:flex;flex-direction:column}.sprint-user strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.sprint-user button{border:0;padding:7px;border-radius:6px;background:transparent;color:#c7d1e0;cursor:pointer}.sprint-user button:hover{color:#fff;background:#29364f}.sprint-main{min-width:0;overflow:auto}.page-container{width:100%;max-width:1500px;margin:0 auto;padding:28px 32px}.page-header{min-height:72px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--color-border)}.page-header h1{margin:0;font-size:25px;line-height:1.25;color:var(--color-text)}.page-header p{margin:6px 0 0;color:var(--color-text-muted)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-card)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:8px 15px;border:1px solid transparent;border-radius:7px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{color:#fff;background:var(--color-primary);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-default{color:var(--color-text);background:var(--color-surface);border-color:var(--color-border)}.btn-default:hover:not(:disabled){background:var(--color-surface-2);border-color:#cbd5e1}.btn-sm{min-height:32px;padding:5px 10px;font-size:12px}.form-label,label{display:block;margin:10px 0 5px;color:var(--color-text);font-size:13px;font-weight:600}.form-input{display:block;width:100%;min-height:40px;padding:8px 11px;border:1px solid var(--input-border);border-radius:7px;background:var(--input-bg);color:var(--color-text);font:inherit;font-size:14px}textarea.form-input{resize:vertical}.form-input:focus{outline:2px solid color-mix(in srgb,var(--color-primary) 25%,transparent);border-color:var(--input-focus)}.alert{margin:0 0 16px;padding:11px 14px;border-radius:7px;font-size:13px}.alert-info{color:#1e4f7a;background:#ebf5fb;border:1px solid #b8daf0}.alert-error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:24px;background:#0f172a94}.modal-content{width:min(100%,920px);max-height:calc(100vh - 48px);overflow:auto;border-radius:10px;background:var(--color-surface);box-shadow:0 20px 60px #00000040}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid var(--color-border)}.modal-body{padding:22px}.modal-close{border:0;background:transparent;color:var(--color-text-muted);font-size:26px;cursor:pointer}@media (max-width: 760px){.sprint-shell{grid-template-columns:1fr}.sprint-sidebar{position:static;height:auto}.sprint-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}.auth-page{min-height:100vh;display:flex;background:var(--color-bg, #F0F2F5)}.auth-left{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1a1a1a;padding:48px;min-width:0}.auth-brand{display:flex;flex-direction:column;align-items:center;gap:24px;text-align:center}.auth-brand-icon{width:64px;height:64px;border-radius:16px;background:var(--color-primary, #4A9FD8);display:flex;align-items:center;justify-content:center;color:#fff}.auth-brand-title{font-size:32px;font-weight:700;color:#fff;letter-spacing:-.02em}.auth-brand-subtitle{font-size:15px;color:#9ca3af;line-height:1.5;max-width:280px}.auth-right{width:480px;flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:48px;background:#fff;border-left:1px solid var(--color-border, #E8EAED)}.auth-form-wrap{width:100%;max-width:360px}.auth-form-title{font-size:22px;font-weight:700;color:var(--color-text, #111827);margin-bottom:8px}.auth-form-subtitle{font-size:14px;color:var(--color-text-muted, #6B7280);margin-bottom:32px}.auth-form-wrap .form-group{margin-bottom:16px}.auth-form-wrap .form-label{font-size:13px;font-weight:500;color:var(--color-text, #111827);text-transform:none;letter-spacing:0;margin-bottom:6px}.auth-form-wrap .form-input{height:42px;font-size:14px;border:1px solid var(--color-border, #E8EAED);border-radius:8px;padding:0 12px;transition:border-color .15s,box-shadow .15s}.auth-form-wrap .form-input:focus{border-color:var(--color-primary, #4A9FD8);box-shadow:0 0 0 3px #4a9fd826}.auth-btn{width:100%;height:44px;margin-top:8px;font-size:15px;font-weight:600;border-radius:8px}.auth-divider{display:flex;align-items:center;text-align:center;margin:16px 0 12px;color:var(--color-text-muted, #9CA3AF);font-size:12px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--color-border, #E5E7EB)}.auth-divider span{padding:0 12px}.auth-sso-btn{background:#fff;color:var(--color-text, #1A1A1A);border:1px solid var(--color-border, #D1D5DB);margin-top:0}.auth-sso-btn:hover{border-color:var(--color-primary, #4A9FD8);color:var(--color-primary, #4A9FD8)}.auth-link{text-align:center;margin-top:20px;font-size:14px;color:var(--color-text-muted, #6B7280)}.auth-link a{color:var(--color-primary, #4A9FD8);font-weight:500}.auth-link a:hover{text-decoration:underline}@media (max-width: 768px){.auth-page{flex-direction:column}.auth-left{padding:32px 24px;min-height:200px}.auth-brand-title{font-size:24px}.auth-brand-subtitle{display:none}.auth-right{width:100%;border-left:none;border-top:1px solid var(--color-border);padding:32px 24px}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#091e428a;z-index:200;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow-y:auto}.modal-content{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);min-width:500px;height:85vh;max-height:85vh;overflow-y:auto;position:relative}.task-detail-page-wrap{width:100%;height:100%;box-sizing:border-box;overflow-y:auto;background:var(--color-surface)}.task-detail-page-wrap .modal-content{box-shadow:none;border:none;border-radius:0;min-width:0;width:100%;max-width:none;height:auto;max-height:none}.modal-resize-handle{position:absolute;top:0;bottom:0;width:6px;cursor:col-resize;z-index:10}.modal-resize-handle:hover,.modal-resize-handle:active{background:#4a9fd826}.modal-resize-left{left:0;border-radius:var(--radius-lg) 0 0 var(--radius-lg)}.modal-resize-right{right:0;border-radius:0 var(--radius-lg) var(--radius-lg) 0}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;padding:24px 24px 16px;border-bottom:1px solid var(--color-border)}.modal-content.file-drag-over{outline:3px dashed var(--color-primary);outline-offset:-3px}.modal-id{font-size:13px;display:flex;align-items:center;gap:6px;color:var(--color-text-subtle)}.modal-title{font-size:20px;font-weight:600;margin-top:4px}.modal-title.editable{cursor:pointer;border-radius:var(--radius);padding:2px 4px;margin:2px -4px;transition:background .15s}.modal-title.editable:hover{background:var(--color-bg)}.modal-title-input{font-size:20px;font-weight:600;padding:4px 8px;width:100%;margin-top:4px}.modal-close{background:none;border:none;font-size:28px;color:var(--color-text-subtle);cursor:pointer;line-height:1;padding:0 4px}.modal-close:hover{color:var(--color-text)}.modal-delete-btn{display:flex;align-items:center;justify-content:center;background:none;border:1px solid transparent;border-radius:6px;padding:5px 7px;color:var(--color-text-subtle);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.modal-delete-btn:hover{background:#fef2f2;color:#ef4444;border-color:#fecaca}.modal-body{padding:24px}.modal-section{margin-bottom:24px}.modal-section h3{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-subtle);margin-bottom:0}.modal-section-header{display:flex;align-items:center;gap:6px;margin-bottom:12px}.modal-section-edit-btn{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--color-text-subtle);padding:2px 4px;border-radius:4px;opacity:0;transition:opacity .15s,background .15s}.modal-section:hover .modal-section-edit-btn{opacity:1}.modal-section-edit-btn:hover{background:var(--color-column-bg);color:var(--color-accent)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.detail-item{display:flex;flex-direction:column;gap:4px}.detail-item--dates{grid-column:1 / -1;flex-direction:row;gap:32px}.detail-dates-cell{display:flex;flex-direction:column;gap:4px}.detail-label{font-size:12px;color:var(--color-text-subtle);font-weight:500}.detail-value{font-size:14px;color:var(--color-text)}.detail-work-time{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--color-primary);background:var(--color-primary-light);padding:2px 8px;border-radius:var(--radius);font-size:13px}.work-btn-modal{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-subtle);cursor:pointer;transition:all .15s;padding:0;flex-shrink:0}.work-btn-modal:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.work-btn-modal--active{border-color:#00875a;color:#00875a;background:#00875a14}.work-btn-modal--active:hover{border-color:#ffab00;color:#ffab00;background:#ffab0014}.work-btn-modal:disabled{opacity:.5;cursor:not-allowed}.description-text{font-size:14px;color:var(--color-text);white-space:pre-wrap;line-height:1.6;background:var(--color-bg);padding:14px 16px;border-radius:var(--radius);min-height:140px;max-height:360px;overflow-y:auto}.modal-add-btn{display:inline-flex;align-items:center;gap:6px}.modal-body .rte-content .tiptap{min-height:180px}.modal-private-btn--on{color:#8b5cf6!important;background:#f5f3ff}.modal-private-btn--on:hover{background:#ede9fe}.modal-star-btn{color:#d1d5db}.modal-star-btn:hover{color:#f59e0b!important;background:#fffbeb!important;border-color:#fde68a!important}.modal-star-btn--on{color:#f59e0b!important;background:#fffbeb;border-color:#fde68a}.modal-star-btn--on:hover{background:#fef3c7!important}.modal-progress-bar{display:flex;align-items:center;gap:10px;padding:6px 24px}.modal-progress-slider{flex:1;height:6px;cursor:pointer;accent-color:var(--color-primary)}.modal-progress-label{font-size:12px;font-weight:600;color:var(--color-text-subtle);min-width:32px;text-align:right}.task-locked-banner{display:flex;align-items:center;gap:7px;padding:8px 24px;background:#fff8ec;border-bottom:1px solid #F6D280;font-size:13px;color:#92400e}.modal-tabs{display:flex;gap:2px;padding:0 24px;border-bottom:1px solid var(--color-border)}.modal-tab{padding:10px 16px;border:none;background:none;font-size:14px;font-weight:500;color:var(--color-text-subtle);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.modal-tab:hover{color:var(--color-text)}.styled-select-wrap{position:relative}.styled-select{width:100%;padding:8px 32px 8px 12px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);font-size:14px;font-family:inherit;color:var(--color-text);cursor:pointer;outline:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236B778C' fill='none' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;transition:border-color .15s,box-shadow .15s}.styled-select:hover{border-color:var(--color-text-subtle)}.styled-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.estimate-locked-hint{font-size:11px;font-weight:400;color:var(--color-text-subtle);text-transform:none;letter-spacing:0}.estimate-row{display:flex;gap:16px;flex-wrap:wrap}.estimate-field{flex:1;min-width:180px}.comments-list{margin-bottom:16px}.comment-item{padding:10px 0;border-bottom:1px solid var(--color-border)}.comment-item--private{background:#faf5ff;border-radius:6px;padding:8px 10px;border-bottom:1px solid #EDE9FE}.comment-private-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:8px;background:#ede9fe;color:#8b5cf6;font-size:10px;font-weight:600;margin-left:6px}.comment-privacy-btn{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:8px;border:1px solid var(--color-border);background:transparent;color:#9ca3af;font-size:11px;font-weight:500;cursor:pointer;transition:all .15s}.comment-privacy-btn:hover{border-color:#8b5cf6;color:#8b5cf6}.comment-privacy-btn.active{background:#ede9fe;border-color:#8b5cf6;color:#8b5cf6}.comment-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;font-size:13px}.comment-date{font-size:12px;color:var(--color-text-subtle)}.comment-edit-btn{background:none;border:none;cursor:pointer;padding:2px 4px;color:var(--color-text-subtle);opacity:0;transition:opacity .15s;line-height:1}.comment-item:hover .comment-edit-btn{opacity:1}.comment-edit-btn:hover{color:var(--color-primary)}.comment-edit-area{margin-top:4px}.comment-edit-textarea{width:100%;box-sizing:border-box;border:1px solid var(--color-border);border-radius:var(--radius);padding:8px 10px;font-size:13px;font-family:inherit;line-height:1.5;resize:vertical;outline:none}.comment-edit-textarea:focus{border-color:var(--color-primary)}.comment-edit-actions{display:flex;gap:6px;margin-top:6px}.comment-text{font-size:14px;line-height:1.5;white-space:pre-wrap}.comments-empty{color:var(--color-text-subtle);text-align:center;padding:24px}.mention{color:var(--color-primary);font-weight:600}.comment-form{display:flex;flex-direction:column;gap:8px}.comment-input{resize:vertical;min-height:60px}.status-timeline{margin-bottom:24px;padding:16px;background:var(--color-bg);border-radius:var(--radius-lg)}.tl-card{background:#fff;border:1px solid #E8EAED;border-radius:10px;padding:16px;margin-bottom:16px;display:flex;flex-direction:column;gap:12px}.tl-header{display:flex;align-items:center;gap:8px}.tl-title{font-size:13px;font-weight:700;color:#1a1a1a}.tl-spacer{flex:1}.tl-dates{font-size:11px;color:#9ca3af}.tl-bar{display:flex;height:28px;border-radius:6px;overflow:hidden;gap:0}.tl-seg{height:100%;display:flex;align-items:center;justify-content:center;min-width:20px;cursor:default;transition:opacity .15s;overflow:hidden}.tl-seg:hover{opacity:.85}.tl-seg-label{font-size:9px;font-weight:600;color:#fff;white-space:nowrap;padding:0 4px}.tl-legend{display:flex;gap:16px;flex-wrap:wrap}.tl-legend-item{display:flex;align-items:center;gap:4px;font-size:10px;color:#666}.tl-legend-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0}.status-time-table{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.status-time-row{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#f9fafb;border-radius:6px;font-size:12px}.status-time-label{flex:1;color:#374151;font-weight:500}.status-time-biz{color:#111827;font-weight:600;font-size:13px}.status-time-biz small{font-weight:400;color:#6b7280;font-size:10px}.status-time-total{color:#9ca3af;font-size:11px}.hst-events-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#1a1a1a;margin-bottom:8px}.hst-list{background:#fff;border:1px solid #E8EAED;border-radius:10px;overflow:hidden}.hst-item{display:flex;gap:12px;padding:12px 16px;align-items:flex-start;border-bottom:1px solid #F3F4F6}.hst-item:last-child{border-bottom:none}.hst-icon{width:28px;height:28px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.hst-icon-inner{display:flex;align-items:center;justify-content:center}.hst-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.hst-top{display:flex;align-items:center;gap:8px}.hst-badge{font-size:10px;font-weight:600;padding:2px 7px;border-radius:4px;white-space:nowrap}.hst-user{font-size:12px;color:#1a1a1a}.hst-spacer{flex:1}.hst-date{font-size:11px;color:#9ca3af;white-space:nowrap}.hst-status-change{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:500}.hst-estimates{display:flex;gap:12px;font-size:11px;color:#888;flex-wrap:wrap}.hst-estimates b{color:#1a1a1a}.hst-detail-text{font-size:11px;color:#666}.copy-link-btn{background:none;border:none;color:var(--color-text-subtle);cursor:pointer;padding:2px;border-radius:var(--radius);transition:color .15s}.copy-link-btn:hover{color:var(--color-primary)}.global-toast{position:fixed;bottom:24px;right:24px;z-index:400;padding:10px 20px;border-radius:var(--radius-lg);font-size:14px;font-weight:500;box-shadow:var(--shadow-overlay);animation:global-toast-in .25s ease-out}.global-toast-success{background:#e3fcef;border-left:4px solid var(--color-success);color:var(--color-success)}@keyframes global-toast-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.att-header{display:flex;align-items:center;gap:8px}.att-header h3{flex:1}.att-upload-btn{padding:4px 12px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#4a9fd8;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s}.att-upload-btn:hover{background:#ebf5fb}.att-upload-btn:disabled{opacity:.5;cursor:not-allowed}.att-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}.att-item{display:flex;align-items:flex-start;gap:8px;position:relative}.att-image-preview{display:block;max-width:280px;border-radius:8px;overflow:hidden;border:1px solid #E8EAED}.att-image-preview img{display:block;max-width:100%;max-height:200px;object-fit:cover}.att-image-preview:hover{border-color:#4a9fd8}.att-file-link{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#f7f8fa;border:1px solid #E8EAED;border-radius:8px;text-decoration:none;color:#111827;transition:background .15s;min-width:200px}.att-file-link:hover{background:#ebf5fb;border-color:#b8d9ef}.att-file-ext{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;background:#ebf5fb;color:#4a9fd8;font-size:10px;font-weight:700;flex-shrink:0}.att-file-info{display:flex;flex-direction:column;gap:1px;min-width:0}.att-file-name{font-size:13px;font-weight:500;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att-file-size{font-size:11px;color:#9ca3af}.att-delete-btn{width:24px;height:24px;border:none;border-radius:6px;background:none;color:#d1d5db;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:all .1s;flex-shrink:0;margin-top:4px}.att-item:hover .att-delete-btn{opacity:1}.att-delete-btn:hover{background:#fef2f2;color:#ef4444}.modal-section-subtree{min-height:300px;overflow:visible}.subtask-parent-block{padding:12px;background:var(--color-bg);border-radius:var(--radius);margin-bottom:12px}.subtask-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:14px;font-weight:600}.subtask-action-row{margin-bottom:12px}.subtask-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--color-border);font-size:14px}.subtask-item:last-child{border-bottom:none}.subtask-id{font-size:12px;color:var(--color-text-subtle);flex-shrink:0}.subtask-subject{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subtask-assignee{font-size:12px;color:var(--color-primary);flex-shrink:0}.task-search-popup{margin-top:12px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-overlay);overflow:hidden}.task-search-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-bg);font-size:13px;font-weight:600;border-bottom:1px solid var(--color-border)}.task-search-popup .form-input{border:none;border-bottom:1px solid var(--color-border);border-radius:0;padding:10px 12px}.task-search-list{max-height:250px;overflow-y:auto}.task-search-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:14px;transition:background .1s}.task-search-item:hover,.task-search-item.active{background:var(--color-primary-light)}.task-search-empty{padding:16px;text-align:center;color:var(--color-text-subtle);font-size:13px}.billing-section{background:#fffbf0;border:1px solid #FDE68A;border-radius:var(--radius);padding:14px 16px}.billing-header{display:flex;align-items:center;gap:8px;margin-bottom:0}.billing-body{margin-top:12px;display:flex;flex-direction:column;gap:10px}.billing-row{display:flex;align-items:center;gap:12px}.billing-row .detail-label{min-width:140px;flex-shrink:0}.billing-hours-input{width:90px;padding:5px 8px;font-size:13px}.billing-estimate{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-top:1px dashed var(--color-border);border-bottom:1px dashed var(--color-border)}.billing-estimate-hint{font-size:11px;color:var(--color-text-subtle);padding-left:152px}.billing-status-pills{display:flex;gap:6px;flex-wrap:wrap}.detail-item--assignees{grid-column:1 / -1}.detail-item--assignees .assignees-wrap{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.assignee-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px 2px 10px;background:var(--color-primary-light, rgba(99,102,241,.12));color:var(--color-primary, #6366f1);border-radius:12px;font-size:13px;font-weight:500}.assignee-chip-remove{background:none;border:none;color:inherit;cursor:pointer;font-size:15px;line-height:1;padding:0 2px;opacity:.6;margin-left:2px}.assignee-chip-remove:hover{opacity:1}.assignee-chip--virtual{background:var(--color-bg);color:var(--color-text-subtle);border:1px dashed var(--color-border)}.detail-value--muted{color:var(--color-text-subtle);font-size:14px}.assignees-picker{display:flex;flex-direction:column;gap:6px;outline:none}.assignee-add-btn{width:26px;height:26px;border-radius:50%;border:1.5px dashed var(--color-border);background:none;cursor:pointer;font-size:18px;line-height:1;color:var(--color-text-subtle);display:flex;align-items:center;justify-content:center}.assignee-add-btn:hover{border-color:var(--color-primary, #6366f1);color:var(--color-primary, #6366f1)}.assignee-dropdown{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 2px 8px #0f172a0f;min-width:180px;max-height:200px;overflow-y:auto;padding:4px}.assignee-dropdown--inline{width:100%}.assignee-drop-item{padding:8px 12px;font-size:13px;cursor:pointer;color:var(--color-text)}.assignee-drop-item:hover{background:var(--color-hover)}.assignee-drop-group-label{padding:6px 12px 2px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-subtle)}.billing-pill{padding:4px 12px;border-radius:12px;border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-subtle);font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .15s}.billing-pill:not(:disabled):hover{border-color:#d97706;color:#d97706}.billing-pill:disabled{cursor:default;opacity:.8}.billing-paid-date{font-size:12px;color:#27ae60;font-weight:500;padding-left:2px}.billing-toggle{position:relative;display:inline-flex;cursor:pointer;margin-left:auto}.billing-toggle input{opacity:0;width:0;height:0;position:absolute}.billing-toggle-slider{width:34px;height:18px;background:#d1d5db;border-radius:9px;transition:background .2s;position:relative}.billing-toggle-slider:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;background:#fff;border-radius:50%;transition:transform .2s}.billing-toggle input:checked+.billing-toggle-slider{background:#d97706}.billing-toggle input:checked+.billing-toggle-slider:after{transform:translate(16px)}.task-dup-popover{position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #E8EAED;border-radius:6px;box-shadow:0 8px 24px #0000001f;padding:12px;min-width:320px;z-index:100}.task-dup-popover-title{font-size:12px;color:#6b778c;margin-bottom:8px;text-transform:uppercase;letter-spacing:.05em}.task-dup-popover .form-input,.task-dup-popover .styled-select{width:100%;margin-bottom:12px}.task-dup-empty{font-size:13px;color:#9ca3af;padding:4px 0}.task-dup-error{color:#ef4444;font-size:12px;margin-bottom:8px}.task-dup-actions{display:flex;gap:8px;justify-content:flex-end}.timelog-total{font-size:13px;color:var(--color-text-subtle);margin-bottom:14px}.timelog-total strong{color:var(--color-text);font-size:15px}.timelog-form{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:16px;padding:10px 12px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius, 8px)}.timelog-date{height:30px;padding:0 8px;border:1px solid var(--color-border);border-radius:var(--radius, 6px);background:var(--color-surface);color:var(--color-text);font-size:12px;font-family:inherit}.timelog-user{height:30px;padding:0 24px 0 8px;border:1px solid var(--color-border);border-radius:var(--radius, 6px);background:var(--color-surface);color:var(--color-text);font-size:12px;font-family:inherit;min-width:0;flex:1 1 220px;max-width:280px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.timelog-num{width:54px;height:30px;padding:0 6px;border:1px solid var(--color-border);border-radius:var(--radius, 6px);background:var(--color-surface);color:var(--color-text);font-size:13px;font-family:inherit;text-align:center}.timelog-sep{font-size:15px;color:var(--color-text-subtle);flex-shrink:0}.timelog-note{flex:1;min-width:100px;height:30px;padding:0 8px;border:1px solid var(--color-border);border-radius:var(--radius, 6px);background:var(--color-surface);color:var(--color-text);font-size:13px;font-family:inherit}.timelog-add-btn{height:30px;padding:0 12px;border:none;border-radius:var(--radius, 6px);background:var(--color-primary);color:#fff;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;font-family:inherit;transition:opacity .15s}.timelog-add-btn:disabled{opacity:.45;cursor:default}.timelog-add-btn:not(:disabled):hover{opacity:.88}.timelog-list{display:flex;flex-direction:column;gap:2px}.timelog-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:6px;font-size:13px;background:var(--color-surface);border:1px solid var(--color-border)}.timelog-row:hover{background:var(--color-bg)}.timelog-row-date{color:var(--color-text-subtle);font-size:12px;flex-shrink:0;min-width:80px}.timelog-row-user{color:var(--color-text-subtle);font-size:12px;flex-shrink:0;min-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timelog-row-time{font-weight:600;color:var(--color-text);flex-shrink:0;min-width:60px}.timelog-row-note{flex:1;color:var(--color-text-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.timelog-row-note:hover{color:var(--color-text)}.timelog-row-note--expanded{white-space:normal;word-break:break-word}.timelog-del-btn{margin-left:auto;flex-shrink:0;width:22px;height:22px;border:none;background:none;color:var(--color-text-subtle);cursor:pointer;font-size:16px;line-height:1;border-radius:4px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,color .15s}.timelog-row:hover .timelog-del-btn{opacity:1}.timelog-del-btn:hover{color:var(--color-danger)}.dep-row{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;margin-bottom:4px;font-size:13px}.dep-row--readonly{background:var(--color-surface)}.dep-row-id{font-family:monospace;font-size:11px;color:var(--color-primary);flex-shrink:0;font-weight:600}.dep-row-subject{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}.dep-row-status{font-size:11px;color:var(--color-text-subtle);background:var(--color-surface);border:1px solid var(--color-border);padding:1px 6px;border-radius:8px;flex-shrink:0}.dep-row-remove{background:none;border:none;cursor:pointer;color:var(--color-text-subtle);font-size:16px;padding:0 4px;line-height:1}.dep-row-remove:hover{color:var(--color-danger)}.dep-search-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:2px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 12px #0000001f;z-index:50;max-height:240px;overflow-y:auto}.dep-search-item{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--color-border)}.dep-search-item:last-child{border-bottom:none}.dep-search-item:hover{background:var(--color-bg)}.task-card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:10px 12px;cursor:default;transition:box-shadow .15s,transform .1s;-webkit-user-select:none;user-select:none}.task-card:hover{box-shadow:var(--shadow-overlay);transform:translateY(-1px)}.task-card:active{opacity:.8}.task-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.task-card-id{font-size:12px;color:var(--color-text-subtle)}.task-card-days{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;color:#9ca3af;background:#f3f4f6;padding:2px 6px;border-radius:4px}.task-card-days.stale{color:#ef4444;background:#fef2f2}.task-card-meta{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:4px}.task-type-badge{font-size:10px;font-weight:600;padding:2px 7px;border-radius:8px}.task-card-assignee{font-size:12px;color:var(--color-primary);margin-bottom:4px}.task-card-subject{font-size:14px;font-weight:500;margin-bottom:8px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.task-card-indicators{display:flex;gap:6px;align-items:center;margin-bottom:4px}.task-indicator{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:500;color:#9ca3af;padding:1px 6px;border-radius:4px;background:#f3f4f6}.task-indicator.active{color:#4a9fd8;background:#ebf5fb;animation:indicator-pulse 2s ease-in-out infinite}.task-indicator.mention{color:#f59e0b;background:#fef3c7;font-weight:700;animation:indicator-pulse 2s ease-in-out infinite}@keyframes indicator-pulse{0%,to{opacity:1}50%{opacity:.6}}.task-card-estimates{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}.estimate-badge{font-size:11px;font-weight:600;padding:2px 6px;border-radius:3px}.estimate-badge.filled{background:var(--color-primary-light);color:var(--color-primary)}.estimate-badge.empty{background:var(--color-estimate-empty-bg, #DFE1E6);color:var(--color-estimate-empty-text, var(--color-text-subtle))}.task-card-progress{display:flex;align-items:center;gap:6px;margin-top:6px}.task-progress-track{flex:1;height:4px;background:var(--color-border);border-radius:2px;overflow:hidden}.task-progress-fill{height:100%;border-radius:2px;transition:width .3s}.task-progress-label{font-size:10px;font-weight:600;color:var(--color-text-subtle);min-width:28px;text-align:right}.task-card-subtasks{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:12px;color:var(--color-text-subtle)}.subtask-icon{font-size:10px}.subtask-dots{display:flex;gap:3px}.subtask-dot{width:8px;height:8px;border-radius:50%;background:var(--color-border)}.subtask-dot.subtask-queue{background:#0065ff}.subtask-dot.subtask-in_progress{background:#6554c0}.subtask-dot.subtask-done{background:#00875a}.subtask-dot.subtask-unestimated{background:#ff991f}.task-card-parent{font-size:11px;color:var(--color-primary);margin-top:4px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-card-parent:hover{text-decoration:underline}.task-score{font-size:11px;font-weight:700;padding:2px 6px;border-radius:3px;background:#e3fcef;color:var(--color-success);margin-left:auto}.task-card-flags{display:flex;align-items:center;gap:4px}.task-flag{font-size:13px;cursor:pointer;opacity:.3;transition:opacity .15s}.task-flag:hover{opacity:.8}.task-flag.active,.task-flag-pin{opacity:1}.task-flag-fire.active{animation:fire-pulse 1.5s ease-in-out infinite}@keyframes fire-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.task-card--important{border-left:3px solid #ff6b35}.task-card--pinned{background:var(--color-pinned-bg, rgba(0, 101, 255, .04));border:1px solid var(--color-primary-light)}.task-card-menu{position:absolute;top:8px;right:8px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-overlay);z-index:50;min-width:150px;padding:4px 0}.task-card-menu-item{padding:8px 12px;font-size:13px;cursor:pointer;transition:background .1s}.task-card-menu-item:hover{background:var(--color-primary-light)}.task-flag-star{font-size:14px;color:#c1c7d0;cursor:pointer;opacity:.5;transition:opacity .15s,color .15s,transform .15s}.task-flag-star:hover{opacity:1;color:#ffab00;transform:scale(1.2)}.task-flag-star.active{opacity:1;color:#ffab00;text-shadow:0 0 4px rgba(255,171,0,.4)}.task-card--selected{outline:2px solid var(--color-primary);background:var(--color-primary-light)}.task-card-checkbox{position:absolute;top:6px;left:6px;z-index:10}.task-card-checkbox input[type=checkbox]{width:16px;height:16px;cursor:pointer}.task-card{position:relative}.task-card--paused{border-left:3px solid #FFAB00;animation:paused-pulse 2.5s ease-in-out infinite}@keyframes paused-pulse{0%,to{background:var(--color-surface)}50%{background:#ffab0012}}.task-card--working{border-left:3px solid #00875A}.task-card-work{display:flex;align-items:center;gap:6px;margin:4px 0}.work-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-subtle);cursor:pointer;transition:all .15s;padding:0;flex-shrink:0}.work-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.work-btn--active{border-color:#00875a;color:#00875a;background:#00875a14}.work-btn--active:hover{border-color:#ffab00;color:#ffab00;background:#ffab0014}.work-btn:disabled{opacity:.5;cursor:not-allowed}.work-timer{font-size:11px;font-family:monospace;color:var(--color-text-subtle);line-height:1}.billing-badge{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;padding:2px 6px;border-radius:10px;margin:4px 0 0}.task-card-deadline{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:600;padding:2px 5px;border-radius:4px;color:#9ca3af;background:#f3f4f6}.task-card-deadline.deadline--warning{color:#d97706;background:#fef3c7}.task-card-deadline.deadline--urgent{color:#c2410c;background:#fee2e2;animation:deadline-pulse 1.5s ease-in-out infinite}.task-card-deadline.deadline--overdue{color:#991b1b;background:#fee2e2;animation:deadline-pulse 1.5s ease-in-out infinite}.task-card-star{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:1px 2px;cursor:pointer;color:#d1d5db;border-radius:3px;transition:color .15s;line-height:1}.task-card-star:hover,.task-card-star--on{color:#f59e0b}.task-card-star--on svg{fill:#f59e0b}.task-card.deadline--warning{border-left:3px solid #D97706}.task-card.deadline--urgent{border-left:3px solid #EF4444}.task-card.deadline--overdue{border-left:3px solid #991B1B}@keyframes deadline-pulse{0%,to{opacity:1}50%{opacity:.65}}.dict-page{display:flex;flex-direction:column;height:100%;background:#f0f2f5}.dict-page .page-topbar{display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #E8EAED;padding:0 24px;height:56px;flex-shrink:0}.dict-page .page-topbar-left{display:flex;align-items:center;gap:8px}.dict-page .page-breadcrumb-project{font-size:14px;color:#888}.dict-page .page-breadcrumb-sep{color:#888}.dict-page .page-breadcrumb-current{font-size:14px;font-weight:600;color:#111827}.dict-content{flex:1;overflow:auto;padding:24px;display:flex;justify-content:center}.dict-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,480px));gap:20px;width:100%;max-width:1000px;align-content:start}.dict-card{background:#fff;border:1px solid #E8EAED;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}.dict-card-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid #E8EAED}.dict-card-icon{flex-shrink:0}.dict-card-titles{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}.dict-card-title{font-size:14px;font-weight:700;color:#1a1a1a}.dict-card-subtitle{font-size:11px;color:#9ca3af}.dict-card-count{flex-shrink:0;font-size:11px;font-weight:600;color:#666;background:#f3f4f6;padding:3px 8px;border-radius:10px}.dict-card-add{display:flex;align-items:center;gap:8px;padding:8px 20px;background:#f9fafb;border-bottom:1px solid #F3F4F6}.dict-color-picker{width:28px;height:28px;border:2px solid #E8EAED;border-radius:6px;padding:0;cursor:pointer;flex-shrink:0;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.dict-color-picker::-webkit-color-swatch-wrapper{padding:2px}.dict-color-picker::-webkit-color-swatch{border:none;border-radius:3px}.dict-add-icon{color:#9ca3af;flex-shrink:0}.dict-add-input{flex:1;height:30px;padding:0 10px;font-size:12px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#111827;outline:none}.dict-add-input:focus{border-color:#4a9fd8;box-shadow:0 0 0 3px #4a9fd81f}.dict-add-btn{height:30px;padding:0 12px;border:none;border-radius:6px;background:#1a1a1a;color:#fff;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s}.dict-add-btn:hover{background:#333}.dict-add-btn:disabled{opacity:.4;cursor:not-allowed}.dict-card-error{padding:6px 20px;background:#fef2f2;color:#ef4444;font-size:12px}.dict-card-list{flex:1;overflow-y:auto;max-height:400px}.dict-card-row{display:flex;align-items:center;gap:12px;height:46px;padding:0 20px;border-bottom:1px solid #F3F4F6;transition:background .1s}.dict-card-row:last-child{border-bottom:none}.dict-card-row:hover{background:#fafbfc}.dict-card-row.editing{background:#ebf5fb}.dict-row-dot{width:8px;height:8px;border-radius:4px;flex-shrink:0}.dict-row-name{font-size:13px;font-weight:500;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dict-row-spacer{flex:1}.dict-row-count{font-size:10px;font-weight:500;padding:2px 7px;border-radius:8px;white-space:nowrap;flex-shrink:0}.dict-row-edit-input{flex:1;height:30px;padding:0 10px;font-size:13px;border:1.5px solid #4A9FD8;border-radius:6px;background:#fff;color:#111827;outline:none;box-shadow:0 0 0 3px #4a9fd81f}.dict-row-icon-btn{width:28px;height:28px;border:none;border-radius:6px;background:none;color:#d1d5db;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;transition:all .1s;opacity:0}.dict-card-row:hover .dict-row-icon-btn,.dict-card-row.editing .dict-row-icon-btn{opacity:1}.dict-row-icon-btn:hover{background:#f3f4f6;color:#374151}.dict-row-icon-btn.danger:hover{background:#fef2f2;color:#ef4444}.dict-row-icon-btn.ok{color:#10b981;opacity:1}.dict-row-icon-btn.ok:hover{background:#ecfdf5}.dict-card-empty{padding:32px 20px;text-align:center;color:#9ca3af;font-size:13px}.aud-page{display:flex;flex-direction:column;height:100%;background:#f0f2f5}.aud-page .page-topbar{display:flex;align-items:center;background:#fff;border-bottom:1px solid #E8EAED;padding:0 24px;height:56px;flex-shrink:0}.aud-page .page-topbar-left{display:flex;align-items:center;gap:8px}.aud-page .page-breadcrumb-project{font-size:14px;color:#888}.aud-page .page-breadcrumb-sep{color:#888}.aud-page .page-breadcrumb-current{font-size:14px;font-weight:600;color:#111827}.aud-content{flex:1;overflow:auto;padding:24px;display:flex;flex-direction:column;gap:12px;min-height:0}.aud-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.aud-filter-select{height:34px;padding:0 28px 0 10px;font-size:12px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#111827;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23888' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.aud-filter-select:focus{border-color:#4a9fd8}.aud-filter-input{height:34px;width:140px;padding:0 10px;font-size:12px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#111827;outline:none}.aud-filter-input:focus{border-color:#4a9fd8}.aud-filter-date{height:34px;width:130px;padding:0 8px;font-size:12px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#111827;outline:none}.aud-filter-sep{color:#9ca3af;font-size:12px}.aud-reset-btn{display:flex;align-items:center;gap:4px;height:34px;padding:0 10px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#666;font-size:11px;cursor:pointer}.aud-reset-btn:hover{background:#f9fafb}.aud-total{font-size:12px;color:#9ca3af}.aud-card{background:#fff;border:1px solid #E8EAED;border-radius:12px;overflow:hidden;flex:1;display:flex;flex-direction:column;min-height:0}.aud-loading{padding:8px 20px;font-size:12px;color:#9ca3af;background:#f9fafb;border-bottom:1px solid #E8EAED}.aud-table-wrap{flex:1;overflow:auto}.aud-header{display:flex;height:38px;background:#f7f8fa;border-bottom:1px solid #E8EAED;font-size:11px;font-weight:600;color:#888;text-transform:uppercase;position:sticky;top:0;z-index:2}.aud-header>div{display:flex;align-items:center;padding:0 12px}.aud-row{display:flex;min-height:44px;border-bottom:1px solid #F3F4F6;align-items:center;transition:background .1s}.aud-row:last-child{border-bottom:none}.aud-row:hover{background:#fafbfc}.aud-row.clickable{cursor:pointer}.aud-row.clickable:hover{background:#ebf5fb}.aud-row.expanded{background:#f9fafb}.aud-row>div{padding:8px 12px;font-size:12px}.aud-col-time{width:140px;flex-shrink:0;color:#9ca3af;white-space:nowrap}.aud-col-user{width:140px;flex-shrink:0;color:#374151;font-weight:500}.aud-col-action{width:140px;flex-shrink:0}.aud-col-entity{width:220px;flex-shrink:0;color:#666;overflow:hidden;text-overflow:ellipsis}.aud-col-details{flex:1;min-width:0;color:#666}.aud-action-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600;white-space:nowrap}.aud-entity-link{color:#4a9fd8;cursor:pointer}.aud-entity-link:hover{text-decoration:underline}.aud-details-preview{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;font-size:11px;color:#9ca3af}.aud-details-exp{display:flex;flex-direction:column;gap:4px}.aud-detail-row{display:flex;gap:8px;font-size:12px}.aud-detail-k{font-weight:600;color:#888;min-width:100px;flex-shrink:0}.aud-muted{color:#d1d5db}.aud-empty{padding:40px;text-align:center;color:#9ca3af;font-size:13px}.aud-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid #E8EAED;flex-shrink:0}.aud-page-sizes{display:flex;gap:4px}.aud-ps-btn{height:28px;padding:0 10px;border:1px solid #E8EAED;border-radius:4px;background:#fff;color:#666;font-size:11px;cursor:pointer}.aud-ps-btn.active{background:#1a1a1a;border-color:#1a1a1a;color:#fff}.aud-pagination{display:flex;align-items:center;gap:4px}.aud-pg-btn{width:28px;height:28px;border:1px solid #E8EAED;border-radius:4px;background:#fff;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center}.aud-pg-btn:disabled{opacity:.3;cursor:not-allowed}.aud-pg-btn:hover:not(:disabled){background:#f9fafb}.aud-pg-current{font-size:12px;font-weight:500;color:#374151;min-width:50px;text-align:center}.members-page{max-width:800px;margin:0 auto}.members-page--sides{max-width:1100px}.add-member-row{display:flex;gap:8px;align-items:flex-start}.add-member-search{flex:1;position:relative}.search-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-overlay);z-index:50;max-height:200px;overflow-y:auto}.search-item{padding:10px 12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:14px}.search-item:hover{background:var(--color-primary-light)}.search-login{font-size:12px;color:var(--color-text-subtle)}.sides-hint{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-subtle);margin-bottom:12px}.sides-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.side-panel{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-lg);transition:border-color .2s,box-shadow .2s;min-height:200px}.side-panel--drop{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.side-panel-header{display:flex;align-items:center;gap:8px;padding:12px 16px;font-weight:600;font-size:15px;border-bottom:1px solid var(--color-border)}.side-panel-header--executor{color:var(--color-primary)}.side-panel-header--customer{color:#e67e22}.side-panel-count{background:var(--color-bg);padding:1px 8px;border-radius:10px;font-size:12px;font-weight:500;color:var(--color-text-subtle);margin-left:auto}.side-panel-body{padding:8px;display:flex;flex-direction:column;gap:4px}.side-panel-empty{text-align:center;color:var(--color-text-subtle);padding:32px 16px;font-size:14px}.member-card{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius);background:var(--color-bg);cursor:grab;transition:opacity .2s,box-shadow .15s;border:1px solid transparent}.member-card:hover{border-color:var(--color-border);box-shadow:0 1px 3px #0000000f}.member-card:active{cursor:grabbing}.member-card--dragging{opacity:.4}.member-card-grip{flex-shrink:0;cursor:grab;padding:2px}.member-card-info{flex:1;min-width:0}.member-card-name{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.member-card-login{font-size:12px;color:var(--color-text-subtle)}.member-card-role{width:auto;min-width:130px;font-size:13px;flex-shrink:0}@media (max-width: 768px){.sides-grid{grid-template-columns:1fr}.members-page--sides{max-width:100%}}.up-tabs{display:flex;gap:4px;border-bottom:1px solid var(--color-border);margin-bottom:20px}.up-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:none;background:none;font-size:13px;color:var(--color-text-subtle);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.up-tab:hover{color:var(--color-text)}.up-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.up-tab-count{font-size:11px;background:var(--color-bg);color:var(--color-text-subtle);border-radius:10px;padding:1px 7px;font-weight:600}.vr-intro{color:var(--color-text-subtle);font-size:13px;line-height:1.5;max-width:760px;margin-bottom:16px}.vr-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.vr-search{display:flex;align-items:center;gap:6px;flex:1;max-width:340px;height:32px;padding:0 10px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.vr-search:focus-within{border-color:var(--color-primary)}.vr-search-icon{color:var(--color-text-subtle);flex-shrink:0}.vr-search-input{border:none;outline:none;background:none;flex:1;font-size:13px;color:var(--color-text)}.vr-list{padding:0;overflow:hidden}.vr-row{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--color-border)}.vr-row:last-child{border-bottom:none}.vr-row--head{background:var(--color-bg);font-size:11px;font-weight:700;color:var(--color-text-subtle);text-transform:uppercase;letter-spacing:.04em;padding:8px 16px}.vr-col-name{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.vr-col-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.vr-name{font-size:14px;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr-name-input{height:30px;max-width:320px}.vr-empty{padding:24px 16px;text-align:center;color:var(--color-text-subtle);font-size:13px}.invite-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#091e4280;z-index:250;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow-y:auto}.invite-modal{width:100%;max-width:640px;background:#fff;border-radius:10px;box-shadow:0 20px 60px #00000040;display:flex;flex-direction:column;max-height:calc(100vh - 96px);overflow:hidden}.invite-head{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #E8EAED}.invite-title{font-weight:700;font-size:16px;color:#1a1a1a}.invite-sub{font-size:12px;color:#6b778c;margin-top:4px;max-width:460px;line-height:1.5}.invite-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;background:transparent;color:#6b778c;border-radius:4px;cursor:pointer}.invite-close:hover{background:#f3f4f6;color:#1a1a1a}.invite-body{overflow-y:auto;padding:16px 20px 0}.invite-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.invite-row{display:flex;flex-direction:column;gap:4px;grid-column:span 2}.invite-row:nth-child(1),.invite-row:nth-child(2){grid-column:span 1}.invite-row label{font-size:11px;color:#6b778c;text-transform:uppercase;letter-spacing:.05em}.invite-section{margin-bottom:14px}.invite-section-title{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#1a1a1a;margin-bottom:8px}.invite-empty{font-size:12px;color:#9ca3af;padding:6px 0}.invite-chip-list{display:flex;flex-wrap:wrap;gap:6px}.invite-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid #E8EAED;border-radius:16px;font-size:13px;cursor:pointer;background:#fff}.invite-chip input{margin:0}.invite-chip.active{background:#eff6ff;border-color:#4a9fd8;color:#1e40af}.invite-assignments{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.invite-assignment-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #E8EAED;border-radius:6px}.invite-assignment-name{flex:1;font-size:13px}.invite-assignment-pf{margin-left:6px;font-size:11px;background:#f3f4f6;color:#6b7280;padding:1px 6px;border-radius:8px}.invite-assignment-role{width:200px}.invite-add-project select{width:100%}.invite-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 0 16px;border-top:1px solid #F0F2F5;margin-top:14px}.invite-link-box{padding:14px;background:#ecfdf5;border:1px solid #A7F3D0;border-radius:8px;margin-bottom:12px}.invite-link-label{font-size:13px;font-weight:600;color:#047857;margin-bottom:8px}.invite-link-row{display:flex;gap:8px;align-items:center}.invite-link-input{flex:1;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;background:#fff}.invite-link-hint{font-size:11px;color:#047857;margin-top:8px;line-height:1.5}.adm-page{display:flex;flex-direction:column;height:100%;background:#f0f2f5}.adm-page .page-topbar{display:flex;align-items:center;background:#fff;border-bottom:1px solid #E8EAED;padding:0 24px;height:56px;flex-shrink:0}.adm-page .page-topbar-left{display:flex;align-items:center;gap:8px}.adm-page .page-breadcrumb-project{font-size:14px;color:#888}.adm-page .page-breadcrumb-sep{color:#888}.adm-page .page-breadcrumb-current{font-size:14px;font-weight:600;color:#111827}.adm-content{flex:1;overflow:auto;padding:24px;display:flex;flex-direction:column;gap:16px}.adm-error{padding:10px 14px;background:#fef2f2;border:1px solid #FECACA;border-radius:8px;font-size:13px;color:#ef4444}.adm-card{background:#fff;border:1px solid #E8EAED;border-radius:12px;overflow:visible}.adm-card-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid #E8EAED}.adm-card-titles{display:flex;flex-direction:column;gap:1px}.adm-card-title{font-size:14px;font-weight:700;color:#1a1a1a}.adm-card-desc{font-size:11px;color:#9ca3af}.adm-add-row{display:flex;gap:8px;padding:14px 20px;flex-wrap:wrap;align-items:center}.adm-select{height:34px;flex:1 1 160px;min-width:150px;padding:0 28px 0 10px;font-size:12px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#111827;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23888' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.adm-select:focus{border-color:#4a9fd8;box-shadow:0 0 0 3px #4a9fd81f}.adm-select-sm{flex:0;min-width:120px}.adm-add-btn{height:34px;padding:0 16px;border:none;border-radius:6px;background:#1a1a1a;color:#fff;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}.adm-add-btn:disabled{opacity:.4;cursor:not-allowed}.adm-add-btn:hover:not(:disabled){background:#333}.adm-card .adm-list{overflow:hidden;border-radius:0 0 12px 12px}.adm-card .adm-card-head{border-radius:12px 12px 0 0}.adm-list-header{display:flex;align-items:center;height:36px;padding:0 20px;background:#f7f8fa;border-bottom:1px solid #E8EAED;font-size:11px;font-weight:600;color:#888;text-transform:uppercase}.adm-list-row{display:flex;align-items:center;height:52px;padding:0 20px;border-bottom:1px solid #F3F4F6;transition:background .1s}.adm-list-row:last-child{border-bottom:none}.adm-list-row:hover{background:#fafbfc}.adm-col-user{flex:1;display:flex;align-items:center;gap:10px;min-width:0}.adm-col-role{width:160px;flex-shrink:0}.adm-col-date{width:100px;flex-shrink:0;font-size:12px;color:#9ca3af}.adm-avatar{width:30px;height:30px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}.adm-user-info{display:flex;flex-direction:column;gap:1px;min-width:0}.adm-user-name{font-size:13px;font-weight:500;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adm-user-login{font-size:11px;color:#9ca3af}.adm-role-select{height:30px;padding:0 24px 0 8px;font-size:12px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#111827;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23888' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.adm-col-portfolios{flex:1;display:flex;align-items:center;gap:5px;flex-wrap:wrap;min-width:0}.adm-col-actions{width:72px;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;gap:4px}.usr-pf-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 7px 2px 5px;border-radius:20px;font-size:11px;font-weight:500;border:1px solid transparent;white-space:nowrap}.usr-pf-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.usr-pf-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;border:none;background:none;cursor:pointer;padding:0;opacity:.4;border-radius:50%}.usr-pf-chip-remove:hover{opacity:1;background:#0000001a}.usr-pf-chip-role{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;border:none;background:none;cursor:pointer;padding:0;opacity:.5;border-radius:50%}.usr-pf-chip-role:hover{opacity:1;background:#0000001a}.usr-pf-role-badge{font-size:9px;font-weight:600;opacity:.6;letter-spacing:.02em}.usr-pf-add-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:1px dashed #D1D5DB;border-radius:50%;background:none;cursor:pointer;color:#9ca3af}.usr-pf-add-btn:hover{border-color:#4a9fd8;color:#4a9fd8;background:#eff6ff}.usr-pf-dropdown{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid #E8EAED;border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:200;overflow:hidden;min-width:160px}.usr-pf-drop-role-row{padding:6px 8px;border-bottom:1px solid #F3F4F6}.usr-pf-drop-role-row .adm-select{width:100%}.usr-pf-drop-item{display:flex;align-items:center;gap:7px;padding:7px 12px;font-size:12px;cursor:pointer;color:#111827}.usr-pf-drop-item:hover{background:#f3f4f6}.adm-reset-popover{display:flex;align-items:center;gap:4px}.adm-reset-input{height:28px;width:130px;padding:0 8px;font-size:12px;border:1px solid #4A9FD8;border-radius:6px;outline:none;background:#fff;color:#111827}.adm-reset-ok{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:6px;background:#10b981;color:#fff;cursor:pointer}.adm-reset-ok:disabled{opacity:.4;cursor:not-allowed}.adm-reset-cancel{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:1px solid #E8EAED;border-radius:6px;background:#fff;color:#6b7280;cursor:pointer}.pf-access-list{display:flex;flex-direction:column}.pf-access-row{border-bottom:1px solid #F3F4F6}.pf-access-row:last-child{border-bottom:none}.pf-access-header{display:flex;align-items:center;gap:10px;padding:10px 20px;min-height:48px}.pf-access-icon{display:inline-block;width:10px;height:10px;border-radius:3px;flex-shrink:0}.pf-access-name{font-size:13px;font-weight:600;color:#1a1a1a;white-space:nowrap;flex-shrink:0;min-width:120px}.pf-access-chips{display:flex;flex-wrap:wrap;gap:5px;flex:1;align-items:center}.pf-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px 3px 4px;border-radius:20px;font-size:11px;font-weight:500;white-space:nowrap}.pf-chip--admin{background:#ede9fe;color:#6d28d9}.pf-chip--member{background:#f3f4f6;color:#374151}.pf-chip-avatar{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:8px;font-weight:700;color:#fff;flex-shrink:0}.pf-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border:none;background:none;cursor:pointer;border-radius:50%;color:inherit;opacity:.5;padding:0;margin-left:2px}.pf-chip-remove:hover{opacity:1;background:#0000001a}.pf-chip-empty{font-size:11px;color:#c4c9d4;font-style:italic}.pf-access-add-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid #E8EAED;border-radius:6px;background:#fff;cursor:pointer;color:#6b7280;flex-shrink:0;margin-left:auto}.pf-access-add-btn:hover{background:#f3f4f6;border-color:#9ca3af}.pf-access-search{display:flex;gap:8px;padding:8px 20px 12px;align-items:flex-start}.pf-search-icon{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:#9ca3af;pointer-events:none}.pf-search-field{width:100%;height:32px;padding:0 10px 0 30px;font-size:12px;border:1px solid #E8EAED;border-radius:6px;outline:none;background:#fff;color:#111827}.pf-search-field:focus{border-color:#4a9fd8;box-shadow:0 0 0 3px #4a9fd81f}.pf-inline-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #E8EAED;border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:100;overflow:hidden}.pf-inline-item{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;font-size:12px}.pf-inline-item:hover{background:#f3f4f6}.workflow-page{max-width:1100px;margin:0 auto}.workflow-page{--wf-canvas-bg: #1a1d23;--wf-grid: rgba(255,255,255,.06);--wf-node-bg: #23272e;--wf-node-border: rgba(255,255,255,.1);--wf-node-label: rgba(255,255,255,.45);--wf-node-value: rgba(255,255,255,.85);--wf-arrow: rgba(255,255,255,.3);--wf-toggle-off: rgba(255,255,255,.15)}.workflow-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px 12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.wf-mode-hint{font-size:13px;color:var(--color-text-subtle);line-height:1.4}.wf-port-hint{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--color-primary);vertical-align:middle;margin:0 2px}.wf-canvas{background:var(--wf-canvas-bg);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:20px;border:1px solid var(--wf-node-border)}.workflow-svg{display:block}.workflow-svg text{-webkit-user-select:none;user-select:none;pointer-events:none}.wf-arrow{cursor:pointer}.wf-arrow:hover path:last-child{stroke:var(--color-danger);stroke-width:2.5}.wf-port{opacity:0;transition:opacity .15s}g:hover>.wf-port{opacity:1}.workflow-columns{padding:20px}.workflow-columns h3{font-size:18px;margin-bottom:4px}.column-list{display:flex;flex-direction:column;gap:4px;margin-bottom:16px}.column-row{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--color-bg);border-radius:var(--radius)}.column-order-btns{display:flex;flex-direction:column;gap:1px}.column-order-btns .btn-icon{width:22px;height:18px;font-size:12px}.column-color-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0}.column-label{font-weight:600;font-size:14px;flex:1}.column-key{font-size:11px;color:var(--color-text-subtle);margin-right:4px}.column-work-badge{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;border-radius:4px;background:var(--color-primary);color:#fff;margin-right:4px}.column-final-toggle{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:500;padding:3px 8px;border-radius:4px;border:1px solid var(--color-border);background:none;color:var(--color-text-subtle);cursor:pointer;transition:all .15s;white-space:nowrap}.column-final-toggle:hover{border-color:#10b981;color:#10b981;background:#f0fdf4}.column-final-toggle--on{border-color:#10b981;background:#10b981;color:#fff}.column-final-toggle--on:hover{background:#059669;border-color:#059669;color:#fff}.column-edit-input{flex:1;padding:4px 8px;font-size:14px}.column-color-input{width:32px;height:32px;border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;padding:1px}.add-column-form{display:flex;gap:8px;padding-top:12px;border-top:1px solid var(--color-border)}.add-column-form .form-input{flex:1}.wf-toast{position:fixed;bottom:24px;right:24px;z-index:300;padding:10px 20px;border-radius:var(--radius-lg);font-size:14px;font-weight:500;box-shadow:var(--shadow-overlay);cursor:pointer;animation:wf-toast-in .25s ease-out}.wf-toast-success{background:#e3fcef;border-left:4px solid var(--color-success);color:var(--color-success)}.wf-toast-error{background:#ffebe6;border-left:4px solid var(--color-danger);color:var(--color-danger)}@keyframes wf-toast-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.metrics-page{max-width:1500px}.metrics-period{display:inline-flex;align-items:center;gap:8px;margin-top:8px}.metrics-period label{margin:0;white-space:nowrap}.metrics-period .form-input{width:130px}.metrics-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.metric-card{text-align:center;padding:24px}.metric-value{font-size:36px;font-weight:700;color:var(--color-primary)}.metric-label{font-size:13px;color:var(--color-text-subtle);margin-top:4px}.metrics-sections{display:flex;flex-direction:column;gap:16px}.metrics-sections h3{font-size:16px;margin-bottom:16px}.status-bars{display:flex;flex-direction:column;gap:12px}.status-bar-row{display:flex;align-items:center;gap:12px}.status-bar-label{font-size:13px;min-width:100px;color:var(--color-text-subtle)}.status-bar-track{flex:1;height:20px;background:var(--color-bg);border-radius:10px;overflow:hidden}.status-bar-fill{height:100%;border-radius:10px;transition:width .3s}.status-unestimated{background:var(--color-warning)}.status-queue{background:var(--color-primary)}.status-in_progress{background:var(--color-badge-purple)}.status-done{background:var(--color-success)}.status-bar-count{font-size:14px;font-weight:600;min-width:30px;text-align:right}.aging-days{font-weight:700;color:var(--color-danger)}@media (max-width: 1100px){.metrics-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.metrics-cards{grid-template-columns:1fr}.metrics-page .page-header{align-items:stretch;flex-direction:column}}.crop-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1200}.crop-modal{background:#fff;border-radius:12px;box-shadow:0 12px 48px #00000047;display:flex;flex-direction:column;max-width:calc(100vw - 48px);max-height:calc(100vh - 48px);overflow:hidden}.crop-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #E8EAED;flex-shrink:0}.crop-modal-header h3{margin:0;font-size:15px;font-weight:600;color:#1a1a1a}.crop-close-btn{background:none;border:none;cursor:pointer;font-size:16px;color:#6b7280;padding:2px 6px;border-radius:4px;line-height:1;transition:background .12s,color .12s}.crop-close-btn:hover{background:#f3f4f6;color:#1a1a1a}.crop-modal-body{padding:20px;display:flex;flex-direction:column;align-items:center;gap:10px;overflow:auto}.crop-loading{padding:40px;color:#9ca3af;font-size:14px}.crop-canvas{display:block;max-width:100%;max-height:calc(100vh - 220px);border-radius:6px;-webkit-user-select:none;user-select:none}.crop-hint{margin:0;font-size:12px;color:#9ca3af}.crop-modal-footer{padding:12px 20px 16px;display:flex;justify-content:flex-end;gap:8px;border-top:1px solid #E8EAED;flex-shrink:0}.np-hint{color:var(--color-text-muted);font-size:12.5px;margin:0 0 12px}.np-loading{color:var(--color-text-muted);font-size:13px;padding:8px 0}.np-saved{color:var(--color-success, #10B981);font-size:12px;font-weight:500;display:inline-flex;align-items:center;gap:3px;margin-left:8px}.np-table-wrap{overflow-x:auto}.np-table{border-collapse:collapse;font-size:13px;min-width:420px}.np-table th,.np-table td{padding:8px 10px;border-bottom:1px solid var(--color-border)}.np-table thead th{color:var(--color-text-muted);font-weight:600;font-size:11px;text-transform:uppercase;text-align:center}.np-event-col{text-align:left;white-space:nowrap}.np-ch-col{text-align:center;width:96px}.np-ch-col input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary)}.np-ch-col input[type=checkbox]:disabled{cursor:not-allowed;opacity:.4}.np-ch-disabled{color:var(--color-text-subtle)}.np-soon{display:block;font-size:9px;font-weight:500;color:var(--color-text-subtle);text-transform:none;margin-top:1px}.np-telegram{margin-top:16px;padding-top:14px;border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:8px}.np-tg-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.np-tg-status{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--color-success, #10B981)}.np-tg-status--off{color:var(--color-text-subtle);font-weight:400}.np-quiet{margin-top:16px;display:flex;flex-direction:column;gap:8px}.np-quiet-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;cursor:pointer}.np-quiet-toggle input{width:15px;height:15px;accent-color:var(--color-primary);cursor:pointer}.np-quiet-range{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-subtle)}.np-quiet-range select{padding:4px 8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:13px}.np-quiet-note{margin:2px 0 0}.np-test{margin-top:16px;padding-top:14px;border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:8px;align-items:flex-start}.np-test-result{list-style:none;margin:4px 0 0;padding:0;font-size:13px;display:flex;flex-direction:column;gap:3px}.np-test-result li.ok{color:var(--color-success, #10B981)}.np-test-result li.warn{color:var(--color-text-subtle)}.np-test-result li.err{color:var(--color-danger)}.profile-page{display:flex;flex-direction:column;height:100%;overflow:hidden}.profile-content{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px;max-width:880px;width:100%;margin:0 auto}.profile-loading{padding:24px;color:var(--color-text-subtle)}.profile-header-card{display:flex;align-items:center;gap:20px;padding:18px 20px}.profile-avatar-wrap{position:relative;flex-shrink:0}.profile-avatar{position:relative;width:88px;height:88px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#fff;font-size:30px;font-weight:700}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-avatar-camera{position:absolute;bottom:2px;right:2px;width:28px;height:28px;background:#fff;color:#1a1a1a;border:1px solid #E8EAED;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 6px #00000026}.profile-avatar-camera:hover{background:#f3f4f6}.profile-avatar-delete{position:absolute;top:0;right:0;width:22px;height:22px;background:#fff;color:#ef4444;border:1px solid #FECACA;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.profile-avatar-delete:hover{background:#fef2f2}.profile-header-info{flex:1;min-width:0}.profile-header-name{font-size:20px;font-weight:700;color:#1a1a1a}.profile-header-meta{display:flex;align-items:center;gap:10px;font-size:13px;color:#6b778c;margin-top:4px}.profile-header-login{font-family:ui-monospace,SFMono-Regular,monospace}.profile-header-role{background:#f0f7ff;color:#1e40af;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.profile-portfolio-admin{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:#6b7280}.profile-portfolio-chip{background:#fef3c7;color:#92400e;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600;margin-right:4px}.profile-section{padding:14px 18px}.profile-section h3{display:inline-flex;align-items:center;gap:6px;margin:0 0 12px;font-size:14px;font-weight:600;color:#1a1a1a}.profile-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 16px}.profile-form-row{display:flex;flex-direction:column;gap:4px}.profile-form-row label{font-size:11px;color:#6b778c;text-transform:uppercase;letter-spacing:.05em}.profile-form-hint{font-size:11px;color:#9ca3af}.profile-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin-top:12px}.profile-saved{display:inline-flex;align-items:center;gap:4px;color:#047857;font-size:12px;font-weight:500}.profile-projects-list{display:flex;flex-direction:column;gap:4px}.profile-project-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;background:#fafbfc;border:1px solid transparent;text-decoration:none;color:#1a1a1a;transition:background .15s,border-color .15s}.profile-project-row:hover{background:#f3f4f6;border-color:#e8eaed}.profile-project-name{font-weight:500;flex:1}.profile-project-portfolio{font-size:11px;color:#6b778c;background:#f3f4f6;padding:2px 6px;border-radius:8px}.profile-project-role{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.profile-project-role--admin{background:#eff6ff;color:#1e40af}.profile-project-role--developer{background:#f3f4f6;color:#6b7280}.profile-empty{padding:12px;color:var(--color-text-subtle);font-size:13px}@media (max-width: 768px){.profile-content{padding:12px}.profile-form-grid{grid-template-columns:1fr}.profile-header-card{flex-direction:column;align-items:flex-start}}*{margin:0;padding:0;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:transparent transparent}*:hover{scrollbar-color:rgba(128,128,128,.3) transparent}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:transparent;border-radius:3px}*:hover::-webkit-scrollbar-thumb{background:#8080804d}*::-webkit-scrollbar-thumb:hover{background:#80808080}:root{--color-primary: #4A9FD8;--color-primary-hover: #3A8FC8;--color-primary-light: #EBF5FB;--color-bg: #F0F2F5;--color-surface: #FFFFFF;--color-surface-2: #F9FAFB;--color-border: #E8EAED;--color-border-light: #F3F4F6;--color-text: #111827;--color-text-muted: #6B7280;--color-text-subtle: #9CA3AF;--color-text-inverse: #FFFFFF;--color-success: #10B981;--color-success-light: #ECFDF5;--color-danger: #EF4444;--color-danger-light: #FEF2F2;--color-warning: #F59E0B;--color-warning-light: #FFFBEB;--color-info: #4A9FD8;--color-badge-purple: #8B5CF6;--color-badge-teal: #14B8A6;--color-badge-green: #10B981;--color-column-bg: #FFFFFF;--shadow-card: 0 1px 4px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-overlay: 0 4px 16px rgba(0,0,0,.12), 0 1px 4px rgba(0,0,0,.06);--radius: 8px;--radius-lg: 12px;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--input-border: #E8EAED;--input-focus: #4A9FD8;--input-bg: #FFFFFF;--color-estimate-empty-bg: #F0F2F5;--color-estimate-empty-text: #9CA3AF}body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text);line-height:1.5;font-size:14px}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:14px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:500;display:flex;align-items:center;justify-content:center;padding:16px}.modal-content{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:0 20px 60px #0003;width:100%;max-width:640px;max-height:90vh;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--color-border);flex-shrink:0}.modal-title{font-size:16px;font-weight:600;color:var(--color-text)}.modal-close{background:none;border:none;font-size:20px;color:var(--color-text-subtle);cursor:pointer;line-height:1;padding:2px 6px;border-radius:4px;transition:background .15s}.modal-close:hover{background:var(--color-bg);color:var(--color-text)}.modal-body{padding:20px;overflow-y:auto;flex:1}.modal-footer{padding:12px 20px;border-top:1px solid var(--color-border);display:flex;gap:8px;justify-content:flex-end;flex-shrink:0}.modal-tab{padding:8px 16px;border:none;background:none;font-size:14px;font-weight:500;color:var(--color-text-subtle);cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.modal-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.modal-tabs{display:flex;border-bottom:1px solid var(--color-border);padding:0 20px}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;padding:10px 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-subtle);background:var(--color-surface-2);border-bottom:2px solid var(--color-border)}.table td{padding:10px 12px;border-bottom:1px solid var(--color-border-light);color:var(--color-text)}.table tr:hover td{background:var(--color-bg)}@media (max-width: 768px){body,html,#root{-webkit-text-size-adjust:100%}.main-content{padding:0}.page-topbar{flex-wrap:wrap;gap:6px;padding:8px 12px;align-items:flex-start;height:auto;min-height:44px}.page-topbar-left{min-width:0;flex-wrap:wrap;gap:4px}.page-topbar-right{gap:4px;flex-wrap:wrap}.page-breadcrumb-project,.page-breadcrumb-current{font-size:12px}.page-breadcrumb-sep{display:none}.page-version-badge{padding:3px 6px;font-size:11px}.page-search-field{display:none}.page-icon-btn{width:32px;height:32px}.page-toolbar{padding:6px 8px}.topbar{flex-wrap:wrap;height:auto;padding:8px 12px;gap:8px}.topbar-left,.topbar-right{width:100%;flex-wrap:wrap}.modal-overlay{padding:0!important;align-items:stretch!important;overflow:hidden}.modal-content{min-width:0!important;max-width:100vw!important;width:100vw!important;height:100vh!important;max-height:100vh!important;margin:0!important;border-radius:0!important;display:flex;flex-direction:column}.modal-body{padding:12px;overflow-y:auto}.modal-header{padding:10px 12px}.modal-title{font-size:16px}.detail-grid{grid-template-columns:1fr!important;gap:10px}.modal-resize-handle,.modal-resizer{display:none!important}.create-task-grid{grid-template-columns:1fr}.form-input,.styled-select,.cal-input,.wizard-input{font-size:16px}.csi-form{grid-template-columns:1fr}.csi-form-value{max-width:none}.kanban-board{padding:8px;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.kanban-column{min-width:88vw!important;max-width:88vw!important;scroll-snap-align:start;flex-shrink:0}.column-cards{max-height:none}.task-card{padding:8px 10px}.filter-bar,.toolbar{flex-wrap:wrap;gap:6px;padding:6px 8px}.filter-bar>*,.toolbar>*{flex-shrink:0}.filter-chip{font-size:12px}.filter-bar .filter-dropdown-group{display:none;width:100%;flex-wrap:wrap;gap:6px}.filter-bar--mobile-open .filter-dropdown-group{display:flex}.filter-icon-btn{position:relative}.filter-icon-dot{position:absolute;top:2px;right:2px;width:7px;height:7px;border-radius:50%;background:#ef4444}.filter-bar .filter-create-btn{display:none}.mobile-fab{display:flex;position:fixed;right:16px;bottom:16px;width:56px;height:56px;border-radius:50%;background:#4a9fd8;color:#fff;border:0;box-shadow:0 8px 24px #0000003d;align-items:center;justify-content:center;z-index:90;cursor:pointer}.mobile-fab:active{transform:scale(.96)}.cal-page{height:100%;overflow:hidden}.cal-container{padding:0 8px 8px;overflow-x:hidden}.cal-nav{padding:6px 8px;flex-wrap:wrap;gap:6px}.cal-nav-title{gap:4px}.cal-month{font-size:14px}.cal-year{font-size:14px;color:#6b778c}.cal-today-btn{padding:4px 8px;font-size:12px}.cal-grid{font-size:11px}.cal-weekday{font-size:9px;padding:4px 0}.cal-cell{min-height:56px;padding:2px}.cal-day-num{font-size:11px}.cal-add-btn{display:none}.cal-event-chip,.cal-task-chip{font-size:9px;padding:1px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-more{font-size:9px}.cal-modal-overlay{padding:0}.cal-modal{width:100%!important;max-width:100%!important;height:100vh;max-height:100vh;border-radius:0;display:flex;flex-direction:column}.cal-modal-body{padding:12px;overflow-y:auto;flex:1}.cal-modal-foot{padding:10px 12px;flex-wrap:wrap}.cal-form-dates{grid-template-columns:1fr}.hol-months{gap:16px}.hol-month{padding:10px}.hol-year-label{font-size:18px}.sett-shell{flex-direction:column}.sett-tabs{flex-direction:row;overflow-x:auto;width:100%;border-right:none;border-bottom:1px solid #E8EAED;padding:4px;flex-shrink:0}.sett-tab{flex-direction:row;flex-shrink:0;padding:8px 12px;white-space:nowrap;gap:6px}.sett-tab-label{display:inline!important;font-size:13px}.sett-content{padding:12px}.sett-modules-grid,.sett-fields-grid{grid-template-columns:1fr}.sett-danger-row{flex-direction:column;align-items:stretch;gap:8px}.sett-danger-btn{width:100%}.passport-body{padding:12px}.passport-header-card{flex-direction:column;align-items:flex-start;gap:12px}.passport-stats-mini{width:100%;justify-content:space-around}.passport-stage-row{flex-wrap:wrap;gap:6px}.passport-stage-dates{width:100%}.passport-stages-list{font-size:12px}.passport-files-card .passport-file-row{flex-wrap:wrap}.csi-header{flex-direction:column;align-items:stretch;gap:8px}.csi-summary{margin-left:0;justify-content:space-around}.csi-chart-wrap{max-width:100%}.csi-table-head{display:none}.csi-table-row{flex-wrap:wrap;gap:4px;padding:8px;border:1px solid #E8EAED;border-radius:4px}.csi-table-row>div{width:auto!important;flex:0 0 auto}.chat-page{height:calc(100vh - 48px)}.chat-topbar{flex-wrap:wrap;gap:6px;padding:8px}.chat-topics-bar{overflow-x:auto;padding:6px 8px;flex-wrap:nowrap}.chat-topic-chip{flex-shrink:0}.chat-main{min-height:0}.chat-messages{padding:8px}.chat-input-area{padding:8px;position:sticky;bottom:0;background:#fff;z-index:5}.chat-files-panel{position:fixed;top:48px;right:0;bottom:0;width:88vw!important;max-width:320px;z-index:150;box-shadow:-8px 0 24px #0000002e}.chat-bubble{max-width:88%}.adm-page,.tmpl-page,.users-page{overflow-x:hidden}.adm-content,.tmpl-content{padding:12px}.adm-list,.users-list{overflow-x:auto}.adm-list-header,.adm-list-row{min-width:720px}.tmpl-grid,.pfcard-list{grid-template-columns:1fr}.adm-card{padding:12px}.gu-table-wrap{overflow-x:auto}.gu-table{min-width:720px}.pf-tabs{overflow-x:auto}.pf-tab{flex-shrink:0}.dict-grid{grid-template-columns:1fr}.dict-card,.reports-page,.dashboard-page{padding:12px}.dashboard-grid{grid-template-columns:1fr}.report-card{width:100%}.auth-wrap,.login-page{padding:16px}.auth-card{width:100%;max-width:100%}.auth-input,.auth-btn{font-size:16px}.ob-modal{width:95vw!important;max-width:95vw!important}.ob-content{padding:16px}.wizard-container{flex-direction:column}.wizard-sidebar{width:100%;padding:12px}.wizard-steps{display:flex;overflow-x:auto}.wizard-step{flex-shrink:0}.wizard-content{padding:16px;max-height:none}.gantt-page .gantt-container,.workflow-page .workflow-canvas{overflow-x:auto}.mobile-desktop-only{display:block;padding:24px 16px;margin:16px;background:#fef3c7;border:1px solid #F59E0B;border-radius:8px;color:#92400e;font-size:13px;line-height:1.5}.changelog-modal{width:100%;height:100vh;max-height:100vh;border-radius:0}.global-search-overlay{padding:0}.global-search-modal{width:100%!important;max-width:100%!important;height:100vh;max-height:100vh;border-radius:0}}@media (max-width: 480px){.page-breadcrumb-project,.page-breadcrumb-current{font-size:11px}.kanban-column{min-width:92vw!important;max-width:92vw!important}.cal-cell{min-height:48px}.cal-grid{font-size:10px}.hol-day{font-size:11px}.csi-summary-num{font-size:16px}}@media (min-width: 769px){.mobile-desktop-only,.mobile-fab{display:none!important}}
