:root{--bg: #f8f9fc;--panel: #ffffff;--muted: #6b7280;--ink: #111827;--accent: #6366f1;--accent-hover: #4f46e5;--danger: #ef4444;--success: #10b981;--ring: 0 0 0 3px rgba(99, 102, 241, .1);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:linear-gradient(135deg,#f8f9fc,#e8eaf6);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{display:flex;flex-direction:column;height:100%}.app header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(99,102,241,.1);position:sticky;top:0;z-index:50;flex-wrap:wrap;gap:12px;box-shadow:var(--shadow-sm)}.header-left{display:flex;align-items:center;gap:12px}.app header h1{font-size:20px;margin:0;font-weight:700;background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.week-badge{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;padding:8px 16px;border-radius:12px;font-size:13px;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 12px #6366f14d}.week-badge:hover{transform:translateY(-2px);box-shadow:0 6px 16px #6366f166}.header-actions{display:flex;gap:8px;flex-wrap:wrap}button{border:0;border-radius:12px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-hover) 100%);color:#fff;padding:10px 16px;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #6366f14d;font-size:14px}button:disabled{opacity:.5;cursor:not-allowed;transform:none!important}button:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 4px 12px #6366f166}button.secondary{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);color:#374151;box-shadow:0 2px 4px #0000000d}button.secondary:not(:disabled):hover{box-shadow:0 4px 8px #0000001a}button.ghost{background:transparent;color:var(--accent);border:2px solid rgba(99,102,241,.2);box-shadow:none}button.ghost:not(:disabled):hover{background:#6366f10d;border-color:var(--accent);box-shadow:0 2px 8px #6366f126}button.danger{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 2px 8px #ef44444d}button.danger:not(:disabled):hover{box-shadow:0 4px 12px #ef444466}main{display:grid;grid-template-columns:260px 1fr;gap:12px;padding:12px;max-width:1600px;margin:0 auto;width:100%}@media (max-width: 900px){main{grid-template-columns:1fr}}.panel{background:var(--panel);border:1px solid rgba(99,102,241,.1);border-radius:20px;box-shadow:var(--shadow-md);overflow:hidden}.sidebar{padding:20px;background:linear-gradient(180deg,#fff,#fafbff)}.sidebar h3{margin:0 0 12px;font-size:15px;font-weight:700;color:var(--ink)}.sidebar .event{display:flex;align-items:center;gap:10px;padding:12px;border:2px solid transparent;border-radius:12px;margin-bottom:8px;background:#fff;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 3px #0000000d}.sidebar .event:hover{background:#f8f9ff;border-color:#6366f14d;transform:translate(4px);box-shadow:0 4px 8px #6366f11a}.swatch{width:20px;height:20px;border-radius:6px;border:2px solid rgba(0,0,0,.1);box-shadow:0 2px 4px #0000001a}.grid{overflow:auto}.grid .header{display:grid;grid-template-columns:110px repeat(6,1fr);gap:8px;padding:16px;border-bottom:2px solid rgba(99,102,241,.1);background:linear-gradient(180deg,#fafbff,#f8f9fc)}.grid .header .hcell{font-weight:700;font-size:14px;color:var(--accent);display:flex;align-items:center;justify-content:center;text-align:center}.body{display:grid;grid-template-columns:110px repeat(6,1fr);grid-auto-rows:minmax(72px,auto);gap:8px;padding:10px}.time-cell{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--accent);background:linear-gradient(135deg,#f8f9ff,#f0f1ff);border-radius:12px;border:2px solid rgba(99,102,241,.1)}.cell{position:relative;background:#fafbff;border:2px dashed rgba(99,102,241,.15);border-radius:12px;padding:8px;cursor:pointer;display:flex;flex-direction:column;gap:6px;transition:all .3s cubic-bezier(.4,0,.2,1)}.cell:hover{background:#f8f9ff;border-color:#6366f14d}.cell.highlight{outline:var(--ring);background:#f0f1ff;border-color:var(--accent)}.time-col,.day-col{display:contents}.event-card{position:relative;width:100%;padding:12px;border-radius:14px;background:#fff;border:2px solid rgba(99,102,241,.15);box-shadow:0 2px 8px #0000000f;font-size:12px;line-height:1.4;cursor:grab;transition:all .3s cubic-bezier(.4,0,.2,1)}.event-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:#6366f14d}.event-card .title{font-weight:800}.event-card .row{display:flex;gap:8px;align-items:center;margin-top:6px;color:#334155}.event-card .badge{font-size:11px;font-weight:600;border-radius:6px;padding:3px 8px;background:#6366f11a;color:var(--accent)}.event-card .notes{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.footer{padding:10px;color:var(--muted);text-align:center}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182780;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px;z-index:100;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:#fff;border-radius:20px;max-width:440px;width:100%;padding:24px;border:1px solid rgba(99,102,241,.1);max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:slideUp .3s cubic-bezier(.4,0,.2,1)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.week-modal{max-width:600px}.modal h3{margin:0 0 16px;font-size:20px;font-weight:700;background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.form{display:grid;gap:10px}.form label{font-size:12px;color:#475569}.form input,.form select,.form textarea{width:100%;border:2px solid rgba(99,102,241,.2);border-radius:12px;padding:12px;background:#fff;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:14px}.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #6366f11a}.form .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form .color-input{width:100%;height:40px;padding:4px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box}.form .color-input::-webkit-color-swatch-wrapper{padding:6px}.form .color-input::-webkit-color-swatch{border:none;border-radius:6px}.form .color-input::-moz-color-swatch{border:none;border-radius:6px}.week-actions{margin-bottom:16px}.save-week-form{display:flex;flex-direction:column;gap:10px}.date-label{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:-4px}.date-input{width:100%;padding:12px;border:2px solid rgba(99,102,241,.2);border-radius:12px;font-size:14px;font-weight:500;color:var(--ink);transition:all .3s cubic-bezier(.4,0,.2,1)}.date-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #6366f11a}.week-preview{padding:12px;background:linear-gradient(135deg,#f0f1ff,#e8eaff);border:2px solid rgba(99,102,241,.2);border-radius:12px;font-size:14px;color:var(--accent);text-align:center}.week-preview strong{color:var(--ink);font-weight:700}.form-buttons{display:flex;gap:8px}.btn-save-week{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-weight:600;padding:12px 20px;border-radius:10px;border:none;cursor:pointer;transition:all .2s;box-shadow:0 2px 8px #667eea4d}.btn-save-week:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.btn-primary{background:linear-gradient(135deg,#10b981,#059669);color:#fff;font-weight:600;padding:10px 18px;border-radius:8px;border:none;cursor:pointer;transition:all .2s;box-shadow:0 2px 6px #10b9814d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 3px 8px #10b98166}.btn-cancel{background:#f3f4f6;color:#374151;font-weight:600;padding:10px 18px;border-radius:8px;border:1px solid #e5e7eb;cursor:pointer;transition:all .2s}.btn-cancel:hover{background:#e5e7eb}.btn-delete-week{background:#fee2e2;color:#dc2626;font-weight:600;padding:6px 12px;border-radius:8px;border:1px solid #fecaca;cursor:pointer;transition:all .2s;font-size:14px}.btn-delete-week:hover{background:#fecaca;border-color:#fca5a5}.btn-close{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;font-weight:600;padding:10px 24px;border-radius:8px;border:none;cursor:pointer;transition:all .2s;box-shadow:0 2px 6px #6366f14d}.btn-close:hover{transform:translateY(-1px);box-shadow:0 3px 8px #6366f166}.modal-footer{display:flex;justify-content:flex-end;margin-top:16px;padding-top:12px;border-top:1px solid #e5e7eb}.weeks-list{max-height:400px;overflow-y:auto}.weeks-list h4{margin:0 0 12px;font-size:14px;color:var(--muted)}.week-item{display:flex;align-items:center;justify-content:space-between;padding:12px;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:8px;cursor:pointer;transition:all .2s}.week-item:hover{background:#f9fafb;border-color:var(--accent)}.week-item.active{background:#eff6ff;border-color:var(--accent)}.week-info{display:flex;flex-direction:column;gap:4px;flex:1}.week-info strong{font-size:14px;color:var(--ink)}.week-info small{font-size:12px;color:var(--muted)}.event-count{color:var(--accent)!important;font-weight:600}.week-actions-buttons{display:flex;align-items:center;gap:8px}.badge-active{background:#10b981;color:#fff;padding:4px 8px;border-radius:6px;font-size:11px;font-weight:600}button.small{padding:6px 10px;font-size:14px}.empty-state{padding:32px;text-align:center;color:var(--muted);background:#f9fafb;border-radius:10px;border:1px dashed #e5e7eb}.empty-state p{margin:0;line-height:1.6}
