:root{--auth-bg: #0a0a0a;--auth-card-bg: #141414;--auth-input-bg: #141414;--auth-text: #fafafa;--auth-text-muted: #a1a1a1;--auth-text-dim: #666666;--auth-border: #2a2a2a;--auth-border-hover: #3a3a3a;--auth-accent: #fafafa;--auth-accent-hover: #e0e0e0;--auth-error: #ef4444;--auth-radius: 8px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--auth-bg);padding:24px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;color:var(--auth-text);-webkit-font-smoothing:antialiased}.auth-container{width:100%;max-width:400px}.auth-card{background:var(--auth-card-bg);border:1px solid var(--auth-border);border-radius:8px;padding:32px}.auth-logo{display:block;height:18px;width:auto;margin:0 auto 32px;filter:invert(1)}.auth-header{text-align:center;margin-bottom:24px}.auth-header h1{font-size:20px;font-weight:600;color:var(--auth-text);margin:0 0 8px;letter-spacing:-.02em}.auth-header p{font-size:14px;color:var(--auth-text-muted);margin:0}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-field{display:flex;flex-direction:column;gap:8px}.auth-field label{font-size:14px;font-weight:500;color:var(--auth-text)}.auth-field input{width:100%;height:40px;padding:0 12px;background:var(--auth-input-bg);border:1px solid var(--auth-border);border-radius:6px;color:var(--auth-text);font-size:14px;font-family:inherit;transition:border-color .15s ease;box-sizing:border-box}.auth-field input::placeholder{color:var(--auth-text-dim)}.auth-field input:hover{border-color:var(--auth-border-hover)}.auth-field input:focus{outline:none;border-color:var(--auth-text-muted)}.auth-input-code{text-align:center;font-size:20px!important;letter-spacing:8px;font-family:ui-monospace,SF Mono,monospace;height:48px!important}.auth-btn{width:100%;height:40px;margin-top:8px;padding:0 16px;background:var(--auth-accent);color:#000;border:none;border-radius:6px;font-size:14px;font-weight:500;font-family:inherit;cursor:pointer;transition:background-color .15s ease}.auth-btn:hover:not(:disabled){background:var(--auth-accent-hover)}.auth-btn:disabled{opacity:.5;cursor:not-allowed}.auth-btn:focus{outline:2px solid var(--auth-text-muted);outline-offset:2px}.auth-error{padding:12px;margin-bottom:16px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:6px;color:var(--auth-error);font-size:13px;text-align:center}.auth-qr{display:flex;justify-content:center;margin-bottom:16px}.auth-qr img{width:180px;height:180px;padding:12px;background:#fff;border-radius:6px}.auth-details{margin-bottom:16px;text-align:center}.auth-details summary{cursor:pointer;color:var(--auth-text-muted);font-size:13px}.auth-details summary:hover{color:var(--auth-text)}.auth-details code{display:block;margin-top:12px;padding:12px;background:var(--auth-bg);border:1px solid var(--auth-border);border-radius:6px;color:var(--auth-text-muted);font-size:12px;font-family:ui-monospace,SF Mono,monospace;word-break:break-all}.auth-mode-switch{text-align:center;margin-top:16px}.auth-mode-link{background:none;border:none;padding:0;color:var(--auth-text-muted);font-size:13px;font-family:inherit;cursor:pointer;transition:color .15s ease;text-decoration:underline;text-underline-offset:2px}.auth-mode-link:hover{color:var(--auth-text)}.auth-footer{text-align:center;margin-top:24px;padding-top:24px;border-top:1px solid var(--auth-border);color:var(--auth-text-dim);font-size:12px}.dashboard-header{margin-bottom:var(--spacing-xl)}.dashboard-header h1{margin-bottom:var(--spacing-xs)}.dashboard-subtitle{color:var(--color-text-secondary);margin:0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.stat-card{background:var(--color-bg-paper);border-radius:var(--radius-md);box-shadow:var(--shadow-1);padding:var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-md);transition:box-shadow var(--transition-fast)}.stat-card:hover{box-shadow:var(--shadow-2)}.stat-icon{width:48px;height:48px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon svg{width:24px;height:24px}.stat-icon-active{background:#e8f5e9;color:#2e7d32}.stat-icon-total{background:var(--color-primary-50);color:var(--color-primary-800)}.stat-icon-completed{background:#ede7f6;color:#5e35b1}.stat-icon-clients{background:var(--color-warning-light);color:var(--color-warning-dark)}.stat-content{flex:1}.stat-value{font-size:var(--font-size-2xl);font-weight:600;color:var(--color-text-primary);line-height:1.2}.stat-label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.dashboard-section{margin-bottom:var(--spacing-xl)}.dashboard-section .section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-md)}.dashboard-section .section-header h2{margin:0;font-size:var(--font-size-lg);font-weight:500}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-md)}.project-card{background:var(--color-bg-paper);border-radius:var(--radius-md);box-shadow:var(--shadow-1);padding:var(--spacing-lg);text-decoration:none;color:inherit;transition:box-shadow var(--transition-fast),transform var(--transition-fast);display:block}.project-card:hover{box-shadow:var(--shadow-2);transform:translateY(-2px);text-decoration:none}.project-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.project-card-header h3{margin:0;font-size:var(--font-size-md);font-weight:500;color:var(--color-text-primary);flex:1}.project-card-client{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--spacing-xs)}.project-card-phase{color:var(--color-primary);font-size:var(--font-size-sm);font-weight:500;margin:0 0 var(--spacing-sm)}.project-card-date{color:var(--color-text-disabled);font-size:var(--font-size-xs);margin:0}.quick-actions{display:flex;gap:var(--spacing-md);flex-wrap:wrap}.quick-action-card{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);background:var(--color-bg-paper);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);text-decoration:none;color:var(--color-text-primary);font-weight:500;transition:all var(--transition-fast)}.quick-action-card:hover{border-color:var(--color-primary);background:var(--color-primary-50);text-decoration:none}.quick-action-icon{width:40px;height:40px;border-radius:50%;background:var(--color-primary);color:var(--color-primary-light);display:flex;align-items:center;justify-content:center}.quick-action-icon svg{width:20px;height:20px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--spacing-lg);animation:overlay-in .2s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--color-bg-paper);border-radius:var(--radius-lg);box-shadow:0 24px 48px #00000029,0 8px 24px #0000001f;max-height:90vh;display:flex;flex-direction:column;animation:modal-in .25s cubic-bezier(.34,1.56,.64,1);overflow:hidden}@keyframes modal-in{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-small{width:100%;max-width:400px}.modal-medium{width:100%;max-width:520px}.modal-large{width:100%;max-width:720px}.modal-fullscreen{width:95vw;height:95vh;max-width:95vw;max-height:95vh}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg);border-bottom:1px solid var(--color-grey-100)}.modal-header h2{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text-primary);letter-spacing:-.01em}.modal-close{background:transparent;border:none;font-size:20px;color:var(--color-text-secondary);cursor:pointer;padding:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:all var(--transition-fast);margin:-4px -8px -4px 0}.modal-close:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.modal-body,.modal-content{padding:var(--spacing-lg);overflow-y:auto;flex:1}.modal-content p{margin-bottom:var(--spacing-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm)}.modal-content p:last-of-type{margin-bottom:0}.modal-footer,.modal-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;padding:var(--spacing-md) var(--spacing-lg);background:var(--color-grey-50);border-top:1px solid var(--color-grey-100)}.modal-content .form-error,.modal-body .form-error{background:var(--color-error-light);color:var(--color-error-dark);padding:12px 16px;border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--spacing-md);border-left:3px solid var(--color-error)}.modal-content .form-hint,.modal-body .form-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md);border-left:3px solid var(--color-grey-300)}.modal-content .form-group:last-of-type,.modal-body .form-group:last-of-type{margin-bottom:0}.u-modal-header{display:flex;align-items:flex-start;gap:var(--spacing-md);padding:var(--spacing-lg);background:var(--color-primary);color:#fff}.u-modal-header-icon{width:48px;height:48px;border-radius:50%;background:#ffffff26;display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0}.u-modal-header-content{flex:1;min-width:0}.u-modal-header-content h2{margin:0;font-size:1.25rem;font-weight:500}.u-modal-header-content p{margin:4px 0 0;font-size:.875rem;opacity:.85}.u-modal-close{background:#ffffff26;border:none;color:#fff;width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:1.125rem;display:flex;align-items:center;justify-content:center;transition:background .2s;flex-shrink:0}.u-modal-close:hover{background:#ffffff40}.u-modal-body{padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-lg)}.u-section-label{font-size:.6875rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--spacing-sm)}.u-field-underline{border:none;border-bottom:2px solid var(--color-grey-300);border-radius:0;padding:var(--spacing-sm) 0;font-size:1rem;background:transparent;transition:border-color .2s}.u-field-underline:focus{outline:none;border-bottom-color:var(--color-primary);box-shadow:none}.u-field-underline::placeholder{color:var(--color-text-disabled)}.u-field-title{font-size:1.25rem;font-weight:500}.u-chips{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.u-chip{padding:8px 16px;border:1px solid var(--color-grey-300);border-radius:8px;background:var(--color-bg);color:var(--color-text-secondary);font-size:.875rem;cursor:pointer;transition:all .2s}.u-chip:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-50)}.u-chip.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.u-radio-cards{display:flex;flex-direction:column;gap:var(--spacing-sm)}.u-radio-card{display:flex;align-items:flex-start;gap:var(--spacing-md);padding:var(--spacing-md);border:1px solid var(--color-grey-200);border-radius:12px;cursor:pointer;transition:all .2s}.u-radio-card:hover{border-color:var(--color-grey-300);background:var(--color-grey-50)}.u-radio-card.active{border-color:var(--color-primary);background:var(--color-primary-50)}.u-radio-card input[type=radio]{margin-top:2px;accent-color:var(--color-primary)}.u-radio-card-content{flex:1}.u-radio-card-content strong{display:block;font-size:.9375rem;font-weight:500;color:var(--color-text-primary)}.u-radio-card-content span{font-size:.8125rem;color:var(--color-text-secondary)}.u-inline-fields{display:flex;align-items:flex-end;gap:var(--spacing-md)}.u-inline-field{flex:1}.u-inline-field label{display:block;font-size:.75rem;color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.u-input-prefix{display:flex;align-items:center;border:1px solid var(--color-grey-300);border-radius:8px;overflow:hidden;transition:border-color .2s}.u-input-prefix:focus-within{border-color:var(--color-primary)}.u-input-prefix-text{padding:10px 12px;background:var(--color-grey-50);color:var(--color-text-secondary);font-weight:500;font-size:.875rem;border-right:1px solid var(--color-grey-200)}.u-input-prefix input{flex:1;border:none;padding:10px 12px;font-size:.9375rem;width:100%}.u-input-prefix input:focus{outline:none;box-shadow:none}.u-modal-footer{display:flex;justify-content:flex-end;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);background:var(--color-grey-50);border-top:1px solid var(--color-grey-100)}.checkbox-label{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;font-size:var(--font-size-sm);color:var(--color-text-primary)}.checkbox-label input[type=checkbox]{width:20px;height:20px;accent-color:var(--color-primary);cursor:pointer;flex-shrink:0}.checkbox-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-primary);cursor:pointer}.checkbox-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.form-group-checkbox{margin-bottom:var(--spacing-md)}.form-group-checkbox label{display:flex;align-items:flex-start;gap:var(--spacing-sm);cursor:pointer;font-size:var(--font-size-sm)}.form-group-checkbox input[type=checkbox]{margin-top:2px;width:18px;height:18px;accent-color:var(--color-primary)}.form-group-checkbox .form-help{margin-top:var(--spacing-xs);margin-left:26px;font-size:var(--font-size-xs);color:var(--color-text-secondary)}.project-selected{padding:12px 16px;background:var(--color-grey-50);border-radius:var(--radius-md);border:1px solid var(--color-grey-200)}.project-selected .project-name{font-weight:500;color:var(--color-text-primary)}.project-info{margin-top:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.template-single{display:flex;align-items:center;gap:var(--spacing-sm);padding:12px 16px;background:var(--color-grey-50);border-radius:var(--radius-md);border:1px solid var(--color-grey-200)}.template-name{font-weight:500}.template-badge-default{font-size:var(--font-size-xs);color:var(--color-primary);background:var(--color-primary-50);padding:2px 8px;border-radius:var(--radius-full)}.template-loading,.template-error{padding:12px 16px;border-radius:var(--radius-md);font-size:var(--font-size-sm)}.template-loading{background:var(--color-grey-50);color:var(--color-text-secondary)}.template-error{background:var(--color-warning-light);color:var(--color-warning-dark)}.form-hint-text{display:block;margin-top:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--color-text-secondary)}@media (max-width: 480px){.modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:95vh;margin-top:auto}.modal-overlay{align-items:flex-end;padding:0}.u-inline-fields{flex-direction:column;align-items:stretch}}.skeleton{background:linear-gradient(90deg,var(--color-grey-200) 25%,var(--color-grey-100) 50%,var(--color-grey-200) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite ease-in-out;border-radius:var(--radius-sm)}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-text{border-radius:var(--radius-sm);margin-bottom:.5em}.skeleton-circular{border-radius:50%}.skeleton-rectangular{border-radius:var(--radius-md)}.skeleton-text{display:flex;flex-direction:column;gap:.5em}.skeleton-card{padding:var(--spacing-lg)}.skeleton-card-header{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.skeleton-card-title{flex:1;display:flex;flex-direction:column;gap:.25em}.page-loading{padding:var(--spacing-xl)}.page-loading-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xl)}.page-loading-title{display:flex;flex-direction:column;gap:var(--spacing-xs)}.pagination-container{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg);padding:var(--spacing-lg) 0;margin-top:var(--spacing-md)}.pagination-info{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.pagination{display:flex;align-items:center;gap:var(--spacing-xs)}.pagination-btn{display:flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 var(--spacing-sm);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.pagination-btn:hover:not(:disabled){background:var(--color-grey-100)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-btn.active{background:var(--color-primary);color:var(--color-primary-light)}.pagination-btn.active:hover{background:var(--color-primary-dark)}.pagination-ellipsis{display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:var(--color-text-secondary)}@media (max-width: 480px){.pagination-container{flex-direction:column;gap:var(--spacing-md)}.pagination-info{order:2}}.proj-detail{max-width:1200px;margin:0 auto}.proj-back{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);font-weight:500;padding:var(--spacing-xs) var(--spacing-sm);margin-left:calc(-1 * var(--spacing-sm));margin-bottom:var(--spacing-md);border-radius:var(--radius-md);transition:all .15s}.proj-back:hover{color:var(--color-primary);background:var(--color-grey-100)}.proj-layout{display:grid;grid-template-columns:1fr 320px;gap:var(--spacing-xl);align-items:start}.proj-main{min-width:0;display:flex;flex-direction:column;gap:var(--spacing-lg)}.proj-sidebar{display:flex;flex-direction:column;gap:var(--spacing-md);position:sticky;top:var(--spacing-lg)}.proj-card{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.proj-card h3{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin:0 0 var(--spacing-md) 0}.proj-empty{text-align:center;padding:var(--spacing-xxl)}.proj-empty p{color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.proj-header-card{padding:var(--spacing-xl)}.proj-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--spacing-lg)}.proj-header-info h1{margin:0 0 var(--spacing-xs) 0;font-size:var(--font-size-2xl);font-weight:600}.proj-header-meta{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm)}.proj-client-link{color:var(--color-primary);text-decoration:none;font-weight:500}.proj-client-link:hover{text-decoration:underline}.proj-meta-dot{color:var(--color-grey-400)}.proj-status{font-weight:500}.proj-status-select{min-width:140px;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm)}.proj-description{margin:var(--spacing-lg) 0 0 0;padding-top:var(--spacing-lg);border-top:1px solid var(--color-grey-100);color:var(--color-text-secondary);white-space:pre-wrap;line-height:1.6}.proj-client-info{display:flex;align-items:flex-start;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.proj-client-avatar{width:48px;height:48px;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-lg);font-weight:600;flex-shrink:0}.proj-client-details{flex:1;min-width:0}.proj-client-name{font-weight:600;color:var(--color-text-primary);margin-bottom:2px}.proj-client-company{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:4px}.proj-client-email{font-size:var(--font-size-sm);color:var(--color-primary);text-decoration:none;word-break:break-all}.proj-client-email:hover{text-decoration:underline}.proj-client-view-btn{display:block;text-align:center;padding:var(--spacing-sm);background:var(--color-grey-50);border-radius:var(--radius-md);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);font-weight:500;transition:all .15s}.proj-client-view-btn:hover{background:var(--color-grey-100);color:var(--color-primary)}.proj-quick-actions{display:flex;flex-direction:column;gap:var(--spacing-sm)}.proj-action-btn{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;padding:var(--spacing-sm) var(--spacing-md);background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);cursor:pointer;transition:all .15s;text-align:left}.proj-action-btn:hover:not(:disabled){background:var(--color-grey-50);border-color:var(--color-primary);color:var(--color-primary)}.proj-action-btn:disabled{opacity:.5;cursor:not-allowed}.proj-action-icon{font-size:1rem}.proj-summary-list{display:flex;justify-content:space-between;text-align:center}.proj-summary-item{flex:1}.proj-summary-value{display:block;font-size:var(--font-size-2xl);font-weight:600;color:var(--color-primary)}.proj-summary-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:2px}.proj-danger-card{background:var(--color-error-light);border-color:transparent}.proj-delete-btn{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:1px solid var(--color-error);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;color:var(--color-error);cursor:pointer;transition:all .15s}.proj-delete-btn:hover{background:var(--color-error);color:#fff}.proj-phases-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg)}.proj-phases-header h2{margin:0;font-size:var(--font-size-md);font-weight:600}.proj-phases-header-left{display:flex;align-items:center;gap:var(--spacing-md)}.proj-timeline-link{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:4px 10px;background:var(--color-grey-100);color:var(--color-grey-700);text-decoration:none;border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:500;transition:all .15s ease}.proj-timeline-link:hover{background:var(--color-primary-light);color:var(--color-primary)}.proj-timeline-link svg{flex-shrink:0}.proj-phases-progress{display:flex;align-items:center;gap:var(--spacing-sm)}.proj-progress-bar{width:100px;height:6px;background:var(--color-grey-200);border-radius:3px;overflow:hidden}.proj-progress-fill{height:100%;background:var(--color-success);border-radius:3px;transition:width .3s}.proj-progress-text{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary)}.proj-phases-empty{text-align:center;padding:var(--spacing-xl);background:var(--color-grey-50);border:2px dashed var(--color-grey-300);border-radius:var(--radius-md)}.proj-phases-empty p{margin:0;color:var(--color-text-secondary)}.proj-phases-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.proj-phase-group{border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-grey-200)}.proj-phase-group.validated{border-color:var(--color-success)}.proj-phase-group.in_progress{border-color:var(--color-primary)}.proj-phase{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md)}.proj-phase-parent{background:var(--color-grey-50);cursor:pointer;transition:background .15s}.proj-phase-parent:hover{background:var(--color-grey-100)}.proj-phase-expand{width:16px;font-size:10px;color:var(--color-text-secondary);transition:transform .2s;flex-shrink:0}.proj-phase-expand.expanded{transform:rotate(90deg)}.proj-phase-expand-placeholder{width:16px;flex-shrink:0}.proj-phase-number{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;flex-shrink:0}.proj-phase-group.validated .proj-phase-parent .proj-phase-number{background:var(--color-success)}.proj-phase-group.skipped .proj-phase-parent .proj-phase-number{background:var(--color-grey-400)}.proj-phase-number-child{min-width:36px;height:24px;background:var(--color-grey-400);font-size:var(--font-size-xs)}.proj-phase.validated .proj-phase-number-child{background:var(--color-success)}.proj-phase.in_progress .proj-phase-number-child{background:var(--color-primary)}.proj-phase-content{flex:1;min-width:0}.proj-phase-name{font-weight:500;color:var(--color-text-primary);margin-bottom:4px}.proj-phase-meta{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.proj-phase-status{font-size:11px;font-weight:500;padding:2px 8px;border-radius:var(--radius-full)}.proj-phase-status.pending{background:var(--color-grey-100);color:var(--color-grey-600)}.proj-phase-status.in_progress{background:var(--color-primary-100);color:var(--color-primary-700)}.proj-phase-status.waiting_validation{background:var(--color-warning-light);color:var(--color-warning-dark)}.proj-phase-status.validated{background:var(--color-success-light);color:var(--color-success-dark)}.proj-phase-status.skipped{background:var(--color-grey-100);color:var(--color-grey-500)}.proj-phase-responsible{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.proj-phase-timing{font-size:var(--font-size-xs);font-family:var(--font-mono, monospace);color:var(--color-text-secondary);background:var(--color-grey-100);padding:2px 6px;border-radius:var(--radius-sm)}.proj-phase-count{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.proj-phase-actions{display:flex;gap:var(--spacing-xs);flex-shrink:0}.proj-phase-btn{padding:6px 12px;background:#fff;border:1px solid var(--color-grey-300);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all .15s}.proj-phase-btn:hover:not(:disabled){border-color:var(--color-grey-400);color:var(--color-text-primary)}.proj-phase-btn:disabled{opacity:.5;cursor:not-allowed}.proj-phase-btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.proj-phase-btn-primary:hover:not(:disabled){background:var(--color-primary-700);border-color:var(--color-primary-700);color:#fff}.proj-phase-children{border-top:1px solid var(--color-grey-200)}.proj-phase-child{background:#fff;padding-left:calc(var(--spacing-md) + 20px)}.proj-phase-child:not(:last-child){border-bottom:1px solid var(--color-grey-100)}.proj-child-connector{color:var(--color-grey-400);font-family:monospace;font-size:14px;margin-right:var(--spacing-xs)}@media (max-width: 900px){.proj-layout{grid-template-columns:1fr}.proj-sidebar{order:-1;flex-direction:row;flex-wrap:wrap;position:static}.proj-sidebar .proj-card{flex:1 1 200px;min-width:200px}.proj-danger-card{flex-basis:100%}}@media (max-width: 600px){.proj-header-top{flex-direction:column;gap:var(--spacing-md)}.proj-status-select{width:100%}.proj-phase-meta{display:none}.proj-phase-actions{flex-direction:column}.proj-phase-btn{padding:8px 12px}}.admin-comments{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}.admin-comments-header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.admin-comments-header h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin:0}.admin-comments-count{background:var(--color-grey-200);color:var(--color-text-secondary);font-size:var(--font-size-xs);font-weight:600;padding:2px 8px;border-radius:var(--radius-full)}.admin-comments-loading,.admin-comments-error,.admin-comments-empty{font-size:var(--font-size-sm);color:var(--color-text-secondary);text-align:center;padding:var(--spacing-md)}.admin-comments-error{color:var(--color-error)}.admin-comments-list{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-bottom:var(--spacing-md);max-height:400px;overflow-y:auto}.admin-comment{background:var(--color-grey-50);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);position:relative}.admin-comment.client{background:var(--color-primary-50);border-left:3px solid var(--color-primary)}.admin-comment.team{background:var(--color-grey-50);border-left:3px solid var(--color-grey-400)}.admin-comment-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xs)}.admin-comment-author{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}.admin-comment-badge{font-size:var(--font-size-xs);font-weight:500;padding:2px 6px;border-radius:var(--radius-sm)}.admin-comment-badge.client{background:var(--color-primary-100);color:var(--color-primary)}.admin-comment-badge.team{background:var(--color-grey-200);color:var(--color-text-secondary)}.admin-comment-date{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.admin-comment-content{font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:pre-wrap;line-height:1.5}.admin-comment-actions{display:flex;gap:var(--spacing-xs);margin-top:var(--spacing-xs);justify-content:flex-end}.admin-comment-edit{margin-top:var(--spacing-xs)}.admin-comment-edit textarea{width:100%;padding:var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-family:inherit;resize:vertical;min-height:60px}.admin-comment-edit-actions{display:flex;gap:var(--spacing-xs);justify-content:flex-end;margin-top:var(--spacing-xs)}.admin-comment-form{display:flex;gap:var(--spacing-sm);align-items:flex-start}.admin-comment-form textarea{flex:1;padding:var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-family:inherit;resize:vertical;min-height:60px}.admin-comment-form textarea:focus{outline:none;border-color:var(--color-primary)}.admin-comment-form .btn{white-space:nowrap}.proj-phase-comments-btn{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:4px 8px;font-size:var(--font-size-xs);color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s}.proj-phase-comments-btn:hover{background:var(--color-grey-100);border-color:var(--color-grey-400)}.proj-phase-comments-btn.has-comments{color:var(--color-primary);border-color:var(--color-primary-300);background:var(--color-primary-50)}.proj-phase-thread-btn{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:4px 8px;font-size:var(--font-size-xs);color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);text-decoration:none;transition:all .15s}.proj-phase-thread-btn:hover{background:var(--color-primary-50);border-color:var(--color-primary);color:var(--color-primary)}.proj-design-page{padding:var(--spacing-lg);max-width:900px}.proj-design-header{margin-bottom:var(--spacing-lg)}.proj-design-back{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);margin-bottom:var(--spacing-sm)}.proj-design-back:hover{color:var(--color-primary)}.proj-design-title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0}.proj-design-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.proj-design-empty{text-align:center;padding:var(--spacing-xl);background:var(--color-grey-50);border-radius:var(--radius-md)}.proj-design-empty p{color:var(--color-text-secondary);margin-bottom:var(--spacing-md)}.proj-design-category{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.proj-design-category.dragging{opacity:.5;border-color:var(--color-primary)}.proj-design-category-empty{background:var(--color-grey-50);border-style:dashed}.proj-design-category-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-grey-50);border-bottom:1px solid var(--color-border)}.proj-design-category-drag{cursor:grab;color:var(--color-text-tertiary);font-size:16px;-webkit-user-select:none;user-select:none}.proj-design-category-drag:active{cursor:grabbing}.proj-design-category-name{flex:1;font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin:0}.proj-design-visibility-toggle{background:none;border:none;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);opacity:.5;transition:opacity .15s}.proj-design-visibility-toggle:hover{opacity:.8}.proj-design-visibility-toggle.visible{opacity:1}.proj-design-links{padding:var(--spacing-sm)}.proj-design-links-empty{color:var(--color-text-tertiary);font-size:var(--font-size-sm);text-align:center;padding:var(--spacing-md)}.proj-design-link{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);transition:background .15s}.proj-design-link:hover{background:var(--color-grey-50)}.proj-design-link.dragging{opacity:.5;background:var(--color-primary-50)}.proj-design-link-new{background:var(--color-grey-50);border:1px dashed var(--color-border);margin-top:var(--spacing-xs)}.proj-design-link-drag{cursor:grab;color:var(--color-text-tertiary);font-size:14px;-webkit-user-select:none;user-select:none}.proj-design-link-drag:active{cursor:grabbing}.proj-design-link-title{flex:1;color:var(--color-primary);text-decoration:none;font-weight:500}.proj-design-link-title:hover{text-decoration:underline}.proj-design-link-actions{display:flex;gap:var(--spacing-xs);opacity:0;transition:opacity .15s}.proj-design-link:hover .proj-design-link-actions{opacity:1}.proj-design-link-edit{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-sm);flex:1}.proj-design-link-edit input[type=text],.proj-design-link-edit input[type=url]{flex:1;min-width:150px;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.proj-design-link-edit input:focus{outline:none;border-color:var(--color-primary)}.proj-design-link-visible-label{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap}.proj-design-link-edit-actions{display:flex;gap:var(--spacing-xs)}.proj-design-empty-categories{margin-top:var(--spacing-xl);padding-top:var(--spacing-lg);border-top:1px dashed var(--color-border)}.proj-design-empty-categories h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin:0 0 var(--spacing-xs) 0;text-transform:uppercase;letter-spacing:.5px}.proj-design-empty-hint{font-size:var(--font-size-sm);color:var(--color-text-tertiary);margin:0 0 var(--spacing-md) 0}.proj-design-empty-categories .proj-design-category{margin-bottom:var(--spacing-sm)}.portal-invite-section{margin-top:1rem}.portal-link-container{display:flex;gap:.5rem}.portal-link-input{flex:1;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:.875rem;background:var(--color-surface);color:var(--color-text)}.portal-link-input:focus{outline:none;border-color:var(--color-primary)}.portal-link-expiry{margin-top:.5rem;font-size:.875rem;color:var(--color-text-secondary)}.btn-success{background:var(--color-success);color:#fff;border-color:var(--color-success)}.portal-status{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.portal-status-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;border-radius:9999px;font-size:.875rem;font-weight:500}.portal-status-badge.active{background:var(--color-success-light, #dcfce7);color:var(--color-success-dark, #166534)}.portal-status-badge.expired{background:var(--color-warning-light, #fef3c7);color:var(--color-warning-dark, #92400e)}.portal-status-badge.none{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.portal-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem;padding:1rem;background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border)}.portal-info-item{display:flex;flex-direction:column;gap:.25rem}.portal-info-item label{font-size:.75rem;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.portal-info-item span{font-size:.9375rem;color:var(--color-text)}.portal-actions{display:flex;gap:.5rem;margin-bottom:1rem}.session-history{margin-top:1.5rem}.session-history h3{font-size:.9375rem;font-weight:600;margin-bottom:.75rem;color:var(--color-text)}.session-list{display:flex;flex-direction:column;gap:.5rem;max-height:300px;overflow-y:auto}.session-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem}.session-item.revoked{opacity:.6}.session-info{display:flex;flex-direction:column;gap:.25rem}.session-date{font-weight:500;color:var(--color-text)}.session-details{font-size:.8125rem;color:var(--color-text-secondary)}.session-status{font-size:.75rem;padding:.125rem .5rem;border-radius:9999px}.session-status.active{background:var(--color-success-light, #dcfce7);color:var(--color-success-dark, #166534)}.session-status.revoked{background:var(--color-error-light, #fee2e2);color:var(--color-error-dark, #991b1b)}.contact-primary-toggle{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);padding:var(--spacing-md);margin-bottom:var(--spacing-lg);background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none}.contact-primary-toggle:hover{border-color:var(--color-grey-300);background:var(--color-grey-100)}.contact-primary-toggle.active{background:var(--color-primary-50);border-color:var(--color-primary-200)}.contact-primary-toggle.active:hover{background:var(--color-primary-100);border-color:var(--color-primary-300)}.contact-primary-toggle-content{display:flex;align-items:flex-start;gap:var(--spacing-sm);flex:1}.contact-primary-toggle-icon{font-size:1.25rem;line-height:1;flex-shrink:0;opacity:.5;transition:opacity var(--transition-fast)}.contact-primary-toggle.active .contact-primary-toggle-icon{opacity:1}.contact-primary-toggle-text{display:flex;flex-direction:column;gap:2px}.contact-primary-toggle-text strong{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.contact-primary-toggle-text span{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:1.4}.contact-primary-toggle-switch{position:relative;width:44px;height:24px;background:var(--color-grey-300);border-radius:12px;transition:background var(--transition-fast);flex-shrink:0}.contact-primary-toggle-switch.on{background:var(--color-primary)}.contact-primary-toggle-switch-handle{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;transition:transform var(--transition-fast)}.contact-primary-toggle-switch.on .contact-primary-toggle-switch-handle{transform:translate(20px)}.badge-sent{background:var(--color-primary-100);color:var(--color-primary-700)}.badge-viewed{background:#fef3c7;color:#b45309}.badge-accepted{background:var(--color-success-light);color:var(--color-success-dark)}.badge-rejected{background:var(--color-error-light);color:var(--color-error-dark)}.badge-expired{background:var(--color-grey-100);color:var(--color-grey-500)}.badge-cancelled{background:var(--color-grey-100);color:var(--color-grey-400);text-decoration:line-through}.badge-revoked{background:#fce7f3;color:#be185d}.status-pill{display:inline-flex;align-items:center;padding:4px 12px;border-radius:var(--radius-md);font-size:12px;font-weight:500}.status-draft{background:var(--color-grey-100);color:var(--color-grey-600)}.status-sent{background:var(--color-primary-100);color:var(--color-primary-700)}.status-viewed{background:#fef3c7;color:#b45309}.status-accepted{background:var(--color-success-light);color:var(--color-success-dark)}.status-rejected{background:var(--color-error-light);color:var(--color-error-dark)}.status-expired{background:var(--color-grey-100);color:var(--color-grey-500)}.status-cancelled{background:var(--color-grey-100);color:var(--color-grey-400)}.status-revoked{background:#fce7f3;color:#be185d}.quote-detail-page{max-width:1200px}.quote-detail-title{display:flex;align-items:center;gap:var(--spacing-md);flex-wrap:wrap}.quote-detail-title h1{font-size:var(--font-size-2xl);font-weight:600;color:var(--color-grey-900);margin:0}.quote-pdf-preview{margin-bottom:var(--spacing-lg);height:700px;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-grey-200)}.quote-detail-layout{display:grid;grid-template-columns:1fr 340px;gap:var(--spacing-xl);align-items:start}.quote-detail-main{min-width:0}.quote-detail-sidebar{display:flex;flex-direction:column;gap:var(--spacing-md);position:sticky;top:var(--spacing-lg)}.template-selector-card{background:var(--color-grey-50);border:1px solid var(--color-grey-200)}.template-selector-card h3{display:flex;align-items:center;gap:var(--spacing-xs)}.template-selector{display:flex;flex-direction:column;gap:var(--spacing-md)}.template-current{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-md)}.template-icon{color:var(--color-primary);flex-shrink:0}.template-info{display:flex;flex-direction:column;gap:2px;min-width:0}.template-name{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.template-badge{font-size:10px;font-weight:500;letter-spacing:.3px;color:var(--color-primary-700);background:var(--color-primary-100);padding:2px 6px;border-radius:var(--radius-full);width:fit-content}.template-change{display:flex;flex-direction:column;gap:var(--spacing-xs)}.template-change-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:500}.template-select-wrapper{position:relative;display:flex;align-items:center}.template-select-modern{width:100%;padding:var(--spacing-sm) var(--spacing-md);padding-right:36px;font-size:var(--font-size-sm)}.template-select-modern:disabled{opacity:.7;cursor:not-allowed;background-color:var(--color-grey-50)}.quote-content-card{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.quote-options-list{display:flex;flex-direction:column;gap:var(--spacing-lg)}.quote-option-card{border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);overflow:hidden}.quote-option-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);background:var(--color-grey-50);border-bottom:1px solid var(--color-grey-200)}.quote-option-title{display:flex;align-items:center;gap:var(--spacing-sm)}.option-number{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--color-primary);color:#fff;border-radius:50%;font-size:11px;font-weight:600}.option-name{font-weight:600;color:var(--color-text-primary)}.quote-option-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.quote-option-actions .btn-icon-sm{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all .15s}.quote-option-actions .btn-icon-sm:hover{background:var(--color-grey-200);color:var(--color-primary)}.quote-option-actions .btn-icon-sm.btn-danger:hover{background:var(--color-error-light);color:var(--color-error-dark)}.quote-option-actions .btn-icon-sm:disabled{opacity:.5;cursor:not-allowed}.quote-option-actions .btn-spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--color-grey-300);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.quote-option-amount{font-weight:600;color:var(--color-primary);font-size:var(--font-size-lg)}.quote-option-body{padding:var(--spacing-md)}.option-description{margin-bottom:var(--spacing-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:1.6}.option-columns{display:flex;flex-direction:column;gap:var(--spacing-sm)}.option-column{background:var(--color-grey-50);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md)}.column-title{font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.column-sections{display:flex;flex-direction:column;gap:var(--spacing-xs)}.section-item{font-size:var(--font-size-sm)}.section-title{font-weight:500;color:var(--color-text-primary)}.section-description{color:var(--color-text-secondary);margin-left:var(--spacing-sm)}.quote-notes{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-grey-200)}.quote-notes h4{font-size:var(--font-size-xs);letter-spacing:.3px;color:var(--color-grey-500);font-weight:600;text-transform:uppercase;margin-bottom:var(--spacing-sm)}.quote-notes p{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.6;margin:0;white-space:pre-wrap}.quote-create-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.quote-create-form .form-group{margin-bottom:0}.quote-create-form .modal-actions{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}@media (max-width: 900px){.quote-detail-layout{grid-template-columns:1fr}.quote-detail-sidebar{order:-1;flex-direction:row;flex-wrap:wrap;position:static}.sidebar-card{flex:1;min-width:200px}.sidebar-actions{width:100%}.action-buttons{flex-direction:row;flex-wrap:wrap}.action-btn{flex:1 1 auto;min-width:150px}}.signature-status{display:flex;align-items:flex-start;gap:var(--spacing-sm);padding:var(--spacing-md);border-radius:var(--radius-md);margin-bottom:var(--spacing-md)}.signature-status svg{flex-shrink:0;margin-top:2px}.signature-status strong{display:block;font-size:var(--font-size-sm);margin-bottom:2px}.signature-status--signed{background:var(--color-success-light);color:var(--color-success-dark)}.signature-status--signed svg{color:var(--color-success)}.signature-status--pending{background:var(--color-primary-100);color:var(--color-primary-700)}.signature-status--pending svg{color:var(--color-primary)}.signature-status--expired{background:#fef3c7;color:#b45309}.signature-status--expired svg{color:#f59e0b}.signature-status--revoked{background:#fce7f3;color:#be185d}.signature-status--revoked svg{color:#ec4899}.signature-actions{display:flex;flex-direction:column;gap:var(--spacing-sm)}.signature-actions .action-btn{width:100%;justify-content:center}.signature-history{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}.signature-history__toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--spacing-sm) 0;background:none;border:none;cursor:pointer;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);transition:color .2s}.signature-history__toggle:hover{color:var(--color-text-primary)}.signature-history__timeline{padding-left:var(--spacing-sm);margin-top:var(--spacing-sm)}.signature-history__event{display:flex;gap:var(--spacing-sm);padding-bottom:var(--spacing-md);position:relative}.signature-history__event:last-child{padding-bottom:0}.signature-history__event:not(:last-child):before{content:"";position:absolute;left:4px;top:12px;bottom:0;width:1px;background:var(--color-grey-200)}.signature-history__dot{width:9px;height:9px;border-radius:50%;background:var(--color-primary);flex-shrink:0;margin-top:4px}.signature-history__content{display:flex;flex-direction:column;gap:2px}.signature-history__action{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.signature-history__date{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.signature-history__actor{font-size:var(--font-size-xs);color:var(--color-grey-400)}.signature-mode-options{display:flex;flex-direction:column;gap:var(--spacing-sm)}.signature-mode-option{display:flex;align-items:flex-start;gap:var(--spacing-md);padding:var(--spacing-md);border:2px solid var(--color-grey-200);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.signature-mode-option:hover{border-color:var(--color-grey-300);background:var(--color-grey-50)}.signature-mode-option.active{border-color:var(--color-primary);background:var(--color-primary-50)}.signature-mode-option input[type=radio]{display:none}.signature-mode-content{display:flex;align-items:flex-start;gap:var(--spacing-md);flex:1}.signature-mode-content svg{flex-shrink:0;color:var(--color-grey-500)}.signature-mode-option.active .signature-mode-content svg{color:var(--color-primary)}.signature-mode-content>div{display:flex;flex-direction:column;gap:2px}.signature-mode-content strong{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary)}.signature-mode-content span{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.signature-link-result{text-align:center}.signature-link-box{background:var(--color-grey-50);padding:var(--spacing-md);border-radius:var(--radius-md)}.signature-link-box .form-control{text-align:center;background:#fff}.signature-link-box .btn{display:inline-flex;align-items:center;justify-content:center}.status-selector-card h3{display:flex;align-items:center;gap:var(--spacing-xs)}.status-selector{display:flex;flex-direction:column;gap:var(--spacing-md)}.status-current{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm)}.status-current .status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-current.status-draft{background:var(--color-grey-100);color:var(--color-grey-700)}.status-current.status-draft .status-dot{background:var(--color-grey-500)}.status-current.status-sent{background:var(--color-primary-100);color:var(--color-primary-700)}.status-current.status-sent .status-dot{background:var(--color-primary)}.status-current.status-viewed{background:#fef3c7;color:#b45309}.status-current.status-viewed .status-dot{background:#f59e0b}.status-current.status-accepted{background:var(--color-success-light);color:var(--color-success-dark)}.status-current.status-accepted .status-dot{background:var(--color-success)}.status-current.status-rejected{background:var(--color-error-light);color:var(--color-error-dark)}.status-current.status-rejected .status-dot{background:var(--color-error)}.status-current.status-expired{background:var(--color-grey-100);color:var(--color-grey-500)}.status-current.status-expired .status-dot{background:var(--color-grey-400)}.status-current.status-cancelled{background:var(--color-grey-100);color:var(--color-grey-400)}.status-current.status-cancelled .status-dot{background:var(--color-grey-300)}.status-current.status-revoked{background:#fce7f3;color:#be185d}.status-current.status-revoked .status-dot{background:#ec4899}.status-change{display:flex;flex-direction:column;gap:var(--spacing-xs)}.status-change-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:500}.status-select-wrapper{position:relative;display:flex;align-items:center}.status-select-modern{width:100%;padding:var(--spacing-sm) var(--spacing-md);padding-right:36px;font-size:var(--font-size-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);background:#fff;cursor:pointer;transition:all var(--transition-fast)}.status-select-modern:hover:not(:disabled){border-color:var(--color-primary)}.status-select-modern:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}.status-select-modern:disabled{opacity:.7;cursor:not-allowed;background-color:var(--color-grey-50)}.status-loading{position:absolute;right:8px;display:flex;align-items:center}.status-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-style:italic;margin-top:var(--spacing-xs)}.option-editor-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.option-editor-form .form-error{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-error-light);color:var(--color-error-dark);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.editor-section{background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);padding:var(--spacing-md)}.editor-section h3{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-md)}.editor-section .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md)}.editor-section .section-header h3{margin:0}.prefill-buttons{display:flex;align-items:center;gap:var(--spacing-xs)}.prefill-label{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.form-row{display:flex;gap:var(--spacing-md)}.form-row .form-group{flex:1}.form-row .form-group.flex-2{flex:2}.form-row .form-group.flex-1{flex:1}.option-editor-form .form-group{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.option-editor-form .form-group:last-child{margin-bottom:0}.option-editor-form label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-grey-700)}.option-editor-form input[type=text],.option-editor-form input[type=number],.option-editor-form textarea{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);background:#fff;transition:border-color .15s}.option-editor-form input:focus,.option-editor-form textarea:focus{outline:none;border-color:var(--color-primary)}.option-editor-form textarea{resize:vertical;min-height:80px}.input-with-suffix{display:flex;align-items:center;background:#fff;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);overflow:hidden}.input-with-suffix input{flex:1;border:none!important;border-radius:0!important}.input-with-suffix span{padding:0 var(--spacing-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500;background:var(--color-grey-100);height:100%;display:flex;align-items:center}.price-display{padding:var(--spacing-sm) var(--spacing-md);background:#fff;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-weight:600;color:var(--color-primary);font-size:var(--font-size-sm)}.columns-container{display:flex;flex-direction:column;gap:var(--spacing-md)}.column-editor{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-sm);padding:var(--spacing-md)}.column-header{display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.column-title-input{flex:1;font-weight:600!important}.section-row{display:flex;gap:var(--spacing-sm);align-items:center}.section-title-input{flex:1}.section-desc-input{flex:2}.section-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin:0 0 var(--spacing-sm)}.list-editor{display:flex;flex-direction:column;gap:var(--spacing-xs)}.list-item-row{display:flex;gap:var(--spacing-sm);align-items:center}.list-item-row input{flex:1}.btn-icon-sm{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--color-grey-100);border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:16px;cursor:pointer;transition:all .15s;flex-shrink:0}.btn-icon-sm:hover{background:var(--color-grey-200);color:var(--color-text-primary)}.btn-add-section{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);margin-top:var(--spacing-sm);background:none;border:1px dashed var(--color-grey-300);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:all .15s}.btn-add-section:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.btn-sm{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs)}.option-editor-form .modal-actions{display:flex;justify-content:flex-end;gap:var(--spacing-sm);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}@media (max-width: 768px){.form-row,.section-row{flex-direction:column}.section-title-input,.section-desc-input{flex:none;width:100%}}.pdf-preview{display:flex;flex-direction:column;height:100%;min-height:600px;background:var(--color-grey-100);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-grey-200)}.pdf-preview__header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-white);border-bottom:1px solid var(--color-grey-200)}.pdf-preview__title{margin:0;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.pdf-preview__actions{display:flex;gap:var(--spacing-xs)}.pdf-preview__btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease;text-decoration:none}.pdf-preview__btn:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.pdf-preview__btn--close:hover{background:var(--color-error-light);color:var(--color-error)}.pdf-preview__container{flex:1;position:relative;display:flex;align-items:center;justify-content:center}.pdf-preview__iframe{width:100%;height:100%;border:none;background:var(--color-white)}.pdf-preview__loading,.pdf-preview__error{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md);background:var(--color-grey-50);color:var(--color-text-secondary)}.pdf-preview__spinner{width:40px;height:40px;border:3px solid var(--color-grey-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.pdf-preview__error{color:var(--color-text-secondary)}.pdf-preview__error svg{color:var(--color-grey-400)}.pdf-preview__error p{margin:0;font-size:var(--font-size-sm)}.pdf-preview--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;border-radius:0;min-height:auto}.templates-nav{margin-bottom:var(--spacing-lg)}.templates-nav-link{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);transition:color .15s}.templates-nav-link:hover{color:var(--color-primary)}.template-slug{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.template-format code{font-size:var(--font-size-xs);padding:2px 6px;background:var(--color-grey-100);border-radius:var(--radius-sm)}.badge-default{background:var(--color-primary-100);color:var(--color-primary-700)}.template-create-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.template-create-form .form-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.template-create-form label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.template-create-form input,.template-create-form select,.template-create-form textarea{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:border-color .15s}.template-create-form input:focus,.template-create-form select:focus,.template-create-form textarea:focus{outline:none;border-color:var(--color-primary)}.template-create-form .form-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary);padding:var(--spacing-sm);background:var(--color-grey-50);border-radius:var(--radius-sm)}.template-create-form .form-hint-text{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.template-create-form .form-error{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-error-light);color:var(--color-error-dark);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.template-create-form .modal-actions{display:flex;justify-content:flex-end;gap:var(--spacing-sm);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}.checkbox-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.checkbox-item{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;font-size:var(--font-size-sm)}.checkbox-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary)}.template-detail-page,.template-detail-page.with-preview{max-width:100%}.template-detail-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg);margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-grey-200)}.header-left{display:flex;align-items:center;gap:var(--spacing-md);min-width:0}.template-detail-header .back-link{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--color-text-secondary);text-decoration:none;border-radius:var(--radius-md);transition:all .15s;flex-shrink:0}.template-detail-header .back-link:hover{background:var(--color-grey-100);color:var(--color-primary)}.header-left h1{font-size:var(--font-size-xl);font-weight:600;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge-editing{background:var(--color-warning-light);color:var(--color-warning-dark);font-size:var(--font-size-xs);padding:4px 8px;border-radius:var(--radius-sm);font-weight:500;white-space:nowrap}.badge-editing.has-changes{background:var(--color-error-light);color:var(--color-error-dark);animation:pulse-warning 2s infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.7}}.template-detail-actions{display:flex;gap:var(--spacing-sm);align-items:center;flex-shrink:0}.template-detail-actions .btn svg{margin-right:var(--spacing-xs)}.template-detail-actions .btn.has-changes{animation:pulse-save 1.5s infinite}@keyframes pulse-save{0%,to{box-shadow:0 0 0 0 var(--ring-color)}50%{box-shadow:0 0 0 4px transparent}}.template-layout{display:flex;gap:var(--spacing-lg)}.template-editor-column{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--spacing-lg)}.template-detail-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.template-card{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.template-card h3{font-size:var(--font-size-md);font-weight:600;margin:0 0 var(--spacing-md) 0;color:var(--color-text-primary)}.template-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md)}.template-card-header h3{margin:0}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-lg)}.form-group label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary)}.form-group input,.form-group select{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:border-color .15s}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--color-primary)}.form-value{font-size:var(--font-size-sm);color:var(--color-text-primary)}.form-value code{font-size:var(--font-size-sm);padding:2px 6px;background:var(--color-grey-100);border-radius:var(--radius-sm)}.template-meta{display:flex;gap:var(--spacing-lg);margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-grey-200);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.code-editor{width:100%;min-height:300px;padding:var(--spacing-md);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:1.5;border:1px solid var(--color-grey-300);border-radius:var(--radius-md);background:var(--color-grey-50);resize:vertical}.code-editor:focus{outline:none;border-color:var(--color-primary)}.code-preview{margin:0;padding:var(--spacing-md);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:1.5;background:var(--color-grey-50);border-radius:var(--radius-md);overflow-x:auto;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.sections-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.section-card{padding:var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md);border:1px solid var(--color-grey-200)}.section-header{display:flex;align-items:center;gap:var(--spacing-md)}.section-type{display:inline-block;padding:2px 8px;font-size:var(--font-size-xs);font-weight:500;background:var(--color-primary-100);color:var(--color-primary-700);border-radius:var(--radius-sm)}.section-title{flex:1;font-weight:500;color:var(--color-text-primary)}.section-actions{display:flex;gap:var(--spacing-xs)}.section-order{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:var(--spacing-xs)}.text-muted{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.btn-icon-sm{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all .15s}.btn-icon-sm:hover{background:var(--color-grey-200);color:var(--color-primary)}.btn-icon-sm.btn-danger:hover{background:var(--color-error-light);color:var(--color-error-dark)}.page-header-actions{display:flex;gap:var(--spacing-sm);align-items:center}.modal-preview{width:90vw;max-width:1200px;height:90vh;max-height:90vh;display:flex;flex-direction:column}.modal-preview .modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--color-grey-200);flex-shrink:0}.modal-preview .modal-header h2{margin:0;font-size:var(--font-size-lg);font-weight:600}.modal-header-actions{display:flex;gap:var(--spacing-sm);align-items:center}.modal-header-actions .btn{display:inline-flex;align-items:center;gap:var(--spacing-xs)}.modal-preview .preview-body{flex:1;padding:0;overflow:hidden}.preview-iframe{width:100%;height:100%;border:none;background:var(--color-grey-100)}.preview-loading,.preview-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--spacing-md);color:var(--color-text-secondary)}.preview-error{color:var(--color-error-dark)}.preview-error svg{opacity:.5}.spinner{animation:spin 1s linear infinite}.btn-sm{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}.btn-sm svg{flex-shrink:0}.preview-buttons{display:flex;gap:var(--spacing-sm)}.preview-badge{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-grey-100);border-radius:var(--radius-sm)}.preview-toggle{display:flex;gap:2px;background:var(--color-grey-200);padding:2px;border-radius:var(--radius-md)}.preview-toggle .btn{border-radius:calc(var(--radius-md) - 2px)}.preview-toggle .btn-secondary{background:transparent;border-color:transparent}.preview-toggle .btn-secondary:hover{background:var(--color-grey-100)}.code-editor-wrapper{border:1px solid var(--color-grey-300);border-radius:var(--radius-md);background:var(--color-grey-50);overflow:auto;max-height:600px}.code-editor-syntax{min-height:300px;position:relative}.code-editor-syntax textarea,.code-editor-syntax pre{box-sizing:border-box!important;margin:0!important;border:none!important;font-family:SF Mono,Monaco,Inconsolata,Fira Code,Fira Mono,Roboto Mono,Consolas,Liberation Mono,Courier New,monospace!important;font-size:13px!important;font-weight:400!important;font-style:normal!important;line-height:1.5!important;letter-spacing:0!important;word-spacing:normal!important;text-transform:none!important;text-indent:0!important;text-shadow:none!important;text-rendering:auto!important;-webkit-font-smoothing:auto!important;white-space:pre-wrap!important;word-break:break-word!important;word-wrap:break-word!important;overflow-wrap:break-word!important;tab-size:2!important;-moz-tab-size:2!important;vertical-align:top!important;text-align:left!important}.code-editor-syntax textarea{outline:none!important;-webkit-text-fill-color:transparent!important;resize:none!important;background:transparent!important;caret-color:#24292e!important}.code-editor-syntax pre{background:transparent!important;pointer-events:none!important}.code-editor-syntax pre code,.code-editor-syntax code{display:inline!important;padding:0!important;margin:0!important;border:none!important;background:transparent!important;font:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;white-space:inherit!important;word-break:inherit!important;vertical-align:baseline!important}.code-editor-syntax .token{display:inline!important;padding:0!important;margin:0!important;border:none!important;background:transparent!important;font:inherit!important;line-height:inherit!important}.code-editor-wrapper .token,.code-preview .token{color:#24292e;background:none}.code-editor-wrapper .token.tag,.code-preview .token.tag{color:#22863a}.code-editor-wrapper .token.attr-name,.code-preview .token.attr-name{color:#6f42c1}.code-editor-wrapper .token.attr-value,.code-preview .token.attr-value{color:#032f62}.code-editor-wrapper .token.punctuation,.code-preview .token.punctuation{color:#24292e}.code-editor-wrapper .token.property,.code-preview .token.property{color:#005cc5}.code-editor-wrapper .token.selector,.code-preview .token.selector{color:#22863a}.code-editor-wrapper .token.string,.code-preview .token.string{color:#032f62}.code-editor-wrapper .token.number,.code-preview .token.number{color:#005cc5}.code-editor-wrapper .token.unit,.code-preview .token.unit{color:#e36209}.code-editor-wrapper .token.comment,.code-preview .token.comment{color:#6a737d;font-style:italic}.code-editor-wrapper .token.keyword,.code-preview .token.keyword,.code-editor-wrapper .token.atrule,.code-preview .token.atrule{color:#d73a49}.code-editor-wrapper .token.boolean,.code-preview .token.boolean,.code-editor-wrapper .token.constant,.code-preview .token.constant{color:#005cc5}.code-editor-wrapper .token.function,.code-preview .token.function,.code-editor-wrapper .token.class-name,.code-preview .token.class-name{color:#6f42c1}.code-editor-wrapper .token.doctype,.code-preview .token.doctype,.code-editor-wrapper .token.prolog,.code-preview .token.prolog,.code-editor-wrapper .token.cdata,.code-preview .token.cdata{color:#6a737d}.resize-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;cursor:col-resize}.template-detail-page.is-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.template-detail-page.is-resizing *{-webkit-user-select:none;user-select:none;pointer-events:none}.template-detail-page.is-resizing .resize-handle,.template-detail-page.is-resizing .resize-overlay{pointer-events:auto}.resize-handle{width:12px;cursor:col-resize;background:transparent;position:relative;flex-shrink:0;margin:0 -6px;z-index:10}.resize-handle:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:4px;height:48px;background:var(--color-grey-300);border-radius:2px;transition:background .15s,height .15s}.resize-handle:hover:before,.is-resizing .resize-handle:before{background:var(--color-primary);height:80px}.resize-handle:active:before{background:var(--color-primary)}.template-preview-panel{min-width:300px;max-width:800px;flex-shrink:0;background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);display:flex;flex-direction:column;position:sticky;top:var(--spacing-lg);height:calc(100vh - 180px);max-height:900px}.preview-panel-header{display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-md);border-bottom:1px solid var(--color-grey-200);flex-shrink:0}.preview-header-row{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-sm)}.preview-panel-title{display:flex;align-items:center;gap:var(--spacing-sm)}.preview-panel-title h3{margin:0;font-size:var(--font-size-md);font-weight:600}.preview-header-actions{display:flex;align-items:center;gap:var(--spacing-xs)}.preview-controls-right{display:flex;align-items:center;gap:var(--spacing-sm)}.auto-refresh-toggle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:background .15s}.auto-refresh-toggle:hover{background:var(--color-grey-100)}.auto-refresh-toggle input{width:14px;height:14px;accent-color:var(--color-primary)}.preview-mode-toggle{display:flex;background:var(--color-grey-200);padding:2px;border-radius:var(--radius-sm)}.preview-mode-toggle button{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);font-weight:500;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;border-radius:calc(var(--radius-sm) - 2px);transition:all .15s}.preview-mode-toggle button:hover{color:var(--color-text-primary)}.preview-mode-toggle button.active{background:#fff;color:var(--color-primary);box-shadow:0 1px 2px #0000001a}.zoom-controls{display:flex;align-items:center;gap:2px;background:var(--color-grey-100);padding:2px;border-radius:var(--radius-sm)}.zoom-level{min-width:42px;text-align:center;font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary);cursor:pointer;padding:0 var(--spacing-xs);transition:color .15s}.zoom-level:hover{color:var(--color-primary)}.zoom-fit{border-left:1px solid var(--color-grey-300);margin-left:2px;padding-left:4px}.btn-icon-sm.is-loading svg{animation:spin 1s linear infinite}.template-preview-panel.is-loading{position:relative}.template-preview-panel.is-loading:after{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--color-primary),transparent);animation:loading-bar 1.5s ease-in-out infinite}@keyframes loading-bar{0%{transform:translate(-100%)}to{transform:translate(100%)}}.preview-zoom-container{width:100%;height:100%;overflow:auto;background:var(--color-grey-200)}.preview-zoom-container .preview-iframe{display:block;border:none;background:#fff}.preview-panel-content{flex:1;overflow:hidden;background:var(--color-grey-50)}.preview-panel-content .preview-iframe{width:100%;height:100%;border:none;background:#fff}.preview-panel-content .preview-loading,.preview-panel-content .preview-error,.preview-panel-content .preview-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--spacing-sm);color:var(--color-text-secondary);text-align:center;padding:var(--spacing-lg)}.preview-panel-content .preview-error{color:var(--color-error-dark)}.preview-empty p{font-size:var(--font-size-sm)}@media (max-width: 1200px){.template-preview-panel{min-width:300px}}@media (max-width: 900px){.template-layout{flex-direction:column}.resize-handle{display:none}.template-preview-panel{width:100%!important;max-width:100%;min-width:100%;position:static;height:500px;order:-1}}.settings-page{max-width:1200px}.settings-page .page-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md);flex-wrap:wrap}.page-header-actions .btn-ghost{display:flex;align-items:center;gap:var(--spacing-xs)}.settings-layout{display:grid;grid-template-columns:240px 1fr;gap:var(--spacing-xl);margin-top:var(--spacing-lg)}@media (max-width: 900px){.settings-layout{grid-template-columns:200px 1fr;gap:var(--spacing-lg)}}@media (max-width: 768px){.settings-layout{grid-template-columns:1fr}}.settings-sidebar{position:sticky;top:var(--spacing-lg);align-self:start;display:flex;flex-direction:column;gap:var(--spacing-xs)}.settings-tab{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;text-align:left;font-size:var(--font-size-sm);color:var(--color-text-secondary);transition:all .15s ease}.settings-tab:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.settings-tab.active{background:var(--color-primary-light);color:var(--color-primary);font-weight:500}.settings-tab-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.settings-tab-icon svg{color:currentColor}.settings-tab-label{flex:1}@media (max-width: 768px){.settings-sidebar{position:static;flex-direction:row;flex-wrap:wrap;gap:var(--spacing-xs);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-grey-200);margin-bottom:var(--spacing-md)}.settings-tab{flex:0 0 auto;padding:var(--spacing-xs) var(--spacing-sm)}.settings-tab-label{display:none}}.settings-content{min-width:0}.setting-section{margin-bottom:var(--spacing-lg)}.setting-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--spacing-md);margin-bottom:var(--spacing-sm)}.setting-section-title-row{display:flex;align-items:center;gap:var(--spacing-sm)}.setting-section-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--color-primary);flex-shrink:0}.setting-section-title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0}.setting-section-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--spacing-lg);line-height:1.5}.setting-section-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.setting-reset-btn{display:flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text-secondary);font-size:var(--font-size-sm);white-space:nowrap}.setting-reset-btn:hover{color:var(--color-text-primary)}.setting-item{display:flex;flex-direction:column;gap:var(--spacing-xs)}.setting-item-header{display:flex;flex-direction:column;gap:2px}.setting-item-label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.required-mark{color:var(--color-error);margin-left:2px}.setting-item-description{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin:0;line-height:1.4}.setting-item-control{display:flex;flex-direction:column;gap:var(--spacing-xs)}.setting-item-control input,.setting-item-control textarea,.setting-item-control select{width:100%}.setting-item-default{font-size:var(--font-size-xs);color:var(--color-text-tertiary);font-style:italic}.setting-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-md)}.setting-row-2{grid-template-columns:repeat(2,1fr)}.setting-row-3{grid-template-columns:repeat(3,1fr)}.setting-row-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 768px){.setting-row,.setting-row-2,.setting-row-3,.setting-row-4{grid-template-columns:1fr}}@media (min-width: 769px) and (max-width: 1024px){.setting-row-4{grid-template-columns:repeat(2,1fr)}}.setting-group{display:flex;flex-direction:column;gap:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}.setting-group:first-child{padding-top:0;border-top:none}.setting-group-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);text-transform:uppercase;letter-spacing:.5px;margin:0}.setting-group-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;line-height:1.5}.input-with-suffix{display:flex;align-items:center;gap:0;position:relative}.input-with-suffix input{flex:1;padding-right:50px!important;border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.input-suffix{position:absolute;right:0;height:100%;padding:0 var(--spacing-sm);display:flex;align-items:center;background:var(--color-grey-100);border:1px solid var(--color-grey-300);border-left:none;border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary);min-width:40px;justify-content:center}.toggle-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.toggle-item{display:flex;align-items:flex-start;gap:var(--spacing-sm);cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-md);transition:background .15s ease}.toggle-item:hover{background:var(--color-grey-50)}.toggle-item input[type=checkbox]{width:18px;height:18px;cursor:pointer;flex-shrink:0;margin-top:2px}.toggle-item-content{display:flex;flex-direction:column;gap:2px;flex:1}.toggle-item-label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.toggle-item-desc{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:1.4}.toggle-switch{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer}.toggle-switch input[type=checkbox]{display:none}.toggle-slider{position:relative;width:44px;height:24px;background:var(--color-grey-300);border-radius:12px;transition:background .2s ease;flex-shrink:0}.toggle-slider:before{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s ease;box-shadow:0 1px 3px #0003}.toggle-switch input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-label{font-size:var(--font-size-sm);color:var(--color-text-primary)}.info-box{display:flex;align-items:flex-start;gap:var(--spacing-sm);background:var(--color-info-light);border:1px solid var(--color-info);border-radius:var(--radius-md);padding:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-info-dark);line-height:1.5}.code-textarea{font-family:SF Mono,Monaco,Consolas,Liberation Mono,monospace;font-size:var(--font-size-sm);line-height:1.5;resize:vertical}.logo-preview{margin-top:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md);border:1px solid var(--color-grey-200)}.preview-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;font-weight:600;margin-bottom:var(--spacing-sm)}.logo-preview-content{display:flex;align-items:center;justify-content:flex-start;min-height:60px}.logo-preview-content svg{max-width:200px;max-height:80px}.emitters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-md)}.emitter-card-link{text-decoration:none;color:inherit}.emitters-grid .emitter-card{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);transition:all .15s ease;min-height:72px}.emitter-card-link:hover .emitter-card{background:#fff;border-color:var(--color-primary-light);box-shadow:0 2px 8px #00000014}.emitter-avatar{width:40px;height:40px;border-radius:50%;background:var(--color-primary-light);color:var(--color-primary);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:var(--font-size-md);flex-shrink:0;overflow:hidden}.emitter-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.emitter-info strong{font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.emitter-meta{font-size:var(--font-size-xs);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.emitter-card-add .emitter-card{justify-content:center;border-style:dashed;background:transparent;color:var(--color-text-secondary);gap:var(--spacing-sm)}.emitter-card-add:hover .emitter-card{background:var(--color-grey-50);border-style:solid;color:var(--color-primary)}.add-icon{font-size:1.5rem;line-height:1}.extension-presets{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.preset-chip{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-grey-100);border:1px solid var(--color-grey-300);border-radius:var(--radius-full);font-size:var(--font-size-sm);cursor:pointer;transition:all .15s ease}.preset-chip:hover{background:var(--color-grey-200)}.preset-chip.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.extensions-list{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);padding:var(--spacing-sm);background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);min-height:48px;align-items:center}.extension-tag{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:2px 8px;background:#fff;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-family:SF Mono,Monaco,Consolas,monospace}.extension-tag button{display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;background:transparent;border:none;border-radius:50%;cursor:pointer;color:var(--color-text-secondary);font-size:14px;line-height:1}.extension-tag button:hover{background:var(--color-grey-200);color:var(--color-text-primary)}.extension-input{flex:1;min-width:100px;max-width:120px;padding:var(--spacing-xs);background:#fff;border:1px dashed var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-family:SF Mono,Monaco,Consolas,monospace}.extension-input:focus{outline:none;border-color:var(--color-primary);border-style:solid}.extensions-blocked{display:flex;align-items:baseline;gap:var(--spacing-sm);margin-top:var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.blocked-label{font-weight:500;white-space:nowrap}.blocked-list{font-family:SF Mono,Monaco,Consolas,monospace;color:var(--color-error)}.setting-group-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--spacing-md) 0}.signatures-list{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.signature-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-md)}.signature-item-content{display:flex;flex-direction:column;gap:var(--spacing-xs);flex:1}.signature-name-input{font-weight:500;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.signature-content-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-style:italic}.signature-name-input:focus,.signature-content-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.btn-icon-danger{color:var(--color-text-secondary);background:transparent;border:none;padding:var(--spacing-xs);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s ease}.btn-icon-danger:hover{color:var(--color-error);background:var(--color-error-light)}.empty-state{grid-column:1 / -1;text-align:center;padding:var(--spacing-xl);color:var(--color-text-secondary)}.settings-tabs{display:flex;flex-direction:column;gap:var(--spacing-xs)}.tab-icon{font-size:1.1rem;width:24px;text-align:center}.tab-label{flex:1}.form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-md)}@media (max-width: 640px){.form-row,.form-row-3{grid-template-columns:1fr}}.settings-section{margin-bottom:var(--spacing-lg)}.settings-section h2{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.settings-section h3{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin-top:var(--spacing-lg);margin-bottom:var(--spacing-sm);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}.settings-section h3:first-of-type{margin-top:var(--spacing-md);padding-top:0;border-top:none}.section-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.form-hint-box{background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);padding:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:var(--spacing-md) 0}.toggle-inline{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;margin-top:var(--spacing-lg)}.toggle-inline input[type=checkbox]{width:18px;height:18px}.emitters-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.emitters-list .emitter-card{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-md)}.emitter-type{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.emitter-email{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.settings-actions{display:flex;justify-content:flex-end;padding-top:var(--spacing-lg);border-top:1px solid var(--color-grey-200);margin-top:var(--spacing-lg)}.logo-textarea{font-family:SF Mono,Monaco,Consolas,monospace;font-size:var(--font-size-sm);line-height:1.5}.preset-btn{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-grey-100);border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;transition:all .15s ease}.preset-btn:hover{background:var(--color-grey-200)}.preset-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.extensions-list.blocked{background:var(--color-error-light);border-color:var(--color-error)}.extension-tag.blocked{background:var(--color-error-light);border-color:var(--color-error);color:var(--color-error)}.extensions-list.blocked-user{background:var(--color-warning-light);border-color:var(--color-warning);flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}.extensions-list.blocked-user .extensions-label{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary);width:100%}.extensions-list.blocked-user .extension-tag.blocked{background:var(--color-warning-light);border-color:var(--color-warning-dark);color:var(--color-warning-dark)}.extensions-add-blocked{display:flex;align-items:center;gap:var(--spacing-sm)}.extensions-add-blocked .extension-input{max-width:200px;border-color:var(--color-error)}.extensions-add-blocked .extension-input::placeholder{color:var(--color-error);opacity:.6}.extensions-blocked-system{margin-top:var(--spacing-md)}.blocked-toggle{display:flex;align-items:center;gap:var(--spacing-sm);background:none;border:none;padding:var(--spacing-sm) 0;cursor:pointer;color:var(--color-text-secondary);font-size:var(--font-size-sm);transition:color .15s ease}.blocked-toggle:hover{color:var(--color-text-primary)}.blocked-toggle-icon{font-size:10px;width:12px;color:var(--color-error)}.blocked-toggle-label{font-weight:500}.blocked-categories{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-top:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);max-height:400px;overflow-y:auto}.blocked-category{display:flex;flex-direction:column;gap:4px;padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-grey-200)}.blocked-category:last-child{padding-bottom:0;border-bottom:none}.blocked-category-label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-error);text-transform:uppercase;letter-spacing:.5px}.blocked-category-exts{font-size:var(--font-size-xs);font-family:SF Mono,Monaco,Consolas,monospace;color:var(--color-text-secondary);line-height:1.6;word-break:break-word}.dropbox-connection{display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-lg);background:linear-gradient(135deg,#f0f7ff,#f8fbff);border:1px solid #d0e3f7;border-radius:var(--radius-lg)}.dropbox-connection-header{display:flex;align-items:flex-start;gap:var(--spacing-md)}.dropbox-connection-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:var(--radius-md);color:#0061fe;flex-shrink:0;box-shadow:0 1px 3px #0000001a}.dropbox-connection-icon.connected{background:#0061fe;color:#fff}.dropbox-connection-info{flex:1;min-width:0}.dropbox-connection-title{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary)}.dropbox-status-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:500}.dropbox-status-badge.connected{background:var(--color-success-light);color:var(--color-success-dark)}.dropbox-status-badge.disconnected{background:var(--color-grey-100);color:var(--color-text-secondary)}.dropbox-connection-details{display:flex;flex-direction:column;gap:2px;margin-top:var(--spacing-xs)}.dropbox-account-name{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.dropbox-account-email{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.dropbox-connection-description{margin:var(--spacing-xs) 0 0 0;font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5}.dropbox-connection-actions{display:flex;gap:var(--spacing-sm)}.dropbox-connection-info-box{display:flex;align-items:flex-start;gap:var(--spacing-sm);padding:var(--spacing-md);background:#fff;border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5}.dropbox-connection-info-box p{margin:0}.dropbox-connection-info-box code{background:var(--color-grey-100);padding:1px 4px;border-radius:var(--radius-sm);font-family:SF Mono,Monaco,Consolas,monospace;font-size:var(--font-size-xs)}.dropbox-connection-info-box strong{color:var(--color-text-primary)}.notification-webhooks-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.notification-webhook-item{display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-grey-50);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);transition:all .15s ease}.notification-webhook-item.enabled{background:var(--color-success-light);border-color:var(--color-success)}.notification-webhook-header{display:flex;align-items:center;gap:var(--spacing-sm)}.notification-webhook-icon{font-size:1.25rem;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:var(--radius-sm);flex-shrink:0}.notification-webhook-info{flex:1;min-width:0}.notification-webhook-label{display:block;font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary)}.notification-webhook-desc{display:block;font-size:var(--font-size-xs);color:var(--color-text-secondary)}.notification-webhook-status{font-size:var(--font-size-xs);font-weight:500;padding:2px 8px;border-radius:var(--radius-full);flex-shrink:0}.notification-webhook-status.on{background:var(--color-success);color:#fff}.notification-webhook-status.off{background:var(--color-grey-200);color:var(--color-text-secondary)}.notification-webhook-input-row{display:flex;align-items:center;gap:var(--spacing-sm)}.notification-webhook-input{flex:1;padding:var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-family:SF Mono,Monaco,Consolas,monospace;background:#fff}.notification-webhook-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.notification-webhook-item.enabled .notification-webhook-input{border-color:var(--color-success)}.notification-webhook-item.enabled .notification-webhook-input:focus{box-shadow:0 0 0 2px #22c55e33}.design-categories-settings{display:flex;flex-direction:column;gap:var(--spacing-md)}.design-categories-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.design-categories-empty{padding:var(--spacing-lg);text-align:center;color:var(--color-text-secondary);background:var(--color-grey-50);border-radius:var(--radius-md);border:1px dashed var(--color-grey-300)}.design-category-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-md);transition:all .15s ease}.design-category-item:hover{border-color:var(--color-grey-300);box-shadow:var(--shadow-sm)}.design-category-item.dragging{opacity:.5;border-style:dashed}.design-category-item.design-category-new{background:var(--color-primary-light);border-color:var(--color-primary)}.design-category-drag-handle{cursor:grab;color:var(--color-grey-400);font-size:1rem;-webkit-user-select:none;user-select:none;padding:var(--spacing-xs)}.design-category-drag-handle:active{cursor:grabbing}.design-category-name{flex:1;font-weight:500;color:var(--color-text-primary)}.design-category-stats{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-right:var(--spacing-sm)}.design-category-actions{display:flex;gap:var(--spacing-xs);opacity:0;transition:opacity .15s ease}.design-category-item:hover .design-category-actions{opacity:1}.design-category-edit{display:flex;align-items:center;gap:var(--spacing-sm);flex:1}.design-category-edit input{flex:1;padding:var(--spacing-sm);border:1px solid var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.design-category-edit input:focus{outline:none;box-shadow:0 0 0 2px var(--color-primary-light)}.design-categories-loading .skeleton{background:linear-gradient(90deg,var(--color-grey-100) 25%,var(--color-grey-200) 50%,var(--color-grey-100) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.emitters-page{max-width:1200px}.emitters-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-lg)}.emitters-page .page-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--spacing-xs)}.emitters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:var(--spacing-lg)}@media (max-width: 768px){.emitters-grid{grid-template-columns:1fr}}.emitter-card{display:flex;flex-direction:column;gap:var(--spacing-md)}.emitter-header{display:flex;align-items:center;gap:var(--spacing-md)}.emitter-avatar{width:48px;height:48px;border-radius:var(--radius-md);background:var(--color-primary-light);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}.emitter-avatar img{width:100%;height:100%;object-fit:cover}.emitter-avatar span{font-size:var(--font-size-lg);font-weight:600;color:var(--color-primary)}.emitter-title{flex:1;min-width:0}.emitter-title h3{font-size:var(--font-size-md);font-weight:600;margin:0;color:var(--color-text-primary)}.emitter-type-badge{display:inline-block;font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px;padding:2px 8px;border-radius:var(--radius-sm);margin-top:4px}.emitter-type-badge.individual{background:var(--color-info-light);color:var(--color-info)}.emitter-type-badge.collective{background:var(--color-success-light);color:var(--color-success)}.emitter-details{display:flex;flex-direction:column;gap:var(--spacing-xs);padding:var(--spacing-sm) 0;border-top:1px solid var(--color-grey-200);border-bottom:1px solid var(--color-grey-200)}.detail-row{display:flex;justify-content:space-between;align-items:flex-start;font-size:var(--font-size-sm);gap:var(--spacing-sm)}.detail-label{color:var(--color-text-secondary);flex-shrink:0}.detail-value{color:var(--color-text-primary);text-align:right;word-break:break-word}.emitter-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.emitter-actions{display:flex;gap:var(--spacing-sm);margin-top:auto}.empty-state{text-align:center;padding:var(--spacing-xl) var(--spacing-lg)}.empty-state h3{font-size:var(--font-size-lg);margin-bottom:var(--spacing-sm)}.empty-state p{color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.emitter-detail-page{max-width:900px}.emitter-detail-page .page-header{margin-bottom:var(--spacing-lg)}.emitter-detail-page .page-header h1{font-size:var(--font-size-xl);font-weight:600}.form-section{margin-bottom:var(--spacing-lg);padding:var(--spacing-lg)}.form-section h2{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-grey-200)}.form-section h3{font-size:var(--font-size-md);font-weight:600;margin-top:var(--spacing-lg);margin-bottom:var(--spacing-md)}.form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.form-row-3{grid-template-columns:repeat(3,1fr)}@media (max-width: 768px){.form-row,.form-row-3{grid-template-columns:1fr}}.form-group-sm{max-width:150px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.input-with-action{display:flex;gap:var(--spacing-sm)}.input-with-action input{flex:1}.address-row{padding:var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md);margin-bottom:var(--spacing-md)}.address-row .form-row{margin-bottom:0;align-items:flex-end}.remove-btn{color:var(--color-error)}.remove-btn:hover{background:var(--color-error-light)}.form-actions{display:flex;justify-content:flex-end;gap:var(--spacing-md);margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-grey-200)}.pt-detail{max-width:800px;margin:0 auto}.pt-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg)}.pt-back{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);font-weight:500;padding:var(--spacing-xs) var(--spacing-sm);margin-left:calc(-1 * var(--spacing-sm));border-radius:var(--radius-md);transition:all .15s}.pt-back:hover{color:var(--color-primary);background:var(--color-grey-100)}.pt-header-actions{display:flex;gap:var(--spacing-sm)}.pt-card{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);margin-bottom:var(--spacing-lg)}.pt-info{padding:var(--spacing-lg)}.pt-info-main{display:flex;align-items:center;gap:var(--spacing-lg)}.pt-name-input{flex:1;font-size:1.25rem;font-weight:600;padding:var(--spacing-sm) 0;border:none;border-bottom:2px solid transparent;background:transparent;transition:border-color .2s}.pt-name-input:focus{outline:none;border-bottom-color:var(--color-primary)}.pt-name-input::placeholder{color:var(--color-grey-400);font-weight:400}.pt-toggle{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0}.pt-toggle input{display:none}.pt-toggle-track{position:relative;width:44px;height:24px;background:var(--color-grey-300);border-radius:12px;transition:background .2s}.pt-toggle-track:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;transition:transform .2s}.pt-toggle input:checked+.pt-toggle-track{background:var(--color-primary)}.pt-toggle input:checked+.pt-toggle-track:after{transform:translate(20px)}.pt-toggle-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);white-space:nowrap}.pt-toggle input:checked~.pt-toggle-label{color:var(--color-primary);font-weight:500}.pt-description-input{width:100%;margin-top:var(--spacing-md);padding:var(--spacing-sm) 0;border:none;background:transparent;resize:none;font-size:var(--font-size-sm);color:var(--color-text-secondary);border-top:1px solid var(--color-grey-100);padding-top:var(--spacing-md)}.pt-description-input:focus{outline:none;color:var(--color-text-primary)}.pt-description-input::placeholder{color:var(--color-grey-400)}.pt-phases{padding:var(--spacing-lg)}.pt-phases-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg)}.pt-phases-header h2{margin:0;font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary)}.pt-phases-count{font-size:var(--font-size-sm);color:var(--color-text-secondary);background:var(--color-grey-100);padding:4px 12px;border-radius:var(--radius-full)}.pt-phases-empty{text-align:center;padding:var(--spacing-xxl) var(--spacing-xl);background:var(--color-grey-50);border:2px dashed var(--color-grey-300);border-radius:var(--radius-lg)}.pt-phases-empty-icon{font-size:2.5rem;margin-bottom:var(--spacing-md)}.pt-phases-empty p{margin:0;color:var(--color-text-secondary)}.pt-phases-empty-hint{font-size:var(--font-size-sm);margin-top:var(--spacing-xs)!important;color:var(--color-grey-400)!important}.pt-phases-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.pt-phase-group{border-radius:var(--radius-lg);transition:all .2s}.pt-phase-group.drag-over{box-shadow:0 0 0 2px var(--color-primary)}.pt-phase{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);border-radius:var(--radius-md);transition:all .15s;cursor:default}.pt-phase:hover{background:var(--color-grey-50)}.pt-phase.dragging{opacity:.4}.pt-phase.drag-over{background:var(--color-primary-50)}.pt-phase-parent{background:var(--color-grey-50);border:1px solid var(--color-grey-200)}.pt-phase-parent:hover{background:var(--color-grey-100);border-color:var(--color-grey-300)}.pt-children{margin-left:20px;padding-left:var(--spacing-md);border-left:2px solid var(--color-grey-200)}.pt-phase-child{background:transparent;margin-left:var(--spacing-sm)}.pt-phase-child:hover{background:var(--color-grey-50)}.pt-child-connector{color:var(--color-grey-400);font-family:monospace;font-size:14px;margin-right:var(--spacing-xs);-webkit-user-select:none;user-select:none}.pt-phase-handle{display:flex;align-items:center;justify-content:center;width:20px;height:28px;cursor:grab;color:var(--color-grey-400);font-size:12px;letter-spacing:2px;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm);transition:all .15s;flex-shrink:0}.pt-phase-handle:hover{color:var(--color-primary);background:var(--color-primary-50)}.pt-phase-handle:active{cursor:grabbing}.pt-phase-number{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;flex-shrink:0}.pt-phase-number-child{min-width:36px;height:24px;background:var(--color-grey-400);font-size:var(--font-size-xs)}.pt-phase-content{flex:1;min-width:0;display:flex;align-items:center;gap:var(--spacing-sm)}.pt-phase-name{font-weight:500;color:var(--color-text-primary);cursor:text}.pt-phase-name:hover{color:var(--color-primary)}.pt-phase-inline-input{flex:1;font-size:inherit;font-weight:500;padding:4px 8px;border:1px solid var(--color-primary);border-radius:var(--radius-sm);background:#fff}.pt-phase-inline-input:focus{outline:none;box-shadow:0 0 0 3px var(--color-primary-100)}.pt-phase-badge{font-size:10px;font-weight:500;padding:2px 8px;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.3px}.pt-badge-validation{background:var(--color-warning-light);color:var(--color-warning-dark)}.pt-phase-meta{display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.pt-phase-timing{font-size:var(--font-size-xs);font-family:var(--font-mono, "SF Mono", monospace);color:var(--color-text-secondary);background:var(--color-grey-100);padding:2px 8px;border-radius:var(--radius-sm)}.pt-phase-responsible{font-size:11px;font-weight:500;padding:3px 10px;border-radius:var(--radius-full)}.badge-owner{background:var(--color-grey-100);color:var(--color-grey-600)}.badge-tomi{background:#dbeafe;color:#1d4ed8}.badge-anais{background:#fce7f3;color:#be185d}.badge-both{background:#ede9fe;color:#7c3aed}.pt-phase-menu-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-grey-400);font-size:16px;cursor:pointer;transition:all .15s;opacity:0;flex-shrink:0}.pt-phase:hover .pt-phase-menu-btn{opacity:1}.pt-phase-menu-btn:hover{background:var(--color-grey-200);color:var(--color-text-primary)}.pt-add-zone{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);width:100%;padding:var(--spacing-md);margin-top:var(--spacing-md);background:transparent;border:2px dashed var(--color-grey-300);border-radius:var(--radius-lg);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all .15s}.pt-add-zone:hover{background:var(--color-grey-50);border-color:var(--color-primary);color:var(--color-primary)}.pt-add-icon{font-size:1.25rem;font-weight:300}.pt-add-zone-active{background:var(--color-grey-50);border-style:solid;border-color:var(--color-primary);justify-content:flex-start;gap:var(--spacing-sm);cursor:default}.pt-add-zone-active input{flex:1;padding:var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.pt-add-zone-active input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}.pt-add-inline{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md)}.pt-add-child{margin-left:48px;padding-left:var(--spacing-lg)}.pt-add-inline input{flex:1;padding:var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.pt-add-inline input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}.pt-context-menu{position:fixed;z-index:1000;min-width:180px;background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);box-shadow:0 8px 24px #0000001f;padding:var(--spacing-xs);animation:contextMenuIn .1s ease-out}@keyframes contextMenuIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.pt-context-item{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-primary);cursor:pointer;transition:background .1s;text-align:left}.pt-context-item:hover{background:var(--color-grey-100)}.pt-context-icon{width:16px;text-align:center;color:var(--color-text-secondary)}.pt-context-divider{height:1px;background:var(--color-grey-200);margin:var(--spacing-xs) 0}.pt-context-danger{color:var(--color-error)}.pt-context-danger:hover{background:var(--color-error-light)}.pt-context-danger .pt-context-icon{color:var(--color-error)}.pt-edit-modal{width:100%;max-width:480px}.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md)}.pt-chips{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.pt-chip{padding:8px 16px;border:1px solid var(--color-grey-300);border-radius:var(--radius-full);background:#fff;font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all .15s}.pt-chip:hover{border-color:var(--color-grey-400)}.pt-chip.active{color:#fff;border-color:transparent}.pt-chip.active.badge-owner{background:var(--color-grey-600)}.pt-chip.active.badge-tomi{background:#2563eb}.pt-chip.active.badge-anais{background:#db2777}.pt-chip.active.badge-both{background:#7c3aed}.pt-validation-options{display:flex;flex-direction:column;gap:var(--spacing-sm)}.pt-validation-option{display:flex;align-items:flex-start;gap:var(--spacing-sm);padding:var(--spacing-md);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);cursor:pointer;transition:all .15s}.pt-validation-option:hover{border-color:var(--color-grey-300);background:var(--color-grey-50)}.pt-validation-option.active{border-color:var(--color-primary);background:var(--color-primary-50)}.pt-validation-option input{margin-top:2px;accent-color:var(--color-primary)}.pt-validation-option-content{display:flex;flex-direction:column;gap:2px}.pt-validation-option-content strong{font-size:var(--font-size-sm);font-weight:600}.pt-validation-option-content span{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.pt-empty-state{text-align:center;padding:var(--spacing-xxl)}.pt-empty-state p{color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.btn-ghost{background:transparent;border:none;color:var(--color-text-secondary);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);cursor:pointer;border-radius:var(--radius-md);transition:all .15s}.btn-ghost:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.btn-ghost.btn-danger{color:var(--color-error)}.btn-ghost.btn-danger:hover{background:var(--color-error-light)}.btn-ghost.btn-danger:disabled{color:var(--color-grey-400);cursor:not-allowed}.btn-ghost.btn-danger:disabled:hover{background:transparent}.btn-sm{padding:6px 12px;font-size:var(--font-size-sm)}.template-description{color:var(--color-text-secondary);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge-default{display:inline-flex;align-items:center;padding:2px 8px;font-size:10px;font-weight:500;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.3px}@media (max-width: 640px){.pt-info-main{flex-direction:column;align-items:stretch;gap:var(--spacing-md)}.pt-toggle{justify-content:space-between}.pt-phase-meta{display:none}.pt-phase-content{flex-wrap:wrap}.form-row-2{grid-template-columns:1fr}.pt-context-menu{left:16px!important;right:16px;width:auto}}.mail-templates-page{max-width:1200px}.mail-templates-page .page-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md);flex-wrap:wrap}.mail-templates-layout{display:grid;grid-template-columns:220px 1fr;gap:var(--spacing-xl);margin-top:var(--spacing-lg)}@media (max-width: 900px){.mail-templates-layout{grid-template-columns:180px 1fr;gap:var(--spacing-lg)}}@media (max-width: 768px){.mail-templates-layout{grid-template-columns:1fr}}.mail-templates-sidebar{position:sticky;top:var(--spacing-lg);align-self:start;display:flex;flex-direction:column;gap:var(--spacing-xs)}.mail-templates-sidebar-title{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;padding:var(--spacing-xs) var(--spacing-sm);margin-bottom:var(--spacing-xs)}.category-tab{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;text-align:left;font-size:var(--font-size-sm);color:var(--color-text-secondary);transition:all .15s ease;width:100%}.category-tab:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.category-tab.active{background:var(--color-primary-light);color:var(--color-primary);font-weight:500}.category-tab-left{display:flex;align-items:center;gap:var(--spacing-sm)}.category-tab-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.category-tab-icon svg{width:18px;height:18px}.category-tab-label{flex:1}.category-tab-count{font-size:var(--font-size-xs);padding:2px 6px;border-radius:var(--radius-full);background:var(--color-grey-200);color:var(--color-text-secondary);min-width:20px;text-align:center}.category-tab.active .category-tab-count{background:var(--color-primary);color:#fff}@media (max-width: 768px){.mail-templates-sidebar{position:static;flex-direction:row;flex-wrap:wrap;gap:var(--spacing-xs);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-grey-200);margin-bottom:var(--spacing-md)}.mail-templates-sidebar-title{display:none}.category-tab{flex:0 0 auto;padding:var(--spacing-xs) var(--spacing-sm)}.category-tab-label,.category-tab-count{display:none}}.mail-templates-content{min-width:0}.mail-templates-content-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap}.mail-templates-content-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0}.search-input{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);width:250px;max-width:100%}.search-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.templates-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.template-item{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease}.template-item:hover{background:var(--color-grey-50);border-color:var(--color-primary-light);box-shadow:0 2px 8px #0000000f}.template-item:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.template-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--color-grey-100);border-radius:var(--radius-md);flex-shrink:0}.template-icon svg{width:20px;height:20px;color:var(--color-text-secondary)}.template-info{flex:1;min-width:0}.template-name{font-size:var(--font-size-md);font-weight:500;color:var(--color-text-primary);margin:0 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.template-subject{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.template-meta{display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.variable-badge{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-grey-100);padding:4px 8px;border-radius:var(--radius-sm)}.template-actions{display:flex;gap:var(--spacing-xs)}.template-actions .btn-icon{opacity:0;transition:opacity .15s ease}.template-item:hover .template-actions .btn-icon{opacity:1}.empty-state-icon{width:64px;height:64px;margin:0 auto var(--spacing-md);color:var(--color-grey-400)}.mail-template-detail{max-width:1400px}.mail-template-detail .page-header{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.mail-template-detail .page-header h1{flex:1;margin:0}.btn-back{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:transparent;border:none;border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all .15s ease}.btn-back:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.btn-back svg{width:18px;height:18px;flex-shrink:0}.template-editor-layout{display:grid;grid-template-columns:1fr 400px;gap:var(--spacing-xl);align-items:start}@media (max-width: 1100px){.template-editor-layout{grid-template-columns:1fr 350px;gap:var(--spacing-lg)}}@media (max-width: 900px){.template-editor-layout{grid-template-columns:1fr}}.editor-panel{display:flex;flex-direction:column;gap:var(--spacing-lg)}.editor-section{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.editor-section-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);text-transform:uppercase;letter-spacing:.5px;margin:0 0 var(--spacing-md) 0}@media (max-width: 600px){.form-row{grid-template-columns:1fr}}.form-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.form-group.full-width{grid-column:1 / -1}.form-group label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.form-group input,.form-group select,.form-group textarea{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:border-color .15s ease,box-shadow .15s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin:0}.form-hint code{background:var(--color-grey-100);padding:2px 6px;border-radius:var(--radius-xs);font-family:var(--font-mono);font-size:var(--font-size-xs)}.form-hint a{color:var(--color-primary);text-decoration:none}.form-hint a:hover{text-decoration:underline}.signature-selector{display:flex;flex-direction:column;gap:var(--spacing-sm)}.signature-mode-tabs{display:flex;gap:var(--spacing-xs);border-bottom:1px solid var(--color-border);padding-bottom:var(--spacing-xs)}.signature-mode-tab{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary);background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s ease}.signature-mode-tab:hover{color:var(--color-text-primary)}.signature-mode-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.signature-preview-text{font-size:var(--font-size-sm);color:var(--color-text-primary);background:var(--color-grey-50);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);margin:var(--spacing-xs) 0 0 0;font-style:italic}.editor-container{border:1px solid var(--color-grey-300);border-radius:var(--radius-md);overflow:hidden}.editor-toolbar{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm);background:var(--color-grey-50);border-bottom:1px solid var(--color-grey-200);flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:2px}.toolbar-divider{width:1px;height:24px;background:var(--color-grey-300);margin:0 var(--spacing-xs)}.toolbar-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:600;transition:all .15s ease}.toolbar-btn:hover{background:var(--color-grey-200);color:var(--color-text-primary)}.toolbar-btn.active{background:var(--color-primary-light);color:var(--color-primary)}.toolbar-btn svg{width:18px;height:18px}.variable-dropdown{position:relative}.variable-dropdown-btn{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background .15s ease}.variable-dropdown-btn:hover{background:var(--color-primary-dark)}.variable-dropdown-btn svg{width:16px;height:16px}.variable-dropdown-menu{position:absolute;top:100%;left:0;margin-top:var(--spacing-xs);min-width:260px;background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-md);box-shadow:0 4px 16px #0000001f;z-index:100;padding:var(--spacing-xs) 0;max-height:320px;overflow-y:auto}.variable-dropdown-item{display:flex;flex-direction:column;gap:2px;padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:background .15s ease}.variable-dropdown-item:hover,.variable-dropdown-item:focus{background:var(--color-grey-50);outline:none}.variable-dropdown-item:focus-visible{background:var(--color-primary-light)}.variable-key{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);font-family:var(--font-mono)}.variable-label{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.editor-content{min-height:250px;padding:var(--spacing-md)}.editor-content .ProseMirror{min-height:200px;outline:none}.editor-content .ProseMirror p{margin:0 0 var(--spacing-sm) 0}.editor-content .ProseMirror p:last-child{margin-bottom:0}.editor-content .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--color-text-tertiary);pointer-events:none;float:left;height:0}.editor-content .ProseMirror ul,.editor-content .ProseMirror ol{margin:0 0 var(--spacing-sm) 0;padding-left:var(--spacing-lg)}.editor-content .ProseMirror a{color:var(--color-primary);text-decoration:underline}.preview-panel{position:sticky;top:var(--spacing-lg)}.preview-card{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);overflow:hidden}.preview-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);background:var(--color-grey-50);border-bottom:1px solid var(--color-grey-200)}.preview-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);text-transform:uppercase;letter-spacing:.5px;margin:0}.copy-btn{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:#fff;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-xs);color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease}.copy-btn:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.copy-btn.copied{background:var(--color-success-light);border-color:var(--color-success);color:var(--color-success)}.copy-btn:disabled{opacity:.5;cursor:not-allowed}.copy-btn svg{width:14px;height:14px}.preview-client-selector{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-grey-50);border-bottom:1px solid var(--color-border)}.preview-client-selector label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.preview-client-selector select{flex:1;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);color:var(--color-text-primary);cursor:pointer}.preview-client-selector select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.preview-content{padding:var(--spacing-lg)}.preview-subject-label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--spacing-xs)}.preview-subject{font-size:var(--font-size-md);font-weight:500;color:var(--color-text-primary);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-sm);margin-bottom:var(--spacing-md)}.preview-body-label{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--spacing-xs)}.preview-body{font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:1.6;white-space:pre-wrap;word-break:break-word}.preview-empty{text-align:center;padding:var(--spacing-xl);color:var(--color-text-tertiary);font-size:var(--font-size-sm)}.preview-variables{margin-top:var(--spacing-lg);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}.preview-variables-title{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--spacing-sm)}.preview-variables-list{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.preview-variable-tag{display:inline-flex;align-items:center;padding:2px 8px;background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-family:var(--font-mono)}.form-actions{display:flex;gap:var(--spacing-sm);padding-top:var(--spacing-lg);border-top:1px solid var(--color-grey-200);margin-top:var(--spacing-lg)}@media (max-width: 900px){.preview-panel{position:static}}.loading-state{display:flex;align-items:center;justify-content:center;padding:var(--spacing-xxl);color:var(--color-text-secondary)}.layout{display:flex;min-height:100vh}.sidebar{width:280px;background:var(--color-bg-paper);border-right:1px solid var(--color-grey-200);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:50}.sidebar-header{padding:var(--spacing-lg) var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-md);border-bottom:1px solid var(--color-grey-100)}.sidebar-header h1{font-size:var(--font-size-xl);font-weight:600;margin:0;color:var(--color-primary);letter-spacing:-.5px}.sidebar-header .logo{height:24px;width:auto}.mobile-header .logo{height:20px;width:auto}.sidebar-nav{flex:1;padding:var(--spacing-sm) 0;overflow-y:auto}.nav-section{padding:var(--spacing-sm) var(--spacing-md)}.nav-section-title{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;padding:var(--spacing-sm) var(--spacing-md);margin:0}.nav-link{display:flex;align-items:center;gap:var(--spacing-md);padding:12px var(--spacing-lg);margin:2px var(--spacing-sm);color:var(--color-text-primary);text-decoration:none;border-radius:var(--radius-full);font-weight:500;font-size:var(--font-size-sm);transition:all var(--transition-fast)}.nav-link:hover{background:var(--color-grey-100);text-decoration:none}.nav-link.active{background:var(--color-primary-100);color:var(--color-primary-700)}.nav-link.active .nav-icon{color:var(--color-primary)}.nav-icon{font-size:20px;width:24px;text-align:center;color:var(--color-text-secondary);transition:color var(--transition-fast)}.nav-link:hover .nav-icon{color:var(--color-text-primary)}.nav-section-label{font-size:.6875rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.08em;padding:var(--spacing-md) var(--spacing-lg) var(--spacing-xs);margin-top:var(--spacing-sm)}.sidebar-footer{padding:var(--spacing-md);border-top:1px solid var(--color-grey-100);background:var(--color-grey-50)}.user-card{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm);border-radius:var(--radius-md);margin-bottom:var(--spacing-sm)}.user-avatar{width:40px;height:40px;border-radius:50%;background:var(--color-primary);color:var(--color-primary-light);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:var(--font-size-sm)}.user-info{flex:1;min-width:0}.user-name{display:block;font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{display:block;font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.logout-btn{width:100%;padding:10px var(--spacing-md);background:transparent;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm)}.logout-btn:hover{background:var(--color-grey-100);border-color:var(--color-grey-400);color:var(--color-text-primary)}.main-content{flex:1;margin-left:280px;padding:var(--spacing-xl);background:var(--color-bg-default);min-height:100vh}.mobile-header{display:none;position:fixed;top:0;left:0;right:0;height:56px;background:var(--color-bg-paper);border-bottom:1px solid var(--color-grey-200);padding:0 var(--spacing-md);align-items:center;gap:var(--spacing-md);z-index:40}.mobile-header h1{font-size:var(--font-size-lg);font-weight:600;margin:0;color:var(--color-primary)}.hamburger-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:transparent;border:none;border-radius:var(--radius-full);color:var(--color-text-primary);cursor:pointer;transition:background var(--transition-fast)}.hamburger-btn:hover{background:var(--color-grey-100)}.close-sidebar-btn{display:none;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;border-radius:var(--radius-full);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);margin-left:auto}.close-sidebar-btn:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:45}@media (max-width: 1024px){.sidebar{width:240px}.main-content{margin-left:240px}}@media (max-width: 768px){.mobile-header,.close-sidebar-btn{display:flex}.sidebar-overlay{display:block}.sidebar{transform:translate(-100%);transition:transform var(--transition-normal);box-shadow:var(--shadow-xl)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0;padding-top:calc(56px + var(--spacing-lg))}}.toast-container{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:var(--z-toast);display:flex;flex-direction:column;gap:12px;pointer-events:none;max-width:calc(100vw - 32px);width:400px}.toast{position:relative;display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:var(--color-grey-900);border-radius:var(--radius-md);box-shadow:0 8px 24px #00000029,0 2px 8px #00000014;pointer-events:auto;overflow:hidden;outline:none;transition:transform .2s ease,opacity .2s ease}.toast:focus-visible{box-shadow:0 8px 24px #00000029,0 2px 8px #00000014,0 0 0 2px var(--color-primary)}.toast-enter{animation:toast-slide-in .35s cubic-bezier(.21,1.02,.73,1) forwards}@keyframes toast-slide-in{0%{transform:translateY(100%) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.toast-exit{animation:toast-slide-out .3s cubic-bezier(.06,.71,.55,1) forwards}@keyframes toast-slide-out{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-20px) scale(.95);opacity:0}}.toast-icon{flex-shrink:0;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;margin-top:1px}.toast-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.toast-message{margin:0;font-size:14px;font-weight:450;line-height:1.45;color:#fff;word-break:break-word}.toast-action{align-self:flex-start;padding:0;border:none;background:none;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;cursor:pointer;transition:opacity .15s ease}.toast-action:hover{opacity:.85}.toast-close{flex-shrink:0;width:28px;height:28px;margin:-4px -6px -4px 0;padding:0;border:none;background:transparent;color:#ffffff80;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,color .15s ease}.toast-close:hover{background:#ffffff1a;color:#ffffffe6}.toast-progress{position:absolute;bottom:0;left:0;height:3px;background:#ffffff80;border-radius:0 0 var(--radius-md) var(--radius-md)}.toast-success{border-left:3px solid var(--color-success)}.toast-success .toast-icon{background:var(--color-success);color:var(--color-success-dark)}.toast-success .toast-action{color:#66ff6e}.toast-success .toast-progress{background:var(--color-success)}.toast-error{border-left:3px solid var(--color-error)}.toast-error .toast-icon{background:var(--color-error);color:var(--color-error-light)}.toast-error .toast-action{color:#e08a85}.toast-error .toast-progress{background:var(--color-error)}.toast-warning{border-left:3px solid var(--color-warning)}.toast-warning .toast-icon{background:var(--color-warning);color:var(--color-warning-dark);font-size:11px}.toast-warning .toast-action{color:var(--color-warning-light)}.toast-warning .toast-progress{background:var(--color-warning)}.toast-info{border-left:3px solid var(--color-info)}.toast-info .toast-icon{background:var(--color-info);color:var(--color-info-light);font-style:italic;font-size:13px}.toast-info .toast-action{color:var(--color-primary-300)}.toast-info .toast-progress{background:var(--color-info)}@media (max-width: 480px){.toast-container{bottom:16px;width:calc(100vw - 24px);left:12px;transform:none}.toast{padding:12px 14px}.toast-message{font-size:13px}}@media (prefers-reduced-motion: reduce){.toast-enter,.toast-exit{animation:none}.toast-enter{opacity:1}.toast-exit{opacity:0}}.upload-toast{position:fixed;bottom:24px;right:24px;width:360px;background:var(--color-grey-900);border-radius:var(--radius-lg);box-shadow:0 8px 32px #0000003d,0 2px 8px #0000001f;z-index:var(--z-toast);overflow:hidden;color:#fff}.upload-toast-enter{animation:upload-toast-in .35s cubic-bezier(.21,1.02,.73,1) forwards}@keyframes upload-toast-in{0%{transform:translateY(100%) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.upload-toast-exit{animation:upload-toast-out .3s cubic-bezier(.06,.71,.55,1) forwards}@keyframes upload-toast-out{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(20px) scale(.95);opacity:0}}.upload-toast-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s ease}.upload-toast-header:hover{background:#ffffff0d}.upload-toast-title{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500}.upload-toast-icon{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.upload-toast-icon-success{background:var(--color-success);color:var(--color-success-dark)}.upload-toast-icon-warning{background:var(--color-warning);color:var(--color-warning-dark)}.upload-toast-icon-uploading{width:20px;height:20px}.upload-spinner{width:20px;height:20px;animation:upload-spin 1s linear infinite}.upload-spinner circle{fill:none;stroke:var(--color-primary);stroke-width:2;stroke-dasharray:20 20;stroke-linecap:round}@keyframes upload-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.upload-toast-actions{display:flex;gap:4px}.upload-toast-close,.upload-toast-toggle{width:28px;height:28px;padding:0;border:none;background:transparent;color:#ffffff80;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,color .15s ease}.upload-toast-close:hover,.upload-toast-toggle:hover{background:#ffffff1a;color:#ffffffe6}.upload-toast-close svg,.upload-toast-toggle svg{width:14px;height:14px}.upload-toast-progress{height:3px;background:#ffffff1a}.upload-toast-progress-fill{height:100%;background:var(--color-primary);transition:width .2s ease}.upload-toast-progress-fill.completed{background:var(--color-success)}.upload-toast-progress-fill.has-errors{background:var(--color-warning)}.upload-toast-content{padding:0 16px 16px;max-height:300px;overflow-y:auto}.upload-toast-stats{display:flex;align-items:center;gap:16px;padding:10px 0;font-size:12px;color:#fff9;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:8px}.upload-toast-clear{margin-left:auto;padding:4px 8px;border:none;background:#ffffff1a;color:#ffffffb3;font-size:11px;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s ease}.upload-toast-clear:hover{background:#ffffff26;color:#fff}.upload-toast-list{display:flex;flex-direction:column;gap:4px}.upload-item{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.05)}.upload-item:last-child{border-bottom:none}.upload-item-icon{width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.upload-item-icon svg{width:14px;height:14px}.upload-item-pending .upload-item-icon,.upload-item-uploading .upload-item-icon{color:var(--color-primary-300)}.upload-item-completed .upload-item-icon{color:var(--color-success)}.upload-item-failed .upload-item-icon{color:var(--color-error)}.upload-item-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.upload-item-name{font-size:13px;color:#ffffffe6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-item-size{font-size:11px;color:#ffffff80}.upload-item-progress-bar{width:100%;height:2px;background:#ffffff1a;border-radius:1px;margin-top:4px}.upload-item-progress-fill{height:100%;background:var(--color-primary);border-radius:1px;transition:width .15s ease}.upload-item-error{width:100%;font-size:11px;color:var(--color-error-light);margin-top:2px}.upload-toast-more{font-size:12px;color:#ffffff80;padding:8px 0;text-align:center}.upload-toast-minimized{width:auto;min-width:280px}.upload-toast-minimized .upload-toast-content{display:none}@media (max-width: 480px){.upload-toast{right:12px;left:12px;bottom:12px;width:auto}.upload-toast-minimized{min-width:unset}}@media (prefers-reduced-motion: reduce){.upload-toast-enter,.upload-toast-exit,.upload-spinner{animation:none}}.portal-layout{min-height:100vh;display:flex;flex-direction:column;background:var(--color-bg-default)}.portal-header{background:var(--color-bg-paper);border-bottom:1px solid var(--color-grey-200);position:sticky;top:0;z-index:100}.portal-header-content{max-width:1200px;margin:0 auto;padding:var(--spacing-md) var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-xl)}.portal-brand{display:flex;align-items:center;gap:var(--spacing-sm)}.portal-logo{font-size:var(--font-size-xl);font-weight:700;color:var(--color-primary);letter-spacing:-.5px}.portal-header-logo{height:20px;width:auto}.portal-badge{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-primary);background:var(--color-primary-100);padding:2px 8px;border-radius:var(--radius-full)}.portal-nav{display:flex;align-items:center;gap:var(--spacing-xs);flex:1}.portal-nav-link{padding:var(--spacing-sm) var(--spacing-md);color:var(--color-text-secondary);text-decoration:none;font-weight:500;font-size:var(--font-size-sm);border-radius:var(--radius-md);transition:all var(--transition-fast)}.portal-nav-link:hover{color:var(--color-text-primary);background:var(--color-grey-100)}.portal-nav-link.active{color:var(--color-primary);background:var(--color-primary-100)}.portal-user{display:flex;align-items:center;gap:var(--spacing-md)}.portal-menu-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;background:transparent;border:none;border-radius:var(--radius-full);color:var(--color-text-secondary);cursor:pointer}.portal-user-menu{display:flex;align-items:center;gap:var(--spacing-sm)}.portal-avatar{width:36px;height:36px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:var(--font-size-sm);border:none;cursor:pointer;transition:opacity var(--transition-fast)}.portal-avatar:hover{opacity:.9}.portal-user-info{display:flex;flex-direction:column}.portal-user-name{font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-primary)}.portal-user-company{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.portal-logout-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.portal-logout-btn:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.portal-main{flex:1;padding:var(--spacing-xl) var(--spacing-lg)}.portal-content{max-width:1200px;margin:0 auto}.portal-footer{background:var(--color-grey-50);border-top:1px solid var(--color-grey-200);padding:var(--spacing-lg);text-align:center}.portal-footer p{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.portal-auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-grey-50) 0%,var(--color-grey-100) 100%);padding:var(--spacing-lg)}.portal-auth-card{background:var(--color-bg-paper);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--spacing-2xl);width:100%;max-width:420px}.portal-auth-header{text-align:center;margin-bottom:var(--spacing-xl)}.portal-auth-logo{height:32px;width:auto;margin-bottom:var(--spacing-sm)}.portal-auth-header h1{font-size:var(--font-size-2xl);font-weight:700;color:var(--color-primary);margin:0 0 var(--spacing-xs)}.portal-auth-header p{color:var(--color-text-secondary);margin:0;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px}.portal-auth-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.portal-auth-field{display:flex;flex-direction:column;gap:var(--spacing-xs)}.portal-auth-field label{font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-primary)}.portal-auth-field input{padding:12px var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-base);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.portal-auth-field input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}.portal-auth-submit{padding:14px var(--spacing-lg);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-fast)}.portal-auth-submit:hover:not(:disabled){background:var(--color-primary-700)}.portal-auth-submit:disabled{opacity:.6;cursor:not-allowed}.portal-auth-error{background:var(--color-error-100);color:var(--color-error);padding:var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.portal-auth-success{background:var(--color-success-100);color:var(--color-success);padding:var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);text-align:center}.portal-auth-divider{display:flex;align-items:center;gap:var(--spacing-md);color:var(--color-text-secondary);font-size:var(--font-size-sm)}.portal-auth-divider:before,.portal-auth-divider:after{content:"";flex:1;height:1px;background:var(--color-grey-300)}.portal-auth-link{text-align:center}.portal-auth-link a{color:var(--color-primary);text-decoration:none;font-weight:500}.portal-auth-link a:hover{text-decoration:underline}.portal-page-header{margin-bottom:var(--spacing-xl)}.portal-page-header h1{font-size:var(--font-size-2xl);font-weight:700;color:var(--color-text-primary);margin:0 0 var(--spacing-xs)}.portal-page-header p{color:var(--color-text-secondary);margin:0}.portal-page-title-row{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);flex-wrap:wrap}.portal-page-links{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.portal-timeline-link{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-md);background:var(--color-grey-100);color:var(--color-grey-700);text-decoration:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;transition:all .15s ease}.portal-timeline-link:hover{background:var(--color-primary-light);color:var(--color-primary)}.portal-timeline-link svg{flex-shrink:0}.portal-projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--spacing-lg)}.portal-project-card{background:var(--color-bg-paper);border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-lg);text-decoration:none;color:inherit;transition:all var(--transition-fast);display:flex;flex-direction:column;gap:var(--spacing-md)}.portal-project-card:hover{border-color:var(--color-primary-200);box-shadow:var(--shadow-md);transform:translateY(-2px)}.portal-project-card h3{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0}.portal-project-status{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:4px 10px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.portal-project-status.active{background:var(--color-success-100);color:var(--color-success)}.portal-project-status.draft{background:var(--color-grey-100);color:var(--color-text-secondary)}.portal-project-status.completed{background:var(--color-primary-100);color:var(--color-primary)}.portal-project-status.on-hold{background:var(--color-warning-100);color:var(--color-warning)}.portal-project-phase{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.portal-project-phase strong{color:var(--color-text-primary)}.portal-project-meta{display:flex;justify-content:space-between;align-items:center;padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-100);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.portal-empty-state{text-align:center;padding:var(--spacing-2xl);background:var(--color-grey-50);border-radius:var(--radius-lg)}.portal-empty-state svg{width:64px;height:64px;color:var(--color-grey-400);margin-bottom:var(--spacing-md)}.portal-empty-state h3{font-size:var(--font-size-lg);color:var(--color-text-primary);margin:0 0 var(--spacing-xs)}.portal-empty-state p{color:var(--color-text-secondary);margin:0}.portal-back-link{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);margin-bottom:var(--spacing-md);transition:color var(--transition-fast)}.portal-back-link:hover{color:var(--color-primary)}.portal-section{margin-top:var(--spacing-xl)}.portal-section h2{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-lg)}.portal-phases-timeline{display:flex;flex-direction:column}.portal-phase-item{display:flex;gap:var(--spacing-lg)}.portal-phase-timeline{display:flex;flex-direction:column;align-items:center;width:24px;flex-shrink:0}.portal-phase-dot{width:24px;height:24px;border-radius:50%;background:var(--color-grey-300);border:3px solid var(--color-bg-paper);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;z-index:1}.portal-phase-dot.pending{background:var(--color-grey-300)}.portal-phase-dot.in-progress{background:var(--color-primary);box-shadow:0 0 0 4px var(--color-primary-100)}.portal-phase-dot.waiting{background:var(--color-warning);box-shadow:0 0 0 4px var(--color-warning-100)}.portal-phase-dot.validated{background:var(--color-success)}.portal-phase-dot.skipped{background:var(--color-grey-400)}.portal-phase-line{width:2px;flex:1;background:var(--color-grey-200);min-height:20px}.portal-phase-content{flex:1;background:var(--color-bg-paper);border:1px solid var(--color-grey-200);border-radius:var(--radius-md);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.portal-phase-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-md);margin-bottom:var(--spacing-sm)}.portal-phase-header h3{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0}.portal-phase-status{padding:4px 10px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;white-space:nowrap}.portal-phase-status.pending{background:var(--color-grey-100);color:var(--color-text-secondary)}.portal-phase-status.in-progress{background:var(--color-primary-100);color:var(--color-primary)}.portal-phase-status.waiting{background:var(--color-warning-100);color:var(--color-warning)}.portal-phase-status.validated{background:var(--color-success-100);color:var(--color-success)}.portal-phase-status.skipped{background:var(--color-grey-100);color:var(--color-grey-500)}.portal-phase-description{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--spacing-sm)}.portal-phase-date{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin:var(--spacing-sm) 0 0}.portal-subphases{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-100);margin-left:var(--spacing-lg);display:flex;flex-direction:column}.portal-subphase-item{display:flex;gap:var(--spacing-sm);position:relative}.portal-subphase-item:not(:last-child):before{content:"";position:absolute;left:9px;top:50%;height:100%;width:2px;background:var(--color-grey-200);z-index:1}.portal-subphase-timeline{position:relative;display:flex;justify-content:center;align-items:center;width:20px;flex-shrink:0}.portal-subphase-dot{width:10px;height:10px;border-radius:50%;background:var(--color-grey-300);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;z-index:2}.portal-subphase-dot.pending{background:var(--color-grey-300)}.portal-subphase-dot.in-progress{background:var(--color-primary)}.portal-subphase-dot.waiting{background:var(--color-warning)}.portal-subphase-dot.validated{background:var(--color-success)}.portal-subphase-dot.skipped{background:var(--color-grey-400)}.portal-subphase-line{display:none}.portal-subphase-content{flex:1;display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-sm);min-height:40px;text-decoration:none;color:inherit;border-radius:var(--radius-md);transition:background-color .15s ease;margin-left:calc(-1 * var(--spacing-sm))}.portal-subphase-content:hover{background:var(--color-grey-50);text-decoration:none}.portal-subphase-chat-icon{font-size:1rem;opacity:0;transition:opacity .15s ease,transform .15s ease}.portal-subphase-content:hover .portal-subphase-chat-icon{opacity:.6}.portal-subphase-content:hover .portal-subphase-chat-icon:hover{opacity:1;transform:scale(1.1)}.portal-subphase-info{display:flex;align-items:center;gap:var(--spacing-sm);flex:1;min-width:0}.portal-subphase-name{font-size:var(--font-size-sm);color:var(--color-text-primary)}.portal-subphase-status{font-size:var(--font-size-xs);font-weight:600;padding:3px 10px;border-radius:var(--radius-full);white-space:nowrap;text-transform:uppercase;letter-spacing:.02em}.portal-subphase-status.pending{background:var(--color-grey-100);color:var(--color-grey-600)}.portal-subphase-status.in-progress{background:var(--color-info-light);color:var(--color-info-dark)}.portal-subphase-status.waiting{background:var(--color-warning-light);color:var(--color-warning-dark)}.portal-subphase-status.validated{background:var(--color-success-light);color:var(--color-success-dark)}.portal-subphase-status.skipped{background:var(--color-grey-100);color:var(--color-grey-500)}.portal-phase-action{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-100)}.portal-validate-btn{padding:10px var(--spacing-lg);background:var(--color-success);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast)}.portal-validate-btn:hover{background:var(--color-success-700)}.portal-phase-comments-toggle{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-100)}.validation-note-field{margin:var(--spacing-md) 0}.validation-note-field label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.validation-note-field textarea{width:100%;padding:var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-family:inherit;resize:vertical;min-height:80px}.validation-note-field textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-100)}.validation-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-grey-50) 0%,var(--color-grey-100) 100%);padding:var(--spacing-lg)}.validation-card{background:var(--color-bg-paper);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--spacing-2xl);width:100%;max-width:500px}.validation-header{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-xl)}.validation-logo{font-size:var(--font-size-xl);font-weight:700;color:var(--color-primary)}.validation-badge{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-success);background:var(--color-success-100);padding:2px 8px;border-radius:var(--radius-full)}.validation-greeting{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--spacing-sm)}.validation-title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-lg)}.validation-info{background:var(--color-grey-50);border-radius:var(--radius-md);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.validation-info-row{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) 0}.validation-info-row:not(:last-child){border-bottom:1px solid var(--color-grey-200)}.validation-label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.validation-value{font-weight:500;color:var(--color-text-primary)}.validation-description{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-grey-200)}.validation-description p{margin:var(--spacing-xs) 0 0;color:var(--color-text-primary);font-size:var(--font-size-sm)}.validation-note{margin-bottom:var(--spacing-lg)}.validation-note label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.validation-note textarea{width:100%;padding:var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:inherit;resize:vertical;transition:border-color var(--transition-fast)}.validation-note textarea:focus{outline:none;border-color:var(--color-primary)}.validation-button{width:100%;padding:14px var(--spacing-lg);background:var(--color-success);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-fast)}.validation-button:hover:not(:disabled){background:var(--color-success-700)}.validation-button:disabled{opacity:.6;cursor:not-allowed}.validation-disclaimer{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center;margin:var(--spacing-md) 0 0}.validation-success,.validation-error{text-align:center;padding:var(--spacing-xl)}.validation-success svg{color:var(--color-success);margin-bottom:var(--spacing-md)}.validation-error svg{color:var(--color-error);margin-bottom:var(--spacing-md)}.validation-success h2,.validation-error h2{font-size:var(--font-size-xl);font-weight:600;margin:0 0 var(--spacing-sm)}.validation-success p,.validation-error p{color:var(--color-text-secondary);margin:0}.validation-details{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-grey-200);text-align:left}.validation-details p{margin:var(--spacing-xs) 0;font-size:var(--font-size-sm)}.phase-comments{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-grey-200)}.phase-comments-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-md)}.phase-comments-header h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin:0}.phase-comments-toggle{background:none;border:none;color:var(--color-primary);font-size:var(--font-size-sm);cursor:pointer;padding:0}.phase-comments-toggle:hover{text-decoration:underline}.phase-comments-list{display:flex;flex-direction:column;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.phase-comments-empty{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-style:italic;margin:0}.phase-comment{background:var(--color-grey-50);border-radius:var(--radius-md);padding:var(--spacing-md)}.phase-comment.own{background:var(--color-primary-50);border:1px solid var(--color-primary-100)}.phase-comment-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xs)}.phase-comment-author{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}.phase-comment-badge{font-size:var(--font-size-xs);font-weight:600;padding:2px 6px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.5px}.phase-comment-badge.team{background:var(--color-primary-100);color:var(--color-primary)}.phase-comment-date{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.phase-comment-content{font-size:var(--font-size-sm);color:var(--color-text-primary);margin:0;white-space:pre-wrap;word-break:break-word}.phase-comment-actions{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-sm)}.phase-comment-actions .btn-link{background:none;border:none;padding:0;font-size:var(--font-size-xs);color:var(--color-text-secondary);cursor:pointer}.phase-comment-actions .btn-link:hover{color:var(--color-primary);text-decoration:underline}.phase-comment-actions .btn-link.danger:hover{color:var(--color-error)}.phase-comment-edit{display:flex;flex-direction:column;gap:var(--spacing-sm)}.phase-comment-edit textarea{width:100%;padding:var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-family:inherit;font-size:var(--font-size-sm);resize:vertical}.phase-comment-edit textarea:focus{outline:none;border-color:var(--color-primary)}.phase-comment-edit-actions{display:flex;justify-content:flex-end;gap:var(--spacing-sm)}.phase-comment-form{display:flex;flex-direction:column;gap:var(--spacing-sm)}.phase-comment-form textarea{width:100%;padding:var(--spacing-sm);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-sm);resize:vertical;min-height:60px}.phase-comment-form textarea:focus{outline:none;border-color:var(--color-primary)}.phase-comment-form .btn-primary{align-self:flex-end;padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-weight:500;font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast)}.phase-comment-form .btn-primary:hover:not(:disabled){background:var(--color-primary-700)}.phase-comment-form .btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-grey-100);color:var(--color-text-primary);border:none;border-radius:var(--radius-md);font-weight:500;font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast)}.btn-secondary:hover:not(:disabled){background:var(--color-grey-200)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.portal-quotes-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.portal-quote-card{background:var(--color-bg-paper);border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-lg);text-decoration:none;color:inherit;transition:all var(--transition-fast);display:flex;flex-direction:column;gap:var(--spacing-sm)}.portal-quote-card:hover{border-color:var(--color-primary-200);box-shadow:var(--shadow-md)}.portal-quote-header{display:flex;justify-content:space-between;align-items:center}.portal-quote-reference{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.portal-quote-status{padding:4px 10px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase}.portal-quote-status.sent{background:var(--color-primary-100);color:var(--color-primary)}.portal-quote-status.accepted{background:var(--color-success-100);color:var(--color-success)}.portal-quote-status.rejected{background:var(--color-error-100);color:var(--color-error)}.portal-quote-status.expired{background:var(--color-grey-100);color:var(--color-text-secondary)}.portal-quote-project{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.portal-quote-amounts{display:flex;gap:var(--spacing-xl);padding:var(--spacing-md) 0}.portal-quote-amount{display:flex;flex-direction:column;gap:2px}.portal-quote-amount .label{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.portal-quote-amount .value{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.portal-quote-meta{display:flex;gap:var(--spacing-lg);font-size:var(--font-size-xs);color:var(--color-text-secondary);padding-top:var(--spacing-sm);border-top:1px solid var(--color-grey-100)}.portal-quote-title-row{display:flex;align-items:center;gap:var(--spacing-md)}.portal-quote-title-row h1{margin:0}.portal-quote-detail{display:flex;flex-direction:column;gap:var(--spacing-xl)}.portal-quote-info-section{background:var(--color-bg-paper);border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.portal-quote-info-section h2{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-md)}.portal-quote-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--spacing-lg)}.portal-quote-info-item{display:flex;flex-direction:column;gap:4px}.portal-quote-info-item .label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.portal-quote-info-item .value{font-size:var(--font-size-base);color:var(--color-text-primary)}.portal-quote-info-item .value.highlight{font-size:var(--font-size-lg);font-weight:600;color:var(--color-primary)}.portal-quote-mission{color:var(--color-text-primary);line-height:1.6;margin:0}.portal-quote-options{display:flex;flex-direction:column;gap:var(--spacing-md)}.portal-quote-option{background:var(--color-grey-50);border-radius:var(--radius-md);padding:var(--spacing-md)}.portal-quote-option-header{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-sm)}.portal-quote-option-number{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;color:var(--color-primary);background:var(--color-primary-100);padding:2px 8px;border-radius:var(--radius-sm)}.portal-quote-option-name{font-weight:600;color:var(--color-text-primary);flex:1}.portal-quote-option-price{font-weight:600;color:var(--color-success)}.portal-quote-option-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-style:italic;margin:0 0 var(--spacing-xs)}.portal-quote-option-description{font-size:var(--font-size-sm);color:var(--color-text-primary);margin:0;line-height:1.5}.portal-quote-notes{color:var(--color-text-primary);font-size:var(--font-size-sm);line-height:1.6;margin:0;white-space:pre-wrap}.portal-quote-actions{display:flex;gap:var(--spacing-md)}.portal-download-btn{display:inline-flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-xl);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-fast)}.portal-download-btn:hover:not(:disabled){background:var(--color-primary-700)}.portal-download-btn:disabled{opacity:.6;cursor:not-allowed}.portal-signature-section h2{display:flex;align-items:center}.portal-signature-status{display:flex;align-items:flex-start;gap:var(--spacing-md);padding:var(--spacing-lg);border-radius:var(--radius-md);margin-bottom:var(--spacing-md)}.portal-signature-status svg{flex-shrink:0;margin-top:2px}.portal-signature-status div{display:flex;flex-direction:column;gap:4px}.portal-signature-status strong{font-size:var(--font-size-base);font-weight:600}.portal-signature-status span{font-size:var(--font-size-sm);opacity:.9}.portal-signature-status--signed{background:var(--color-success-100);color:var(--color-success-dark)}.portal-signature-status--signed svg{color:var(--color-success)}.portal-signature-status--pending{background:var(--color-primary-100);color:var(--color-primary-700)}.portal-signature-status--pending svg{color:var(--color-primary)}.portal-signature-status--expired{background:#fef3c7;color:#b45309}.portal-signature-status--expired svg{color:#f59e0b}.portal-signature-status--revoked{background:#fce7f3;color:#be185d}.portal-signature-status--revoked svg{color:#ec4899}.portal-sign-btn{display:inline-flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-xl);background:var(--color-success);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast)}.portal-sign-btn:hover:not(:disabled){background:var(--color-success-700);transform:translateY(-1px)}.portal-sign-btn:disabled{opacity:.6;cursor:not-allowed}.portal-quote-status.revoked{background:#fce7f3;color:#be185d}.portal-sign-page{max-width:1400px;margin:0 auto}.portal-sign-layout{display:grid;grid-template-columns:1fr 400px;gap:var(--spacing-xl);align-items:start}.portal-sign-preview{background:var(--color-bg-paper);border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);overflow:hidden}.portal-sign-preview h2{font-size:var(--font-size-md);font-weight:600;padding:var(--spacing-md) var(--spacing-lg);margin:0;border-bottom:1px solid var(--color-grey-200)}.portal-sign-preview-iframe{width:100%;height:600px;border:none}.portal-sign-preview-loading,.portal-sign-preview-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:400px;gap:var(--spacing-md);color:var(--color-text-secondary)}.portal-sign-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.portal-sign-summary{background:var(--color-grey-50);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.portal-sign-summary h3{font-size:var(--font-size-sm);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);margin:0 0 var(--spacing-md)}.portal-sign-summary-row{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) 0;border-bottom:1px solid var(--color-grey-200)}.portal-sign-summary-row:last-child{border-bottom:none;padding-bottom:0}.portal-sign-summary-row span{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.portal-sign-summary-row strong{color:var(--color-text-primary)}.portal-sign-summary-row strong.highlight{color:var(--color-primary);font-size:var(--font-size-lg)}.portal-sign-signer{display:flex;flex-direction:column;gap:var(--spacing-xs)}.portal-sign-signer label{font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-primary)}.portal-sign-input{padding:var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-base);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.portal-sign-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}.portal-sign-mode{display:flex;flex-direction:column;gap:var(--spacing-sm)}.portal-sign-mode label{font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-primary)}.portal-sign-mode-tabs{display:flex;gap:var(--spacing-xs);background:var(--color-grey-100);padding:4px;border-radius:var(--radius-md)}.portal-sign-mode-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:none;border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.portal-sign-mode-tab:hover{color:var(--color-text-primary)}.portal-sign-mode-tab.active{background:#fff;color:var(--color-primary);box-shadow:var(--shadow-sm)}.portal-sign-canvas-container{display:flex;flex-direction:column;gap:var(--spacing-sm)}.portal-sign-canvas{width:100%;height:150px;border:2px dashed var(--color-grey-300);border-radius:var(--radius-md);background:#fff;cursor:crosshair;touch-action:none}.portal-sign-canvas:hover{border-color:var(--color-primary)}.portal-sign-clear-btn{align-self:flex-end;padding:var(--spacing-xs) var(--spacing-md);background:transparent;border:1px solid var(--color-grey-300);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.portal-sign-clear-btn:hover{border-color:var(--color-error);color:var(--color-error)}.portal-sign-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center;margin:0}.portal-sign-text-container{display:flex;flex-direction:column;gap:var(--spacing-md)}.portal-sign-text-input{padding:var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-lg);font-family:cursive,sans-serif;text-align:center}.portal-sign-text-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}.portal-sign-text-preview{display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg);background:var(--color-grey-50);border-radius:var(--radius-md);min-height:60px}.portal-sign-upload-container{display:flex;flex-direction:column;gap:var(--spacing-md)}.portal-sign-file-input{display:none}.portal-sign-upload-btn{padding:var(--spacing-md);background:var(--color-grey-100);border:2px dashed var(--color-grey-300);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.portal-sign-upload-btn:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.portal-sign-upload-btn:disabled{opacity:.6;cursor:not-allowed}.portal-sign-upload-preview{position:relative;display:flex;justify-content:center;padding:var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md)}.portal-sign-upload-preview img{max-width:100%;max-height:100px;object-fit:contain}.portal-sign-remove-btn{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm);width:24px;height:24px;background:var(--color-error);color:#fff;border:none;border-radius:50%;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.portal-sign-remove-btn:hover{background:var(--color-error-dark)}.portal-sign-legal{padding:var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md)}.portal-sign-legal p{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:1.6;margin:0}.portal-sign-submit-btn{padding:var(--spacing-lg);background:var(--color-success);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--font-size-lg);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast)}.portal-sign-submit-btn:hover:not(:disabled){background:var(--color-success-700);transform:translateY(-1px)}.portal-sign-submit-btn:disabled{opacity:.6;cursor:not-allowed}.portal-sign-error,.portal-sign-success{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:var(--spacing-lg);text-align:center}.portal-sign-error svg{color:var(--color-error)}.portal-sign-success svg{color:var(--color-success)}.portal-sign-error h2,.portal-sign-success h2{font-size:var(--font-size-xl);margin:0}.portal-sign-error p,.portal-sign-success p{color:var(--color-text-secondary);margin:0;max-width:400px}.portal-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-lg)}.portal-modal{background:#fff;border-radius:var(--radius-lg);padding:var(--spacing-xl);max-width:480px;width:100%;box-shadow:var(--shadow-lg)}.portal-modal h3{font-size:var(--font-size-lg);margin:0 0 var(--spacing-md)}.portal-modal p{color:var(--color-text-secondary);margin:0 0 var(--spacing-sm);line-height:1.6}.portal-modal-warning{color:var(--color-warning)!important;font-weight:500;margin-top:var(--spacing-md)!important}.portal-modal-actions{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-xl)}.portal-modal-cancel{flex:1;padding:var(--spacing-md);background:var(--color-grey-100);border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:background var(--transition-fast)}.portal-modal-cancel:hover:not(:disabled){background:var(--color-grey-200)}.portal-modal-confirm{flex:1;padding:var(--spacing-md);background:var(--color-success);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:background var(--transition-fast)}.portal-modal-confirm:hover:not(:disabled){background:var(--color-success-700)}.portal-modal-cancel:disabled,.portal-modal-confirm:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 900px){.portal-sign-layout{grid-template-columns:1fr}.portal-sign-preview{order:2}.portal-sign-form{order:1}.portal-sign-preview-iframe{height:400px}}@media (max-width: 768px){.portal-header-content{padding:var(--spacing-sm) var(--spacing-md);gap:var(--spacing-md)}.portal-nav{position:fixed;top:60px;left:0;right:0;background:var(--color-bg-paper);border-bottom:1px solid var(--color-grey-200);flex-direction:column;padding:var(--spacing-md);display:none;gap:var(--spacing-xs)}.portal-nav.open{display:flex}.portal-nav-link{width:100%;padding:var(--spacing-md)}.portal-menu-btn{display:flex}.portal-user-info{display:none}.portal-main{padding:var(--spacing-lg) var(--spacing-md)}.portal-projects-grid{grid-template-columns:1fr}}.portal-timeline-page{max-width:1200px;margin:0 auto}.portal-timeline-header{margin-bottom:var(--spacing-lg)}.portal-timeline-header h1{font-size:1.5rem;font-weight:600;margin:var(--spacing-sm) 0;color:var(--color-grey-900)}.portal-timeline-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);font-size:.875rem;color:var(--color-grey-600)}.portal-timeline-meta-separator{color:var(--color-grey-300)}.portal-timeline-controls{margin-bottom:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md);display:flex;align-items:center;gap:var(--spacing-lg)}.portal-timeline-toggle{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.875rem;color:var(--color-grey-700);cursor:pointer}.portal-timeline-toggle input[type=checkbox]{width:16px;height:16px;cursor:pointer}.portal-back-link{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-primary);text-decoration:none;font-size:.875rem;font-weight:500;transition:color .15s ease}.portal-back-link:hover{color:var(--color-primary-dark)}.portal-loading,.portal-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:var(--spacing-md);text-align:center}.portal-loading-spinner{width:32px;height:32px;border:3px solid var(--color-grey-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.portal-error h2{font-size:1.25rem;color:var(--color-error);margin:0}.portal-error p{color:var(--color-grey-600);margin:0}.portal-btn{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary);color:#fff;text-decoration:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;transition:background .15s ease}.portal-btn:hover{background:var(--color-primary-dark)}@media (max-width: 768px){.portal-timeline-header h1{font-size:1.25rem}.portal-timeline-meta{flex-direction:column;gap:var(--spacing-xs)}.portal-timeline-meta-separator{display:none}.portal-timeline-controls{flex-direction:column;align-items:flex-start}}.portal-design-page{padding:var(--spacing-lg)}.portal-design-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.portal-design-empty{text-align:center;padding:var(--spacing-xl) var(--spacing-lg);background:var(--color-grey-50);border-radius:var(--radius-md)}.portal-design-empty-icon{color:var(--color-text-tertiary);margin-bottom:var(--spacing-md)}.portal-design-empty p{color:var(--color-text-secondary);margin:0}.portal-design-error{text-align:center;padding:var(--spacing-xl);color:var(--color-error)}.portal-design-category{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.portal-design-category-name{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin:0;padding:var(--spacing-md);background:var(--color-grey-50);border-bottom:1px solid var(--color-border)}.portal-design-links{display:flex;flex-direction:column}.portal-design-link{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);text-decoration:none;border-bottom:1px solid var(--color-border);transition:background .15s}.portal-design-link:last-child{border-bottom:none}.portal-design-link:hover{background:var(--color-grey-50)}.portal-design-link-icon{color:var(--color-primary);flex-shrink:0}.portal-design-link-title{flex:1;color:var(--color-text-primary);font-weight:500}.portal-design-link-arrow{color:var(--color-text-tertiary);font-size:var(--font-size-lg);transition:transform .15s}.portal-design-link:hover .portal-design-link-arrow{transform:translate(4px);color:var(--color-primary)}.portal-design-embeds{display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-md)}.portal-design-embed{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;background:var(--color-surface)}.portal-design-embed-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-grey-100);border-bottom:1px solid var(--color-border)}.portal-design-embed-title{font-weight:500;color:var(--color-text-primary)}.portal-design-embed-external{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);color:var(--color-text-secondary);transition:all .15s}.portal-design-embed-external:hover{background:var(--color-grey-200);color:var(--color-primary)}.portal-design-embed-container{position:relative;width:100%;height:0;padding-bottom:56.25%;background:var(--color-grey-50)}.portal-design-embed-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}@media (max-width: 640px){.portal-design-page{padding:var(--spacing-md)}.portal-design-embed-container{padding-bottom:75%}}.thread-messages{display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-md);overflow-y:auto;flex:1;min-height:0}.thread-messages-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-xl);color:var(--color-grey-500)}.thread-messages-loading-spinner{width:24px;height:24px;border:2px solid var(--color-grey-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.thread-messages-error{padding:var(--spacing-md);background:var(--color-error-light);color:var(--color-error);border-radius:var(--radius-md);text-align:center}.thread-messages-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--color-grey-500);text-align:center;flex:1}.thread-messages-empty-icon{font-size:3rem;margin-bottom:var(--spacing-md);opacity:.5}.thread-messages-empty-hint{font-size:.875rem;color:var(--color-grey-400);margin-top:var(--spacing-xs)}.thread-message{display:flex;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);margin:0 calc(-1 * var(--spacing-sm));border-radius:var(--radius-md);transition:background-color .1s ease}.thread-message:hover{background:var(--color-grey-50)}.thread-message.editing{background:var(--color-primary-light)}.thread-message-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.9375rem;flex-shrink:0;background:var(--color-grey-200);color:var(--color-grey-600)}.thread-message.team .thread-message-avatar{background:var(--color-primary-light);color:var(--color-primary)}.thread-message.client .thread-message-avatar{background:var(--color-success-light);color:var(--color-success)}.thread-message-body{flex:1;min-width:0}.thread-message-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--spacing-sm);margin-bottom:2px}.thread-message-meta{display:flex;align-items:center;gap:var(--spacing-xs);flex-wrap:wrap}.thread-message-author{font-weight:600;font-size:.9375rem;color:var(--color-grey-900)}.thread-message-badge{font-size:.625rem;font-weight:600;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.03em}.thread-message-badge.team{background:var(--color-primary);color:#fff}.thread-message-badge.client{background:var(--color-success);color:#fff}.thread-message-time{font-size:.75rem;color:var(--color-grey-400)}.thread-message-edited{margin-left:4px;font-style:italic;color:var(--color-grey-400)}.thread-message-text{font-size:.9375rem;line-height:1.5;white-space:pre-wrap;word-break:break-word;color:var(--color-grey-700)}.thread-message-actions{display:flex;align-items:center;gap:2px;padding:2px;background:#fff;border:1px solid var(--color-grey-200);border-radius:6px;box-shadow:0 1px 3px #00000014;opacity:0;transform:translateY(-2px);transition:opacity .15s ease,transform .15s ease}.thread-message:hover .thread-message-actions{opacity:1;transform:translateY(0)}.thread-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:var(--color-grey-500);cursor:pointer;transition:background-color .1s ease,color .1s ease}.thread-action-btn:hover{background:var(--color-grey-100);color:var(--color-grey-700)}.thread-action-btn-danger:hover{background:var(--color-error-light);color:var(--color-error)}.thread-message-edit{margin-top:var(--spacing-xs)}.thread-message-edit textarea{width:100%;padding:var(--spacing-sm);border:1px solid var(--color-primary);border-radius:var(--radius-md);font-family:inherit;font-size:.9375rem;line-height:1.5;resize:none;background:#fff}.thread-message-edit textarea:focus{outline:none;box-shadow:0 0 0 2px var(--color-primary-light)}.thread-message-edit-footer{display:flex;align-items:center;justify-content:space-between;margin-top:var(--spacing-xs);gap:var(--spacing-sm)}.thread-message-edit-hint{font-size:.75rem;color:var(--color-grey-400)}.thread-message-edit-actions{display:flex;gap:var(--spacing-xs)}.thread-edit-btn{padding:6px 12px;font-size:.8125rem;font-weight:500;font-family:inherit;border-radius:4px;cursor:pointer;transition:background-color .15s ease,color .15s ease}.thread-edit-btn-cancel{background:transparent;border:1px solid var(--color-grey-300);color:var(--color-grey-600)}.thread-edit-btn-cancel:hover:not(:disabled){background:var(--color-grey-100);border-color:var(--color-grey-400)}.thread-edit-btn-save{background:var(--color-primary);border:none;color:#fff}.thread-edit-btn-save:hover:not(:disabled){background:var(--color-primary-dark)}.thread-edit-btn:disabled{opacity:.5;cursor:not-allowed}.thread-input-container{padding:var(--spacing-md);border-top:1px solid var(--color-grey-200);background:var(--color-grey-50)}.thread-input-footer{display:flex;align-items:center;justify-content:space-between;margin-top:var(--spacing-sm)}.thread-input-hint{font-size:.75rem;color:var(--color-grey-400)}.thread-input-send{display:flex;align-items:center;gap:var(--spacing-xs);padding:8px 16px;border:none;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s,transform .1s}.thread-input-send:hover:not(:disabled){background:var(--color-primary-dark)}.thread-input-send:active:not(:disabled){transform:scale(.98)}.thread-input-send:disabled{background:var(--color-grey-300);cursor:not-allowed}.thread-input-sending{animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.thread-input{display:flex;gap:var(--spacing-sm);padding:var(--spacing-md);border-top:1px solid var(--color-grey-200);background:var(--color-grey-50)}.thread-input textarea{flex:1;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-grey-300);border-radius:20px;font-family:inherit;font-size:.9375rem;resize:none;max-height:150px;line-height:1.4}.thread-input textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.thread-input textarea::placeholder{color:var(--color-grey-400)}.thread-page{display:flex;flex-direction:column;height:calc(100vh - 60px);background:#fff}.thread-page-header{padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--color-grey-200);background:#fff}.thread-page-breadcrumb{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.875rem;color:var(--color-grey-500);margin-bottom:var(--spacing-sm)}.thread-page-breadcrumb a{color:var(--color-primary);text-decoration:none}.thread-page-breadcrumb a:hover{text-decoration:underline}.thread-page-breadcrumb-separator{color:var(--color-grey-300)}.thread-page-title{display:flex;align-items:center;gap:var(--spacing-sm)}.thread-page-title h1{font-size:1.25rem;font-weight:600;margin:0}.thread-page-status{font-size:.75rem;font-weight:500;padding:4px 10px;border-radius:12px;text-transform:uppercase}.thread-page-status.pending{background:var(--color-grey-100);color:var(--color-grey-600)}.thread-page-status.in-progress{background:var(--color-info-light);color:var(--color-info)}.thread-page-status.waiting{background:var(--color-warning-light);color:var(--color-warning)}.thread-page-status.validated{background:var(--color-success-light);color:var(--color-success)}.thread-page-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.phase-thread-btn{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:4px 10px;border:1px solid var(--color-grey-300);border-radius:16px;background:#fff;color:var(--color-grey-600);font-size:.8125rem;cursor:pointer;transition:all .15s;text-decoration:none}.phase-thread-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.phase-thread-btn-icon{font-size:1rem}.phase-thread-btn-count{font-weight:600}@media (max-width: 768px){.thread-page{height:calc(100vh - 50px)}.thread-page-header{padding:var(--spacing-sm) var(--spacing-md)}.thread-page-title h1{font-size:1.125rem}.thread-messages{padding:var(--spacing-sm);gap:var(--spacing-sm)}.thread-message{padding:var(--spacing-xs);margin:0 calc(-1 * var(--spacing-xs))}.thread-message-avatar{width:32px;height:32px;font-size:.8125rem}.thread-message-author,.thread-message-text{font-size:.875rem}.thread-message-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.thread-message-actions{opacity:1;position:relative;transform:none;margin-top:var(--spacing-xs)}.thread-message-edit-footer{flex-direction:column;align-items:stretch;gap:var(--spacing-xs)}.thread-message-edit-hint{text-align:center}.thread-message-edit-actions{justify-content:stretch}.thread-edit-btn{flex:1;text-align:center}.thread-input{padding:var(--spacing-sm)}.thread-input textarea{padding:var(--spacing-xs) var(--spacing-sm)}}.rte-container{border:1px solid var(--color-grey-300);border-radius:var(--radius-md);background:#fff;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.rte-container:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.rte-container.disabled{background:var(--color-grey-50);opacity:.7;pointer-events:none}.rte-toolbar{display:flex;align-items:center;gap:2px;padding:6px 8px;border-bottom:1px solid var(--color-grey-200);background:var(--color-grey-50)}.rte-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-grey-600);cursor:pointer;transition:background-color .1s ease,color .1s ease;font-family:inherit;font-size:14px}.rte-btn:hover{background:var(--color-grey-200);color:var(--color-grey-900)}.rte-btn.active{background:var(--color-primary-light);color:var(--color-primary)}.rte-btn:disabled{opacity:.5;cursor:not-allowed}.rte-divider{width:1px;height:20px;background:var(--color-grey-300);margin:0 4px}.rte-content{padding:12px;min-height:60px;max-height:200px;overflow-y:auto}.rte-content .tiptap{outline:none;font-size:.9375rem;line-height:1.5}.rte-content .tiptap p{margin:0}.rte-content .tiptap p+p{margin-top:.5em}.rte-content .tiptap strong{font-weight:600}.rte-content .tiptap em{font-style:italic}.rte-content .tiptap s{text-decoration:line-through}.rte-content .tiptap code{background:var(--color-grey-100);padding:2px 4px;border-radius:3px;font-family:ui-monospace,SF Mono,monospace;font-size:.875em}.rte-content .tiptap a{color:var(--color-primary);text-decoration:underline;cursor:pointer}.rte-content .tiptap ul,.rte-content .tiptap ol{margin:.5em 0;padding-left:1.5em}.rte-content .tiptap li{margin:.25em 0}.rte-content .tiptap p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;color:var(--color-grey-400);pointer-events:none;height:0}.rte-loading{padding:12px;color:var(--color-grey-500);font-size:.875rem}.thread-message-html{font-size:.9375rem;line-height:1.5;word-break:break-word}.thread-message-html p{margin:0}.thread-message-html p+p{margin-top:.5em}.thread-message-html strong{font-weight:600}.thread-message-html em{font-style:italic}.thread-message-html s{text-decoration:line-through}.thread-message-html code{background:var(--color-grey-100);padding:2px 4px;border-radius:3px;font-family:ui-monospace,SF Mono,monospace;font-size:.875em}.thread-message-html a{color:var(--color-primary);text-decoration:underline}.thread-message-html a:hover{text-decoration:none}.thread-message-html ul,.thread-message-html ol{margin:.5em 0;padding-left:1.5em}.thread-message-html li{margin:.25em 0}.gantt-chart{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);overflow-x:auto;min-width:600px}.gantt-empty{padding:var(--spacing-xl);text-align:center;color:var(--color-grey-500);background:var(--color-grey-50);border-radius:var(--radius-lg)}.gantt-header{display:flex;border-bottom:2px solid var(--color-grey-200);background:var(--color-grey-50);position:sticky;top:0;z-index:10}.gantt-header-label{min-width:120px;width:120px;padding:var(--spacing-sm) var(--spacing-md);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-grey-600);border-right:1px solid var(--color-grey-200);flex-shrink:0}.gantt-header-weeks{display:flex;flex:1}.gantt-header-week{flex:1;min-width:40px;padding:var(--spacing-sm) 0;text-align:center;font-size:.75rem;font-weight:500;color:var(--color-grey-500);border-right:1px solid var(--color-grey-100)}.gantt-header-week:last-child{border-right:none}.gantt-header-week.current{background:var(--color-error-light);color:var(--color-error);font-weight:600}.gantt-body{position:relative}.gantt-current-week-line{position:absolute;top:0;bottom:0;width:2px;background:var(--color-error);z-index:5;pointer-events:none}.gantt-phase-group{border-bottom:1px solid var(--color-grey-100)}.gantt-phase-group:last-child{border-bottom:none}.gantt-row{display:flex;min-height:40px;transition:background-color .15s ease}.gantt-row:hover{background:var(--color-grey-50)}.gantt-row.parent{background:var(--color-grey-25, #fafafa)}.gantt-row.parent:hover{background:var(--color-grey-100)}.gantt-row.child{background:#fff}.gantt-row-label{min-width:120px;width:120px;padding:var(--spacing-xs) var(--spacing-md);display:flex;align-items:center;gap:var(--spacing-xs);font-size:.8125rem;border-right:1px solid var(--color-grey-100);flex-shrink:0;overflow:hidden}.gantt-row.parent .gantt-row-label{font-weight:600;color:var(--color-grey-900)}.gantt-row.child .gantt-row-label{padding-left:var(--spacing-sm);color:var(--color-grey-700)}.gantt-row-indent{color:var(--color-grey-300);font-size:.75rem;flex-shrink:0}.gantt-row-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-row-link{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:inherit;text-decoration:none;transition:color .15s ease}.gantt-row-link:hover{color:var(--color-primary)}.gantt-row-bar-container{flex:1;position:relative;padding:var(--spacing-xs) 0}.gantt-row-bar{position:absolute;top:50%;transform:translateY(-50%);height:20px;border-radius:4px;cursor:pointer;transition:opacity .15s ease,transform .1s ease}.gantt-row-bar:hover{opacity:.9;transform:translateY(-50%) scaleY(1.1)}.gantt-row.parent .gantt-row-bar{height:24px;border-radius:6px}.gantt-row-bar.status-pending{background:var(--color-grey-300)}.gantt-row-bar.status-in-progress{background:var(--color-primary)}.gantt-row-bar.status-waiting-validation{background:var(--color-warning)}.gantt-row-bar.status-validated{background:var(--color-success)}.gantt-row-bar.status-skipped{background:var(--color-grey-200);opacity:.6}.gantt-legend{display:flex;flex-wrap:wrap;gap:var(--spacing-md);padding:var(--spacing-md);border-top:1px solid var(--color-grey-200);background:var(--color-grey-50)}.gantt-legend-item{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.75rem;color:var(--color-grey-600)}.gantt-legend-color{width:16px;height:12px;border-radius:2px}.gantt-legend-color.pending{background:var(--color-grey-300)}.gantt-legend-color.in-progress{background:var(--color-primary)}.gantt-legend-color.waiting-validation{background:var(--color-warning)}.gantt-legend-color.validated{background:var(--color-success)}.gantt-legend-color.skipped{background:var(--color-grey-200)}@media (max-width: 768px){.gantt-chart{min-width:100%}.gantt-header-label,.gantt-row-label{min-width:80px;width:80px;font-size:.6875rem}.gantt-header-week{min-width:30px;font-size:.625rem}.gantt-row-bar{height:16px}.gantt-row.parent .gantt-row-bar{height:18px}}.timeline-page{max-width:1200px;margin:0 auto}.timeline-header{margin-bottom:var(--spacing-lg)}.timeline-header h1{font-size:1.5rem;font-weight:600;margin:var(--spacing-sm) 0;color:var(--color-grey-900)}.timeline-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);font-size:.875rem;color:var(--color-grey-600)}.timeline-meta-separator{color:var(--color-grey-300)}.timeline-controls{margin-bottom:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md);display:flex;align-items:center;gap:var(--spacing-lg)}.timeline-toggle{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.875rem;color:var(--color-grey-700);cursor:pointer}.timeline-toggle input[type=checkbox]{width:16px;height:16px;cursor:pointer}.timeline-back-link{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-primary);text-decoration:none;font-size:.875rem;font-weight:500;transition:color .15s ease}.timeline-back-link:hover{color:var(--color-primary-dark)}.timeline-loading,.timeline-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:var(--spacing-md);text-align:center}.timeline-loading-spinner{width:32px;height:32px;border:3px solid var(--color-grey-200);border-top-color:var(--color-primary);border-radius:50%;animation:timeline-spin .8s linear infinite}@keyframes timeline-spin{to{transform:rotate(360deg)}}.timeline-error h2{font-size:1.25rem;color:var(--color-error);margin:0}.timeline-error p{color:var(--color-grey-600);margin:0}@media (max-width: 768px){.timeline-header h1{font-size:1.25rem}.timeline-meta{flex-direction:column;gap:var(--spacing-xs)}.timeline-meta-separator{display:none}.timeline-controls{flex-direction:column;align-items:flex-start}}.file-preview-modal .modal-content{max-width:95vw;max-height:95vh;width:95vw;height:95vh;padding:0;display:flex;flex-direction:column}.file-preview-modal .modal-header{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--color-border);flex-shrink:0}.file-preview-modal .modal-body{flex:1;overflow:hidden;padding:0}.file-preview-container{display:flex;flex-direction:column;height:100%;position:relative}.file-preview-content{flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;background:var(--color-bg-secondary);padding:var(--spacing-md)}.file-preview-loading,.file-preview-error,.file-preview-unsupported{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md);color:var(--color-text-secondary);padding:var(--spacing-xl);text-align:center}.file-preview-unsupported-icon{font-size:4rem}.file-preview-image-container{max-width:100%;max-height:100%;display:flex;align-items:center;justify-content:center}.file-preview-image{max-width:100%;max-height:calc(95vh - 140px);object-fit:contain;border-radius:var(--radius-sm);box-shadow:0 4px 20px #00000026}.file-preview-video{max-width:100%;max-height:calc(95vh - 140px);border-radius:var(--radius-sm);background:#000}.file-preview-audio-container{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-lg);padding:var(--spacing-xl)}.file-preview-audio-icon{font-size:5rem;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.file-preview-audio{width:100%;max-width:500px}.file-preview-pdf{width:100%;height:calc(95vh - 140px);border:none;border-radius:var(--radius-sm);background:#fff}.file-preview-text{width:100%;max-height:calc(95vh - 140px);overflow:auto;background:var(--color-bg);border-radius:var(--radius-sm);padding:var(--spacing-md);margin:0;font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:.875rem;line-height:1.5;white-space:pre-wrap;word-break:break-all}.file-preview-text code{background:none;padding:0}.file-preview-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:10;background:#00000080;border:none;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s}.file-preview-nav:hover{background:#000000b3}.file-preview-nav-prev{left:var(--spacing-md)}.file-preview-nav-next{right:var(--spacing-md)}.file-preview-footer{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);border-top:1px solid var(--color-border);background:var(--color-bg);flex-shrink:0}.file-preview-info{display:flex;align-items:center;gap:var(--spacing-md)}.file-preview-filename{font-weight:500;color:var(--color-text)}.file-preview-size{color:var(--color-text-secondary);font-size:.875rem}.file-preview-actions{display:flex;gap:var(--spacing-sm)}.file-preview-actions .btn{display:flex;align-items:center;gap:var(--spacing-xs)}@media (max-width: 768px){.file-preview-modal .modal-content{width:100vw;height:100vh;max-width:100vw;max-height:100vh;border-radius:0}.file-preview-nav{width:40px;height:40px}.file-preview-footer{flex-direction:column;gap:var(--spacing-sm);text-align:center}}.file-explorer{position:relative;display:grid;grid-template-columns:220px 1fr;grid-template-rows:auto auto auto 1fr;height:100%;min-height:500px;background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;overflow:hidden}.file-explorer.dragging:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#4285f414;border:2px dashed #4285f4;border-radius:12px;z-index:1000;pointer-events:none}.file-explorer-drag-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#4285f41f;display:flex;align-items:center;justify-content:center;z-index:1001;pointer-events:none}.file-explorer-drag-message{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 48px;background:#fff;border-radius:16px;box-shadow:0 8px 32px #0000001f}.file-explorer-drag-icon{font-size:56px;line-height:1}.file-explorer-drag-message span:last-child{font-size:16px;font-weight:500;color:#4285f4}.file-upload-progress{position:fixed;bottom:24px;right:24px;width:360px;background:#fff;border-radius:12px;box-shadow:0 8px 32px #00000029;z-index:2000;overflow:hidden}.file-upload-progress-title{font-weight:600;font-size:14px;padding:16px 20px;border-bottom:1px solid #f1f3f4;background:#fafbfc}.file-upload-progress-item{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid #f1f3f4}.file-upload-progress-item:last-child{border-bottom:none}.file-upload-progress-name{flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#3c4043}.file-upload-progress-bar{width:100px;height:4px;background:#e8eaed;border-radius:2px;overflow:hidden}.file-upload-progress-fill{height:100%;background:linear-gradient(90deg,#4285f4,#34a853);transition:width .2s ease}.file-upload-progress-percent{font-size:12px;font-weight:500;color:#5f6368;width:36px;text-align:right}.file-explorer-sidebar{grid-row:1 / -1;grid-column:1;display:flex;flex-direction:column;background:#fff;border-right:1px solid #e8eaed;overflow-y:auto;padding:12px 0}.file-explorer-tree{display:flex;flex-direction:column;gap:2px;padding:0 8px;flex:1}.file-tree-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 16px;background:transparent;border:none;border-radius:0 16px 16px 0;cursor:pointer;font-size:13px;font-weight:500;text-align:left;color:#3c4043;transition:all .15s ease}.file-tree-item svg{color:#5f6368;flex-shrink:0}.file-tree-item:hover{background:#f1f3f4}.file-tree-item.active{background:#e8f0fe;color:#1967d2}.file-tree-item.active svg{color:#1967d2}.file-tree-expand{font-size:10px;color:#5f6368;transition:transform .2s ease;cursor:pointer;padding:4px;margin:-4px 0 -4px -4px}.file-tree-expand.expanded{transform:rotate(90deg)}.file-tree-count{font-size:12px;color:#80868b;margin-left:auto;font-weight:400}.file-tree-branch{display:flex;flex-direction:column}.file-tree-children{margin-left:20px;display:flex;flex-direction:column;gap:2px}.file-explorer-header{grid-column:2;display:flex;align-items:center;justify-content:space-between;padding:8px 16px;gap:12px;background:#fff;border-bottom:1px solid #e8eaed;height:48px}.file-explorer-cache-indicator{display:flex;align-items:center;gap:8px}.cache-badge{font-size:11px;padding:2px 8px;background:#e8f0fe;color:#1967d2;border-radius:12px;font-weight:500}.file-explorer-refresh-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:50%;cursor:pointer;color:#5f6368;transition:all .15s ease}.file-explorer-refresh-btn:hover{background:#f1f3f4;color:#202124}.file-explorer-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.file-explorer-refresh-btn svg.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.file-explorer-toolbar{grid-column:2;display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:48px;background:#fff;border-bottom:1px solid #e8eaed}.file-explorer-toolbar-actions{display:flex;align-items:center;gap:4px}.toolbar-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;border-radius:50%;cursor:pointer;color:#5f6368;transition:all .15s ease}.toolbar-btn:hover{background:#f1f3f4;color:#202124}.toolbar-btn-danger:hover{background:#fce8e6;color:#c5221f}.toolbar-selection-count{font-size:13px;color:#5f6368;margin-left:8px;padding-left:12px;border-left:1px solid #e8eaed}.file-explorer-search-results{display:flex;align-items:center;gap:12px;font-size:14px;color:#5f6368}.file-explorer-search-results button{background:none;border:none;color:#5f6368;cursor:pointer;padding:4px 8px;border-radius:4px}.file-explorer-search-results button:hover{background:#f1f3f4}.file-explorer-new-menu{position:relative;padding:0 8px 16px}.file-explorer-new-btn{display:flex;align-items:center;gap:12px;width:100%;padding:12px 24px;border-radius:16px;font-size:14px;font-weight:500;background:#fff;color:#3c4043;border:none;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014;cursor:pointer;transition:all .2s ease}.file-explorer-new-btn:hover{box-shadow:0 2px 8px #00000026,0 1px 3px #0000001a}.file-explorer-new-btn svg{color:#5f6368}.file-explorer-new-dropdown{position:absolute;top:calc(100% + 4px);left:8px;right:8px;background:#fff;border-radius:8px;box-shadow:0 2px 12px #00000026;z-index:1000;overflow:hidden;animation:dropdownFadeIn .12s ease}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.file-explorer-new-dropdown-item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 16px;background:transparent;border:none;font-size:14px;color:#3c4043;cursor:pointer;text-align:left;transition:background .12s ease}.file-explorer-new-dropdown-item:hover{background:#f1f3f4}.file-explorer-new-dropdown-item svg{color:#5f6368}.file-explorer-dropbox-info{display:flex;align-items:center;gap:12px;padding:16px;margin:8px;background:linear-gradient(135deg,#e8f4fc,#f0f7fb);border-radius:12px}.dropbox-info-icon{font-size:24px}.dropbox-info-text{display:flex;flex-direction:column;gap:2px;font-size:13px;color:#3c4043}.dropbox-info-text strong{font-weight:600;color:#0061fe}.dropbox-info-text span{font-size:11px;color:#5f6368;word-break:break-all}.file-explorer-sidebar-filter{display:flex;padding:0 8px 12px;gap:4px}.sidebar-filter-btn{flex:1;padding:6px 8px;font-size:12px;font-weight:500;color:#5f6368;background:transparent;border:none;border-radius:16px;cursor:pointer;transition:all .15s ease}.sidebar-filter-btn:hover{background:#e8eaed}.sidebar-filter-btn.active{background:#e8f0fe;color:#1967d2}.file-explorer-sidebar-storage{margin-top:auto;padding:16px 12px;border-top:1px solid #e8eaed}.sidebar-storage-bar{height:4px;background:#e8eaed;border-radius:2px;overflow:hidden;margin-bottom:8px}.sidebar-storage-fill{height:100%;background:#1a73e8;border-radius:2px}.sidebar-storage-text{font-size:12px;color:#5f6368}.file-explorer-search{display:flex;align-items:center;gap:8px;flex:1;max-width:720px;padding:0 12px;height:32px;background:#f1f3f4;border-radius:6px;transition:all .2s ease}.file-explorer-search:hover{background:#e8eaed}.file-explorer-search.focused{background:#fff;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.file-explorer-search-icon{color:#5f6368;flex-shrink:0}.file-explorer-search-input{flex:1;border:none;background:transparent;font-size:13px;color:#202124;outline:none;min-width:0;height:100%}.file-explorer-search-input::placeholder{color:#5f6368}.file-explorer-search-clear{background:none;color:#5f6368;border:none;width:22px;height:22px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s ease}.file-explorer-search-clear svg{width:14px;height:14px}.file-explorer-search-clear:hover{background:#e8eaed}.file-explorer-search-shortcut{font-family:-apple-system,system-ui,sans-serif;font-size:11px;font-weight:500;color:#80868b;background:transparent;padding:2px 6px;border-radius:3px;border:1px solid #dadce0;flex-shrink:0}.search-highlight{background:#fff59d;color:#202124;padding:1px 2px;border-radius:2px}.file-explorer-breadcrumbs{display:flex;align-items:center;gap:2px}.file-explorer-breadcrumb{background:none;border:none;padding:8px 12px;cursor:pointer;border-radius:6px;color:#5f6368;font-size:14px;font-weight:500;transition:all .15s ease}.file-explorer-breadcrumb:hover{background:#f1f3f4;color:#3c4043}.file-explorer-breadcrumb.active{color:#202124;cursor:default}.file-explorer-breadcrumb.active:hover{background:transparent}.file-explorer-breadcrumb-sep{color:#dadce0;font-size:14px;-webkit-user-select:none;user-select:none}.file-explorer-actions{display:flex;align-items:center;gap:8px}.file-explorer-filter{padding:8px 14px;border:1px solid #dadce0;border-radius:8px;background:#fff;font-size:13px;color:#3c4043;cursor:pointer;transition:all .15s ease}.file-explorer-filter:hover{background:#f1f3f4;border-color:silver}.file-explorer-filter:focus{outline:none;border-color:#4285f4;box-shadow:0 0 0 2px #4285f433}.file-explorer-view-toggle{display:flex;gap:4px;flex-shrink:0}.file-explorer-view-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;cursor:pointer;color:#5f6368;border-radius:50%;transition:all .15s ease}.file-explorer-view-btn svg{width:18px;height:18px}.file-explorer-view-btn:hover{background:#f1f3f4;color:#202124}.file-explorer-view-btn.active{background:#e8f0fe;color:#1967d2}.file-explorer-actions .btn{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease;border:none}.file-explorer-actions .btn-primary{background:#4285f4;color:#fff;box-shadow:0 1px 2px #4285f44d}.file-explorer-actions .btn-primary:hover{background:#3367d6;box-shadow:0 2px 8px #4285f466}.file-explorer-actions .btn-secondary{background:#fff;color:#3c4043;border:1px solid #dadce0}.file-explorer-actions .btn-secondary:hover{background:#f1f3f4;border-color:silver}.file-explorer-actions .btn-danger{background:#ea4335;color:#fff}.file-explorer-actions .btn-danger:hover{background:#d93025}.file-explorer-storage{grid-column:2;display:flex;align-items:center;gap:12px;padding:12px 24px;background:#fafbfc;border-bottom:1px solid #e8eaed}.file-explorer-storage-bar{width:200px;height:4px;background:#e8eaed;border-radius:2px;overflow:hidden}.file-explorer-storage-fill{height:100%;background:#4285f4;border-radius:2px;transition:width .3s ease}.file-explorer-storage-text{font-size:13px;color:#5f6368}.file-explorer-content{grid-column:2;overflow-y:auto;padding:24px;background:#fff}.file-explorer-content.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;align-content:start}.file-explorer-content.list{display:flex;flex-direction:column;gap:0}.file-explorer-content.grid .file-item{display:flex;flex-direction:column;align-items:center;padding:20px 16px;border-radius:12px;cursor:pointer;transition:all .2s ease;position:relative;background:#fff;border:1px solid transparent}.file-explorer-content.grid .file-item:hover{background:#f8f9fa;border-color:#e8eaed}.file-explorer-content.grid .file-item.selected{background:#e8f0fe;border-color:#4285f4}.file-explorer-content.grid .file-item-folder{background:#fffbf0}.file-explorer-content.grid .file-item-folder:hover{background:#fff8e6;border-color:#fbbc04}.file-explorer-content.grid .file-item-folder.selected{background:#fef7e0;border-color:#f9ab00}.file-explorer-content.grid .file-item-icon{width:80px;height:80px;display:flex;align-items:center;justify-content:center;margin-bottom:12px;font-size:56px;line-height:1}.file-explorer-content.grid .file-item-info{width:100%;text-align:center}.file-explorer-content.grid .file-item-name{font-size:13px;font-weight:500;color:#3c4043;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.4}.file-explorer-content.grid .file-item-meta{font-size:12px;color:#80868b;margin-top:4px;display:flex;align-items:center;justify-content:center;gap:8px}.file-explorer-content.grid .file-item-actions{position:absolute;top:8px;right:8px;opacity:0;transition:opacity .15s ease;display:flex;gap:4px}.file-explorer-content.grid .file-item:hover .file-item-actions,.file-explorer-content.grid .file-item.selected .file-item-actions{opacity:1}.file-list-header{display:flex;align-items:center;padding:10px 16px;gap:16px;border-bottom:1px solid #e8eaed;background:#fafbfc;border-radius:8px 8px 0 0;margin-bottom:4px;font-size:12px;font-weight:600;color:#5f6368;text-transform:uppercase;letter-spacing:.5px}.file-list-header .file-list-col-name{flex:1;padding-left:56px}.file-list-col{flex-shrink:0}.file-list-col-checkbox{width:32px;display:flex;align-items:center;justify-content:center}.file-list-col-checkbox input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--color-primary)}.file-list-col-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s ease}.file-list-col-sortable:hover{color:var(--color-primary)}.sort-indicator{font-size:10px;margin-left:4px}.file-list-col-size{width:100px;text-align:right}.file-list-col-modified{width:160px}.file-list-col-visibility{width:90px}.file-list-col-actions{width:40px}.file-explorer-content.list .file-item{display:flex;flex-direction:row;align-items:center;padding:12px 16px;gap:16px;border-radius:0;cursor:pointer;transition:all .15s ease;border-bottom:1px solid #f1f3f4}.file-explorer-content.list .file-item:last-child{border-bottom:none}.file-explorer-content.list .file-item:hover{background:#f8f9fa}.file-explorer-content.list .file-item.selected{background:#e8f0fe}.file-explorer-content.list .file-item-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0}.file-explorer-content.list .file-item-info{flex:1;min-width:0}.file-explorer-content.list .file-item-name{font-size:14px;font-weight:500;color:#3c4043;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.file-explorer-content.list .file-list-col{font-size:13px;color:#5f6368}.file-explorer-content.list .file-list-col-size{text-align:right;font-variant-numeric:tabular-nums}.file-explorer-content.list .file-item-actions{display:flex;gap:4px;opacity:0;transition:opacity .15s ease;width:40px;justify-content:flex-end}.file-explorer-content.list .file-item:hover .file-item-actions,.file-explorer-content.list .file-item.selected .file-item-actions{opacity:1}.file-visibility-badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:500}.file-visibility-badge.shared{background:#e6f4ea;color:#1e8e3e}.file-visibility-badge.internal{background:#fef7e0;color:#b06000}.file-item-action-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #dadce0;border-radius:8px;cursor:pointer;font-size:14px;color:#5f6368;transition:all .15s ease}.file-item-action-btn:hover{background:#f1f3f4;border-color:silver;color:#3c4043}.file-item-visibility{font-size:14px;line-height:1}.file-item-visibility.shared{color:#34a853}.file-item-visibility.internal{color:#ea8600}.file-explorer-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;text-align:center;grid-column:1 / -1}.file-explorer-empty-icon{font-size:80px;line-height:1;margin-bottom:24px;opacity:.8}.file-explorer-empty-text{font-size:18px;font-weight:500;color:#3c4043;margin-bottom:8px}.file-explorer-empty-hint{font-size:14px;color:#80868b;max-width:320px}.file-explorer-loading{display:flex;align-items:center;justify-content:center;padding:80px;color:#80868b;font-size:14px;grid-column:1 / -1}.file-thumbnail{overflow:hidden;border-radius:8px;background:#f8f9fa;border:1px solid #e8eaed}.file-thumbnail-img{width:100%;height:100%;object-fit:cover}.file-thumbnail-loading{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#80868b;font-size:12px}.file-thumbnail-small{width:40px;height:40px}.file-thumbnail-medium{width:80px;height:80px}.file-thumbnail-large{width:120px;height:120px}.file-thumbnail-svg{background:linear-gradient(145deg,#f8f9fa,#e8eaed);border:1px solid #dadce0;display:flex;align-items:center;justify-content:center;padding:8px}.file-thumbnail-svg-img{object-fit:contain;max-width:100%;max-height:100%}.file-icon{font-size:inherit;line-height:1}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid #e8eaed}.btn-sm{padding:8px 16px;font-size:13px}.files-page{padding:24px;height:100%;display:flex;flex-direction:column}.files-page-header{display:flex;align-items:center;gap:16px;margin-bottom:24px}.files-page-back{display:flex;align-items:center;gap:6px;color:#5f6368;text-decoration:none;font-size:14px;font-weight:500;padding:8px 12px;border-radius:8px;transition:all .15s ease}.files-page-back:hover{background:#f1f3f4;color:#3c4043}.files-page-title{font-size:24px;font-weight:600;color:#202124}.files-page-content{flex:1;min-height:0}@media (max-width: 768px){.file-explorer{grid-template-columns:1fr;grid-template-rows:auto auto 1fr}.file-explorer-sidebar{display:none}.file-explorer-header,.file-explorer-toolbar,.file-explorer-content{grid-column:1}.file-explorer-header{height:auto;padding:8px 12px;gap:8px}.file-explorer-search{flex:1;max-width:none;height:36px}.file-explorer-search-shortcut{display:none}.file-explorer-toolbar{height:auto;padding:8px 12px;flex-wrap:wrap;gap:8px}.file-explorer-breadcrumbs{flex-wrap:wrap}.file-explorer-content.grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;padding:12px}.file-list-col-modified,.file-list-col-visibility,.file-list-header .file-list-col-modified,.file-list-header .file-list-col-visibility{display:none}.mobile-fab{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:16px;background:#1a73e8;color:#fff;border:none;box-shadow:0 4px 12px #1a73e866;cursor:pointer;display:flex;align-items:center;justify-content:center}}.portal-all-files{display:flex;flex-direction:column;gap:32px}.portal-files-project{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #00000014}.portal-files-project-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e8eaed}.portal-files-project-name{font-size:18px;font-weight:600;color:#202124;text-decoration:none}.portal-files-project-name:hover{color:#1a73e8}.portal-files-project-count{font-size:13px;color:#5f6368;background:#f1f3f4;padding:4px 10px;border-radius:12px}.portal-files-project-link{margin-left:auto;font-size:13px;color:#1a73e8;text-decoration:none}.portal-files-project-link:hover{text-decoration:underline}.portal-files-more{display:block;margin-top:16px;text-align:center;font-size:14px;color:#1a73e8;text-decoration:none;padding:8px;border-radius:8px;transition:background .2s}.portal-files-more:hover{background:#f1f3f4}.files-count{font-size:14px;color:#5f6368;background:#f1f3f4;padding:6px 12px;border-radius:16px}.files-loading,.files-empty,.files-error{padding:40px;text-align:center;color:#5f6368}.files-error{color:#d93025}.file-context-menu{position:fixed;z-index:2000;min-width:200px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000002e;padding:6px 0;animation:contextMenuFadeIn .12s ease}@keyframes contextMenuFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.file-context-menu-item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 16px;background:transparent;border:none;font-size:14px;color:#3c4043;cursor:pointer;text-align:left;transition:background .12s ease}.file-context-menu-item:hover{background:#f1f3f4}.file-context-menu-item-danger{color:#d93025}.file-context-menu-item-danger:hover{background:#fce8e6}.file-context-menu-icon{font-size:16px;width:20px;text-align:center}.file-context-menu-separator{height:1px;background:#e8eaed;margin:6px 0}.move-modal-content{display:flex;flex-direction:column;gap:16px}.move-modal-info{margin:0;padding:12px;background:#f1f3f4;border-radius:8px;color:#5f6368;font-size:13px}.move-modal-tree{max-height:300px;overflow-y:auto;border:1px solid #e8eaed;border-radius:8px;padding:8px}.move-folder-branch{display:flex;flex-direction:column}.move-folder-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border:none;background:transparent;border-radius:6px;font-size:13px;text-align:left;cursor:pointer;transition:background .15s}.move-folder-item:hover{background:#f1f3f4}.move-folder-item.selected{background:#e8f0fe;color:#1967d2;font-weight:500}.move-folder-expand{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:8px;color:#5f6368;transition:transform .15s;cursor:pointer}.move-folder-expand.expanded{transform:rotate(90deg)}.move-folder-children{display:flex;flex-direction:column}.move-modal-input{display:flex;flex-direction:column;gap:6px}.move-modal-input label{font-size:13px;color:#5f6368}.move-modal-input input{padding:10px 12px;border:1px solid #e8eaed;border-radius:6px;font-size:14px;transition:border-color .15s}.move-modal-input input:focus{outline:none;border-color:#1967d2}:root{--color-primary-50: #eff6ff;--color-primary-100: #dbeafe;--color-primary-200: #bfdbfe;--color-primary-300: #93c5fd;--color-primary-400: #60a5fa;--color-primary-500: #3b82f6;--color-primary-600: #2563eb;--color-primary-700: #1d4ed8;--color-primary-800: #1e40af;--color-primary-900: #1e3a8a;--color-primary: var(--color-primary-600);--color-primary-dark: var(--color-primary-700);--color-primary-light: var(--color-primary-100);--color-grey-50: #fafafa;--color-grey-100: #f4f4f5;--color-grey-200: #e4e4e7;--color-grey-300: #d4d4d8;--color-grey-400: #a1a1aa;--color-grey-500: #71717a;--color-grey-600: #52525b;--color-grey-700: #3f3f46;--color-grey-800: #27272a;--color-grey-900: #18181b;--color-success: #22c55e;--color-success-light: #dcfce7;--color-success-dark: #15803d;--color-warning: #f59e0b;--color-warning-light: #fef3c7;--color-warning-dark: #b45309;--color-error: #ef4444;--color-error-light: #fee2e2;--color-error-dark: #b91c1c;--color-info: #3b82f6;--color-info-light: #dbeafe;--color-info-dark: #1d4ed8;--color-text-primary: rgba(0, 0, 0, .87);--color-text-secondary: rgba(0, 0, 0, .6);--color-text-tertiary: rgba(0, 0, 0, .45);--color-text-disabled: rgba(0, 0, 0, .38);--color-text-inverse: #ffffff;--color-bg: #ffffff;--color-bg-paper: #ffffff;--color-bg-default: #fafafa;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-xxl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--shadow-1: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-2: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-3: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-4: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--ring-color: rgba(59, 130, 246, .5);--ring-offset: 2px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease;--z-dropdown: 100;--z-modal: 200;--z-toast: 300}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--font-size-md);line-height:1.5;color:var(--color-text-primary);background-color:var(--color-bg-default)}:focus{outline:none}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-primary);color:var(--color-primary-light);padding:var(--spacing-sm) var(--spacing-md);z-index:1000;transition:top var(--transition-fast)}.skip-link:focus{top:0}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.2;margin-bottom:var(--spacing-md)}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}h4{font-size:var(--font-size-lg)}p{margin-bottom:var(--spacing-md)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.page{padding:var(--spacing-xl);max-width:1200px;margin:0 auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:8px 16px;font-family:inherit;font-size:var(--font-size-sm);font-weight:500;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);min-height:36px;white-space:nowrap}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.btn-secondary{background:#fff;color:var(--color-grey-700);border-color:var(--color-grey-300)}.btn-secondary:hover:not(:disabled){background:var(--color-grey-50);border-color:var(--color-grey-400);color:var(--color-grey-900)}.btn-danger{background:var(--color-error);color:#fff;border-color:var(--color-error)}.btn-danger:hover:not(:disabled){background:var(--color-error-dark);border-color:var(--color-error-dark)}.btn-ghost{background:transparent;color:var(--color-grey-600);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-grey-100);color:var(--color-grey-900)}.btn-text{background:transparent;color:var(--color-primary);border-color:transparent;padding:8px 12px}.btn-text:hover:not(:disabled){background:var(--color-primary-50)}.btn-sm{padding:6px 12px;font-size:var(--font-size-xs);min-height:32px}.btn-lg{padding:12px 24px;font-size:var(--font-size-md);min-height:44px}.btn-icon{padding:8px;min-width:36px;min-height:36px}.btn-icon-sm{padding:6px;min-width:28px;min-height:28px}.card{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.card-elevated{box-shadow:var(--shadow-2);border-color:transparent}.card-interactive{transition:all var(--transition-fast)}.card-interactive:hover{border-color:var(--color-grey-300);box-shadow:var(--shadow-2)}.form-group{margin-bottom:var(--spacing-lg)}.form-group label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-grey-700);margin-bottom:var(--spacing-xs)}.form-hint{font-size:var(--font-size-xs);color:var(--color-grey-500);margin-top:var(--spacing-xs)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md)}@media (max-width: 480px){.form-row{grid-template-columns:1fr}}input[type=text],input[type=email],input[type=password],input[type=tel],input[type=search],input[type=number],select,textarea{width:100%;padding:14px 16px;font-family:inherit;font-size:var(--font-size-md);color:var(--color-text-primary);background:var(--color-bg-paper);border:1px solid var(--color-grey-300);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}input:hover,select:hover,textarea:hover{border-color:var(--color-grey-400)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}input::placeholder,textarea::placeholder{color:var(--color-text-disabled)}input:disabled,select:disabled,textarea:disabled{background:var(--color-grey-100);cursor:not-allowed;opacity:.7}textarea{resize:vertical;min-height:80px}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%23757575' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:44px;cursor:pointer}input[type=checkbox],input[type=radio]{width:18px;height:18px;accent-color:var(--color-primary);cursor:pointer}.toggle-switch{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-switch input{display:none}.toggle-slider{position:relative;width:52px;height:32px;background:var(--color-grey-300);border-radius:16px;transition:background .2s}.toggle-slider:after{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;transition:transform .2s}.toggle-switch input:checked+.toggle-slider{background:var(--color-primary)}.toggle-switch input:checked+.toggle-slider:after{transform:translate(20px)}.toggle-label{font-size:.875rem;color:var(--color-text-secondary)}.table-container{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);overflow:hidden}table{width:100%;border-collapse:collapse}thead{background:var(--color-grey-50);border-bottom:1px solid var(--color-grey-200)}th{padding:12px 16px;font-size:var(--font-size-xs);font-weight:600;color:var(--color-grey-500);text-align:left}td{padding:12px 16px;font-size:var(--font-size-sm);color:var(--color-grey-900);border-bottom:1px solid var(--color-grey-100)}tbody tr{transition:background var(--transition-fast)}tbody tr:hover{background:var(--color-grey-50)}tbody tr:last-child td{border-bottom:none}.clickable-row{cursor:pointer}.clickable-row:hover{background:var(--color-primary-50)}.actions-cell{width:1%;white-space:nowrap;text-align:right}.empty-state{text-align:center;padding:var(--spacing-xxl) var(--spacing-lg);color:var(--color-text-secondary)}.empty-state p{margin-bottom:var(--spacing-md)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-xl);gap:var(--spacing-md)}.page-header h1{font-size:var(--font-size-2xl);font-weight:600;color:var(--color-grey-900);margin-bottom:0}.page-count{font-size:var(--font-size-sm);color:var(--color-grey-500);font-weight:400;margin-left:var(--spacing-xs)}.page-header-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.badge{display:inline-flex;align-items:center;padding:3px 8px;font-size:11px;font-weight:500;border-radius:var(--radius-sm);white-space:nowrap}.badge-draft{background:var(--color-grey-100);color:var(--color-grey-600)}.badge-active,.badge-default{background:var(--color-primary-100);color:var(--color-primary-700)}.badge-hold{background:var(--color-warning-light);color:var(--color-warning-dark)}.badge-completed,.badge-success{background:var(--color-success-light);color:var(--color-success-dark)}.badge-cancelled,.badge-error{background:var(--color-error-light);color:var(--color-error-dark)}.auth-error{background:var(--color-error-light);color:var(--color-error-dark);padding:12px 16px;border-radius:var(--radius-sm);font-size:var(--font-size-sm);border-left:4px solid var(--color-error)}.warning-text{color:var(--color-warning-dark);font-size:var(--font-size-sm)}.search-bar,.filters-bar{display:flex;flex-direction:column;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.search-bar form,.search-form{display:flex;gap:var(--spacing-sm)}.search-bar input[type=search],.search-form input[type=search]{flex:1;max-width:400px}.filter-bar{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);padding:var(--spacing-md);background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg)}.filter-bar select{min-width:180px;padding:10px 14px;font-size:var(--font-size-sm)}.status-filters{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.filter-btn{padding:8px 16px;border:none;background:var(--color-grey-100);color:var(--color-text-secondary);border-radius:var(--radius-full);cursor:pointer;font-size:var(--font-size-sm);font-weight:500;transition:all var(--transition-fast)}.filter-btn:hover{background:var(--color-grey-200);color:var(--color-text-primary)}.filter-btn.active{background:var(--color-primary);color:#fff}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:transparent;border:none;border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.btn-icon:hover{background:var(--color-grey-100);color:var(--color-text-primary)}.btn-icon-danger:hover{background:var(--color-error-light);color:var(--color-error-dark)}.btn-icon-sm{width:28px;height:28px}.back-link{display:inline-flex;align-items:center;gap:var(--spacing-sm);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);font-weight:500;margin-bottom:var(--spacing-lg);padding:var(--spacing-xs) var(--spacing-sm);margin-left:calc(-1 * var(--spacing-sm));border-radius:var(--radius-md);transition:all var(--transition-fast)}.back-link:hover{color:var(--color-primary);background:var(--color-grey-100);text-decoration:none}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-md)}.section-header h2{margin:0;font-size:var(--font-size-lg);font-weight:600}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}.info-item label{display:block;font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);font-weight:600;margin-bottom:var(--spacing-xs)}.info-item p{margin:0;color:var(--color-text-primary)}.info-item a{color:var(--color-primary);text-decoration:none}.info-item a:hover{text-decoration:underline}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.stat-card{background:var(--color-bg-paper);border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-lg);text-align:center;transition:all var(--transition-fast)}.stat-card:hover{border-color:var(--color-grey-300);box-shadow:var(--shadow-2)}.stat-value{font-size:var(--font-size-3xl);font-weight:600;color:var(--color-primary);line-height:1}.stat-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-top:var(--spacing-sm)}.stat-card-action{cursor:pointer}.stat-card-action:hover{transform:translateY(-2px)}.amount-cell{font-variant-numeric:tabular-nums;text-align:right;font-weight:600;color:var(--color-grey-900)}.sidebar-card{background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.sidebar-card h3{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--spacing-md)}.info-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.info-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.info-label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.info-value{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.info-value a{color:var(--color-primary);text-decoration:none}.info-value a:hover{text-decoration:underline}.info-amount{font-size:var(--font-size-lg);font-weight:700;color:var(--color-text-primary)}.action-buttons{display:flex;flex-direction:column;gap:var(--spacing-sm)}.action-btn{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;padding:10px var(--spacing-md);background:#fff;border:1px solid var(--color-grey-200);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.action-btn:hover:not(:disabled){background:var(--color-grey-50);border-color:var(--color-grey-300);color:var(--color-text-primary)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.action-btn svg{flex-shrink:0;color:inherit}.action-btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.action-btn-primary:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark);color:#fff}.action-btn-danger{background:var(--color-error-light);border-color:transparent;color:var(--color-error-dark)}.action-btn-danger:hover:not(:disabled){background:var(--color-error);color:#fff}.contacts-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.contact-card{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);background:var(--color-grey-50);border-radius:var(--radius-md);transition:background var(--transition-fast)}.contact-card:hover{background:var(--color-grey-100)}.contact-info{display:flex;flex-direction:column;gap:var(--spacing-xs)}.contact-name{font-weight:500;display:flex;align-items:center;gap:var(--spacing-sm);color:var(--color-text-primary)}.contact-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.badge-primary{font-size:10px;padding:2px 8px;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.client-header,.project-header,.quote-detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--spacing-lg);margin-bottom:var(--spacing-xl)}.client-title h1,.project-title h1{margin-bottom:var(--spacing-xs)}.client-company,.project-meta{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.project-meta{display:flex;align-items:center;gap:var(--spacing-sm)}.client-actions,.project-actions{display:flex;gap:var(--spacing-sm);align-items:center}.project-actions select{width:auto;min-width:140px}@media (max-width: 768px){.client-header,.project-header,.quote-detail-header{flex-direction:column;gap:var(--spacing-md)}.client-actions,.project-actions{width:100%;flex-wrap:wrap}.stats-grid{grid-template-columns:repeat(2,1fr)}.info-grid{grid-template-columns:1fr}}@media (max-width: 480px){.status-filters{gap:var(--spacing-xs)}.filter-btn{padding:6px 12px;font-size:var(--font-size-xs)}.stats-grid{grid-template-columns:1fr}}
