:root{--blue:#2563eb;--line:#dbe3ef;--muted:#64748b;--bg:#f5f7fb;--text:#172033}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:"Malgun Gothic","Noto Sans KR",sans-serif;font-size:14px}button,input,select{font:inherit}.app-header{height:58px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 22px;gap:28px;position:sticky;top:0;z-index:20}.brand{font-size:17px;font-weight:800;color:#0f2747;text-decoration:none;white-space:nowrap}.app-header nav{display:flex;height:100%;align-items:end}.app-header nav a{padding:18px 18px 15px;color:#526078;text-decoration:none;border-bottom:3px solid transparent}.app-header nav a.active{color:var(--blue);font-weight:700;border-color:var(--blue)}.user-menu{margin-left:auto;display:flex;gap:14px;align-items:center}.user-menu form{margin:0}.link-button{border:0;background:transparent;color:var(--muted);cursor:pointer}.page{max-width:1800px;margin:auto;padding:18px}.page-heading,.panel-title,.calendar-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.page-heading{margin-bottom:14px}.page-heading h1{font-size:24px;margin:0 0 4px}.page-heading p,.panel-title span{margin:0;color:var(--muted)}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:14px;box-shadow:0 3px 14px rgba(15,39,71,.035)}.panel h2{font-size:16px;margin:0 0 12px}.message{padding:10px 14px;border-radius:8px;background:#e8f0ff;color:#1d4ed8;margin-bottom:10px}.message.error{background:#fee2e2;color:#b91c1c}.message.success{background:#dcfce7;color:#166534}.section-tabs{display:flex;border-bottom:1px solid var(--line);margin:-4px -4px 12px}.section-tabs button{border:0;border-bottom:3px solid transparent;background:transparent;padding:10px 16px;color:var(--muted);cursor:pointer}.section-tabs button.active{color:var(--blue);border-color:var(--blue);font-weight:700}.section-tabs strong{background:#edf2fa;border-radius:12px;padding:2px 7px;margin-left:4px}.tab-panel{display:none}.tab-panel.active{display:block}.quick-add{display:flex;gap:8px;margin-bottom:10px}.quick-add input{max-width:380px}.primary{background:var(--blue)!important;color:#fff!important;border-color:var(--blue)!important;font-weight:700}button,.icon-button{border:1px solid #cfd8e6;border-radius:7px;background:#fff;color:#334155;padding:6px 10px;cursor:pointer;text-decoration:none;white-space:nowrap}button:hover,.icon-button:hover{background:#eff5ff;border-color:#93b4ef}button.danger{color:#dc2626}input,select{border:1px solid #cfdae9;border-radius:7px;background:#fff;min-height:34px;padding:5px 8px;color:#172033;width:100%}input:focus,select:focus{outline:2px solid #bfdbfe;border-color:#60a5fa}.save-state{color:#16803a;background:#e7f8ed;border-radius:16px;padding:6px 11px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:9px}table{width:100%;border-collapse:collapse;min-width:950px}th{background:#f0f4f9;color:#46536a;padding:8px;text-align:left;font-size:13px;position:sticky;top:0}td{padding:5px 7px;border-top:1px solid #e7edf5;vertical-align:middle}tbody tr:nth-child(even){background:#fafcff}.project-table td:nth-child(1){width:48px}.project-table td:nth-child(2){min-width:180px}.project-table td:nth-child(3){width:110px}.project-table td:nth-child(4){width:105px}.project-table td:nth-child(5){min-width:220px}.project-table td:nth-child(6){width:135px}.project-table td:nth-child(7){width:205px}.project-name{font-weight:600;color:#1758bf}.deadline{display:flex;gap:4px}.deadline select{width:66px}.deadline input{min-width:120px}.count{text-align:center;font-weight:700}.empty{text-align:center!important;color:#8a96aa;padding:35px!important}.actions{display:flex;gap:4px}.actions form{display:inline}.summary-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px}.summary-cards.three{grid-template-columns:repeat(3,1fr)}.summary-cards>div{background:#fff;border:1px solid var(--line);border-radius:11px;padding:12px 14px}.summary-cards span{display:block;color:var(--muted);font-size:13px}.summary-cards strong{display:block;font-size:24px;color:#1d4ed8;margin-top:4px}.summary-cards .green{background:#effcf3}.summary-cards .blue{background:#eff6ff}.summary-cards .yellow{background:#fff9df}.summary-cards .red{background:#fff0f0}.calendar-heading{margin-bottom:9px}.calendar-heading h2{margin:0}.calendar-heading>div{display:flex;align-items:center;gap:12px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekdays>div{text-align:center;background:#f0f4f9;padding:7px;border:1px solid var(--line);border-right:0}.calendar-weekdays>div:last-child{border-right:1px solid var(--line)}.sun{color:#ef4444}.sat{color:#2563eb}.month-grid{border-left:1px solid var(--line)}.calendar-cell{height:105px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px;color:inherit;text-decoration:none;overflow:hidden;position:relative}.calendar-cell.muted{background:#f8fafc;color:#a4afc0}.calendar-cell.today{background:#eff6ff;box-shadow:inset 0 0 0 2px #3b82f6}.day-number{display:block;text-align:right;font-size:12px}.calendar-events{margin-top:4px;display:flex;flex-direction:column;gap:2px}.calendar-events span{display:block;border-left:4px solid var(--event-color);background:color-mix(in srgb,var(--event-color) 18%,white);border-radius:3px;padding:2px 4px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#172033}.calendar-events small{color:var(--muted)}.badge{display:inline-block;padding:4px 8px;border-radius:12px;font-weight:700}.badge-작업-중{background:#dcfce7;color:#166534}.badge-진행-대기{background:#dbeafe;color:#1d4ed8}.badge-착수-예정{background:#fef3c7;color:#92400e}.badge-장기-대기{background:#fee2e2;color:#b91c1c}.auth-card{max-width:420px;margin:8vh auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:30px;box-shadow:0 10px 30px rgba(15,39,71,.08)}.auth-card h1{margin:0 0 6px}.auth-card p{color:var(--muted);margin:0 0 22px}.stack{display:flex;flex-direction:column;gap:14px}.stack label{font-weight:600}.stack input{margin-top:6px}.setup-link{display:block;text-align:center;color:var(--muted);margin-top:18px;font-size:12px}
@media(max-width:900px){.app-header{height:auto;min-height:58px;flex-wrap:wrap;padding:10px 14px;gap:5px 12px}.app-header nav{order:3;width:100%;overflow:auto}.app-header nav a{padding:10px 13px 8px}.user-menu span{display:none}.page{padding:10px}.page-heading{align-items:flex-start}.page-heading h1{font-size:20px}.summary-cards,.status-cards{grid-template-columns:repeat(2,1fr)}.summary-cards.three{grid-template-columns:repeat(3,1fr)}.calendar-cell{height:82px;padding:3px}.calendar-events span{font-size:9px}.quick-add input{max-width:none}.panel{padding:10px}.brand{font-size:15px}}
@media(max-width:560px){.page-heading p{font-size:12px}.summary-cards.three{grid-template-columns:repeat(3,1fr)}.summary-cards>div{padding:9px}.summary-cards strong{font-size:19px}.calendar-cell{height:70px}.calendar-events span:nth-child(n+2){display:none}.calendar-weekdays>div{padding:5px}.auth-card{margin:4vh 0;padding:22px}.section-tabs button{padding:9px 10px}.quick-add{flex-direction:column}}
.badge[data-status="작업 중"]{background:#dcfce7;color:#166534}.badge[data-status="진행 대기"]{background:#dbeafe;color:#1d4ed8}.badge[data-status="착수 예정"]{background:#fef3c7;color:#92400e}.badge[data-status="장기 대기"]{background:#fee2e2;color:#b91c1c}
