:root{--bg:#f7f5f0;--ink:#1a1a18;--ink-mid:#6b6960;--ink-faint:#b8b5ae;--ink-ghost:#dedad4;--rule:#e8e5de;--accent:#7a5a2e;--font-ui:system-ui, -apple-system, "PingFang SC", "Noto Sans SC", sans-serif;--tabbar-h:56px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui)}a{color:inherit}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.app{flex-direction:column;min-height:100%;display:flex}.content{padding:max(16px, env(safe-area-inset-top)) 20px calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 16px);flex:1}.page-title{letter-spacing:.04em;margin:8px 0 4px;font-size:1.6rem;font-weight:600}.page-note{color:var(--ink-faint);margin-bottom:20px;font-size:.8rem}.page-error{color:var(--accent);margin-bottom:12px}.group{margin-bottom:24px}.group h2{letter-spacing:.16em;color:var(--ink-mid);border-bottom:1px solid var(--rule);margin-bottom:8px;padding-bottom:6px;font-size:.75rem;font-weight:500}.group li{border-bottom:1px solid var(--rule);padding:10px 0;list-style:none}.group a{text-decoration:none}.back{color:var(--ink-mid);padding:6px 0}.plain-btn{border:1px solid var(--rule);color:var(--ink-mid);border-radius:20px;padding:8px 18px}.tabbar{height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--bg);border-top:1px solid var(--rule);display:flex;position:fixed;bottom:0;left:0;right:0}.tab{letter-spacing:.1em;color:var(--ink-faint);flex:1;font-size:.85rem}.tab.active{color:var(--ink);font-weight:600}.login{flex-direction:column;justify-content:center;align-items:center;min-height:100%;padding:32px 24px;display:flex}.login-mark{width:72px;height:72px;margin-bottom:12px}.login-title{letter-spacing:.3em;margin-bottom:32px;font-size:1.8rem}.login-form{flex-direction:column;gap:10px;width:100%;max-width:340px;display:flex}.login-form label{letter-spacing:.14em;color:var(--ink-mid);font-size:.75rem}.login-form input{border:none;border-bottom:1.5px solid var(--ink-faint);color:var(--ink);background:0 0;outline:none;padding:8px 0;font-size:1rem}.login-form input:focus{border-bottom-color:var(--ink)}.login-form button{border:1px solid var(--ink);letter-spacing:.2em;border-radius:22px;margin-top:12px;padding:10px}.login-form button:disabled{opacity:.4}.login-error{color:var(--accent);font-size:.85rem}.login-hint{color:var(--ink-faint);margin-top:8px;font-size:.75rem;line-height:1.7}
