:root{--bg: #f8f9fb;--card: #ffffff;--border: #e5e7eb;--text: #111827;--muted: #6b7280;--primary: #111827;--primary-contrast: #ffffff;--blue: #2563eb22;--blue-strong: #2563eb66;--red: #dc2626}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.container{max-width:1100px;margin:0 auto;padding:24px}.h1{margin:0 0 6px;font-size:28px;font-weight:800}.muted{color:var(--muted);font-size:14px;margin-bottom:16px}.bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.bar-left,.bar-right{display:flex;align-items:center;gap:8px}.title{margin:0 0 0 8px;font-size:22px;font-weight:700}.btn{padding:8px 12px;border-radius:10px;border:1px solid var(--border);background:#fff;cursor:pointer}.btn:hover{background:#f9fafb}.btn-ghost{border:none;background:transparent}.btn-primary{background:var(--primary);color:var(--primary-contrast);border-color:var(--primary)}.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}.alert{padding:10px 12px;border-radius:10px;border:1px solid #fecaca;background:#fee2e2;color:#991b1b;margin-bottom:12px;font-size:14px}.weekday-row{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:6px}.weekday{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:0 6px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.day{min-height:110px;padding:8px;border:1px solid var(--border);border-radius:12px;background:var(--card);display:flex;flex-direction:column;gap:8px}.day-dim{opacity:.45}.day-today{outline:2px solid #2563eb;outline-offset:0}.today-text{color:#2563eb}.day-head{display:flex;align-items:center;justify-content:space-between}.day-num{font-size:13px;font-weight:600}.chip{font-size:11px;padding:4px 8px;border-radius:8px;border:1px solid var(--border);background:#f3f4f6;cursor:pointer}.chip:hover{background:#e5e7eb}.day-body{display:flex;flex-direction:column;gap:4px}.event{display:inline-block;width:100%;text-align:left;font-size:12px;padding:6px 8px;border-radius:8px;background:var(--blue);border:1px solid #bfdbfe;cursor:pointer}.event:hover{background:var(--blue-strong)}.event-title{font-weight:600}.event-time{opacity:.75}.more{font-size:11px;color:var(--muted)}.agenda{display:flex;flex-direction:column;gap:20px}.agenda-date{font-size:13px;font-weight:700;color:#374151;margin-bottom:8px}.agenda-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;background:var(--card);overflow:hidden}.agenda-item{text-align:left;padding:12px;border-bottom:1px solid var(--border);cursor:pointer;background:#fff}.agenda-item:hover{background:#f9fafb}.agenda-item:last-child{border-bottom:none}.agenda-title{font-size:14px;font-weight:600}.agenda-sub{font-size:12px;color:var(--muted)}.agenda-desc{font-size:12px;color:#6b7280;margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.actions{display:flex;align-items:center;gap:8px;margin-top:16px}.modal-root{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}.modal-backdrop{position:absolute;inset:0;background:#0006}.modal-card{position:relative;width:100%;max-width:560px;border-radius:16px;background:#fff;box-shadow:0 10px 30px #0003;display:flex;flex-direction:column}.modal-head,.modal-foot{padding:14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-foot{border-bottom:none;border-top:1px solid var(--border)}.modal-body{padding:14px}.foot-actions{width:100%;display:flex;align-items:center;justify-content:space-between}.foot-right{display:flex;align-items:center;gap:8px}.form{display:flex;flex-direction:column;gap:12px}.label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#6b7280}.input{border:1px solid var(--border);border-radius:12px;padding:8px 10px;font-size:14px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 600px){.grid2{grid-template-columns:1fr}}
