:root{--bg-main: #f4f7fb;--bg-card: #ffffff;--text-main: #0f172a;--text-secondary: #475569;--text-muted: #64748b;--border: #e2e8f0;--primary: #2563eb;--primary-dark: #1d4ed8;--danger: #dc2626;--danger-dark: #b91c1c;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--shadow-sm: 0 1px 3px rgba(0,0,0,.05);--shadow-md: 0 6px 18px rgba(0,0,0,.06);--shadow-lg: 0 10px 30px rgba(0,0,0,.08)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:var(--bg-main);color:var(--text-main)}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}.app-shell{min-height:100vh}.app-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;padding:20px 24px;background:var(--bg-card);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm)}.app-brand{display:flex;flex-direction:column;gap:6px}.app-title{margin:0;font-size:24px;font-weight:700}.app-subtitle{margin:0;font-size:14px;color:var(--text-muted)}.app-main{padding:24px}.app-nav{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.nav-link{padding:10px 14px;border-radius:var(--radius-sm);border:1px solid #d1d5db;background:#fff;font-weight:600;transition:all .2s ease}.nav-link:hover{color:#cbd5e1;background:var(--primary-dark)}.nav-link-active{background:var(--primary);color:#fff;border-color:var(--primary)}.logout-button{padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--danger);background:var(--danger);color:#fff;font-weight:600;transition:all .2s ease}.logout-button:hover{background:var(--danger-dark)}.page-container,.course-page,.generate-course-page{max-width:1100px;margin:40px auto;padding:0 20px}.content-card,.form-card,.generate-form-wrapper,.course-form-container{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);padding:28px;box-shadow:var(--shadow-lg)}h1{font-size:2rem;margin-bottom:20px}h2{font-size:1.5rem;margin-bottom:12px}p{color:var(--text-secondary);line-height:1.6}.section-title{font-weight:700;margin:8px 0}form{display:flex;flex-direction:column;gap:18px}.form-group{display:flex;flex-direction:column;gap:8px}.form-row{display:grid;grid-template-columns:1fr 2fr;gap:18px}label{font-weight:600}input,textarea,select{width:100%;padding:12px 14px;border-radius:10px;border:1px solid #cbd5e1;font-size:.95rem;transition:.2s}input::placeholder,textarea::placeholder{color:#94a3b8}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px #2563eb1f}textarea{min-height:120px;resize:vertical}.helper-text{font-size:.85rem;color:var(--text-muted)}.toggle-btn{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:8px;border:none;cursor:pointer;font-weight:500;transition:all .25s ease}.toggle-btn.showing{background:#16a34a;color:#fff}.toggle-btn.showing:hover{background:#15803d}.toggle-btn.hidden{background:#64748b;color:#fff}.toggle-btn.hidden:hover{background:#475569}.arrow{transition:transform .25s ease}.arrow.open{transform:rotate(90deg)}.submit-btn,.generate-btn{align-self:flex-start;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;border:none;border-radius:var(--radius-md);padding:12px 22px;font-weight:600;box-shadow:0 8px 20px #2563eb40;transition:.2s}.submit-btn:hover,.generate-btn:hover{transform:translateY(-1px);box-shadow:0 10px 24px #2563eb52}.submit-btn:disabled,.generate-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:10px 16px;border-radius:var(--radius-sm);font-weight:600;transition:all .2s ease}.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:#475569;color:#fff;border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:#eef2f8}.material-grid,.weekly-material-grid,.meeting-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:10px}.material-item,.meeting-item{display:flex;flex-direction:column;gap:6px}.material-item label,.meeting-item label{font-size:.9rem;font-weight:600;color:#334155}@media(max-width:900px){.form-row{grid-template-columns:1fr}.material-grid,.weekly-material-grid,.meeting-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.app-header,.app-main{padding:16px}.app-title{font-size:20px}.app-nav{width:100%;flex-direction:column;align-items:stretch}.nav-link,.logout-button{width:100%;text-align:center}}@media(max-width:600px){.page-container,.course-page,.generate-course-page{margin:24px auto;padding:0 14px}.content-card,.form-card,.generate-form-wrapper,.course-form-container{padding:20px}.material-grid,.weekly-material-grid,.meeting-grid{grid-template-columns:1fr}.submit-btn,.generate-btn,.toggle-btn{width:100%}}.table-wrap{width:100%;overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}table{width:100%;border-collapse:collapse;min-width:620px}thead{background:#f3f6fb}th,td{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:.92rem;color:var(--text);font-weight:700}td{color:var(--text)}tbody tr:hover{background:#fafcff}.status-pill{display:inline-flex;align-items:center;padding:.3rem .65rem;border-radius:999px;font-size:.82rem;font-weight:700}.status-ok{background:var(--success-soft);color:var(--success)}.status-missing{background:var(--danger-soft);color:var(--danger)}.status-risk{background:var(--warning-soft);color:var(--warning)}.pre-block{background:#0f172a;color:#e5e7eb;border-radius:var(--radius-md);padding:1rem;overflow:auto;font-size:.9rem;line-height:1.55}.loading-inline{display:inline-flex;align-items:center;gap:.65rem;color:var(--text-muted)}.spinner{width:16px;height:16px;border:2px solid #d7e1f3;border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.week-grid{display:grid;gap:.8rem}.week-card{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);padding:.9rem 1rem}.week-card-header{display:flex;justify-content:space-between;gap:.75rem;align-items:center;margin-bottom:.5rem}.week-number{font-weight:700;color:var(--primary)}.week-meta{color:var(--text-muted);font-size:.92rem}.week-body{display:grid;gap:.35rem}.logo-image{width:100px;height:100px}.logo-image:hover{transform:rotate(10deg) scale(1.05);transition:transform .3s ease}.logo-image:active{transform:rotate(-10deg) scale(.95);transition:transform .1s ease}.logo-image:focus{outline:2px solid var(--primary);outline-offset:4px}.logo-image{border-radius:50%}.app-avatar{display:flex;align-items:center;gap:16px}.login-container{display:flex;justify-content:center;align-items:center;height:100vh;background:linear-gradient(135deg,#eef2ff,#dbeafe);font-family:Arial,sans-serif}.login-card{background:#fff;padding:40px;border-radius:12px;width:360px;text-align:center;box-shadow:0 10px 30px #00000026}.login-title{margin-bottom:10px;font-size:26px;font-weight:600}.login-subtitle{color:#555;margin-bottom:25px}.google-button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px;font-size:15px;border:none;border-radius:8px;background:#4285f4;color:#fff;cursor:pointer;transition:.2s}.google-button img{width:20px}.google-button:hover{background:#3367d6}.login-loading{margin-top:15px;color:#444}.login-error{margin-top:15px;color:red}
