/* ═══════════════════════════════════════════════════════════════
   Tech208 Utilities — Custom dark theme
   ═══════════════════════════════════════════════════════════════ */

/* ─── CSS Variables ─────────────────────────────────────────── */
:root {
  --u-bg:          #0d1117;
  --u-surface:     #161b22;
  --u-card:        #1c2128;
  --u-border:      #30363d;
  --u-text:        #e6edf3;
  --u-muted:       #7d8590;
  --u-accent:      #00c8d7;
  --u-accent-dim:  #00a8b5;
  --u-success:     #3fb950;
  --u-warning:     #d29922;
  --u-danger:      #f85149;
  --u-info:        #58a6ff;
  --u-radius:      .5rem;
  --u-radius-lg:   .75rem;
  --u-transition:  .15s ease;
}

/* ─── Base ───────────────────────────────────────────────────── */
html { scroll-behavior: smooth; }

body {
  background-color: var(--u-bg);
  color: var(--u-text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

::selection { background: var(--u-accent); color: #000; }

.text-accent { color: var(--u-accent) !important; }
.border-accent { border-color: var(--u-accent) !important; }
.bg-accent { background-color: var(--u-accent) !important; }

/* ─── Navbar ─────────────────────────────────────────────────── */
.u-navbar {
  background: rgba(13, 17, 23, .95) !important;
  border-bottom: 1px solid var(--u-border);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.u-brand-icon {
  width: 2rem; height: 2rem;
  background: var(--u-accent);
  color: #000;
  border-radius: var(--u-radius);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem;
  flex-shrink: 0;
}

.u-navbar .nav-link {
  color: var(--u-muted) !important;
  font-size: .9rem;
  transition: color var(--u-transition);
  padding: .4rem .75rem;
  border-radius: var(--u-radius);
}
.u-navbar .nav-link:hover,
.u-navbar .nav-link.active { color: var(--u-text) !important; }
.u-navbar .nav-link.active { background: rgba(0,200,215,.08); }

.dropdown-menu-dark {
  background-color: var(--u-card) !important;
  border: 1px solid var(--u-border) !important;
  border-radius: var(--u-radius-lg);
  padding: .4rem;
  min-width: 220px;
}
.dropdown-item {
  border-radius: calc(var(--u-radius) - 2px);
  padding: .45rem .75rem;
  font-size: .875rem;
  line-height: 1.4;
  color: var(--u-text) !important;
}
.dropdown-item:hover,
.dropdown-item:focus  { background: rgba(255,255,255,.06) !important; }
.dropdown-item.active { background: rgba(0,200,215,.15) !important; color: var(--u-accent) !important; }
.dropdown-item small  { font-size: .75rem; }

/* ─── Main + Footer ──────────────────────────────────────────── */
.u-main { flex: 1; max-width: 1400px; margin: 0 auto; width: 100%; }
.u-footer {
  background: var(--u-surface);
  border-top: 1px solid var(--u-border);
}

/* ─── Cards ──────────────────────────────────────────────────── */
.card {
  background: var(--u-card) !important;
  border: 1px solid var(--u-border) !important;
  border-radius: var(--u-radius-lg) !important;
}
.card-header {
  background: rgba(255,255,255,.03) !important;
  border-bottom: 1px solid var(--u-border) !important;
}

/* Tool cards on home page */
.u-tool-card {
  color: var(--u-text);
  transition: border-color var(--u-transition), transform var(--u-transition), box-shadow var(--u-transition);
}
.u-tool-card:hover {
  border-color: var(--u-accent) !important;
  transform: translateY(-2px);
  box-shadow: 0 4px 20px rgba(0,200,215,.12);
  color: var(--u-text);
}

.u-tool-icon {
  width: 2.5rem; height: 2.5rem;
  background: rgba(0,200,215,.12);
  color: var(--u-accent);
  border-radius: var(--u-radius);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.2rem;
}

/* ─── Page title bar ─────────────────────────────────────────── */
.u-page-header {
  padding: 1.25rem 1.5rem;
  background: var(--u-card);
  border: 1px solid var(--u-border);
  border-radius: var(--u-radius-lg);
  margin-bottom: 1.5rem;
}

/* ─── Buttons ────────────────────────────────────────────────── */
.btn-accent {
  background: var(--u-accent);
  color: #000;
  border: none;
  font-weight: 600;
}
.btn-accent:hover { background: var(--u-accent-dim); color: #000; }
.btn-accent:disabled { opacity: .5; }

.btn-outline-accent {
  border: 1px solid var(--u-accent);
  color: var(--u-accent);
  background: transparent;
}
.btn-outline-accent:hover { background: rgba(0,200,215,.12); color: var(--u-accent); }

/* ─── Form controls ──────────────────────────────────────────── */
.form-control, .form-select, .input-group-text {
  background-color: var(--u-surface) !important;
  border-color: var(--u-border) !important;
  color: var(--u-text) !important;
}
.form-control:focus, .form-select:focus {
  border-color: var(--u-accent) !important;
  box-shadow: 0 0 0 .2rem rgba(0,200,215,.2) !important;
  background-color: var(--u-surface) !important;
}
.form-control::placeholder { color: var(--u-muted) !important; }
.form-label { color: var(--u-text); }
.form-check-input:checked { background-color: var(--u-accent); border-color: var(--u-accent); }
.form-check-label { color: var(--u-muted); }

/* ─── Tables ─────────────────────────────────────────────────── */
.table {
  --bs-table-bg: transparent;
  --bs-table-striped-bg: rgba(255,255,255,.02);
  --bs-table-hover-bg: rgba(0,200,215,.05);
  --bs-table-color: var(--u-text);
  --bs-table-border-color: var(--u-border);
  font-size: .875rem;
}
.table thead th {
  color: var(--u-muted);
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .05em;
  font-weight: 600;
  border-bottom-color: var(--u-border);
}

/* ─── Badges ─────────────────────────────────────────────────── */
.badge-accent { background: rgba(0,200,215,.15); color: var(--u-accent); border: 1px solid rgba(0,200,215,.3); }

/* ─── Code / monospace ───────────────────────────────────────── */
pre, code, .u-mono {
  font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", Consolas, monospace !important;
}
pre {
  background: #090d12;
  border: 1px solid var(--u-border);
  border-radius: var(--u-radius);
  padding: 1rem;
  overflow-x: auto;
  font-size: .8125rem;
  color: var(--u-text);
}
code {
  background: rgba(255,255,255,.06);
  padding: .15em .4em;
  border-radius: .25rem;
  font-size: .875em;
  color: var(--u-accent);
}
pre code { background: none; padding: 0; color: inherit; font-size: inherit; }

/* ─── Alert overrides ────────────────────────────────────────── */
.alert {
  border-radius: var(--u-radius-lg);
  border: 1px solid;
}
.alert-success { background: rgba(63,185,80,.1);  border-color: rgba(63,185,80,.3);  color: #3fb950; }
.alert-danger   { background: rgba(248,81,73,.1);  border-color: rgba(248,81,73,.3);  color: #f85149; }
.alert-warning  { background: rgba(210,153,34,.1); border-color: rgba(210,153,34,.3); color: #d29922; }
.alert-info     { background: rgba(88,166,255,.1); border-color: rgba(88,166,255,.3); color: #58a6ff; }

/* ─── Spinner / loading ──────────────────────────────────────── */
.u-spinner {
  width: 1.5rem; height: 1.5rem;
  border: 3px solid rgba(0,200,215,.2);
  border-top-color: var(--u-accent);
  border-radius: 50%;
  animation: u-spin .7s linear infinite;
}
@keyframes u-spin { to { transform: rotate(360deg); } }

/* ─── Copy button ────────────────────────────────────────────── */
.u-copy-btn {
  cursor: pointer;
  user-select: none;
  transition: color var(--u-transition);
}
.u-copy-btn:hover { color: var(--u-accent) !important; }
.u-copy-btn.copied { color: var(--u-success) !important; }

/* ─── Status pill ────────────────────────────────────────────── */
.u-status { display: inline-flex; align-items: center; gap: .35rem; font-size: .8rem; }
.u-status::before {
  content: '';
  width: .5rem; height: .5rem;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}
.u-status-open    { color: var(--u-success); }
.u-status-open::before    { background: var(--u-success); box-shadow: 0 0 4px var(--u-success); }
.u-status-closed  { color: var(--u-danger); }
.u-status-closed::before  { background: var(--u-danger); }
.u-status-stealth { color: var(--u-warning); }
.u-status-stealth::before { background: var(--u-warning); }

/* ─── Random Text animation ──────────────────────────────────── */
#rt-output {
  font-family: "SF Mono", "Fira Code", Consolas, monospace;
  font-size: .8125rem;
  background: #090d12;
  border: 1px solid var(--u-border);
  border-radius: var(--u-radius);
  padding: 1rem;
  white-space: pre-wrap;
  word-break: break-all;
  min-height: 120px;
  max-height: 500px;
  overflow-y: auto;
  color: var(--u-accent);
}
#rt-output.animating { color: var(--u-muted); }

/* ─── Textify ────────────────────────────────────────────────── */
.u-textify-area {
  font-family: "SF Mono", "Fira Code", Consolas, monospace;
  font-size: .875rem;
  resize: vertical;
  min-height: 200px;
}

/* ─── Browser info table ─────────────────────────────────────── */
.u-info-key {
  font-family: "SF Mono", "Fira Code", Consolas, monospace;
  font-size: .8rem;
  color: var(--u-accent);
  white-space: nowrap;
}
.u-info-val {
  font-size: .875rem;
  word-break: break-all;
}

/* ─── Scrollbar ──────────────────────────────────────────────── */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--u-bg); }
::-webkit-scrollbar-thumb { background: var(--u-border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--u-muted); }

/* ─── Responsive tweaks ──────────────────────────────────────── */
@media (max-width: 576px) {
  .u-page-header { padding: 1rem; }
  .u-main { padding-left: 1rem !important; padding-right: 1rem !important; }
}

/* ─── Light theme ────────────────────────────────────────────── */
html[data-bs-theme="light"] {
  --u-bg:          #f6f8fa;
  --u-surface:     #ffffff;
  --u-card:        #ffffff;
  --u-border:      #d0d7de;
  --u-text:        #1f2328;
  --u-muted:       #656d76;
  --u-accent:      #0099a8;
  --u-accent-dim:  #007a87;
  --u-success:     #1a7f37;
  --u-warning:     #9a6700;
  --u-danger:      #cf222e;
  --u-info:        #0550ae;
}
html[data-bs-theme="light"] .u-navbar {
  background: rgba(246, 248, 250, .97) !important;
}
html[data-bs-theme="light"] .u-navbar .navbar-brand { color: var(--u-text) !important; }
html[data-bs-theme="light"] .u-navbar .nav-link { color: var(--u-muted) !important; }
html[data-bs-theme="light"] .u-navbar .nav-link:hover,
html[data-bs-theme="light"] .u-navbar .nav-link.active { color: var(--u-text) !important; }
html[data-bs-theme="light"] .dropdown-menu-dark {
  background-color: var(--u-card) !important;
  border-color: var(--u-border) !important;
}
html[data-bs-theme="light"] .dropdown-item { color: var(--u-text) !important; }
html[data-bs-theme="light"] .dropdown-item:hover,
html[data-bs-theme="light"] .dropdown-item:focus { background: rgba(0,0,0,.05) !important; }
html[data-bs-theme="light"] .card-header {
  background: rgba(0,0,0,.02) !important;
}
html[data-bs-theme="light"] pre,
html[data-bs-theme="light"] #rt-output {
  background: #f0f2f4;
  color: var(--u-text);
}
html[data-bs-theme="light"] code {
  background: rgba(0,0,0,.06);
}
html[data-bs-theme="light"] .table {
  --bs-table-striped-bg: rgba(0,0,0,.02);
  --bs-table-hover-bg:   rgba(0,153,168,.05);
}
html[data-bs-theme="light"] ::selection { background: var(--u-accent); color: #fff; }
html[data-bs-theme="light"] .btn-close-white { filter: none; }
html[data-bs-theme="light"] ::-webkit-scrollbar-track { background: var(--u-bg); }
html[data-bs-theme="light"] ::-webkit-scrollbar-thumb { background: var(--u-border); }
