Здесь делается вжух 🪄

настройки
Шрифт в постах
      [НОВОСТИ ТУТ] #БАРГЕСТ ПРОТИВ ВУДУИСТОВ пвп или зассал? #МЭРИЯ ТЕСТИРУЕТ ВНЕДРЕНИЕ ИИ В ГОРОДСКИЕ СИСТЕМЫ УПРАВЛЕНИЯ ебанёт? не должно!
      Loco
      D'Nash
      все под колпаком

      Приближение Макс-така она засекает через ответный пинг антенны радиосвязи. Кушинада пробирается вдоль антенны вдвое осторожней, держится подальше от частот аэрокара карателей. Она ищет выход на ближайший коммлинк чтобы в обход локдауна маякнуть Фалько. То ли "сможешь подобрать меня через полчаса?" то ли завещание и некролог в одном небольшом пакете нулей и единиц. И хотя сами системы Макс-така лучше оставить в покое, Люцина возвращается к внутренним камерам. Следит за синхронными движениями карателей, ловит дергающуюся сигнатуру киберпсиха — хороший нетраннер жив только благодаря сочетанию инстинкта самосохраненния с патологическим любопытством.

      Lucyna Kushinada / (moon) dust to dust
      в спотлайте
      звездный дуэт
      прокрутка поколесиком мыши

      datasprawl

      Информация о пользователе

      Привет, Гость! Войдите или зарегистрируйтесь.


      Вы здесь » datasprawl » Тестовый форум » тест личной странички


      тест личной странички

      Сообщений 1 страница 2 из 2

      1

      Код:
      <!--HTML--><style>
      /* ================================================
         CYBERPUNK SYSTEM (CP-*)
         Universal Style v2.2 (Final Fixed)
      =============================================== */
      
      /* [0] FONTS IMPORT (Подключаем шрифты) */
      @import url('https://fonts.googleapis.com/css2?family=Exo+2:ital,wght@0,400;0,600;0,700;1,400&family=Orbitron:wght@400;600;800&family=Tektur:wght@100;400;600;800&family=Rajdhani:wght@400;600;700&family=Raleway:wght@400;600;800&display=swap');
      
      /* [1] GLOBAL VARIABLES & SETTINGS */
      .cp-box {
          /* --- Colors --- */
          --c-bg: #121214;
          --c-bg-h: #1a1a1f;
          --c-el: #1c1c21;
          --c-list: #2b2b2b;
          --c-info: #050505;
          --c-txt: #e0e0e0;
          --c-dim: #909090;
      
          /* --- Accents --- */
          --a-cpyel: #f2e600;
            --a-yel: #FFBF48;
          --a-pink: #ff06b5;
          --a-cyan: #00f0ff;
            --a-blue: #36BFC5;
            --a-red: #E3241A;
          --a-hot: #ff0055;
          --a-bor: rgba(255, 248, 31, 0.5);
          --a-bor-g: #3d3d45;
      
          /* --- Rarity Colors --- */
          --r-com: #e0e0e0;
          --r-unc: #26d1a5;
          --r-rar: #9d4cf0;
          --r-epi: #7d0fae;
          --r-leg: var(--a-yel);
          --r-med: #3d8bfd;
      
          /* --- System --- */
          --f-main: "Tektur", "Rajdhani", "Roboto", sans-serif;
          --anim: 0.25s cubic-bezier(0.2, 0.8, 0.2, 1);
      
          /* --- Shapes --- */
          --clip-card: polygon(0 0, 100% 0, 100% calc(100% - 15px), calc(100% - 15px) 100%, 0 100%);
          --clip-tag: polygon(0 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%);
          --clip-btn: polygon(0 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%);
      }
      
      /* [2] BASE RESET */
      .cp-box * {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
      }
      .cp-box {
          width: 95%;
          max-width: 1200px;
          margin: auto;
          padding: 1rem;
          display: flex;
          flex-direction: column;
          gap: 1px;
          font-family: var(--f-main);
          color: var(--c-txt);
          line-height: 1.1;
      }
      
      .cp-box * {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
          -webkit-tap-highlight-color: transparent; /* Вот эта магия */
      }
      
      /* [3] TABS & BUTTONS (Fixed Spacing) */
      .cp-tab {
          display: block;
          width: 100%;
          margin-bottom: -1px;
      }
      
      .cp-btn {
          width: 100%;
          cursor: pointer;
          background: var(--c-el);
          color: var(--a-yel);
          font-weight: 600;
          font-size: 0.8rem;
          text-transform: uppercase;
          letter-spacing: 2px;
          padding: 0.6rem 1rem;
        
          border-left: 6px solid var(--a-yel);
          border-bottom: 1px solid var(--a-bor-g);
      
          display: flex;
          align-items: center;
          justify-content: space-between;
          clip-path: var(--clip-btn);
          transition: var(--anim);
      }
      
      /* При наведении подсвечиваем границы ярче */
      .cp-btn:hover {
          background: var(--c-bg-h);
          color: var(--a-blue);
          border-color: var(--a-blue);
          padding-left: 30px;
          letter-spacing: 4px;
          position: relative;
            text-shadow: 0px 0px 8px #36BFC5, 4px 4px 0 rgba(54, 191, 197, 0.3), 8px 8px 0 rgba(54, 191, 197, 0.1);
      }
      
      .cp-btn.i_active {
          background: #181f22;
          color: var(--a-blue);
          border-bottom: 1px solid currentColor;
          border-left-color: currentColor;
          z-index: 10;
          position: relative;
          text-shadow: 0px 0px 8px #36BFC5, 4px 4px 0 rgba(54, 191, 197, 0.3), 8px 8px 0 rgba(54, 191, 197, 0.1);
      }
      
      /* Стрелочка */
      .cp-mark {
          width: 0;
          height: 0;
          border-left: 6px solid transparent;
          border-right: 6px solid transparent;
          border-top: 6px solid var(--a-yel);
          transition: var(--anim);
      }
      .cp-btn:hover .cp-mark {
          border-top-color: currentColor;
      }
      .cp-btn.i_active .cp-mark {
          transform: rotate(-180deg);
          border-top-color: currentColor;
      }
      
      /* [4] CONTENT WRAPPER */
      .cp-list {
          display: none; 
          background: var(--c-list);
          padding: 0.5rem;
      }
      
      .cp-info {
          display: block;
          font-size: 0.65rem;
          color: var(--c-dim);
          text-align: right;
          padding: 0.5rem 1rem;
          margin-bottom: 0.5rem;
          background: var(--c-info);
          line-height: 1.5;
      }
      .cp-info b {
          font-weight: 600;
          letter-spacing: 1px;
          color: var(--a-yel);
      }
      .cp-info a {
          color: var(--a-red);
          text-decoration: none;
          border-bottom: 1px dashed var(--a-red);
      }
      
      /* [5] THE GRID (MODES) */
      .cp-grid {
          display: grid;
          gap: 0.25rem;
          grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
      }
      
      /* -- Modes -- */
      .cp-grid.mode-shop {
          grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
      }
      .cp-grid.mode-achiv {
          grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
      }
      .cp-grid.mode-icon {
          grid-template-columns: repeat(auto-fill, minmax(75px, 1fr));
      }
      .cp-grid.mode-banner {
          grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
      }
      .cp-grid.mode-cover {
          grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
      }
      
      /* [6] CARD (GRID LAYOUT) */
      .cp-card {
          position: relative;
          background: var(--c-bg); border: 1px solid var(--a-bor);
          
          /* ИЗМЕНЕНИЕ: Используем Grid вместо Flex */
          display: grid;
          /* 1fr (Верх: картинка/описание) | auto (Низ: Тайтл по размеру текста) */
          grid-template-rows: 1fr auto; 
          
          width: 100%; height: 100%;
          padding: 1px; clip-path: var(--clip-card); transition: var(--anim);
      }
      .cp-card:hover {
          transform: translateY(-4px); background: var(--c-bg-h);
          border-color: var(--a-yel); z-index: 5;
      }
      
      /* [7] TITLE (AUTO HEIGHT) */
      .cp-title {
          grid-row: 2;
          z-index: 20;
          height: auto; 
          min-height: 20px; /* Минимальная высота для красоты */
          
          font-size: 0.7rem; font-weight: 600; font-align: left; text-transform: uppercase; letter-spacing: 0.5px;
          color: #fff; background: var(--c-el);
          
          display: flex; align-items: center; /* Центруем текст по вертикали */
          padding: 4px 5px 4px 5px;
          
          border-bottom: 1px solid rgba(255, 248, 31, 0.5); 
          border-top: 1px solid rgba(255,255,255,0.05);
          
          position: relative; clip-path: var(--clip-card);
          backface-visibility: hidden; transform: translateZ(0);
      }
      .cp-card:hover .cp-title {
          background: var(--c-bg-h); color: var(--a-blue); border-bottom-color: var(--a-blue);
      }
      
      /* [8] DESCRIPTION (UPDATED LOGIC) */
      .cp-desc {
          position: absolute; 
          top: 25%;
          left: 0;
          bottom: 20%;
          width: 100%; height: auto; /* На всю карточку */
          padding: 5px 5px 0 5px; padding-bottom: 20px; /* Паддинг снизу, чтобы текст не ушел под тайтл */
          font-size: 0.6rem; color: var(--c-txt); text-align: left;
          opacity: 0; transform: translateY(10px);
          transition: 0.3s cubic-bezier(0.2, 0.8, 0.2, 1); 
          z-index: 2; 
          background: rgba(19, 19, 22, 0.95); 
          overflow-y: auto; 
          pointer-events: none; 
            overflow-wrap: break-word; /* Перенос длинных слов */
          hyphens: auto; /* Автоматическая расстановка переносов, если браузер умеет */
      }
      
      .cp-title:hover ~ .cp-desc, 
      .cp-arrow:hover ~ .cp-desc, 
      .cp-desc:hover,
      .cp-card.is-desc-open .cp-desc {
          opacity: 1; transform: translateY(0); 
          pointer-events: auto;
          border: 1px solid rgba(0, 240, 255, 0.09);
          box-shadow: inset 0px 0px 30px 30px rgba(0, 240, 255, 0.05);
      }
      
      /* Кастомный скроллбар для описания */
      .cp-desc::-webkit-scrollbar {
          width: 4px; /* Тоненький */
      }
      .cp-desc::-webkit-scrollbar-track {
          background: rgba(0,0,0,0.3); 
      }
      .cp-desc::-webkit-scrollbar-thumb {
          background: var(--a-blue); /* Цвет ползунка */
          border-radius: 2px;
      }
      .cp-desc::-webkit-scrollbar-thumb:hover {
          background: var(--a-yel); /* Желтый при наведении */
      }
      
      /* [9] INFO BADGE & POPUP (Fixed v3.0) */
      .cp-info-icon {
          position: absolute;
          top: 3px;
          right: 3px;
          width: 13px;
          height: 13px;
          display: flex;
          justify-content: center;
          align-items: center;
          font-size: 0.55rem;
          font-weight: bold;
          font-family: monospace;
          color: var(--a-blue);
          cursor: help;
          z-index: 20;
      }
      .cp-info-icon::before {
          content: "";
          position: absolute;
          inset: 0;
          background: rgba(0, 240, 255, 0.3);
          border: 1px solid var(--a-blue);
          clip-path: polygon(0 0, 100% 0, 100% calc(100% - 5px), calc(100% - 5px) 100%, 0 100%);
          transition: 0.3s;
          z-index: -1;
      }
      .cp-info-icon:hover::before {
          background: var(--a-blue);
          box-shadow: 0 0 10px var(--a-blue);
      }
      .cp-info-icon:hover {
          color: #000;
      }
      
      /* Popup */
      .cp-lore-popup {
          position: absolute;
          top: 100%;
          right: -1px;
          width: 123px;
          height: auto;
          background: rgba(0, 0, 0, 0.90);
          border: 1px solid var(--a-blue);
      
          padding: 5px 8px;
          font-size: 0.6rem;
          font-weight: lighter;
          line-height: 1;
          color: #fff;
          text-align: left;
            white-space: normal; /* Разрешаем словам переноситься */
            overflow-wrap: break-word; /* Перенос длинных слов */
            hyphens: auto; /* Автоматическая расстановка переносов, если браузер умеет */
          visibility: hidden;
          opacity: 0;
          transform: translateY(-5px);
          transition: 0.3s cubic-bezier(0.2, 0.8, 0.2, 1);
          pointer-events: none;
          z-index: 100;
      
      }
      .cp-info-icon:hover .cp-lore-popup {
          visibility: visible;
          opacity: 1;
          transform: translateY(2px);
      }
      
      /* [10] ARROW & TAGS */
      .cp-arrow {
          width: 0;
          height: 0;
          margin: 3px auto;
          border-left: 5px solid transparent;
          border-right: 5px solid transparent;
          border-top: 5px solid var(--a-yel);
          transition: var(--anim);
          z-index: 3;
      }
      .cp-card:hover .cp-arrow {
          transform: rotate(180deg);
          border-top-color: var(--a-blue);
      }
      
      .cp-tag {
          position: absolute;
          top: 3px;
          left: 3px;
          z-index: 10;
          font-size: 0.55rem;
          font-weight: 600;
          color: #050505;
          padding: 3px 6px;
          clip-path: var(--clip-tag);
          transition: var(--anim);
      }
      .cp-card:hover .cp-tag {
          opacity: 0;
          transform: translateY(-10px);
      }
      
      /* Tag Colors */
      .t-common {
          background: var(--r-com);
      }
      .t-green {
          background: var(--r-unc);
      }
      .t-blue {
          background: var(--r-med);
          color: #fff;
      }
      .t-rare {
          background: var(--r-rar);
          color: #fff;
      }
      .t-epic {
          background: var(--r-epi);
          color: #fff;
      }
      .t-legend,
      .t-quest {
          background: var(--r-leg);
      }
      
      /* [11] IMAGES LOGIC */
      .cp-img {
          /* Тоже живет на первом этаже */
          grid-row: 1; grid-column: 1;
          position: relative; width: 100%; height: 100%;
          min-height: 50px; 
          display: flex; justify-content: center; align-items: center;
          overflow: hidden; margin-bottom: 0;
      }
      .cp-img:hover img {
          transform: scale(1.1);
          filter: saturate(150%) brightness(110%);
          z-index: 3;
      }
      
      /* -- Mode: STANDARD (Stretch to fit) -- */
      .cp-grid .cp-img img {
          width: 100%;
          height: 100%;
          object-fit: contain;
          padding: 2px;
          transition: var(--anim);
      }
      
      /* -- Mode: ICON (Auto Size, No Stretch) -- */
      .cp-grid.mode-icon .cp-img img {
          width: auto;
          height: auto;
          max-width: 100%;
          max-height: 100%;
          padding: 0.25rem;
      }
      
      /* -- Mode: SHOP, ACHIV (Фиксированная высота 100px) -- */
      .cp-grid.mode-shop .cp-img img,
      .cp-grid.mode-achiv .cp-img img { 
          aspect-ratio: auto; 
          height: 100px;
      }
      
      .cp-grid.mode-shop .cp-img img,
      .cp-grid.mode-achiv .cp-img img {
          width: auto; 
          height: auto;
          max-width: 100%; 
          max-height: 100%;
          padding: 1%;
      }
      
      /* -- Mode: BANNER (Wide) -- */
      .cp-grid.mode-banner .cp-img {
          aspect-ratio: 250 / 40;
      }
      .cp-grid.mode-banner .cp-img img {
          width: auto !important;
          height: auto !important;
          max-width: 100% !important;
          max-height: 100% !important;
          object-fit: contain;
      }
      
      /* -- Mode: COVER (Crop) -- */
      .cp-grid.mode-cover .cp-img img {
          width: 100% !important;
          height: 100% !important;
          object-fit: cover !important; 
          padding: 0;
      }
      
      /* [12] RESPONSIVE & MOBILE OPTIMIZATION */
      @media (max-width: 768px) {
          
          /* 1. Контейнер на всю ширину */
          .cp-box {
              width: 100%;
              padding: 0.5rem; /* Чуть меньше отступов */
          }
      
          /* 2. Сетка: Минимум 2 колонки, но не слишком узкие */
          /* Вместо кучи mode-* правил, делаем универсальный фикс, чтобы не сплющивало */
          .cp-grid,
          .cp-grid.mode-shop,
          .cp-grid.mode-achiv {
              /* minmax(140px...) гарантирует, что карточка не станет тоньше 140px. 
                 Если экран совсем узкий, перестроится в 1 колонку. */
              grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)) !important; 
              gap: 0.5rem;
          }
          
          /* Иконки можно поменьше */
          .cp-grid.mode-icon {
              grid-template-columns: repeat(auto-fill, minmax(60px, 1fr)) !important;
          }
      
          /* Баннеры на всю ширину */
          .cp-grid.mode-banner {
              grid-template-columns: 1fr !important;
          }
      
          /* 3. Шрифты: Делаем читабельно! (минимум 10-11px) */
          .cp-title {
              font-size: 0.7rem; /* Было 0.5rem - слишком мелко */
              min-height: 30px; /* Увеличим зону для пальца */
          }
          .cp-desc {
              font-size: 0.65rem; 
              padding-top: 5px; /* Больше воздуха */
          }
          .cp-tag {
              font-size: 0.6rem;
              padding: 2px 5px;
          }
      
          /* 4. Кнопки: Убираем "дёргание" при тапе */
          .cp-btn {
              font-size: 0.75rem; /* Чуть компактнее текст */
              padding: 0.6rem;    /* Стандартный паддинг */
          }
          
          /* ВАЖНО: Отключаем анимацию сдвига паддинга на мобильных, 
             иначе при клике кнопка "убегает" из-под пальца */
          .cp-btn:hover,
          .cp-btn.i_active {
              padding-left: 0.6rem; /* Возвращаем как было */
              letter-spacing: 2px;  /* Не раздвигаем буквы */
          }
          
          /* 5. Карточки: Убираем лишние анимации */
          .cp-card:hover {
              transform: none; /* Убираем подпрыгивание карточки */
          }
          
          /* Убираем зум картинки, чтобы не лагало при скролле */
          .cp-img:hover img {
              transform: none; 
              filter: none;
          }
      
          /* Лоре-попап (знак вопроса) - делаем его кликабельным и фиксированным, 
             или скрываем, если он мешает */
          .cp-lore-popup {
              width: 140px; /* Фикс ширина */
              top: 100%;    /* Сдвигаем ПОД иконку */
              background: rgba(0, 0, 0, 0.95);
              z-index: 20; /* Чтобы точно перекрыл всё */
          }
      }
      
      /* [EXTRA] Hover-fix for Touch Devices 
         Эти стили сработают ТОЛЬКО если у устройства есть мышка.
         На телефонах анимации будут отключены, чтобы не было "залипания".
      */
      @media (hover: hover) {
          .cp-card:hover {
              transform: translateY(-4px);
          }
          .cp-img:hover img {
              transform: scale(1.1);
          }
          .cp-btn:hover {
              padding-left: 30px;
              letter-spacing: 4px;
          }
      }
      
      /* ================================================
         CYBERPUNK SYSTEM (CP-*)
         Universal Style v2.2 (Final Fixed)
      =============================================== */
      
      /* [0] FONTS IMPORT (Подключаем шрифты) */
      @import url('https://fonts.googleapis.com/css2?family=Exo+2:ital,wght@0,400;0,600;0,700;1,400&family=Orbitron:wght@400;600;800&family=Tektur:wght@100;400;600;800&family=Rajdhani:wght@400;600;700&family=Raleway:wght@400;600;800&display=swap');
      
      /* [1] GLOBAL VARIABLES & SETTINGS */
      .cp-box {
          /* --- Colors --- */
          --c-bg: #121214;
          --c-bg-h: #1a1a1f;
          --c-el: #1c1c21;
          --c-list: #2b2b2b;
          --c-info: #050505;
          --c-txt: #e0e0e0;
          --c-dim: #909090;
      
          /* --- Accents --- */
          --a-cpyel: #f2e600;
            --a-yel: #FFBF48;
          --a-pink: #ff06b5;
          --a-cyan: #00f0ff;
            --a-blue: #36BFC5;
            --a-red: #E3241A;
          --a-hot: #ff0055;
          --a-bor: rgba(255, 248, 31, 0.5);
          --a-bor-g: #3d3d45;
      
          /* --- Rarity Colors --- */
          --r-com: #e0e0e0;
          --r-unc: #26d1a5;
          --r-rar: #9d4cf0;
          --r-epi: #7d0fae;
          --r-leg: var(--a-yel);
          --r-med: #3d8bfd;
      
          /* --- System --- */
          --f-main: "Tektur", "Rajdhani", "Roboto", sans-serif;
          --anim: 0.25s cubic-bezier(0.2, 0.8, 0.2, 1);
      
          /* --- Shapes --- */
          --clip-card: polygon(0 0, 100% 0, 100% calc(100% - 15px), calc(100% - 15px) 100%, 0 100%);
          --clip-tag: polygon(0 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%);
          --clip-btn: polygon(0 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%);
      }
      
      /* [2] BASE RESET */
      .cp-box * {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
      }
      .cp-box {
          width: 95%;
          max-width: 1200px;
          margin: auto;
          padding: 1rem;
          display: flex;
          flex-direction: column;
          gap: 1px;
          font-family: var(--f-main);
          color: var(--c-txt);
          line-height: 1.1;
      }
      
      .cp-box * {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
          -webkit-tap-highlight-color: transparent; /* Вот эта магия */
      }
      
      
      /* ========================================================================
         [15] NCPD DATABASE PROFILE v4.0 (FINAL POLISHED)
      ======================================================================== */
      
      /* --- 1. MAIN CONTAINER --- */
      .profile-db {
          background: var(--c-bg);
          border: 1px solid var(--a-bor-g);
          box-shadow: 0 0 20px rgba(0,0,0,0.5);
          padding: 0 !important;
          max-width: 850px; 
          margin: auto;
          position: relative;
          overflow: hidden;
      }
      
      /* Decor Corners */
      .db-corner-tl {
          position: absolute; top: 0; left: 0; width: 20px; height: 20px;
          border-top: 2px solid var(--a-yel); border-left: 2px solid var(--a-yel);
          z-index: 10;
      }
      .db-corner-br {
          position: absolute; bottom: 0; right: 0; width: 20px; height: 20px;
          border-bottom: 2px solid var(--a-yel); border-right: 2px solid var(--a-yel);
          z-index: 10;
      }
      
      /* --- 2. HEADER --- */
      .db-header {
          position: relative; height: 180px; background: #000;
          border-bottom: 2px solid var(--a-yel);
      }
      .db-cover {
          width: 100%; height: 100%; opacity: 0.5;
          filter: grayscale(80%) sepia(20%) contrast(120%);
      }
      .db-cover img { width: 100%; height: 100%; object-fit: cover; }
      .db-scanline {
          position: absolute; inset: 0;
          background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,0) 50%, rgba(0,0,0,0.2) 50%, rgba(0,0,0,0.2));
          background-size: 100% 4px; pointer-events: none;
      }
      .db-overlay-text {
          position: absolute; top: 10px; left: 10px;
          font-family: monospace; font-size: 10px; color: rgba(255,255,255,0.3);
          letter-spacing: 2px;
      }
      
      /* ID Card */
      .db-id-card {
          position: absolute; bottom: -25px; left: 25px;
          display: flex; align-items: flex-end; gap: 15px; z-index: 5;
      }
      .db-avatar-frame {
          width: 100px; height: 100px;
          background: #000; padding: 2px;
          border: 1px solid var(--a-blue);
          clip-path: polygon(20% 0, 100% 0, 100% 80%, 80% 100%, 0 100%, 0 20%);
          position: relative;
      }
      .db-avatar-frame img { width: 100%; height: 100%; object-fit: cover; }
      .db-status-light {
          position: absolute; bottom: 2px; right: 2px;
          width: 10px; height: 10px; background: #555;
          border: 1px solid #000;
      }
      .db-status-light.online { background: #0f0; box-shadow: 0 0 8px #0f0; }
      .db-status-light.busy { background: var(--a-red); }
      
      /* Names */
      .db-names { padding-bottom: 30px; text-shadow: 2px 2px 0 #000; }
      .db-name-glitch {
          font-size: 1.8rem; font-weight: 900; color: #fff;
          text-transform: uppercase; line-height: 1;
          font-family: var(--f-main); letter-spacing: 1px;
      }
      .db-alias {
          font-size: 0.8rem; color: var(--a-yel); font-family: monospace;
          background: rgba(0,0,0,0.8); padding: 2px 6px;
          display: inline-block; margin-top: 5px; letter-spacing: 2px;
          border-left: 2px solid var(--a-yel);
      }
      
      /* Player */
      .db-player {
          position: absolute; top: 20px; right: 20px;
          display: flex; align-items: center; gap: 10px;
          background: rgba(0, 0, 0, 0.85); border: 1px solid var(--a-bor-g);
          padding: 6px 12px; cursor: pointer; transition: 0.3s;
          clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
      }
      .db-player:hover { border-color: var(--a-blue); }
      .db-play-btn { color: var(--a-yel); font-size: 10px; }
      .db-track-marquee { width: 120px; overflow: hidden; white-space: nowrap; font-size: 10px; color: #fff; font-family: monospace; }
      
      /* --- 3. NAVIGATION --- */
      .db-nav {
          display: flex; justify-content: flex-end; flex-wrap: wrap;
          padding: 35px 20px 0 20px; background: var(--c-list);
          border-bottom: 1px solid var(--a-bor-g);
      }
      .db-tab-btn {
          background: transparent; border: none; padding: 10px 15px;
          color: var(--c-dim); font-family: var(--f-main);
          font-weight: 700; text-transform: uppercase; letter-spacing: 1px;
          cursor: pointer; transition: 0.3s;
      }
      .db-tab-btn:hover { color: #fff; text-shadow: 0 0 5px var(--a-blue); }
      .db-tab-btn.active {
          color: var(--a-blue); background: rgba(54, 191, 197, 0.08);
          border-bottom: 2px solid var(--a-blue);
      }
      
      /* --- 4. LAYOUT --- */
      .db-content { padding: 25px; min-height: 300px; }
      .db-pane { display: none; animation: slideIn 0.3s; }
      .db-pane.active { display: block; }
      
      .db-grid-info { display: grid; gap: 20px; grid-template-columns: 1fr 1.3fr; }
      .db-col-left, .db-col-right { display: flex; flex-direction: column; gap: 20px; }
      
      /* --- 5. BLOCKS & TYPE --- */
      .db-block {
          background: var(--c-el); padding: 15px;
          border: 1px solid var(--a-bor-g);
          position: relative;
      }
      .db-block::before {
          content: ''; position: absolute; left: 0; top: 10px; bottom: 10px;
          width: 2px; background: var(--a-bor-g);
      }
      .db-block::after {
          content: ''; position: absolute; bottom: 0; right: 0; left: auto;
          width: 0; height: 0; border-style: solid;
          border-width: 0 0 10px 10px; 
          border-color: transparent transparent var(--a-bor-g) transparent;
          opacity: 0.7;
      }
      
      .db-block.highlight {
          background: linear-gradient(90deg, rgba(255, 191, 72, 0.05) 0%, transparent 100%);
          border-color: rgba(255, 191, 72, 0.3);
      }
      .db-block.highlight::before { background: var(--a-yel); }
      
      .db-label { display: block; font-size: 9px; color: var(--c-dim); letter-spacing: 1px; margin-bottom: 5px; font-weight: bold; }
      .db-value { font-size: 12px; font-weight: bold; color: #fff; text-transform: uppercase; font-family: monospace; }
      .db-occupation { font-size: 16px; font-weight: 800; color: var(--a-yel); letter-spacing: 1px; text-transform: uppercase; }
      .db-text { font-size: 12px; line-height: 1.5; color: var(--c-txt); margin: 0; text-align: justify; }
      .db-row { display: flex; justify-content: space-between; align-items: center; }
      
      /* Стиль для мини-иконок в гардеробе */
      .db-icon-thumb {
          max-height: 45px;  /* Было 80px */
          width: 45px;   /* Было 80px */
          border: 1px solid #333;
          flex-shrink: 0;
          object-fit: cover;
        padding: 2px;
      }
      
      .db-icon-thumb img {
          height: 100%;
          width: 100%;   /* Было 80px */
          object-fit: cover;
        padding: 2px;
      }
      
      /* --- 6. FLAVOR --- */
      .db-sys-label {
          position: absolute; top: 5px; right: 5px;
          background: transparent; border: none;
          color: var(--c-dim); font-family: monospace; font-size: 8px;
          letter-spacing: 1px; opacity: 0.4;
          pointer-events: none; z-index: 1;
      }
      .db-decor-footer {
          margin-top: 15px; font-family: monospace; font-size: 9px; color: #333;
          text-align: right; border-top: 1px dashed #333; padding-top: 5px;
      }
      .db-info-sub { font-family: monospace; font-size: 10px; color: var(--a-blue); margin-bottom: 10px; text-align: right; }
      
      /* --- [NEW] STASH LAYOUT & SEPARATORS --- */
      
      /* 1. Техническая строка статистики (слева) */
      .db-stash-stats {
          display: flex;
          align-items: center;
          gap: 10px;
          font-family: monospace;
          font-size: 10px;
          color: var(--c-dim);
          margin-bottom: 10px;
      }
      /* Мини-бар вместимости */
      .db-mini-bar {
          width: 50px; height: 4px; background: #333; position: relative;
      }
      .db-mini-bar div {
          height: 100%; background: var(--a-blue); 
          box-shadow: 0 0 5px var(--a-blue);
      }
      
      /* 2. Разделитель категорий (V_APARTMENT_01 и т.д.) */
      .db-separator {
          display: flex;
          align-items: center;
          gap: 10px;
          margin: 15px 0 10px 0;
          font-family: monospace;
          font-size: 11px;
          color: var(--a-yel);
          text-transform: uppercase;
          letter-spacing: 2px;
          font-weight: bold;
      }
      /* Линия справа от текста */
      .db-separator::after {
          content: '';
          flex-grow: 1;
          height: 1px;
          background: repeating-linear-gradient(90deg, var(--a-yel), var(--a-yel) 2px, transparent 2px, transparent 4px);
          opacity: 0.5;
      }
      /* Квадратик слева (декор) */
      .db-separator::before {
          content: '■';
          font-size: 8px;
          color: var(--a-yel);
      }
      
      /* --- 7. NET CONSOLE --- */
      .net-console { background: rgba(0,0,0,0.6); padding: 12px; font-family: 'Consolas', 'Monaco', monospace; }
      .net-header { font-size: 9px; letter-spacing: 1px; margin-bottom: 8px; display: flex; justify-content: flex-start; gap: 8px; }
      .net-scan-track { width: 100%; height: 2px; background: #333; position: relative; overflow: hidden; margin-bottom: 8px; }
      .net-scan-bar { width: 30%; height: 100%; background: var(--a-red); box-shadow: 0 0 5px var(--a-red); position: absolute; top: 0; left: -30%; animation: netScan 2s infinite linear; }
      .net-log { font-size: 9px; line-height: 1.4; color: var(--a-blue); opacity: 0.9; }
      
      /* --- 8. SQUARE LISTS (FIXED) --- */
      .db-list { list-style: none; padding: 0; margin: 0; }
      .db-list li {
          position: relative; padding-left: 15px; margin-bottom: 6px;
          font-size: 11px; line-height: 1.3; color: var(--c-txt); border: none;
      }
      .db-list li::before {
          content: ''; position: absolute; left: 0; top: 5px;
          width: 4px; height: 4px; background: var(--a-blue);
          box-shadow: 0 0 2px var(--a-blue);
      }
      
      /* --- 9. RIDE --- */
      .db-ride-container { position: relative; height: 100px; width: 100%; background: #000; }
      .db-ride-container img { width: 100%; height: 100%; object-fit: cover; opacity: 0.8; }
      .db-ride-overlay {
          position: absolute; bottom: 0; left: 0; right: 0;
          background: repeating-linear-gradient(45deg, rgba(0,0,0,0.8), rgba(0,0,0,0.8) 2px, rgba(0,0,0,0.9) 2px, rgba(0,0,0,0.9) 4px);
          border-top: 1px solid var(--a-yel);
          padding: 5px 10px; display: flex; justify-content: space-between; align-items: center;
      }
      .db-ride-overlay span { font-size: 8px; color: var(--c-dim); font-family: monospace; }
      .db-ride-overlay b { font-size: 10px; color: var(--a-yel); text-transform: uppercase; letter-spacing: 1px; }
      
      /* --- 10. NETWORK --- */
      .db-network-grid { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 5px; }
      .db-net-item { width: 45px; height: 45px; position: relative; border: 1px solid #444; cursor: help; transition: 0.2s; }
      .db-net-item:hover { transform: scale(1.1); border-color: #fff; z-index: 2; }
      .db-net-item img { width: 100%; height: 100%; object-fit: cover; }
      .db-net-item.empty { display: flex; align-items: center; justify-content: center; color: #444; border: 1px dashed #444; }
      .db-net-status { position: absolute; top: -2px; right: -2px; width: 8px; height: 8px; border-radius: 50%; border: 1px solid #000; }
      .db-net-status.green { background: #0f0; box-shadow: 0 0 5px #0f0; }
      .db-net-status.red { background: #f00; box-shadow: 0 0 5px #f00; }
      .db-net-status.yellow { background: var(--a-yel); }
      
      /* --- 11. SPLIT VIEW & VIEWER (FIXED) --- */
      .db-split-layout { display: grid; grid-template-columns: 1fr 200px; gap: 15px; }
      /* WRAPPER FIX */
      .db-left-wrapper { display: flex; flex-direction: column; gap: 10px; }
      
      .db-item-list {
          display: grid;
          /* Было 50px, ставим 90px (с отступами будет как раз около 100) */
          grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
          gap: 8px; /* Чуть больше воздуха */
          align-content: start;
      }
      .db-item { aspect-ratio: 1/1; cursor: pointer; border: 1px solid transparent; background: var(--c-el); transition: 0.2s; }
      .db-item:hover { border-color: var(--a-blue); transform: scale(1.05); z-index: 2; }
      .db-item img { width: 100%; height: 100%; object-fit: cover; }
      
      .db-viewer { background: rgba(0,0,0,0.3); border: 1px solid var(--a-blue); padding: 10px; position: sticky; top: 10px; min-height: 150px; }
      .db-viewer-empty { height: 100%; display: flex; align-items: center; justify-content: center; color: var(--c-dim); font-size: 9px; font-family: monospace; opacity: 0.5; min-height: 120px; }
      .db-viewer-content { display: none; padding-top: 15px; /* FIX: PADDING FOR LABEL */ }
      
      /* ================================================
         [17] VIEWER IMAGE FIX (Патч для больших картинок)
      =============================================== */
      
      /* ================================================
         [17] VIEWER IMAGE FIX v2 (Больше не растягивает маленькие)
      =============================================== */
      
      #v-img, #s-img {
          /* Самое важное: */
          max-width: 100%;       /* Не больше ширины контейнера, но и не больше своего размера */
          width: auto;           /* Используем родную ширину, если влезает */
          height: auto;          /* Сохраняем пропорции */
          max-height: 250px;     /* Ограничение по высоте для длинных картинок */
          
          /* Центрирование */
          display: block;        
          margin: 0 auto 10px auto; /* 0 сверху, auto по бокам (центр), 10px снизу */
          
          /* Оформление */
          object-fit: contain;
          border: 1px solid #333;
          background: rgba(0,0,0,0.3); /* Темный фон, чтобы маленькие иконки не терялись */
          box-shadow: 0 0 5px rgba(0,0,0,0.3);
      }
      .db-v-meta { border-bottom: 1px solid var(--a-bor-g); padding-bottom: 5px; margin-bottom: 8px; }
      #v-title { display: block; font-size: 11px; font-weight: bold; color: var(--a-yel); text-transform: uppercase; }
      #v-date { font-size: 9px; color: var(--c-dim); font-family: monospace; }
      .db-v-desc { font-size: 11px; color: #ddd; line-height: 1.3; margin-top: 10px; }
      
      /* STATUS ROW FIX */
      .db-integrity-row { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; padding: 4px 0; border-bottom: 1px dashed #333; }
      .db-status-box { width: 8px; height: 8px; background: #0f0; box-shadow: 0 0 5px #0f0; flex-shrink: 0; }
      
      .db-scroll-row { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 10px; }
      .db-scroll-row::-webkit-scrollbar { height: 2px; }
      .db-scroll-row::-webkit-scrollbar-thumb { background: var(--a-blue); }
      .db-plaque { height: 35px; width: auto; border: 1px solid #333; }
      .db-bg-thumb { height: 100px; width: auto; border: 1px solid #333; }
      
      /* --- 12. STASH & ANIM --- */
      .cp-card.empty { border: 1px dashed var(--a-bor-g); background: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.02) 5px, rgba(255,255,255,0.02) 10px); }
      .cp-card.empty .cp-title { color: var(--c-dim); background: transparent; border: none; font-size: 9px; }
      .cp-card.empty:hover { transform: none; border-color: var(--c-dim); }
      
      .cp-card.is-placed .cp-tag { display: none; }
      .cp-card.is-placed .cp-img { position: relative; border: none; box-shadow: inset 0 0 0 1px rgba(85, 233, 235, 0.3), inset 0 0 15px rgba(85, 233, 235, 0.1); }
      .cp-card.is-placed .cp-img::after { content: ''; position: absolute; inset: 0; background: rgba(85, 233, 235, 0.15); z-index: 4; pointer-events: none; }
      .cp-card.is-placed .cp-img img { filter: sepia(100%) hue-rotate(130deg) saturate(200%) brightness(130%); opacity: 0.7; }
      .cp-card.is-placed:hover .cp-img img { transform: none !important; filter: sepia(100%) hue-rotate(130deg) saturate(200%) brightness(150%); opacity: 0.9; }
      .cp-card.is-placed .cp-title { color: var(--c-dim); border-bottom-color: var(--c-dim); }
      
      @keyframes netScan { 0% { left: -30%; width: 30%; } 50% { width: 50%; } 100% { left: 100%; width: 30%; } }
      .blink-cursor { animation: blinker 1s step-end infinite; font-weight: bold; color: #fff; }
      @keyframes blinker { 50% { opacity: 0; } }
      @keyframes slideIn { from {opacity: 0; transform: translateY(10px);} to {opacity: 1; transform: translateY(0);} }
      .db-bar { height: 6px; background: #333; width: 100%; position: relative; }
      .db-bar div { height: 100%; background: var(--a-yel); box-shadow: 0 0 5px var(--a-yel); }
      
      /* --- 13. MOBILE --- */
      @media (max-width: 650px) {
          .db-grid-info { grid-template-columns: 1fr; }
          .db-split-layout { grid-template-columns: 1fr; }
          .db-viewer { order: -1; margin-bottom: 15px; min-height: auto; }
          .db-nav { padding-top: 50px; justify-content: center; }
          .db-id-card { bottom: 60px; left: 50%; transform: translateX(-50%); width: 100%; justify-content: center; }
          .db-names { text-align: center; }
      }
      
      /* ========================================================================
         [16] PERSONAL STASH (ISOLATED & ADAPTIVE)
         Специальные стили для инвентаря профиля.
         Не зависят от магазина. Поддерживают любые размеры картинок.
      ======================================================================== */
      
      /* Сетка миниатюр (Слева) */
      .db-stash-list {
          display: grid;
          /* Адаптивные ячейки ~80px */
          grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
          gap: 8px;
          align-content: start;
      }
      
      /* Ячейка предмета */
      .db-stash-item {
          position: relative;
          aspect-ratio: 1/1; /* Всегда квадрат */
          background: var(--c-el); /* Фон ячейки */
          border: 1px solid var(--a-bor-g);
          cursor: pointer;
          transition: 0.2s;
          
          /* ЦЕНТРИРОВАНИЕ КАРТИНКИ ЛЮБОГО РАЗМЕРА */
          display: flex;
          align-items: center;
          justify-content: center;
          padding: 5px; /* Отступ, чтобы картинка не прилипала к краю */
      }
      
      /* Эффект наведения */
      .db-stash-item:hover {
          border-color: var(--a-yel);
          box-shadow: inset 0 0 10px rgba(255, 191, 72, 0.1);
          z-index: 2;
      }
      
      /* Сама картинка (Умное масштабирование) */
      .db-stash-item img {
          max-width: 100%;
          max-height: 100%;
          width: auto;
          height: auto;
          object-fit: contain; /* Вписываем целиком! */
          filter: drop-shadow(0 4px 4px rgba(0,0,0,0.5)); /* Тень для объема */
      }
      
      /* Тег редкости/типа внутри ячейки (маленький) */
      .db-item-tag {
          position: absolute;
          top: 3px; right: 3px;
          font-size: 7px;
          font-weight: bold;
          color: #000;
          padding: 1px 3px;
          font-family: monospace;
          z-index: 2;
          pointer-events: none;
      }
      /* Цвета тегов */
      .tag-gold { background: var(--a-yel); }
      .tag-blue { background: var(--a-blue); }
      .tag-gray { background: #999; }
      
      /* Особый стиль для "Закрытых" (Проданных/Использованных) предметов */
      .db-stash-item.used {
          opacity: 0.6;
          border-style: dashed;
      }
      .db-stash-item.used img {
          filter: grayscale(100%) opacity(0.5);
      }
      
      /* --- Стили для Вьювера (Справа) --- */
      /* (Используем общие стили .db-viewer, но добавляем поле "От кого") */
      
      .db-meta-row {
          display: flex;
          justify-content: space-between;
          font-size: 9px;
          color: var(--c-dim);
          font-family: monospace;
          border-bottom: 1px dashed #333;
          padding-bottom: 4px;
          margin-bottom: 8px;
      }
      </style>

      0

      2

      Код:
      <!--HTML-->
      <div class="cp-box profile-db">
        <div class="db-corner-tl"></div>
        <div class="db-corner-br"></div>
      
        <div class="db-header">
          <div class="db-cover">
            <img src="https://i.imgur.com/AC3xLZa.png" alt="cover">
            <div class="db-scanline"></div>
            <div class="db-overlay-text">NCPD_DB_ACCESS_VER_2.77</div>
          </div>
          
          <div class="db-id-card">
            <div class="db-avatar-frame">
              <img src="https://upforme.ru/uploads/001c/1a/06/2/13242.png" alt="avatar">
              <div class="db-status-light online"></div> 
            </div>
            <div class="db-names">
              <div class="db-name-glitch" data-text="JOHNNY SILVERHAND">JOHNNY SILVERHAND</div>
              <div class="db-alias">TARGET_ID: "SAMURAI"</div>
            </div>
          </div>
      
          <div class="db-player" onclick="toggleDbMusic(this)">
            <audio id="db_audio" loop>
              <source src="https://forumstatic.ru/files/001b/6b/7e/95545.mp3" type="audio/mpeg">
            </audio>
            <div class="db-play-btn">▶</div>
            <div class="db-track-marquee"><span>Samurai - Chippin' In</span></div>
          </div>
        </div>
      
        <div class="db-nav">
          <button class="db-tab-btn active" onclick="openDbTab(event, 'tab-dossier')">FILE</button>
          <button class="db-tab-btn" onclick="openDbTab(event, 'tab-stash')">STASH</button>
          <button class="db-tab-btn" onclick="openDbTab(event, 'tab-badges')">LOGS</button>
          <button class="db-tab-btn" onclick="openDbTab(event, 'tab-wardrobe')">VISUAL</button>
        </div>
      
        <div class="db-content">
      
          <div id="tab-dossier" class="db-pane active">
            <div class="db-grid-info">
              
              <div class="db-col-left">
                
                <div class="db-block highlight">
                  <div class="db-sys-label">SUBJECT_CLASS</div>
                  <span class="db-label">OCCUPATION</span>
                  <div class="db-occupation">ROCKERBOY / MERC</div>
                </div>
      
                <div class="db-block" style="padding: 0; overflow: hidden;">
                  <div class="db-sys-label">ICE_DAEMON_V2.1</div>
                  
                  <div class="net-console">
                    <div class="net-header">
                      <span style="color: var(--c-dim);">NET_STATUS:</span>
                      <span style="color: var(--a-red);">INTRUSION_DETECTED</span>
                    </div>
                    <div class="net-scan-track"><div class="net-scan-bar"></div></div>
                    <div class="net-log">
                      <span>> BLOCKING_PORT_80... [OK]</span><br>
                      <span>> ENCRYPTING_USER_DATA...</span><br>
                      <span class="net-typing">> TRACING_SOURCE<span class="blink-cursor">_</span></span>
                    </div>
                  </div>
                </div>
      
                <div class="db-block">
                  <div class="db-sys-label">INFORMANT_INTEL</div>
                  <span class="db-label">UNVERIFIED REPORTS (СЛУХИ)</span>
                  <ul class="db-list">
                    <li>Никогда не снимает маску на людях.</li>
                    <li>Говорят, должен денег "Тигриным Когтям", поэтому не ходит в Джапан-таун.</li>
                    <li>Видели, как он разговаривает сам с собой.</li>
                  </ul>
                </div>
      
                <div class="db-block" style="padding: 0; border: none; overflow: hidden;">
                   <div class="db-ride-container">
                     <img src="https://i.imgur.com/VuwSYlW.png" alt="visual">
                     <div class="db-ride-overlay">
                       <span>VISUAL_KEY_01:</span>
                       <b>ARCH NAZARÉ</b>
                     </div>
                   </div>
                </div>
      
              </div>
      
              <div class="db-col-right">
                
                <div class="db-block">
                  <div class="db-sys-label">NETWORK_GRAPH</div>
                  <span class="db-label">KNOWN ASSOCIATES</span>
                  <div class="db-network-grid">
                    <div class="db-net-item" title="Judy (Friend)"><img src="https://i.imgur.com/FIwlYeu.png"><div class="db-net-status green"></div></div>
                    <div class="db-net-item" title="Smasher (Enemy)"><img src="https://i.imgur.com/p039Zhx.png"><div class="db-net-status red"></div></div>
                    <div class="db-net-item" title="Rogue"><img src="https://placehold.co/50x50/333/999?text=?"><div class="db-net-status yellow"></div></div>
                    <div class="db-net-item empty">+</div>
                  </div>
                </div>
      
                <div class="db-block" style="flex-grow: 1;">
                  <div class="db-sys-label">PERSONAL_LOG_FILE</div>
                  <span class="db-label">NOTES</span>
                  <p class="db-text">
                    "Wake the fuck up, Samurai."<br><br>
                    Ненавижу дождь и синтетическое мясо. Ищу работу, связанную с взломом корпоративных сетей, но не брезгую и простой доставкой. Если вы видите меня в "Посмертии", значит, я праздную или поминаю. <br><br>
                    Краткая выжимка: характер, текущие цели, где обитает.
                  </p>
                  <div class="db-decor-footer">/// END_OF_RECORD</div>
                </div>
      
              </div>
            </div>
          </div>
      
      <div id="tab-stash" class="db-pane">
            <div class="db-block" style="min-height: 300px;">
              <div class="db-sys-label">ASSET_MANIFEST_V4</div>
              
              <div class="db-stash-stats">
                  <span style="color: var(--a-blue);">> SCANNING_STORAGE...</span>
                  <div class="db-mini-bar"><div style="width: 65%;"></div></div>
                  <span>65% LOAD</span>
              </div>
      
              <div class="db-split-layout">
                  
                  <div class="db-left-wrapper">
                      
                      <div class="db-separator">GEAR_AND_WEAPONS</div>
                      
                      <div class="db-stash-list">
                          
                          <div class="db-stash-item"
                               onclick="viewStash(this)"
                               data-title="MALORIAN ARMS 3516"
                               data-type="WEAPON (LEGENDARY)"
                               data-from="SELF_CRAFTED"
                               data-desc="Любимый пистолет Джонни. Пробивает стены, сжигает нервы."
                               data-img="https://i.imgur.com/zqwBywt.png">
                              <div class="db-item-tag tag-gold">WPN</div>
                              <img src="https://i.imgur.com/zqwBywt.png">
                          </div>
      
                          <div class="db-stash-item"
                               onclick="viewStash(this)"
                               data-title="SANDEVISTAN 'APOGEE'"
                               data-type="CYBERWARE"
                               data-from="SHOP PURCHASE"
                               data-desc="Экспериментальный милитех-сандевистан. Позволяет двигаться быстрее мысли."
                               data-img="https://i.imgur.com/lSxLT6X.png">
                              <div class="db-item-tag tag-blue">CYB</div>
                              <img src="https://i.imgur.com/lSxLT6X.png">
                          </div>
      
                          <div class="db-stash-item"
                               onclick="viewStash(this)"
                               data-title="MAXDOC MK.1"
                               data-type="CONSUMABLE"
                               data-from="LOOT"
                               data-desc="Стандартный ингалятор. Вкус мяты и отчаяния."
                               data-img="https://i.imgur.com/PTEXeJv.png">
                              <div class="db-item-tag tag-gray">MED</div>
                              <img src="https://i.imgur.com/PTEXeJv.png">
                          </div>
      
                      </div>
      
                      <div class="db-separator">GIFTS_RECEIVED</div>
      
                      <div class="db-stash-list">
                          
                          <div class="db-stash-item"
                               onclick="viewStash(this)"
                               data-title="CHAMPARADISE"
                               data-type="GIFT / ALCOHOL"
                               data-from="JUDY ALVAREZ"
                               data-desc="Бутылка отличного шампанского. Записка гласит: 'За нас, V'."
                               data-img="https://upforme.ru/uploads/001c/98/42/2/314586.webp">
                              <div class="db-item-tag tag-blue">GIFT</div>
                              <img src="https://upforme.ru/uploads/001c/98/42/2/314586.webp">
                          </div>
      
                          <div class="db-stash-item used"
                               onclick="viewStash(this)"
                               data-title="PIZZA BOX (EMPTY)"
                               data-type="TRASH"
                               data-from="RIVER WARD"
                               data-desc="Коробка от пиццы. Было вкусно."
                               data-img="https://i.imgur.com/9xDG0nZ.png">
                              <div class="db-item-tag tag-gray">USED</div>
                              <img src="https://i.imgur.com/9xDG0nZ.png">
                          </div>
      
                      </div>
                  </div>
      
                  <div class="db-viewer stash-viewer">
                      <div class="db-sys-label">ITEM_INSPECTOR</div>
                      <div class="db-viewer-empty">
                         <div class="db-scanline" style="opacity: 0.2;"></div>
                         SELECT ITEM...
                      </div>
                      
                      <div class="db-viewer-content" style="display: none;">
                          <img id="s-img" src="">
                          
                          <div class="db-v-meta" style="margin-top: 10px;">
                              <span id="s-title" style="color: var(--a-yel); font-weight: bold; font-size: 11px;">TITLE</span>
                              <span id="s-type" style="font-size: 9px; color: var(--c-dim);">TYPE</span>
                          </div>
      
                          <div class="db-meta-row">
                              <span>SOURCE:</span>
                              <span id="s-from" style="color: var(--a-blue);">UNKNOWN</span>
                          </div>
      
                          <div id="s-desc" class="db-v-desc">Description text...</div>
                      </div>
                  </div>
      
              </div>
              <div class="db-decor-footer">/// END_OF_MANIFEST</div>
            </div>
          </div>
      
          <div id="tab-badges" class="db-pane">
            
            <div class="db-block" style="min-height: 300px;">
              <div class="db-sys-label">ACTIVITY_HISTORY_LOG</div>
            
              <div class="db-split-layout">
                  
                  <div class="db-left-wrapper">
                      <div class="net-header" style="margin: 0; padding: 0 5px;">
                          <span style="color: var(--c-dim);">LOG_SOURCE:</span>
                          <span style="color: var(--a-yel);">PUBLIC_RECORDS</span>
                      </div>
                      
                      <div class="db-item-list">
                        <div class="db-item" onclick="viewItem(this)" data-title="WELCOME TO NC" data-date="TIMESTAMP: 20.12.2077" data-desc="Зафиксировано прибытие в Найт-Сити." data-img="https://upforme.ru/uploads/001c/98/42/2/t89348.jpg"><img src="https://upforme.ru/uploads/001c/98/42/2/t89348.jpg"></div>
                        <div class="db-item" onclick="viewItem(this)" data-title="HALLOWEEN 25" data-date="TIMESTAMP: 31.10.2025" data-desc="Участие в массовых беспорядках." data-img="https://upforme.ru/uploads/001c/98/42/2/t317316.jpg"><img src="https://upforme.ru/uploads/001c/98/42/2/t317316.jpg"></div>
                      </div>
                  </div>
      
                  <div class="db-viewer">
                    <div class="db-sys-label">DATA_DECRYPTOR</div>
                    <div class="db-viewer-empty"><div class="db-scanline" style="opacity: 0.2;"></div>AWAITING_INPUT...</div>
                    
                    <div class="db-viewer-content" style="display: none;">
                      <img id="v-img" src="">
                      <div class="db-v-meta"><span id="v-title">TITLE</span><small id="v-date" style="color: var(--a-blue);">Date</small></div>
                      
                      <div class="db-integrity-row">
                          <div class="db-status-box"></div>
                          <span style="font-size: 9px; color: var(--c-dim); font-family: monospace;">DATA_INTEGRITY: VERIFIED</span>
                      </div>
                      
                      <div id="v-desc" class="db-v-desc">Description</div>
                    </div>
                  </div>
              </div>
              <div class="db-decor-footer">/// END_OF_LOGS</div>
            </div>
          </div>
      
      <div id="tab-wardrobe" class="db-pane">
            <div class="db-block">
                <div class="db-sys-label">UI_OVERLAY_CONFIG</div>
                
                <span class="db-label">VISUAL TAGS (ПЛАШКИ)</span>
                <div class="db-scroll-row">
                  <img src="https://i.imgur.com/pgybpkH.png" class="db-plaque">
                  <img src="https://i.imgur.com/24m6X4W.gif" class="db-plaque">
                  <img src="https://i.imgur.com/h3hrbSu.gif" class="db-plaque">
                </div>
                
                <div style="margin-top: 15px;"></div>
                
                <span class="db-label">PROFILE ICONS</span>
                <div class="db-scroll-row">
                  <img src="https://i.imgur.com/FIwlYeu.png" class="db-icon-thumb">
                  <img src="https://i.imgur.com/p039Zhx.png" class="db-icon-thumb">
                  <img src="https://i.imgur.com/9xDG0nZ.png" class="db-icon-thumb">
                  <img src="https://i.imgur.com/PTEXeJv.png" class="db-icon-thumb">
                </div>
      
                <div style="margin-top: 15px;"></div>
      
                <span class="db-label">BACKGROUNDS (ФОНЫ)</span>
                <div class="db-scroll-row">
                  <img src="https://i.imgur.com/MdRRym9.png" class="db-bg-thumb">
                  <img src="https://i.imgur.com/p039Zhx.png" class="db-bg-thumb">
                  <img src="https://i.imgur.com/go9qI4f.png" class="db-bg-thumb">
                </div>
                
                <div class="db-decor-footer">/// RENDERING_COMPLETED</div>
            </div>
          </div>
      <script>
      // 1. Плеер
      function toggleDbMusic(btn) {
          const audio = btn.querySelector('audio');
          const label = btn.querySelector('.db-track-marquee span');
          
          if(audio.paused) {
              audio.play();
              btn.querySelector('.db-play-btn').innerText = '❚❚'; // Пауза символ
              btn.style.borderColor = 'var(--a-yel)';
          } else {
              audio.pause();
              btn.querySelector('.db-play-btn').innerText = '▶';
              btn.style.borderColor = 'var(--a-bor-g)';
          }
      }
      
      // 2. Табы
      function openDbTab(evt, tabId) {
          const container = evt.currentTarget.closest('.profile-db');
          
          // Скрыть все
          const panes = container.querySelectorAll('.db-pane');
          panes.forEach(p => p.classList.remove('active'));
          
          // Деактивировать кнопки
          const btns = container.querySelectorAll('.db-tab-btn');
          btns.forEach(b => b.classList.remove('active'));
          
          // Показать нужное
          container.querySelector('#' + tabId).classList.add('active');
          evt.currentTarget.classList.add('active');
      }
      
      // 3. Просмотр ачивок
      function viewItem(item) {
          const container = item.closest('.db-split-layout');
          const viewer = container.querySelector('.db-viewer');
          
          // Скрыть заглушку, показать контент
          viewer.querySelector('.db-viewer-empty').style.display = 'none';
          const content = viewer.querySelector('.db-viewer-content');
          content.style.display = 'block';
          
          // Заполнить данными
          content.querySelector('#v-img').src = item.getAttribute('data-img');
          content.querySelector('#v-title').innerText = item.getAttribute('data-title');
          content.querySelector('#v-date').innerText = item.getAttribute('data-date');
          content.querySelector('#v-desc').innerHTML = item.getAttribute('data-desc'); // innerHTML для переносов строк
          
          // Анимация обновления
          content.animate([
              { opacity: 0, transform: 'translateX(10px)' },
              { opacity: 1, transform: 'translateX(0)' }
          ], { duration: 300, easing: 'ease-out' });
      }
      
      // Функция просмотра для Склада
      function viewStash(item) {
          const container = item.closest('.db-split-layout');
          const viewer = container.querySelector('.stash-viewer'); // Ищем вьювер именно склада
          
          // Показать контент
          viewer.querySelector('.db-viewer-empty').style.display = 'none';
          const content = viewer.querySelector('.db-viewer-content');
          content.style.display = 'block';
          
          // Заполнить данными
          content.querySelector('#s-img').src = item.getAttribute('data-img');
          content.querySelector('#s-title').innerText = item.getAttribute('data-title');
          content.querySelector('#s-type').innerText = item.getAttribute('data-type');
          content.querySelector('#s-from').innerText = item.getAttribute('data-from'); // Новое поле
          content.querySelector('#s-desc').innerHTML = item.getAttribute('data-desc');
          
          // Анимация
          content.animate([
              { opacity: 0, transform: 'translateY(5px)' },
              { opacity: 1, transform: 'translateY(0)' }
          ], { duration: 200, easing: 'ease-out' });
      }
      </sctipt>

      0


      Вы здесь » datasprawl » Тестовый форум » тест личной странички


      Рейтинг форумов | Создать форум бесплатно