/* assets/style.css
   ---------------------------------------
   Dark‑mode Christmas theme – replaces the original
   light‑off‑white look.  All colour values are expressed
   as CSS custom properties so you can tweak them later.
   ------------------------------------------- */

:root{
  /* ---------- Dark colour palette --------- */
  --bg:         #111111;   /* page background – very dark gray */
  --card:         #222222;   /* container / card background */
  --muted:      #aaaaaa;   /* muted / secondary text */
  --text:          #eeeeee;   /* primary text – bright enough on dark bg */
  --accent-red:   #c0392b;   /* Santa‑coat red */
  --accent-green:  #27ae60;   /* evergreen green */
  --accent-soft:   linear-gradient(135deg,
                rgba(192,57,43,0.96) 0%,
            rgba(39,174,96,0.95) 100%);
  --accent-warm:   linear-gradient(90deg,
           rgba(192,57,43,1) 0%,
           rgba(25,200,0.9) 50%,
                 rgba(39,174,96,1) 100%);
  --shadow:   0 10px 30px rgba(0,0,0,0.6);
  --card-shadow:   0 8px 26px rgba(0,0,0,0.5);
  --radius:     12px;
  --max-w:      760px;
  --ornament:      radial-gradient(circle at 30% 30%,
                rgba(25,255,25,0.18) 0 12%,
                     transparent 13%);
  --glass:         rgba(25,255,255,0.2);
}

/* ---------- Base reset & typography ---------- */
*{box-sizing:border-box}
html,body{
  height:100%;
  margin:0;
  background:linear-gradient(180deg,var(--bg),#0a0a0a);
  color:var(--text);
  font-family: Inter, ui-sans-serif, system-ui,
               -apple-system, "Segoe UI", Roboto,
               "Helvetica Neue", Arial, sans-serif;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

/* ---------- Main card ---------- */
main{
  max-width:var(--max-w);
  margin:40px auto;
  padding:28px;
  background:var(--card);
  border-radius:var(--radius);
  box-shadow:var(--card-shadow);
  border:1px solid rgba(255,255,255,0.04);
  position:relative;
  overflow:visible;
}

/* ---------- Header stripe (festive) ---------- */
main::before{
  content:"";
  display:block;
  height:10px;
  width:100%;
  margin:-28px -28px 18px;
  border-top-left-radius:var(--radius);
  border-top-right-radius:var(--radius);
  background:var(--accent-warm);
  box-shadow:0 4px 18px rgba(192,57,43,0.06),
             inset 0 -2px 6px rgba(0,0,0,0.03);
}

/* ---------- Garland decoration (optional) ---------- */
main::after{
  content:"";
  position:absolute;
  left:16px; right:16px; top:12px;
  height:20px;
  background:repeating-linear-gradient(90deg,
            rgba(39,174,96,0.06) 0 6px,
            rgba(192,57,43,0.04) 6px 12px);
  border-radius:8px;
  opacity:0.12;
  pointer-events:none;
}

/* ---------- Headings ---------- */
h1{
  margin:2px 0 8px;
  font-size:1.6rem;
  letter-spacing:-0.2px;
  font-weight:700;
  display:flex;
  align-items:center;
  gap:10px;
}

/* Bow ornament next to the title */
.bow{
  display:inline-block;
  width:18px;height:18px;
  margin-left:8px;vertical-align:middle;
  background: var(--ornament),
              linear-gradient(135deg,var(--accent-red) 0%,
                                            var(--accent-green) 100%);
  border-radius:4px;
  box-shadow:0 3px 8px rgba(0,0,0,0.08);
}

/* Muted / secondary text */
.muted{color:var(--muted)}
.small{font-size:0.92rem;color:var(--muted)}

/* ---------- Form controls ---------- */
input[type="text"],
input[type="file"],
textarea,
input,
select{
  width:100%;
  padding:12px 14px;
  border:1px solid #444;
  border-radius:10px;
  font-size:1rem;
  margin:10px 0 14px;
  background:linear-gradient(180deg,#2c2c2c,#242424);
  transition:box-shadow .12s ease,
              border-color .12s ease,
              transform .08s ease;
  color:var(--text);
  outline:none;
}
textarea{min-height:160px;resize:vertical}

/* Row layout helper */
.row{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}

/* Preformatted blocks (e.g., token dump) */
pre{
  background:linear-gradient(180deg,#2a2a2a,#262626);
  padding:12px;
  border-radius:10px;
  overflow:auto;
  border:1px solid rgba(255,255,255,0.1);
  font-family: ui-monospace, SFMono-Regular, Menlo,
               Monaco, "Courier New", monospace;
}

/* ---------- Buttons ---------- */
button{
  background:var(--accent-red);
  color:#fff;
  border:0;
  padding:10px 16px;
  border-radius:12px;
  cursor:pointer;
  font-weight:700;
  box-shadow:0 10px 28px rgba(192,57,43,0.08);
  transition:transform .12s ease,
              box-shadow .12s ease,
              opacity .12s ease;
  display:inline-flex;align-items:center;gap:8px;
}
button.secondary{
  background:transparent;
  color:var(--accent-green);
  border:1px solid rgba(39,174,96,0.12);
}
button.button-green{
  background:var(--accent-green);
  color:#fff;
  box-shadow:0 10px 28px rgba(39,174,96,0.08);
}
button:active{transform:translateY(1px)}
button:hover{
  transform:translateY(-2px);
  box-shadow:0 16px 36px rgba(0,0,0,0.08);
}
button[disabled]{opacity:0.6;cursor:not-allowed;transform:none}

/* ---------- Token display box ---------- */
#tokens{
  background:linear-gradient(180deg,#2a2a2a,#242424);
  border-radius:10px;
  padding:14px;
  border:1px dashed rgba(150,150,150,0.1);
  color:var(--muted);
  font-weight:600;
}

/* ---------- Focus styles (accessibility) ---------- */
input:focus,
textarea:focus,
select:focus{
  outline:none;
  box-shadow:0 0 0 5px rgba(192,57,43,0.06);
  border-color:rgba(192,57,43,0.18);
}

/* ---------- Small decorative ornament on headings ---------- */
h1::after{
  content:"";
  display:inline-block;
  width:10px;height:10px;
  margin-left:6px;
  background:radial-gradient(circle at 35% 35%,
            #fff8dd 0 20%,transparent 21%),
            linear-gradient(135deg,var(--accent-red),var(--accent-green));
  border-radius:50%;
  box-shadow:0 2px 6px rgba(0,0,0,0.08);
}

/* ---------- Layout tweaks ---------- */
main > p{margin:10px 0 14px}
main > hr{
  border:none;
  border-top:1px solid rgba(255,255,255,0.06);
  margin:20px 0;
}
@media (max-width:520px){
  main{margin:20px 12px;padding:18px}
  .row{gap:8px}
}

/* ---------- Links ---------- */
a{
  color:var(--accent-red);
  text-decoration:underline;
}

/* ---------- Footer ribbon (optional) ---------- */
body::after{
  content:"";
  display:block;
  height:18px;
  width:100%;
  background:linear-gradient(90deg,
            rgba(192,57,43,0.04),
            rgba(39,174,96,0.04));
  position:fixed; left:0; bottom:0;
  pointer-events:none;
  opacity:0.9;
}

/* ---------- Misc UX tweaks (unchanged) ---------- */
input[type="file"]{padding:8px 10px}
pre#tokens{white-space:pre-wrap;word-break:break-word}

/* ---------- Tiny snow sparkle (pure CSS) ---------- */
@keyframes sparkle{
  0%{opacity:0}
  50%{opacity:0.9;transform:translateY(-4px) scale(1.02)}
  100%{opacity:0}
}
main .sparkle{
  position:absolute;right:18px;top:-8px;
  width:8px;height:8px;border-radius:50%;
  background:linear-gradient(135deg,#fff,#ffd27f);
  box-shadow:0 4px 14px rgba(255,215,100,0.12);
  animation:sparkle 3.8s linear infinite;
  opacity:0;pointer-events:none;
}
