:root{--bg: #f3f5f9;--card: #ffffff;--ink: #1f2937;--muted: #6b7280;--accent: #0f4c81;--line: #e3e8ef}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,sans-serif;-webkit-tap-highlight-color:transparent}.ess-page{min-height:100%;padding:env(safe-area-inset-top,0px) 0 calc(env(safe-area-inset-bottom,0px) + 16px)}.ess-topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:8px;padding:calc(env(safe-area-inset-top,0px) + 8px) 12px 8px;background:var(--accent);color:#fff}.ess-topbar .title{flex:1;font-size:17px;font-weight:600}.ess-topbar button.back{background:none;border:0;color:#fff;font-size:22px;line-height:1;padding:6px 8px;cursor:pointer}.ess-body{padding:12px 16px}.ess-head{display:flex;align-items:center;gap:12px;padding:calc(env(safe-area-inset-top,0px) + 20px) 16px 12px}.ess-head img,.ess-head .avatar{width:64px;height:64px;border-radius:50%;object-fit:cover;background:#dfe5ee;display:grid;place-items:center;font-weight:700;color:var(--accent);font-size:22px}.ess-head .name{font-size:18px;font-weight:700}.ess-head .sub{color:var(--muted);font-size:13px}.ess-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px 12px;padding:12px 16px}.ess-app{display:flex;flex-direction:column;align-items:center;gap:8px;background:none;border:0;padding:0;cursor:pointer;color:var(--ink)}.ess-app .tile{width:76px;height:76px;border-radius:20px;display:grid;place-items:center;color:#fff;font-size:34px;box-shadow:0 6px 16px #0f4c812e}.ess-app .label{font-size:13px}.ess-signout{display:block;margin:28px auto 0;background:none;border:0;color:var(--muted);font-size:13px;text-decoration:underline}.ess-cam{position:relative;width:min(88vw,360px);aspect-ratio:3 / 4;margin:16px auto;border-radius:16px;overflow:hidden;background:#111}.ess-cam video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.ess-cam .oval{position:absolute;top:8%;right:14%;bottom:8%;left:14%;border:3px solid rgba(255,255,255,.85);border-radius:50%;box-shadow:0 0 0 999px #00000059;pointer-events:none}.ess-login{text-align:center;padding:8px 16px}.ess-login h1{font-size:20px;margin:8px 0 4px}.ess-login .hint{color:var(--muted);font-size:13px;margin:0 0 8px}.ess-login .err{color:#b42318;font-size:14px;margin:8px 0}.ess-month{display:flex;align-items:center;justify-content:space-between;margin:4px 0 8px}.ess-month .name{font-size:16px;font-weight:600}.ess-month button{background:var(--card);border:1px solid var(--line);border-radius:8px;width:40px;height:36px;font-size:18px}.ess-summary{display:flex;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:8px}.ess-summary b{color:var(--ink)}.ess-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.ess-cal .dow{text-align:center;font-size:11px;color:var(--muted);padding:2px 0}.ess-cal .cell{min-height:54px;border-radius:10px;background:var(--card);border:1px solid var(--line);padding:4px 3px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer}.ess-cal .cell.blank{background:transparent;border-color:transparent;cursor:default}.ess-cal .cell.today{border-color:var(--accent)}.ess-cal .d{font-size:12px;color:var(--muted)}.ess-cal .st{font-size:11px;font-weight:700;padding:1px 5px;border-radius:6px;color:#fff}.st-pp{background:#1a9a5a}.st-half{background:#e39b00}.st-aa{background:#d13d3d}.st-off{background:#9aa4b5}.st-hd{background:#2d7bd4}.st-lv{background:#7b4fd6}.st-na{background:#c5ccd6}.ess-tc{width:100%;border-collapse:collapse;font-size:13px;background:var(--card);border-radius:10px;overflow:hidden}.ess-tc th,.ess-tc td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.ess-tc th{font-size:11px;color:var(--muted);font-weight:600;background:#f8fafc}.ess-tc td.num{text-align:right;font-variant-numeric:tabular-nums}.ess-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}.ess-card .t{font-weight:600}.ess-card .m{color:var(--muted);font-size:12px}.ess-kv{font-size:13px;margin-top:4px}.ess-kv del{color:var(--muted)}.ess-fab{position:fixed;right:16px;bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}
