*{box-sizing:border-box;margin:0;padding:0}:root{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;font-weight:400;color:#2c3e50;background-color:#f5f6fa;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{line-height:1.2;font-weight:600}a{color:#3498db;text-decoration:none;transition:color .2s}a:hover{color:#2980b9}button,input,select,textarea{font-family:inherit}input[type=month]::-webkit-clear-button{display:none;-webkit-appearance:none}.loading-overlay{position:fixed;inset:0;background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460);display:flex;align-items:center;justify-content:center;z-index:9999;overflow:hidden}.loading-background{position:absolute;inset:0;overflow:hidden}.loading-blob{position:absolute;border-radius:50%;filter:blur(80px);opacity:.6;animation:float 8s ease-in-out infinite}.blob-1{width:400px;height:400px;background:linear-gradient(135deg,#667eea,#764ba2);top:-100px;left:-100px;animation-delay:0s}.blob-2{width:350px;height:350px;background:linear-gradient(135deg,#f093fb,#f5576c);bottom:-50px;right:-50px;animation-delay:-2s}.blob-3{width:300px;height:300px;background:linear-gradient(135deg,#4facfe,#00f2fe);top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:-4s}@keyframes float{0%,to{transform:translate(0) scale(1)}25%{transform:translate(30px,-30px) scale(1.1)}50%{transform:translate(-20px,20px) scale(.95)}75%{transform:translate(20px,10px) scale(1.05)}}.loading-content{position:relative;text-align:center;color:#fff;z-index:1}.loading-logo{width:120px;height:120px;display:flex;align-items:center;justify-content:center;margin:0 auto 2rem;filter:drop-shadow(0 20px 40px rgba(99,102,241,.5))}.pulse-logo-svg{width:100%;height:100%;border-radius:50%}.pulse-line{stroke-dasharray:200;stroke-dashoffset:200;animation:draw-pulse 1.5s ease-in-out infinite}@keyframes draw-pulse{0%{stroke-dashoffset:200}50%{stroke-dashoffset:0}to{stroke-dashoffset:-200}}.loading-text{font-size:2rem;font-weight:700;margin:0 0 .5rem;letter-spacing:.1em;background:linear-gradient(90deg,#fff,#a8c0ff,#fff);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:shine 3s linear infinite}@keyframes shine{to{background-position:200% center}}.loading-subtext{font-size:1rem;opacity:.7;margin:0;font-weight:300}.layout{display:flex;min-height:100vh;background-color:#f5f6fa}.sidebar{width:64px;height:100vh;background-color:#2c3e50;color:#fff;position:sticky;top:0;display:flex;flex-direction:column;transition:width .3s cubic-bezier(.4,0,.2,1);overflow:hidden;z-index:1000;box-shadow:2px 0 5px #0000001a}.sidebar:hover{width:240px}.sidebar-header{height:64px;display:flex;align-items:center;padding:0 1rem;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.logo-icon{min-width:32px;height:32px;background-color:#3498db;color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.2rem}.sidebar-title{margin:0 0 0 1rem;font-size:1.25rem;font-weight:600;white-space:nowrap;opacity:0;transition:opacity .2s ease}.sidebar:hover .sidebar-title{opacity:1;transition-delay:.1s}.sidebar-content{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}.nav-menu{list-style:none;padding:1rem 0;margin:0;display:flex;flex-direction:column;gap:.25rem}.nav-link{display:flex;align-items:center;height:48px;padding:0 1.25rem;color:#bdc3c7;text-decoration:none;white-space:nowrap;transition:all .2s ease;border-left:3px solid transparent;background:none;border:none;width:100%;cursor:pointer;font-size:1rem;text-align:left}.nav-link:hover,.nav-link.active{background-color:#34495e;color:#fff}.nav-link.active{border-left-color:#3498db}.nav-icon{min-width:24px;height:24px;display:flex;align-items:center;justify-content:center}.nav-text{margin-left:1rem;opacity:0;transition:opacity .2s ease}.sidebar:hover .nav-text{opacity:1;transition-delay:.1s}.sidebar-footer{margin-top:auto;padding:1rem 0;border-top:1px solid rgba(255,255,255,.1)}.logout-btn{color:#e74c3c}.logout-btn:hover{background-color:#e74c3c1a;color:#e74c3c}.main-content{flex:1;min-width:0;padding:0}.sidebar-content::-webkit-scrollbar{width:4px}.sidebar-content::-webkit-scrollbar-track{background:transparent}.sidebar-content::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.sidebar-content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media(max-width:768px){.sidebar{position:fixed;bottom:0;top:auto;width:100%;height:60px;flex-direction:row;z-index:1000;padding:0}.sidebar:hover{width:100%}.sidebar-header,.sidebar-title,.sidebar-footer,.nav-text{display:none}.sidebar-content{flex-direction:row;width:100%;overflow-x:auto;overflow-y:hidden}.nav-menu{flex-direction:row;padding:0;width:100%;justify-content:space-around}.nav-link{flex-direction:column;justify-content:center;height:100%;padding:.5rem;border-left:none;border-bottom:3px solid transparent}.nav-link.active{border-bottom-color:#3498db}.nav-icon{margin-bottom:0}.main-content{margin-bottom:60px}}.dev-user-switcher{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background-color:#ffc10733;border-radius:8px;margin-bottom:.5rem}.dev-label{font-size:.75rem;font-weight:700;color:#ffc107;white-space:nowrap}.dev-select{flex:1;min-width:0;padding:.25rem .5rem;font-size:.75rem;border:1px solid rgba(255,255,255,.3);border-radius:4px;background-color:#ffffff1a;color:#fff;cursor:pointer;opacity:0;transition:opacity .3s}.sidebar:hover .dev-select{opacity:1}.dev-select option{background-color:#2c3e50;color:#fff}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2)}.login-container{width:100%;max-width:400px;padding:2rem}.login-card{background:#fff;padding:3rem 2rem;border-radius:12px;box-shadow:0 10px 40px #0003;text-align:center}.login-title{margin:0 0 1rem;font-size:2rem;color:#2c3e50}.login-description{margin:0 0 2rem;color:#7f8c8d;font-size:1rem}.login-button{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%;padding:1rem 1.5rem;background-color:#2f2f2f;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .2s}.login-button:hover{background-color:#1f1f1f}.microsoft-logo{width:20px;height:20px}.login-form{display:flex;flex-direction:column;gap:.75rem;width:100%}.login-email-input{width:100%;padding:.85rem 1rem;border:1px solid #ccc;border-radius:4px;font-size:1rem;box-sizing:border-box}.login-email-input:focus{outline:none;border-color:#2f2f2f}.login-button:disabled{opacity:.6;cursor:not-allowed}.dashboard{padding:1rem}.dashboard h2{margin-bottom:2rem;color:#2c3e50}.loading{text-align:center;padding:2rem;font-size:1.2rem;color:#7f8c8d}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:3rem}.stat-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;border-left:4px solid #3498db;transition:all .2s ease}.stat-card.clickable{cursor:pointer}.stat-card.clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.stat-card.active{background-color:#f8f9fa;border-left-color:#2980b9;box-shadow:0 0 0 2px #3498db inset}.stat-card h3{margin:0 0 1rem;font-size:1rem;color:#7f8c8d;font-weight:500}.stat-value{margin:0;font-size:2rem;font-weight:700;color:#2c3e50}.stat-label{margin:.5rem 0 0;font-size:.9rem;color:#95a5a6}.week-section-header{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.week-section-header h3{margin:0}.week-navigator{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#f8f9fa;border-radius:8px;flex-wrap:wrap}.week-nav-btn{padding:.5rem .75rem;background-color:#ecf0f1;border:none;border-radius:4px;font-size:.9rem;font-weight:600;color:#2c3e50;cursor:pointer;transition:all .2s}.week-nav-btn:hover{background-color:#bdc3c7}.week-nav-btn.today-btn{background-color:#3498db;color:#fff;padding:.5rem 1rem;margin-left:auto}.week-nav-btn.today-btn:hover{background-color:#2980b9}.week-display{font-size:1.1rem;font-weight:600;color:#2c3e50}.week-display .week-day{font-weight:400;color:#7f8c8d}.project-hours-grid{display:block;margin-bottom:2rem}.section-tabs{display:flex;gap:1rem;margin-bottom:1.5rem;border-bottom:1px solid #ddd;padding-bottom:.5rem}.tab-button{background:none;border:none;padding:.5rem 1rem;font-size:1.1rem;font-weight:600;color:#7f8c8d;cursor:pointer;position:relative;transition:color .2s}.tab-button:hover,.tab-button.active{color:#3498db}.tab-button.active:after{content:"";position:absolute;bottom:-.6rem;left:0;width:100%;height:3px;background-color:#3498db;border-radius:3px 3px 0 0}.empty-message{text-align:center;color:#95a5a6;padding:2rem}.project-list{display:flex;flex-direction:column;gap:1rem}.project-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f8f9fa;border-radius:6px;transition:background-color .2s}.project-item:hover{background:#e9ecef}.project-item.total{background:#e3f2fd;border-top:2px solid #3498db;margin-top:.5rem}.project-item.total .project-name{font-weight:700;color:#1976d2}.project-item.total .project-hours{color:#1976d2;font-size:1.2rem}.project-info{display:flex;flex-direction:column;gap:.25rem}.project-name{font-weight:600;color:#2c3e50}.project-description{font-size:.9rem;color:#7f8c8d}.project-hours{font-weight:700;color:#3498db;font-size:1.1rem}.entries-list{display:flex;flex-direction:column;gap:1rem}.entry-item{display:grid;grid-template-columns:150px 1fr auto;gap:1rem;padding:1rem;background:#f8f9fa;border-radius:6px;align-items:center}.entry-date{font-weight:600;color:#2c3e50}.entry-details{display:flex;flex-direction:column;gap:.25rem}.entry-project{font-weight:600;color:#3498db}.entry-description{font-size:.9rem;color:#7f8c8d}.entry-hours{font-weight:700;color:#27ae60}.budget-management-section{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem}.budget-management-section h3{margin:0 0 .5rem;color:#2c3e50;font-size:1.2rem}.budget-note{font-size:.85rem;color:#7f8c8d;margin:0 0 1.5rem}.budget-list{display:flex;flex-direction:column;gap:1.5rem}.budget-item{padding:1.5rem;background:#f8f9fa;border-radius:8px;border-left:4px solid #ff9800}.budget-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.budget-header>div{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.budget-project-name{font-weight:700;font-size:1.1rem;color:#2c3e50}.category-badge{padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600}.category-initial{background-color:#e3f2fd;color:#1976d2}.category-operation{background-color:#f3e5f5;color:#7b1fa2}.category-spot{background-color:#fff3e0;color:#f57c00}.category-advisory{background-color:#e8f5e9;color:#388e3c}.project-period{margin-bottom:1rem;color:#666;font-size:.875rem}.budget-hours{font-weight:600;color:#7f8c8d}.budget-details{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem;padding:1rem;background:#fff;border-radius:6px}.budget-row{display:flex;justify-content:space-between;align-items:center;font-size:.95rem}.budget-row span:first-child{color:#7f8c8d}.budget-amount{font-weight:700;color:#2c3e50}.cost-amount{font-weight:700;color:#e74c3c}.remaining-positive{font-weight:700;color:#27ae60}.remaining-negative{font-weight:700;color:#e74c3c}.budget-progress{display:flex;align-items:center;gap:1rem}.progress-bar{flex:1;height:12px;background:#ecf0f1;border-radius:6px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#27ae60,#2ecc71);transition:width .3s ease}.progress-fill.warning{background:linear-gradient(90deg,#f39c12,#f1c40f)}.progress-fill.over-budget{background:linear-gradient(90deg,#e74c3c,#c0392b)}.progress-label{font-size:.9rem;font-weight:600;color:#2c3e50;min-width:80px;text-align:right}.weekly-table-container{overflow-x:auto;margin-top:1rem}.weekly-table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px #0000001a}.weekly-table thead{background:#3498db;color:#fff}.weekly-table th{padding:.75rem .5rem;text-align:center;font-weight:600;font-size:.9rem}.weekly-table th.project-column{text-align:left;padding-left:1rem;min-width:180px}.weekly-table th.day-column{min-width:60px}.weekly-table th .day-date{font-size:.75rem;opacity:.9}.weekly-table th.total-column{background:#2980b9;min-width:70px}.weekly-table tbody tr{border-bottom:1px solid #ecf0f1;transition:background-color .2s}.weekly-table tbody tr:hover{background-color:#f8f9fa}.weekly-table td{padding:.75rem .5rem;text-align:center;font-size:.9rem}.weekly-table td.project-cell{text-align:left;padding-left:1rem;font-weight:500;color:#2c3e50}.weekly-table td.project-cell .subject-code{color:#7f8c8d;font-size:.8rem;margin-right:.25rem}.weekly-table td.hours-cell{color:#95a5a6}.weekly-table td.hours-cell.has-hours{color:#2c3e50;font-weight:500}.weekly-table td.total-cell{font-weight:700;color:#3498db;background:#f8f9fa}.weekly-table tfoot{background:#e3f2fd}.weekly-table tfoot tr.totals-row td{padding:.75rem .5rem;font-weight:700}.weekly-table tfoot td.total-label{text-align:left;padding-left:1rem;color:#1976d2}.weekly-table tfoot td.hours-cell.total{color:#1976d2}.weekly-table tfoot td.grand-total{background:#bbdefb;color:#1565c0;font-size:1rem}@media(max-width:768px){.stats-grid{grid-template-columns:1fr}.entry-item{grid-template-columns:1fr;gap:.5rem}.budget-header{flex-direction:column;align-items:flex-start;gap:.5rem}.budget-progress{flex-direction:column;align-items:stretch}.progress-label{text-align:left}.weekly-table th.project-column,.weekly-table td.project-cell{min-width:120px;font-size:.8rem}.weekly-table th.day-column{min-width:45px;font-size:.8rem}.weekly-table td{font-size:.8rem;padding:.5rem .25rem}.week-navigator{flex-direction:column;align-items:stretch;gap:.5rem}.week-navigator .week-display{text-align:center;order:-1}.week-nav-btn.today-btn{margin-left:0;text-align:center}}.time-entry-form{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;max-width:100%}.time-entry-form-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap}.template-controls{display:flex;align-items:flex-end;gap:.75rem;margin-bottom:1.5rem}.template-select-wrapper{display:flex;flex-direction:column;gap:.5rem;min-width:220px}.template-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:100%;padding:.9rem 3rem .9rem 1.1rem;border:1px solid #e1e5ea;border-radius:10px;background-color:#fff;box-shadow:0 1px 2px #0000000f;font-size:1rem;font-weight:600;color:#2c3e50;cursor:pointer;transition:border-color .2s,box-shadow .2s;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 20 20'%3E%3Cpath fill='%236b7280' d='M5.5 7.5a1 1 0 0 1 1.4 0L10 10.6l3.1-3.1a1 1 0 1 1 1.4 1.4l-3.8 3.8a1 1 0 0 1-1.4 0L5.5 8.9a1 1 0 0 1 0-1.4Z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1.1rem center;background-size:14px 14px}.template-select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db26}.template-select:disabled{opacity:.6;cursor:not-allowed}.template-save-button{padding:.75rem 1rem;background-color:#2980b9;color:#fff;border:none;border-radius:4px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background-color .2s;white-space:nowrap}.template-default-button{padding:.75rem 1rem;background:#fff;color:#2c3e50;border:1px solid #e1e5ea;border-radius:4px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background-color .2s,border-color .2s;white-space:nowrap}.template-default-button:hover:not(:disabled){background-color:#f8f9fa;border-color:#cfd4da}.template-default-button:disabled{opacity:.6;cursor:not-allowed}.template-save-button:hover:not(:disabled){background-color:#1f6fa3}.template-save-button:disabled{background-color:#95a5a6;cursor:not-allowed}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;font-family:inherit;transition:border-color .2s}.time-entry-rows{margin-top:.5rem}.rows-header{display:grid;grid-template-columns:2fr 1fr 3fr 40px;gap:1rem;padding:.5rem .25rem;color:#2c3e50;font-weight:600;font-size:.9rem}.rows-header.with-billable-column{grid-template-columns:2fr 1fr 130px 3fr 40px}.entry-row{display:grid;grid-template-columns:2fr 1fr 3fr 40px;gap:1rem;align-items:center;padding:.5rem .25rem}.entry-row.with-billable-column{grid-template-columns:2fr 1fr 130px 3fr 40px}.billable-cell{display:flex;align-items:center}.entry-cell input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;font-family:inherit;transition:border-color .2s}.entry-cell input:focus{outline:none;border-color:#3498db}.row-actions{display:flex;justify-content:center}.row-delete-button{width:36px;height:36px;border-radius:6px;border:1px solid #ddd;background:#fff;cursor:pointer;font-size:1.2rem;line-height:1;transition:background-color .2s,border-color .2s}.row-delete-button:hover:not(:disabled){background-color:#f8f9fa;border-color:#cfd4da}.row-delete-button:disabled{opacity:.4;cursor:not-allowed}.add-row-container{display:flex;justify-content:center;width:100%;max-width:360px;margin:0 auto;padding:1rem 0 .75rem}.add-row-button{width:44px;height:44px;border-radius:50%;border:none;background-color:#7f8c8d;color:#fff;cursor:pointer;font-size:1.5rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.add-row-button:hover{background-color:#6c7a7a}.submit-button{width:100%;max-width:360px;margin:2rem auto 0;display:block;padding:1rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .2s}.time-entry-total-container{display:flex;justify-content:center;width:100%;max-width:360px;margin:.75rem auto 0}.time-entry-total{flex:0 0 auto;display:inline-flex;align-items:baseline;gap:.35rem;padding:.6rem .9rem;border-radius:9999px;background:#f5f9ff;border:1px solid #cfe3ff;color:#1f2d3d;box-shadow:0 1px 2px #0000000f;white-space:nowrap}.time-entry-total-label{font-size:.85rem;font-weight:700;color:#35516a}.time-entry-total-value{font-size:1.1rem;font-weight:800;color:#1f6fa3;letter-spacing:.01em}.time-entry-total-unit{font-size:.85rem;font-weight:700;color:#35516a}.template-modal-overlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:1000}.template-modal{width:min(720px,calc(100vw - 2rem));background:#fff;border-radius:8px;box-shadow:0 8px 24px #0003;padding:1.5rem}.template-modal-body{display:flex;flex-direction:column;gap:.75rem}.template-flags{margin-top:.5rem;padding-top:.75rem;border-top:1px solid #eee;display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;align-items:center}.template-flags-title{font-weight:600;color:#2c3e50;margin-right:.5rem}.template-flag{display:flex;align-items:center;gap:.5rem;color:#2c3e50}.template-option{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr);align-items:center;gap:.75rem}.template-option label{display:flex;align-items:center;gap:.5rem;min-width:220px;min-height:44px}.template-option input[type=text]{flex:1;padding:.75rem;border:1px solid #ddd;border-radius:4px}.template-name-input.is-hidden{visibility:hidden;pointer-events:none}@media(max-width:768px){.submit-button{max-width:none}.template-option{grid-template-columns:1fr;align-items:stretch}.template-name-input.is-hidden{display:none}}.template-modal-actions{display:flex;gap:.75rem;justify-content:center;margin-top:1.5rem}.template-modal-actions button{min-width:120px;padding:.75rem 1rem;border-radius:4px;cursor:pointer;font-weight:600}.modal-primary{border:none;background-color:#2980b9;color:#fff}.modal-secondary{border:1px solid #2980b9;background:#fff;color:#2980b9}.modal-danger{border:1px solid #e74c3c;background:#fff;color:#e74c3c}.modal-danger:disabled{opacity:.4;cursor:not-allowed}@media(max-width:768px){.rows-header{display:none}.entry-row{grid-template-columns:1fr;gap:.5rem;border:1px solid #eee;border-radius:8px;padding:.75rem}.row-actions{justify-content:flex-end}.template-controls{width:100%;justify-content:flex-start;margin-bottom:.5rem}.template-select-wrapper{min-width:100%}}.project-item.restricted{opacity:.5;cursor:not-allowed;background-color:#f5f5f5}.project-item.restricted:hover{background-color:#f5f5f5}.restricted-badge{font-size:.75rem;color:#e74c3c;background-color:#fdeaea;padding:.125rem .5rem;border-radius:4px;margin-left:auto}.sub-project-container{margin-top:4px}.time-entry-list{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.time-entry-list h3{margin:0 0 1.5rem;color:#2c3e50}.entries-table{display:flex;flex-direction:column;gap:.5rem}.table-header{display:grid;grid-template-columns:150px minmax(0,2fr) 100px minmax(0,3fr) 140px;gap:1rem;padding:1rem;background-color:#ecf0f1;border-radius:4px;font-weight:600;color:#2c3e50}.table-row{display:grid;grid-template-columns:150px minmax(0,2fr) 100px minmax(0,3fr) 140px;gap:1rem;padding:1rem;background-color:#f8f9fa;border-radius:4px;align-items:start;transition:background-color .2s}.table-header.with-billable-column,.table-row.with-billable-column{grid-template-columns:150px minmax(0,2fr) 100px 130px minmax(0,3fr) 140px}.table-header>div,.table-row>div{min-width:0}.project-cell{white-space:normal;overflow-wrap:anywhere;word-break:break-word}.table-header .project-cell{white-space:nowrap}.billable-cell{display:flex;align-items:center;min-height:2.5rem}.billable-toggle{display:inline-flex;align-items:center;cursor:pointer;width:fit-content}.billable-toggle input[type=checkbox]{appearance:none;flex-shrink:0;position:relative;width:36px;height:20px;margin:0;background-color:#ccd3d9;border:none;border-radius:999px;cursor:pointer;transition:background-color .2s ease}.billable-toggle input[type=checkbox]:before{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background-color:#fff;border-radius:50%;box-shadow:0 1px 2px #00000040;transition:transform .2s ease}.billable-toggle input[type=checkbox]:checked{background-color:#3498db}.billable-toggle input[type=checkbox]:checked:before{transform:translate(16px)}.billable-toggle input[type=checkbox]:focus-visible{outline:2px solid #3498db;outline-offset:2px}.non-billable-badge{display:inline-block;padding:.05rem .4rem;font-size:.75rem;color:#e74c3c;background-color:#fdeaea;border-radius:4px;white-space:nowrap}.billable-badge{display:inline-block;padding:.05rem .4rem;font-size:.75rem;color:#3498db;background-color:#eaf4fc;border-radius:4px;white-space:nowrap}.description-cell{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.action-buttons{display:flex;gap:.5rem}.edit-button,.delete-button,.save-button,.cancel-button{padding:.5rem 1rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background-color .2s;font-weight:500}.edit-input{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.edit-input:focus{outline:none;border-color:#3498db}@media(max-width:1024px){.table-header,.table-row{grid-template-columns:1fr;gap:.5rem}.table-header{display:none}.table-row>div:before{content:attr(data-label);font-weight:600;margin-right:.5rem}.action-buttons{margin-top:.5rem}}.tadasi-sync-row{display:flex;gap:2rem;margin-bottom:2rem}.tadasi-sync-row .tadasi-sync-container{flex:1 1 0;min-width:0;margin-bottom:0}@media(max-width:768px){.tadasi-sync-row{flex-direction:column}}.tadasi-sync-container{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem}.tadasi-sync-header{margin-bottom:1.5rem;border-bottom:2px solid #3498db;padding-bottom:1rem}.tadasi-sync-header h3{margin:0 0 .5rem;color:#2c3e50;display:flex;align-items:center;gap:.5rem}.tadasi-sync-description{margin:0;color:#7f8c8d;font-size:.9rem}.tadasi-warning-message{display:flex;align-items:flex-start;gap:.75rem;background:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:1rem;margin-bottom:1.5rem}.tadasi-warning-message .warning-icon{font-size:1.5rem;flex-shrink:0}.tadasi-warning-message strong{display:block;color:#856404;margin-bottom:.25rem}.tadasi-warning-message p{margin:0;color:#856404;font-size:.9rem}.tadasi-warning-message a{color:#533f03;font-weight:600}.tadasi-info-message{display:flex;align-items:flex-start;gap:.75rem;background:#e7f3ff;border:1px solid #b6d4fe;border-radius:6px;padding:1rem;margin-bottom:1.5rem}.tadasi-info-message .info-icon{font-size:1.5rem;flex-shrink:0}.tadasi-info-message strong{display:block;color:#084298;margin-bottom:.25rem}.tadasi-info-message p{margin:0;color:#084298;font-size:.9rem}.tadasi-info-message code{background:#cfe2ff;padding:.1rem .3rem;border-radius:3px;font-family:monospace;font-size:.85em}.tadasi-sync-controls{display:flex;gap:1rem;align-items:flex-end;margin-bottom:1.5rem;flex-wrap:wrap}.month-selector{display:flex;flex-direction:column;gap:.5rem}.month-selector label{font-weight:600;color:#2c3e50;font-size:.9rem}.month-selector select{padding:.75rem 2.5rem .75rem 1rem;border:2px solid #e0e0e0;border-radius:8px;font-size:1rem;font-weight:500;color:#2c3e50;background:linear-gradient(to bottom,#fff,#f8f9fa);cursor:pointer;transition:all .2s ease;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%233498db' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;min-width:160px}.month-selector select:hover{border-color:#3498db;box-shadow:0 2px 8px #3498db26}.month-selector select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db33}.month-selector select:disabled{background:#ecf0f1;color:#95a5a6;cursor:not-allowed;border-color:#ddd}.month-selector select option{padding:.5rem;font-weight:500}.tadasi-sync-button{padding:.75rem 2rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.5rem;min-width:180px;justify-content:center}.tadasi-sync-button:hover:not(:disabled){background-color:#2980b9;transform:translateY(-1px);box-shadow:0 4px 8px #3498db4d}.tadasi-sync-button:active:not(:disabled){transform:translateY(0)}.tadasi-sync-button:disabled{background-color:#95a5a6;cursor:not-allowed;transform:none}.tadasi-sync-button .icon{font-size:1.2rem}.tadasi-sync-button .spinner{width:16px;height:16px;border:3px solid #ffffff;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.sync-message{padding:1rem;border-radius:4px;margin-bottom:1.5rem;font-weight:500;animation:slideIn .3s ease-out}.sync-message.success{background-color:#d4edda;color:#155724;border-left:4px solid #28a745}.sync-message.error{background-color:#f8d7da;color:#721c24;border-left:4px solid #e74c3c}.sync-status-message{padding:.75rem 1rem;border-radius:4px;margin-bottom:1rem;font-weight:500;background-color:#e7f3ff;color:#084298;border-left:4px solid #3498db;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.tadasi-sync-info{background:#f8f9fa;padding:1.5rem;border-radius:4px;border-left:4px solid #3498db}.tadasi-sync-info h4{margin:0 0 .75rem;color:#2c3e50;font-size:1rem}.tadasi-sync-info h4:not(:first-child){margin-top:1.5rem}.tadasi-sync-info ul{margin:0;padding-left:1.5rem;color:#555}.tadasi-sync-info li{margin-bottom:.5rem;line-height:1.6}.tadasi-sync-info code{background:#e9ecef;padding:.2rem .4rem;border-radius:3px;font-family:Courier New,monospace;font-size:.9rem;color:#e74c3c}@media(max-width:768px){.tadasi-sync-container{padding:1rem}.tadasi-sync-controls{flex-direction:column;align-items:stretch}.tadasi-sync-button,.month-selector input[type=month]{width:100%}}.time-entry-page{padding:1rem}.time-entry-page h2{margin-bottom:2rem;color:#2c3e50}.success-message{background-color:#d4edda;color:#155724;padding:1rem;border-radius:4px;margin-bottom:1.5rem;border-left:4px solid #28a745;animation:slideIn .3s ease-out}.proxy-member-selector{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem;padding:1rem 1.25rem;background-color:#f0f4ff;border:1px solid #c0d0f0;border-radius:8px}.proxy-member-selector label{font-weight:600;color:#2c3e50;font-size:.95rem}.proxy-search-container{position:relative;max-width:360px}.proxy-search-input{width:100%;padding:.75rem 2.5rem .75rem .75rem;border:1px solid #aac0e8;border-radius:4px;font-size:1rem;background-color:#fff;box-sizing:border-box}.proxy-search-input:focus{outline:none;border-color:#3498db}.proxy-clear-button{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;font-size:1.2rem;color:#7f8c8d;cursor:pointer;padding:.25rem .5rem;line-height:1}.proxy-clear-button:hover{color:#e74c3c}.proxy-search-dropdown{position:absolute;top:100%;left:0;right:0;max-height:260px;overflow-y:auto;background:#fff;border:1px solid #ddd;border-top:none;border-radius:0 0 4px 4px;box-shadow:0 4px 6px #0000001a;z-index:100}.proxy-search-item{padding:.75rem;cursor:pointer;display:flex;flex-direction:column;gap:.2rem;border-bottom:1px solid #f0f0f0}.proxy-search-item:last-child{border-bottom:none}.proxy-search-item:hover{background-color:#f8f9fa}.proxy-search-item.selected{background-color:#e8f4fd}.proxy-item-name{color:#2c3e50;font-size:.95rem}.proxy-item-email{color:#7f8c8d;font-size:.82rem}.proxy-item-label{color:#3498db;font-size:.82rem;font-weight:600}.proxy-no-results{padding:.75rem;color:#7f8c8d;text-align:center;font-style:italic}.form-section h3,.list-section h3{margin:0 0 1rem;color:#2c3e50;font-size:1.2rem}@media(max-width:768px){.time-entry-page{padding:.5rem}}.project-form{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;max-width:600px}.form-group input[type=text],.form-group input[type=number],.form-group input[type=date],.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;font-family:inherit;transition:border-color .2s}.form-hint{display:block;margin-top:.5rem;color:#666;font-size:.875rem;font-weight:400}.color-input-group input[type=color]{width:60px;height:40px;border:1px solid #ddd;border-radius:4px;cursor:pointer}.error-message{background-color:#fee;color:#c33;padding:.75rem;border-radius:4px;margin-bottom:1rem;border-left:4px solid #c33}.submit-button{width:100%;padding:1rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .2s}.project-list{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;width:100%;max-width:100%;overflow-x:auto}.project-list h3{margin:0 0 1.5rem;color:#2c3e50}.projects-table{display:flex;flex-direction:column;gap:.5rem;width:100%;min-width:900px}.table-header{display:grid;gap:1rem;padding:1rem;background-color:#ecf0f1;border-radius:4px;font-weight:600;color:#2c3e50;align-items:center;-webkit-user-select:none;user-select:none}.header-cell{position:relative;display:flex;align-items:center;justify-content:space-between}.resize-handle{position:absolute;right:-8px;top:0;bottom:0;width:16px;cursor:col-resize;z-index:1;display:flex;align-items:center;justify-content:center}.resize-handle:before{content:"";width:2px;height:60%;background-color:#95a5a6;opacity:0;transition:opacity .2s}.resize-handle:hover:before{opacity:.5}.resize-handle:active:before{opacity:1;background-color:#3498db}.table-row{display:grid;gap:1rem;padding:1rem;background-color:#f8f9fa;border-radius:4px;align-items:center;transition:background-color .2s;min-height:60px}.table-row:hover{background-color:#e9ecef}.code-cell{font-family:monospace;font-weight:500;color:#495057}.name-cell{overflow:hidden}.project-name{font-weight:600;color:#2c3e50;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.budget-cell{font-weight:600;color:#2c3e50;text-align:right;white-space:nowrap}.period-note{font-size:.75rem;color:#7f8c8d;margin-left:.25rem}.period-cell{font-size:.85rem;color:#495057;white-space:nowrap}.action-buttons{display:flex;gap:.5rem;justify-content:flex-end}.edit-button,.delete-button,.save-button,.cancel-button{padding:.4rem .75rem;border:none;border-radius:4px;font-size:.85rem;cursor:pointer;transition:background-color .2s;font-weight:500;white-space:nowrap}.edit-button{background-color:#3498db;color:#fff}.edit-button:hover{background-color:#2980b9}.save-button{background-color:#27ae60;color:#fff}.save-button:hover{background-color:#229954}@media(max-width:1400px){.table-header,.table-row{gap:.75rem}.projects-table{min-width:800px}}@media(max-width:1024px){.table-header,.table-row{gap:.5rem}.table-header{display:none}.table-row{grid-template-columns:1fr!important}.table-row{display:flex;flex-direction:column}.code-cell:before{content:"Subject Code: ";font-weight:600;color:#7f8c8d}.budget-cell:before{content:"受注金額: ";font-weight:600;color:#7f8c8d}.period-cell:before{content:"期間: ";font-weight:600;color:#7f8c8d}.action-buttons{margin-top:.5rem}}.excel-import{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;max-width:900px;width:90%;max-height:90vh;overflow-y:auto;z-index:1000}.excel-import .import-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e0e0e0;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:8px 8px 0 0}.excel-import .import-header h3{margin:0;font-size:1.25rem}.excel-import .close-button{background:#fff3;border:none;font-size:1.5rem;color:#fff;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.excel-import .close-button:hover{background-color:#ffffff4d}.excel-import .import-body{padding:1.5rem}.excel-import .import-instructions{margin-bottom:1.5rem}.excel-import .import-instructions h4{margin:0 0 .75rem;font-size:1rem;color:#333}.excel-import .import-instructions ol{margin:0;padding-left:1.5rem;color:#666;font-size:.9rem}.excel-import .info-box{margin-top:1rem;padding:1rem;background-color:#e7f3ff;border:1px solid #b3d4fc;border-radius:4px;font-size:.875rem}.excel-import .info-box ul{margin:.5rem 0 0;padding-left:1.5rem;color:#0c5460}.excel-import .file-input-section{margin:1.5rem 0;padding:1.5rem;border:2px dashed #ccc;border-radius:8px;text-align:center;background-color:#fafafa}.excel-import .file-label{display:inline-block;padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:4px;cursor:pointer;font-size:.9rem;transition:opacity .2s}.excel-import .file-label:hover{opacity:.9}.excel-import .file-input{display:none}.excel-import .file-name{margin-top:1rem;color:#333;font-weight:500}.excel-import .parsing-message{margin-top:.5rem;color:#667eea;font-size:.875rem}.excel-import .error-message{padding:1rem;background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;color:#721c24;margin-bottom:1rem;white-space:pre-wrap}.excel-import .warning-box{padding:1rem;background-color:#fff3cd;border:1px solid #ffeeba;border-radius:4px;color:#856404;margin-bottom:1rem;font-size:.875rem}.excel-import .warning-box ul{margin:.5rem 0 0;padding-left:1.5rem}.excel-import .preview-section{margin-top:1.5rem}.excel-import .preview-section h4{margin:0 0 .5rem;color:#333}.excel-import .source-info{padding:.5rem .75rem;background-color:#e8f4fd;border-radius:4px;margin-bottom:1rem;font-size:.875rem;color:#1976d2}.excel-import .preview-table-container{max-height:300px;overflow-y:auto;border:1px solid #e0e0e0;border-radius:4px}.excel-import .preview-table{width:100%;border-collapse:collapse;font-size:.875rem}.excel-import .preview-table th,.excel-import .preview-table td{padding:.75rem;text-align:left;border-bottom:1px solid #e0e0e0}.excel-import .preview-table th{background-color:#f8f9fa;font-weight:600;position:sticky;top:0}.excel-import .preview-table tbody tr:hover{background-color:#f8f9fa}.excel-import .preview-table .amount{text-align:right;font-family:Monaco,Consolas,monospace}.excel-import .preview-table tfoot{background-color:#f0f0f0}.excel-import .preview-table tfoot td{border-bottom:none}.excel-import .import-result{margin-top:1rem;padding:1rem;background-color:#f8f9fa;border-radius:4px}.excel-import .import-result h4{margin:0 0 1rem;color:#333}.excel-import .result-summary{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem;background-color:#fff;border-radius:4px;border:1px solid #e0e0e0}.excel-import .result-summary .success{color:#28a745;font-weight:600}.excel-import .result-summary .updated{color:#17a2b8}.excel-import .result-summary .error{color:#dc3545}.excel-import .result-summary .deleted{color:#ffc107}.excel-import .updated-details{margin-top:1rem;padding:1rem;background-color:#d1ecf1;border:1px solid #bee5eb;border-radius:4px}.excel-import .updated-details h5{margin:0 0 .5rem;color:#0c5460;font-size:.9rem}.excel-import .updated-details ul{margin:0;padding-left:1.5rem;font-size:.875rem;color:#0c5460}.excel-import .deleted-details{margin-top:1rem;padding:1rem;background-color:#fff3cd;border:1px solid #ffeeba;border-radius:4px}.excel-import .deleted-details h5{margin:0 0 .5rem;color:#856404;font-size:.9rem}.excel-import .deleted-details ul{margin:0;padding-left:1.5rem;font-size:.875rem;color:#856404}.excel-import .error-details{margin-top:1rem;padding:1rem;background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:4px}.excel-import .error-details h5{margin:0 0 .5rem;color:#721c24;font-size:.9rem}.excel-import .error-details ul{margin:0;padding-left:1.5rem;font-size:.875rem;color:#721c24}.excel-import .import-actions{display:flex;gap:1rem;padding:1.5rem;border-top:1px solid #e0e0e0;justify-content:flex-end}.excel-import .import-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:opacity .2s}.excel-import .import-button:hover:not(:disabled){opacity:.9}.excel-import .import-button:disabled{background:#6c757d;cursor:not-allowed}.excel-import .cancel-button{background-color:#6c757d;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.excel-import .cancel-button:hover{background-color:#5a6268}.excel-import .diff-summary{margin-top:1rem}.excel-import .diff-counts{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem;background-color:#f8f9fa;border-radius:4px;margin-bottom:1rem}.excel-import .diff-counts span{padding:.5rem 1rem;border-radius:4px;font-weight:500}.excel-import .new-count{background-color:#d4edda;color:#155724}.excel-import .update-count{background-color:#d1ecf1;color:#0c5460}.excel-import .delete-count{background-color:#f8d7da;color:#721c24}.excel-import .unchanged-count{background-color:#e2e3e5;color:#383d41}.excel-import .new-details{margin-top:1rem;padding:1rem;background-color:#d4edda;border:1px solid #c3e6cb;border-radius:4px}.excel-import .new-details h5{margin:0 0 .5rem;color:#155724;font-size:.9rem}.excel-import .new-details ul{margin:0;padding-left:1.5rem;font-size:.875rem;color:#155724}.excel-import .changes-list{margin-top:.25rem;padding-left:1rem;font-size:.8rem;color:#0c5460;list-style-type:disc}.excel-import .changes-list li{margin:.125rem 0}@media(max-width:768px){.excel-import{width:95%;max-height:95vh}.excel-import .preview-table{font-size:.75rem}.excel-import .preview-table th,.excel-import .preview-table td{padding:.5rem}.excel-import .result-summary{flex-direction:column;gap:.5rem}}:root{--import-bg: #f7f8ff;--import-accent: #667eea;--import-label: #5161af;--import-text: #1f2a44;--import-muted: #6b7280;--import-error: #c0392b;--success-project-bg: #dcfce7;--success-project-text: #166534;--success-project-border: #16a34a;--success-import-bg: #ede9fe;--success-import-text: #312e81;--success-import-border: #5b21b6;--focus-ring: #2f4fc4}.projects-page{padding:1rem}.header-buttons{display:flex;gap:1rem}.new-project-button{background-color:#28a745;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s;white-space:nowrap}.new-project-button:hover{background-color:#218838}.excel-import-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:opacity .2s;white-space:nowrap}.excel-import-button:hover{opacity:.9}.modal-overlay{position:fixed;inset:0;background-color:#00000080;z-index:999}.project-form-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;max-width:600px;width:90%;max-height:90vh;overflow-y:auto;z-index:1000}.project-form-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e0e0e0;background:linear-gradient(135deg,#28a745,#20c997);color:#fff;border-radius:8px 8px 0 0}.project-form-modal .modal-header h3{margin:0;font-size:1.25rem}.project-form-modal .close-button{background:#fff3;border:none;font-size:1.5rem;color:#fff;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.project-form-modal .close-button:hover{background-color:#ffffff4d}.success-message{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-radius:4px;margin-bottom:1.5rem;border-left:4px solid #28a745;animation:slideIn .3s ease-out}.success-message--project{background:var(--success-project-bg);color:var(--success-project-text);border-left-color:var(--success-project-border)}.success-message--import{background:var(--success-import-bg);color:var(--success-import-text);border-left-color:var(--success-import-border)}.success-message-close{background:none;border:1px solid currentColor;color:inherit;padding:.25rem .75rem;border-radius:4px;cursor:pointer;font-size:.85rem;margin-left:1rem;white-space:nowrap;transition:opacity .2s}.success-message-close:hover{opacity:.7}.success-message-close:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.import-status{padding:.875rem 1rem;border-radius:6px;margin-bottom:1.5rem}.import-status--info{background:var(--import-bg);border-left:4px solid var(--import-accent)}.import-status--empty{background:var(--import-bg);border-left:4px solid var(--import-accent);display:flex;align-items:center;justify-content:space-between;gap:1rem}.import-status--flash{animation:importFlash 2.5s ease-out}@keyframes importFlash{0%{box-shadow:0 0 #667eea80}30%{box-shadow:0 0 0 6px #667eea40}to{box-shadow:0 0 #667eea00}}.import-empty-text{margin:0;color:var(--import-muted);font-size:.9rem}.import-empty-action{background:linear-gradient(135deg,#4b5fcf,#764ba2);color:#fff;border:none;padding:.5rem 1.25rem;border-radius:4px;cursor:pointer;font-size:.9rem;white-space:nowrap;transition:opacity .2s}.import-empty-action:hover{opacity:.9}.import-empty-action:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.import-status-main{display:flex;align-items:baseline;gap:.625rem;flex-wrap:wrap}.import-label{font-size:.75rem;font-weight:700;color:var(--import-label);text-transform:none}.import-user{font-size:.95rem;font-weight:600;color:var(--import-text)}.import-time{font-size:.9rem;color:var(--import-text);font-variant-numeric:tabular-nums}.import-time-relative{font-size:.85rem;color:var(--import-muted)}.import-detail-toggle{background:none;border:none;color:var(--import-label);cursor:pointer;font-size:.85rem;padding:.375rem .75rem;min-height:44px;border-radius:4px;transition:background-color .15s,color .15s;margin-top:.25rem}.import-detail-toggle:hover{background:#eef0ff;color:#3b4c9b}.import-detail-toggle:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.import-detail-panel{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #e5e7f0}.import-meta{display:grid;grid-template-columns:4.5rem 1fr;gap:.25rem;margin:0 0 .375rem;font-size:.85rem}.import-meta-label{color:var(--import-muted);font-weight:500}.import-meta-value{color:var(--import-text);overflow-wrap:anywhere}.summary-metrics{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));margin:.75rem 0 0;padding:0}.metric{text-align:center;padding:.5rem .25rem;background:#fff9;border-radius:4px}.metric dt{font-size:.7rem;color:var(--import-muted);margin-bottom:.125rem}.metric dd{font-size:1.1rem;font-weight:600;color:var(--import-text);margin:0;font-variant-numeric:tabular-nums}.metric--error dd{color:var(--import-error);font-weight:700}.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}.import-status-live{position:absolute}.new-project-button:focus-visible,.excel-import-button:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}@media(prefers-reduced-motion:reduce){.import-status--flash,.success-message{animation:none}.import-detail-toggle,.success-message-close,.new-project-button,.excel-import-button,.import-empty-action{transition:none}}@media(max-width:768px){.projects-page{padding:.5rem}.import-status--empty{flex-direction:column;align-items:flex-start}.import-status-main{flex-direction:column;gap:.25rem}.import-detail-toggle{width:100%;text-align:center}.summary-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}.project-edit-page{padding:1rem}.back-button{background-color:#95a5a6;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.back-button:hover{background-color:#7f8c8d}.project-edit-form{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;max-width:600px}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;color:#2c3e50}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#3498db}.form-group-checkbox label{display:flex;align-items:center;gap:.5rem}.form-group-checkbox input[type=checkbox]{width:auto}.color-input-group{display:flex;align-items:center;gap:1rem}.color-input-group input[type=color]{width:60px;height:40px;padding:0;cursor:pointer}.color-value{font-family:monospace;color:#7f8c8d}.form-hint{display:block;margin-top:.5rem;font-size:.85rem;color:#7f8c8d}.error-message{background-color:#fee;color:#c33;padding:1rem;border-radius:4px;margin-bottom:1.5rem;border-left:4px solid #c33}.submit-button,.delete-button,.cancel-button{padding:.75rem 1.5rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s;font-weight:500}.submit-button{background-color:#27ae60;color:#fff}.submit-button:hover:not(:disabled){background-color:#229954}.delete-button{background-color:#e74c3c;color:#fff}.delete-button:hover{background-color:#c0392b}.cancel-button{background-color:#95a5a6;color:#fff}.cancel-button:hover{background-color:#7f8c8d}@media(max-width:768px){.project-edit-page{padding:.5rem}.project-edit-form{padding:1rem}.form-actions{flex-direction:column}.submit-button,.delete-button,.cancel-button{width:100%}}.sub-projects-section{border:1px solid #dce1e7;border-radius:6px;padding:1rem;background:#f8f9fa}.sub-projects-section .form-hint{margin:0 0 .75rem;font-size:.85rem;color:#6c757d}.sub-project-row{display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem}.sub-project-row.deleted{opacity:.6}.sub-project-name-input{flex:1;padding:.4rem .6rem;border:1px solid #ced4da;border-radius:4px;font-size:.9rem}.sub-project-add-row{display:flex;gap:.5rem;margin-top:.75rem}.sub-project-add-button{padding:.4rem .8rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;white-space:nowrap}.sub-project-add-button:hover{background:#2980b9}.sub-project-remove-button{padding:.3rem .6rem;background:#e74c3c;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8rem;white-space:nowrap}.sub-project-remove-button:hover{background:#c0392b}.sub-project-restore-button{padding:.3rem .6rem;background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8rem;white-space:nowrap}.sub-project-restore-button:hover{background:#219a52}.sub-project-deleted-name{flex:1;text-decoration:line-through;color:#6c757d;font-size:.9rem}.sub-project-error{color:#e74c3c;font-size:.85rem;margin-top:.25rem}.sub-projects-deleted{margin-top:.75rem;font-size:.85rem;color:#6c757d}.sub-projects-deleted summary{cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:.5rem}.report-filters{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;display:flex;flex-direction:column;gap:1.5rem}.filter-group{display:flex;flex-direction:column;gap:.5rem}.filter-group label{font-weight:600;color:#2c3e50;font-size:.95rem}.date-inputs{display:flex;align-items:center;gap:1rem}.date-inputs input{flex:1;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.date-inputs input:focus{outline:none;border-color:#3498db}.date-inputs span{color:#7f8c8d}.preset-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.preset-button{padding:.6rem 1.2rem;background-color:#ecf0f1;color:#2c3e50;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background-color .2s;font-weight:500}.preset-button:hover{background-color:#bdc3c7}.preset-button.clear-all{background-color:#e74c3c;color:#fff}.preset-button.clear-all:hover{background-color:#c0392b}.filter-group select{padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;background-color:#fff;cursor:pointer}.filter-group select:focus{outline:none;border-color:#3498db}@media(max-width:768px){.date-inputs{flex-direction:column;align-items:stretch}.date-inputs span{text-align:center}}.search-container{position:relative}.search-input{width:100%;padding:.75rem 2.5rem .75rem .75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;box-sizing:border-box}.search-input:focus{outline:none;border-color:#3498db}.clear-button{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;font-size:1.2rem;color:#7f8c8d;cursor:pointer;padding:.25rem .5rem;line-height:1}.clear-button:hover{color:#e74c3c}.search-dropdown{position:absolute;top:100%;left:0;right:0;max-height:250px;overflow-y:auto;background:#fff;border:1px solid #ddd;border-top:none;border-radius:0 0 4px 4px;box-shadow:0 4px 6px #0000001a;z-index:100}.search-item{padding:.75rem;cursor:pointer;display:flex;flex-direction:column;gap:.25rem;border-bottom:1px solid #f0f0f0}.search-item:last-child{border-bottom:none}.search-item:hover{background-color:#f8f9fa}.search-item.selected{background-color:#e8f4fd}.item-code{color:#3498db;font-weight:600;font-size:.85rem}.item-name{color:#2c3e50}.item-email{color:#7f8c8d;font-size:.85rem}.no-results{padding:.75rem;color:#7f8c8d;text-align:center;font-style:italic}.preset-button.active{background-color:#3498db;color:#fff}.preset-button.active:hover{background-color:#2980b9}.preset-button:disabled{opacity:.6;cursor:not-allowed}.date-error{color:#e74c3c;font-size:.85rem;margin-top:.25rem}.search-action{margin-top:.5rem}.search-button{width:100%;padding:.85rem 1.5rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.search-button:hover:not(:disabled){background-color:#2980b9}.search-button:disabled{opacity:.6;cursor:not-allowed}.search-spinner{width:16px;height:16px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:search-spin .8s linear infinite}@keyframes search-spin{to{transform:rotate(360deg)}}.report-summary{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.summary-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.summary-header h3{margin:0;color:#2c3e50}.export-buttons{display:flex;gap:.5rem}.export-actions{display:flex;align-items:center;gap:1rem}.export-option{display:inline-flex;align-items:center;gap:.5rem;font-size:.95rem;color:#2c3e50;-webkit-user-select:none;user-select:none}.export-option input{width:16px;height:16px}.export-button{padding:.75rem 1.5rem;background-color:#27ae60;color:#fff;border:none;border-radius:4px;font-size:.95rem;cursor:pointer;transition:background-color .2s;font-weight:600}.export-button:hover{background-color:#229954}.export-button.secondary{background-color:#3498db}.export-button.secondary:hover{background-color:#2980b9}.empty-message{text-align:center;color:#95a5a6;padding:3rem}.summary-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{display:flex;flex-direction:column;gap:.5rem;padding:1.5rem;background:#f8f9fa;border-radius:6px;border-left:4px solid #3498db}.stat-label{font-size:.9rem;color:#7f8c8d;font-weight:500}.stat-value{font-size:1.8rem;font-weight:700;color:#2c3e50}.project-breakdown,.entries-detail{margin-bottom:2rem}.project-breakdown h4,.entries-detail h4{margin:0 0 1rem;color:#2c3e50;font-size:1.1rem}.breakdown-list{display:flex;flex-direction:column;gap:1rem}.project-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:#2c3e50}.entry-count{flex-shrink:0;white-space:nowrap;font-size:.9rem;color:#7f8c8d}.breakdown-hours{display:flex;align-items:center;gap:1rem}.hours-bar{height:8px;background:linear-gradient(90deg,#3498db,#2980b9);border-radius:4px;transition:width .3s ease}.hours-text{font-weight:700;color:#3498db;white-space:nowrap;flex-shrink:0;text-align:right;font-variant-numeric:tabular-nums}.detail-table{display:flex;flex-direction:column;gap:.5rem}.detail-header{display:grid;grid-template-columns:150px 200px 100px 1fr;gap:1rem;padding:1rem;background:#ecf0f1;border-radius:4px;font-weight:600;color:#2c3e50}.detail-row{display:grid;grid-template-columns:150px 200px 100px 1fr;gap:1rem;padding:1rem;background:#f8f9fa;border-radius:4px}@media(max-width:1024px){.summary-header{flex-direction:column;align-items:flex-start;gap:1rem}.export-buttons{width:100%;flex-direction:column}.export-button{width:100%}.detail-header,.detail-row{grid-template-columns:1fr;gap:.5rem}.detail-header{display:none}}.breakdown-hint{font-size:.85rem;color:#7f8c8d;margin-bottom:1rem}.breakdown-item{display:flex;flex-direction:column;gap:0;padding:0;background:#f8f9fa;border-radius:6px;overflow:hidden}.breakdown-item.expanded{box-shadow:0 2px 8px #0000001a}.breakdown-header{display:flex;flex-direction:column;gap:.5rem;padding:1rem;cursor:pointer;transition:background-color .2s}.breakdown-header:hover{background-color:#ecf0f1}.breakdown-info{display:flex;align-items:center;gap:.5rem;min-width:0}.expand-icon{font-size:.75rem;color:#7f8c8d;width:1rem}.member-breakdown{background:#fff;border-top:1px solid #ecf0f1;padding:1rem}.member-breakdown-header{display:grid;grid-template-columns:minmax(0,1fr) repeat(3,9ch);gap:.5rem;padding:.5rem 0;font-weight:600;font-size:.85rem;color:#7f8c8d;border-bottom:1px solid #ecf0f1}.member-breakdown-header>.member-col{min-width:0}.member-breakdown-row{display:grid;grid-template-columns:minmax(0,1fr) repeat(3,9ch);gap:.5rem;padding:.75rem 0;border-bottom:1px solid #f8f9fa;font-size:.9rem}.member-breakdown-row>.member-col{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-breakdown-row:last-child{border-bottom:none}.member-breakdown-row.total{background:#f8f9fa;margin:.5rem -1rem -1rem;padding:.75rem 1rem;font-weight:600}.member-col{color:#2c3e50}.hours-col{text-align:right;color:#2c3e50;white-space:nowrap;font-variant-numeric:tabular-nums}.hours-col.diff{font-weight:600}.hours-col.diff.over{color:#e74c3c}.hours-col.diff.under{color:#27ae60}.hours-col.diff.on-track{color:#7f8c8d}@media(max-width:768px){.member-breakdown-header,.member-breakdown-row{grid-template-columns:minmax(0,1fr) repeat(3,8ch);font-size:.8rem}.member-breakdown-row.total{margin:.5rem -.5rem -.5rem;padding:.75rem .5rem}}.sub-project-breakdown{border-bottom:1px solid #e0e7ef;margin-bottom:.75rem;padding-bottom:.75rem}.sub-project-breakdown-title{font-size:.8rem;font-weight:600;color:#5a6a7a;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.4rem}.member-breakdown-group{display:contents}.member-breakdown-row.expandable{cursor:pointer;transition:background-color .15s ease}.member-breakdown-row.expandable:hover{background-color:#f4f7fa}.member-breakdown-row.expandable:focus-visible{outline:2px solid #3498db;outline-offset:-2px;border-radius:4px}.member-breakdown-row.expandable.expanded{background-color:#eef4fa;font-weight:600}.member-expand-icon{display:inline-block;width:1rem;margin-right:.35rem;color:#5a6a7a;font-size:.7rem;vertical-align:middle}.expand-icon-placeholder{display:inline-block;width:1rem;margin-right:.35rem}.member-sub-project-list{background:#fbfcfe;border-left:3px solid #cfd9e6;margin:0 0 0 1.25rem}.sub-project-row{background:transparent!important;font-size:.85rem!important;padding:.5rem 0 .5rem .75rem!important;border-bottom:1px dashed #e8edf3!important}.sub-project-row:last-child{border-bottom:none!important}.sub-project-row .member-col{color:#5a6a7a;padding-left:.5rem}.sub-project-row .hours-col{color:#5a6a7a}.sub-project-row.unclassified .member-col{color:#95a5a6;font-style:italic}.sub-project-indent{display:inline-block;width:1rem;margin-right:.35rem;color:#b0bcc9;font-size:.85rem}.member-breakdown-toolbar{display:flex;justify-content:flex-end;gap:.5rem;margin-bottom:.4rem}.member-toggle-button{padding:.3rem .75rem;background-color:transparent;color:#3498db;border:1px solid #cfd9e6;border-radius:4px;font-size:.8rem;cursor:pointer;transition:background-color .15s,border-color .15s}.member-toggle-button:hover{background-color:#eef4fa;border-color:#3498db}.member-toggle-button:active{background-color:#dfeaf5}@media(max-width:768px){.member-sub-project-list{margin-left:.5rem}.sub-project-row{font-size:.75rem!important;padding:.4rem 0 .4rem .4rem!important}.member-breakdown-toolbar{flex-wrap:wrap}.member-toggle-button{font-size:.75rem;padding:.25rem .5rem}}.reports-page{padding:1rem}.reports-page h2{margin-bottom:2rem;color:#2c3e50}.page-content{display:flex;flex-direction:column;gap:2rem}@media(max-width:768px){.reports-page{padding:.5rem}}.report-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;color:#7f8c8d;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.report-loading p{margin:1rem 0 0;font-size:1rem}.report-loading-spinner{width:32px;height:32px;border:4px solid #ecf0f1;border-top-color:#3498db;border-radius:50%;animation:report-spin .8s linear infinite}@keyframes report-spin{to{transform:rotate(360deg)}}.report-error{display:flex;flex-direction:column;align-items:center;padding:3rem 2rem;color:#e74c3c;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.report-error button{margin-top:1rem;padding:.6rem 1.2rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer}.report-error button:hover{background-color:#2980b9}.member-form{background-color:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.form-hint{display:block;margin-top:.25rem;color:#666;font-size:.875rem}.error-message{padding:.75rem;margin-bottom:1rem;background-color:#fee;color:#c33;border:1px solid #fcc;border-radius:4px}.form-actions{display:flex;gap:1rem;margin-top:1.5rem}.submit-button,.cancel-button{padding:.75rem 1.5rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s}.submit-button{background-color:#007bff;color:#fff;flex:1}.member-list{display:flex;flex-direction:column;gap:1rem}.member-item{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s}.member-item:hover{box-shadow:0 4px 8px #00000026}.member-info{flex:1}.member-name{font-size:1.25rem;font-weight:600;margin-bottom:.25rem;color:#333}.member-email{font-size:.875rem;color:#666;margin-bottom:.5rem}.member-details{display:flex;gap:.5rem;margin-bottom:.5rem;flex-wrap:wrap}.employment-badge,.team-badge,.grade-badge{padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:500}.employment-badge.proper{background-color:#e3f2fd;color:#1976d2}.employment-badge.contractor{background-color:#f3e5f5;color:#7b1fa2}.team-badge{background-color:#e8f5e9;color:#388e3c}.grade-badge{background-color:#fff3e0;color:#f57c00}.contract-info{color:#666;font-size:.875rem}.hourly-rate{color:#666;font-size:.875rem;margin-top:.5rem}.hourly-rate strong{color:#333;font-size:1rem}.member-actions{display:flex;gap:.5rem;align-items:center}.edit-button,.delete-button{padding:.5rem 1rem;border:none;border-radius:4px;font-size:.875rem;cursor:pointer;transition:background-color .2s}.edit-button{background-color:#007bff;color:#fff}.edit-button:hover{background-color:#0056b3}.delete-button{background-color:#dc3545;color:#fff}.delete-button:hover{background-color:#c82333}.delete-confirm{display:flex;gap:.5rem}.confirm-button,.cancel-button{padding:.5rem 1rem;border:none;border-radius:4px;font-size:.875rem;cursor:pointer;transition:background-color .2s}.confirm-button{background-color:#dc3545;color:#fff}.confirm-button:hover{background-color:#c82333}.cancel-button{background-color:#6c757d;color:#fff}.cancel-button:hover{background-color:#5a6268}.empty-message{text-align:center;color:#666;padding:2rem}.member-import{padding:1.5rem}.member-import .import-header{margin-bottom:1.5rem}.member-import .import-header h3{margin:0 0 .5rem;font-size:1.25rem;color:#333}.member-import .import-description{margin:0;color:#666;font-size:.9rem}.member-import .template-download{margin-bottom:1.5rem;padding:1rem;background-color:#f0f7ff;border:1px solid #b3d4fc;border-radius:4px}.member-import .template-link{color:#06c;text-decoration:none;font-weight:500}.member-import .template-link:hover{text-decoration:underline}.member-import .file-input-section{margin-bottom:1.5rem}.member-import .file-input-label{display:block;cursor:pointer}.member-import .file-input-label input[type=file]{display:none}.member-import .file-input-button{display:block;padding:2rem;border:2px dashed #ccc;border-radius:8px;text-align:center;background-color:#fafafa;color:#666;font-size:1rem;transition:all .2s}.member-import .file-input-button:hover{border-color:#667eea;background-color:#f0f4ff;color:#667eea}.member-import .parsing-indicator{display:flex;align-items:center;gap:.5rem;padding:1rem;background-color:#f0f4ff;border-radius:4px;color:#667eea;margin-bottom:1rem}.member-import .spinner{display:inline-block;width:16px;height:16px;border:2px solid #667eea;border-top-color:transparent;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.member-import .import-error{padding:1rem;background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;color:#721c24;margin-bottom:1rem}.member-import .validation-errors{margin-bottom:1.5rem;padding:1rem;background-color:#fff3cd;border:1px solid #ffeeba;border-radius:4px}.member-import .validation-errors h4{margin:0 0 .75rem;color:#856404}.member-import .error-list{max-height:200px;overflow-y:auto}.member-import .error-item{margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid #ffeeba}.member-import .error-item:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.member-import .error-item strong{display:block;color:#856404;margin-bottom:.25rem}.member-import .error-item ul{margin:0;padding-left:1.25rem;color:#856404;font-size:.875rem}.member-import .import-preview{margin-bottom:1.5rem}.member-import .import-preview h4{margin:0 0 1rem;color:#333}.member-import .preview-summary{display:flex;gap:1rem;margin-bottom:1.5rem}.member-import .summary-item{flex:1;padding:1rem;border-radius:8px;text-align:center}.member-import .summary-item .count{display:block;font-size:2rem;font-weight:700;line-height:1;margin-bottom:.25rem}.member-import .summary-item .label{font-size:.875rem;color:#666}.member-import .summary-item.new{background-color:#d4edda}.member-import .summary-item.new .count{color:#28a745}.member-import .summary-item.updated{background-color:#cce5ff}.member-import .summary-item.updated .count{color:#007bff}.member-import .summary-item.unchanged{background-color:#f8f9fa}.member-import .summary-item.unchanged .count{color:#6c757d}.member-import .preview-section{margin-bottom:1.5rem}.member-import .preview-section h5{margin:0 0 .75rem;color:#333;font-size:1rem}.member-import .preview-table{width:100%;border-collapse:collapse;font-size:.875rem;border:1px solid #e0e0e0;border-radius:4px;overflow:hidden}.member-import .preview-table th,.member-import .preview-table td{padding:.75rem;text-align:left;border-bottom:1px solid #e0e0e0}.member-import .preview-table th{background-color:#f8f9fa;font-weight:600}.member-import .preview-table tbody tr:hover{background-color:#f8f9fa}.member-import .preview-table tbody tr:last-child td{border-bottom:none}.member-import .changes-list{margin:0;padding:0;list-style:none}.member-import .changes-list li{padding:.125rem 0;color:#007bff;font-size:.8rem}.member-import .changes-list li:before{content:"→ ";color:#999}.member-import .import-actions{display:flex;justify-content:flex-end;gap:.75rem;padding-top:1rem;border-top:1px solid #e0e0e0}.member-import .primary-button{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:opacity .2s}.member-import .primary-button:hover:not(:disabled){opacity:.9}.member-import .primary-button:disabled{opacity:.5;cursor:not-allowed}.member-import .secondary-button{padding:.75rem 1.5rem;background-color:#f8f9fa;color:#333;border:1px solid #ddd;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background-color .2s}.member-import .secondary-button:hover:not(:disabled){background-color:#e9ecef}.member-import .secondary-button:disabled{opacity:.5;cursor:not-allowed}.member-import .import-result{padding:1.5rem;border-radius:8px;text-align:center}.member-import .import-result.success{background-color:#d4edda;border:1px solid #c3e6cb}.member-import .import-result.has-errors{background-color:#fff3cd;border:1px solid #ffeeba}.member-import .import-result h3{margin:0 0 1rem;font-size:1.25rem}.member-import .result-summary{display:flex;justify-content:center;gap:2rem;margin-bottom:1rem}.member-import .result-summary p{margin:0;font-size:1rem}.member-import .result-errors{margin-top:1rem;padding:1rem;background-color:#ffffff80;border-radius:4px;text-align:left}.member-import .result-errors h4{margin:0 0 .5rem;color:#856404}.member-import .result-errors ul{margin:0;padding-left:1.25rem;color:#856404;font-size:.875rem}.members-page{padding:2rem;max-width:1200px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.page-header h2{margin:0;font-size:1.75rem;color:#333}.header-actions{display:flex;align-items:stretch;gap:.75rem}.header-actions .export-button,.header-actions .import-button,.header-actions .add-button{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s;white-space:nowrap;width:auto;margin-bottom:0;font-weight:400}.export-button{background-color:#007bff;color:#fff}.export-button:hover{background-color:#0056b3}.export-button:disabled{background-color:#b0c4de;cursor:not-allowed}.import-button{background-color:#6c757d;color:#fff}.import-button:hover{background-color:#5a6268}.add-button{background-color:#28a745;color:#fff}.add-button:hover{background-color:#218838}.form-section{margin-bottom:2rem}.form-section h3,.list-section h3{margin-bottom:1rem;color:#333}.rate-settings-form{background-color:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.contractor-section{margin-bottom:2rem;padding:1.5rem;background-color:#f8f9fa;border-radius:8px}.contractor-section h3{margin-bottom:1rem;color:#333;font-size:1.25rem}.contractor-overhead-input{max-width:400px}.contractor-overhead-input label{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.contractor-overhead-input .form-hint{display:block;margin-top:.5rem;color:#666;font-size:.875rem}.team-section{margin-bottom:2rem}.team-section h3{margin-bottom:1rem;color:#333;font-size:1.25rem}.grade-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.grade-input label{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.input-wrapper{display:flex;align-items:center;border:1px solid #ddd;border-radius:4px;overflow:hidden}.input-wrapper:focus-within{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.currency,.unit{padding:.75rem .5rem;background-color:#f8f9fa;color:#666;font-size:.875rem}.input-wrapper input{flex:1;padding:.75rem .5rem;border:none;font-size:1rem;text-align:right}.input-wrapper input:focus{outline:none}.form-footer{display:flex;align-items:center;gap:1rem;margin-top:2rem;padding-top:2rem;border-top:1px solid #ddd}.success-message{color:#28a745;font-weight:500}.submit-button{padding:.75rem 1.5rem;background-color:#007bff;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s;margin-left:auto}.submit-button:hover:not(:disabled){background-color:#0056b3}.submit-button:disabled{background-color:#ccc;cursor:not-allowed}.rate-settings-page{padding:2rem;max-width:1200px;margin:0 auto}.page-header{margin-bottom:2rem}.page-header h2{margin:0 0 .5rem;font-size:1.75rem;color:#333}.page-description{color:#666;line-height:1.6}.info-section{margin-top:2rem;padding:1.5rem;background-color:#f8f9fa;border-radius:8px}.info-section h3{margin-top:0;color:#333}.info-section ul{margin:0;padding-left:1.5rem}.info-section li{color:#666;line-height:1.8;margin-bottom:.5rem}.profile-page{padding:2rem;max-width:800px;margin:0 auto}.profile-container h1{font-size:1.75rem;margin-bottom:2rem;color:#333}.profile-info{background:#f8f9fa;border-radius:8px;padding:1.5rem;margin-bottom:2rem}.info-item{margin-bottom:1rem}.info-item:last-child{margin-bottom:0}.info-item label{display:block;font-weight:600;color:#666;font-size:.875rem;margin-bottom:.5rem}.info-value{font-size:1rem;color:#333}.profile-form{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:2rem}.profile-form h2{font-size:1.25rem;margin-bottom:1.5rem;color:#333;border-bottom:2px solid #007bff;padding-bottom:.5rem}.profile-form .form-group{margin-bottom:1.5rem}.profile-form label{display:block;font-weight:600;margin-bottom:.5rem;color:#333}.profile-form input,.profile-form select{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .3s}.profile-form input:focus,.profile-form select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.profile-form input[readonly]{background-color:#f5f5f5;cursor:not-allowed}.form-hint{display:block;margin-top:.25rem;font-size:.875rem;color:#666}.message{padding:1rem;border-radius:4px;margin-bottom:1rem}.message.success{background-color:#d4edda;color:#155724;border:1px solid #c3e6cb}.message.error{background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.form-actions{display:flex;gap:1rem;margin-top:2rem}.btn-primary{background-color:#007bff;color:#fff;padding:.75rem 2rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .3s}.btn-primary:hover:not(:disabled){background-color:#0056b3}.btn-primary:disabled{background-color:#6c757d;cursor:not-allowed}.no-member-message,.info-message{background:#fff3cd;border:1px solid #ffc107;color:#856404;padding:1rem;border-radius:4px;margin-top:1rem}.success-badge{background:#d4edda;border:1px solid #c3e6cb;color:#155724;padding:.75rem 1rem;border-radius:4px;font-weight:600}.btn-danger{background-color:#dc3545;color:#fff;padding:.75rem 1.5rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .3s}.btn-danger:hover:not(:disabled){background-color:#c82333}.btn-danger:disabled{background-color:#6c757d;cursor:not-allowed}.profile-form code{background:#e9ecef;padding:.15rem .4rem;border-radius:3px;font-family:monospace;font-size:.9em}.profile-form pre{overflow-x:auto;white-space:pre-wrap;word-break:break-all}@media(max-width:768px){.profile-page{padding:1rem}.profile-form{padding:1.5rem}}.budget-management-page{padding:1rem}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.page-header h2{margin:0;color:#2c3e50}.month-selector{display:flex;align-items:center;gap:.5rem}.month-selector label{font-weight:600;color:#2c3e50}.budget-note{color:#7f8c8d;font-size:.9rem;margin-bottom:1.5rem}.budget-filter-panel{background:#fff;padding:1rem;border-radius:8px;box-shadow:0 2px 4px #00000014;margin-bottom:1.5rem}.budget-filter-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:1rem;align-items:start}.budget-filter-item{display:flex;flex-direction:column;gap:.35rem}.budget-filter-item label{font-size:.85rem;color:#2c3e50;font-weight:600}.budget-filter-item input,.budget-filter-item select,.budget-template-select select,.budget-template-field input,.budget-template-field select{padding:.5rem;border:1px solid #ddd;border-radius:6px;font-size:.95rem}.budget-project-search{position:relative;display:flex;flex-direction:column;gap:.5rem}.budget-selected-projects{display:flex;flex-wrap:wrap;gap:.5rem}.budget-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .55rem;border-radius:999px;border:1px solid #d6eaf8;background:#eaf5ff;color:#2c3e50;font-weight:700;cursor:pointer}.budget-chip:hover{background:#dff0ff}.budget-chip-x{display:inline-block;font-weight:900;opacity:.8}.budget-project-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:0;max-height:280px;overflow:auto;background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 10px 24px #0000001f;z-index:50}.budget-project-dropdown-empty{padding:.75rem;color:#7f8c8d;font-size:.9rem}.budget-project-option{display:grid;grid-template-columns:20px 1fr auto;align-items:center;gap:.5rem;padding:.6rem .75rem;cursor:pointer}.budget-project-option:hover{background:#f8f9fa}.budget-project-option input[type=checkbox]{margin:0}.budget-project-option-label{font-weight:700;color:#2c3e50}.budget-project-option-meta{font-size:.75rem;font-weight:700;color:#7f8c8d;white-space:nowrap}.budget-template-controls{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-top:1rem;flex-wrap:wrap}.budget-template-select{display:flex;flex-direction:column;gap:.35rem;min-width:260px}.budget-template-select label{font-size:.85rem;color:#2c3e50;font-weight:600}.budget-template-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.budget-btn{padding:.55rem .85rem;border-radius:6px;border:1px solid #3498db;background:#3498db;color:#fff;font-weight:700;cursor:pointer}.budget-btn:disabled{opacity:.6;cursor:not-allowed}.budget-btn.secondary{background:#fff;color:#3498db}.budget-btn.tertiary{border-color:#bdc3c7;background:#ecf0f1;color:#2c3e50}.budget-filter-summary{margin-top:.75rem;font-size:.85rem;color:#7f8c8d}.budget-filter-error{margin-top:.75rem;color:#e74c3c;font-size:.9rem;font-weight:600}.budget-template-modal-overlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000}.budget-template-modal{width:min(560px,100%);background:#fff;border-radius:10px;box-shadow:0 10px 24px #00000040;overflow:hidden}.budget-template-modal-header{padding:1rem 1.25rem;border-bottom:1px solid #eee}.budget-template-modal-header h3{margin:0;color:#2c3e50;font-size:1.05rem}.budget-template-modal-body{padding:1rem 1.25rem 1.25rem}.budget-template-mode{display:flex;gap:1.25rem;flex-wrap:wrap;margin-bottom:1rem}.budget-template-mode label{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:#2c3e50}.budget-template-field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.budget-template-field label{font-size:.85rem;color:#2c3e50;font-weight:600}.budget-template-modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.summary-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.summary-card h3{margin:0 0 .75rem;font-size:.9rem;color:#7f8c8d;font-weight:600}.summary-value{margin:0;font-size:1.75rem;font-weight:700;color:#2c3e50}.summary-value.cost{color:#e67e22}.summary-value.warning{color:#e74c3c}.budget-list{display:flex;flex-direction:column;gap:1rem}.budget-item{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.budget-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:.5rem}.budget-project-name{font-size:1.1rem;font-weight:600;color:#2c3e50;margin-right:.5rem}.category-badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;color:#fff}.category-initial{background-color:#3498db}.category-operation{background-color:#27ae60}.category-spot{background-color:#f39c12}.category-advisory{background-color:#9b59b6}.budget-hours{font-size:1rem;font-weight:600;color:#7f8c8d}.project-period{color:#7f8c8d;font-size:.9rem;margin-bottom:1rem}.budget-details{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.budget-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0}.budget-row span:first-child{color:#7f8c8d;font-size:.9rem}.budget-amount{font-weight:600;color:#2c3e50;font-size:1rem}.cost-amount{font-weight:600;color:#e67e22;font-size:1rem}.remaining-positive{font-weight:600;color:#27ae60;font-size:1rem}.remaining-negative{font-weight:600;color:#e74c3c;font-size:1rem}.budget-mgmt-progress{--budget-progress-height: 36px;display:flex;align-items:center;gap:1rem}.budget-progress-bar{flex:1;height:var(--budget-progress-height);background-color:#ecf0f1;border-radius:12px;overflow:hidden;min-width:0}.budget-progress-fill{height:100%;background-color:#3498db;transition:width .3s ease}.budget-progress-fill.warning{background-color:#f39c12}.budget-progress-fill.over-budget{background-color:#e74c3c}.budget-progress-label{display:flex;align-items:center;justify-content:flex-end;font-weight:600;color:#2c3e50;min-width:7.5em;min-height:var(--budget-progress-height);text-align:right;flex:0 0 auto;white-space:nowrap;line-height:1.2}@media(max-width:768px){.budget-management-page{padding:.5rem}.page-header{flex-direction:column;align-items:flex-start}.summary-cards{grid-template-columns:1fr}.summary-value{font-size:1.5rem}.budget-filter-grid{grid-template-columns:1fr}.budget-template-select{min-width:0;width:100%}.budget-header{flex-direction:column;align-items:flex-start}.budget-row{flex-direction:column;align-items:flex-start;gap:.25rem}.budget-mgmt-progress{--budget-progress-height: 24px;flex-direction:column;align-items:stretch;gap:.5rem}.budget-progress-label{min-height:0;min-width:0;width:100%;text-align:right}}.work-planning-page{padding:1rem;max-width:1200px;margin:0 auto}.page-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:1.5rem;gap:1rem;min-height:60px}.header-left{display:flex;align-items:center;gap:1.5rem;min-width:0;grid-column:1}.page-header h2{margin:0;color:#2c3e50;white-space:nowrap}.view-toggle{display:flex;gap:.5rem;background-color:#ecf0f1;padding:.25rem;border-radius:4px;flex-shrink:0;grid-column:2;justify-self:center}.toggle-btn{padding:.5rem 1rem;background:transparent;border:none;border-radius:4px;font-size:.9rem;font-weight:600;color:#7f8c8d;cursor:pointer;transition:all .2s;white-space:nowrap;min-width:80px}.toggle-btn:hover{color:#2c3e50}.toggle-btn.active{background-color:#3498db;color:#fff}.month-selector{display:flex;align-items:center;gap:.5rem;flex-shrink:0;grid-column:3;justify-self:end}.month-selector label{font-weight:600;color:#2c3e50;white-space:nowrap}.month-selector input[type=month]{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;cursor:pointer}.copy-previous-month-btn{background-color:#6c757d;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background-color .2s;white-space:nowrap}.copy-previous-month-btn:hover{background-color:#5a6268}.copy-previous-month-btn:disabled{opacity:.6;cursor:not-allowed}.planning-note{color:#7f8c8d;font-size:.9rem;margin-bottom:1.5rem}.message{padding:1rem;border-radius:4px;margin-bottom:1.5rem;font-weight:500}.message.success{background-color:#d4edda;color:#155724;border-left:4px solid #28a745}.message.error{background-color:#f8d7da;color:#721c24;border-left:4px solid #e74c3c}.form-message-wrapper{display:flex;justify-content:center;margin-top:1rem}.form-message{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1.1rem;border-radius:9999px;font-size:.9rem;font-weight:600;box-shadow:0 1px 4px #00000014;animation:form-message-in .2s ease}.form-message.success{background-color:#eafaf1;color:#1a7a43;border:1px solid #a8dfc0}.form-message.error{background-color:#fdf2f2;color:#b91c1c;border:1px solid #f5b8b8}.form-message-icon{font-size:.8rem;font-weight:800}@keyframes form-message-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.empty-message{text-align:center;color:#95a5a6;padding:3rem;background:#fff;border-radius:8px}.error-message{text-align:center;color:#e74c3c;padding:2rem;background:#fff;border-radius:8px;border:1px solid #e74c3c}.summary-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;display:flex;gap:2rem;flex-wrap:wrap}.summary-row{display:flex;gap:.5rem;align-items:center}.summary-label{font-weight:600;color:#7f8c8d}.summary-value{font-size:1.25rem;font-weight:700;color:#2c3e50}.summary-value.over{color:#e74c3c}.summary-value.under{color:#27ae60}.planning-form{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.plan-items{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1.5rem}.plan-item{border:2px solid #e9ecef;border-radius:8px;padding:1.5rem;background:#f8f9fa}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.item-header h4{margin:0;color:#2c3e50;font-size:1.1rem}.remove-button{padding:.4rem .75rem;background-color:#e74c3c;color:#fff;border:none;border-radius:4px;font-size:.85rem;cursor:pointer;font-weight:600;transition:background-color .2s}.remove-button:hover{background-color:#c0392b}.form-grid{display:grid;grid-template-columns:2fr 1fr;gap:1rem;margin-bottom:1rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;color:#2c3e50;font-size:.9rem}.form-group select,.form-group input,.form-group textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;font-family:inherit;transition:border-color .2s}.form-group select:focus,.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#3498db}.form-group textarea{resize:vertical}.item-stats{display:flex;gap:2rem;padding-top:1rem;border-top:1px solid #ddd;margin-top:1rem}.stat-item{display:flex;gap:.5rem;align-items:center}.stat-label{font-weight:600;color:#7f8c8d;font-size:.9rem}.stat-value{font-weight:700;color:#2c3e50;font-size:1rem}.stat-value.over{color:#e74c3c}.stat-value.under{color:#27ae60}.add-button{width:100%;padding:1rem;background-color:#27ae60;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .2s;margin-bottom:1.5rem}.add-button:hover{background-color:#229954}.form-actions{display:flex;justify-content:flex-end}.submit-button{padding:1rem 2rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .2s}.submit-button:hover:not(:disabled){background-color:#2980b9}.submit-button:disabled{background-color:#95a5a6;cursor:not-allowed}.summary-view{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.members-summary{display:flex;flex-direction:column;gap:1.5rem}.member-summary-card{border:2px solid #e9ecef;border-radius:8px;background:#f8f9fa;transition:all .2s}.member-summary-card.expanded{border-color:#3498db}.member-summary-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem}.member-summary-header.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.member-summary-header.clickable:hover{background-color:#ecf0f1}.member-header-left{display:flex;align-items:center;gap:.75rem}.expand-icon{font-size:.75rem;color:#7f8c8d;transition:transform .2s}.expand-icon.expanded{transform:rotate(90deg)}.member-summary-header h3{margin:0;color:#2c3e50;font-size:1.2rem}.member-total{display:flex;gap:.5rem;align-items:center}.total-label{font-weight:600;color:#7f8c8d;font-size:.95rem}.total-value{font-size:1.25rem;font-weight:700;color:#3498db}.plan-count{font-size:.9rem;color:#7f8c8d}.member-plans-list{display:flex;flex-direction:column;gap:1rem;padding:1rem 1.5rem 1.5rem;border-top:1px solid #dee2e6;margin-top:0}.plan-summary-item{background:#fff;padding:1rem;border-radius:4px;border-left:4px solid #3498db}.plan-summary-header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.project-info{flex:1}.plan-summary-item .project-name{font-weight:600;color:#2c3e50;font-size:1rem}.planned-hours{font-size:1.1rem;font-weight:700;color:#27ae60;white-space:nowrap}.plan-description{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #e9ecef;color:#555;font-size:.9rem;line-height:1.5}.projects-view,.members-view{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.external-projects-summary{margin-bottom:0}.external-projects-summary h3{color:#2c3e50;margin-bottom:1rem;font-size:1.3rem}.external-projects-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}.external-project-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #0000000d;border-left:4px solid #3498db;transition:all .2s ease}.external-project-card.clickable{cursor:pointer}.external-project-card.clickable:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-2px);border-left-color:#2980b9}.external-project-card.clickable:active{transform:translateY(0)}.external-project-header{margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid #ecf0f1}.external-project-header h4{margin:0 0 .5rem;color:#2c3e50;font-size:1.1rem}.external-project-header .member-count{font-size:.85rem;color:#7f8c8d}.external-project-stats{display:flex;flex-direction:column;gap:.75rem}.external-project-stats .stat-row{display:flex;justify-content:space-between;align-items:center}.external-project-stats .stat-row.remaining{padding-top:.5rem;border-top:1px solid #ecf0f1;font-weight:600}.external-project-stats .stat-label{color:#7f8c8d;font-size:.9rem}.external-project-stats .stat-value{font-weight:600;color:#2c3e50;font-size:1rem}.external-project-stats .stat-value.budget{color:#27ae60;font-size:1.1rem}.external-project-stats .stat-value.over{color:#e74c3c}.external-project-stats .stat-value.under{color:#27ae60}.progress-bar{width:100%;height:8px;background-color:#ecf0f1;border-radius:4px;overflow:hidden;margin-top:.5rem}.progress-fill{height:100%;transition:width .3s ease;border-radius:4px}.progress-text{text-align:center;font-size:.85rem;color:#7f8c8d;margin-top:.5rem}.progress-text.error{color:#e74c3c;font-weight:600}.project-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;margin-left:.5rem}.project-badge.external{background-color:#e3f2fd;color:#1976d2}@media(max-width:768px){.work-planning-page{padding:.5rem}.page-header{display:flex;flex-direction:column;align-items:stretch;min-height:auto}.header-left{width:100%;flex-direction:column;align-items:stretch}.page-header h2{min-width:auto}.view-toggle{width:100%}.toggle-btn{flex:1;min-width:auto}.month-selector{width:100%}.summary-card{flex-direction:column;gap:1rem}.form-grid{grid-template-columns:1fr}.planning-form,.summary-view{padding:1rem}.item-stats{flex-direction:column;gap:.5rem}.member-summary-header{flex-direction:column;align-items:flex-start;gap:1rem}.plan-summary-header{flex-direction:column;align-items:flex-start}.external-projects-list{grid-template-columns:1fr}}.project-search-container{position:relative}.project-search-input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .2s}.project-search-input:focus{outline:none;border-color:#3498db}.project-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 4px 8px #0000001a;max-height:300px;overflow-y:auto;z-index:10}.project-item{padding:.75rem 1rem;cursor:pointer;transition:background-color .2s;display:flex;gap:.5rem;align-items:center;text-align:left}.project-item:hover{background-color:#f8f9fa}.project-item.selected{background-color:#e3f2fd}.project-code{font-family:monospace;font-weight:600;color:#495057;font-size:.9rem;flex-shrink:0}.project-name{color:#2c3e50;flex:1;text-align:left}.no-results{padding:1rem;text-align:center;color:#7f8c8d;font-style:italic}.timeline-period-selector{display:flex;align-items:center;gap:.5rem;margin-left:1rem}.timeline-period-selector label{font-size:.9rem;color:#666}.timeline-period-selector select{padding:.4rem .8rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.project-col-width-slider{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;padding:.5rem 1rem;background:#f8f9fa;border-radius:6px;width:fit-content}.project-col-width-slider label{font-size:.85rem;color:#666;white-space:nowrap}.project-col-width-slider input[type=range]{width:120px;cursor:pointer}.project-col-width-slider span{font-size:.85rem;color:#495057;min-width:50px}.timeline-view{margin-top:1rem}.timeline-grid-wrapper{border:1px solid #e0e0e0;border-radius:8px;overflow-x:auto;background:#fff}.timeline-grid{min-width:max-content}.timeline-header{display:flex;min-width:max-content;background:#f8f9fa;border-bottom:2px solid #dee2e6;font-weight:600;position:sticky;top:0;z-index:5}.timeline-member-col,.timeline-project-col{min-width:180px;max-width:180px;padding:1rem;border-right:1px solid #dee2e6;background:#f8f9fa;position:sticky;left:0;z-index:3}.timeline-project-col{min-width:250px;max-width:250px}.timeline-month-col{min-width:160px;flex:1 0 160px;padding:.75rem 1rem;text-align:center;border-right:1px solid #dee2e6;background:#f8f9fa}.timeline-month-col:last-child{border-right:none}.working-hours-label{font-size:.75rem;color:#666;font-weight:400;margin-top:.25rem}.timeline-row{display:flex;min-width:max-content;border-bottom:1px solid #e0e0e0}.timeline-row:last-child{border-bottom:none}.timeline-row .timeline-member-col,.timeline-row .timeline-project-col{display:flex;flex-direction:column;justify-content:center;background:#fff}.timeline-row .member-name,.timeline-row .project-name{font-weight:600;color:#2c3e50;font-size:.95rem}.timeline-row .member-team,.timeline-row .project-budget{font-size:.8rem;color:#666;margin-top:.25rem}.timeline-row .project-category-badge{font-size:.7rem;color:#fff;background-color:#27ae60;padding:.1rem .4rem;border-radius:4px;margin-top:.25rem;display:inline-block;width:fit-content}.timeline-cell{min-width:160px;flex:1 0 160px;padding:.75rem;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;gap:.25rem}.timeline-cell.clickable{cursor:pointer;transition:all .15s ease}.timeline-cell.clickable:hover{filter:brightness(.95);box-shadow:inset 0 0 0 2px #3498db}.timeline-cell.clickable:focus{outline:2px solid #3498db;outline-offset:-2px}.timeline-cell:last-child{border-right:none}.timeline-cell.status-low{background-color:#e8f5e9}.timeline-cell.status-normal{background-color:#e3f2fd}.timeline-cell.status-high{background-color:#fff3e0}.timeline-cell.status-overload{background-color:#ffebee}.timeline-cell .cell-hours{font-size:1.1rem;font-weight:700;color:#2c3e50}.timeline-cell .cell-rate{font-size:.9rem;font-weight:600;color:#495057}.timeline-cell .cell-projects,.timeline-cell .cell-members{margin-top:.5rem}.timeline-cell .cell-project-item,.timeline-cell .cell-member-item{font-size:.75rem;color:#495057;padding:.15rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-cell .cell-project-more,.timeline-cell .cell-member-more{font-size:.7rem;color:#7f8c8d;font-style:italic}.timeline-cell .cell-alert{font-size:.75rem;padding:.2rem .5rem;border-radius:4px;margin-top:.25rem;text-align:center;background-color:#d4edda;color:#155724}.timeline-cell .cell-alert.overload{background-color:#f8d7da;color:#721c24}.timeline-cell.project-cell{background-color:#fafafa}.timeline-cell.project-cell.over-budget{background-color:#ffebee}.timeline-cell.project-cell.out-of-range{background-color:#e9ecef;opacity:.6;position:relative}.timeline-cell.project-cell.out-of-range:after{content:"期間外";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.75rem;color:#6c757d;font-weight:600;background:#fffc;padding:.25rem .5rem;border-radius:4px}.timeline-cell.project-cell.out-of-range .cell-hours,.timeline-cell.project-cell.out-of-range .cell-cost,.timeline-cell.project-cell.out-of-range .cell-member-count,.timeline-cell.project-cell.out-of-range .budget-progress,.timeline-cell.project-cell.out-of-range .budget-rate{visibility:hidden}.timeline-cell .cell-cost{font-size:.85rem;color:#2980b9}.timeline-cell .cell-member-count{font-size:.75rem;color:#666;margin-top:.25rem}.budget-progress{height:6px;background-color:#e0e0e0;border-radius:3px;margin-top:.5rem;overflow:hidden}.budget-bar{height:100%;border-radius:3px;transition:width .3s ease}.budget-rate{font-size:.75rem;color:#666;text-align:right;margin-top:.25rem}.budget-rate.over{color:#e74c3c;font-weight:600}.timeline-legend{display:flex;justify-content:flex-start;gap:1rem;padding:.5rem 0;margin-bottom:.75rem}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;padding:.3rem .8rem;border-radius:4px}.legend-item.status-low{background-color:#e8f5e9;color:#2e7d32}.legend-item.status-normal{background-color:#e3f2fd;color:#1565c0}.legend-item.status-high{background-color:#fff3e0;color:#e65100}.legend-item.status-overload{background-color:#ffebee;color:#c62828}.detail-modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:1rem}.detail-modal{background:#fff;border-radius:12px;max-width:500px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:0 4px 20px #00000026}.detail-modal-header{display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid #e0e0e0;background:#f8f9fa;border-radius:12px 12px 0 0}.detail-modal-header h3{flex:1;margin:0;font-size:1.1rem;color:#2c3e50}.detail-modal-month{font-size:.9rem;color:#666;background:#e9ecef;padding:.25rem .75rem;border-radius:12px}.detail-modal-close{background:none;border:none;font-size:1.5rem;color:#adb5bd;cursor:pointer;padding:0;line-height:1;transition:color .15s}.detail-modal-close:hover{color:#495057}.detail-modal-body{padding:1.5rem}.detail-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;margin-bottom:1.5rem}.detail-summary-item{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:#f8f9fa;border-radius:8px}.detail-summary-item .label{font-size:.8rem;color:#666}.detail-summary-item .value{font-size:1.1rem;font-weight:600;color:#2c3e50}.detail-summary-item .value.status-low{color:#2e7d32}.detail-summary-item .value.status-normal{color:#1565c0}.detail-summary-item .value.status-high{color:#e65100}.detail-summary-item .value.status-overload{color:#c62828}.detail-summary-item .value.over{color:#e74c3c}.detail-modal-body h4{font-size:.95rem;color:#495057;margin:0 0 .75rem;border-bottom:1px solid #e0e0e0;padding-bottom:.5rem}.detail-breakdown{display:flex;flex-direction:column;gap:.5rem}.detail-breakdown-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#fafafa;border-radius:6px;border:1px solid #e9ecef}.detail-breakdown-item .item-name{flex:1;font-size:.9rem;color:#2c3e50}.detail-breakdown-item .item-hours{font-weight:600;color:#495057;min-width:50px;text-align:right}.detail-breakdown-item .item-cost{font-size:.85rem;color:#2980b9;min-width:90px;text-align:right}@media(max-width:768px){.timeline-member-col,.timeline-project-col{min-width:120px;max-width:120px;padding:.5rem}.timeline-month-col,.timeline-cell{min-width:120px;padding:.5rem}.timeline-cell .cell-hours{font-size:.95rem}.timeline-legend{flex-wrap:wrap;gap:.5rem}}.sub-project-trigger{cursor:pointer;caret-color:transparent}.sub-project-trigger:hover{border-color:#3498db}.project-work-plan-detail{padding:1rem;max-width:1200px;margin:0 auto}.detail-header{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.detail-header h2{margin:0;color:#2c3e50}.back-button{align-self:flex-start;padding:.5rem 1rem;background-color:#ecf0f1;border:none;border-radius:4px;font-size:.9rem;font-weight:600;color:#2c3e50;cursor:pointer;transition:background-color .2s}.back-button:hover{background-color:#bdc3c7}.project-info-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:1.5rem;border-left:4px solid #3498db}.project-info-card h3{margin:0 0 .75rem;color:#2c3e50;font-size:1.3rem}.project-meta{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.month-label{font-size:.9rem;color:#7f8c8d;font-weight:600}.project-type-badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600}.project-type-badge.external{background-color:#e3f2fd;color:#1976d2}.budget-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.budget-stat{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;display:flex;flex-direction:column;gap:.5rem}.budget-stat .stat-label{font-size:.85rem;color:#7f8c8d;font-weight:600}.budget-stat .stat-value{font-size:1.5rem;font-weight:700;color:#2c3e50}.budget-stat .stat-value.budget{color:#27ae60}.budget-stat .stat-value.over{color:#e74c3c}.budget-stat .stat-value.under{color:#3498db}.progress-section{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:1.5rem}.progress-bar{width:100%;height:12px;background-color:#ecf0f1;border-radius:6px;overflow:hidden;margin-bottom:.5rem}.progress-fill{height:100%;transition:width .3s ease;border-radius:6px}.progress-text{text-align:center;font-size:.9rem;color:#7f8c8d;font-weight:600}.progress-text.error{color:#e74c3c}.member-plans-section{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:1.5rem}.member-plans-section h3{margin:0 0 1.5rem;color:#2c3e50;font-size:1.2rem}.member-plans-list{display:flex;flex-direction:column;gap:1rem}.member-plan-card{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem;transition:box-shadow .2s}.member-plan-card:hover{box-shadow:0 4px 8px #0000001a}.member-plan-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.member-info h4{margin:0 0 .5rem;color:#2c3e50;font-size:1.1rem}.member-details{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.team-badge,.type-badge,.grade-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600}.team-badge{background-color:#f3e5f5;color:#7b1fa2}.type-badge.contractor{background-color:#fff3e0;color:#f57c00}.grade-badge{background-color:#e8f5e9;color:#388e3c}.hourly-rate{font-size:.85rem;color:#7f8c8d;font-weight:600}.plan-stats{display:flex;gap:1.5rem;align-items:center}.stat-item{display:flex;flex-direction:column;gap:.25rem;text-align:right}.stat-item .stat-label{font-size:.75rem;color:#7f8c8d}.stat-item .stat-value{font-size:1.1rem;font-weight:700;color:#2c3e50}.plan-description{padding-top:1rem;border-top:1px solid #ddd}.description-label{font-size:.85rem;color:#7f8c8d;font-weight:600;display:block;margin-bottom:.5rem}.plan-description p{margin:0;color:#2c3e50;line-height:1.6;white-space:pre-wrap}.total-summary{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;border-left:4px solid #27ae60}.total-row{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0;border-bottom:1px solid #ecf0f1}.total-row:last-child{border-bottom:none}.total-label{font-weight:600;color:#7f8c8d}.total-value{font-size:1.2rem;font-weight:700;color:#2c3e50}.empty-message{text-align:center;padding:2rem;color:#95a5a6}.error-message{background-color:#f8d7da;color:#721c24;padding:1rem;border-radius:4px;margin-bottom:1rem;border-left:4px solid #e74c3c}@media(max-width:768px){.project-work-plan-detail{padding:.5rem}.budget-summary{grid-template-columns:1fr}.member-plan-header{flex-direction:column}.plan-stats{width:100%;justify-content:space-between}.stat-item{text-align:left}}#root{width:100%;min-height:100vh}
