:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#111827;background-color:#f3f4f6;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:#f3f4f6}#root{min-height:100vh}a{color:inherit}.route-loader{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:#1f2937}.spinner{width:42px;height:42px;border:4px solid rgba(37,99,235,.25);border-top-color:#2563eb;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1f2937,#111827);padding:2rem;color:#f9fafb}.login-card{background:#111827e6;border-radius:16px;padding:2.5rem;width:min(400px,100%);box-shadow:0 10px 40px #0f172a66;display:flex;flex-direction:column;gap:1rem}.login-card h1{margin:0;font-size:1.75rem;color:#f9fafb}.subtitle{margin:-.5rem 0 1rem;color:#9ca3af;font-size:.95rem}.login-card label{font-size:.9rem;color:#e5e7eb}.login-card input{padding:.75rem 1rem;border-radius:10px;border:1px solid #374151;background:#37415199;color:#f9fafb;font-size:1rem;transition:border-color .2s ease,background .2s ease}.login-card input:focus{outline:none;border-color:#60a5fa;background:#374151e6}.login-card button{margin-top:.5rem;padding:.85rem 1rem;border-radius:10px;border:none;background:linear-gradient(135deg,#2563eb,#3b82f6);color:#f9fafb;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.login-card button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 24px #2563eb59}.login-card button:disabled{opacity:.65;cursor:not-allowed}.error{color:#f87171;font-size:.9rem}.share-modal-backdrop{position:fixed;inset:0;background:#11182773;display:flex;align-items:center;justify-content:center;z-index:50;padding:1.5rem}.share-modal{width:min(640px,100%);background:#fff;border-radius:16px;box-shadow:0 20px 45px #0f172a40;display:flex;flex-direction:column;max-height:calc(100vh - 3rem)}.share-modal__header{padding:1.5rem;display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;border-bottom:1px solid #e5e7eb}.share-modal__header h2{margin:0;font-size:1.5rem;color:#111827}.share-modal__subtitle{margin:.25rem 0 0;color:#6b7280;font-size:.95rem}.share-modal__close{background:transparent;border:none;font-size:1.5rem;cursor:pointer;color:#6b7280}.share-modal__close:hover{color:#111827}.share-modal__content{padding:0 1.5rem;overflow-y:auto}.share-modal__status{margin:2rem 0;text-align:center;color:#6b7280}.share-modal__table{width:100%;border-collapse:collapse;margin:0}.share-modal__table th,.share-modal__table td{padding:.875rem 0;border-bottom:1px solid #f3f4f6;text-align:left}.share-modal__table th{font-weight:600;color:#374151;font-size:.9rem}.share-modal__user{display:flex;flex-direction:column;gap:.2rem}.share-modal__user-email{font-weight:500;color:#111827}.share-modal__user-name{font-size:.85rem;color:#6b7280}.share-modal__role-col{width:180px}.share-modal__role-col select{width:100%;padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:8px;font-size:.95rem;background:#fff;color:#111827}.share-modal__role-col select:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb26}.share-modal__badge{display:inline-flex;align-items:center;padding:.25rem .6rem;border-radius:999px;background:#d1fae5;color:#047857;font-size:.8rem;font-weight:600}.share-modal__error{margin:0 1.5rem;padding:.75rem 1rem;background:#fee2e2;color:#b91c1c;border-radius:10px}.share-modal__footer{padding:1.25rem 1.5rem;display:flex;justify-content:flex-end;gap:.75rem;border-top:1px solid #e5e7eb}.share-modal__footer button{padding:.55rem 1.1rem;border-radius:8px;border:none;font-size:.95rem;font-weight:600;cursor:pointer}.share-modal__footer button.secondary{background:#f3f4f6;color:#374151}.share-modal__footer button.secondary:hover:not(:disabled){background:#e5e7eb}.share-modal__footer button:not(.secondary){background:#2563eb;color:#fff}.share-modal__footer button:not(.secondary):hover:not(:disabled){background:#1d4ed8}.share-modal__footer button:disabled{opacity:.6;cursor:not-allowed}.projects-layout{min-height:100vh;background:#f3f4f6;color:#111827}.top-bar{display:flex;align-items:center;justify-content:space-between;padding:1.5rem 2rem;background:#1f2937;color:#f9fafb}.top-bar h1{margin:0 0 .2rem;font-size:1.75rem}.user-meta{margin:0;color:#d1d5db;font-size:.95rem}.logout{background:transparent;border:1px solid rgba(249,250,251,.4);color:#f9fafb;padding:.6rem 1rem;border-radius:8px;cursor:pointer;transition:background .2s ease}.logout:hover{background:#f9fafb1a}main{padding:2rem;display:grid;gap:2rem;grid-template-columns:minmax(260px,360px) 1fr}@media(max-width:960px){main{grid-template-columns:1fr}}.project-form-section,.projects-list-section{background:#fff;border-radius:16px;padding:1.75rem;box-shadow:0 10px 30px #0f172a1f}.project-form{display:flex;flex-direction:column;gap:1rem}.field-group{display:flex;flex-direction:column;gap:.4rem}.field-group label{font-weight:600;color:#1f2937}.field-group input,.field-group textarea{border:1px solid #d1d5db;border-radius:10px;padding:.75rem 1rem;font-size:1rem;transition:border-color .2s ease,box-shadow .2s ease;resize:vertical}.field-group input:focus,.field-group textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb26}.form-actions{display:flex;gap:.75rem}button[type=submit],.form-actions .secondary{padding:.75rem 1.25rem;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;border:none;transition:transform .2s ease,box-shadow .2s ease}button[type=submit]{background:linear-gradient(135deg,#2563eb,#3b82f6);color:#f9fafb}button[type=submit]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 24px #2563eb40}button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.form-actions .secondary{background:#e5e7eb;color:#1f2937}.form-actions .secondary:hover{background:#d1d5db}.projects-list{list-style:none;margin:1.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:1rem}.projects-list .project-card{border:1px solid #e5e7eb;border-radius:12px;padding:1.25rem;display:flex;justify-content:space-between;gap:1.5rem;align-items:flex-start;background:#f9fafb}.projects-list .project-card h3{margin:0 0 .4rem}.projects-list .project-card p{margin:0 0 .6rem;color:#4b5563}.projects-list .project-card .meta{display:flex;gap:.75rem;font-size:.85rem;color:#6b7280;flex-wrap:wrap}.role{background:#e5e7eb;padding:.2rem .5rem;border-radius:6px;text-transform:capitalize}.role.owner{background:#10b98126;color:#047857}.role.editor{background:#3b82f626;color:#1d4ed8}.actions{display:flex;gap:.5rem}.actions button{padding:.6rem 1rem;border-radius:8px;border:none;cursor:pointer;font-weight:600;transition:background .2s ease}.actions .secondary{background:#e0e7ff;color:#3730a3}.actions .secondary:hover:not(:disabled){background:#c7d2fe}.actions .ghost{background:#eff6ff;color:#1d4ed8}.actions .ghost:hover:not(:disabled){background:#dbeafe}.actions button:hover:not(:disabled){background:#dbeafe}.actions button:disabled{background:#e5e7eb;color:#9ca3af;cursor:not-allowed}.actions .danger:disabled{background:#f3f4f6;color:#9ca3af}.actions .danger{background:#fee2e2;color:#b91c1c}.actions .danger:hover{background:#fecaca}.status{margin-top:1rem;color:#6b7280}.error-banner{background:#fee2e2;color:#b91c1c;padding:.75rem 1rem;border-radius:10px}.list-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.count{background:#1f2937;color:#f9fafb;padding:.2rem .6rem;border-radius:6px;font-weight:600}.project-detail-layout{min-height:100vh;background:#f3f4f6;color:#111827;display:flex;flex-direction:column}.project-detail-header{padding:1.5rem 2rem;background:#1f2937;color:#f9fafb;display:flex;align-items:center;justify-content:space-between;gap:1.5rem}.project-detail-header h1{margin:.5rem 0 0;font-size:1.9rem}.project-detail-meta{margin:.35rem 0 0;display:flex;gap:1rem;color:#d1d5db;font-size:.95rem;flex-wrap:wrap}.project-detail-main{flex:1;padding:2rem;display:grid;gap:1.5rem;grid-template-columns:minmax(300px,360px) 1fr}@media(max-width:1024px){.project-detail-main{grid-template-columns:1fr}}.project-summary,.project-files{background:#fff;border-radius:16px;padding:1.75rem;box-shadow:0 10px 30px #0f172a1f}.project-summary dl{margin:1rem 0 0;display:grid;gap:1rem}.project-summary dt{font-weight:600;color:#1f2937}.project-summary dd{margin:.25rem 0 0;color:#374151}.project-files__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.upload-button{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.1rem;background:#2563eb;color:#fff;border-radius:10px;font-weight:600;cursor:pointer;transition:background .2s ease}.upload-button:hover{background:#1d4ed8}.upload-button input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}.project-files__table{width:100%;border-collapse:collapse}.project-files__table th,.project-files__table td{padding:.75rem .5rem;border-bottom:1px solid #e5e7eb;text-align:left}.project-files__table th{font-weight:600;color:#374151;font-size:.95rem}.actions-col{width:140px;text-align:right}.actions-col button{padding:.5rem .9rem;border-radius:8px;border:none;font-weight:600;cursor:pointer;background:#fee2e2;color:#b91c1c}.actions-col button:hover{background:#fecaca}.badge{display:inline-block;padding:.2rem .6rem;background:#e5e7eb;border-radius:999px;font-size:.8rem;color:#4b5563}.error-banner{background:#fee2e2;color:#b91c1c;padding:.75rem 1rem;border-radius:10px;margin-bottom:1rem}.status{color:#6b7280}.link-button{background:none;border:none;color:#93c5fd;font-size:.95rem;cursor:pointer;padding:0}.link-button:hover{text-decoration:underline}.secondary{padding:.6rem 1rem;border:none;background:#e5e7eb;border-radius:8px;font-weight:600;cursor:pointer}.share-button{padding:.6rem 1.1rem;background:#e0e7ff;color:#3730a3;border-radius:10px;border:none;font-weight:600;cursor:pointer;transition:background .2s ease}.share-button:hover{background:#c7d2fe}
