:root{--bg-color:#f1f5f9;--surface-color:#fff;--text-primary:#0f172a;--text-secondary:#64748b;--border-color:#cbd5e1;--border-light:#e2e8f0;--accent-color:#2563eb;--accent-hover:#1d4ed8;--accent-light:#eff6ff;--success-color:#059669;--danger-color:#dc2626;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}body{background-color:var(--bg-color);color:var(--text-primary);-webkit-text-size-adjust:100%;height:100vh;margin:0;padding:0;overflow:hidden}*{box-sizing:border-box}textarea,input,button{appearance:none;border-radius:0;margin:0}.app-container{flex-direction:column;height:100vh;display:flex}.header{background:var(--surface-color);border-bottom:1px solid var(--border-color);flex-direction:column;flex-shrink:0;gap:.5rem;padding:.5rem 1rem;display:flex}.header-title{flex-direction:column;display:flex}.header h1{color:var(--text-primary);margin:0;font-size:1.1rem;font-weight:700}.header p{display:none}@media (width>=768px){.header{flex-direction:row;justify-content:space-between;align-items:center;padding:.75rem 1.5rem}.header h1{font-size:1.5rem}.header p{color:var(--text-secondary);margin:0;font-size:.875rem;display:block}}.header-actions{align-items:center;gap:.5rem;width:100%;display:flex}@media (width>=768px){.header-actions{justify-content:flex-end;width:auto}}.icon-btn{border:1px solid var(--border-color);background:var(--surface-color);width:36px;height:36px;color:var(--text-primary);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:16px;font-weight:600;transition:all .2s;display:flex}.icon-btn .icon{font-size:1rem;line-height:1}.icon-btn .btn-text{display:none}.icon-btn.active{background:var(--accent-color);border-color:var(--accent-color);box-shadow:0 0 0 2px #2563eb40}.icon-btn:active{transform:scale(.92)}@media (width>=768px){.icon-btn{border-radius:9999px;width:auto;height:auto;padding:.5rem 1rem;font-size:.875rem}.icon-btn .icon{display:none}.icon-btn .btn-text{display:inline}.icon-btn.active{background:var(--text-primary);color:var(--surface-color);border-color:var(--text-primary);box-shadow:none}}.global-filter-input{border:1px solid var(--border-color);background:#f1f5f9;border-radius:9999px;outline:none;flex:1;width:100%;min-width:60px;padding:.5rem .75rem;font-family:inherit;font-size:16px}@media (width>=768px){.global-filter-input{max-width:250px;font-size:.875rem}}.status-message{text-align:center;color:var(--text-secondary);padding:4rem 2rem;font-size:1.1rem}.status-message.error{color:var(--danger-color)}.table-wrapper{-webkit-overflow-scrolling:touch;background:var(--surface-color);flex:1;position:relative;overflow:auto}table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:900px}th,td{border-bottom:1px solid var(--border-light);border-right:1px solid var(--border-light);vertical-align:top;padding:0}th{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;z-index:20;box-shadow:0 1px 0 var(--border-color);text-align:center;background:#f8fafc;padding:.375rem .5rem;font-size:.65rem;font-weight:800;position:sticky;top:0}.sticky-col{z-index:10;width:75px;min-width:75px;box-shadow:1px 0 0 var(--border-color);background:#f8fafc;position:sticky;left:0}th.sticky-col{z-index:30}td.sticky-col{color:var(--text-primary);background:#f1f5f9;font-weight:600}tr:hover td:not(.sticky-col){background:var(--accent-light)}tr.row-weekend td:not(.sticky-col){background-color:#f0f9ff!important}tr.row-today td.date-cell.is-today{color:#1e3a8a;box-shadow:inset 4px 0 0 #2563eb, 1px 0 0 var(--border-color);background-color:#bfdbfe!important}tr.row-today td:not(.sticky-col){background-color:#eff6ff!important}td.cell-holiday,tr.row-weekend td.cell-holiday,tr.row-today td.cell-holiday{background-color:#fef08a!important}td.cell-exam,tr.row-weekend td.cell-exam,tr.row-today td.cell-exam{background-color:#fed7aa!important}td.date-cell{color:var(--text-secondary);white-space:nowrap;vertical-align:middle;text-align:center;padding:.25rem;font-size:.7rem;font-weight:600}td .cell-container{width:100%;height:100%;min-height:28px;display:flex}td .cell-display{white-space:pre-wrap;word-wrap:break-word;cursor:text;width:100%;min-height:28px;color:var(--text-primary);border:2px solid #0000;margin:-1px;padding:.25rem .375rem;font-family:inherit;font-size:.8125rem;line-height:1.3}td .cell-input{width:100%;min-height:28px;color:var(--text-primary);resize:none;background:0 0;border:2px solid #0000;outline:none;margin:-1px;padding:.25rem .375rem;font-family:inherit;font-size:.8125rem;line-height:1.3;overflow:hidden}.cell-display:hover{background:#00000005}.cell-link{color:var(--accent-color);cursor:pointer;text-decoration:underline}.cell-link:hover{color:var(--accent-hover)}.cell-input:focus{border-color:var(--accent-color);z-index:10;box-shadow:0 0 0 1px var(--accent-color);background:#fff}.saving-indicator{background:var(--surface-color);border:1px solid var(--border-color);z-index:50;border-radius:6px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;animation:.2s cubic-bezier(.16,1,.3,1) slideIn;display:flex;position:fixed;bottom:1.5rem;right:1.5rem;box-shadow:0 4px 6px -1px #0000001a}@keyframes slideIn{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.status-saved{color:var(--success-color);font-weight:500}.status-saving{color:var(--accent-color);font-weight:500}.pin-overlay{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:1000;background:#f8fafccc;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pin-modal{background:var(--surface-color);border:1px solid var(--border-color);text-align:center;border-radius:12px;width:90%;max-width:360px;padding:2.5rem;box-shadow:0 20px 25px -5px #0000001a}.pin-modal h2{margin-top:0;margin-bottom:1.5rem;font-size:1.5rem}.pin-input{text-align:center;letter-spacing:.5em;border:2px solid var(--border-color);width:100%;color:var(--text-primary);background:#f1f5f9;border-radius:6px;outline:none;padding:.75rem;font-size:1.5rem}
