/* Variables */
:root {
  --color-navbar: #600;
  --color-navbar-link: #ffcc99;
  --color-navbar-link-hover: #ffffff;
  --color-page: #1e1e1e;
  --color-textbox: #f4f4f4;
  --color-accent: #e74c3c;
  --color-muted: #888;
}

/* Base */
* { box-sizing: border-box; }
body {
  font-family: system-ui, -apple-system, sans-serif;
  margin: 0;
  padding: 0;
  background-color: var(--color-page);
  color: var(--color-textbox);
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

/* Header Bar */
.framebar {
  background-color: var(--color-navbar);
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 20px;
}
.framebar a {
  color: var(--color-navbar-link);
  text-decoration: none;
  font-weight: 500;
}
.framebar a:hover {
  color: var(--color-navbar-link-hover);
}
.framebar nav {
  display: flex;
  align-items: center;
  gap: 15px;
}
.framebar .spinner {
  margin-right: 10px;
}
.framebar .btn-login {
  padding: 6px 16px;
  background: transparent;
  color: var(--color-navbar-link);
  border: 1px solid var(--color-navbar-link);
  border-radius: 4px;
  cursor: pointer;
  font-weight: 500;
  text-decoration: none;
}
.framebar .btn-login:hover {
  background: rgba(255,255,255,0.1);
  color: var(--color-navbar-link-hover);
}
.framebar .btn-user {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 12px;
  background: rgba(255,255,255,0.1);
  color: var(--color-navbar-link);
  border-radius: 20px;
  text-decoration: none;
  font-weight: 500;
}
.framebar .btn-user:hover {
  background: rgba(255,255,255,0.2);
  color: var(--color-navbar-link-hover);
}
.framebar .btn-user img {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
}
.framebar button {
  padding: 6px 12px;
  background: transparent;
  color: var(--color-navbar-link);
  border: 1px solid var(--color-navbar-link);
  border-radius: 4px;
  cursor: pointer;
}
.framebar button:hover {
  background: rgba(255,255,255,0.1);
  color: var(--color-navbar-link-hover);
}

/* Main Body */
main {
  flex: 1;
  padding: 20px;
}

/* Content Container (centered, max-width) */
main.content {
  display: block;
  margin: 0 auto;
  max-width: 800px;
  width: 100%;
  background-color: white;
  color: var(--color-page);
  padding: 40px;
  border-radius: 8px;
}

/* Full-width (for apps) */
main.full-width {
  display: block;
  padding: 0;
  background: transparent;
}

/* Loading Spinner */
.spinner {
  display: none;
  width: 20px;
  height: 20px;
  border: 2px solid var(--color-navbar-link);
  border-top-color: transparent;
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}
.spinner.visible { display: inline-block; }
@keyframes spin { to { transform: rotate(360deg); } }

/* Error indicator */
.status-error {
  display: none;
  cursor: pointer;
  font-size: 18px;
}
.status-error.visible { display: inline-block; }
.status-error::before { content: '⚠️'; }

/* Toast (errors/status) */
.toast {
  position: fixed;
  bottom: 20px;
  right: 20px;
  padding: 12px 20px;
  border-radius: 6px;
  font-size: 0.9em;
  z-index: 1000;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.3s, transform 0.3s;
}
.toast.visible {
  opacity: 1;
  transform: translateY(0);
}
.toast.error {
  background: var(--color-accent);
  color: white;
}
.toast.success {
  background: #27ae60;
  color: white;
}

/* Mobile */
@media (max-width: 640px) {
  main { padding: 10px; }
  main.content { padding: 20px; }
  .framebar { padding: 10px 15px; }
}

/* Forms inside content box */
main.content label {
  display: block;
  margin-bottom: 5px;
  font-weight: 500;
}
main.content input,
main.content textarea {
  display: block;
  width: 100%;
  margin-bottom: 15px;
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 1em;
  background-color: #f9f9f9;
  color: #333;
}
main.content textarea {
  min-height: 80px;
  resize: vertical;
}
main.content button {
  background-color: var(--color-navbar);
  color: white;
  border: none;
  border-radius: 4px;
  padding: 10px 20px;
  cursor: pointer;
  font-size: 1em;
}
main.content button:hover {
  background-color: #1a252f;
}
main.content section {
  margin-bottom: 30px;
}
main.content section:last-child {
  margin-bottom: 0;
}
main.content ul {
  list-style: none;
  padding: 0;
  margin: 0 0 15px 0;
}
main.content li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid #eee;
}
main.content li:last-child {
  border-bottom: none;
}

/* Relay status indicators */
.relay-status {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin-right: 8px;
  flex-shrink: 0;
}
.relay-status.checking {
  background-color: #999;
  animation: pulse 1s infinite;
}
.relay-status.online {
  background-color: #27ae60;
}
.relay-status.offline {
  background-color: #e74c3c;
}
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

.relay-url {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Help text */
main.content .help-text {
  font-size: 0.85em;
  color: var(--color-muted);
  margin: 10px 0 0 0;
}
main.content .help-text a {
  color: inherit;
  text-decoration: underline;
}

/* Settings page header */
.settings-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
}
.settings-header h1 {
  margin: 0;
}
.settings-header #logout-btn {
  background: transparent;
  color: var(--color-accent);
  border: 1px solid var(--color-accent);
  border-radius: 4px;
  padding: 6px 16px;
  cursor: pointer;
}
.settings-header #logout-btn:hover {
  background: var(--color-accent);
  color: white;
}