*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5;color:#333;background:#f5f5f5}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0 0 .5rem;font-weight:600;line-height:1.3;color:#222}p{margin:0 0 1rem}a{color:#0d6efd;text-decoration:none}a:hover{text-decoration:underline}.layout{display:flex;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.sidebar{width:200px;background:#1a1a2e;color:#eee;display:flex;flex-direction:column;padding:1rem 0;flex-shrink:0}.sidebar-logo{font-size:1.1rem;font-weight:700;padding:.75rem 1.25rem 1.5rem;color:#fff;border-bottom:1px solid #2d2d4e}.nav-link{display:block;padding:.65rem 1.25rem;color:#aaa;text-decoration:none;font-size:.9rem;transition:background .15s,color .15s;border:none;background:none;cursor:pointer;text-align:left;width:100%}.nav-link:hover{background:#16213e;color:#fff}.nav-link.active{background:#0f3460;color:#e94560;font-weight:600}.logout-btn{margin-top:auto}.content{flex:1;padding:2rem;background:#f5f5f5;overflow-y:auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.page-header h1{font-size:1.4rem;margin:0}button.btn{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500}.btn-primary{background:#0f3460;color:#fff}.btn-primary:hover{background:#0a2744}.btn-success{background:#28a745;color:#fff}.btn-success:hover{background:#218838}.btn-danger{background:#dc3545;color:#fff}.btn-danger:hover{background:#c82333}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#5a6268}.btn-sm{padding:.25rem .6rem;font-size:.8rem}table{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 1px 3px #00000014}th,td{padding:.65rem .85rem;text-align:left;border-bottom:1px solid #f0f0f0;font-size:.875rem}th{background:#f8f9fa;font-weight:600;color:#444;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:none}tr:hover td{background:#fafafa}.card{background:#fff;border-radius:6px;padding:1.25rem;box-shadow:0 1px 3px #00000014;margin-bottom:1.5rem}.card h2{font-size:1rem;margin:0 0 1rem;color:#333}.badge{display:inline-block;padding:.2rem .5rem;border-radius:3px;font-size:.75rem;font-weight:600}.badge-green{background:#d4edda;color:#155724}.badge-gray{background:#e2e3e5;color:#383d41}.badge-blue{background:#cce5ff;color:#004085}.error-msg{padding:.75rem;background:#f8d7da;color:#721c24;border-radius:4px;margin-bottom:1rem;font-size:.875rem}.success-msg{padding:.75rem;background:#d4edda;color:#155724;border-radius:4px;margin-bottom:1rem;font-size:.875rem}.form-row{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:1rem}.form-group{display:flex;flex-direction:column;gap:.3rem}.form-group label{font-size:.8rem;color:#666;font-weight:500}.form-group input,.form-group select,.form-group textarea{padding:.4rem .6rem;border:1px solid #ccc;border-radius:4px;font-size:.875rem;min-width:140px}.section-title{font-size:.9rem;font-weight:600;color:#555;margin:1.5rem 0 .75rem;padding-bottom:.4rem;border-bottom:2px solid #e9ecef}.actions{display:flex;gap:.4rem}.cal-page{padding:1.5rem;font-family:inherit}.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;flex-wrap:wrap;gap:.5rem}.cal-header h2{margin:0;font-size:1.25rem}.cal-nav{display:flex;align-items:center;gap:.75rem}.cal-nav button{background:#e5e7eb;border:none;border-radius:4px;padding:.25rem .75rem;font-size:1.25rem;cursor:pointer;line-height:1}.cal-nav button:hover{background:#d1d5db}.cal-week-label{font-weight:500;white-space:nowrap}.cal-error{color:#dc2626;margin-bottom:.5rem}.cal-loading{color:#6b7280;margin-bottom:.5rem}.cal-grid-wrap{display:flex;overflow-x:auto;border:1px solid #e5e7eb;border-radius:6px;background:#fff}.cal-time-col{width:52px;flex-shrink:0;border-right:1px solid #e5e7eb}.cal-day-col{flex:1;min-width:120px;border-right:1px solid #e5e7eb;position:relative}.cal-day-col:last-child{border-right:none}.cal-today>.cal-day-header{background:#eff6ff}.cal-day-header{height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-bottom:1px solid #e5e7eb;padding:.25rem}.cal-day-name{font-size:.7rem;color:#6b7280;text-transform:uppercase}.cal-day-date{font-size:1rem;font-weight:600}.cal-day-body,.cal-time-rows{position:relative;overflow:hidden}.cal-hour-line{position:absolute;left:0;right:0;height:1px;background:#f3f4f6;pointer-events:none}.cal-hour-label{position:absolute;left:0;right:0;font-size:.65rem;color:#9ca3af;text-align:center;transform:translateY(-50%);pointer-events:none}.cal-block{position:absolute;left:3px;right:3px;border-radius:4px;padding:2px 4px;cursor:pointer;overflow:hidden;color:#fff;font-size:.7rem;display:flex;flex-direction:column;transition:opacity .15s;box-shadow:0 1px 3px #00000026;z-index:1}.cal-block:hover{opacity:.85}.cal-block-time{font-weight:600;line-height:1.2}.cal-block-label{opacity:.9;line-height:1.2}.cal-detail{margin-top:1rem;border:1px solid #e5e7eb;border-radius:6px;padding:1rem;background:#fff;max-width:360px}.cal-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.cal-detail-header button{background:none;border:none;cursor:pointer;font-size:1rem;color:#6b7280}.cal-detail-table{border-collapse:collapse;width:100%;font-size:.875rem}.cal-detail-table td{padding:.25rem .5rem}.cal-detail-table td:first-child{color:#6b7280;white-space:nowrap}.cal-delete-btn{margin-top:.75rem;background:#dc2626;color:#fff;border:none;border-radius:4px;padding:.375rem .75rem;cursor:pointer;font-size:.875rem}.cal-delete-btn:hover{background:#b91c1c}.cal-legend{display:flex;gap:1.5rem;margin-top:.75rem;font-size:.8rem;color:#374151}.cal-legend-item{display:flex;align-items:center;gap:.375rem}.cal-legend-dot{width:12px;height:12px;border-radius:2px;flex-shrink:0}
