/* Claire web app — shared shell */
:root{
  --ink:#241f2e; --ink-2:#5c5468; --cream:#faf6f0; --violet:#7c5cff;
  --grad:linear-gradient(95deg,#7c5cff,#c05cff 55%,#f472b6);
  --line:#eee6da; --ring:rgba(124,92,255,.14);
  --r:14px; --shadow:0 6px 22px rgba(36,31,46,.07);
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,"Noto Sans TC","PingFang TC",sans-serif;
  background:var(--cream);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased;
  padding-top:64px;padding-bottom:76px;min-height:100vh}
a{color:inherit;text-decoration:none}
button{font-family:inherit}

.topbar{position:fixed;top:0;left:0;right:0;z-index:40;display:flex;align-items:center;gap:14px;
  background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);
  padding:12px 18px;height:56px}
.brand{font-size:20px;font-weight:800}
.brand .spark{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.top-credits{margin-left:auto;font-size:13.5px;color:var(--ink-2);background:#f4eeff;
  border-radius:999px;padding:5px 14px}
.top-credits b{color:var(--violet)}
.signout{border:none;background:transparent;color:var(--ink-2);font-size:13px;cursor:pointer}

.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;
  background:rgba(255,255,255,.95);backdrop-filter:blur(12px);border-top:1px solid var(--line);
  padding:6px 8px calc(6px + env(safe-area-inset-bottom))}
.tab{flex:1;text-align:center;font-size:11.5px;color:var(--ink-2);padding:6px 0;border-radius:10px;font-weight:600}
.tab span{display:block;font-size:20px;line-height:1.3;filter:grayscale(.4);opacity:.75}
.tab.on{color:var(--violet)}
.tab.on span{filter:none;opacity:1}

.page{max-width:760px;margin:0 auto;padding:20px 16px}
.page h1{font-size:22px;font-weight:800;margin-bottom:4px}
.page .sub{color:var(--ink-2);font-size:14px;margin-bottom:20px}

.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);margin-bottom:14px}
.btn{display:inline-block;border:none;border-radius:999px;font-weight:700;cursor:pointer;
  transition:transform .15s ease;font-size:14.5px;padding:11px 22px}
.btn:hover{transform:translateY(-1px)}
.btn-primary{background:var(--grad);color:#fff;box-shadow:0 6px 18px var(--ring)}
.btn-ghost{background:#fff;border:1.5px solid var(--violet);color:var(--violet)}
.btn-sm{padding:7px 16px;font-size:13px}
.btn[disabled]{opacity:.5;cursor:default;transform:none}

.toast{position:fixed;bottom:96px;left:50%;transform:translateX(-50%) translateY(16px);
  background:var(--ink);color:#fff;font-size:14px;padding:11px 22px;border-radius:999px;
  opacity:0;transition:all .3s ease;z-index:99;max-width:88vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.bad{background:#c2334d}

.empty{text-align:center;color:var(--ink-2);padding:44px 16px;font-size:14.5px}
.empty .big{font-size:40px;margin-bottom:10px}

.badge{font-size:11px;font-weight:800;padding:4px 11px;border-radius:999px;white-space:nowrap}
.badge.ok{background:#e5f7ec;color:#1d8a4b}
.badge.wait{background:#f1ecff;color:var(--violet)}
.badge.warn{background:#fff3d6;color:#9a6b00}
.badge.bad{background:#ffe3e8;color:#c2334d}
