*{box-sizing:border-box;margin:0;padding:0}:root{--accent: #3B82F6;--accent-dark: #1D4ED8;--border: #E2E8F0;--text: #1E293B;--muted: #64748B;--danger: #DC2626;--ok: #16A34A}body{font-family:Helvetica Neue,Arial,Hiragino Kaku Gothic ProN,sans-serif;color:var(--text);background:#f8fafc;min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:8px;padding:12px 20px;background:#fff;border-bottom:1px solid var(--border)}.brand{font-weight:800;font-size:16px}.brand-sub{font-size:12px;color:var(--muted)}.user-box{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:13px}.app{flex:1;max-width:900px;width:100%;margin:0 auto;padding:20px;display:flex;flex-direction:column;gap:16px}.footer{text-align:center;padding:16px;font-size:12px;color:var(--muted)}.panel{background:#fff;border:1px solid var(--border);border-radius:12px;padding:20px}.panel h1{font-size:20px;margin-bottom:8px}.panel h2{font-size:16px;margin-bottom:8px}.panel h3{font-size:13px;color:var(--muted);margin:12px 0 4px}.hint{font-size:13px;color:var(--muted);margin-bottom:10px;line-height:1.6}.btn{display:inline-flex;align-items:center;justify-content:center;height:38px;padding:0 16px;border-radius:8px;border:none;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-dark)}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn-ghost:hover{background:#f1f5f9}.btn-link{background:none;border:none;color:var(--accent);font-weight:600;cursor:pointer;padding:4px 0;text-align:left}.btn-sm{height:30px;padding:0 10px;font-size:12px}.login-panel{text-align:center;max-width:420px;margin:40px auto}.login-panel .btn{margin:16px 0}.tabs{display:flex;gap:8px}.tab{flex:1;height:40px;border:1.5px solid var(--border);border-radius:20px;background:#fff;font-weight:600;cursor:pointer;color:var(--muted)}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.settings-link{text-align:right}.message{font-size:13px;margin-top:6px}.message-ok{color:var(--ok)}.message-error{color:var(--danger)}.inline-form{display:flex;gap:8px}.inline-form input{flex:1;height:38px;padding:0 12px;border:1.5px solid var(--border);border-radius:8px;font-size:14px}.timetable-grid{width:100%;border-collapse:collapse;font-size:13px}.timetable-grid th,.timetable-grid td{border:1px solid var(--border);padding:4px;text-align:center;vertical-align:top}.timetable-grid th{background:#f1f5f9;font-weight:600}.timetable-grid td{min-width:90px;height:56px}.timetable-grid .cell-course,.timetable-grid .cell-location{width:100%;border:none;font-size:12px;padding:2px 4px;text-align:center}.timetable-grid .cell-course{font-weight:600}.timetable-grid .cell-location{color:var(--muted)}.timetable-grid .cell-course-label{font-weight:600}.timetable-grid .cell-location-label{color:var(--muted);font-size:11px}.timetable-grid .cell-empty{background:#fafbfc}.save-row{display:flex;align-items:center;gap:12px;margin-top:12px}.request-list,.friend-list{list-style:none;display:flex;flex-direction:column;gap:6px}.request-list li,.friend-list li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:8px}.request-list li span,.friend-list li span{flex:1;font-size:13px}
