:root{--accent: #2563eb;--bg-color: #f8fafc;--card-bg: #ffffff;--text-main: #333333;--text-sub: #94a3b8;--border-color: #e2e8f0;--today-bg: #eff6ff;--today-accent: #2563eb;--sun: #dc2626;--sat: #2563eb;--bg-vacation: #10b981;--text-vacation: #ffffff;--border-vacation: #059669;--bg-trip: #f59e0b;--text-trip: #1e293b;--border-trip: #d97706;--bg-etc: #8b5cf6;--text-etc: #ffffff;--border-etc: #7c3aed}*{box-sizing:border-box}body{background-color:var(--bg-color);color:var(--text-main);font-family:Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;margin:0;padding:0;min-height:100vh}.header{background:#fff;padding:.3rem 1.5rem;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 3px #0000000d}.header-left{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.home-btn{text-decoration:none;color:var(--text-sub);font-size:.85rem;padding:.375rem .75rem;border:1px solid var(--border-color);border-radius:.375rem;transition:all .2s ease;font-weight:500}.home-btn:hover{background:var(--bg-color);border-color:var(--accent);color:var(--accent)}.header-title{font-weight:600;font-size:.95rem;color:var(--text-main);letter-spacing:-.01em}.main-container{max-width:1200px;margin:0 auto;padding:2rem}.month-controller{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:2rem}.month-controller h3{margin:0;min-width:180px;text-align:center;font-size:1.5rem;font-weight:800;color:var(--text-main);letter-spacing:-.02em}.btn-move{background:#fff;border:1px solid var(--border-color);color:var(--text-sub);cursor:pointer;font-size:1.25rem;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.btn-move:hover{background:var(--bg-color);border-color:var(--accent);color:var(--accent);transform:scale(1.05)}.btn-today{background:#fff;color:var(--accent);border:1px solid var(--accent);padding:.5rem 1.25rem;border-radius:2rem;font-size:.9rem;font-weight:700;cursor:pointer;transition:all .2s ease}.btn-today:hover{background:var(--accent);color:#fff;box-shadow:0 4px 6px -1px #2563eb4d}.calendar-wrapper{background:var(--card-bg);border-radius:1rem;box-shadow:0 1px 3px #0000001a;border:1px solid var(--border-color);overflow:hidden}.grid-header{display:grid;grid-template-columns:repeat(7,1fr);background:var(--bg-color);border-bottom:2px solid var(--border-color)}.grid-header div{padding:1rem;text-align:center;font-weight:800;font-size:.875rem;color:var(--text-sub);letter-spacing:.05em}.grid-header div:first-child{color:var(--sun)}.grid-header div:last-child{color:var(--sat)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.day-cell{min-height:110px;border-right:1px solid var(--border-color);border-bottom:1px solid var(--border-color);padding:.5rem;position:relative;background:#fff;transition:background .2s ease}.day-cell:nth-child(7n){border-right:none}.day-cell:hover{background:#fafbfc}.day-cell.today{background:var(--today-bg)}.date-num{font-weight:700;font-size:.9rem;margin-bottom:.375rem;display:inline-block;width:28px;height:28px;text-align:center;line-height:28px;color:var(--text-main)}.day-cell.sunday .date-num{color:var(--sun)}.day-cell.saturday .date-num{color:var(--sat)}.today .date-num{background:var(--accent);color:#fff;border-radius:50%}.day-cell.sunday.today .date-num{background:var(--sun);color:#fff}.day-cell.saturday.today .date-num{background:var(--sat);color:#fff}.event-item{position:relative;padding:.375rem .625rem;margin-bottom:.25rem;border-radius:.5rem;font-size:.8rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:3px solid;background:#ffffffe6;box-shadow:0 1px 3px #0000001a;transition:all .2s ease;cursor:pointer}.event-item:hover{transform:translateY(-2px);box-shadow:0 4px 6px -1px #00000026}.event-item.휴가{border-left-color:var(--border-vacation);background:#10b9811a}.event-item.출장{border-left-color:var(--border-trip);background:#f59e0b1a}.event-item.기타{border-left-color:var(--border-etc);background:#8b5cf61a}.btn-del-mini{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);display:none;cursor:pointer;font-size:1.1rem;color:#ef4444;opacity:.8;transition:opacity .2s}.btn-del-mini:hover{opacity:1}.event-item:hover .btn-del-mini{display:block}.btn-add-inline{position:absolute;right:.5rem;top:.5rem;opacity:0;cursor:pointer;font-size:1.25rem;color:var(--accent);transition:all .2s;font-weight:700;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-color)}.day-cell:hover .btn-add-inline{opacity:1}.btn-add-inline:hover{background:var(--accent);color:#fff;transform:scale(1.1)}#modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;padding:2rem;border-radius:1rem;width:90%;max-width:400px;box-shadow:0 25px 50px -12px #00000040;border:1px solid var(--border-color)}.modal-content h3{margin:0 0 1.5rem;color:var(--accent);font-size:1.25rem;font-weight:700}.modal-content select,.modal-content input{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:.5rem;margin-bottom:1rem;font-size:.95rem;font-family:inherit;transition:border-color .2s}.modal-content select:focus,.modal-content input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2563eb1a}.modal-buttons{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem}.modal-buttons button{padding:.625rem 1.25rem;border:none;border-radius:.5rem;cursor:pointer;font-weight:600;font-size:.9rem;transition:all .2s ease}#btnCancel{background:#f1f5f9;color:var(--text-sub)}#btnCancel:hover{background:#e2e8f0}#btnSave{background:var(--accent);color:#fff}#btnSave:hover{background:#1d4ed8;box-shadow:0 4px 6px -1px #2563eb4d}.todo-btn{background:#fff;-moz-appearance:none;appearance:none;-webkit-appearance:none;text-decoration:none;color:var(--text-sub);font-size:.85rem;padding:.375rem .75rem;border:1px solid var(--border-color);border-radius:.375rem;transition:all .2s ease;font-weight:500}.todo-btn:hover{background:var(--bg-color);border-color:var(--accent);color:var(--accent)}#todoPanel{position:fixed;inset-block:0;inset-inline-end:-340px;width:340px;background:var(--card-bg);border-inline-start:1px solid var(--border-color);box-shadow:-6px 0 20px #00000014;transition:inset-inline-end .28s cubic-bezier(.32,.72,.1,.98);z-index:2000;display:flex;flex-direction:column}#todoPanel.open{inset-inline-end:0}.todo-header{padding:1.125rem 1.25rem;border-block-end:1px solid var(--border-color);background:var(--bg-color);display:flex;align-items:center;justify-content:space-between}.todo-header h3{margin:0;font-size:1.18rem;font-weight:700;color:var(--text-main);letter-spacing:-.02em}.todo-header button#todoClose{background:none;border:none;width:28px;height:28px;border-radius:50%;font-size:1.4rem;color:var(--text-sub);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .18s ease}.todo-header button#todoClose:hover{color:var(--accent);background:#2563eb17}.todo-body{flex:1;overflow-y:auto;padding:1.25rem 1rem;background:var(--card-bg)}.todo-body::-webkit-scrollbar{width:5px}.todo-body::-webkit-scrollbar-track{background:transparent}.todo-body::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px}.todo-body::-webkit-scrollbar-thumb:hover{background:#94a3b8}#todoList{list-style:none;padding:0;margin:0}.todo-item{position:relative;display:flex;align-items:center;gap:.625rem;padding:.5rem .75rem;margin-bottom:.375rem;border-radius:.5rem;border-left:3px solid;background:#ffffffe6;box-shadow:0 1px 3px #0000001a;transition:all .2s ease;cursor:pointer;list-style:none}.todo-item:nth-child(8n+1){border-left-color:#059669;background:#10b9811a}.todo-item:nth-child(8n+2){border-left-color:#d97706;background:#f59e0b1a}.todo-item:nth-child(8n+3){border-left-color:#7c3aed;background:#8b5cf61a}.todo-item:nth-child(8n+4){border-left-color:#dc2626;background:#ef44441a}.todo-item:nth-child(8n+5){border-left-color:#0891b2;background:#06b6d41a}.todo-item:nth-child(8n+6){border-left-color:#db2777;background:#ec48991a}.todo-item:nth-child(8n+7){border-left-color:#ea580c;background:#f973161a}.todo-item:nth-child(8n){border-left-color:#2563eb;background:#2563eb1a}.todo-item:hover{transform:translateY(-2px);box-shadow:0 4px 6px -1px #00000026}.todo-item input[type=checkbox]{accent-color:var(--accent);width:1rem;height:1rem;margin:0;flex-shrink:0;cursor:pointer}.todo-item .todo-text{flex:1;font-size:.875rem;color:var(--text-main);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-item.done .todo-text{text-decoration:line-through;color:var(--text-sub);opacity:.7}.todo-item .todo-delete{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);display:none;cursor:pointer;font-size:1.1rem;color:#ef4444;opacity:.8;transition:opacity .2s;background:none;border:none;padding:0;line-height:1;-webkit-user-select:none;user-select:none}.todo-item .todo-delete:hover{opacity:1}.todo-item:hover .todo-delete{display:block}.todo-footer{padding:1rem 1.25rem;border-block-start:1px solid var(--border-color);background:var(--bg-color);display:flex;gap:.625rem}.todo-footer input{flex:1;padding:.7rem 1rem;border:1px solid var(--border-color);border-radius:.625rem;font-size:.93rem;transition:all .2s}.todo-footer input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2563eb1c}.todo-footer button{background:var(--accent);color:#fff;border:none;border-radius:.625rem;padding:0 1.25rem;font-weight:600;cursor:pointer;transition:all .2s}.todo-footer button:hover{background:#1d4ed8}.todo-wrapper{position:relative;display:inline-block}.tooltip-text{visibility:hidden;width:60px;background-color:#333;color:#fff;text-align:center;border-radius:6px;padding:5px 0;font-size:.75rem;font-weight:500;position:absolute;z-index:101;top:125%;left:50%;transform:translate(-50%);opacity:0;transition:opacity .2s}.todo-wrapper:hover .tooltip-text{visibility:visible;opacity:1}.tooltip-text:after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent #333 transparent}@media (max-width: 768px){.header{padding:.5rem 1rem}.header-title{font-size:.85rem}.main-container{padding:1rem}}
