:root{--primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--primary-color: #667eea;--primary-dark: #5a67d8;--gray-50: #f7fafc;--gray-100: #edf2f7;--gray-200: #e2e8f0;--gray-300: #cbd5e0;--gray-400: #a0aec0;--gray-500: #718096;--gray-600: #4a5568;--gray-700: #2d3748;--gray-800: #1a202c;--success-color: #48bb78;--warning-color: #ed8936;--error-color: #f56565;--info-color: #4299e1;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;color:var(--gray-800);background:var(--gray-50)}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}h1,h2,h3,h4,h5,h6{line-height:1.2;font-weight:600}button{cursor:pointer;border:none;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--gray-100)}::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--gray-400)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:var(--spacing-sm)}.gap-2{gap:var(--spacing-md)}.gap-3{gap:var(--spacing-lg)}.risk-alerts-container{margin-bottom:2rem;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.risk-alerts-header{background:#fff;border-radius:12px 12px 0 0;padding:1rem 1.5rem;border-bottom:2px solid #e2e8f0}.header-title{display:flex;align-items:center;gap:.75rem;color:#2d3748}.header-title svg{color:#ed8936}.header-title h2{margin:0;font-size:1.25rem;font-weight:600}.alert-count{background:#ed8936;color:#fff;padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:600}.risk-alerts-list{display:flex;flex-direction:column;gap:1rem;padding:1.5rem;background:#fff;border-radius:0 0 12px 12px;max-height:600px;overflow-y:auto}.risk-alert-card{border-radius:12px;padding:1.25rem;border-left:6px solid;background:#fff;box-shadow:0 2px 8px #0000001a;transition:all .2s ease}.risk-alert-card:hover{box-shadow:0 4px 16px #00000026;transform:translate(4px)}.risk-alert-card.critical{border-left-color:#c53030;background:linear-gradient(to right,#fff5f5,#fff)}.risk-alert-card.high{border-left-color:#dd6b20;background:linear-gradient(to right,#fffaf0,#fff)}.risk-alert-card.medium{border-left-color:#d69e2e;background:linear-gradient(to right,ivory,#fff)}.risk-alert-card.low{border-left-color:#3182ce;background:linear-gradient(to right,#ebf8ff,#fff)}.alert-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.alert-severity{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:.875rem;text-transform:uppercase}.critical .alert-severity{color:#c53030}.high .alert-severity{color:#dd6b20}.medium .alert-severity{color:#d69e2e}.low .alert-severity{color:#3182ce}.alert-dismiss{padding:.375rem;background:transparent;border:none;color:#718096;cursor:pointer;border-radius:6px;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.alert-dismiss:hover{background:#edf2f7;color:#2d3748}.alert-message{font-size:1.125rem;font-weight:700;color:#2d3748;margin-bottom:.75rem;line-height:1.4}.alert-description{font-size:.9375rem;color:#4a5568;margin-bottom:1rem;line-height:1.6}.alert-project-info{display:flex;align-items:center;justify-content:space-between;padding:.75rem;background:#00000008;border-radius:8px;margin-bottom:1rem}.project-name{font-weight:600;color:#2d3748;font-size:.875rem}.project-status{font-size:.75rem;padding:.25rem .75rem;background:#fff;border-radius:12px;color:#718096;border:1px solid #e2e8f0}.alert-actions{margin-bottom:1rem}.actions-title{display:flex;align-items:center;gap:.5rem;font-weight:600;color:#2d3748;margin-bottom:.5rem;font-size:.875rem}.actions-title svg{color:#48bb78}.actions-list{list-style:none;padding:0;margin:0}.actions-list li{padding:.5rem .75rem;margin-bottom:.375rem;background:#fff;border-left:3px solid #48bb78;border-radius:4px;font-size:.875rem;color:#4a5568;line-height:1.5}.alert-footer{display:flex;justify-content:flex-end}.view-project-button{padding:.5rem 1.25rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.view-project-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.risk-alerts-list::-webkit-scrollbar{width:8px}.risk-alerts-list::-webkit-scrollbar-track{background:#f7fafc;border-radius:4px}.risk-alerts-list::-webkit-scrollbar-thumb{background:#cbd5e0;border-radius:4px}.risk-alerts-list::-webkit-scrollbar-thumb:hover{background:#a0aec0}@media(max-width:768px){.risk-alerts-container{margin-bottom:1rem}.risk-alerts-header{padding:.75rem 1rem}.header-title h2{font-size:1rem}.risk-alerts-list{padding:1rem;max-height:400px}.risk-alert-card{padding:1rem}.alert-message{font-size:1rem}.alert-project-info{flex-direction:column;align-items:flex-start;gap:.5rem}}.project-modal{max-width:700px;width:90%;max-height:90vh;overflow-y:auto;background-color:#fff}.project-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px;border-bottom:1px solid #e5e7eb;position:sticky;top:0;background:#fff;z-index:10}.project-modal .modal-header h2{margin:0;font-size:20px;font-weight:600;color:#1f2937}.project-form{padding:24px;background-color:#fff}.form-section{margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid #f3f4f6}.form-section:last-of-type{border-bottom:none}.form-section h3{font-size:16px;font-weight:600;color:#374151;margin:0 0 16px;display:flex;align-items:center;gap:8px}.form-section h3:before{content:"";width:4px;height:20px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:2px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 12px;font-size:14px;border:1px solid #d1d5db;border-radius:8px;transition:all .2s;font-family:inherit;background-color:#fff;color:#1f2937}.form-group textarea{min-height:80px;resize:vertical}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input.error,.form-group select.error,.form-group textarea.error{border-color:#ef4444}.form-group input.error:focus,.form-group select.error:focus,.form-group textarea.error:focus{box-shadow:0 0 0 3px #ef44441a}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb;background-color:#f9fafb;border-bottom-left-radius:12px;border-bottom-right-radius:12px;position:sticky;bottom:0}@media(max-width:768px){.project-modal{max-width:100%;width:100%;max-height:100vh;border-radius:0}.form-row{grid-template-columns:1fr;gap:0}.project-modal .modal-header,.project-form{padding:16px}.modal-footer{padding:12px 16px}}.dashboard{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem}.dashboard-header{background:#fff;border-radius:16px;padding:2rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.header-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.header-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:1.5rem;flex-wrap:nowrap}.pdf-upload-button{display:flex;align-items:center;gap:.5rem;padding:1rem 1.75rem;background:linear-gradient(135deg,#9333ea,#7c3aed);color:#fff;border:none;border-radius:12px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #9333ea66;position:relative;overflow:hidden;min-height:48px}.pdf-upload-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s ease}.pdf-upload-button:hover:before{left:100%}.pdf-upload-button:hover:not(:disabled){transform:translateY(-2px) scale(1.05);box-shadow:0 6px 16px #9333ea99}.pdf-upload-button:disabled{opacity:.7;cursor:not-allowed;transform:none}.pdf-upload-button .spinning{animation:spin 1s linear infinite}.add-project-button{display:flex;align-items:center;gap:.5rem;padding:.875rem 1.5rem;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:10px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #10b9814d;min-height:48px}.add-project-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #10b98180}.calendar-nav-button{display:flex;align-items:center;gap:.5rem;padding:.875rem 1.5rem;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:10px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;min-height:48px}.calendar-nav-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.dashboard-header h1{margin:0;font-size:2rem;color:#1a202c}.risk-check-button{display:flex;align-items:center;gap:.5rem;padding:.875rem 1.5rem;background:linear-gradient(135deg,#ed8936,#dd6b20);color:#fff;border:none;border-radius:10px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;min-height:48px}.risk-check-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #ed893666}.risk-check-button:disabled{opacity:.7;cursor:not-allowed}.risk-check-button .spinning{animation:spin 1s linear infinite}.header-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.stat-card{display:flex;flex-direction:column;align-items:center;padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff}.stat-label{font-size:.875rem;opacity:.9;margin-bottom:.5rem}.stat-value{font-size:2rem;font-weight:700}.stat-card.risk-stat{background:linear-gradient(135deg,#fc8181,#e53e3e);animation:pulse-glow 2s ease-in-out infinite}.stat-value.risk-value{color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}@keyframes pulse-glow{0%,to{box-shadow:0 0 10px #fc818180}50%{box-shadow:0 0 20px #fc8181cc}}.kanban-board{display:grid;grid-template-columns:repeat(5,1fr);gap:1.5rem;align-items:start}@media(max-width:1600px){.kanban-board{grid-template-columns:repeat(3,1fr)}}@media(max-width:1200px){.kanban-board{grid-template-columns:repeat(2,1fr)}}.kanban-column{background:#fff;border-radius:12px;padding:1rem;box-shadow:0 4px 6px #0000001a;display:flex;flex-direction:column;min-height:500px}.column-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid #e2e8f0}.column-title{font-size:1.125rem;font-weight:600;color:#2d3748;margin:0}.column-count{background:#e2e8f0;color:#4a5568;padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:600}.column-content{flex:1;min-height:200px;transition:background-color .2s ease}.column-content.dragging-over{background-color:#edf2f7;border-radius:8px}.empty-column{display:flex;align-items:center;justify-content:center;padding:2rem;color:#a0aec0;font-style:italic}.project-card{background:#fff;border:2px solid #e2e8f0;border-radius:12px;padding:1rem;margin-bottom:1rem;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 3px #0000001a}.project-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026;border-color:#cbd5e0}.project-card.dragging{opacity:.5;transform:rotate(5deg)}.project-card.urgent{border-left:4px solid #f56565}.project-card.warning{border-left:4px solid #ed8936}.project-card.overdue{border-left:4px solid #c53030;background-color:#fff5f5}.project-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.75rem}.project-name{margin:0;font-size:1rem;font-weight:600;color:#2d3748;line-height:1.4;flex:1}.delete-project-button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:1px solid #e2e8f0;border-radius:6px;color:#e53e3e;cursor:pointer;transition:all .2s ease;flex-shrink:0;opacity:0}.project-card:hover .delete-project-button{opacity:1}.delete-project-button:hover{background:#fff5f5;border-color:#e53e3e;transform:scale(1.1)}.project-info{display:flex;flex-direction:column;gap:.5rem}.info-row{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#4a5568}.info-row svg{color:#718096;flex-shrink:0}.info-label{font-weight:500}.info-value{color:#2d3748}.info-value.price{font-weight:600;color:#2b6cb0}.risk-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;border-radius:6px;font-size:.75rem;font-weight:700;margin-top:.5rem;animation:badge-pulse 2s ease-in-out infinite}.risk-badge.critical{background:linear-gradient(135deg,#fc8181,#e53e3e);color:#fff;box-shadow:0 2px 8px #e53e3e66}.risk-badge.high{background:linear-gradient(135deg,#f6ad55,#ed8936);color:#fff;box-shadow:0 2px 8px #ed893666}.risk-badge.medium{background:linear-gradient(135deg,#f6e05e,#ecc94b);color:#744210;box-shadow:0 2px 8px #ecc94b66}.risk-badge.low{background:linear-gradient(135deg,#63b3ed,#4299e1);color:#fff;box-shadow:0 2px 8px #4299e166}@keyframes badge-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.days-until{background:#edf2f7;padding:.375rem .75rem;border-radius:6px;font-size:.875rem;font-weight:600;text-align:center;margin:.5rem 0}.days-until .overdue-text{color:#c53030}.days-until .today-text{color:#d69e2e}@media(max-width:768px){.dashboard{padding:1rem}.dashboard-header{padding:1.5rem}.dashboard-header h1{font-size:1.5rem}.kanban-board,.header-stats{grid-template-columns:1fr}}.column-content::-webkit-scrollbar{width:8px}.column-content::-webkit-scrollbar-track{background:#f7fafc;border-radius:4px}.column-content::-webkit-scrollbar-thumb{background:#cbd5e0;border-radius:4px}.column-content::-webkit-scrollbar-thumb:hover{background:#a0aec0}.email-modal-backdrop{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out;padding:1rem}.email-modal{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;width:100%;max-width:700px;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.email-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:2px solid #e2e8f0}.email-modal-title{display:flex;align-items:center;gap:.75rem;color:#2d3748}.email-modal-title svg{color:#667eea}.email-modal-title h2{margin:0;font-size:1.5rem;font-weight:600}.email-modal-close{padding:.5rem;background:transparent;border:none;color:#718096;cursor:pointer;border-radius:8px;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.email-modal-close:hover{background:#edf2f7;color:#2d3748}.email-modal-content{flex:1;overflow-y:auto;padding:1.5rem}.email-generating{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1.5rem;text-align:center}.email-generating .spinning{color:#667eea;margin-bottom:1rem;animation:spin 1s linear infinite}.email-generating p{font-size:1.125rem;font-weight:600;color:#2d3748;margin:0 0 .5rem}.generating-hint{font-size:.875rem;color:#718096}.email-field{margin-bottom:1.5rem}.email-field-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.email-field-header label{font-weight:600;color:#2d3748;font-size:.875rem}.copy-button-small{padding:.375rem;background:#edf2f7;border:none;border-radius:6px;color:#4a5568;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.copy-button-small:hover{background:#e2e8f0;color:#2d3748}.email-subject-input{width:100%;padding:.75rem;border:2px solid #e2e8f0;border-radius:8px;font-size:1rem;font-family:inherit;transition:border-color .2s ease}.email-subject-input:focus{outline:none;border-color:#667eea}.email-body-textarea{width:100%;padding:.75rem;border:2px solid #e2e8f0;border-radius:8px;font-size:1rem;font-family:inherit;resize:vertical;line-height:1.6;transition:border-color .2s ease}.email-body-textarea:focus{outline:none;border-color:#667eea}.email-hint{padding:.75rem 1rem;background:#ebf8ff;border-left:4px solid #4299e1;border-radius:6px;font-size:.875rem;color:#2c5282;margin-top:1rem}.email-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;padding:1.5rem;border-top:2px solid #e2e8f0}.email-cancel-button{padding:.75rem 1.5rem;background:#edf2f7;color:#4a5568;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.email-cancel-button:hover{background:#e2e8f0}.email-copy-button{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.email-copy-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.email-modal-content::-webkit-scrollbar{width:8px}.email-modal-content::-webkit-scrollbar-track{background:#f7fafc;border-radius:4px}.email-modal-content::-webkit-scrollbar-thumb{background:#cbd5e0;border-radius:4px}.email-modal-content::-webkit-scrollbar-thumb:hover{background:#a0aec0}@media(max-width:768px){.email-modal{max-width:95%;max-height:95vh}.email-modal-header,.email-modal-content{padding:1rem}.email-modal-footer{padding:1rem;flex-direction:column}.email-cancel-button,.email-copy-button{width:100%}.email-modal-title h2{font-size:1.25rem}}.contact-modal{max-width:500px;width:90%;max-height:90vh;overflow-y:auto}.contact-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px;border-bottom:1px solid #e5e7eb}.contact-modal .modal-header h2{margin:0;font-size:20px;font-weight:600;color:#1f2937}.contact-form{padding:24px}.form-group{margin-bottom:20px}.form-group label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:#374151;margin-bottom:8px}.form-group label .required{color:#ef4444;font-weight:600}.form-group input,.form-group select{width:100%;padding:10px 12px;font-size:14px;border:1px solid #d1d5db;border-radius:8px;transition:all .2s;font-family:inherit}.form-group input:focus,.form-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input.error,.form-group select.error{border-color:#ef4444}.form-group input.error:focus,.form-group select.error:focus{box-shadow:0 0 0 3px #ef44441a}.error-message{display:block;margin-top:6px;font-size:12px;color:#ef4444}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb;background-color:#f9fafb;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.cancel-button,.save-button{padding:10px 20px;font-size:14px;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:all .2s}.cancel-button{background-color:#fff;color:#6b7280;border:1px solid #d1d5db}.cancel-button:hover{background-color:#f9fafb;border-color:#9ca3af}.save-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.save-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.save-button:active{transform:translateY(0)}@media(max-width:640px){.contact-modal{max-width:100%;width:100%;max-height:100vh;border-radius:0}.contact-modal .modal-header,.contact-form{padding:16px}.modal-footer{padding:12px 16px}}.project-detail{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem}.detail-header{background:#fff;border-radius:16px;padding:2rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a;display:flex;align-items:center;gap:1.5rem}.back-button{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#edf2f7;border:none;border-radius:8px;color:#4a5568;font-size:.875rem;cursor:pointer;transition:all .2s ease}.back-button:hover{background:#e2e8f0;transform:translate(-2px)}.detail-header h1{flex:1;margin:0;font-size:1.75rem;color:#1a202c}.status-badge{padding:.5rem 1.25rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:20px;font-size:.875rem;font-weight:600}.progress-summary{background:#fff;border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a;display:flex;align-items:center;gap:2rem}.progress-card{flex:1}.progress-label{display:block;font-size:.875rem;color:#4a5568;margin-bottom:.5rem;font-weight:600}.progress-bar-container{height:12px;background:#e2e8f0;border-radius:6px;overflow:hidden;margin-bottom:.5rem}.progress-bar{height:100%;background:linear-gradient(90deg,#48bb78,#38a169);transition:width .3s ease}.progress-text{font-size:.875rem;color:#718096}.urgent-alert{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;background:#fed7d7;color:#c53030;border-radius:8px;font-weight:600}.detail-content{display:flex;flex-direction:column;gap:1.5rem}.detail-section{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px #0000001a}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid #e2e8f0}.section-header h2{margin:0;font-size:1.25rem;color:#2d3748}.header-buttons{display:flex;gap:.75rem;align-items:center}.edit-button,.add-button{padding:.5rem 1rem;background:#667eea;color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.edit-button:hover,.add-button:hover{background:#5a67d8;transform:translateY(-1px)}.add-button{display:flex;align-items:center;gap:.5rem}.upload-button{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.upload-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #f093fb66}.upload-button:disabled{opacity:.7;cursor:not-allowed}.upload-button .spinning{animation:spin 1s linear infinite}.upload-success-message{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:#c6f6d5;color:#22543d;border-radius:8px;margin-bottom:1rem;font-weight:600;animation:slideIn .3s ease-out}.upload-error-message{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:#fed7d7;color:#742a2a;border-radius:8px;margin-bottom:1rem;font-weight:600;animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.add-button-small{padding:.375rem;background:#edf2f7;color:#4a5568;border:none;border-radius:6px;cursor:pointer;transition:all .2s ease}.add-button-small:hover{background:#e2e8f0}.save-contacts-button{display:flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:6px;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 6px #10b9814d}.save-contacts-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #10b98180}.email-create-button{display:flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:linear-gradient(135deg,#4facfe,#00f2fe);color:#fff;border:none;border-radius:6px;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s ease}.email-create-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #4facfe66}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.info-item{display:flex;flex-direction:column;gap:.5rem}.info-item label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;color:#4a5568}.info-item label svg{color:#718096}.info-item .value{font-size:1rem;color:#2d3748;padding:.5rem;background:#f7fafc;border-radius:6px}.info-item .value.highlight{background:#ebf8ff;color:#2c5282;font-weight:600}.info-item .value.price{color:#2b6cb0;font-weight:600}.info-item input{padding:.5rem;border:2px solid #e2e8f0;border-radius:6px;font-size:.875rem;transition:border-color .2s ease}.info-item input:focus{outline:none;border-color:#667eea}.task-list{display:flex;flex-direction:column;gap:.75rem}.task-item{display:flex;align-items:flex-start;gap:1rem;padding:1rem;background:#f7fafc;border-radius:8px;border:2px solid transparent;transition:all .2s ease}.task-item:hover{background:#edf2f7;border-color:#e2e8f0}.task-item.completed{opacity:.6}.task-item.completed .task-name{text-decoration:line-through;color:#a0aec0}.task-checkbox{position:relative}.task-checkbox input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}.task-checkbox label{cursor:pointer;display:flex;align-items:center}.check-icon{color:#a0aec0;transition:color .2s ease}.task-item.completed .check-icon{color:#48bb78}.task-content{flex:1;display:flex;flex-direction:column;gap:.5rem}.task-name{font-size:1rem;color:#2d3748;font-weight:500}.task-meta{display:flex;align-items:center;gap:1rem;font-size:.875rem}.task-due-date{color:#718096}.task-priority{font-weight:600;padding:.125rem .5rem;border-radius:4px;background:#0000000d}.two-column-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.contact-list{display:flex;flex-direction:column;gap:.75rem}.contact-item{display:flex!important;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem;background:#f7fafc;border-radius:8px;border-left:4px solid #667eea;transition:all .2s ease;position:relative}.contact-item:hover{background:#edf2f7;box-shadow:0 2px 8px #00000014}.contact-content{flex:1}.contact-header{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.5rem}.contact-role{font-size:.75rem;color:#667eea;font-weight:600;text-transform:uppercase}.contact-name{font-size:1rem;color:#2d3748;font-weight:600}.contact-company{font-size:.875rem;color:#718096;margin-bottom:.5rem}.contact-details{display:flex;flex-direction:column;gap:.375rem}.contact-detail{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#4a5568}.contact-detail svg{color:#718096;flex-shrink:0}.contact-actions{display:flex!important;gap:.5rem;flex-shrink:0;align-items:center}.icon-button{display:flex!important;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:6px;cursor:pointer;transition:all .2s ease;background:#fff;box-shadow:0 1px 3px #0000001a}.icon-button:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001f}.icon-button.edit-button{color:#667eea;border:1px solid #e0e7ff}.icon-button.edit-button:hover{background:#eef2ff;color:#5a67d8;border-color:#667eea}.icon-button.delete-button{color:#e53e3e;border:1px solid #fee}.icon-button.delete-button:hover{background:#fff5f5;color:#c53030;border-color:#e53e3e}.empty-add-button{display:flex;align-items:center;gap:.5rem;margin-top:1rem;padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.empty-add-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.document-list{display:flex;flex-direction:column;gap:.75rem}.document-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#f7fafc;border-radius:8px;transition:background-color .2s ease}.document-item:hover{background:#edf2f7}.document-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#e2e8f0;border-radius:8px;color:#4a5568;flex-shrink:0}.document-content{flex:1;display:flex;flex-direction:column;gap:.25rem}.document-name{font-size:.875rem;color:#2d3748;font-weight:500}.document-status{font-size:.75rem;font-weight:600;width:fit-content;padding:.125rem .5rem;border-radius:4px}.document-status.received{background:#c6f6d5;color:#22543d}.document-status.pending{background:#fed7d7;color:#742a2a}.download-button{padding:.5rem;background:#edf2f7;color:#4a5568;border:none;border-radius:6px;cursor:pointer;transition:all .2s ease}.download-button:hover{background:#e2e8f0;color:#2d3748}.empty-state{padding:2rem;text-align:center;color:#a0aec0;font-style:italic}.error-message{background:#fff;border-radius:12px;padding:2rem;text-align:center;color:#c53030;font-weight:600}@media(max-width:768px){.project-detail{padding:1rem}.detail-header{flex-direction:column;align-items:flex-start}.detail-header h1{font-size:1.5rem}.progress-summary{flex-direction:column;align-items:stretch}.info-grid,.two-column-section{grid-template-columns:1fr}}.calendar-page{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem}.calendar-header{background:#fff;border-radius:16px;padding:2rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.header-title{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.back-to-dashboard{padding:.5rem 1rem;background:#fff;color:#667eea;border:2px solid #667eea;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease;font-size:.875rem}.back-to-dashboard:hover{background:#667eea;color:#fff}.header-title h1{margin:0;font-size:2rem;color:#1a202c}.header-controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.view-mode-selector{display:flex;gap:.5rem;background:#f7fafc;padding:.25rem;border-radius:8px}.view-button{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:none;background:transparent;border-radius:6px;cursor:pointer;font-weight:500;color:#4a5568;transition:all .2s ease}.view-button:hover{background:#e2e8f0}.view-button.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.date-navigation{display:flex;align-items:center;gap:.5rem}.nav-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:2px solid #e2e8f0;background:#fff;border-radius:8px;cursor:pointer;transition:all .2s ease}.nav-button:hover{background:#f7fafc;border-color:#cbd5e0}.today-button{padding:.5rem 1rem;border:2px solid #667eea;background:#fff;color:#667eea;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease}.today-button:hover{background:#667eea;color:#fff}.current-date-display{font-size:1.125rem;font-weight:600;color:#2d3748;padding:.5rem 1rem;background:#f7fafc;border-radius:8px;min-width:200px;text-align:center}.ai-schedule-button{display:flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.ai-schedule-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #f59e0b66}.ai-schedule-button:disabled{opacity:.7;cursor:not-allowed}.ai-schedule-button .spinning{animation:spin 1s linear infinite}.filter-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:2px solid #e2e8f0;background:#fff;border-radius:8px;cursor:pointer;transition:all .2s ease}.filter-button:hover{background:#f7fafc;border-color:#cbd5e0}.schedule-suggestion-banner{background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b;border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.suggestion-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.suggestion-header h3{margin:0;font-size:1.25rem;color:#92400e;flex:1}.close-suggestion{background:none;border:none;font-size:1.5rem;color:#92400e;cursor:pointer;padding:0;width:24px;height:24px}.suggestion-content p{margin:0 0 1rem;color:#78350f;line-height:1.6}.recommendation-list{margin:0;padding-left:1.5rem;color:#78350f}.recommendation-list li{margin-bottom:.5rem}.calendar-content{background:#fff;border-radius:16px;padding:2rem;box-shadow:0 4px 6px #0000001a;min-height:600px}.month-view{display:flex;flex-direction:column;height:100%}.weekday-header{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e2e8f0;border-radius:8px 8px 0 0;overflow:hidden;margin-bottom:1px}.weekday{background:#f7fafc;padding:.75rem;text-align:center;font-weight:600;color:#4a5568}.weekday.sunday{color:#e53e3e}.weekday.saturday{color:#3182ce}.days-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e2e8f0;flex:1;border-radius:0 0 8px 8px;overflow:hidden}.day-cell{background:#fff;padding:.4rem;min-height:90px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;font-size:.85rem}.day-cell:hover{background:#f7fafc}.day-cell.other-month{background:#fafafa;opacity:.5}.day-cell.today{background:#ebf8ff;border:2px solid #3182ce}.day-number{font-weight:600;color:#2d3748;margin-bottom:.5rem;font-size:.875rem}.day-cell.today .day-number{background:#3182ce;color:#fff;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center}.day-events{display:flex;flex-direction:column;gap:.25rem;overflow:hidden}.event-badge{padding:.2rem .4rem;border-radius:4px;font-size:.7rem;color:#fff;cursor:pointer;transition:all .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-badge:hover{transform:translate(2px);box-shadow:0 2px 4px #0003}.more-events{font-size:.75rem;color:#718096;text-align:center;margin-top:.25rem;font-weight:600}.week-view{display:flex;flex-direction:column;height:100%}.week-header{display:grid;grid-template-columns:80px repeat(7,1fr);gap:1px;background:#e2e8f0;border-radius:8px 8px 0 0;overflow:hidden;margin-bottom:1px}.time-column-header{background:#f7fafc;padding:1rem;text-align:center;font-weight:600;color:#4a5568}.week-day-header{background:#f7fafc;padding:1rem;text-align:center}.week-day-header.today{background:#ebf8ff}.day-name{font-weight:600;color:#4a5568;margin-bottom:.25rem}.day-date{font-size:1.5rem;font-weight:700;color:#2d3748}.week-grid{display:grid;grid-template-columns:80px repeat(7,1fr);gap:1px;background:#e2e8f0;flex:1;overflow-y:auto;border-radius:0 0 8px 8px}.time-column{background:#f7fafc;display:flex;flex-direction:column}.time-slot{height:60px;padding:.5rem;font-size:.75rem;color:#718096;border-bottom:1px solid #e2e8f0}.week-day-column{background:#fff;position:relative;border-left:1px solid #e2e8f0}.hour-slot{height:60px;border-bottom:1px solid #f7fafc}.events-overlay{position:absolute;top:0;left:0;right:0;pointer-events:none}.week-event{position:absolute;left:4px;right:4px;padding:.5rem;border-radius:4px;color:#fff;cursor:pointer;pointer-events:all;min-height:50px;display:flex;flex-direction:column;box-shadow:0 2px 4px #0000001a;transition:all .2s ease}.week-event:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0003}.event-time{font-size:.75rem;font-weight:600;margin-bottom:.25rem;opacity:.9}.event-title{font-size:.875rem;font-weight:600;line-height:1.3}.day-view{display:flex;flex-direction:column;height:100%}.day-view-header{margin-bottom:2rem;border-bottom:2px solid #e2e8f0;padding-bottom:1rem}.day-view-header h2{margin:0 0 .5rem;font-size:1.75rem;color:#2d3748}.no-events{color:#a0aec0;font-style:italic}.event-count{color:#718096;font-weight:600}.day-view-content{display:flex;flex-direction:column;gap:2rem}.event-group{background:#f7fafc;border-radius:12px;padding:1.5rem}.group-title{margin:0 0 1rem;font-size:1.25rem;color:#2d3748;display:flex;align-items:center;gap:.5rem}.group-title:before{content:"";width:4px;height:24px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:2px}.event-list{display:flex;flex-direction:column;gap:1rem}.event-card{background:#fff;border-radius:8px;padding:.875rem;display:flex;align-items:center;gap:.875rem;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0000000d}.event-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.event-indicator{width:4px;height:50px;border-radius:2px;flex-shrink:0}.event-info{flex:1;min-width:0}.event-info .event-title{margin:0 0 .5rem;font-size:1rem;font-weight:600;color:#2d3748}.event-project{margin:0;font-size:.875rem;color:#718096}.priority-badge{display:inline-block;padding:.25rem .625rem;border-radius:12px;font-size:.75rem;font-weight:600;margin-top:.5rem}.priority-高{background:#fed7d7;color:#c53030}.priority-中{background:#feebc8;color:#c05621}.priority-低{background:#e2e8f0;color:#4a5568}.event-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.view-project-button{padding:.5rem .875rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-weight:600;font-size:.8125rem;cursor:pointer;transition:all .2s ease;white-space:nowrap}.view-project-button:hover{transform:translateY(-1px);box-shadow:0 4px 8px #667eea66}.delete-event-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#e53e3e;cursor:pointer;transition:all .2s ease}.delete-event-button:hover{background:#fff5f5;border-color:#e53e3e;transform:scale(1.1)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.event-modal{background:#fff;border-radius:16px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;animation:slideUp .3s ease}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:2px solid #e2e8f0}.modal-header h2{margin:0;font-size:1.5rem;color:#2d3748;flex:1}.close-button{background:none;border:none;font-size:1.5rem;color:#a0aec0;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s ease}.close-button:hover{background:#f7fafc;color:#4a5568}.modal-content{padding:1.5rem}.event-detail-row{display:flex;align-items:center;padding:1rem 0;border-bottom:1px solid #f7fafc}.detail-label{font-weight:600;color:#4a5568;width:120px}.detail-value{color:#2d3748}.important-notice{display:flex;align-items:center;gap:.5rem;padding:1rem;background:#fff5f5;border:2px solid #fc8181;border-radius:8px;color:#c53030;font-weight:600;margin-top:1rem}.modal-actions{display:flex;gap:1rem;padding:1.5rem;border-top:2px solid #e2e8f0}.primary-button{flex:1;padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease}.primary-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.secondary-button{padding:.75rem 1.5rem;background:#fff;color:#4a5568;border:2px solid #e2e8f0;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease}.secondary-button:hover{background:#f7fafc;border-color:#cbd5e0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:1024px){.calendar-page{padding:1rem}.calendar-header{padding:1.5rem}.header-controls{flex-direction:column;align-items:stretch}.current-date-display{order:-1}.day-cell{min-height:80px}.event-badge{font-size:.65rem}}@media(max-width:768px){.calendar-header{padding:1rem}.header-title h1{font-size:1.5rem}.weekday{padding:.5rem;font-size:.875rem}.day-cell{min-height:60px;padding:.25rem}.day-number{font-size:.75rem}.event-badge{font-size:.6rem;padding:.125rem .25rem}.week-grid{font-size:.75rem}.time-slot,.hour-slot{height:50px}.event-modal{width:95%}}.status-select{padding:8px 12px;font-size:14px;border:1px solid #d1d5db;border-radius:8px;background-color:#fff;color:#1f2937;cursor:pointer;transition:all .2s;font-family:inherit}.status-select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.update-status-button{padding:10px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.update-status-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.update-status-button:active{transform:translateY(0)}.mobile-bottom-nav{position:fixed;bottom:0;left:0;right:0;height:70px;background:#fff;border-top:1px solid #e2e8f0;display:flex;justify-content:space-around;align-items:center;padding:0 .5rem;z-index:1000;box-shadow:0 -2px 10px #0000001a;padding-bottom:env(safe-area-inset-bottom)}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding:.5rem;border:none;background:none;cursor:pointer;transition:all .2s ease;color:#718096;-webkit-tap-highlight-color:transparent;min-height:48px;min-width:48px}.nav-item:active{transform:scale(.95)}.nav-item.active{color:#667eea}.nav-icon{transition:all .2s ease}.nav-item.active .nav-icon{transform:translateY(-2px)}.nav-label{font-size:.75rem;font-weight:600;line-height:1}.nav-item.active .nav-label{color:#667eea}.mobile-layout{padding-bottom:calc(70px + env(safe-area-inset-bottom))}@keyframes navItemPop{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.nav-item.active{animation:navItemPop .3s ease}.nav-badge{position:absolute;top:.25rem;right:.25rem;background:#ef4444;color:#fff;font-size:.625rem;font-weight:700;padding:.125rem .375rem;border-radius:10px;min-width:18px;text-align:center}@media(prefers-color-scheme:dark){.mobile-bottom-nav{background:#1a202c;border-top-color:#2d3748}.nav-item{color:#a0aec0}.nav-item.active{color:#667eea}}.mobile-dashboard{min-height:100vh;background:#f7fafc;padding-bottom:calc(70px + env(safe-area-inset-bottom));overflow-x:hidden}.mobile-header{background:linear-gradient(135deg,#667eea,#764ba2);padding:1rem 1rem 1.5rem;padding-top:calc(1rem + env(safe-area-inset-top));color:#fff}.header-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.header-content h1{margin:0;font-size:1.5rem;font-weight:700}.calendar-button{background:#fff3;border:none;padding:.5rem;border-radius:12px;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent;min-width:44px;min-height:44px}.calendar-button:active{transform:scale(.95);background:#ffffff4d}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:.75rem;margin-bottom:1rem}.stat-card{background:#fff3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:.75rem;text-align:center;display:flex;flex-direction:column;gap:.25rem}.stat-card.risk{background:#ef44444d;animation:pulse 2s ease-in-out infinite}.stat-value{font-size:1.75rem;font-weight:700;line-height:1}.stat-label{font-size:.75rem;opacity:.9;font-weight:500}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.mobile-risk-banner{background:#ef444426;border:2px solid rgba(239,68,68,.3);border-radius:12px;padding:.75rem;display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;color:#fff}.mobile-risk-banner span{flex:1;font-size:.875rem;font-weight:600}.mobile-risk-banner button{background:#fff;color:#667eea;border:none;padding:.375rem .75rem;border-radius:8px;font-weight:600;font-size:.75rem;cursor:pointer;-webkit-tap-highlight-color:transparent}.status-filter{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.5rem;-webkit-overflow-scrolling:touch;scrollbar-width:none}.status-filter::-webkit-scrollbar{display:none}.filter-chip{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:20px;font-size:.875rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .2s ease;-webkit-tap-highlight-color:transparent;min-height:36px}.filter-chip:active{transform:scale(.95)}.filter-chip.active{background:#fff;color:#667eea;border-color:#fff}.mobile-project-list{padding:1rem;display:flex;flex-direction:column;gap:1rem}.mobile-project-card{background:#fff;border-radius:16px;padding:1rem;box-shadow:0 2px 8px #0000001a;cursor:pointer;transition:all .2s ease;position:relative;-webkit-tap-highlight-color:transparent}.mobile-project-card:active{transform:scale(.98);box-shadow:0 4px 12px #00000026}.mobile-project-card.has-risk{border-left:4px solid #ef4444}.risk-indicator{position:absolute;top:1rem;right:1rem;background:#fee;color:#ef4444;padding:.25rem;border-radius:6px;display:flex;align-items:center;justify-content:center}.project-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.project-name{margin:0;font-size:1.125rem;font-weight:700;color:#1a202c;flex:1;padding-right:2rem}.chevron{color:#cbd5e0;flex-shrink:0}.project-details{display:flex;flex-direction:column;gap:.5rem}.status-badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:700;width:fit-content;margin-bottom:.25rem}.status-badge.契約前{background:#e5e7eb;color:#374151}.status-badge.契約済み,.status-badge.契約直後{background:#dbeafe;color:#1e40af}.status-badge.融資承認待ち{background:#fef3c7;color:#92400e}.status-badge.決済準備中{background:#f3e8ff;color:#6b21a8}.status-badge.決済完了{background:#d1fae5;color:#065f46}.detail-row{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#4a5568}.detail-label{font-weight:500}.detail-value{color:#1a202c;font-weight:600}.detail-value.price{color:#667eea}.days-badge{display:inline-block;padding:.375rem .75rem;border-radius:8px;font-size:.875rem;font-weight:700;width:fit-content;background:#f7fafc;color:#4a5568}.days-badge.urgent{background:#fee;color:#c53030}.days-badge.warning{background:#fef5e7;color:#d69e2e}.days-badge.overdue{background:#fed7d7;color:#c53030;animation:blink 1.5s ease-in-out infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.7}}.empty-state{text-align:center;padding:3rem 1rem;color:#a0aec0}.empty-state p{margin:0;font-size:1rem}.risk-check-button{background:#ffffff40;border:1px solid rgba(255,255,255,.4);color:#fff;padding:.625rem 1rem;border-radius:12px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1rem;width:100%}.risk-check-button:active:not(:disabled){transform:scale(.98);background:#ffffff59}.risk-check-button:disabled{opacity:.6;cursor:not-allowed}.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fab{position:fixed;bottom:calc(80px + env(safe-area-inset-bottom));right:1rem;width:56px;height:56px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:50%;box-shadow:0 4px 12px #667eea66;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:999;-webkit-tap-highlight-color:transparent}.fab:active:not(:disabled){transform:scale(.9)}.fab:disabled{opacity:.6;cursor:not-allowed}@keyframes slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mobile-project-card{animation:slideDown .3s ease}.mobile-dashboard{scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.mobile-project-card:after{content:"";position:absolute;inset:0;background:#667eea1a;border-radius:16px;opacity:0;transition:opacity .2s ease;pointer-events:none}.mobile-project-card:active:after{opacity:1}.mobile-calendar{min-height:100vh;background:#f7fafc;padding-bottom:calc(70px + env(safe-area-inset-bottom))}.mobile-calendar-header{background:linear-gradient(135deg,#667eea,#764ba2);padding:1rem;padding-top:calc(1rem + env(safe-area-inset-top));color:#fff}.header-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.header-controls h1{margin:0;font-size:1.5rem;font-weight:700}.view-toggle{display:flex;gap:.5rem;background:#fff3;padding:.25rem;border-radius:10px}.view-toggle button{background:transparent;border:none;padding:.5rem;border-radius:8px;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent;min-width:40px;min-height:40px}.view-toggle button.active{background:#fff;color:#667eea}.month-navigation{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.nav-btn{background:#fff3;border:none;padding:.5rem;border-radius:8px;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent;min-width:40px;min-height:40px}.nav-btn:active{transform:scale(.95);background:#ffffff4d}.current-month{font-size:1.125rem;font-weight:700}.today-btn{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.today-btn:active{transform:scale(.95);background:#ffffff4d}.mobile-month-view{background:#fff;margin:1rem;border-radius:16px;padding:1rem;box-shadow:0 2px 8px #0000001a}.weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;margin-bottom:.5rem}.weekday{text-align:center;font-weight:700;font-size:.75rem;color:#4a5568;padding:.5rem 0}.weekday.sun{color:#ef4444}.weekday.sat{color:#3b82f6}.days-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.day-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:.25rem;border-radius:8px;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent;position:relative}.day-cell:active{transform:scale(.95)}.day-cell.other-month{opacity:.3}.day-cell.today{background:#ebf4ff}.day-cell.today .day-number{background:#667eea;color:#fff;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center}.day-cell.selected{background:#e0e7ff;border:2px solid #667eea}.day-number{font-size:.875rem;font-weight:600;color:#1a202c;margin-bottom:.125rem}.event-dots{display:flex;gap:2px;flex-wrap:wrap;justify-content:center;align-items:center;margin-top:auto}.event-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.more-events-badge{font-size:.625rem;color:#667eea;font-weight:700;margin-left:2px}.mobile-list-view{padding:1rem}.list-title{font-size:1.25rem;font-weight:700;color:#1a202c;margin:0 0 1rem;padding-left:.5rem}.events-list{display:flex;flex-direction:column;gap:.75rem}.event-item{background:#fff;border-radius:12px;padding:1rem;display:flex;align-items:center;gap:.75rem;box-shadow:0 2px 8px #0000001a;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.event-item:active{transform:scale(.98)}.event-indicator{width:4px;height:48px;border-radius:2px;flex-shrink:0}.event-content{flex:1;display:flex;flex-direction:column;gap:.25rem}.event-type{font-size:.75rem;font-weight:700;color:#667eea;text-transform:uppercase;letter-spacing:.5px}.event-title{font-size:1rem;font-weight:700;color:#1a202c;line-height:1.3}.event-date{font-size:.875rem;color:#718096}.event-item .chevron{color:#cbd5e0;flex-shrink:0}.empty-events{text-align:center;padding:3rem 1rem;color:#a0aec0}.empty-events p{margin:0;font-size:1rem}@keyframes slideInUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.event-item{animation:slideInUp .3s ease}.event-item:nth-child(1){animation-delay:0s}.event-item:nth-child(2){animation-delay:.05s}.event-item:nth-child(3){animation-delay:.1s}.event-item:nth-child(4){animation-delay:.15s}.event-item:nth-child(5){animation-delay:.2s}.swipe-indicator{position:fixed;bottom:calc(80px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:#000000b3;color:#fff;padding:.5rem 1rem;border-radius:20px;font-size:.875rem;pointer-events:none;z-index:1000;animation:fadeInOut 2s ease}@keyframes fadeInOut{0%,to{opacity:0}50%{opacity:1}}.day-cell:after{content:"";position:absolute;inset:0;background:#667eea1a;border-radius:8px;opacity:0;transition:opacity .2s ease;pointer-events:none}.day-cell:active:after{opacity:1}*{box-sizing:border-box}.app{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scroll-behavior:smooth}body{margin:0;padding:0}a{color:inherit;text-decoration:none}button{font-family:inherit}::selection{background-color:#667eea;color:#fff}*:focus{outline:2px solid #667eea;outline-offset:2px}button:focus,input:focus,select:focus,textarea:focus{outline:2px solid #667eea;outline-offset:2px}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.modal-content{background-color:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;position:relative;max-height:90vh;overflow-y:auto}.modal-close-button{background:none;border:none;cursor:pointer;color:#9ca3af;padding:4px;border-radius:6px;transition:all .2s;display:flex;align-items:center;justify-content:center}.modal-close-button:hover{background-color:#f3f4f6;color:#374151}
