/* ============================================================
   Pictative — Molly 1.8 Forge visual port
   Inspiré de /home/kaly/Documents/Molly-1.8.1/molly_web_theme.css
   ============================================================ */

:root {
  --forge-bg-left: #07040d;
  --forge-bg-main: #120d1b;
  --forge-bg-main-soft: #181025;
  --forge-sidebar: rgba(19, 14, 29, 0.92);
  --forge-sidebar-soft: rgba(25, 17, 38, 0.94);
  --forge-panel: rgba(27, 18, 40, 0.86);
  --forge-panel-soft: rgba(33, 22, 48, 0.9);
  --forge-panel-hover: rgba(47, 29, 72, 0.94);
  --forge-panel-active: rgba(63, 38, 94, 0.98);
  --forge-modal: rgba(23, 16, 33, 0.97);
  --forge-input: rgba(12, 7, 19, 0.95);
  --forge-input-soft: rgba(18, 11, 29, 0.98);
  --forge-border: rgba(227, 133, 255, 0.16);
  --forge-border-soft: rgba(255, 255, 255, 0.08);
  --forge-border-strong: rgba(227, 133, 255, 0.34);
  --forge-text: #f7f1ff;
  --forge-text-soft: #e4d8f6;
  --forge-muted: #bfafd8;
  --forge-muted-dark: #8d7ba4;
  --forge-purple: #492480;
  --forge-purple-2: #6f3fc1;
  --forge-purple-3: #8956e8;
  --forge-purple-soft: #a678ff;
  --forge-pink: #e385ff;
  --forge-pink-soft: #f0bdff;
  --forge-cyan: #8be9ff;
  --forge-green: #7ef0bc;
  --forge-red: #ff7d96;
  --forge-yellow: #ffd36b;
  --forge-shadow-deep: 0 18px 50px rgba(0, 0, 0, 0.34);
  --forge-shadow-panel: 0 10px 32px rgba(0, 0, 0, 0.22);
  --forge-glow-purple: 0 0 24px rgba(125, 74, 217, 0.22);
  --forge-glow-pink: 0 0 28px rgba(227, 133, 255, 0.16);
  --forge-radius-sm: 10px;
  --forge-radius-md: 14px;
  --forge-radius-lg: 18px;

  --bg: var(--forge-bg-main);
  --panel: var(--forge-panel);
  --hover: var(--forge-panel-hover);
  --input: var(--forge-input);
  --header: rgba(17, 11, 26, 0.94);
  --text: var(--forge-text);
  --dim: var(--forge-text-soft);
  --faint: var(--forge-muted-dark);
  --accent: var(--forge-purple-3);
  --ok: var(--forge-green);
  --err: var(--forge-red);
  --warn: var(--forge-yellow);
  --border: var(--forge-border);
  --font: Consolas, ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;
  color-scheme: dark;
}

@keyframes forge-bg-drift {
  0% { background-position: 0% 0%, 100% 0%, 50% 50%; }
  50% { background-position: 12% 4%, 88% 8%, 50% 50%; }
  100% { background-position: 0% 0%, 100% 0%, 50% 50%; }
}
@keyframes forge-button-shine { 0% { background-position: 0% 50%; } 100% { background-position: 100% 50%; } }

* { box-sizing: border-box; scrollbar-color: #3a2456 #08050d; }
html, body { height: 100%; margin: 0; }
body {
  background:
    radial-gradient(circle at 12% 0%, rgba(137, 86, 232, 0.18), transparent 32rem),
    radial-gradient(circle at 86% 4%, rgba(227, 133, 255, 0.1), transparent 30rem),
    linear-gradient(135deg, #07040d 0%, #120d1b 48%, #090611 100%);
  background-attachment: fixed;
  animation: forge-bg-drift 18s ease-in-out infinite;
  color: var(--text);
  font-family: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  overflow: hidden;
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.018) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.014) 1px, transparent 1px);
  background-size: 26px 26px;
  mask-image: radial-gradient(circle at center, black 0%, transparent 74%);
}

button, input, textarea, select { font: inherit; }
button {
  background: linear-gradient(180deg, rgba(33, 22, 48, 0.95), rgba(20, 13, 31, 0.95));
  color: var(--text);
  border: 1px solid rgba(227, 133, 255, 0.16);
  padding: 9px 14px;
  border-radius: var(--forge-radius-md);
  cursor: pointer;
  font-weight: 700;
  letter-spacing: 0.01em;
  transition: transform 140ms ease, border-color 140ms ease, box-shadow 140ms ease, background-color 140ms ease, filter 140ms ease;
}
button:hover {
  background: linear-gradient(180deg, rgba(47, 29, 72, 0.95), rgba(31, 20, 46, 0.95));
  border-color: rgba(227, 133, 255, 0.3);
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(0,0,0,.2), var(--forge-glow-purple);
}
button:active { transform: translateY(0); filter: brightness(.96); }
button.primary, button[type="submit"], button[data-primary="true"] {
  background: linear-gradient(135deg, var(--forge-purple), var(--forge-purple-2), var(--accent));
  background-size: 180% 180%;
  color: #fff;
  border-color: rgba(227, 133, 255, .34);
  box-shadow: 0 10px 30px rgba(111, 63, 193, .24), inset 0 1px 0 rgba(255,255,255,.14);
}
button.primary:hover, button[type="submit"]:hover { animation: forge-button-shine 900ms ease forwards; }
button.ghost { background: rgba(255,255,255,.045); }

input, textarea, select {
  width: 100%;
  background: linear-gradient(180deg, rgba(14,8,22,.96), rgba(8,5,13,.96));
  color: var(--text);
  border: 1px solid rgba(227,133,255,.15);
  border-radius: var(--forge-radius-md);
  padding: 10px 12px;
  outline: none;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03);
}
input:hover, textarea:hover { border-color: rgba(227,133,255,.25); }
input::placeholder, textarea::placeholder { color: rgba(191,175,216,.62); }
input:focus, textarea:focus {
  border-color: rgba(227,133,255,.55);
  background-color: var(--forge-input-soft);
  box-shadow: 0 0 0 3px rgba(227,133,255,.09), inset 0 1px 0 rgba(255,255,255,.04);
}
textarea { resize: none; }
.hidden { display: none !important; }
.muted, .dim { color: var(--forge-muted); }
.ok { color: var(--forge-green); }
.err { color: var(--forge-red); font-weight: 800; }
.warn { color: var(--forge-yellow); }
.accent { color: var(--forge-pink-soft); }

#app, .authGate {
  position: relative;
  z-index: 2;
  height: 100vh;
}
.authGate { display: grid; place-items: center; padding: 22px; }
.loginCard {
  width: min(920px, 100%);
  background: var(--forge-modal);
  border: 1px solid var(--forge-border);
  border-radius: var(--forge-radius-lg);
  overflow: hidden;
  box-shadow: var(--forge-shadow-deep);
  backdrop-filter: blur(18px);
}
.loginHead {
  min-height: 54px;
  padding: 14px 18px;
  background: rgba(16, 11, 25, .94);
  border-bottom: 1px solid var(--forge-border);
  color: var(--forge-pink-soft);
  font-weight: 900;
}
.loginBody { padding: 18px; }
.loginBody h1 { margin: 0 0 8px; font-size: 34px; letter-spacing: -.04em; }
.formGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.authForm { margin-top: 16px; }
.loginActions { grid-column: 1 / -1; display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
label { color: var(--forge-muted); font-weight: 800; display: grid; gap: 7px; }

.topbar {
  height: 58px;
  background: var(--header);
  border-bottom: 1px solid var(--forge-border);
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 8px 14px;
  box-shadow: 0 10px 30px rgba(0,0,0,.28);
  backdrop-filter: blur(18px);
}
.brand { display: flex; align-items: center; gap: 8px; min-width: 150px; font-size: 18px; font-weight: 900; }
.diamond { color: var(--forge-pink); text-shadow: 0 0 18px rgba(227,133,255,.52); }
.tabs { display: flex; align-items: center; gap: 8px; overflow-x: auto; }
.tabbtn {
  padding: 8px 13px;
  border-radius: 999px;
  color: var(--forge-muted);
  white-space: nowrap;
  background: rgba(16, 11, 25, .72);
}
.tabbtn.active {
  color: #fff;
  border-color: rgba(227,133,255,.34);
  background: linear-gradient(180deg, rgba(63,38,94,.92), rgba(33,22,48,.92));
  box-shadow: var(--forge-glow-purple);
}
.rightTop { margin-left: auto; display: flex; align-items: center; gap: 10px; min-width: 0; }
.rightTop .ok { font-family: var(--font); font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 260px; }

.main { height: calc(100vh - 58px); min-height: 0; position: relative; z-index: 2; }
.tab { display: none; height: 100%; min-height: 0; }
.tab.active { display: grid; }
.pictativeTab {
  grid-template-columns: 286px minmax(0, 1fr) 340px;
  grid-template-rows: 100%;
  background: transparent;
}
.strip { display: none; }
.leftPrefs, .rightSide {
  min-height: 0;
  background: var(--forge-sidebar);
  border-right: 1px solid var(--forge-border);
  box-shadow: var(--forge-shadow-panel);
  backdrop-filter: blur(18px);
}
.leftPrefsInner { height: 100%; display: flex; flex-direction: column; min-width: 0; }
.prefHead, .sideHead {
  padding: 13px 14px;
  min-height: 48px;
  display: flex;
  align-items: center;
  color: var(--forge-pink-soft);
  font-weight: 900;
  border-bottom: 1px solid rgba(227,133,255,.13);
  background: linear-gradient(180deg, rgba(33,22,48,.74), rgba(16,11,25,.45));
}
.prefsBody {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.section {
  border: 1px solid rgba(227,133,255,.12);
  border-radius: var(--forge-radius-lg);
  padding: 12px;
  background: rgba(12,7,19,.42);
}
.section h3 { margin: 0 0 10px; color: var(--forge-text); font-size: 14px; }
.folderList { display: flex; flex-direction: column; gap: 8px; }
.category {
  width: 100%;
  justify-content: space-between;
  display: flex;
  align-items: center;
  gap: 10px;
  text-align: left;
  min-height: 42px;
  border-radius: var(--forge-radius-md);
  background: rgba(16,11,25,.74);
  color: var(--forge-muted);
}
.category::before { content: "▣"; color: var(--forge-pink); font-size: 11px; }
.category.active {
  color: #fff;
  border-color: rgba(227,133,255,.48);
  background: linear-gradient(135deg, rgba(73,36,128,.92), rgba(111,63,193,.68));
  box-shadow: 0 12px 28px rgba(111,63,193,.14), inset 0 1px 0 rgba(255,255,255,.10);
}
.count { margin-left: auto; color: var(--forge-muted-dark); font: 800 12px var(--font); }
.category.active .count { color: var(--forge-pink-soft); }
.createFolder { display: grid; gap: 9px; }
.hintBox p { margin: 0; line-height: 1.45; font-size: 13px; }

.chatCenter {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  background: rgba(10, 6, 16, .34);
}
.boardCenter { position: relative; }
.contentHead {
  min-height: 76px;
  padding: 14px 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  border-bottom: 1px solid rgba(227,133,255,.11);
  background: linear-gradient(180deg, rgba(17,11,26,.64), rgba(10,6,16,.20));
}
.contentHead h1 { margin: 0; font-size: 30px; letter-spacing: -.04em; }
.actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pill {
  border: 1px solid rgba(227,133,255,.16);
  border-radius: 999px;
  padding: 6px 10px;
  background: rgba(255,255,255,.04);
  color: var(--forge-pink-soft);
  font: 800 12px var(--font);
}
.messages { overflow: auto; min-height: 0; }
.gallery {
  flex: 1;
  padding: 16px;
  column-count: 5;
  column-gap: 14px;
}
.pin {
  width: 100%;
  display: inline-block;
  break-inside: avoid;
  margin: 0 0 14px;
  overflow: hidden;
  border-radius: var(--forge-radius-lg);
  border: 1px solid rgba(227,133,255,.13);
  background: linear-gradient(180deg, rgba(27,18,40,.92), rgba(10,6,16,.94));
  box-shadow: var(--forge-shadow-panel);
}
.pin:hover { border-color: rgba(227,133,255,.28); box-shadow: var(--forge-shadow-panel), var(--forge-glow-purple); }
.pin-media { background: #050309; }
.broken-media {
  min-height: 180px;
  display: grid;
  place-content: center;
  gap: 8px;
  text-align: center;
  color: var(--forge-text);
  text-decoration: none;
  padding: 18px;
}
.broken-media span { color: var(--forge-pink); font-size: 32px; text-shadow: 0 0 18px rgba(227,133,255,.38); }
.broken-media small { color: var(--forge-muted); }
.pin img, .pin video { display: block; width: 100%; height: auto; object-fit: cover; }
.pin video { max-height: 58vh; }
.pin-caption { padding: 10px 12px 12px; }
.pin-caption p { margin: 7px 0 0; line-height: 1.42; white-space: pre-wrap; word-break: break-word; }
.pin-meta { display: flex; justify-content: space-between; gap: 8px; color: var(--forge-muted); font: 800 12px var(--font); }
.emptyBoard {
  position: absolute;
  inset: 96px 16px 16px;
  display: grid;
  place-content: center;
  text-align: center;
  color: var(--forge-muted);
  border: 1px dashed rgba(227,133,255,.22);
  border-radius: var(--forge-radius-lg);
  background: rgba(12,7,19,.42);
}
.emptyDiamond { color: var(--forge-pink); font-size: 42px; text-shadow: 0 0 24px rgba(227,133,255,.28); }
.emptyBoard h2 { margin: 8px 0 4px; color: var(--forge-text); }
.emptyBoard p { margin: 0; }

.rightSide {
  border-right: 0;
  border-left: 1px solid var(--forge-border);
  display: flex;
  flex-direction: column;
}
.detectBox {
  margin: 12px;
  border: 1px solid rgba(227,133,255,.12);
  border-radius: var(--forge-radius-lg);
  padding: 12px;
  background: rgba(12,7,19,.42);
  line-height: 1.45;
}
.activeFolderBox > div:first-child { color: var(--forge-pink-soft); font-weight: 900; }
.sideMessages {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 0 12px 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.message {
  max-width: 94%;
  align-self: flex-start;
  padding: 10px 11px;
  border: 1px solid rgba(227,133,255,.13);
  border-radius: var(--forge-radius-lg);
  background: rgba(12,7,19,.66);
  box-shadow: 0 8px 20px rgba(0,0,0,.12);
}
.message.mine {
  align-self: flex-end;
  background: linear-gradient(180deg, rgba(33,22,48,.88), rgba(16,11,25,.94));
  border-color: rgba(137,86,232,.32);
}
.meta { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 5px; color: var(--forge-muted); font: 800 12px var(--font); }
.body { line-height: 1.42; white-space: pre-wrap; word-break: break-word; }
.chat-thumb { margin-top: 8px; overflow: hidden; border: 1px solid rgba(227,133,255,.12); border-radius: var(--forge-radius-md); background: #050309; }
.chat-thumb img, .chat-thumb video { display: block; max-width: 100%; max-height: 210px; object-fit: contain; }
.composer {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
  padding: 12px;
  border-top: 1px solid rgba(227,133,255,.12);
  background: rgba(17,11,26,.72);
}
.composer textarea { min-height: 46px; max-height: 28vh; }

.floating-upload {
  position: fixed;
  z-index: 30;
  right: 360px;
  bottom: 26px;
  width: 58px;
  height: 58px;
  padding: 0;
  border-radius: 19px;
  font-size: 30px;
  line-height: 1;
  background: linear-gradient(135deg, var(--forge-purple), var(--forge-purple-2), var(--accent));
  color: #fff;
  box-shadow: 0 14px 34px rgba(111,63,193,.34), 0 0 0 2px rgba(227,133,255,.14), inset 0 1px 0 rgba(255,255,255,.18);
}
.toast {
  position: fixed;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  z-index: 40;
  padding: 9px 13px;
  border-radius: 999px;
  background: rgba(10,6,16,.96);
  border: 1px solid rgba(227,133,255,.28);
  color: var(--forge-pink-soft);
  box-shadow: var(--forge-shadow-panel);
  font-weight: 800;
}

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #08050d; }
::-webkit-scrollbar-thumb { background: #3a2456; border-radius: 999px; border: 2px solid #08050d; }
::-webkit-scrollbar-thumb:hover { background: var(--forge-purple-3); }

@media (max-width: 1420px) {
  .pictativeTab { grid-template-columns: 270px minmax(0, 1fr) 320px; }
  .gallery { column-count: 4; }
  .floating-upload { right: 340px; }
}
@media (max-width: 1120px) {
  body { overflow: auto; }
  #app { min-height: 100vh; height: auto; }
  .main { height: auto; min-height: calc(100vh - 58px); }
  .pictativeTab { grid-template-columns: 1fr; grid-template-rows: auto minmax(70vh, auto) minmax(55vh, auto); }
  .leftPrefs, .rightSide { border: 0; border-bottom: 1px solid var(--forge-border); }
  .prefsBody { max-height: 260px; }
  .gallery { column-count: 3; min-height: 60vh; }
  .floating-upload { right: 24px; }
}
@media (max-width: 720px) {
  .topbar { height: auto; min-height: 58px; flex-wrap: wrap; }
  .rightTop { margin-left: 0; width: 100%; justify-content: space-between; }
  .gallery { column-count: 2; }
  .formGrid { grid-template-columns: 1fr; }
}
@media (max-width: 460px) { .gallery { column-count: 1; } }
