*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-mono);min-height:100vh;overscroll-behavior:none;min-height:-webkit-fill-available}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}:root{--bg:#0a0a0f;--bg2:#0d0d1a;--bg3:#1a0d2e;--border:#2a2a3e;--purple:#7b4fff;--purple-light:#c9b8ff;--green:#7fff7f;--red:#f44;--red-dim:#f66;--muted:#6b5f8a;--text:#e8e0d0;--font-mono:"Courier New", "Lucida Console", monospace}#header{background:linear-gradient(135deg, var(--bg2) 0%, var(--bg3) 100%);border-bottom:1px solid var(--border);z-index:100;padding:52px 24px 18px;position:sticky;top:0}.header-row{justify-content:space-between;align-items:flex-start;display:flex}.header-sub{letter-spacing:4px;color:var(--muted);text-transform:uppercase;margin-bottom:4px;font-size:10px}.header-date{color:var(--purple-light);letter-spacing:1px;font-size:18px;font-weight:700}.header-pct-label{color:var(--muted);letter-spacing:2px;text-align:right;margin-bottom:4px;font-size:10px}.header-pct{color:var(--purple-light);text-align:right;font-size:28px;font-weight:700;transition:color .4s}.header-pct.complete{color:var(--green)}#progress-bar-track{background:#1e1e2e;border-radius:2px;height:3px;margin-top:14px;overflow:hidden}#progress-bar-fill{background:linear-gradient(90deg, var(--purple), var(--purple-light));border-radius:2px;height:100%;transition:width .6s,background .4s}#progress-bar-fill.complete{background:linear-gradient(90deg, var(--green), #0f8)}#alarm-banner{border-bottom:2px solid var(--red);background:#2d0a0a;align-items:center;gap:10px;padding:12px 24px;animation:1s infinite pulse;display:none}#alarm-banner.visible{display:flex}#alarm-text{color:var(--red-dim);letter-spacing:1px;font-size:12px;font-family:var(--font-mono)}#schedule-list{max-width:600px;margin:0 auto;padding:20px 20px 12px}.row{border:1px solid var(--border);background:#0f0f18;align-items:center;gap:14px;margin-bottom:2px;padding:13px 16px;transition:background .3s,border-color .3s;animation:.3s both fadein;display:flex}.row:first-child{border-radius:12px 12px 0 0}.row:last-child{border-radius:0 0 12px 12px;margin-bottom:0}.row:only-child{border-radius:12px}.row.status-done{background:#0d1f0d;border-color:#2d5a2d}.row.status-due{border-color:var(--purple);background:#1a1228}.row.status-missed{background:#1f0d0d;border-color:#6b2020}.row.status-upcoming{border-color:var(--border);background:#0f0f18}.row.alarming{animation:.5s infinite shake;border-color:var(--red)!important;background:#2d0d0d!important}.dot{background:#3a3a5e;border-radius:50%;flex-shrink:0;width:10px;height:10px;transition:background .3s,box-shadow .3s}.status-done .dot{background:var(--green)}.status-due .dot{background:var(--purple-light);box-shadow:0 0 8px var(--purple-light)}.status-missed .dot{background:var(--red)}.info{flex:1;min-width:0}.info-top{align-items:center;gap:7px;font-size:13px;display:flex}.info-label{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;transition:color .3s;overflow:hidden}.status-done .info-label{color:var(--green)}.status-due .info-label{color:var(--purple-light);font-weight:700}.status-missed .info-label{color:var(--red-dim)}.info-time{color:#4a4a6a;margin-top:2px;font-size:11px}.badge{letter-spacing:1px;margin-left:8px;font-size:10px}.badge-due{color:var(--purple-light)}.badge-missed{color:var(--red-dim)}.action{flex-shrink:0}.btn-checkin{letter-spacing:1px;border:1px solid var(--border);color:#3a3a5e;cursor:default;font-size:11px;font-family:var(--font-mono);background:0 0;border-radius:6px;padding:7px 13px;transition:opacity .2s}.btn-checkin.active-due{background:linear-gradient(135deg, var(--purple), #4a20cc);border-color:var(--purple);color:#fff;cursor:pointer}.btn-checkin.active-missed{border-color:var(--red);color:var(--text);cursor:pointer;background:linear-gradient(135deg,#6b1010,#3d0a0a)}.done-time{color:var(--green);white-space:nowrap;font-size:11px}#actions{gap:12px;max-width:600px;margin:0 auto;padding:10px 20px 40px;display:flex}.btn-action{letter-spacing:2px;border:1px solid var(--border);color:var(--muted);cursor:pointer;font-size:11px;font-family:var(--font-mono);background:0 0;border-radius:8px;flex:1;padding:13px;transition:opacity .2s,border-color .2s}.btn-action:active{opacity:.7}#modal-overlay{z-index:200;background:#000000d9;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}#modal-overlay.visible{display:flex}#modal{border:1px solid var(--border);background:#0f0f1a;border-radius:16px;width:100%;max-width:460px;max-height:80vh;padding:26px;overflow-y:auto}.modal-title{letter-spacing:3px;color:var(--muted);margin-bottom:20px;font-size:11px}.edit-row{align-items:center;gap:12px;margin-bottom:11px;display:flex}.edit-icon{text-align:center;width:22px;font-size:16px}.edit-label{color:var(--purple-light);font-size:12px;font-family:var(--font-mono);flex:1}.edit-input{border:1px solid var(--border);color:var(--text);font-size:13px;font-family:var(--font-mono);background:#1a1a2e;border-radius:6px;width:108px;padding:7px 10px}.modal-btns{gap:12px;margin-top:22px;display:flex}.btn-cancel{border:1px solid var(--border);color:var(--muted);cursor:pointer;font-family:var(--font-mono);letter-spacing:1px;background:0 0;border-radius:8px;flex:1;padding:12px;font-size:12px}.btn-save{background:linear-gradient(135deg, var(--purple), #4a20cc);color:#fff;cursor:pointer;font-family:var(--font-mono);letter-spacing:1px;border:none;border-radius:8px;flex:1;padding:12px;font-size:12px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.65}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes fadein{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
