.modal-overlay{align-items:center;animation:fadeIn .2s ease-in-out;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.modal-content{animation:slideUp .3s ease-out;background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;max-height:90vh;max-width:600px;overflow-y:auto;width:90%}.modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:20px 24px}.modal-header h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin:0}.modal-close{align-items:center;background:none;border:none;border-radius:4px;color:#6b7280;cursor:pointer;display:flex;font-size:2rem;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.modal-close:hover{background-color:#f3f4f6;color:#1f2937}.modal-body{padding:24px}.profile-section{margin-bottom:24px}.profile-section:last-child{margin-bottom:0}.section-header{align-items:center;border-bottom:2px solid #e5e7eb;display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:12px}.section-header h3{color:#1f2937;font-size:1.125rem;font-weight:600;margin:0}.btn-edit{background-color:#3a3a3a;border:none;border-radius:4px;color:#f5f5f5;cursor:pointer;font-size:.875rem;padding:6px 16px;transition:background-color .2s}.btn-edit:hover{background-color:#1a1a1a}.form-group{margin-bottom:16px}.form-group label{font-size:.875rem;margin-bottom:6px}.form-group input,.form-group select{border-radius:4px;transition:border-color .2s,box-shadow .2s}.input-disabled{background-color:#f0f0f0;color:#606060;cursor:not-allowed}.form-actions{gap:8px;justify-content:flex-end;margin-top:20px}.btn-primary{background-color:#3a3a3a;border-radius:4px;font-size:.875rem;font-weight:500;padding:10px 20px;transition:background-color .2s}.btn-primary:hover{background-color:#1a1a1a}.btn-cancel{background-color:#e8e8e8;border:1px solid #d0d0d0;border-radius:4px;color:#1a1a1a;cursor:pointer;font-size:.875rem;font-weight:500;padding:10px 20px;transition:all .2s}.btn-cancel:hover{background-color:#d8d8d8;border-color:#a0a0a0}.message{animation:slideDown .3s ease-out;border-radius:4px;font-size:.875rem;margin-bottom:16px;padding:12px 16px}.message.success{background-color:#f0f0f0;border:1px solid #d0d0d0;color:#1a1a1a}.message.error{background-color:#e8e8e8;border:1px solid silver;color:#1a1a1a}.modal-content::-webkit-scrollbar{width:8px}.modal-content::-webkit-scrollbar-track{background:#f1f1f1}.modal-content::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.modal-content::-webkit-scrollbar-thumb:hover{background:#555}@media (max-width:640px){.modal-content{max-height:95vh;width:95%}.modal-body,.modal-header{padding:16px}.modal-header h2{font-size:1.25rem}.section-header h3{font-size:1rem}}.header{background-color:#fff;border-bottom:1px solid #ddd;box-shadow:0 2px 4px #0000001a;height:60px;padding:0;position:-webkit-sticky;position:sticky;top:0;z-index:100}.header-container{height:100%;justify-content:space-between;margin:0 auto;max-width:1400px;padding:0 20px}.header-container,.header-logo{align-items:center;display:flex}.header-logo{gap:8px}.header-logo h1{color:#1a1a1a;font-size:24px;font-weight:700;margin:0}.header-logo .subtitle{color:#999;font-size:12px;font-weight:400}.header-nav{align-items:center;display:flex;gap:24px}.header-nav a{color:#333;font-size:14px;font-weight:500;text-decoration:none;transition:color .3s ease}.header-nav a:hover{color:#a8d5ba;text-decoration:none}.header-user{align-items:center;display:flex;gap:12px}.user-info{background:#f9fafb;border:1px solid #0000;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;padding:8px 16px;text-decoration:none;transition:all .3s ease}.user-info:hover{background:linear-gradient(135deg,#667eea1a,#764ba21a);border-color:#667eea;transform:translateY(-2px)}.user-name{color:#2c3e50;font-size:14px;font-weight:600}.user-role{color:#999;font-size:11px;font-weight:500}.logout-btn{background-color:initial;border:1px solid #d0d0d0;border-radius:6px;color:#1a1a1a;cursor:pointer;font-size:12px;padding:6px 12px;transition:all .3s ease}.logout-btn:hover{background-color:#e8e8e8;border-color:#3a3a3a;color:#1a1a1a}@media (max-width:768px){.header-container{flex-wrap:wrap;padding:0 12px}.header-container,.header-nav{gap:12px;justify-content:center}.header-nav{margin-top:8px;order:3;width:100%}.header-nav a{font-size:12px}.header-user{order:2}}.sidebar-toggle{background:#3a3a3a;border:none;border-radius:4px;color:#f5f5f5;cursor:pointer;display:none;font-size:16px;left:10px;padding:8px 12px;position:fixed;top:70px;z-index:999}@media (max-width:768px){.sidebar-toggle{display:block}}.sidebar{background:#fff;border-right:1px solid #e0e0e0;height:calc(100vh - 110px);left:0;overflow-y:auto;padding:20px 0;position:fixed;top:60px;transition:width .3s ease;width:240px;z-index:100}.sidebar.closed{width:60px}.sidebar-nav{display:flex;flex-direction:column;gap:0}.nav-item{align-items:center;border-left:3px solid #0000;color:#2a2a2a;cursor:pointer;display:flex;gap:12px;padding:12px 16px;text-decoration:none;transition:background .2s,color .2s}.nav-item:hover{background:#f0f0f0}.nav-item.active{background:#e8e8e8;border-left-color:#3a3a3a;color:#1a1a1a;font-weight:600}.nav-icon{font-size:20px;min-width:24px;text-align:center}.nav-label{flex:1 1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar.closed .nav-label{display:none}.layout-main{margin-left:240px;min-height:calc(100vh - 110px);transition:margin-left .3s ease}.layout-main.sidebar-closed{margin-left:60px}@media (max-width:768px){.sidebar{position:absolute;top:100%;width:100%}.sidebar.closed{overflow:hidden;width:0}.layout-main{margin-left:0}}.footer{background-color:#f5f7fa;border-top:1px solid #ddd;margin-top:auto;padding:20px;text-align:center}.footer-container{margin:0 auto;max-width:1400px}.footer p{color:#666;font-size:12px;margin:4px 0}@media (max-width:768px){.footer{padding:12px}.footer p{font-size:11px}}.layout{display:flex;flex-direction:column;height:100vh;width:100%}.layout-main{flex:1 1;overflow-y:auto;padding:20px}@media (max-width:768px){.layout-main{padding:12px}}.login-form{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin:0 auto;max-width:400px;padding:32px 24px;width:100%}.login-header{margin-bottom:32px;text-align:center}.login-header h2{color:#1a1a1a;font-size:28px;font-weight:700;margin:0 0 8px}.login-header p{color:#404040;font-size:14px;margin:0}.error-message{align-items:center;animation:slideDown .3s ease;background-color:#f0f0f0;border:2px solid #505050;border-radius:6px;display:flex;font-size:14px;font-weight:600;gap:8px;margin-bottom:20px;padding:14px 16px}.error-message:before{content:"⚠️";font-size:16px}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.form-group label{font-weight:500}.input-wrapper{align-items:center;background:#fff;border:1px solid #d0d0d0;border-radius:6px;display:flex;overflow:hidden;transition:all .3s ease}.input-wrapper:focus-within{border-color:#3a3a3a;box-shadow:0 0 0 3px #3a3a3a1a}.input-wrapper input{background:#0000;border:none;flex:1 1;font-size:14px;outline:none;padding:12px}.input-wrapper input:disabled{background-color:#f0f0f0;color:#606060}.domain{border-left:1px solid #e0e0e0;color:#606060;font-size:14px;padding:10px 12px;white-space:nowrap}.password-wrapper{align-items:center;border:1px solid #d0d0d0;border-radius:6px;display:flex;overflow:hidden;position:relative;transition:all .3s ease}.password-wrapper:focus-within{border-color:#3a3a3a;box-shadow:0 0 0 3px #3a3a3a1a}.password-wrapper.error{background-color:#f0f0f0;border-color:#505050}.password-wrapper.error:focus-within{border-color:#505050;box-shadow:0 0 0 3px #5050501a}.password-wrapper input{background:#0000;border:none;flex:1 1;font-size:14px;outline:none;padding:10px 12px}.password-wrapper input:disabled{background-color:#f0f0f0;color:#606060}.toggle-password{background:#0000;border:none;border-left:1px solid #e0e0e0;color:#3a3a3a;cursor:pointer;font-size:12px;font-weight:500;padding:10px 12px;transition:color .3s ease;white-space:nowrap}.password-wrapper.error .toggle-password{border-left-color:#505050;color:#505050}.toggle-password:hover:not(:disabled){color:#1a1a1a}.toggle-password:disabled{color:#a0a0a0;cursor:not-allowed}.form-options{font-size:14px;justify-content:space-between;margin-bottom:24px}.checkbox,.form-options{align-items:center;display:flex}.checkbox{color:#1a1a1a;cursor:pointer;gap:8px}.checkbox input{cursor:pointer;height:16px;width:16px}.checkbox input:disabled{cursor:not-allowed;opacity:.5}.forgot-password{color:#3a3a3a;text-decoration:none;transition:color .3s ease}.forgot-password:hover{color:#1a1a1a;text-decoration:underline}.login-button{background-color:#3a3a3a;border:none;border-radius:6px;color:#f5f5f5;cursor:pointer;font-size:16px;font-weight:600;margin-bottom:16px;padding:12px 16px;transition:all .3s ease;width:100%}.login-button:hover:not(:disabled){background-color:#1a1a1a;box-shadow:0 4px 12px #1a1a1a4d;color:#fff}.login-button:active:not(:disabled){background-color:#0a0a0a}.login-button:disabled{background-color:silver;cursor:not-allowed;opacity:.8}.login-footer{color:#404040;font-size:14px;margin-top:16px;text-align:center}.login-footer a{color:#3a3a3a;font-weight:500;text-decoration:none;transition:color .3s ease}.login-footer a:hover{color:#1a1a1a;text-decoration:underline}@media (max-width:480px){.login-form{padding:24px 16px}.login-header h2{font-size:24px}.form-options{align-items:flex-start;flex-direction:column;gap:12px}.forgot-password{align-self:flex-start}}.login-page{align-items:center;background:#f5f5f5;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;justify-content:center;min-height:100vh;padding:20px}.login-container{max-width:500px;width:100%}.login-brand{color:#1a1a1a;margin-bottom:40px;text-align:center}.login-brand h1{font-size:48px;font-weight:700;letter-spacing:-1px;margin:0 0 8px}.login-brand p{font-size:16px;font-weight:300;margin:0;opacity:.8}.login-info{background-color:#f0f0f0;border:1px solid #d0d0d0;border-radius:8px;color:#2a2a2a;font-size:12px;margin-top:24px;padding:16px;text-align:center}.login-info p{font-weight:300;margin:4px 0}@media (max-width:480px){.login-page{padding:16px}.login-brand h1{font-size:36px}.login-brand p{font-size:14px}.login-info{font-size:11px;padding:12px}}.dashboard{padding:0;width:100%}.dashboard-header{margin-bottom:32px}.dashboard-header h1{color:#1a1a1a;font-size:32px;font-weight:700;margin:0 0 8px}.dashboard-header p{color:#404040;font-size:16px;margin:0}.dashboard-content{display:flex;flex-direction:column;gap:32px}.error{background-color:#f5f5f5;border:1px solid #d0d0d0;border-radius:8px;color:#1a1a1a;font-size:14px;padding:20px}.section-title{color:#1a1a1a;font-size:22px;font-weight:700;margin:0 0 20px}.dashboard-section{display:flex;flex-direction:column;gap:16px}.stat-card{box-shadow:0 2px 8px #0000001a;padding:24px}.stat-card h3{color:#1a1a1a;font-size:18px;font-weight:600;margin:0 0 24px}.stat-comparison{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 1fr}@media (max-width:768px){.stat-comparison{grid-template-columns:1fr}}.stat-box{background:#f8f8f8;border:2px solid #e0e0e0;border-radius:12px;padding:20px;transition:all .3s ease}.stat-box.normal{border-color:#e0e0e0}.stat-box.warning{background:#fffbf0;border-color:#f39c12}.stat-box.danger{background:#fff5f5;border-color:#e74c3c}.stat-box:hover{box-shadow:0 4px 12px #0000001a}.stat-box-label{color:#606060;font-size:12px;font-weight:600;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.stat-box-value{color:#1a1a1a;font-size:32px;font-weight:700;margin-bottom:16px}.stat-item{gap:12px;margin-bottom:0;padding-bottom:0}.stat-item:first-child{padding-top:16px}.stat-item+.stat-item{margin-top:12px}.stat-item .comparison-bars{display:flex;flex-direction:column;gap:12px}.stat-item .comparison-bar-wrapper{align-items:center;display:flex;flex:1 1;gap:8px;justify-content:flex-start}.stat-item-label{color:#606060;font-size:12px;font-weight:600;letter-spacing:.5px;margin-bottom:6px;text-transform:uppercase}.stat-item-value{color:#1a1a1a;font-size:24px;font-weight:700}.stat-section-title{border-bottom:2px solid #1a1a1a1a;color:#1a1a1a;font-size:18px;font-weight:700;margin:0 0 20px;padding-bottom:12px;text-align:left}.stat-graph-box{padding:20px}.weekly-comparison{gap:20px}.weekly-comparison,.weekly-row{display:flex;flex-direction:column}.weekly-row{gap:12px}.weekly-label{color:#1a1a1a;font-size:14px;font-weight:700;text-transform:uppercase}.weekly-graph-items{display:flex;flex-direction:column;gap:12px}.weekly-graph-item{display:flex;flex-direction:column;gap:6px}.weekly-divider{background-color:#1a1a1a1a;height:1px}.graph-bar-wrapper.small{height:18px}.comparison-graph,.stat-comparison-box{display:flex;flex-direction:column}.comparison-graph{gap:24px;margin-top:16px;position:relative}.comparison-item{display:flex;flex-direction:column;gap:12px}.comparison-labels{align-items:center;display:flex;justify-content:space-between;min-width:90px}.comparison-legend{display:flex;font-size:12px;font-weight:600;gap:20px}.legend-this{align-items:center;color:#404040;display:flex;gap:8px}.legend-this:before{background:linear-gradient(135deg,#3a3a3a,#606060);border-radius:3px;content:"";display:inline-block;flex-shrink:0;height:12px;width:12px}.legend-last{align-items:center;color:grey;display:flex;gap:8px}.legend-last:before{background:linear-gradient(135deg,silver,#e0e0e0);border-radius:3px;content:"";display:inline-block;flex-shrink:0;height:12px;width:12px}.comparison-bars{display:flex;flex-direction:column;gap:12px}.comparison-bar-group{align-items:center;display:flex;gap:12px;width:100%}.comparison-bar-group:before{color:#606060;content:attr(data-label);flex-shrink:0;font-size:11px;font-weight:600;text-transform:uppercase;width:60px}.comparison-bar-wrapper{align-items:stretch;display:flex;flex:1 1;flex-direction:column;gap:8px;min-width:0}.comparison-bar{align-items:center;border-radius:6px;box-shadow:0 2px 4px #0000001a;color:#fff;display:flex;font-size:11px;font-weight:700;height:28px;justify-content:flex-start;max-width:100%;min-width:40px;overflow:hidden;padding:0 10px;position:relative;transition:all .3s ease}.stat-comparison-box .comparison-bar{justify-content:flex-end}.stat-current-week .comparison-bar{justify-content:flex-start}.stat-current-week .comparison-bar-wrapper{align-items:stretch;display:flex;flex:1 1;flex-direction:column;gap:8px;min-width:0}.stat-current-month .comparison-bar{justify-content:flex-start}.stat-current-month .comparison-bar-wrapper{align-items:stretch;display:flex;flex:1 1;flex-direction:column;gap:8px;min-width:0}.comparison-bar:before{background:#ffffff1a;bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.comparison-bar:hover{box-shadow:0 4px 12px #0003;transform:translateY(-2px)}.comparison-bar:hover:before{opacity:1}.comparison-bar.this-week{background:linear-gradient(135deg,#3a3a3a,#606060);flex:0 0 auto}.comparison-bar.last-week{background:linear-gradient(135deg,silver,#e0e0e0);color:#404040;flex:0 0 auto}.comparison-bar .bar-value{font-weight:700;position:relative;white-space:nowrap;z-index:1}.stat-box.warning .comparison-bar.this-week{background:linear-gradient(135deg,#f39c12,#e8860e)}.stat-box.warning .comparison-bar.last-week{background:linear-gradient(135deg,#f5d547,#f0c94e);color:#704010}.stat-box.danger .comparison-bar.this-week{background:linear-gradient(135deg,#e74c3c,#d63031)}.stat-box.danger .comparison-bar.last-week{background:linear-gradient(135deg,#f5a5a5,#f08080);color:#8b3a3a}.comparison-legend-bottom{border-top:1px solid #1a1a1a1a;display:flex;font-size:11px;font-weight:600;gap:20px;justify-content:flex-end;margin-top:12px;padding-top:12px}.graph-label{color:#606060;font-size:14px;font-weight:600;letter-spacing:.5px;min-width:80px;text-transform:uppercase}.graph-bar-wrapper{background-color:#1a1a1a14;border-radius:6px;height:32px;overflow:hidden;width:100%}.graph-bar{align-items:center;background:linear-gradient(90deg,#3a3a3a,#606060);border-radius:6px;display:flex;height:100%;justify-content:flex-end;padding-right:8px;position:relative;transition:width .3s ease}.graph-bar .bar-value{color:#fff;font-size:12px;font-weight:700;position:relative;white-space:nowrap;z-index:1}.stat-box.warning .graph-bar{background:linear-gradient(90deg,#f39c12,#e8860e)}.stat-box.danger .graph-bar{background:linear-gradient(90deg,#e74c3c,#d63031)}.graph-value{color:#1a1a1a;font-size:14px;font-weight:700;text-align:right}.progress-bar{background-color:#e8e8e8;border-radius:4px;height:8px;margin-bottom:8px}.progress-fill{background-color:#3a3a3a;border-radius:4px}.stat-box.warning .progress-fill{background-color:#f39c12}.stat-box.danger .progress-fill{background-color:#e74c3c}.progress-text{color:#606060;font-size:12px;font-weight:500}.quick-links-section{display:flex;flex-direction:column;gap:16px}.quick-links{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.link-card{background:#fff;border:2px solid #0000;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:24px;transition:all .3s ease}.link-card:hover{border-color:#3a3a3a;box-shadow:0 8px 16px #00000026;transform:translateY(-4px)}.link-card h3{color:#1a1a1a;font-size:18px;font-weight:700;margin:0 0 8px}.link-card p{color:#606060;font-size:14px;line-height:1.5;margin:0 0 16px}.link-button{background-color:#3a3a3a;border:2px solid #3a3a3a;border-radius:6px;color:#f5f5f5;display:inline-block;font-size:14px;font-weight:600;padding:10px 20px;text-decoration:none;transition:all .3s ease}.link-button:hover{background-color:#1a1a1a;border-color:#1a1a1a;transform:translateX(4px)}@media (max-width:1024px){.dashboard-header h1{font-size:28px}.section-title{font-size:20px}}@media (max-width:768px){.dashboard{padding:0}.dashboard-header h1{font-size:24px}.section-title{font-size:18px}.stat-card{padding:16px}.stat-box-value{font-size:28px}.quick-links{grid-template-columns:1fr}}.project-list-section{border-top:1px solid #1a1a1a1a;margin-top:16px;padding-top:16px}.project-table{background:#fff;border-collapse:collapse;font-size:12px;width:100%}.project-table thead{background:#1a1a1a0d;border-bottom:2px solid #1a1a1a1a}.project-table th{color:#1a1a1a;font-size:10px;font-weight:700;letter-spacing:.5px;padding:10px 8px;text-align:center;text-transform:uppercase}.project-table tbody tr{border-bottom:1px solid #1a1a1a14;transition:background .2s ease}.project-table tbody tr:hover{background:#1a1a1a05}.project-table td{color:#1a1a1a;padding:10px 8px}.project-table .col-number{color:#606060;font-weight:700;text-align:center;width:50px}.project-table .col-name{flex:1 1;font-weight:500;padding-left:12px}.project-table .col-hours{color:#3a3a3a;font-weight:700;padding-right:12px;text-align:right;width:70px}.projects-page{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);min-height:calc(100vh - 160px);padding:32px}.projects-header{align-items:flex-start;margin-bottom:16px}.project-title-section,.projects-header{display:flex;justify-content:space-between}.project-title-section{align-items:center;flex:1 1;gap:16px}.projects-header h2{color:#2c3e50;font-size:28px;font-weight:700;margin:0}.btn-primary{box-shadow:0 4px 15px #3a3a3a4d}.btn-primary:hover{box-shadow:0 6px 20px #1a1a1a66}.form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.projects-list{grid-gap:20px;display:grid;gap:20px}.project-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:24px;transition:all .3s ease}.project-card:hover{box-shadow:0 8px 24px #00000026;transform:translateY(-4px)}.project-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:16px}.project-header h4{color:#1a1a1a;font-size:18px;font-weight:700;margin:0 0 4px}.project-code{background:#f0f0f0;border-radius:4px;color:#606060;padding:2px 8px}.category-badge,.project-code{display:inline-block;font-size:12px}.category-badge{border-radius:20px;color:#f5f5f5;font-weight:600;padding:6px 12px}.category-badge.rnd{background:#2a2a2a}.category-badge.si{background:#3a3a3a}.category-badge.int{background:#505050}.category-badge.etc{background:#404040}.stage-badge{border-radius:12px;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.stage-badge,.stage-badge.stage-검토{background:#e8e8e8;color:#1a1a1a}.stage-badge.stage-설계{background:#e0e0e0;color:#2a2a2a}.stage-badge.stage-진행{background:#d8d8d8;color:#1a1a1a}.stage-badge.stage-검증{background:#e8e8e8;color:#1a1a1a}.stage-badge.stage-완료{background:#d0d0d0;color:#1a1a1a}.project-description{color:#404040;font-size:14px;line-height:1.6;margin:0 0 16px}.project-info{grid-gap:12px;border-bottom:1px solid #e0e0e0;border-top:1px solid #e0e0e0;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:16px;padding:12px 0}.info-item{display:flex;flex-direction:column;font-size:13px}.info-item .label{color:#606060;font-weight:600;margin-bottom:2px}.info-item span:not(.label){color:#1a1a1a}.project-actions{gap:4px;margin-left:12px}.btn-icon,.project-actions{align-items:center;display:flex}.btn-icon{background:none;border:none;border-radius:6px;cursor:pointer;font-size:18px;height:32px;justify-content:center;padding:6px;transition:all .2s ease;width:32px}.btn-icon:hover{background:#0000000d;transform:scale(1.1)}.btn-icon:active{transform:scale(.95)}.btn-small{font-size:13px;padding:8px 16px}.btn-edit:hover{background:#d8d8d8}.btn-delete{background:#d0d0d0}.empty-state{background:#fff;border-radius:12px}@media (max-width:768px){.projects-page{padding:16px}.projects-header{align-items:flex-start;flex-direction:column;gap:16px}.form-card{padding:20px;width:95%}.form-row{grid-template-columns:1fr}.project-card{padding:16px}.project-header{flex-direction:column;gap:12px}.project-info{grid-template-columns:1fr}.project-actions{flex-direction:column}.btn-small{width:100%}}.users-page{background:#f8f8f8;min-height:calc(100vh - 160px);padding:32px}.users-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:32px}.users-header h2{color:#1a1a1a;font-size:28px;font-weight:700;margin:0}.form-container{z-index:1000}.form-group input,.form-group select{border:1px solid #d0d0d0;border-radius:8px;box-sizing:border-box;font-family:inherit;font-size:14px;padding:12px;transition:all .3s ease;width:100%}.form-group input:disabled{background:#f0f0f0;cursor:not-allowed}.form-group input:focus,.form-group select:focus{border-color:#3a3a3a;box-shadow:0 0 0 3px #3a3a3a1a;outline:none}.users-list{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.users-table{border-collapse:collapse;width:100%}.users-table thead{background:#e8e8e8}.users-table thead th{color:#1a1a1a;font-size:13px;font-weight:700;letter-spacing:.5px;padding:16px;text-align:left;text-transform:uppercase}.users-table tbody tr{border-bottom:1px solid #e0e0e0;transition:background .3s ease}.users-table tbody tr:hover{background:#f8f8f8}.users-table tbody tr.inactive-row{background:#f5f5f5;opacity:.7}.users-table tbody tr.inactive-row:hover{background:#efefef}.users-table tbody td{color:#2a2a2a;font-size:14px;padding:16px}.name-cell{align-items:center;color:#1a1a1a;display:flex;font-weight:600;gap:8px}.inactive-badge{background:#d0d0d0;border-radius:4px;color:#666;display:inline-block;font-size:11px;font-weight:600;padding:2px 8px}.email-cell{color:#3a3a3a;font-family:Courier New,monospace;font-size:13px}.role-badge{border-radius:20px;color:#fff;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.role-badge.superadmin{background:#2a2a2a}.role-badge.admin{background:#3a3a3a}.role-badge.user{background:#505050}.action-cell{display:flex;gap:8px}.btn-small{border:none;border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;padding:6px 12px;transition:all .3s ease;white-space:nowrap}.btn-edit{background:#e8e8e8;color:#1a1a1a}.btn-edit:hover{background:#d0d0d0;color:#000}.btn-delete{background:#d8d8d8;color:#1a1a1a}.btn-delete:hover{background:silver;color:#000}.loading{padding:60px 20px}@media (max-width:1024px){.users-table{font-size:13px}.users-table td,.users-table th{padding:12px}}@media (max-width:768px){.users-page{padding:16px}.users-header{align-items:flex-start;flex-direction:column;gap:16px}.form-card{padding:20px;width:95%}.users-list{overflow-x:auto}.users-table{min-width:600px}.action-cell{flex-direction:column}.btn-small{width:100%}}.work-management-page{background:#f8f8f8;min-height:calc(100vh - 160px);padding:32px}.work-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:32px}.work-header h2{color:#1a1a1a;font-size:28px;font-weight:700;margin:0}.btn-primary{background:#3a3a3a;border:none;border-radius:8px;box-shadow:0 2px 8px #3a3a3a33;color:#f5f5f5;cursor:pointer;font-size:14px;font-weight:600;padding:12px 24px;transition:all .3s ease}.btn-primary:hover{background:#1a1a1a;box-shadow:0 4px 12px #1a1a1a4d;color:#fff}.btn-primary:active{background:#0a0a0a}.stats-section{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:32px}.stat-card{background:#fff;border-radius:12px;box-shadow:0 2px 12px #0000001f;padding:32px;text-align:center;transition:transform .2s ease,box-shadow .2s ease}.stat-card:hover{box-shadow:0 4px 16px #00000029;transform:translateY(-4px)}.stat-card h1{color:#606060;font-size:36px;font-weight:600;letter-spacing:1px;margin:0 0 20px;text-align:left;text-transform:uppercase}.stat-value{color:#1a1a1a;font-size:24px;font-weight:700;line-height:1;margin:0;text-align:right}.stat-label{color:#606060;font-size:24px;font-weight:500;margin-bottom:0}.stat-detail-info{color:#606060;font-size:16px;line-height:1.8;margin-bottom:16px;text-align:right}.progress-bar{background:#e0e0e0;border-radius:6px;height:12px;margin:20px 0;overflow:hidden;width:100%}.progress-fill{background:#3a3a3a;border-radius:6px;height:100%;transition:width .3s ease,background-color .3s ease}.stat-warning{background:#f5f5f5;border-left:4px solid #505050;border-radius:8px;color:#1a1a1a;font-size:14px;font-weight:600;line-height:1.5;margin-top:20px;padding:16px;text-align:left}.stat-warning.danger{background:#fafafa;border-left-color:#2a2a2a;color:#1a1a1a}.form-container{align-items:center;animation:fadeIn .3s ease;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1500}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.form-card{animation:slideUp .3s ease;background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;max-height:90vh;max-width:500px;overflow-y:auto;padding:32px;width:90%}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.form-card h3{color:#1a1a1a;font-size:20px;font-weight:700;margin-bottom:24px}.form-group{margin-bottom:20px}.form-group label{color:#1a1a1a;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.form-group input,.form-group select,.form-group textarea{border:1px solid #d0d0d0;border-radius:8px;box-sizing:border-box;font-family:inherit;font-size:14px;padding:12px;transition:all .3s ease;width:100%}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#3a3a3a;box-shadow:0 0 0 3px #3a3a3a1a;outline:none}.hour-input-wrapper{display:block}.hour-bar{grid-gap:6px;display:grid;gap:6px;grid-template-columns:repeat(12,minmax(0,1fr))}.hour-button{background:#fff;border:1px solid #d0d0d0;border-radius:6px;color:#1a1a1a;cursor:pointer;font-size:13px;font-weight:600;padding:10px 0;transition:all .2s ease}.hour-button:hover{border-color:#3a3a3a;color:#1a1a1a}.hour-button.active{background:#3a3a3a;border-color:#3a3a3a;box-shadow:0 2px 6px #3a3a3a33;color:#fff}.checkbox-group label{align-items:center;cursor:pointer;display:flex;font-weight:400}.checkbox-group input[type=checkbox]{cursor:pointer;margin-right:12px;width:auto}.form-actions{display:flex;gap:12px;margin-top:28px}.btn-secondary{background:#e8e8e8;border:none;border-radius:8px;color:#1a1a1a;cursor:pointer;flex:1 1;font-size:14px;font-weight:600;padding:12px 24px;transition:all .3s ease}.btn-secondary:hover{background:#d8d8d8}.form-actions .btn-primary{flex:1 1;margin:0}.error-message{background:#f0f0f0;border-left:4px solid #505050;border-radius:8px;color:#1a1a1a;margin-bottom:24px;padding:16px}.work-list-section{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:24px}.work-list-section h3{color:#1a1a1a;font-size:18px;font-weight:700;margin-bottom:24px;margin-top:0}.work-table-container{border:1px solid #e0e0e0;border-radius:8px;margin-bottom:24px;overflow-x:auto}.work-table{background:#fff;border-collapse:collapse;font-size:14px;width:100%}.work-table thead{background:#3a3a3a;color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}.work-table th{border-bottom:2px solid #2a2a2a;font-size:13px;font-weight:600;padding:16px 12px;text-align:left;white-space:nowrap}.work-table tbody tr{border-bottom:1px solid #e8e8e8;transition:background-color .2s ease}.work-table tbody tr:hover{background-color:#f8f8f8}.work-table tbody tr:last-child{border-bottom:none}.work-table td{padding:14px 12px;vertical-align:middle}.work-date{color:#1a1a1a;font-weight:600;min-width:110px;white-space:nowrap}.work-user{color:#3a3a3a;font-weight:600;min-width:80px}.work-project{color:#1a1a1a;font-weight:500;max-width:200px;min-width:150px}.work-content{color:#404040;max-width:300px;min-width:200px}.content-text{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;line-height:1.5;max-height:4.5em;overflow:hidden;text-overflow:ellipsis;white-space:pre-wrap;word-break:break-word}.content-link{color:#3a3a3a;cursor:pointer;font-weight:600;text-decoration:underline;transition:all .2s ease}.content-link:hover{background-color:#3a3a3a1a;color:#1a1a1a;text-decoration:none}.content-link:visited{color:#606060}.work-hours{color:#3a3a3a;font-weight:700;min-width:70px;text-align:center;white-space:nowrap}.work-day-total,.work-month-total,.work-week-total{font-weight:600;min-width:70px;text-align:center;white-space:nowrap}.work-day-total{color:#606060}.work-week-total{color:#3a3a3a}.work-week-total.warning{color:#f39c12;font-weight:700}.work-week-total.over-limit{color:#e74c3c;font-weight:700}.work-month-total{color:grey}.work-approval{min-width:70px;text-align:center}.approval-badge{background:#3a3a3a;border-radius:4px;color:#fff;display:inline-block;font-size:12px;font-weight:700;padding:4px 8px}.approval-badge-no{color:#d0d0d0;font-size:14px}.work-actions{display:flex;gap:6px;justify-content:center;min-width:120px}.btn-table-delete,.btn-table-edit{border:none;border-radius:4px;cursor:pointer;font-size:12px;font-weight:600;padding:6px 12px;transition:all .2s ease;white-space:nowrap}.btn-table-edit{background:#e8e8e8;color:#1a1a1a}.btn-table-edit:hover{background:#3a3a3a;color:#fff}.btn-table-delete{background:#f0f0f0;color:#606060}.btn-table-delete:hover{background:#e74c3c;color:#fff}.work-card,.work-cards-container{display:none}.empty-state{padding:60px 20px}.empty-state,.loading{color:#606060;text-align:center}.loading{font-size:16px;padding:40px 20px}@media (max-width:768px){.work-management-page{padding:16px}.work-header{align-items:flex-start;flex-direction:column;gap:16px}.stats-section{grid-template-columns:1fr}.form-card{padding:20px;width:95%}.work-table-container{-webkit-overflow-scrolling:touch;overflow-x:auto}.work-table{font-size:12px;min-width:800px}.work-table td,.work-table th{padding:10px 8px}.work-table th{font-size:11px}.content-text{-webkit-line-clamp:1}.btn-table-delete,.btn-table-edit{font-size:11px;padding:5px 10px}}.pagination{align-items:center;background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;display:flex;gap:16px;justify-content:center;margin-top:24px;padding:16px}.pagination-btn{background:#3a3a3a;border:none;border-radius:6px;color:#f5f5f5;cursor:pointer;font-size:13px;font-weight:600;padding:8px 16px;transition:all .3s ease}.pagination-btn:hover:not(:disabled){background:#1a1a1a;transform:translateY(-2px)}.pagination-btn:disabled{background:#d0d0d0;cursor:not-allowed;opacity:.5}.pagination-info{color:#1a1a1a;font-size:13px;font-weight:600;min-width:180px;text-align:center}.work-date.clickable{cursor:pointer;transition:all .2s ease}.work-date.clickable:hover{background-color:#f0f0f0;color:#3a3a3a;text-decoration:underline}.work-modal-overlay{align-items:center;animation:workFadeIn .2s ease;background:#0009;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1500}@keyframes workFadeIn{0%{opacity:0}to{opacity:1}}.work-modal-content.detail-card{animation:workSlideUp .3s ease;background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-height:85vh;max-width:600px;overflow-y:auto;width:90%}@keyframes workSlideUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.work-modal-header{align-items:center;background:#3a3a3a;border-bottom:2px solid #e8e8e8;border-radius:16px 16px 0 0;display:flex;justify-content:space-between;padding:24px 28px}.work-modal-header h3{color:#fff;font-size:20px;font-weight:700;margin:0}.work-work-modal-close-btn{align-items:center;background:#0000;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;font-size:28px;height:32px;justify-content:center;padding:0;transition:all .2s ease;width:32px}.work-modal-close-btn:hover{background:#ffffff1a;transform:rotate(90deg)}.work-modal-body{padding:28px}.detail-card-section{margin-bottom:24px}.detail-card-section:last-child{margin-bottom:0}.detail-row{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:14px 0}.detail-row:last-child{border-bottom:none}.detail-label{color:#606060;font-size:14px;font-weight:600;min-width:100px}.detail-value{color:#1a1a1a;flex:1 1;font-size:15px;font-weight:500;text-align:right}.detail-value.date-value{color:#3a3a3a;font-weight:700}.detail-value.project-value{color:#1a1a1a;font-weight:600}.detail-value.hours-value{color:#3a3a3a;font-size:18px;font-weight:700}.approval-status{border-radius:6px;display:inline-block;font-size:13px;font-weight:600;padding:6px 12px}.approval-status.approved{background:#3a3a3a;color:#fff}.approval-status.not-approved{background:#f0f0f0;color:grey}.detail-content-label{color:#606060;font-size:14px;font-weight:600;margin-bottom:12px}.detail-content-box{background:#f8f8f8;border:1px solid #e0e0e0;border-radius:8px;color:#1a1a1a;font-size:14px;line-height:1.6;max-height:200px;min-height:100px;overflow-y:auto;padding:16px;white-space:pre-wrap;word-break:break-word}.detail-content-box .content-link{color:#3a3a3a;font-weight:600;text-decoration:underline;word-break:break-all}.detail-content-box .content-link:hover{background-color:#3a3a3a1a;color:#1a1a1a;text-decoration:none}.stats-section-modal{grid-gap:16px;background:#f8f8f8;border-radius:12px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);padding:20px}.stat-item-modal{align-items:center;display:flex;flex-direction:column;text-align:center}.stat-label-modal{color:#606060;font-size:12px;font-weight:600;margin-bottom:8px}.stat-value-modal{color:#3a3a3a;font-size:20px;font-weight:700}.work-modal-footer{background:#f8f8f8;border-radius:0 0 16px 16px;border-top:1px solid #e8e8e8;display:flex;gap:12px;padding:20px 28px}.btn-modal-close,.btn-modal-edit{border:none;border-radius:8px;cursor:pointer;flex:1 1;font-size:14px;font-weight:600;padding:12px 24px;transition:all .3s ease}.btn-modal-edit{background:#3a3a3a;color:#fff}.btn-modal-edit:hover{background:#1a1a1a;box-shadow:0 4px 12px #3a3a3a4d;transform:translateY(-2px)}.btn-modal-close{background:#e8e8e8;color:#1a1a1a}.btn-modal-close:hover{background:#d0d0d0}@media (max-width:768px){.work-modal-content.detail-card{max-height:90vh;width:95%}.work-modal-body,.work-modal-footer,.work-modal-header{padding:20px}.stats-section-modal{gap:12px;grid-template-columns:1fr}.detail-row{align-items:flex-start;flex-direction:column;gap:8px}.detail-value{text-align:left}}body{font-family:Pretendard,Noto Sans KR,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#root,.app-container{display:flex;flex-direction:column;min-height:100vh}.content-wrapper{flex:1 1;width:100%}main{flex:1 1;padding:20px 24px}@media (max-width:768px){main{padding:16px 12px}}@media (max-width:480px){main{padding:12px 8px}}*{box-sizing:border-box;margin:0;padding:0}#root,body,html{height:100%;width:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f7fa;color:#333;font-family:Noto Sans KR,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Noto Sans,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}button{border:none;cursor:pointer}button,input,select,textarea{font-family:inherit}a{color:#3a7afe;text-decoration:none}a:hover{text-decoration:underline}.container{margin:0 auto;max-width:1200px;padding:0 20px}
/*# sourceMappingURL=main.0b1e61ea.css.map*/