:root{font-family:Pretendard,system-ui,-apple-system,sans-serif;line-height:1.6;font-weight:400;color:#3d3d3d;background-color:#f5f0eb;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}a{font-weight:500;color:#7c6dca;text-decoration:none}a:hover{color:#5b4ba8}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}h1,h2,h3{color:#2d2d2d}button{border-radius:12px;border:1.5px solid #ddd;padding:.5em 1.1em;font-size:.88em;font-weight:500;font-family:inherit;background-color:#fff;color:#3d3d3d;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 3px #0000000f}button:hover{background-color:#f0ecff;border-color:#b8adea;transform:translateY(-1px);box-shadow:0 3px 8px #7c6dca26}button:active{transform:translateY(0)}button:focus,button:focus-visible{outline:3px solid rgba(124,109,202,.3);outline-offset:2px}input,select{font-family:inherit}.layout{display:flex;flex-direction:column;min-height:100vh;width:100%}.header{background:linear-gradient(135deg,#7c6dca,#a78bfa);padding:.85rem 1.5rem;box-shadow:0 2px 12px #7c6dca33}.header h1{margin:0;font-size:1.15rem;color:#fff;font-weight:600;letter-spacing:-.02em}.body{display:flex;flex:1}.sidebar{width:210px;background-color:#fff;padding:1rem .6rem;display:flex;flex-direction:column;gap:.3rem;border-right:1px solid #e8e4df;box-shadow:2px 0 8px #00000008}.sidebar a{display:block;padding:.65rem 1rem;color:#777;text-decoration:none;font-size:.88rem;border-radius:10px;transition:all .2s ease;font-weight:500}.sidebar a:hover{background-color:#f5f0ff;color:#5b4ba8}.sidebar a.active{background-color:#ede8ff;color:#5b4ba8;font-weight:600;box-shadow:0 2px 6px #7c6dca1a}.main{flex:1;padding:1.5rem 2rem;overflow-y:auto;background-color:#f5f0eb}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.2rem}.dashboard-header h2{margin:0}.btn-generate{background:linear-gradient(135deg,#7c6dca,#a78bfa);color:#fff;border:none;padding:.55rem 1.3rem;border-radius:12px;font-size:.88rem;font-weight:600;cursor:pointer;box-shadow:0 3px 10px #7c6dca40;transition:all .2s ease}.btn-generate:hover{transform:translateY(-1px);box-shadow:0 5px 15px #7c6dca59;background:linear-gradient(135deg,#6b5cb8,#9678f0)}.success{color:#5a9e6f;background:#edf7f0;padding:.6rem 1rem;border-radius:12px;margin-bottom:1rem;border:1px solid #c8e6cf;font-size:.85rem}.week-nav{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.week-nav button{padding:.35rem .8rem;font-size:.8rem}.week-label{margin-left:.5rem;color:#999;font-size:.85rem;font-weight:500}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:1.2rem}.day-column{background:#fff;min-height:200px;display:flex;flex-direction:column;border-radius:14px;overflow:hidden;border:1px solid #e8e4df;box-shadow:0 2px 8px #00000008;transition:box-shadow .2s}.day-column:hover{box-shadow:0 4px 14px #0000000f}.day-column.today{border-color:#b8adea;box-shadow:0 2px 12px #7c6dca1f}.day-header{padding:.55rem;text-align:center;background:#faf8f6;border-bottom:1px solid #eee;display:flex;flex-direction:column;gap:.05rem}.day-name{font-weight:700;font-size:.78rem;color:#888}.day-date{font-size:.72rem;color:#bbb}.today .day-header{background:#f0ecff}.today .day-name{color:#7c6dca}.day-body{flex:1;padding:.4rem;display:flex;flex-direction:column;gap:.4rem}.no-schedule{color:#ddd;text-align:center;padding:1rem;font-size:.8rem}.schedule-card{background:#faf8f6;border-left:3.5px solid #7c6dca;border-radius:10px;padding:.45rem .55rem;cursor:pointer;transition:all .2s ease;font-size:.75rem}.schedule-card:hover{background:#f0ecff;transform:translateY(-1px);box-shadow:0 3px 8px #0000000f}.card-time{color:#aaa;font-size:.68rem;font-weight:500}.card-title{font-weight:600;color:#3d3d3d;margin:.15rem 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-instructor{display:flex;align-items:center;gap:.3rem;color:#777}.card-meta{color:#bbb;font-size:.65rem;margin-top:.15rem}.color-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.legend{display:flex;flex-wrap:wrap;gap:.85rem;padding:.6rem .5rem;font-size:.8rem;color:#888;background:#fff;border-radius:12px;border:1px solid #e8e4df;box-shadow:0 1px 4px #00000008}.legend-item{display:flex;align-items:center;gap:.35rem;font-weight:500}.modal-backdrop{position:fixed;inset:0;background:#0000004d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border:1px solid #e8e4df;border-radius:18px;padding:1.5rem 1.75rem;min-width:340px;max-width:440px;box-shadow:0 12px 40px #0000001f}.modal h3{margin:0 0 1rem;color:#2d2d2d}.modal p{margin:.3rem 0;color:#666;font-size:.88rem}.modal .form-row{display:flex;align-items:center;gap:.75rem;margin:1rem 0}.modal .form-row label{width:50px;font-size:.82rem;color:#888;font-weight:500}.modal .form-row select{flex:1;padding:.45rem .6rem;background:#faf8f6;border:1.5px solid #e0dbd5;border-radius:10px;color:#3d3d3d;font-size:.85rem}.modal .form-row select:focus{border-color:#b8adea;outline:none;box-shadow:0 0 0 3px #7c6dca1f}.modal-actions{display:flex;gap:.5rem;margin-top:1.2rem}.modal-actions button{padding:.45rem .9rem;font-size:.85rem}.modal-actions .danger{color:#d4564e;border-color:#f5c4c0}.modal-actions .danger:hover{background:#fff0ef;border-color:#d4564e}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.2rem}.page-header h2{margin:0}.page h2{margin:0 0 1.2rem;font-size:1.35rem;font-weight:700;letter-spacing:-.02em}.error{color:#d4564e;background:#fff0ef;padding:.6rem 1rem;border-radius:12px;margin-bottom:1rem;border:1px solid #fdd;font-size:.85rem}.form{background:#fff;border:1px solid #e8e4df;border-radius:16px;padding:1.25rem 1.5rem;margin-bottom:1.5rem;box-shadow:0 2px 10px #0000000a}.form h3{margin:0 0 1rem;font-size:1rem;color:#555;font-weight:600}.form-row{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.75rem}.form-row>label{width:80px;padding-top:.45rem;font-size:.82rem;color:#888;flex-shrink:0;font-weight:500}.form-row input,.form-row select{flex:1;padding:.45rem .7rem;background:#faf8f6;border:1.5px solid #e0dbd5;border-radius:10px;color:#3d3d3d;font-size:.85rem;transition:border-color .2s,box-shadow .2s}.form-row input:focus,.form-row select:focus{border-color:#b8adea;outline:none;box-shadow:0 0 0 3px #7c6dca1f}.form-actions{display:flex;gap:.5rem;margin-top:1rem}.form-actions button{padding:.45rem 1.1rem;font-size:.85rem}.time-inputs{display:flex;align-items:center;gap:.5rem;flex:1}.time-inputs input{flex:1}.time-inputs span{color:#aaa;font-weight:500}.skill-editor{flex:1}.skill-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.5rem}.tag{display:inline-flex;align-items:center;gap:.3rem;background:#ede8ff;color:#5b4ba8;padding:.25rem .6rem;border-radius:20px;font-size:.78rem;font-weight:500}.tag button{background:none;border:none;color:#c0a0ff;cursor:pointer;padding:0 .2rem;font-size:.85rem;line-height:1;box-shadow:none;border-radius:50%}.tag button:hover{color:#d4564e;background:none;transform:none;box-shadow:none}.skill-input{display:flex;gap:.4rem}.skill-input input{flex:1;padding:.35rem .6rem;background:#faf8f6;border:1.5px solid #e0dbd5;border-radius:10px;color:#3d3d3d;font-size:.8rem}.skill-input select{padding:.35rem .5rem;background:#faf8f6;border:1.5px solid #e0dbd5;border-radius:10px;color:#3d3d3d;font-size:.8rem}.skill-input button{padding:.35rem .7rem;font-size:.8rem}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:.85rem;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 2px 10px #0000000a;border:1px solid #e8e4df}.table th,.table td{padding:.6rem .85rem;text-align:left}.table th{background:#faf8f6;color:#999;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;border-bottom:1.5px solid #e8e4df}.table td{border-bottom:1px solid #f0ece7}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover{background:#faf5ff}.table .empty{text-align:center;color:#bbb;padding:2.5rem}.table .actions{display:flex;gap:.35rem}.table .actions button{padding:.25rem .6rem;font-size:.75rem;border-radius:8px}.table .actions button.danger{color:#d4564e;border-color:#f5c4c0}.table .actions button.danger:hover{background:#fff0ef;border-color:#d4564e}
