/* App components. Foundation (fonts + tokens) comes from /tokens.css, shared with the public site. */
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--void);color:var(--ash);font-family:var(--body);font-size:18px;line-height:1.7;-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(900px 560px at 50% -12%, rgba(124,19,34,.18), transparent 62%);min-height:100vh}
a{color:var(--ember);text-decoration:none}a:hover{color:var(--ember-bright)}
h1,h2,h3{font-family:var(--display);color:var(--bone);font-weight:400;line-height:1.15}
h1{font-size:2.1rem;margin-bottom:.2em}h2{font-size:1.4rem;margin:0 0 .4em}h3{font-size:1.15rem;color:var(--ember-bright)}
/* shared brand bar, matching the public site's nav */
.appbar{position:sticky;top:0;z-index:50;backdrop-filter:blur(10px);background:var(--scrim);border-bottom:1px solid var(--line-soft)}
.appbar-inner{max-width:920px;margin:0 auto;padding:0 24px;height:64px;display:flex;align-items:center;justify-content:space-between}
.appbar .brand{font-family:var(--caps);letter-spacing:.22em;text-transform:uppercase;font-size:.82rem;color:var(--bone)}
.appbar .navlinks{display:flex;gap:22px;align-items:center}
.appbar .navlinks a{font-family:var(--caps);letter-spacing:.16em;text-transform:uppercase;font-size:.68rem;color:var(--ash)}
.appbar .navlinks a:hover{color:var(--ember-bright)}
.wrap{max-width:920px;margin:0 auto;padding:40px 24px}
.narrow{max-width:460px}
.eyebrow{font-family:var(--caps);letter-spacing:.34em;text-transform:uppercase;font-size:.72rem;color:var(--ember);display:block;margin-bottom:1em}
.badge{font-family:var(--caps);letter-spacing:.16em;text-transform:uppercase;font-size:.62rem;color:var(--ember);border:1px solid var(--line);border-radius:2px;padding:4px 9px}
.card{background:linear-gradient(180deg,var(--panel),var(--void-2));border:1px solid var(--line);border-radius:4px;padding:22px 22px;margin-bottom:16px}
label{display:block;font-family:var(--caps);letter-spacing:.1em;text-transform:uppercase;font-size:.66rem;color:var(--ash);margin:14px 0 7px}
input,textarea,select{width:100%;background:var(--void-2);border:1px solid var(--line);border-radius:3px;color:var(--bone);font-family:var(--body);font-size:1rem;padding:11px 13px}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--ember);box-shadow:0 0 0 3px rgba(214,162,63,.14)}
textarea{min-height:90px;resize:vertical;line-height:1.55}
.btn{font-family:var(--caps);text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;padding:.85em 1.5em;border-radius:2px;
  border:1px solid var(--ember);color:var(--ember-bright);background:transparent;cursor:pointer;transition:all .25s;display:inline-block}
.btn:hover{background:var(--ember);color:var(--void)}
.btn-solid{background:var(--scarlet);border-color:var(--scarlet);color:var(--bone)}.btn-solid:hover{background:var(--ember);border-color:var(--ember);color:var(--void)}
.btn-sm{font-size:.64rem;padding:.6em 1em}
.muted{color:var(--ash-dim);font-size:.92rem}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.between{display:flex;justify-content:space-between;align-items:center;gap:12px}
.pill{font-family:var(--caps);letter-spacing:.12em;text-transform:uppercase;font-size:.6rem;padding:3px 8px;border-radius:2px;border:1px solid var(--line);color:var(--ash-dim)}
.pill.pending{color:var(--ember);border-color:var(--line)}
.pill.scheduled{color:var(--ember-bright)}
.pill.approved{color:#8fbf8f;border-color:rgba(143,191,143,.35)}
.pill.rejected{color:var(--ash-dim)}
.hr{height:1px;background:var(--line-soft);border:0;margin:18px 0}
.err{color:#e08a8a;font-size:.9rem;margin-top:10px}
.ok{color:#8fbf8f;font-size:.9rem;margin-top:10px}
.list-item{padding:12px 0;border-bottom:1px solid var(--line-soft);cursor:pointer}
.list-item:hover{color:var(--bone)}
.copybox{background:var(--scrim);border:1px solid var(--line);border-radius:3px;padding:10px 12px;font-size:.82rem;color:var(--ember-bright);word-break:break-all;margin-top:8px}
/* chat */
.chat-grid{display:grid;grid-template-columns:200px 1fr;gap:18px;min-height:70vh}
.channels .list-item{border:0;padding:8px 10px;border-radius:3px}
.channels .list-item.active{background:var(--void-2);color:var(--bone)}
.stream{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:4px;background:var(--void-2)}
.messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
.msg .who{font-family:var(--caps);letter-spacing:.08em;font-size:.62rem;color:var(--ember);text-transform:uppercase}
.msg .body{color:var(--bone);font-size:1rem}
.composer{display:flex;gap:10px;border-top:1px solid var(--line);padding:12px}
.composer input{flex:1}
@media(max-width:640px){.chat-grid{grid-template-columns:1fr}}
