:root{font-family:system-ui,sans-serif;font-size:20px;color:#111}body{margin:0;background:#f5f7fb}#app{max-width:600px;margin:0 auto;padding:12px 12px 90px}h1{font-size:1.6rem;margin:8px 0}h2{font-size:1.2rem;margin:20px 0 8px}.card{background:#fff;border-radius:14px;padding:14px;margin:8px 0;box-shadow:0 1px 3px #0002}.card.overdue{border-left:8px solid #dc2626}.card.missed{border-left:8px solid #9ca3af;opacity:.85}.time{font-weight:700;font-size:1.3rem}.muted{color:#555;font-size:.85rem}button,.btn{font:inherit;font-weight:700;border:0;border-radius:12px;padding:14px 18px;background:#1d4ed8;color:#fff;min-height:52px}button.alt{background:#e5e7eb;color:#111}button.danger{background:#dc2626}button.good{background:#16a34a}.row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.row>*{flex:1}nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:#fff;box-shadow:0 -1px 4px #0003}nav button{flex:1;border-radius:0;background:#fff;color:#1d4ed8}nav button.on{background:#1d4ed8;color:#fff}label{display:block;margin:12px 0 4px;font-weight:600}input,select,textarea{font:inherit;width:100%;box-sizing:border-box;padding:12px;border:2px solid #cbd5e1;border-radius:10px}.days{display:flex;gap:4px}.days label{margin:0;flex:1;text-align:center;font-weight:400}.days input{display:none}.days span{display:block;padding:10px 0;border:2px solid #cbd5e1;border-radius:10px}.days input:checked+span{background:#1d4ed8;color:#fff;border-color:#1d4ed8}#alarm{position:fixed;top:0;right:0;bottom:0;left:0;background:#b91c1c;color:#fff;z-index:10;display:flex;flex-direction:column;justify-content:center;padding:24px;gap:14px;animation:flash 1s infinite alternate}#alarm h1{font-size:2.4rem}#alarm button{font-size:1.5rem;min-height:72px}#alarm button.alt{background:#fff}@keyframes flash{0%{background:#b91c1c}to{background:#7f1d1d}}
