*{box-sizing:border-box}[hidden]{display:none!important}:root{--ink:#183d35;--muted:#69766e;--line:#dce3d9;--bg:#f5f6f1}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,-apple-system,'Segoe UI',sans-serif}button,select{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #7fa052;outline-offset:3px}.app{max-width:720px;padding:0 22px;margin:auto}header{padding:19px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:750;letter-spacing:-.4px}.brand small{display:block;font-size:10px;font-weight:400;letter-spacing:.5px;color:var(--muted)}.logo{display:grid;place-items:center;background:var(--ink);color:white;width:35px;height:38px;border-radius:11px;font-size:23px}.install{border:1px solid var(--line);border-radius:13px;padding:8px 11px;background:white;font-size:12px;line-height:1.4;min-height:44px}.install small{font-size:9px;color:var(--muted)}main{padding-top:24px}h1{font-size:30px;letter-spacing:-1.1px;line-height:1.2;margin:0 0 25px}label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:1px;font-weight:650;margin-bottom:7px}select{width:100%;border:1px solid var(--line);background:white;border-radius:14px;padding:14px;font-size:18px;font-weight:650;min-height:54px}#specialty{font-size:12px;color:var(--muted);margin:7px 0 25px}.weekbar{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:15px}.weekbar strong{font-size:18px}.weekbar>span{font-size:12px;color:var(--muted)}nav{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}nav button{border:1px solid var(--line);border-radius:13px;background:white;padding:10px 0;min-height:69px}nav span{display:block;font-size:10px;color:var(--muted)}nav b{display:block;font-size:21px;margin-top:3px}.active{background:var(--ink);color:white}nav button.active span{color:#dce3d9}nav button.today{box-shadow:inset 0 -3px 0 #91ad65}.viewbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:23px 0 17px}h2{font-size:20px;line-height:1.35;margin:0;letter-spacing:-.3px}.segmented{display:flex;background:#e9eee4;padding:4px;border-radius:24px}.segmented button{border:0;background:transparent;border-radius:20px;padding:9px 12px;font-size:11px;min-height:36px}.segmented [aria-pressed=true]{background:white}.card{display:flex;align-items:flex-start;gap:14px;background:white;border:1px solid var(--line);border-radius:17px;padding:18px 16px;margin-bottom:10px}.number{display:grid;place-items:center;background:#edf1e8;flex:0 0 40px;height:42px;border-radius:11px;font-size:12px;font-weight:650}.details{min-width:0}.subject{font-size:16px;font-weight:650;line-height:1.4;margin:0;overflow-wrap:anywhere}.room{display:inline-block;margin-top:9px;background:#edf1e8;border-radius:6px;padding:3px 9px;font-size:11px}.empty{background:white;border:1px dashed var(--line);border-radius:19px;text-align:center;padding:35px 20px;margin:18px 0}.empty>span{font-size:35px;display:block;margin-bottom:14px;color:#92a575}.empty p{font-size:13px;color:var(--muted);margin:12px 0 0}.week-heading{font-size:14px;color:var(--muted);margin:25px 0 12px}.week-heading:first-child{margin-top:0}.footnote{font-size:11px;color:var(--muted);margin:22px 0 12px}.source{font-size:12px;color:var(--ink)}footer{border-top:1px solid var(--line);color:var(--muted);font-size:10px;margin-top:30px;padding:20px 0 calc(22px + env(safe-area-inset-bottom))}dialog{border:1px solid var(--line);border-radius:22px;padding:23px;max-width:430px;width:calc(100% - 28px);color:var(--ink);max-height:85dvh;overflow:auto}dialog::backdrop{background:#12271e88}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.dialog-head button{border:1px solid var(--line);border-radius:50%;background:white;width:40px;height:40px;font-size:25px;flex-shrink:0}dialog p{font-size:13px;color:var(--muted);line-height:1.7}@media(min-width:650px){.app{padding:0 40px}main{padding-top:30px}.card{padding:21px}.subject{font-size:18px}}@media(max-width:360px){.app{padding:0 15px}.brand{font-size:16px;gap:7px}.install{padding:8px}h1{font-size:27px}nav{gap:4px}nav button{min-height:63px}nav b{font-size:19px}}
