/* Component styles built on tokens.css. Mirror the look in docs/design/screens.
   Use logical properties (margin-inline, padding-block…) for future RTL support. */

.cs-container { max-inline-size: var(--cs-container); margin-inline: auto; padding-inline: var(--cs-space-6); }

/* Header */
.cs-header { background: var(--cs-surface); border-block-end: 1px solid var(--cs-border); }
.cs-header__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--cs-space-3); padding-block: 14px; }
.cs-brand { display: flex; align-items: center; gap: 10px; color: var(--cs-text); text-decoration: none; font-weight: 700; font-size: var(--cs-text-lg); }
.cs-nav { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cs-space-2); }

/* Buttons */
.cs-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-block-size: var(--cs-control); padding-inline: 16px; border-radius: var(--cs-radius); border: 1px solid transparent; font: inherit; font-weight: 600; font-size: 14px; text-decoration: none; cursor: pointer; }
.cs-btn--lg { min-block-size: var(--cs-control-lg); border-radius: var(--cs-radius-md); font-size: var(--cs-text-md); }
.cs-btn--primary { background: var(--cs-accent); color: #fff; }
.cs-btn--primary:hover { background: var(--cs-accent-hover); color: #fff; }
.cs-btn--dark { background: var(--cs-text); color: var(--cs-surface); }
.cs-btn--secondary { background: var(--cs-surface); color: var(--cs-text); border-color: var(--cs-border-strong); }
.cs-btn--danger-outline { background: var(--cs-surface); color: var(--cs-danger-text); border-color: var(--cs-danger); }
.cs-btn--danger { background: var(--cs-danger-strong); color: #fff; }
@media (pointer: coarse) { .cs-btn { min-block-size: var(--cs-control-md); } }

/* Select (language switcher) */
.cs-select { min-block-size: var(--cs-control); padding-inline: 12px; border: 1px solid var(--cs-border-strong); border-radius: var(--cs-radius); background: var(--cs-surface); color: var(--cs-text); font: inherit; font-size: 14px; }

/* Cards */
.cs-card { background: var(--cs-surface); border: 1px solid var(--cs-border); border-radius: var(--cs-radius-xl); padding: var(--cs-space-8); }
.cs-card--raised { box-shadow: var(--cs-shadow-card); }

/* Hero */
.cs-hero { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); gap: var(--cs-space-14); align-items: center; padding-block: var(--cs-space-18) var(--cs-space-10); }
.cs-eyebrow { margin: 0; font-size: 14px; font-weight: 600; letter-spacing: .04em; color: var(--cs-accent); }
.cs-hero h1 { margin: 0; font-size: clamp(30px, 5vw, var(--cs-text-display)); line-height: 1.25; letter-spacing: -.01em; }
.cs-lead { margin: 0; font-size: var(--cs-text-lg); color: var(--cs-text-3); max-inline-size: 540px; }
.cs-stack { display: flex; flex-direction: column; gap: var(--cs-space-5); }

/* Code input */
.cs-code { display: flex; align-items: center; gap: var(--cs-space-2); }
.cs-code input { inline-size: 52px; block-size: 64px; box-sizing: border-box; border: 1.5px solid var(--cs-border-strong); border-radius: var(--cs-radius-md); background: var(--cs-surface); color: var(--cs-text); text-align: center; font-family: var(--cs-font-mono); font-size: 28px; font-weight: 600; text-transform: uppercase; }
.cs-code input:focus { outline: none; border: 2px solid var(--cs-accent); box-shadow: 0 0 0 4px var(--cs-accent-soft); }
.cs-code__sep { inline-size: 12px; block-size: 2px; background: var(--cs-border-strong); }
@media (max-width: 420px) { .cs-code input { inline-size: 42px; block-size: 54px; font-size: 22px; } }

.cs-muted { color: var(--cs-text-muted); font-size: 14px; margin: 0; }
.cs-sr-only { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Footer */
.cs-footer { border-block-start: 1px solid var(--cs-border); background: var(--cs-surface); }
.cs-footer__inner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--cs-space-3); padding-block: var(--cs-space-5); font-size: var(--cs-text-sm); color: var(--cs-text-muted); }
.cs-footer__links { display: flex; flex-wrap: wrap; gap: var(--cs-space-5); }

/* ========================================================================
   Drop room (/d) and Create Drop (/drop/new) — Phase 1.
   Mirrors docs/design/screens/DropRoom.html & CreateDrop.html, tokens only.
   ======================================================================== */

/* Room top bar */
.cs-roombar { background: var(--cs-surface); border-block-end: 1px solid var(--cs-border); }
.cs-roombar__inner { max-inline-size: var(--cs-container); margin-inline: auto; padding: 12px var(--cs-space-6); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--cs-space-3); }
.cs-roombar__group { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cs-space-4); }
.cs-chip { display: flex; align-items: center; gap: var(--cs-space-2); padding: 4px 4px 4px 12px; border: 1px solid var(--cs-border); border-radius: var(--cs-radius-md); background: var(--cs-surface-muted); }
.cs-chip__label { font-size: var(--cs-text-xs); color: var(--cs-text-muted); font-weight: 500; }
.cs-mono { font-family: var(--cs-font-mono); font-weight: 600; letter-spacing: 0.04em; }
.cs-meta { display: flex; align-items: center; gap: 6px; font-size: var(--cs-text-sm); color: var(--cs-text-2); }
.cs-dot { inline-size: 8px; block-size: 8px; border-radius: 50%; background: var(--cs-text-muted); flex: none; }
.cs-dot--ok { background: var(--cs-success); }
.cs-dot--warn { background: var(--cs-warning-dot); }
.cs-dot--err { background: var(--cs-danger); }

/* Icon button */
.cs-iconbtn { inline-size: 36px; block-size: 36px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--cs-border-strong); border-radius: var(--cs-radius); background: var(--cs-surface); color: var(--cs-text-2); cursor: pointer; }
.cs-iconbtn--plain { border-color: transparent; }
.cs-iconbtn:hover { background: var(--cs-surface-muted); }

/* Panels / sections */
.cs-roommain { max-inline-size: var(--cs-container-narrow); margin-inline: auto; padding: var(--cs-space-8) var(--cs-space-6) var(--cs-space-14); display: flex; flex-direction: column; gap: var(--cs-space-6); }
.cs-panel { background: var(--cs-surface); border: 1px solid var(--cs-border); border-radius: var(--cs-radius-xl); overflow: hidden; }

/* Composer */
.cs-tabs { display: flex; flex-wrap: wrap; gap: 4px; padding: 8px 8px 0; border-block-end: 1px solid var(--cs-border); }
.cs-tab { min-block-size: var(--cs-control); padding-inline: 16px; border: 0; border-block-end: 2px solid transparent; background: transparent; color: var(--cs-text-muted); font: inherit; font-weight: 500; cursor: pointer; }
.cs-tab[aria-selected="true"] { color: var(--cs-text); border-block-end-color: var(--cs-accent); font-weight: 600; }
.cs-composer { padding: var(--cs-space-5); display: flex; flex-direction: column; gap: var(--cs-space-3); }
.cs-textarea { inline-size: 100%; box-sizing: border-box; resize: vertical; min-block-size: 108px; padding: 12px 14px; border: 1px solid var(--cs-border-strong); border-radius: var(--cs-radius-md); font: inherit; font-size: var(--cs-text-md); color: var(--cs-text); background: var(--cs-surface); }
.cs-input { box-sizing: border-box; min-block-size: var(--cs-control); padding: 8px 12px; border: 1px solid var(--cs-border-strong); border-radius: var(--cs-radius); font: inherit; font-size: var(--cs-text-base); color: var(--cs-text); background: var(--cs-surface); }
.cs-composer__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--cs-space-3); }
.cs-hint { font-size: var(--cs-text-sm); color: var(--cs-text-muted); }

/* Feed */
.cs-feedhead { display: flex; align-items: center; justify-content: space-between; gap: var(--cs-space-3); flex-wrap: wrap; }
.cs-feedhead h2 { margin: 0; font-size: var(--cs-text-lg); font-weight: 600; }
.cs-feed { display: flex; flex-direction: column; gap: var(--cs-space-6); }
.cs-post { background: var(--cs-surface); border: 1px solid var(--cs-border); border-radius: var(--cs-radius-xl); padding: var(--cs-space-5); display: flex; flex-direction: column; gap: var(--cs-space-3); }
.cs-post__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--cs-space-2); }
.cs-post__meta { display: flex; align-items: center; gap: 10px; font-size: var(--cs-text-sm); color: var(--cs-text-muted); flex-wrap: wrap; }
.cs-post__actions { display: flex; gap: 4px; }
.cs-tag { padding: 2px 8px; border-radius: var(--cs-radius-sm); background: var(--cs-surface-subtle); color: var(--cs-text-2); font-weight: 600; font-size: var(--cs-text-xs); }
.cs-badge { padding: 2px 8px; border-radius: var(--cs-radius-pill); background: var(--cs-accent-soft); color: var(--cs-accent); font-weight: 600; font-size: var(--cs-text-xs); }
.cs-pre { margin: 0; padding: 14px 16px; border-radius: var(--cs-radius-md); background: var(--cs-dark); color: var(--cs-dark-text); font-family: var(--cs-font-mono); font-size: var(--cs-text-sm); line-height: 1.7; overflow-x: auto; white-space: pre-wrap; word-break: normal; overflow-wrap: anywhere; }
.cs-text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }

/* Key/value post */
.cs-kv { display: flex; flex-direction: column; border: 1px solid var(--cs-border); border-radius: var(--cs-radius-md); overflow: hidden; }
.cs-kv__row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cs-space-3); padding: 10px 14px; }
.cs-kv__row + .cs-kv__row { border-block-start: 1px solid var(--cs-border); }
.cs-kv__key { flex: 0 0 160px; color: var(--cs-text-muted); font-size: var(--cs-text-base); }
.cs-kv__val { flex: 1 1 200px; font-family: var(--cs-font-mono); font-size: var(--cs-text-base); overflow-wrap: anywhere; }

/* File post */
.cs-file { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--cs-space-3); }
.cs-file__main { display: flex; align-items: center; gap: var(--cs-space-4); }
.cs-file__icon { inline-size: 44px; block-size: 44px; border-radius: var(--cs-radius-md); background: var(--cs-surface-subtle); display: flex; align-items: center; justify-content: center; color: var(--cs-text-2); flex: none; }
.cs-img { max-inline-size: 100%; border-radius: var(--cs-radius-md); border: 1px solid var(--cs-border); cursor: zoom-in; }
.cs-file__thumb { inline-size: 44px; block-size: 44px; object-fit: cover; border-radius: var(--cs-radius-md); border: 1px solid var(--cs-border); flex: none; cursor: zoom-in; }

/* File composer dropzone */
.cs-dropzone { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--cs-space-2); inline-size: 100%; min-block-size: 120px; padding: var(--cs-space-6); border: 2px dashed var(--cs-border-strong); border-radius: var(--cs-radius-md); background: var(--cs-surface-muted); color: var(--cs-text-2); font: inherit; font-size: var(--cs-text-base); cursor: pointer; }
.cs-dropzone:hover, .cs-dropzone:focus-visible { border-color: var(--cs-accent); color: var(--cs-accent); outline: none; }

/* Join QR (create page) */
.cs-qr { display: inline-flex; flex-direction: column; align-items: center; gap: var(--cs-space-2); }
.cs-qr img { inline-size: 160px; block-size: 160px; border-radius: var(--cs-radius-md); border: 1px solid var(--cs-border); background: #fff; padding: var(--cs-space-2); }

/* Image lightbox */
.cs-lightbox { position: fixed; inset: 0; background: var(--cs-scrim); display: flex; align-items: center; justify-content: center; padding: var(--cs-space-6); z-index: 70; cursor: zoom-out; }
.cs-lightbox img { max-inline-size: 100%; max-block-size: 100%; border-radius: var(--cs-radius-md); }

/* Empty state */
.cs-empty { text-align: center; color: var(--cs-text-muted); padding: var(--cs-space-10) var(--cs-space-6); border: 1px dashed var(--cs-border-strong); border-radius: var(--cs-radius-xl); }

/* Dialog + scrim + toast + drag overlay */
.cs-scrim { position: fixed; inset: 0; background: var(--cs-scrim); display: flex; align-items: center; justify-content: center; padding: var(--cs-space-6); z-index: 50; }
.cs-dialog { background: var(--cs-surface); border-radius: var(--cs-radius-xl); box-shadow: var(--cs-shadow-dialog); padding: var(--cs-space-8); max-inline-size: 440px; inline-size: 100%; display: flex; flex-direction: column; gap: var(--cs-space-5); }
.cs-dialog__actions { display: flex; justify-content: flex-end; gap: var(--cs-space-3); flex-wrap: wrap; }
.cs-toast { position: fixed; inset-block-end: var(--cs-space-6); inset-inline: 0; margin-inline: auto; inline-size: max-content; max-inline-size: 90%; background: var(--cs-text); color: var(--cs-surface); padding: 10px 18px; border-radius: var(--cs-radius-pill); font-size: var(--cs-text-sm); z-index: 60; opacity: 0; transform: translateY(8px); transition: opacity .15s, transform .15s; pointer-events: none; }
.cs-toast--show { opacity: 1; transform: translateY(0); }
.cs-dragover::after { content: ""; position: fixed; inset: 0; border: 3px dashed var(--cs-accent); background: var(--cs-accent-soft); opacity: .6; z-index: 40; pointer-events: none; }

/* Forms (create / inline) */
.cs-form { display: flex; flex-direction: column; gap: var(--cs-space-6); }
.cs-formrow { display: flex; flex-direction: column; gap: var(--cs-space-2); }
.cs-label { font-weight: 600; font-size: var(--cs-text-base); }
.cs-choices { display: flex; flex-wrap: wrap; gap: var(--cs-space-2); }
.cs-choice { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border: 1px solid var(--cs-border-strong); border-radius: var(--cs-radius); cursor: pointer; }
.cs-choice input { accent-color: var(--cs-accent); }
.cs-check { display: flex; align-items: flex-start; gap: var(--cs-space-2); }
.cs-check input { margin-block-start: 4px; accent-color: var(--cs-accent); }
.cs-error { color: var(--cs-danger-text); font-size: var(--cs-text-sm); min-block-size: 1.2em; }
.cs-notice { padding: 12px 14px; border-radius: var(--cs-radius-md); font-size: var(--cs-text-base); }
.cs-notice--success { background: var(--cs-success-soft); color: var(--cs-success-text); }
.cs-notice--warning { background: var(--cs-warning); color: var(--cs-text); }
.cs-hidden { display: none !important; }
