
    :root {
      --bg: #0c0d12;
      --panel: rgba(24, 24, 31, .92);
      --panel-2: rgba(34, 31, 39, .94);
      --ink: #f2eadc;
      --muted: #b9ad9e;
      --line: rgba(210, 177, 116, .24);
      --gold: #d2b174;
      --gold-2: #f1d9a5;
      --wine: #5f2436;
      --wine-2: #8b3a50;
      --green: #718f78;
      --danger: #c46262;
      --shadow: 0 24px 60px rgba(0,0,0,.35);
      --radius: 22px;
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; }
    body {
      margin: 0;
      min-height: 100vh;
      color: var(--ink);
      background:
        radial-gradient(circle at 20% -10%, rgba(95,36,54,.36), transparent 35%),
        radial-gradient(circle at 85% 5%, rgba(69,79,109,.28), transparent 33%),
        linear-gradient(180deg, #11131a 0%, var(--bg) 65%);
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    }

    body::before {
      content: "";
      position: fixed;
      inset: 0;
      pointer-events: none;
      opacity: .12;
      background-image:
        linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
      background-size: 42px 42px;
      mask-image: linear-gradient(to bottom, black, transparent 85%);
    }

    button, input, textarea, select { font: inherit; }
    button { cursor: pointer; }
    a { color: inherit; }

    .shell { width: min(1180px, calc(100% - 32px)); margin: 0 auto; }

    .topbar {
      position: sticky;
      top: 0;
      z-index: 40;
      backdrop-filter: blur(18px);
      background: rgba(12,13,18,.76);
      border-bottom: 1px solid var(--line);
    }

    .topbar-inner {
      min-height: 72px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 18px;
    }

    .brand { display: flex; align-items: center; gap: 12px; min-width: 0; }
    .sigil {
      width: 42px; height: 42px; border-radius: 50%;
      display: grid; place-items: center;
      color: var(--gold-2);
      border: 1px solid var(--line);
      background: radial-gradient(circle, rgba(210,177,116,.18), rgba(95,36,54,.14));
      box-shadow: inset 0 0 20px rgba(210,177,116,.08);
      font-family: Georgia, serif; font-size: 22px;
    }
    .brand h1 { margin: 0; font: 600 17px/1.1 Georgia, serif; letter-spacing: .05em; }
    .brand p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }

    .toolbar { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
    .btn {
      border: 1px solid var(--line);
      color: var(--ink);
      background: rgba(255,255,255,.035);
      border-radius: 12px;
      padding: 9px 12px;
      transition: .2s ease;
    }
    .btn:hover { transform: translateY(-1px); border-color: rgba(210,177,116,.55); background: rgba(210,177,116,.08); }
    .btn.primary { background: linear-gradient(135deg, var(--wine), var(--wine-2)); border-color: rgba(255,255,255,.09); }
    .btn.danger { color: #ffd9d9; border-color: rgba(196,98,98,.4); }
    .btn.small { padding: 7px 9px; font-size: 13px; }

    .hero { padding: 72px 0 34px; }
    .hero-card {
      position: relative;
      overflow: hidden;
      border: 1px solid var(--line);
      border-radius: 30px;
      padding: clamp(26px, 6vw, 68px);
      background:
        linear-gradient(110deg, rgba(17,18,25,.94), rgba(39,28,36,.88)),
        radial-gradient(circle at 80% 20%, rgba(210,177,116,.16), transparent 35%);
      box-shadow: var(--shadow);
    }
    .hero-card::after {
      content: "✦";
      position: absolute;
      right: 6%; top: 4%;
      font: 160px/1 Georgia, serif;
      color: rgba(210,177,116,.055);
      transform: rotate(12deg);
    }
    .eyebrow { color: var(--gold); text-transform: uppercase; letter-spacing: .22em; font-size: 12px; }
    .hero h2 { max-width: 760px; margin: 12px 0 18px; font: 600 clamp(38px, 8vw, 76px)/.98 Georgia, serif; }
    .hero p { max-width: 690px; margin: 0; color: var(--muted); font-size: 17px; line-height: 1.7; }
    .hero-meta { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 26px; }
    .pill { border: 1px solid var(--line); border-radius: 999px; padding: 7px 11px; color: var(--gold-2); background: rgba(210,177,116,.055); font-size: 13px; }

    .tabs { display: flex; gap: 8px; padding: 10px; border: 1px solid var(--line); background: rgba(24,24,31,.72); border-radius: 16px; width: fit-content; margin: 0 auto 32px; position: sticky; top: 86px; z-index: 30; backdrop-filter: blur(15px); }
    .tab { border: 0; color: var(--muted); background: transparent; border-radius: 10px; padding: 10px 15px; }
    .tab.active { color: var(--ink); background: rgba(210,177,116,.12); box-shadow: inset 0 0 0 1px var(--line); }

    section { padding: 20px 0 72px; }
    .section-head { display: flex; justify-content: space-between; align-items: end; gap: 18px; margin-bottom: 22px; }
    .section-head h3 { margin: 0; font: 600 clamp(28px, 4vw, 42px)/1 Georgia, serif; }
    .section-head p { margin: 8px 0 0; color: var(--muted); }

    .controls { display: grid; grid-template-columns: 1.5fr .8fr .8fr; gap: 10px; margin-bottom: 20px; }
    .field, .select {
      width: 100%; color: var(--ink); background: rgba(255,255,255,.035); border: 1px solid var(--line); border-radius: 12px; padding: 11px 12px; outline: none;
    }
    .field:focus, .select:focus { border-color: rgba(210,177,116,.7); box-shadow: 0 0 0 3px rgba(210,177,116,.08); }
    .select option { background: #1b1b22; }

    .grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; }
    .card {
      position: relative;
      overflow: hidden;
      border: 1px solid var(--line);
      border-radius: var(--radius);
      background: linear-gradient(180deg, rgba(37,34,42,.95), rgba(22,22,28,.95));
      box-shadow: 0 16px 40px rgba(0,0,0,.2);
      transition: .25s ease;
    }
    .card:hover { transform: translateY(-4px); border-color: rgba(210,177,116,.5); }
    .portrait { aspect-ratio: 4/3; background: linear-gradient(135deg, #2b2833, #15161d); position: relative; overflow: hidden; }
    .portrait img { width: 100%; height: 100%; object-fit: cover; display: block; }
    .portrait .initials { width: 100%; height: 100%; display: grid; place-items: center; font: 700 72px/1 Georgia, serif; color: rgba(242,234,220,.72); text-shadow: 0 6px 30px rgba(0,0,0,.4); }
    .portrait::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(12,13,18,.7), transparent 60%); pointer-events: none; }
    .card-body { padding: 18px; }
    .card-top { display: flex; justify-content: space-between; gap: 12px; align-items: start; }
    .card h4 { margin: 0; font: 600 25px/1.05 Georgia, serif; }
    .subtitle { color: var(--gold); font-size: 13px; margin-top: 6px; }
    .status { border-radius: 999px; padding: 5px 8px; font-size: 11px; border: 1px solid var(--line); color: var(--muted); white-space: nowrap; }
    .summary { color: var(--muted); line-height: 1.55; min-height: 72px; margin: 14px 0; }
    .tags { display: flex; flex-wrap: wrap; gap: 6px; }
    .tag { padding: 5px 8px; border-radius: 999px; background: rgba(255,255,255,.045); color: #d8d0c6; font-size: 11px; border: 1px solid rgba(255,255,255,.055); }
    .card-actions { display: flex; gap: 8px; margin-top: 16px; }

    .empty { padding: 50px; text-align: center; color: var(--muted); border: 1px dashed var(--line); border-radius: var(--radius); }

    .map-wrap, .timeline-wrap {
      border: 1px solid var(--line); border-radius: var(--radius); background: rgba(21,21,27,.88); padding: 18px; overflow: hidden;
    }
    .relationship-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; margin-top: 18px; }
    .relation { position: relative; border: 1px solid var(--line); border-left: 4px solid var(--relation-color, var(--gold)); background: rgba(255,255,255,.025); border-radius: 15px; padding: 14px; }
    .relation strong { font-family: Georgia, serif; }
    .relation p { margin: 7px 0 0; color: var(--muted); line-height: 1.45; }
    .relation-type { display: flex; align-items: center; gap: 7px; color: var(--relation-color, var(--gold)); font-size: 12px; text-transform: uppercase; letter-spacing: .12em; }
    .relation-swatch { width: 9px; height: 9px; flex: 0 0 auto; border-radius: 50%; background: var(--relation-color, var(--gold)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--relation-color, var(--gold)) 18%, transparent); }
    .relation-direction { display: inline-flex; align-items: center; gap: 8px; margin-top: 7px; }
    .relation-arrow { color: var(--relation-color, var(--gold)); font-size: 18px; line-height: 1; }

    .network { min-height: 520px; position: relative; overflow: auto; border-radius: 14px; background: radial-gradient(circle, rgba(210,177,116,.05), transparent 55%); }
    .network svg { display: block; width: 100%; min-width: 760px; height: 520px; }
    .network .edge { stroke-width: 2.2; opacity: .82; transition: opacity .2s ease, stroke-width .2s ease; }
    .network .edge:hover { opacity: 1; stroke-width: 3.2; }
    .network .edge.dashed { stroke-dasharray: 8 7; }
    .network .node circle { fill: #26232c; stroke: var(--gold); stroke-width: 1.4; }
    .network .node text { fill: var(--ink); font-size: 13px; text-anchor: middle; pointer-events: none; }

    .timeline { position: relative; margin-left: 14px; padding-left: 32px; }
    .timeline::before { content: ""; position: absolute; left: 8px; top: 4px; bottom: 4px; width: 1px; background: linear-gradient(var(--gold), transparent); }
    .event { position: relative; margin-bottom: 22px; padding: 18px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.025); }
    .event::before { content: ""; position: absolute; left: -30px; top: 22px; width: 12px; height: 12px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 5px rgba(210,177,116,.1); }
    .event time { color: var(--gold); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
    .event h4 { margin: 7px 0; font: 600 22px/1.1 Georgia, serif; }
    .event p { color: var(--muted); line-height: 1.6; margin: 0; }
    .chronicle-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
    .chronicle-switch { display: inline-flex; gap: 6px; padding: 6px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.025); }
    .chronicle-mode { border: 0; border-radius: 10px; padding: 9px 13px; color: var(--muted); background: transparent; }
    .chronicle-mode.active { color: var(--ink); background: rgba(210,177,116,.12); box-shadow: inset 0 0 0 1px var(--line); }
    .chronicle-person-select { width: min(320px,100%); }
    .chronicle-context { margin: 0 0 16px; color: var(--muted); }
    .event-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin: 10px 0 12px; }
    .event-badge { display: inline-flex; align-items: center; gap: 5px; padding: 5px 8px; border-radius: 999px; border: 1px solid var(--line); background: rgba(210,177,116,.055); color: var(--gold-2); font-size: 11px; }
    .event-badge.character { background: rgba(79,158,232,.08); color: #b9dcff; border-color: rgba(79,158,232,.24); }
    .character-checklist { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
    .character-check { display: flex; align-items: center; gap: 9px; min-height: 42px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.025); color: var(--ink); }
    .character-check input { accent-color: var(--wine-2); }
    .secret { filter: blur(7px); user-select: none; transition: .2s ease; }
    .secret.revealed { filter: none; user-select: auto; }
    .secret-toggle { margin-top: 10px; }

    .thread-controls { display: grid; grid-template-columns: 1.4fr .8fr; gap: 10px; margin-bottom: 18px; }
    .thread-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
    .thread-card { --thread-color: var(--gold); position: relative; overflow: hidden; border: 1px solid var(--line); border-top: 4px solid var(--thread-color); border-radius: 18px; padding: 18px; background: linear-gradient(180deg,rgba(37,34,42,.94),rgba(21,21,27,.96)); box-shadow: 0 16px 36px rgba(0,0,0,.18); }
    .thread-card::after { content: ""; position: absolute; width: 150px; height: 150px; border-radius: 50%; right: -80px; top: -90px; background: color-mix(in srgb,var(--thread-color) 15%,transparent); pointer-events: none; }
    .thread-head { display: flex; align-items: start; justify-content: space-between; gap: 14px; position: relative; z-index: 1; }
    .thread-card h4 { margin: 7px 0 8px; font: 600 25px/1.1 Georgia,serif; }
    .thread-card p { color: var(--muted); line-height: 1.58; }
    .thread-status { display: inline-flex; align-items: center; gap: 6px; border: 1px solid color-mix(in srgb,var(--thread-color) 42%,transparent); border-radius: 999px; padding: 6px 9px; color: var(--thread-color); background: color-mix(in srgb,var(--thread-color) 8%,transparent); font-size: 11px; white-space: nowrap; }
    .thread-progress { height: 7px; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.06); margin: 15px 0 7px; }
    .thread-progress > span { display: block; height: 100%; border-radius: inherit; background: var(--thread-color); box-shadow: 0 0 12px color-mix(in srgb,var(--thread-color) 45%,transparent); }
    .thread-progress-label { display: flex; justify-content: space-between; color: var(--muted); font-size: 11px; }
    .thread-links { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
    .thread-link { border: 1px solid rgba(79,158,232,.24); background: rgba(79,158,232,.08); color: #b9dcff; border-radius: 999px; padding: 5px 8px; font-size: 11px; }
    .backup-panel { margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); }
    .backup-panel p { color: var(--muted); margin: 7px 0 13px; }
    @media (max-width: 760px) { .thread-grid { grid-template-columns: 1fr; } .thread-controls { grid-template-columns: 1fr; } }

    .modal-backdrop { display: none; position: fixed; inset: 0; z-index: 100; background: rgba(0,0,0,.72); padding: 20px; overflow-y: auto; }
    .modal-backdrop.open { display: grid; place-items: start center; }
    .modal { width: min(820px,100%); margin: 30px auto; border: 1px solid var(--line); border-radius: 22px; background: #17171e; box-shadow: var(--shadow); overflow: hidden; }
    .modal-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; padding: 18px 20px; border-bottom: 1px solid var(--line); }
    .modal-head h3 { margin: 0; font: 600 26px/1 Georgia, serif; }
    .modal-body { padding: 20px; }
    .form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
    .form-group { display: grid; gap: 7px; }
    .form-group.full { grid-column: 1/-1; }
    label { color: var(--muted); font-size: 13px; }
    textarea.field { min-height: 110px; resize: vertical; }
    .color-row { display: grid; grid-template-columns: 1fr 58px; gap: 10px; align-items: center; }
    .color-input { width: 58px; height: 43px; padding: 3px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.035); }
    .color-input:disabled { opacity: .62; cursor: not-allowed; }
    .form-hint { color: var(--muted); font-size: 12px; line-height: 1.45; }
    .modal-foot { display: flex; justify-content: space-between; gap: 10px; padding: 16px 20px; border-top: 1px solid var(--line); }
    .preview-profile { display: grid; grid-template-columns: 280px 1fr; }
    .profile-image { min-height: 420px; background: #22222a; }
    .profile-image img { width: 100%; height: 100%; object-fit: cover; }
    .profile-copy { padding: 28px; }
    .profile-copy h3 { font: 600 42px/1 Georgia, serif; margin: 0; }
    .profile-copy h5 { color: var(--gold); text-transform: uppercase; letter-spacing: .15em; margin: 9px 0 24px; }
    .profile-copy p { line-height: 1.7; color: var(--muted); }
    .profile-copy .lore { color: var(--ink); }

    .edit-banner { display: none; margin: 0 0 22px; padding: 13px 16px; border: 1px solid rgba(113,143,120,.45); border-radius: 14px; background: rgba(113,143,120,.09); color: #dce9df; }
    body.editing .edit-banner { display: block; }
    .edit-only { display: none !important; }
    body.editing .edit-only { display: inline-flex !important; }

    footer { border-top: 1px solid var(--line); padding: 30px 0 50px; color: var(--muted); font-size: 13px; }

    @media (max-width: 900px) {
      .grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
      .controls { grid-template-columns: 1fr 1fr; }
      .controls .field { grid-column: 1/-1; }
      .preview-profile { grid-template-columns: 1fr; }
      .profile-image { min-height: 300px; max-height: 460px; }
    }
    @media (max-width: 620px) {
      .shell { width: min(100% - 20px,1180px); }
      .topbar-inner { align-items: flex-start; padding: 11px 0; }
      .brand p { display: none; }
      .toolbar { gap: 6px; }
      .toolbar .btn { font-size: 12px; padding: 8px; }
      .hero { padding-top: 34px; }
      .hero-card { border-radius: 22px; }
      .tabs { width: 100%; overflow-x: auto; justify-content: start; top: 82px; }
      .tab { white-space: nowrap; }
      .grid, .relationship-list, .form-grid, .character-checklist { grid-template-columns: 1fr; }
      .controls { grid-template-columns: 1fr; }
      .controls .field { grid-column: auto; }
      .section-head { align-items: start; flex-direction: column; }
      .form-group.full { grid-column: auto; }
      .modal-foot { flex-direction: column-reverse; }
    }


    /* v4: обзор, быстрый поиск и атмосферные детали */
    .ambient { position: fixed; inset: 0; pointer-events: none; overflow: hidden; z-index: -1; }
    .mote { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: var(--gold-2); opacity: .18; animation: drift var(--duration,18s) linear infinite; }
    @keyframes drift { from { transform: translate3d(0,12vh,0) scale(.7); } to { transform: translate3d(var(--drift,40px),-115vh,0) scale(1.3); } }
    @keyframes sigilPulse { 0%,100% { box-shadow: inset 0 0 20px rgba(210,177,116,.08); } 50% { box-shadow: 0 0 28px rgba(210,177,116,.25), inset 0 0 24px rgba(210,177,116,.14); } }
    @keyframes forbiddenPulse { 0%,100% { filter: none; } 50% { filter: drop-shadow(0 0 18px rgba(220,40,55,.85)); } }
    .sigil { transition: transform .35s ease, border-color .35s ease; user-select: none; }
    .sigil:hover { transform: rotate(16deg) scale(1.06); border-color: var(--gold); }
    body.forbidden-magic .sigil { color: #ff4459; border-color: #ff4459; animation: forbiddenPulse .55s ease 4; }
    body.effects-off .ambient { display: none; }
    body.effects-off * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
    @media (prefers-reduced-motion: reduce) { * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; } }

    .save-status { color: var(--muted); font-size: 11px; white-space: nowrap; align-self: center; }
    .icon-btn { min-width: 40px; }
    .overview-grid { display: grid; grid-template-columns: repeat(12,minmax(0,1fr)); gap: 16px; }
    .overview-card { border: 1px solid var(--line); border-radius: var(--radius); background: linear-gradient(180deg,rgba(37,34,42,.92),rgba(20,20,27,.94)); padding: 20px; box-shadow: 0 16px 40px rgba(0,0,0,.18); position: relative; overflow: hidden; }
    .overview-card h4 { margin: 0 0 10px; font: 600 25px/1.1 Georgia,serif; }
    .overview-card p { color: var(--muted); line-height: 1.6; }
    .overview-card.stats { grid-column: span 12; padding: 0; background: transparent; border: 0; box-shadow: none; display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 12px; }
    .stat { padding: 18px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,255,255,.025); }
    .stat strong { display: block; font: 600 35px/1 Georgia,serif; color: var(--gold-2); }
    .stat span { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .12em; }
    .overview-featured { grid-column: span 7; min-height: 310px; display: grid; grid-template-columns: 190px 1fr; gap: 20px; }
    .overview-featured .mini-portrait { border-radius: 17px; overflow: hidden; background: #22232b; min-height: 240px; }
    .overview-featured .mini-portrait img { width: 100%; height: 100%; object-fit: cover; }
    .overview-latest { grid-column: span 5; }
    .overview-threads { grid-column: span 7; }
    .overview-oracle { grid-column: span 5; display: grid; align-content: space-between; }
    .quote { margin: 16px 0; padding: 14px 17px; border-left: 2px solid var(--gold); background: rgba(210,177,116,.055); color: var(--gold-2); font: italic 18px/1.55 Georgia,serif; }
    .mini-list { display: grid; gap: 10px; }
    .mini-row { display: flex; justify-content: space-between; gap: 12px; align-items: start; padding: 11px 0; border-bottom: 1px solid rgba(210,177,116,.12); }
    .mini-row:last-child { border-bottom: 0; }
    .mini-row small { color: var(--gold); }
    .quick-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
    .dice-face { width: 90px; height: 90px; margin: 8px auto 18px; display: grid; place-items: center; clip-path: polygon(50% 0,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%); background: linear-gradient(145deg,var(--wine-2),#241c2c); border: 1px solid var(--gold); font: 700 36px/1 Georgia,serif; filter: drop-shadow(0 12px 20px rgba(0,0,0,.35)); transition: transform .35s ease; }
    .dice-face.rolling { transform: rotate(360deg) scale(.82); }

    .relation-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
    .relation-focus { width: min(330px,100%); }
    .relation-legend { display: flex; gap: 8px; flex-wrap: wrap; }
    .legend-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line); border-radius: 999px; padding: 6px 9px; color: var(--muted); font-size: 11px; background: rgba(255,255,255,.025); }
    .legend-dot { width: 8px; height: 8px; border-radius: 50%; }
    .network .node.dimmed, .network .edge.dimmed { opacity: .15; }
    .network .node.active circle { stroke-width: 3; filter: drop-shadow(0 0 8px rgba(210,177,116,.45)); }

    .profile-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 24px; }
    .profile-panel { border: 1px solid var(--line); border-radius: 16px; padding: 15px; background: rgba(255,255,255,.025); }
    .profile-panel h6 { margin: 0 0 10px; color: var(--gold); text-transform: uppercase; letter-spacing: .14em; font-size: 11px; }
    .profile-link { width: 100%; text-align: left; border: 0; border-bottom: 1px solid rgba(210,177,116,.12); background: transparent; color: var(--ink); padding: 9px 0; }
    .profile-link strong, .profile-link small, .mini-row strong, .mini-row small, .access-profile strong, .access-profile small { display:block; }
    .profile-link small, .mini-row small, .access-profile small { margin-top:4px; line-height:1.35; }
    .profile-link strong + small, .mini-row strong + small, .access-profile strong + small { margin-left:0; }
    .profile-panel h6 { margin-bottom:10px; }
    .profile-link:last-child { border-bottom: 0; }
    .profile-meta { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }

    .timeline-search { width: min(360px,100%); }
    .command-results { display: grid; gap: 8px; max-height: 58vh; overflow: auto; }
    .command-item { width: 100%; text-align: left; border: 1px solid var(--line); border-radius: 13px; padding: 12px; background: rgba(255,255,255,.025); color: var(--ink); }
    .command-item:hover { background: rgba(210,177,116,.08); }
    .command-item small { display: block; color: var(--muted); margin-top: 4px; }
    .kbd { border: 1px solid var(--line); background: rgba(255,255,255,.04); border-radius: 6px; padding: 2px 6px; font-size: 10px; color: var(--muted); }
    .toast-stack { position: fixed; right: 18px; bottom: 18px; z-index: 300; display: grid; gap: 9px; width: min(360px,calc(100% - 36px)); }
    .toast { border: 1px solid var(--line); border-radius: 14px; background: rgba(22,22,29,.96); color: var(--ink); padding: 12px 14px; box-shadow: var(--shadow); animation: toastIn .25s ease; }
    @keyframes toastIn { from { transform: translateY(10px); opacity: 0; } }
    .card { transform-style: preserve-3d; }
    .card.tilting { transition: transform .08s linear; }
    .card .portrait, .card .card-body { transform: translateZ(8px); }

    @media (max-width: 900px) {
      .overview-featured,.overview-latest,.overview-threads,.overview-oracle { grid-column: span 12; }
      .overview-featured { grid-template-columns: 160px 1fr; }
      .overview-card.stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
      .profile-columns { grid-template-columns: 1fr; }
    }
    @media (max-width: 620px) {
      .save-status { display: none; }
      .overview-featured { grid-template-columns: 1fr; }
      .overview-featured .mini-portrait { min-height: 220px; max-height: 330px; }
      .overview-card.stats { grid-template-columns: 1fr 1fr; }
      .stat { padding: 14px; }
      .stat strong { font-size: 29px; }
    }
    @media print {
      .topbar,.tabs,.toolbar,.edit-banner,.btn,footer,.ambient { display:none !important; }
      body { background:#fff; color:#111; }
      .modal-backdrop { position:static; background:#fff; padding:0; }
      .modal-backdrop.open { display:block; }
      .modal { border:0; box-shadow:none; background:#fff; color:#111; width:100%; margin:0; }
      .profile-copy p,.profile-copy h5 { color:#333; }
    }

  

    /* v6 — доска расследования и локальные уровни доступа */
    .access-badge { display:inline-flex; align-items:center; gap:7px; color:var(--gold-2); font-size:12px; padding:7px 10px; border:1px solid var(--line); border-radius:999px; background:rgba(210,177,116,.05); }
    .access-dot { width:7px; height:7px; border-radius:50%; background:var(--gold); box-shadow:0 0 10px color-mix(in srgb,var(--gold) 70%,transparent); }
    body.editing .edit-only { display:none !important; }
    .owner-only { display:none !important; }
    body.role-owner .owner-only { display:inline-flex !important; }
    body.editing.role-owner .edit-only,
    body.editing.role-editor .edit-only.editor-only,
    body.editing.role-editor .edit-only.chronicler-only,
    body.editing.role-chronicler .edit-only.chronicler-only { display:inline-flex !important; }
    body.editing.role-owner .edit-only.block-edit { display:flex !important; }
    body.editing.role-editor .edit-only.block-edit.editor-only,
    body.editing.role-editor .edit-only.block-edit.chronicler-only,
    body.editing.role-chronicler .edit-only.block-edit.chronicler-only { display:flex !important; }
    body.secrets-locked .secret, body.secrets-locked .secret-toggle { display:none !important; }
    .secret-lock-note { display:none; padding:12px 14px; border:1px dashed rgba(134,103,204,.48); border-radius:12px; color:#c9b9ed; background:rgba(134,103,204,.08); font-size:13px; }
    body.secrets-locked .secret-lock-note { display:block; }

    .board-toolbar { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:14px; }
    .board-help { color:var(--muted); font-size:13px; margin-left:auto; }
    .board-shell { border:1px solid var(--line); border-radius:var(--radius); background:rgba(18,18,24,.9); overflow:auto; box-shadow:var(--shadow); }
    .investigation-board { position:relative; width:1400px; height:780px; overflow:hidden; background:
      radial-gradient(circle at 15% 20%, rgba(95,36,54,.14), transparent 24%),
      radial-gradient(circle at 85% 75%, rgba(69,79,109,.13), transparent 27%),
      linear-gradient(rgba(210,177,116,.045) 1px, transparent 1px),
      linear-gradient(90deg, rgba(210,177,116,.04) 1px, transparent 1px),
      #121218;
      background-size:auto,auto,36px 36px,36px 36px,auto;
    }
    .board-svg { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; z-index:1; }
    .board-link { fill:none; stroke-width:2.4; opacity:.82; }
    .board-link.dashed { stroke-dasharray:8 7; }
    .board-link-label { fill:var(--ink); font-size:12px; paint-order:stroke; stroke:#121218; stroke-width:5px; stroke-linejoin:round; }
    .board-card { --card-color:#d2b174; position:absolute; width:224px; min-height:132px; z-index:2; border:1px solid color-mix(in srgb,var(--card-color) 55%,transparent); border-top:4px solid var(--card-color); border-radius:16px; padding:14px; background:linear-gradient(160deg,rgba(42,39,47,.98),rgba(23,23,29,.98)); box-shadow:0 14px 34px rgba(0,0,0,.32); user-select:none; transition:box-shadow .18s ease, border-color .18s ease; }
    .board-card:hover { box-shadow:0 19px 42px rgba(0,0,0,.42); }
    .board-card.dragging { z-index:10; box-shadow:0 24px 60px rgba(0,0,0,.55); cursor:grabbing; }
    .board-card-head { display:flex; justify-content:space-between; gap:10px; align-items:start; cursor:default; }
    body.editing.role-owner .board-card-head, body.editing.role-editor .board-card-head, body.editing.role-chronicler .board-card-head { cursor:grab; }
    .board-card-type { color:var(--card-color); text-transform:uppercase; letter-spacing:.13em; font-size:10px; }
    .board-card h4 { margin:5px 0 8px; font:600 20px/1.05 Georgia,serif; }
    .board-card p { margin:0; color:var(--muted); font-size:13px; line-height:1.45; }
    .board-card-actions { display:flex; gap:6px; flex-wrap:wrap; margin-top:12px; }
    .board-card-actions .btn { padding:5px 7px; font-size:11px; }
    .board-pin { color:var(--card-color); font-size:17px; text-shadow:0 0 12px color-mix(in srgb,var(--card-color) 60%,transparent); }
    .board-empty { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); color:var(--muted); }
    .board-search { max-width:300px; }

    .access-panel { margin-top:24px; padding:20px; border:1px solid var(--line); border-radius:18px; background:rgba(255,255,255,.025); }
    .access-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
    .access-profile-list { display:grid; gap:9px; margin-top:14px; }
    .access-profile { display:flex; align-items:center; justify-content:space-between; gap:12px; border:1px solid var(--line); border-radius:12px; padding:11px 12px; background:rgba(255,255,255,.025); }
    .access-profile strong { display:block; }
    .access-profile small { color:var(--muted); }
    .role-matrix { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin-top:14px; }
    .role-card { border:1px solid var(--line); border-radius:12px; padding:10px; background:rgba(255,255,255,.022); }
    .role-card strong { display:block; color:var(--gold-2); font-size:12px; }
    .role-card span { color:var(--muted); font-size:11px; line-height:1.35; display:block; margin-top:5px; }
    .warning-note { padding:13px 14px; border:1px solid rgba(223,139,67,.35); border-radius:12px; color:#edc99d; background:rgba(223,139,67,.07); line-height:1.5; font-size:13px; }

    @media (max-width:760px){
      .access-grid { grid-template-columns:1fr; }
      .role-matrix { grid-template-columns:1fr 1fr; }
      .board-help { width:100%; margin-left:0; }
    }


    /* v7 — атлас мест, инвентарь и две точки входа */
    body.entry-viewer #accessBtn,
    body.entry-viewer #editToggle,
    body.entry-viewer .owner-only { display:none !important; }
    .place-controls { display:grid; grid-template-columns:1.5fr .8fr; gap:10px; margin-bottom:16px; }
    .world-map-shell { border:1px solid var(--line); border-radius:var(--radius); overflow:auto; background:rgba(18,18,24,.9); box-shadow:var(--shadow); }
    .world-map { position:relative; width:1100px; height:620px; overflow:hidden; background:
      radial-gradient(circle at 25% 25%, rgba(210,177,116,.12), transparent 25%),
      radial-gradient(circle at 78% 72%, rgba(79,158,232,.10), transparent 30%),
      linear-gradient(135deg, rgba(85,65,46,.34), rgba(23,26,35,.96)),
      repeating-linear-gradient(0deg, rgba(210,177,116,.035) 0 1px, transparent 1px 38px),
      repeating-linear-gradient(90deg, rgba(210,177,116,.03) 0 1px, transparent 1px 38px);
      background-size:cover; background-position:center;
    }
    .world-map::after { content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at center, transparent 45%, rgba(8,9,13,.42)); }
    .map-compass { position:absolute; right:28px; bottom:24px; z-index:1; width:92px; height:92px; border:1px solid rgba(210,177,116,.35); border-radius:50%; display:grid; place-items:center; color:rgba(241,217,165,.55); font:600 32px Georgia,serif; transform:rotate(12deg); }
    .map-pin { --pin-color:#d2b174; position:absolute; z-index:2; transform:translate(-50%,-100%); border:0; background:transparent; color:var(--ink); text-align:center; min-width:120px; filter:drop-shadow(0 8px 10px rgba(0,0,0,.45)); }
    .map-pin-mark { width:34px; height:34px; margin:0 auto 5px; border-radius:50% 50% 50% 0; transform:rotate(-45deg); background:var(--pin-color); border:2px solid rgba(255,255,255,.45); box-shadow:0 0 0 5px color-mix(in srgb,var(--pin-color) 18%,transparent); }
    .map-pin-mark::after { content:""; display:block; width:10px; height:10px; border-radius:50%; background:#1a1820; position:absolute; left:10px; top:10px; }
    .map-pin-label { display:inline-block; max-width:170px; padding:5px 8px; border:1px solid var(--line); border-radius:9px; background:rgba(15,16,22,.88); font-size:12px; line-height:1.2; }
    .map-pin:hover { transform:translate(-50%,-100%) scale(1.06); }
    .map-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:0 0 12px; padding:11px 12px; border:1px solid var(--line); border-radius:14px; background:rgba(255,255,255,.025); }
    .map-toolbar-copy { min-width:0; }
    .map-toolbar-copy strong { display:block; color:var(--gold-2); font-size:13px; }
    .map-toolbar-copy span { display:block; margin-top:3px; color:var(--muted); font-size:12px; line-height:1.4; }
    .map-toolbar-actions { display:flex; align-items:center; justify-content:flex-end; gap:7px; flex-wrap:wrap; }
    .map-zoom-label { min-width:48px; text-align:center; color:var(--gold-2); font-size:12px; }
    .map-drag-readout { min-width:118px; padding:7px 9px; border:1px solid var(--line); border-radius:10px; color:var(--muted); background:rgba(0,0,0,.12); text-align:center; font-variant-numeric:tabular-nums; font-size:11px; }
    body.editing.role-chronicler .map-pin, body.editing.role-editor .map-pin, body.editing.role-owner .map-pin { cursor:grab; touch-action:none; }
    body.editing.role-chronicler .map-pin:active, body.editing.role-editor .map-pin:active, body.editing.role-owner .map-pin:active, .map-pin.dragging { cursor:grabbing; }
    .map-pin.dragging { z-index:12; transform:translate(-50%,-100%) scale(1.09); filter:drop-shadow(0 12px 18px rgba(0,0,0,.65)); }
    .world-map.is-dragging { user-select:none; }
    .world-map.is-dragging .map-pin:not(.dragging) { opacity:.58; }
    .map-pin.map-focused { animation:mapPinFocus 1.45s ease 2; z-index:8; }
    @keyframes mapPinFocus { 0%,100%{filter:drop-shadow(0 8px 10px rgba(0,0,0,.45))} 50%{filter:drop-shadow(0 0 20px var(--pin-color)); transform:translate(-50%,-100%) scale(1.13)} }
    .map-placement-note { grid-column:1/-1; margin-top:-3px; color:var(--muted); font-size:11px; line-height:1.45; }
    @media (max-width:760px){ .map-toolbar{align-items:flex-start;flex-direction:column}.map-toolbar-actions{justify-content:flex-start}.map-drag-readout{min-width:0} }

    .place-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:18px; }
    .place-card { --place-color:#d2b174; border:1px solid var(--line); border-top:4px solid var(--place-color); border-radius:18px; overflow:hidden; background:linear-gradient(180deg,rgba(37,34,42,.94),rgba(21,21,27,.96)); }
    .place-thumb { aspect-ratio:16/8; background:linear-gradient(135deg,color-mix(in srgb,var(--place-color) 20%,#25222b),#14151b); overflow:hidden; }
    .place-thumb img { width:100%; height:100%; object-fit:cover; }
    .place-copy { padding:16px; }
    .place-copy h4 { margin:5px 0 7px; font:600 23px/1.1 Georgia,serif; }
    .place-copy p { margin:0; color:var(--muted); line-height:1.5; }
    .place-meta { color:var(--place-color); text-transform:uppercase; letter-spacing:.11em; font-size:10px; }
    .place-view { display:grid; grid-template-columns:minmax(260px,.8fr) 1.2fr; gap:0; }
    .place-view-image { min-height:410px; background:linear-gradient(135deg,#292631,#15161d); }
    .place-view-image img { width:100%; height:100%; object-fit:cover; }
    .place-view-copy { padding:28px; }
    .place-view-copy h3 { margin:7px 0 5px; font:600 40px/1 Georgia,serif; }
    .inventory-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
    .inventory-item { --item-color:#d2b174; position:relative; border:1px solid var(--line); border-left:4px solid var(--item-color); border-radius:15px; padding:14px; background:rgba(255,255,255,.025); }
    .inventory-item h4 { margin:4px 0 6px; font:600 20px Georgia,serif; }
    .inventory-item p { margin:0; color:var(--muted); line-height:1.45; }
    .inventory-top { display:flex; justify-content:space-between; align-items:start; gap:12px; }
    .inventory-badges { display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }
    .inventory-badge { padding:4px 7px; border:1px solid var(--line); border-radius:999px; color:var(--gold-2); font-size:10px; background:rgba(210,177,116,.05); }
    .entry-links { margin-top:20px; padding:18px; border:1px solid var(--line); border-radius:16px; background:rgba(255,255,255,.025); }
    .link-copy-row { display:grid; grid-template-columns:1fr auto; gap:8px; margin-top:9px; }
    .map-preview { margin-top:9px; min-height:84px; border:1px dashed var(--line); border-radius:12px; background-size:cover; background-position:center; display:grid; place-items:center; color:var(--muted); }
    @media (max-width:900px){ .place-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.place-view{grid-template-columns:1fr}.place-view-image{min-height:280px}.inventory-grid{grid-template-columns:1fr} }
    @media (max-width:620px){ .place-controls,.place-grid{grid-template-columns:1fr}.link-copy-row{grid-template-columns:1fr}.world-map{width:850px;height:540px} }


    /* v9: publication and visibility */
    .publication-controls { grid-column:1/-1; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding:14px; border:1px solid rgba(210,177,116,.18); border-radius:14px; background:rgba(210,177,116,.035); }
    .publication-controls .full { grid-column:1/-1; }
    .publication-profile-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:7px; }
    .publication-profile { display:flex; gap:8px; align-items:flex-start; padding:9px 10px; border:1px solid var(--line); border-radius:10px; background:rgba(255,255,255,.02); }
    .publication-profile span { display:grid; gap:2px; }
    .publication-profile small { color:var(--muted); }
    .publication-badges { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0; }
    .publication-badge { display:inline-flex; align-items:center; gap:5px; padding:4px 7px; border:1px solid var(--line); border-radius:999px; font-size:10px; letter-spacing:.04em; color:var(--gold-2); background:rgba(210,177,116,.055); }
    .publication-badge.draft { color:#e2aa67; border-color:rgba(226,170,103,.28); }
    .publication-badge.archived { color:#98a1ad; border-color:rgba(152,161,173,.25); }
    .publication-badge.restricted { color:#c791e8; border-color:rgba(199,145,232,.25); }
    .record-draft, .record-archived { position:relative; }
    body.role-owner .record-draft::after, body.role-editor .record-draft::after, body.role-chronicler .record-draft::after { content:'ЧЕРНОВИК'; position:absolute; right:10px; top:10px; padding:4px 7px; border-radius:999px; background:rgba(170,103,38,.88); color:white; font:700 9px/1 system-ui; letter-spacing:.1em; z-index:2; }
    body.role-owner .record-archived, body.role-editor .record-archived, body.role-chronicler .record-archived { opacity:.62; filter:saturate(.68); }
    .publish-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
    .publish-preview { margin-top:14px; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
    .publish-preview div { border:1px solid var(--line); border-radius:12px; padding:10px; background:rgba(255,255,255,.025); }
    .publish-preview strong { display:block; font:700 23px Georgia,serif; color:var(--gold); }
    .publish-preview span { color:var(--muted); font-size:11px; }
    .publication-gate { position:fixed; inset:0; z-index:9999; display:none; place-items:center; padding:20px; background:radial-gradient(circle at 50% 30%,rgba(81,43,63,.42),rgba(7,8,12,.96) 55%); }
    .publication-gate.open { display:grid; }
    .publication-gate-card { width:min(460px,100%); border:1px solid rgba(210,177,116,.3); border-radius:22px; padding:28px; background:#111219; box-shadow:0 28px 90px rgba(0,0,0,.55); text-align:center; }
    .publication-gate-card .sigil { margin:0 auto 16px; }
    .publication-gate-card h2 { margin:0 0 8px; font:600 31px Georgia,serif; }
    .publication-gate-card p { color:var(--muted); line-height:1.55; }
    body.entry-published #accessBtn, body.entry-published #editToggle, body.entry-published .owner-only, body.entry-published .edit-only { display:none !important; }
    .profile-character-select { display:grid; grid-template-columns:1fr; }
    @media(max-width:720px){.publication-controls,.publish-grid,.publication-profile-list{grid-template-columns:1fr}.publish-preview{grid-template-columns:repeat(2,minmax(0,1fr))}}


    /* v9: quick creation */
    #quickAddBtn { display:none; }
    body.entry-editor.role-chronicler #quickAddBtn,
    body.entry-editor.role-editor #quickAddBtn,
    body.entry-editor.role-owner #quickAddBtn { display:inline-flex; }
    .quick-create-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:16px; }
    .quick-create { display:flex; align-items:center; gap:12px; min-height:68px; padding:13px; text-align:left; border:1px solid var(--line); border-radius:14px; color:var(--ink); background:rgba(255,255,255,.025); }
    .quick-create:hover { border-color:rgba(210,177,116,.5); background:rgba(210,177,116,.07); transform:translateY(-1px); }
    .quick-create-icon { width:38px; height:38px; display:grid; place-items:center; flex:0 0 auto; border:1px solid rgba(210,177,116,.25); border-radius:12px; color:var(--gold); background:rgba(210,177,116,.06); font:600 19px Georgia,serif; }
    .quick-create strong,.quick-create small { display:block; }
    .quick-create small { margin-top:3px; color:var(--muted); line-height:1.3; }
    .quick-create.editor-level { display:none; }
    body.role-editor .quick-create.editor-level, body.role-owner .quick-create.editor-level { display:flex; }
    @media(max-width:620px){.quick-create-grid{grid-template-columns:1fr}}


    /* v10.3: фэнтезийные шкалы, расширенные права хрониста и общий склад */
    .relationship-meter { --meter-pos:50%; position:relative; overflow:hidden; margin:15px 0 5px; padding:13px 15px 12px; border:1px solid color-mix(in srgb,var(--relation-color,var(--gold)) 36%,rgba(210,177,116,.18)); border-radius:15px; background:radial-gradient(circle at var(--meter-pos) 58%,color-mix(in srgb,var(--relation-color,var(--gold)) 14%,transparent),transparent 28%),linear-gradient(145deg,rgba(42,36,43,.92),rgba(17,18,24,.96)); box-shadow:inset 0 0 0 1px rgba(255,236,189,.035),inset 0 0 24px rgba(0,0,0,.34),0 8px 20px rgba(0,0,0,.16); }
    .relationship-meter::before { content:'✦ ᚱ ᚢ ᚾ ᚨ ✦'; position:absolute; inset:5px 13px auto; text-align:center; color:color-mix(in srgb,var(--relation-color,var(--gold)) 45%,transparent); font:9px/1 Georgia,serif; letter-spacing:.42em; opacity:.55; pointer-events:none; }
    .relationship-meter-head { position:relative; z-index:2; display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin:5px 0 10px; }
    .relationship-meter-head span { color:#c9bfd0; font:700 10px/1.2 Georgia,serif; text-transform:uppercase; letter-spacing:.16em; }
    .relationship-meter-head strong { color:#f1d9a5; font:700 12px Georgia,serif; text-shadow:0 0 12px color-mix(in srgb,var(--relation-color,var(--gold)) 45%,transparent); }
    .relationship-meter-track { position:relative; height:17px; margin:0 18px; border:1px solid rgba(241,217,165,.28); border-radius:3px; background:linear-gradient(90deg,#762c3d 0%,#a24a50 24%,#35313b 49.5%,#35313b 50.5%,#39755f 76%,#55a57f 100%); box-shadow:inset 0 2px 7px rgba(0,0,0,.72),0 0 0 2px rgba(12,12,17,.72),0 0 13px color-mix(in srgb,var(--relation-color,var(--gold)) 12%,transparent);  }
    .relationship-meter-track::before { content:'◇'; position:absolute; left:50%; top:50%; z-index:2; transform:translate(-50%,-50%); color:#d9c69c; font:13px Georgia,serif; text-shadow:0 0 7px #0c0c11; }
    .relationship-meter-track::after { content:''; position:absolute; inset:4px 3px; border-top:1px solid rgba(255,241,207,.17); pointer-events:none; }
    .relationship-meter-end { position:absolute; top:50%; z-index:3; width:25px; height:25px; display:grid; place-items:center; transform:translateY(-50%); border:1px solid rgba(241,217,165,.34); border-radius:50%; background:#17171e; color:#d8c7a1; font:12px Georgia,serif; box-shadow:0 0 0 3px rgba(10,10,14,.75),0 0 12px rgba(0,0,0,.55); }
    .relationship-meter-end.negative { left:-17px; color:#d88891; }
    .relationship-meter-end.positive { right:-17px; color:#8bd1aa; }
    .relationship-meter-marker { position:absolute; left:var(--meter-pos); top:50%; z-index:4; width:20px; height:20px; transform:translate(-50%,-50%) rotate(45deg); background:linear-gradient(135deg,#fff3cf,var(--relation-color,var(--gold)) 42%,#241d27 115%); border:2px solid #f3e6c9; border-radius:4px; box-shadow:0 0 0 3px rgba(0,0,0,.42),0 0 18px color-mix(in srgb,var(--relation-color,var(--gold)) 75%,transparent); }
    .relationship-meter-marker::after { content:'✦'; position:absolute; inset:0; display:grid; place-items:center; transform:rotate(-45deg); color:#18131a; font:9px Georgia,serif; }
    .relationship-meter-scale { display:flex; justify-content:space-between; margin:8px 2px 0; color:#8f8997; font:9px Georgia,serif; letter-spacing:.06em; }
    .relationship-meter-scale span:nth-child(2) { color:#c6bda9; }
    .relationship-meter.mini { margin:9px 0 0; padding:9px 10px 8px; }
    .relationship-meter.mini::before,.relationship-meter.mini .relationship-meter-scale { display:none; }
    .relationship-meter.mini .relationship-meter-head { margin:0 0 7px; }
    .relationship-meter.mini .relationship-meter-track { height:12px; margin:0 13px; }
    .relationship-meter.mini .relationship-meter-end { width:19px; height:19px; font-size:9px; }
    .relationship-meter.mini .relationship-meter-end.negative { left:-12px; }
    .relationship-meter.mini .relationship-meter-end.positive { right:-12px; }
    .relationship-meter.mini .relationship-meter-marker { width:15px; height:15px; }

    .stash-toolbar { display:grid; grid-template-columns:minmax(240px,1.5fr) minmax(180px,.7fr) auto; gap:10px; align-items:center; margin-bottom:16px; }
    .stash-total { min-height:42px; display:flex; align-items:center; justify-content:center; padding:8px 12px; border:1px solid var(--line); border-radius:11px; color:var(--gold-2); background:rgba(210,177,116,.045); font-size:12px; white-space:nowrap; }
    .stash-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
    .stash-item { --item-color:#d2b174; position:relative; overflow:hidden; min-height:210px; border:1px solid color-mix(in srgb,var(--item-color) 36%,var(--line)); border-radius:17px; padding:16px; background:linear-gradient(150deg,color-mix(in srgb,var(--item-color) 7%,rgba(255,255,255,.025)),rgba(20,20,27,.92)); box-shadow:0 13px 30px rgba(0,0,0,.18); }
    .stash-item::after { content:'⚿'; position:absolute; right:-8px; bottom:-20px; color:color-mix(in srgb,var(--item-color) 16%,transparent); font:90px Georgia,serif; transform:rotate(-12deg); pointer-events:none; }
    .stash-item > * { position:relative; z-index:1; }
    .stash-item h4 { margin:5px 0 7px; font:600 22px Georgia,serif; }
    .stash-item p { color:var(--muted); line-height:1.5; }
    .stash-source { color:var(--item-color); text-transform:uppercase; letter-spacing:.1em; font-size:10px; }
    .stash-actions { display:flex; gap:7px; flex-wrap:wrap; margin-top:14px; }
    @media(max-width:900px){.stash-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
    @media(max-width:620px){.stash-toolbar,.stash-grid{grid-template-columns:1fr}.stash-total{justify-content:flex-start}}
    .score-editor { grid-column:1/-1; display:grid; grid-template-columns:minmax(0,1fr) 92px; gap:10px; align-items:end; padding:13px; border:1px solid rgba(210,177,116,.18); border-radius:14px; background:rgba(210,177,116,.035); }
    .score-editor .full { grid-column:1/-1; }
    .score-preview { margin-top:8px; }
    input[type=range].relation-range { width:100%; accent-color:var(--wine-2); }
    .collab-only { display:none !important; }
    body.collab-mode .collab-only { display:inline-flex !important; }
    body.collab-mode #accessBtn, body.collab-mode .owner-only { display:none !important; }
    .collab-banner { display:none; margin:0 0 18px; padding:13px 15px; border:1px solid rgba(79,158,232,.32); border-radius:14px; color:#d8ebff; background:rgba(79,158,232,.08); }
    body.collab-mode .collab-banner { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
    .collab-banner-copy { display:grid; gap:4px; min-width:min(520px,100%); flex:1 1 520px; }
    .collab-banner-copy span { color:#bcd4ec; font-size:12px; line-height:1.45; }
    .collab-banner-actions { display:flex; gap:8px; flex-wrap:wrap; }
    body.collab-mode #editToggle { border-color:rgba(79,158,232,.48); color:#d8ebff; background:rgba(79,158,232,.08); }
    .collab-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
    .collab-card { border:1px solid var(--line); border-radius:16px; padding:16px; background:rgba(255,255,255,.025); }
    .collab-card h4 { margin:0 0 7px; font:600 21px Georgia,serif; }
    .collab-card p { margin:0 0 13px; color:var(--muted); line-height:1.5; }
    .patch-review-list { display:grid; gap:10px; margin-top:13px; }
    .patch-change { border:1px solid var(--line); border-left:4px solid var(--gold); border-radius:13px; padding:12px; background:rgba(255,255,255,.025); }
    .patch-change.conflict { border-left-color:#dc5a5a; background:rgba(220,90,90,.055); }
    .patch-change-head { display:flex; justify-content:space-between; gap:10px; align-items:start; }
    .patch-change h4 { margin:0; font:600 18px Georgia,serif; }
    .patch-change small { color:var(--muted); }
    .patch-change select { margin-top:10px; }
    .patch-change details { margin-top:9px; }
    .patch-change summary { color:var(--gold-2); cursor:pointer; font-size:12px; }
    .patch-diff { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin-top:8px; }
    .patch-diff pre { max-height:190px; overflow:auto; margin:0; padding:8px; border:1px solid var(--line); border-radius:9px; background:#101117; color:#c9c6d2; font:10px/1.4 ui-monospace,monospace; white-space:pre-wrap; word-break:break-word; }
    .patch-summary { display:flex; flex-wrap:wrap; gap:7px; margin-top:10px; }
    .patch-summary span { padding:5px 8px; border:1px solid var(--line); border-radius:999px; color:var(--muted); font-size:11px; }
    @media(max-width:720px){.collab-grid,.patch-diff,.score-editor{grid-template-columns:1fr}.score-editor .full{grid-column:auto}}


    /* v11: session desk, visual frames and quieter editing UI */
    .session-only { display:none; }
    body.entry-editor.role-chronicler .session-only,
    body.entry-editor.role-editor .session-only,
    body.entry-editor.role-owner .session-only { display:inline-flex; }
    body.entry-published .session-only { display:none !important; }

    .advanced-details { grid-column:1/-1; border:1px solid rgba(210,177,116,.16); border-radius:14px; background:rgba(210,177,116,.025); overflow:hidden; }
    .advanced-details > summary { list-style:none; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; cursor:pointer; color:var(--gold-2); font-size:12px; letter-spacing:.04em; }
    .advanced-details > summary::-webkit-details-marker { display:none; }
    .advanced-details > summary::after { content:'＋'; color:var(--muted); transition:.2s ease; }
    .advanced-details[open] > summary::after { content:'−'; color:var(--gold); }
    .advanced-details .publication-controls { margin:0; padding:0 13px 13px; border:0; background:transparent; border-radius:0; }

    .session-layout { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(250px,.65fr); gap:16px; }
    .session-panel { border:1px solid var(--line); border-radius:17px; padding:15px; background:rgba(255,255,255,.025); }
    .session-panel h4 { margin:0 0 10px; font:600 20px Georgia,serif; }
    .session-checks { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; max-height:220px; overflow:auto; padding-right:4px; }
    .session-check { display:flex; align-items:center; gap:8px; min-width:0; padding:8px 9px; border:1px solid rgba(210,177,116,.13); border-radius:10px; background:rgba(255,255,255,.02); color:var(--muted); font-size:12px; }
    .session-check span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .session-hint { margin-top:7px; color:var(--muted); font-size:11px; line-height:1.45; }
    .session-draft-status { display:inline-flex; align-items:center; gap:7px; color:#9fc9ad; font-size:11px; }
    .session-draft-status::before { content:'◆'; color:#6caf83; font-size:8px; }
    .session-summary { margin-top:13px; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
    .session-summary div { border:1px solid var(--line); border-radius:11px; padding:9px; background:rgba(255,255,255,.02); }
    .session-summary strong,.session-summary span { display:block; }
    .session-summary strong { color:var(--gold-2); font:600 19px Georgia,serif; }
    .session-summary span { margin-top:2px; color:var(--muted); font-size:10px; }

    .relationship-meter-track .relationship-meter-trail { position:absolute; top:3px; bottom:3px; left:var(--trail-left,50%); width:var(--trail-width,0%); border-radius:2px; background:linear-gradient(90deg,color-mix(in srgb,var(--relation-color,var(--gold)) 18%,transparent),color-mix(in srgb,var(--relation-color,var(--gold)) 72%,#fff 5%)); box-shadow:0 0 13px color-mix(in srgb,var(--relation-color,var(--gold)) 45%,transparent); opacity:.72; }
    .relation-history { margin-top:10px; border-top:1px solid rgba(210,177,116,.12); padding-top:9px; }
    .relation-history summary { cursor:pointer; color:var(--gold-2); font-size:11px; }
    .relation-history-list { display:grid; gap:7px; margin-top:8px; }
    .relation-history-item { display:grid; grid-template-columns:auto 1fr; gap:8px; align-items:start; color:var(--muted); font-size:11px; line-height:1.4; }
    .relation-history-delta { min-width:62px; color:var(--relation-color,var(--gold)); font-family:Georgia,serif; }

    .card[class*="frame-"]::before { content:''; position:absolute; inset:0; z-index:4; pointer-events:none; border-radius:inherit; box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--frame-accent,var(--gold)) 36%,transparent),inset 0 0 28px color-mix(in srgb,var(--frame-accent,var(--gold)) 7%,transparent); }
    .card[class*="frame-"] .portrait::before { content:var(--frame-symbol,'✦'); position:absolute; z-index:3; right:12px; top:11px; width:30px; height:30px; display:grid; place-items:center; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 45%,transparent); border-radius:50%; color:var(--frame-accent,var(--gold)); background:rgba(12,13,18,.72); box-shadow:0 0 16px color-mix(in srgb,var(--frame-accent,var(--gold)) 22%,transparent); font:14px Georgia,serif; }
    .frame-classic { --frame-accent:var(--gold); --frame-symbol:'✦'; }
    .frame-royal { --frame-accent:#e0ba58; --frame-symbol:'♛'; }
    .frame-infernal { --frame-accent:#c85464; --frame-symbol:'◆'; }
    .frame-arcane { --frame-accent:#8b70d8; --frame-symbol:'✧'; }
    .frame-verdant { --frame-accent:#70aa7b; --frame-symbol:'❦'; }
    .frame-frost { --frame-accent:#79b8d2; --frame-symbol:'❄'; }
    .preview-profile[class*="frame-"] { position:relative; overflow:hidden; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 32%,var(--line)); border-radius:18px; box-shadow:inset 0 0 38px color-mix(in srgb,var(--frame-accent,var(--gold)) 5%,transparent); }
    .preview-profile[class*="frame-"]::after { content:var(--frame-symbol,'✦'); position:absolute; right:19px; top:16px; color:color-mix(in srgb,var(--frame-accent,var(--gold)) 32%,transparent); font:48px Georgia,serif; pointer-events:none; }

    .secret { padding:13px 14px; border:1px dashed rgba(134,103,204,.32); border-radius:13px; background:radial-gradient(circle at 8% 15%,rgba(134,103,204,.1),transparent 28%),rgba(72,51,91,.055); }
    .secret.revealed { border-style:solid; box-shadow:inset 0 0 22px rgba(134,103,204,.06); }
    .secret-toggle { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:34px; padding:7px 11px; border-color:rgba(164,134,242,.30); background:linear-gradient(180deg,rgba(164,134,242,.09),rgba(255,255,255,.025)); color:#ddd1f3; }
    .secret-toggle:hover { border-color:rgba(180,151,244,.55); background:rgba(164,134,242,.13); }
    .secret-toggle[aria-expanded="true"] { border-color:rgba(210,177,116,.34); color:var(--gold-2); background:rgba(210,177,116,.07); }

    .modal-foot { position:sticky; bottom:0; z-index:3; backdrop-filter:blur(14px); background:linear-gradient(180deg,rgba(20,20,26,.76),rgba(20,20,26,.97) 28%); }

    @media (max-width:900px) {
      .session-layout { grid-template-columns:1fr; }
      .tabs { width:100%; max-width:100%; justify-content:flex-start; overflow-x:auto; overscroll-behavior-inline:contain; scrollbar-width:none; }
      .tabs::-webkit-scrollbar { display:none; }
      .tab { flex:0 0 auto; }
    }
    @media (max-width:620px) {
      .topbar-inner { align-items:flex-start; flex-direction:column; padding:10px 0; gap:8px; }
      .toolbar { width:100%; flex-wrap:nowrap; overflow-x:auto; justify-content:flex-start; padding-bottom:3px; scrollbar-width:none; }
      .toolbar::-webkit-scrollbar { display:none; }
      .toolbar .btn,.toolbar .access-badge,.toolbar .save-status { flex:0 0 auto; }
      .hero { padding-top:36px; }
      .tabs { top:112px; margin-bottom:22px; }
      .session-checks,.session-summary { grid-template-columns:1fr; }
    }


    /* v11.3: distinct fantasy identities without adding interface clutter */
    .card[class*="frame-"] {
      border-color: color-mix(in srgb,var(--frame-accent,var(--gold)) 48%,#34303b);
      border-radius: var(--frame-corner,18px);
      background:
        var(--frame-pattern,linear-gradient(135deg,transparent,transparent)),
        radial-gradient(circle at 16% 2%,color-mix(in srgb,var(--frame-accent,var(--gold)) 12%,transparent),transparent 36%),
        linear-gradient(145deg,color-mix(in srgb,var(--frame-surface,rgba(28,27,31,.97)) 94%,var(--frame-accent,var(--gold)) 6%),var(--frame-surface,rgba(28,27,31,.97)));
      box-shadow: 0 18px 45px rgba(0,0,0,.25), inset 0 0 34px var(--frame-glow,rgba(210,177,116,.13));
    }
    .card[class*="frame-"]::before {
      inset: 5px;
      border-radius: calc(var(--frame-corner) - 5px);
      box-shadow:
        inset 0 0 0 1px color-mix(in srgb,var(--frame-accent,var(--gold)) 48%,transparent),
        inset 0 0 0 4px rgba(10,10,14,.30),
        inset 0 0 28px color-mix(in srgb,var(--frame-accent,var(--gold)) 8%,transparent);
    }
    .card[class*="frame-"]::after {
      content: var(--frame-ornament,'');
      position:absolute;
      z-index:3;
      left:12px;
      top:9px;
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 48%,transparent);
      font:700 22px/1 Georgia,serif;
      letter-spacing:4px;
      pointer-events:none;
      text-shadow:0 0 14px color-mix(in srgb,var(--frame-accent,var(--gold)) 35%,transparent);
    }
    .card[class*="frame-"] .portrait {
      margin:7px 7px 0;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 52%,transparent);
      border-radius:calc(var(--frame-corner) - 8px) calc(var(--frame-corner) - 8px) 7px 7px;
      box-shadow:0 9px 24px rgba(0,0,0,.28),inset 0 0 24px color-mix(in srgb,var(--frame-accent,var(--gold)) 8%,transparent);
    }
    .card[class*="frame-"] .card-body { padding-top:18px; }
    .card[class*="frame-"] h4 { color:color-mix(in srgb,var(--frame-accent,var(--gold)) 52%,#f2eadc); text-shadow:0 1px 0 #000,0 0 18px color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,transparent); }
    .card[class*="frame-"] .status { border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 35%,var(--line)); color:color-mix(in srgb,var(--frame-accent,var(--gold)) 60%,#efe7d7); }

    .frame-classic {
      --frame-accent:#d2b174; --frame-secondary:#8a7655; --frame-symbol:'✦';
      --frame-ornament:'· ✦ ·'; --frame-surface:#211f25; --frame-corner:18px;
      --frame-pattern:linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.012) 1px,transparent 1px);
      background-size:auto,22px 22px,22px 22px;
    }
    .frame-royal {
      --frame-accent:#e8bd52; --frame-secondary:#8f1835; --frame-symbol:'♛';
      --frame-ornament:'♜  ✦  ♜'; --frame-surface:#25171d; --frame-corner:24px 7px 24px 7px;
      --frame-glow:rgba(232,189,82,.16);
      --frame-pattern:radial-gradient(circle at 50% -18%,rgba(232,189,82,.22),transparent 45%),repeating-linear-gradient(135deg,rgba(143,24,53,.09) 0 7px,transparent 7px 18px);
    }
    .frame-royal .portrait { border-width:2px; box-shadow:0 10px 25px rgba(0,0,0,.34),0 0 0 3px rgba(143,24,53,.22),inset 0 0 20px rgba(232,189,82,.11); }
    .frame-royal .portrait::before { border-radius:5px 50% 50% 50%; transform:rotate(45deg); }
    .frame-royal .portrait::before { line-height:1; }

    .frame-infernal {
      --frame-accent:#e05258; --frame-secondary:#f08a3c; --frame-symbol:'♢';
      --frame-ornament:'⌁  ◆  ⌁'; --frame-surface:#201416; --frame-corner:5px 23px 5px 23px;
      --frame-glow:rgba(224,82,88,.17);
      --frame-pattern:radial-gradient(circle at 18% 100%,rgba(240,92,40,.18),transparent 32%),repeating-linear-gradient(118deg,transparent 0 18px,rgba(224,82,88,.055) 19px 20px);
    }
    .frame-infernal .portrait { clip-path:polygon(3% 0,100% 0,97% 100%,0 100%); border-color:rgba(240,104,66,.64); }
    .frame-infernal::after { animation:infernalPulse 4.8s ease-in-out infinite; }
    @keyframes infernalPulse { 0%,100%{opacity:.42;filter:brightness(.9)} 50%{opacity:.82;filter:brightness(1.3)} }

    .frame-arcane {
      --frame-accent:#a486f2; --frame-secondary:#62b5dc; --frame-symbol:'✧';
      --frame-ornament:'◌  ✧  ◌'; --frame-surface:#171828; --frame-corner:28px;
      --frame-glow:rgba(139,112,216,.18);
      --frame-pattern:radial-gradient(circle at 82% 16%,rgba(98,181,220,.16),transparent 27%),repeating-radial-gradient(circle at 50% 15%,transparent 0 17px,rgba(164,134,242,.052) 18px 19px);
    }
    .frame-arcane .portrait { border-radius:50% 50% 12px 12px / 20% 20% 12px 12px; box-shadow:0 0 0 3px rgba(98,181,220,.12),0 0 28px rgba(139,112,216,.18); }
    .frame-arcane .portrait::before { box-shadow:0 0 0 4px rgba(139,112,216,.10),0 0 22px rgba(98,181,220,.44); }

    .frame-verdant {
      --frame-accent:#79b982; --frame-secondary:#b79b58; --frame-symbol:'❦';
      --frame-ornament:'❧  ❦  ❧'; --frame-surface:#17221b; --frame-corner:26px 12px 26px 12px;
      --frame-glow:rgba(112,170,123,.16);
      --frame-pattern:radial-gradient(ellipse at 0 100%,rgba(112,170,123,.18),transparent 33%),radial-gradient(ellipse at 100% 0,rgba(183,155,88,.10),transparent 31%),repeating-linear-gradient(45deg,transparent 0 22px,rgba(121,185,130,.035) 23px 24px);
    }
    .frame-verdant .portrait { border-radius:45% 45% 14px 14px / 16% 16% 14px 14px; border-color:rgba(121,185,130,.58); }
    .frame-verdant::after { letter-spacing:2px; }

    .frame-frost {
      --frame-accent:#8fd4ed; --frame-secondary:#d8f4ff; --frame-symbol:'❄';
      --frame-ornament:'✧  ❄  ✧'; --frame-surface:#14212a; --frame-corner:4px 28px 4px 28px;
      --frame-glow:rgba(121,184,210,.18);
      --frame-pattern:linear-gradient(120deg,rgba(216,244,255,.07),transparent 22%,transparent 74%,rgba(143,212,237,.08)),repeating-linear-gradient(60deg,transparent 0 25px,rgba(216,244,255,.035) 26px 27px);
    }
    .frame-frost .portrait { clip-path:polygon(5% 0,95% 0,100% 9%,100% 91%,95% 100%,5% 100%,0 91%,0 9%); border-color:rgba(143,212,237,.64); }
    .frame-frost .portrait::before { border-radius:3px; transform:rotate(45deg); }

    .frame-cursed {
      --frame-accent:#d34354; --frame-secondary:#8f72cb; --frame-symbol:'◉';
      --frame-ornament:'⟁  ◉  ⟁'; --frame-surface:#170f17; --frame-corner:3px 25px 17px 9px;
      --frame-glow:rgba(211,67,84,.19);
      --frame-pattern:radial-gradient(circle at 50% 14%,rgba(143,114,203,.19),transparent 24%),repeating-conic-gradient(from 12deg at 50% 12%,rgba(211,67,84,.055) 0 3deg,transparent 3deg 18deg);
    }
    .frame-cursed .portrait { clip-path:polygon(0 5%,93% 0,100% 90%,7% 100%); border-color:rgba(211,67,84,.72); box-shadow:0 0 0 2px rgba(143,114,203,.14),0 0 30px rgba(211,67,84,.18); }
    .frame-cursed::after { animation:cursedGlitch 6s steps(1,end) infinite; }
    @keyframes cursedGlitch { 0%,87%,100%{transform:none} 88%{transform:translateX(2px);opacity:.9} 89%{transform:translateX(-1px);opacity:.45} 90%{transform:none} }

    .preview-profile[class*="frame-"] {
      --profile-frame:color-mix(in srgb,var(--frame-accent,var(--gold)) 44%,var(--line));
      border:1px solid var(--profile-frame);
      border-radius:var(--frame-corner,20px);
      background:
        var(--frame-pattern,linear-gradient(transparent,transparent)),
        radial-gradient(circle at 12% 5%,color-mix(in srgb,var(--frame-accent,var(--gold)) 10%,transparent),transparent 35%),
        linear-gradient(145deg,color-mix(in srgb,var(--frame-surface,#1d1d24) 96%,var(--frame-accent,var(--gold)) 4%),var(--frame-surface,#1d1d24));
      box-shadow:0 24px 80px rgba(0,0,0,.34),inset 0 0 55px var(--frame-glow,rgba(210,177,116,.08));
    }
    .preview-profile[class*="frame-"]::before {
      content:'';position:absolute;inset:7px;pointer-events:none;border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 28%,transparent);border-radius:calc(var(--frame-corner,20px) - 6px);z-index:3;
    }
    .preview-profile[class*="frame-"] .profile-image { margin:9px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 54%,transparent); border-radius:calc(var(--frame-corner,20px) - 8px); overflow:hidden; box-shadow:0 12px 35px rgba(0,0,0,.30),inset 0 0 28px color-mix(in srgb,var(--frame-accent,var(--gold)) 10%,transparent); }
    .preview-profile[class*="frame-"] .profile-copy h3 { color:color-mix(in srgb,var(--frame-accent,var(--gold)) 56%,#f5eddf); text-shadow:0 0 20px color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent); }
    body.effects-off .frame-infernal::after,body.effects-off .frame-cursed::after { animation:none !important; }


    /* v11.4: richer dossier presentation */
    .profile-kicker { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:14px; padding:10px 14px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 26%,transparent); border-radius:999px; background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 12%,transparent),rgba(255,255,255,.03)); color:color-mix(in srgb,var(--frame-accent,var(--gold)) 68%,#f0e7d5); font-size:11px; letter-spacing:.12em; text-transform:uppercase; }
    .profile-kicker span:last-child { color:var(--muted); letter-spacing:.04em; text-transform:none; font-size:12px; }
    .profile-title-row { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
    .profile-sigil { flex:0 0 auto; width:72px; height:72px; display:grid; place-items:center; border-radius:20px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 38%,transparent); background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent),transparent 65%),rgba(12,13,18,.44); color:color-mix(in srgb,var(--frame-accent,var(--gold)) 82%,#fff); font:700 34px/1 Georgia,serif; box-shadow:inset 0 0 24px color-mix(in srgb,var(--frame-accent,var(--gold)) 10%,transparent),0 10px 24px rgba(0,0,0,.22); }
    .profile-image { position:relative; }
    .profile-image-overlay { position:absolute; left:18px; right:18px; bottom:18px; display:flex; align-items:end; justify-content:space-between; gap:12px; padding:12px 14px; border-radius:16px; background:linear-gradient(180deg,transparent,rgba(10,10,14,.84)); color:#eee7da; pointer-events:none; }
    .profile-image-overlay span { display:block; font-size:10px; text-transform:uppercase; letter-spacing:.16em; color:color-mix(in srgb,var(--frame-accent,var(--gold)) 68%,#fff); }
    .profile-image-overlay strong { font:700 28px/1 Georgia,serif; color:color-mix(in srgb,var(--frame-accent,var(--gold)) 78%,#fff); text-shadow:0 0 12px color-mix(in srgb,var(--frame-accent,var(--gold)) 35%,transparent); }
    .preview-profile[class*="frame-"] .profile-copy { position:relative; padding:30px 30px 26px; }
    .preview-profile[class*="frame-"] .profile-copy::before { content:''; position:absolute; inset:18px 18px auto 18px; height:1px; background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 55%,transparent),transparent 88%); opacity:.75; }
    .preview-profile[class*="frame-"] .profile-copy h5 { color:color-mix(in srgb,var(--frame-accent,var(--gold)) 74%,#f6eddd); margin-bottom:16px; }
    .preview-profile[class*="frame-"] .profile-meta { margin-bottom:16px; }
    .preview-profile[class*="frame-"] .profile-meta .pill { border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,var(--line)); background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 11%,transparent),rgba(255,255,255,.03)); color:color-mix(in srgb,var(--frame-accent,var(--gold)) 68%,#f1e8d7); box-shadow:inset 0 0 0 1px rgba(255,255,255,.02); }
    .profile-quote { position:relative; margin:18px 0 20px; padding:16px 18px 16px 24px; border-radius:18px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 22%,transparent); background:linear-gradient(135deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 9%,transparent),rgba(255,255,255,.025)); }
    .profile-quote::before { content:'“'; position:absolute; left:10px; top:-2px; color:color-mix(in srgb,var(--frame-accent,var(--gold)) 52%,transparent); font:700 38px/1 Georgia,serif; }
    .profile-lore-box { margin-top:16px; padding:16px 18px; border-radius:18px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,var(--line)); background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.015)); box-shadow:inset 0 0 22px color-mix(in srgb,var(--frame-accent,var(--gold)) 5%,transparent); }
    .profile-lore-box .eyebrow, .profile-secret-wrap .eyebrow { margin-bottom:8px; }
    .profile-tags { margin:18px 0 0; }
    .profile-secret-wrap { margin-top:18px; padding:16px 18px 18px; border-radius:18px; border:1px solid rgba(134,103,204,.22); background:linear-gradient(180deg,rgba(134,103,204,.08),rgba(255,255,255,.015)); }
    .preview-profile[class*="frame-"] .profile-columns { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:22px; }
    .preview-profile[class*="frame-"] .profile-panel { position:relative; overflow:hidden; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,var(--line)); border-radius:18px; padding:16px 16px 14px; background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.02)); box-shadow:inset 0 0 18px color-mix(in srgb,var(--frame-accent,var(--gold)) 5%,transparent); }
    .preview-profile[class*="frame-"] .profile-panel::before { content:''; position:absolute; inset:0 0 auto 0; height:3px; background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,transparent),transparent); opacity:.8; }
    .preview-profile[class*="frame-"] .profile-panel h6 { color:color-mix(in srgb,var(--frame-accent,var(--gold)) 74%,#f2eadc); }
    .preview-profile[class*="frame-"] .profile-link { border-radius:14px; border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,var(--line)); background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.012)); }
    .preview-profile[class*="frame-"] .profile-link:hover { transform:translateY(-1px); border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,var(--line)); box-shadow:0 10px 22px rgba(0,0,0,.18); }
    .frame-royal .profile-sigil,.frame-royal .profile-image-overlay{backdrop-filter:blur(2px)}
    .frame-royal .profile-panel{background:linear-gradient(180deg,rgba(232,189,82,.08),rgba(255,255,255,.02));}
    .frame-infernal .profile-panel{background:linear-gradient(180deg,rgba(224,82,88,.08),rgba(255,255,255,.018));}
    .frame-arcane .profile-panel{background:linear-gradient(180deg,rgba(164,134,242,.08),rgba(255,255,255,.02));}
    .frame-verdant .profile-panel{background:linear-gradient(180deg,rgba(121,185,130,.08),rgba(255,255,255,.02));}
    .frame-frost .profile-panel{background:linear-gradient(180deg,rgba(143,212,237,.08),rgba(255,255,255,.02));}
    .frame-cursed .profile-panel{background:linear-gradient(180deg,rgba(211,67,84,.08),rgba(143,114,203,.05));}
    @media (max-width:820px){ .profile-kicker,.profile-title-row{flex-direction:column;align-items:flex-start;} .profile-sigil{width:58px;height:58px;font-size:28px} .profile-image-overlay{left:12px;right:12px;bottom:12px;} }


    /* v11.4.1: release QA fixes */
    #profileModal .modal { width:min(1040px,100%); }
    #placeViewModal .modal { width:min(960px,100%); }
    .modal-head { position:sticky; top:0; z-index:5; background:rgba(23,23,30,.94); backdrop-filter:blur(14px); }
    @media (max-width:620px){ #profileModal.modal-backdrop,#placeViewModal.modal-backdrop{padding:10px}.modal{margin:10px auto}.profile-copy{padding:22px 18px}.profile-kicker span:last-child{line-height:1.4} }


    /* v11.5: restrained fantasy polish and comfort layer */
    .comfort-toggle[aria-pressed="true"] { color:var(--gold-2); border-color:rgba(210,177,116,.52); background:rgba(210,177,116,.09); }
    body.calm-mode .ambient { display:none; }
    body.calm-mode .card:hover, body.calm-mode .profile-link:hover, body.calm-mode .btn:hover { transform:none; }
    body.calm-mode .card::after, body.calm-mode .frame-infernal::after, body.calm-mode .frame-cursed::after { animation:none !important; }
    body.calm-mode .card-shimmer, body.calm-mode .event-seal::after { display:none; }

    .character-card { isolation:isolate; }
    .character-card .portrait { min-height:220px; }
    .character-card .portrait::after { background:linear-gradient(to top,rgba(10,11,15,.94),rgba(10,11,15,.08) 62%,rgba(10,11,15,.12)); }
    .character-card .card-identity { position:absolute; z-index:5; left:18px; right:18px; bottom:14px; display:flex; align-items:flex-end; justify-content:space-between; gap:12px; pointer-events:none; }
    .character-card .card-identity-copy { min-width:0; }
    .character-card .card-identity-copy small { display:block; color:color-mix(in srgb,var(--frame-accent,var(--gold)) 76%,#fff); font-size:9px; letter-spacing:.18em; text-transform:uppercase; }
    .character-card .card-identity-copy strong { display:block; margin-top:4px; color:#fff8ed; font:600 21px/1.05 Georgia,serif; text-shadow:0 3px 18px rgba(0,0,0,.85); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .character-card .card-mini-sigil { width:40px; height:40px; flex:0 0 auto; display:grid; place-items:center; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 52%,transparent); border-radius:14px; color:color-mix(in srgb,var(--frame-accent,var(--gold)) 78%,#fff); background:rgba(9,10,14,.72); font:700 18px Georgia,serif; box-shadow:0 0 20px color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent); }
    .card-favorite { position:absolute; z-index:8; left:15px; top:15px; width:38px; height:38px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.16); border-radius:50%; color:#d5c9b6; background:rgba(10,11,15,.72); backdrop-filter:blur(8px); box-shadow:0 7px 18px rgba(0,0,0,.28); transition:.2s ease; }
    .card-favorite:hover { transform:translateY(-1px) scale(1.04); color:var(--gold-2); border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 52%,transparent); }
    .card-favorite.active { color:#ffe19a; background:color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,rgba(10,11,15,.84)); border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 62%,transparent); text-shadow:0 0 13px color-mix(in srgb,var(--frame-accent,var(--gold)) 75%,transparent); }
    .card-shimmer { position:absolute; z-index:4; inset:-40% 45% -40% -55%; pointer-events:none; transform:skewX(-18deg) translateX(-80%); background:linear-gradient(90deg,transparent,rgba(255,245,215,.09),transparent); transition:transform .8s ease; }
    .character-card:hover .card-shimmer { transform:skewX(-18deg) translateX(230%); }
    .character-vitals { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin:15px 0 2px; }
    .character-vital { padding:8px 7px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,var(--line)); border-radius:12px; text-align:center; background:rgba(255,255,255,.022); }
    .character-vital strong { display:block; color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#fff); font:600 17px/1 Georgia,serif; }
    .character-vital span { display:block; margin-top:3px; color:var(--muted); font-size:9px; letter-spacing:.08em; text-transform:uppercase; }
    .character-card .card-actions { align-items:center; }
    .character-card .card-actions .btn:first-child { flex:1; }

    .overview-shortcuts { grid-column:span 5; }
    .shortcut-strip { display:grid; gap:9px; margin-top:13px; }
    .shortcut-character { width:100%; display:grid; grid-template-columns:46px 1fr auto; gap:10px; align-items:center; padding:8px; border:1px solid var(--line); border-radius:14px; color:var(--ink); background:rgba(255,255,255,.022); text-align:left; }
    .shortcut-character:hover { border-color:rgba(210,177,116,.42); background:rgba(210,177,116,.06); }
    .shortcut-avatar { width:46px; height:46px; overflow:hidden; display:grid; place-items:center; border-radius:13px; border:1px solid color-mix(in srgb,var(--shortcut-color,var(--gold)) 34%,var(--line)); background:color-mix(in srgb,var(--shortcut-color,var(--gold)) 9%,#1b1b22); color:var(--shortcut-color,var(--gold)); font:600 17px Georgia,serif; }
    .shortcut-avatar img { width:100%; height:100%; object-fit:cover; }
    .shortcut-character strong,.shortcut-character small { display:block; }
    .shortcut-character small { margin-top:3px; color:var(--muted); }
    .shortcut-star { color:var(--gold-2); }

    .profile-nav { position:sticky; top:70px; z-index:4; display:flex; gap:6px; overflow-x:auto; margin:0 -4px 18px; padding:7px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 22%,var(--line)); border-radius:15px; background:color-mix(in srgb,var(--frame-surface,#17171e) 88%,transparent); backdrop-filter:blur(14px); scrollbar-width:none; }
    .profile-nav::-webkit-scrollbar { display:none; }
    .profile-nav button { flex:0 0 auto; border:0; border-radius:10px; padding:8px 10px; color:var(--muted); background:transparent; font-size:11px; }
    .profile-nav button:hover { color:color-mix(in srgb,var(--frame-accent,var(--gold)) 74%,#fff); background:color-mix(in srgb,var(--frame-accent,var(--gold)) 9%,transparent); }
    .profile-register { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin:16px 0 18px; }
    .profile-register div { padding:10px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 17%,var(--line)); border-radius:13px; background:rgba(255,255,255,.02); }
    .profile-register strong,.profile-register span { display:block; }
    .profile-register strong { color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#fff); font:600 20px/1 Georgia,serif; }
    .profile-register span { margin-top:4px; color:var(--muted); font-size:9px; letter-spacing:.1em; text-transform:uppercase; }
    .profile-favorite { min-width:72px; }
    .profile-section-anchor { scroll-margin-top:140px; }

    .timeline { padding-left:38px; }
    .timeline::before { left:13px; width:2px; background:linear-gradient(180deg,rgba(210,177,116,.72),rgba(210,177,116,.16) 75%,transparent); box-shadow:0 0 12px rgba(210,177,116,.16); }
    .event { display:grid; grid-template-columns:54px minmax(0,1fr); gap:14px; align-items:start; padding:16px; border-radius:19px; transition:.22s ease; }
    .event::before { display:none; }
    .event:hover { transform:translateY(-2px); border-color:color-mix(in srgb,var(--event-tone,var(--gold)) 38%,var(--line)); box-shadow:0 17px 34px rgba(0,0,0,.19); }
    .event-seal { position:relative; width:48px; height:48px; display:grid; place-items:center; border:1px solid color-mix(in srgb,var(--event-tone,var(--gold)) 54%,transparent); border-radius:50%; color:color-mix(in srgb,var(--event-tone,var(--gold)) 78%,#fff); background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--event-tone,var(--gold)) 18%,transparent),rgba(12,13,18,.76)); box-shadow:0 0 0 5px rgba(12,13,18,.8),0 0 21px color-mix(in srgb,var(--event-tone,var(--gold)) 17%,transparent); font:700 19px Georgia,serif; }
    .event-seal::after { content:''; position:absolute; inset:5px; border:1px dashed color-mix(in srgb,var(--event-tone,var(--gold)) 32%,transparent); border-radius:50%; animation:eventSealTurn 18s linear infinite; }
    @keyframes eventSealTurn { to { transform:rotate(360deg); } }
    .event-content { min-width:0; }
    .event-heading { display:flex; justify-content:space-between; gap:12px; align-items:start; }
    .event-heading time { display:block; }
    .event-heading h4 { margin:5px 0 0; }
    .event-kind { flex:0 0 auto; padding:5px 8px; border:1px solid color-mix(in srgb,var(--event-tone,var(--gold)) 28%,var(--line)); border-radius:999px; color:color-mix(in srgb,var(--event-tone,var(--gold)) 67%,#eee7db); background:color-mix(in srgb,var(--event-tone,var(--gold)) 7%,transparent); font-size:9px; letter-spacing:.1em; text-transform:uppercase; }

    .inventory-view-switch { display:inline-flex; gap:5px; padding:5px; border:1px solid var(--line); border-radius:13px; background:rgba(255,255,255,.02); }
    .inventory-view-switch .btn { border:0; padding:7px 9px; }
    .inventory-view-switch .btn.active { color:var(--gold-2); background:rgba(210,177,116,.1); box-shadow:inset 0 0 0 1px var(--line); }
    .inventory-grid.inventory-showcase { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .inventory-grid.inventory-list { grid-template-columns:1fr; }
    .inventory-grid.inventory-list .inventory-item { display:grid; grid-template-columns:minmax(180px,.65fr) minmax(0,1fr) auto; gap:14px; align-items:center; border-left-width:3px; padding:12px 14px; }
    .inventory-grid.inventory-list .inventory-item p { margin:0; }
    .inventory-rune { width:38px; height:38px; display:grid; place-items:center; border:1px solid color-mix(in srgb,var(--item-color) 42%,transparent); border-radius:12px; color:var(--item-color); background:color-mix(in srgb,var(--item-color) 8%,transparent); font:700 17px Georgia,serif; }
    .inventory-grid.inventory-showcase .inventory-item { min-height:190px; overflow:hidden; }
    .inventory-grid.inventory-showcase .inventory-item::after { content:attr(data-rune); position:absolute; right:7px; bottom:-18px; color:color-mix(in srgb,var(--item-color) 12%,transparent); font:700 86px Georgia,serif; pointer-events:none; }

    @media (max-width:900px){ .overview-shortcuts{grid-column:span 12}.profile-register{grid-template-columns:repeat(2,minmax(0,1fr))} }
    @media (max-width:620px){
      .character-card .portrait{min-height:205px}.character-vitals{grid-template-columns:repeat(3,minmax(0,1fr))}
      .profile-nav{top:62px}.profile-register{grid-template-columns:1fr 1fr}.event{grid-template-columns:42px minmax(0,1fr);gap:10px;padding:13px}.event-seal{width:38px;height:38px;font-size:15px}.event-heading{display:block}.event-kind{display:inline-flex;margin-top:8px}.inventory-grid.inventory-list .inventory-item{grid-template-columns:1fr}.inventory-toolbar-row{align-items:flex-start!important;flex-direction:column}.inventory-view-switch{width:100%}.inventory-view-switch .btn{flex:1}
    }

    /* v11.5 visual QA: portrait panel must not stretch with long dossiers */
    .preview-profile { align-items:start; }
    .preview-profile[class*="frame-"] .profile-image { align-self:start; position:sticky; top:82px; width:calc(100% - 18px); height:min(72vh,700px); min-height:480px; }
    .preview-profile[class*="frame-"] .profile-image .initials { height:100%; display:grid; place-items:center; }
    @media (max-width:900px){ .preview-profile[class*="frame-"] .profile-image{position:relative;top:auto;width:calc(100% - 18px);height:clamp(300px,62vh,460px);min-height:300px;} }


    /* v11.5.1: mobile owner menu and clearer editing entry point */
    .mobile-tools-toggle,.mobile-tools-backdrop { display:none; }
    body.entry-editor.role-chronicler #editToggle,
    body.entry-editor.role-editor #editToggle,
    body.entry-editor.role-owner #editToggle {
      border-color:rgba(210,177,116,.48);
      background:linear-gradient(135deg,rgba(95,36,54,.86),rgba(139,58,80,.72));
      box-shadow:0 8px 20px rgba(95,36,54,.16),inset 0 0 0 1px rgba(255,255,255,.035);
    }
    body.editing #editToggle {
      border-color:rgba(113,143,120,.62);
      background:linear-gradient(135deg,rgba(65,108,79,.92),rgba(91,137,103,.78));
      color:#eff8f1;
    }

    @media (max-width:760px) {
      .topbar { z-index:180; }
      .topbar-inner { min-height:64px; padding:8px 0; flex-direction:row; align-items:center; }
      .brand { flex:1 1 auto; min-width:0; }
      .brand h1 { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
      .brand p { display:none; }
      .sigil { width:38px; height:38px; flex:0 0 auto; }
      .mobile-tools-toggle { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; min-width:94px; }
      .mobile-tools-backdrop { position:fixed; inset:0; z-index:165; background:rgba(4,5,8,.68); backdrop-filter:blur(3px); }
      body.mobile-tools-open { overflow:hidden; }
      body.mobile-tools-open .mobile-tools-backdrop { display:block; }
      .toolbar {
        position:fixed;
        z-index:175;
        left:10px;
        right:10px;
        top:72px;
        width:auto;
        max-height:calc(100dvh - 86px);
        display:none;
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:8px;
        overflow-y:auto;
        overscroll-behavior:contain;
        padding:13px;
        border:1px solid rgba(210,177,116,.28);
        border-radius:20px;
        background:
          radial-gradient(circle at 100% 0,rgba(210,177,116,.10),transparent 34%),
          linear-gradient(160deg,rgba(28,27,34,.985),rgba(14,15,21,.985));
        box-shadow:0 28px 70px rgba(0,0,0,.58),inset 0 0 0 1px rgba(255,255,255,.025);
        scrollbar-width:thin;
      }
      body.mobile-tools-open .toolbar { display:grid; }
      .toolbar::before {
        content:'Панель архива';
        order:-20;
        grid-column:1/-1;
        padding:2px 2px 7px;
        color:var(--gold-2);
        font:600 18px/1 Georgia,serif;
        letter-spacing:.04em;
      }
      .toolbar .save-status,.toolbar .access-badge { display:flex; grid-column:1/-1; width:100%; }
      .toolbar .save-status { order:-12; padding:0 2px 2px; }
      .toolbar .access-badge { order:-11; justify-content:flex-start; }
      .toolbar .btn,.toolbar label.btn { width:100%; min-height:44px; display:flex; align-items:center; justify-content:center; text-align:center; }
      .toolbar #editToggle { order:-10; grid-column:1/-1; min-height:52px; font-weight:700; font-size:14px; }
      .toolbar #quickAddBtn { order:-9; }
      .toolbar #sessionBtn { order:-8; }
      .toolbar #searchBtn { order:-7; }
      .toolbar #diceBtn { order:-6; }
      .toolbar #comfortModeBtn { order:-5; }
      .toolbar #searchBtn::after { content:'Поиск'; }
      .toolbar #diceBtn::after { content:'Бросок'; }
      .toolbar #comfortModeBtn::after { content:'Эффекты'; }
      .toolbar #searchBtn::after,.toolbar #diceBtn::after,.toolbar #comfortModeBtn::after { margin-left:5px; }
      .toolbar #accessBtn { order:-4; }
      .toolbar #publishBtn,.toolbar #collabBtn,.toolbar #exportPatchBtn,.toolbar #ownerBundleBtn { grid-column:1/-1; }
      .toolbar #publishBtn { margin-top:4px; }
      .hero { padding-top:26px; }
      .tabs { top:74px; }
      .modal-backdrop { padding:10px; }
      .modal { margin:10px auto 20px; border-radius:18px; }
      .modal-head { padding:14px 15px; }
      .modal-body { padding:15px; }
      .modal-foot { padding:13px 15px; }
      .profile-copy { padding:20px 17px 22px; }
      .profile-title-row h3 { font-size:clamp(31px,10vw,42px); }
      .profile-kicker { border-radius:14px; }
      .profile-kicker span:last-child { line-height:1.4; }
      .profile-nav { top:58px; margin-left:-2px; margin-right:-2px; }
      .profile-columns { gap:12px; }
      .profile-panel { padding:14px; }
      .card-actions { flex-wrap:wrap; }
      .card-actions .btn { flex:1 1 auto; }
    }



    /* v11.6: stronger fantasy identity for character cards */
    .character-card { overflow:hidden; --ornament-opacity:.55; }
    .character-card .card-body { position:relative; z-index:2; }
    .character-card .portrait { position:relative; overflow:hidden; }
    .character-card .portrait img,.character-card .portrait .initials { position:relative; z-index:1; }
    .character-card .portrait::before { z-index:6; }
    .character-card .portrait::after { z-index:2; }
    .character-card .card-ambience,
    .character-card .card-ambience::before,
    .character-card .card-ambience::after { position:absolute; inset:0; pointer-events:none; content:""; }
    .character-card .card-ambience { z-index:0; opacity:.95; }
    .character-card .card-ambience::before {
      inset:auto -14% -30% auto; width:62%; height:62%; border-radius:50%;
      background:radial-gradient(circle,color-mix(in srgb,var(--frame-accent,var(--gold)) 26%,transparent),transparent 68%);
      filter:blur(8px); opacity:.62;
    }
    .character-card .card-ambience::after {
      inset:0; opacity:var(--ornament-opacity);
      background:var(--card-aura,radial-gradient(circle at 50% 25%,rgba(255,255,255,.06),transparent 46%));
      mix-blend-mode:screen;
    }
    .character-card .card-corners { position:absolute; inset:0; z-index:5; pointer-events:none; }
    .character-card .card-corners::before,
    .character-card .card-corners::after {
      content:""; position:absolute; width:78px; height:78px; opacity:.8;
      border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 56%,transparent);
      filter:drop-shadow(0 0 10px color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,transparent));
    }
    .character-card .card-corners::before { left:10px; top:10px; border-left:1px solid; border-top:1px solid; border-top-left-radius:18px; }
    .character-card .card-corners::after { right:10px; bottom:10px; border-right:1px solid; border-bottom:1px solid; border-bottom-right-radius:18px; }
    .character-card .card-ribbon {
      display:flex; align-items:center; justify-content:space-between; gap:10px;
      margin:14px 0 12px; padding:10px 12px 10px 14px; border-radius:14px;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,var(--line));
      background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 14%,transparent),rgba(255,255,255,.02));
      box-shadow:inset 0 0 18px color-mix(in srgb,var(--frame-accent,var(--gold)) 4%,transparent);
    }
    .character-card .card-ribbon-copy { min-width:0; }
    .character-card .card-ribbon-copy strong,
    .character-card .card-ribbon-copy small { display:block; }
    .character-card .card-ribbon-copy strong {
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 74%,#fff2df);
      font-size:11px; letter-spacing:.16em; text-transform:uppercase;
    }
    .character-card .card-ribbon-copy small { margin-top:4px; color:var(--muted); font-size:12px; line-height:1.35; }
    .character-card .card-ribbon-sigil {
      flex:0 0 auto; width:42px; height:42px; display:grid; place-items:center;
      border-radius:14px; border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 34%,transparent);
      background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,transparent),rgba(11,12,16,.82));
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 86%,#fff); font:700 18px/1 Georgia,serif;
      box-shadow:0 0 22px color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,transparent), inset 0 0 18px rgba(255,255,255,.03);
    }
    .character-card .card-motto {
      margin-top:11px; padding:10px 12px; border-radius:13px;
      border:1px dashed color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,var(--line));
      background:linear-gradient(180deg,rgba(255,255,255,.028),rgba(255,255,255,.014));
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 48%,#d8c9bb);
      font:italic 13px/1.45 Georgia,serif;
    }
    .character-card .character-vitals { margin-top:16px; }
    .character-card .character-vital {
      position:relative; overflow:hidden;
      background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 6%,transparent),rgba(255,255,255,.018));
    }
    .character-card .character-vital::before {
      content:""; position:absolute; inset:0 auto auto 0; width:100%; height:2px;
      background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 78%,transparent),transparent 85%);
      opacity:.85;
    }
    .character-card .tags { min-height:28px; }
    .character-card .tag {
      border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,var(--line));
      background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 7%,transparent),rgba(255,255,255,.018));
    }
    .character-card .card-actions { margin-top:14px; }
    .character-card .card-actions .btn { border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 22%,var(--line)); }
    .character-card .card-actions .btn.primary {
      background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 26%,transparent),color-mix(in srgb,var(--frame-accent,var(--gold)) 10%,transparent));
      color:#fff4dd;
      box-shadow:0 10px 24px color-mix(in srgb,var(--frame-accent,var(--gold)) 12%,transparent);
    }
    .character-card:hover .card-ribbon-sigil { transform:translateY(-1px) rotate(4deg); }

    .frame-classic.character-card { --card-aura:radial-gradient(circle at 16% 12%,rgba(255,236,192,.08),transparent 28%), linear-gradient(135deg,transparent 0 72%,rgba(220,191,127,.08) 100%); }
    .frame-classic.character-card .card-corners::before,
    .frame-classic.character-card .card-corners::after { border-style:solid; }

    .frame-royal.character-card { --card-aura:radial-gradient(circle at 50% -6%,rgba(232,189,82,.18),transparent 34%), repeating-linear-gradient(135deg,rgba(255,215,120,.08) 0 4px,transparent 4px 13px), linear-gradient(180deg,transparent,rgba(143,24,53,.16)); }
    .frame-royal.character-card .card-corners::before,
    .frame-royal.character-card .card-corners::after { border-style:solid; }
    .frame-royal.character-card .card-ribbon { background:linear-gradient(90deg,rgba(232,189,82,.16),rgba(143,24,53,.10)); }
    .frame-royal.character-card:hover .card-ambience::before { animation:royalGlint 2.8s ease-in-out infinite; }
    @keyframes royalGlint { 0%,100%{transform:translateX(0);opacity:.45} 50%{transform:translateX(-8px) translateY(-4px);opacity:.92} }

    .frame-infernal.character-card { --card-aura:radial-gradient(circle at 74% 12%,rgba(255,124,65,.18),transparent 26%), radial-gradient(circle at 18% 90%,rgba(224,82,88,.16),transparent 28%), linear-gradient(180deg,transparent,rgba(83,17,18,.2)); }
    .frame-infernal.character-card .card-corners::before,
    .frame-infernal.character-card .card-corners::after { border-style:dashed; }
    .frame-infernal.character-card .card-ribbon { background:linear-gradient(90deg,rgba(224,82,88,.17),rgba(240,138,60,.08)); }
    .frame-infernal.character-card .card-ambience { animation:infernalEmbers 5.5s ease-in-out infinite; }
    @keyframes infernalEmbers { 0%,100%{transform:translateY(0);filter:saturate(1)} 50%{transform:translateY(-4px);filter:saturate(1.15)} }

    .frame-arcane.character-card { --card-aura:radial-gradient(circle at 50% 8%,rgba(164,134,242,.16),transparent 34%), repeating-radial-gradient(circle at 70% 15%,rgba(98,181,220,.10) 0 2px,transparent 2px 14px), linear-gradient(180deg,transparent,rgba(20,24,61,.22)); }
    .frame-arcane.character-card .card-corners::before,
    .frame-arcane.character-card .card-corners::after { border-style:solid; border-radius:50%; width:84px; height:84px; }
    .frame-arcane.character-card .card-ribbon { background:linear-gradient(90deg,rgba(164,134,242,.18),rgba(98,181,220,.10)); }
    .frame-arcane.character-card .card-ribbon-sigil { animation:arcaneSigil 7s linear infinite; }
    @keyframes arcaneSigil { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }

    .frame-verdant.character-card { --card-aura:radial-gradient(circle at 18% 18%,rgba(121,185,130,.16),transparent 32%), radial-gradient(circle at 84% 100%,rgba(177,214,119,.12),transparent 25%), linear-gradient(180deg,transparent,rgba(17,44,26,.22)); }
    .frame-verdant.character-card .card-corners::before,
    .frame-verdant.character-card .card-corners::after { border-style:solid; border-radius:30px 10px 30px 10px; }
    .frame-verdant.character-card .card-ribbon { background:linear-gradient(90deg,rgba(121,185,130,.16),rgba(177,214,119,.07)); }
    .frame-verdant.character-card:hover .card-ambience::after { animation:verdantBreathe 4.8s ease-in-out infinite; }
    @keyframes verdantBreathe { 0%,100%{opacity:.48} 50%{opacity:.8} }

    .frame-frost.character-card { --card-aura:radial-gradient(circle at 80% 15%,rgba(143,212,237,.18),transparent 28%), linear-gradient(145deg,rgba(143,212,237,.06),transparent 45%), linear-gradient(180deg,transparent,rgba(22,46,65,.18)); }
    .frame-frost.character-card .card-corners::before,
    .frame-frost.character-card .card-corners::after { border-style:solid; clip-path:polygon(8% 0,92% 0,100% 14%,100% 86%,92% 100%,8% 100%,0 86%,0 14%); }
    .frame-frost.character-card .card-ribbon { background:linear-gradient(90deg,rgba(143,212,237,.16),rgba(195,238,255,.08)); }
    .frame-frost.character-card .card-ambience::before { animation:frostSpark 5s ease-in-out infinite; }
    @keyframes frostSpark { 0%,100%{opacity:.38;transform:scale(1)} 50%{opacity:.82;transform:scale(1.06)} }

    .frame-cursed.character-card { --card-aura:radial-gradient(circle at 15% 18%,rgba(143,114,203,.16),transparent 30%), radial-gradient(circle at 86% 92%,rgba(211,67,84,.15),transparent 30%), linear-gradient(180deg,transparent,rgba(48,7,17,.22)); }
    .frame-cursed.character-card .card-corners::before,
    .frame-cursed.character-card .card-corners::after { border-style:dotted; transform:rotate(-2deg); }
    .frame-cursed.character-card .card-ribbon { background:linear-gradient(90deg,rgba(211,67,84,.17),rgba(143,114,203,.10)); }
    .frame-cursed.character-card .card-ribbon-sigil { animation:cursedBeat 3.6s ease-in-out infinite; }
    @keyframes cursedBeat { 0%,100%{transform:scale(1);box-shadow:0 0 22px rgba(211,67,84,.16)} 50%{transform:scale(1.07);box-shadow:0 0 30px rgba(211,67,84,.28)} }

    body.calm-mode .frame-royal.character-card:hover .card-ambience::before,
    body.calm-mode .frame-infernal.character-card .card-ambience,
    body.calm-mode .frame-arcane.character-card .card-ribbon-sigil,
    body.calm-mode .frame-verdant.character-card:hover .card-ambience::after,
    body.calm-mode .frame-frost.character-card .card-ambience::before,
    body.calm-mode .frame-cursed.character-card .card-ribbon-sigil,
    body.effects-off .frame-royal.character-card:hover .card-ambience::before,
    body.effects-off .frame-infernal.character-card .card-ambience,
    body.effects-off .frame-arcane.character-card .card-ribbon-sigil,
    body.effects-off .frame-verdant.character-card:hover .card-ambience::after,
    body.effects-off .frame-frost.character-card .card-ambience::before,
    body.effects-off .frame-cursed.character-card .card-ribbon-sigil { animation:none !important; }
    body.calm-mode .character-card .card-shimmer, body.effects-off .character-card .card-shimmer { display:none; }

    @media (max-width:620px){
      .character-card .card-ribbon { padding:9px 10px 9px 12px; }
      .character-card .card-ribbon-copy strong { font-size:10px; }
      .character-card .card-ribbon-copy small { font-size:11px; }
      .character-card .card-ribbon-sigil { width:38px; height:38px; }
    }



    /* v11.6.1: full responsive layout with auto/manual phone mode */
    .layout-toggle[data-mode="auto"]::after { content:' Авто'; }
    .layout-toggle[data-mode="mobile"]::after { content:' Телефон'; }
    .layout-toggle[data-mode="desktop"]::after { content:' Комп'; }
    body.mobile-layout { --mobile-safe-bottom:max(10px, env(safe-area-inset-bottom)); }
    body.desktop-layout .mobile-tools-toggle { display:none !important; }
    body.mobile-layout main { padding-bottom:92px; }
    body.mobile-layout .topbar-inner { min-height:64px; padding:8px 0; flex-direction:row; align-items:center; gap:10px; }
    body.mobile-layout .brand-wrap { min-width:0; }
    body.mobile-layout #brandTitle { font-size:16px; }
    body.mobile-layout .brand-mark { width:40px; height:40px; }
    body.mobile-layout .mobile-tools-toggle { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; min-width:94px; }
    body.mobile-layout .mobile-tools-backdrop { position:fixed; inset:0; z-index:165; background:rgba(4,5,8,.68); backdrop-filter:blur(3px); }
    body.mobile-layout.mobile-tools-open { overflow:hidden; }
    body.mobile-layout.mobile-tools-open .mobile-tools-backdrop { display:block; }
    body.mobile-layout .toolbar {
      display:none; position:fixed; z-index:170; left:10px; right:10px; top:74px; max-height:calc(100vh - 92px);
      overflow:auto; padding:14px; border:1px solid rgba(210,177,116,.24); border-radius:20px;
      background:linear-gradient(180deg,rgba(20,21,27,.98),rgba(14,15,21,.99));
      box-shadow:0 30px 90px rgba(0,0,0,.5); grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px;
    }
    body.mobile-layout.mobile-tools-open .toolbar { display:grid; }
    body.mobile-layout .toolbar::before {
      content:'Панель архива'; grid-column:1/-1; margin-bottom:2px; color:var(--gold-2);
      font:600 14px/1.2 Georgia,serif; letter-spacing:.05em;
    }
    body.mobile-layout .toolbar .save-status,
    body.mobile-layout .toolbar .access-badge { display:flex; grid-column:1/-1; width:100%; }
    body.mobile-layout .toolbar .save-status { order:-20; padding:0 2px 2px; }
    body.mobile-layout .toolbar .access-badge { order:-19; justify-content:flex-start; }
    body.mobile-layout .toolbar .btn, body.mobile-layout .toolbar label.btn {
      width:100%; min-height:44px; display:flex; align-items:center; justify-content:center; text-align:center;
    }
    body.mobile-layout .toolbar #editToggle { order:-18; grid-column:1/-1; min-height:52px; font-weight:700; font-size:14px; }
    body.mobile-layout .toolbar #searchBtn { order:-10; }
    body.mobile-layout .toolbar #diceBtn { order:-9; }
    body.mobile-layout .toolbar #comfortModeBtn { order:-8; }
    body.mobile-layout .toolbar #layoutModeBtn { order:-7; }
    body.mobile-layout .toolbar #quickAddBtn { order:-6; }
    body.mobile-layout .toolbar #sessionBtn { order:-5; }
    body.mobile-layout .toolbar #accessBtn { order:-4; }
    body.mobile-layout .toolbar #publishBtn,
    body.mobile-layout .toolbar #collabBtn,
    body.mobile-layout .toolbar #exportPatchBtn,
    body.mobile-layout .toolbar #ownerBundleBtn,
    body.mobile-layout .toolbar #exportBtn,
    body.mobile-layout .toolbar label[for="importInput"] { grid-column:1/-1; }
    body.mobile-layout .hero { padding-top:22px; }
    body.mobile-layout .hero-card { padding:20px; border-radius:22px; }
    body.mobile-layout .hero-card h2 { font-size:32px; }
    body.mobile-layout .hero-meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
    body.mobile-layout .hero-meta .pill { justify-content:center; text-align:center; }
    body.mobile-layout .tabs {
      position:fixed; left:10px; right:10px; bottom:calc(var(--mobile-safe-bottom) + 4px); top:auto; width:auto; margin:0;
      padding:8px; border-radius:18px; overflow-x:auto; scrollbar-width:none; z-index:155;
      box-shadow:0 18px 45px rgba(0,0,0,.35); background:rgba(16,17,23,.94); backdrop-filter:blur(18px);
    }
    body.mobile-layout .tabs::-webkit-scrollbar { display:none; }
    body.mobile-layout .tab { min-height:42px; padding:10px 12px; white-space:nowrap; }
    body.mobile-layout .tab-panel .shell { padding-top:4px; }
    body.mobile-layout .section-head,
    body.mobile-layout .chronicle-toolbar,
    body.mobile-layout .relation-toolbar,
    body.mobile-layout .board-toolbar,
    body.mobile-layout .map-toolbar,
    body.mobile-layout .collab-banner,
    body.mobile-layout .collab-banner-actions,
    body.mobile-layout .patch-meta { flex-direction:column; align-items:stretch; }
    body.mobile-layout .section-head > .btn,
    body.mobile-layout .quick-actions .btn,
    body.mobile-layout .card-actions .btn,
    body.mobile-layout .map-toolbar-actions .btn,
    body.mobile-layout .board-toolbar .btn,
    body.mobile-layout .chronicle-toolbar .btn,
    body.mobile-layout .collab-banner-actions .btn { width:100%; }
    body.mobile-layout .controls,
    body.mobile-layout .place-controls,
    body.mobile-layout .thread-controls,
    body.mobile-layout .form-grid,
    body.mobile-layout .publication-controls,
    body.mobile-layout .publish-grid,
    body.mobile-layout .publication-profile-list,
    body.mobile-layout .quick-create-grid,
    body.mobile-layout .stash-toolbar,
    body.mobile-layout .stash-grid,
    body.mobile-layout .role-matrix,
    body.mobile-layout .collab-grid,
    body.mobile-layout .patch-diff,
    body.mobile-layout .session-summary,
    body.mobile-layout .session-checks,
    body.mobile-layout .overview-grid,
    body.mobile-layout .grid,
    body.mobile-layout .place-grid,
    body.mobile-layout .inventory-grid.inventory-showcase,
    body.mobile-layout .profile-register,
    body.mobile-layout .preview-profile[class*="frame-"] .profile-columns { grid-template-columns:1fr !important; }
    body.mobile-layout .overview-card.stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
    body.mobile-layout .publish-preview { grid-template-columns:repeat(2,minmax(0,1fr)); }
    body.mobile-layout .character-vitals { grid-template-columns:repeat(3,minmax(0,1fr)); }
    body.mobile-layout .preview-profile { grid-template-columns:1fr !important; }
    body.mobile-layout .profile-image { min-height:260px; position:relative; }
    body.mobile-layout .profile-copy { padding:20px 16px 18px; }
    body.mobile-layout .profile-nav { top:0; margin:0 0 14px; }
    body.mobile-layout .modal-backdrop { padding:0; align-items:flex-end; }
    body.mobile-layout .modal { width:100%; max-width:none; max-height:92vh; border-radius:20px 20px 0 0; }
    body.mobile-layout .modal-head { border-radius:20px 20px 0 0; }
    body.mobile-layout #profileModal .modal,
    body.mobile-layout #placeViewModal .modal { width:100%; }
    body.mobile-layout .place-view { grid-template-columns:1fr; }
    body.mobile-layout .place-view-image { min-height:240px; }
    body.mobile-layout .board-wrap,
    body.mobile-layout .map-frame { overflow:auto; }
    body.mobile-layout .world-map { width:900px; height:560px; }
    body.mobile-layout .map-drag-readout { min-width:0; }
    body.mobile-layout .inventory-toolbar-row { flex-direction:column; align-items:stretch !important; }
    body.mobile-layout .inventory-view-switch { width:100%; }
    body.mobile-layout .inventory-view-switch .btn { flex:1; }
    body.mobile-layout .shortcut-character { grid-template-columns:44px 1fr auto; }
    body.mobile-layout .event { grid-template-columns:42px minmax(0,1fr); gap:10px; padding:13px; }
    body.mobile-layout .event-seal { width:38px; height:38px; font-size:15px; }
    body.mobile-layout .event-heading { display:block; }
    body.mobile-layout .event-kind { display:inline-flex; margin-top:8px; }
    body.mobile-layout .tab[data-tab="settings"] { display:none; }
    body.mobile-layout .toolbar .tab-preview-note { display:none; }
    @media (max-width:440px){
      body.mobile-layout .hero-meta { grid-template-columns:1fr; }
      body.mobile-layout .overview-card.stats { grid-template-columns:1fr 1fr; }
      body.mobile-layout .character-vitals { grid-template-columns:1fr 1fr 1fr; }
      body.mobile-layout .toolbar { grid-template-columns:1fr; }
    }



    /* v11.7: truly fantasy character cards */
    .character-card{position:relative;isolation:isolate}
    .character-card .theme-ornaments{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}
    .character-card .theme-ornaments span{position:absolute;display:block;pointer-events:none}
    .character-card .card-frame-top,.character-card .card-frame-bottom{left:16px;right:16px;height:34px;opacity:.95}
    .character-card .card-frame-top{top:8px}
    .character-card .card-frame-bottom{bottom:8px;transform:scaleY(-1)}
    .character-card .frame-side-left,.character-card .frame-side-right{top:56px;bottom:56px;width:24px;opacity:.92}
    .character-card .frame-side-left{left:8px}
    .character-card .frame-side-right{right:8px;transform:scaleX(-1)}
    .character-card .portrait-badge{right:16px;top:46px;width:58px;height:58px;border-radius:18px;background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,transparent),rgba(9,10,14,.88));border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 45%,transparent);box-shadow:0 8px 18px rgba(0,0,0,.28),0 0 18px color-mix(in srgb,var(--frame-accent,var(--gold)) 14%,transparent)}
    .character-card .portrait-badge::before{content:attr(data-symbol);position:absolute;inset:0;display:grid;place-items:center;color:color-mix(in srgb,var(--frame-accent,var(--gold)) 85%,#fff);font:700 24px/1 Georgia,serif}
    .character-card .portrait-badge::after{content:'';position:absolute;inset:8px;border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent);border-radius:12px}
    .character-card .frame-banner{left:26px;top:18px;padding:7px 14px 7px 12px;border-radius:0 0 14px 14px;color:#fff4de;font:700 10px/1.1 Georgia,serif;letter-spacing:.16em;text-transform:uppercase;text-shadow:0 1px 10px rgba(0,0,0,.45);border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 38%,transparent);box-shadow:0 12px 24px rgba(0,0,0,.18)}
    .character-card .frame-garland{left:50%;top:10px;width:118px;height:30px;transform:translateX(-50%);opacity:.95}
    .character-card .portrait-runes{left:50%;top:16px;width:132px;height:132px;transform:translateX(-50%);border-radius:50%;border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,transparent);box-shadow:0 0 0 8px rgba(255,255,255,.015),0 0 24px color-mix(in srgb,var(--frame-accent,var(--gold)) 10%,transparent)}
    .character-card .portrait-runes::before{content:'';position:absolute;inset:10px;border-radius:50%;border:1px dashed color-mix(in srgb,var(--frame-accent,var(--gold)) 36%,transparent)}
    .character-card .portrait-runes::after{content:'✦ ✧ ✦';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);white-space:nowrap;color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#fff);font:600 12px/1 Georgia,serif;letter-spacing:.35em;text-shadow:0 0 12px color-mix(in srgb,var(--frame-accent,var(--gold)) 22%,transparent)}
    .character-card .frame-vine-left,.character-card .frame-vine-right{width:88px;height:170px;top:24px;opacity:.94;background-repeat:no-repeat;background-size:contain;background-position:center}
    .character-card .frame-vine-left{left:-10px}
    .character-card .frame-vine-right{right:-10px;transform:scaleX(-1)}
    .character-card .frame-vine-bottom{left:50%;bottom:6px;width:160px;height:48px;transform:translateX(-50%);opacity:.9;background-repeat:no-repeat;background-size:contain;background-position:center}
    .character-card .frame-spikes-top,.character-card .frame-spikes-bottom{left:10px;right:10px;height:32px;opacity:.95;background:linear-gradient(135deg,transparent 0 6%,color-mix(in srgb,var(--frame-accent,var(--gold)) 28%,transparent) 6% 8%,transparent 8% 14%,color-mix(in srgb,var(--frame-accent,var(--gold)) 22%,transparent) 14% 16%,transparent 16% 24%,color-mix(in srgb,var(--frame-accent,var(--gold)) 26%,transparent) 24% 27%,transparent 27% 35%,color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent) 35% 38%,transparent 38% 100%)}
    .character-card .frame-spikes-top{top:0;clip-path:polygon(0 100%,6% 34%,12% 100%,21% 18%,28% 100%,38% 26%,46% 100%,55% 14%,63% 100%,72% 22%,79% 100%,88% 30%,94% 100%,100% 42%,100% 100%)}
    .character-card .frame-spikes-bottom{bottom:0;transform:scaleY(-1);clip-path:polygon(0 100%,6% 34%,12% 100%,21% 18%,28% 100%,38% 26%,46% 100%,55% 14%,63% 100%,72% 22%,79% 100%,88% 30%,94% 100%,100% 42%,100% 100%)}
    .character-card .frame-crystals-left,.character-card .frame-crystals-right{top:18px;bottom:18px;width:70px;opacity:.95;background:linear-gradient(180deg,transparent,rgba(255,255,255,.03));clip-path:polygon(42% 0,72% 10%,58% 28%,84% 42%,54% 56%,80% 74%,48% 88%,62% 100%,28% 92%,38% 72%,14% 58%,34% 42%,8% 26%,28% 14%)}
    .character-card .frame-crystals-left{left:-8px}
    .character-card .frame-crystals-right{right:-8px;transform:scaleX(-1)}
    .character-card .frame-crack{left:50%;top:10px;bottom:10px;width:2px;transform:translateX(-50%) rotate(-8deg);background:linear-gradient(180deg,transparent,rgba(255,255,255,.06) 18%,rgba(211,67,84,.44) 34%,rgba(143,114,203,.35) 56%,transparent 84%);filter:drop-shadow(0 0 8px rgba(211,67,84,.2))}
    .character-card .frame-crack::before,.character-card .frame-crack::after{content:'';position:absolute;width:54px;height:2px;background:linear-gradient(90deg,transparent,rgba(211,67,84,.44),transparent)}
    .character-card .frame-crack::before{top:70px;left:-22px;transform:rotate(28deg)}
    .character-card .frame-crack::after{top:136px;left:-14px;transform:rotate(-32deg)}
    .character-card .frame-tear-left,.character-card .frame-tear-right{top:20px;bottom:20px;width:26px;opacity:.9;background:linear-gradient(180deg,transparent,rgba(211,67,84,.14),transparent);clip-path:polygon(44% 0,70% 12%,48% 26%,76% 40%,40% 58%,66% 72%,30% 100%,0 88%,20% 64%,0 40%,26% 18%)}
    .character-card .frame-tear-left{left:0}
    .character-card .frame-tear-right{right:0;transform:scaleX(-1)}
    .character-card .frame-column-left,.character-card .frame-column-right{top:16px;bottom:16px;width:36px;opacity:.92;border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,transparent),rgba(255,255,255,.02) 18%,rgba(255,255,255,.01) 82%,color-mix(in srgb,var(--frame-accent,var(--gold)) 20%,transparent));box-shadow:inset 0 0 0 5px rgba(255,255,255,.02), inset 0 0 0 10px color-mix(in srgb,var(--frame-accent,var(--gold)) 5%,transparent)}
    .character-card .frame-column-left{left:0;border-radius:18px 0 0 18px}
    .character-card .frame-column-right{right:0;border-radius:0 18px 18px 0}
    .character-card .frame-column-left::before,.character-card .frame-column-right::before,.character-card .frame-column-left::after,.character-card .frame-column-right::after{content:'';position:absolute;left:3px;right:3px;height:9px;border-radius:8px;background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 48%,transparent),color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent))}
    .character-card .frame-column-left::before,.character-card .frame-column-right::before{top:8px}
    .character-card .frame-column-left::after,.character-card .frame-column-right::after{bottom:8px}

    .frame-royal.character-card .frame-banner{background:linear-gradient(180deg,rgba(129,16,45,.92),rgba(86,10,32,.92))}
    .frame-royal.character-card .card-frame-top,.frame-royal.character-card .card-frame-bottom{background:linear-gradient(90deg,transparent 0 12%,rgba(232,189,82,.18) 12% 16%,rgba(232,189,82,.42) 16% 50%,rgba(232,189,82,.18) 50% 54%,transparent 54% 100%);clip-path:polygon(0 100%,8% 20%,18% 42%,26% 0,38% 42%,50% 4%,62% 42%,74% 0,82% 42%,92% 20%,100% 100%,88% 78%,76% 100%,62% 66%,50% 100%,38% 66%,24% 100%,12% 78%)}
    .frame-royal.character-card .frame-garland{background:linear-gradient(180deg,rgba(232,189,82,.46),rgba(232,189,82,.08));clip-path:polygon(0 12%,16% 0,34% 16%,50% 0,66% 16%,84% 0,100% 12%,92% 56%,72% 38%,50% 76%,28% 38%,8% 56%)}

    .frame-verdant.character-card .frame-vine-left,.frame-verdant.character-card .frame-vine-right,.frame-verdant.character-card .frame-vine-bottom{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 220'%3E%3Cpath d='M18 216c20-16 28-32 28-54 0-24-11-40-25-54 34 6 54-14 60-40 2-9 3-18 2-29 18 18 23 40 21 61-2 26-14 46-36 57 18 0 33 12 41 28 8 18 8 36 0 55-8-11-17-20-30-25-14-6-29-7-43 1-8 4-13 10-18 17z' fill='none' stroke='%2379b982' stroke-width='5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M48 150c-10-6-20-8-30-7 4-10 12-18 24-22M69 96c20 1 34-8 43-24M70 172c14 2 24 9 33 20' fill='none' stroke='%23b1d677' stroke-width='4' stroke-linecap='round'/%3E%3Cellipse cx='39' cy='128' rx='10' ry='16' fill='%2379b982' transform='rotate(-42 39 128)'/%3E%3Cellipse cx='83' cy='72' rx='10' ry='16' fill='%23b1d677' transform='rotate(18 83 72)'/%3E%3Cellipse cx='91' cy='182' rx='10' ry='16' fill='%2394cd8c' transform='rotate(-16 91 182)'/%3E%3C/svg%3E")}
    .frame-verdant.character-card .frame-vine-bottom{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 60'%3E%3Cpath d='M8 38c23-2 36-12 48-28 10 22 29 30 54 28 17-2 28-11 38-24 9 15 20 25 39 27 12 1 22-2 33-7-7 12-17 19-29 23-20 5-39 1-54-10-10 8-21 13-34 14-24 2-44-6-59-23-12 9-24 14-36 14z' fill='none' stroke='%2379b982' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cellipse cx='62' cy='18' rx='11' ry='7' fill='%23b1d677' transform='rotate(-28 62 18)'/%3E%3Cellipse cx='106' cy='48' rx='12' ry='7' fill='%2379b982' transform='rotate(8 106 48)'/%3E%3Cellipse cx='166' cy='24' rx='12' ry='7' fill='%2394cd8c' transform='rotate(-12 166 24)'/%3E%3C/svg%3E")}
    .frame-verdant.character-card:hover .frame-vine-left,.frame-verdant.character-card:hover .frame-vine-right{animation:vineSway 4.8s ease-in-out infinite}
    @keyframes vineSway{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px) rotate(-1deg)}}

    .frame-arcane.character-card .portrait-runes{animation:arcaneHalo 16s linear infinite}
    .frame-arcane.character-card .card-frame-top,.frame-arcane.character-card .card-frame-bottom{background:radial-gradient(circle at 50% 50%,rgba(164,134,242,.5),transparent 55%),linear-gradient(90deg,transparent,rgba(98,181,220,.24),transparent)}
    @keyframes arcaneHalo{from{transform:translateX(-50%) rotate(0deg)}to{transform:translateX(-50%) rotate(360deg)}}

    .frame-infernal.character-card .frame-banner{background:linear-gradient(180deg,rgba(105,19,18,.92),rgba(61,12,11,.92));border-radius:0 0 8px 8px}
    .frame-infernal.character-card .portrait-badge{border-radius:18px 18px 10px 10px;clip-path:polygon(16% 0,84% 0,100% 24%,92% 100%,8% 100%,0 24%)}

    .frame-frost.character-card .card-frame-top,.frame-frost.character-card .card-frame-bottom{background:linear-gradient(90deg,transparent 0 10%,rgba(195,238,255,.3) 10% 16%,transparent 16% 26%,rgba(143,212,237,.22) 26% 34%,transparent 34% 100%)}
    .frame-frost.character-card .frame-crystals-left,.frame-frost.character-card .frame-crystals-right{background:linear-gradient(180deg,rgba(195,238,255,.28),rgba(143,212,237,.12),transparent)}

    .frame-cursed.character-card .frame-banner{background:linear-gradient(180deg,rgba(72,18,36,.92),rgba(40,10,21,.92));clip-path:polygon(0 0,100% 0,92% 100%,8% 100%)}
    .frame-cursed.character-card .card-frame-top,.frame-cursed.character-card .card-frame-bottom{background:linear-gradient(90deg,transparent,rgba(211,67,84,.18),rgba(143,114,203,.16),transparent)}

    body.calm-mode .frame-verdant.character-card:hover .frame-vine-left,
    body.calm-mode .frame-verdant.character-card:hover .frame-vine-right,
    body.calm-mode .frame-arcane.character-card .portrait-runes,
    body.effects-off .frame-verdant.character-card:hover .frame-vine-left,
    body.effects-off .frame-verdant.character-card:hover .frame-vine-right,
    body.effects-off .frame-arcane.character-card .portrait-runes{animation:none!important}

    body.mobile-layout .character-card .theme-ornaments{opacity:.95}
    body.mobile-layout .character-card .frame-side-left,body.mobile-layout .character-card .frame-side-right{display:none}
    body.mobile-layout .character-card .frame-column-left,body.mobile-layout .character-card .frame-column-right{width:26px}
    body.mobile-layout .character-card .frame-vine-left,body.mobile-layout .character-card .frame-vine-right{width:68px;height:126px;top:32px}
    body.mobile-layout .character-card .portrait-runes{width:108px;height:108px;top:22px}
    body.mobile-layout .character-card .portrait-badge{top:58px;width:50px;height:50px}
    body.mobile-layout .character-card .frame-banner{top:16px;padding:6px 11px 6px 10px;font-size:9px}
    body.mobile-layout .character-card .card-frame-top,.body.mobile-layout .character-card .card-frame-bottom{height:26px}



    /* v11.7.1: complete mobile usability pass */
    .mobile-section-toggle,.mobile-settings-action{display:none}
    body.mobile-layout{--mobile-header-height:65px;--mobile-nav-height:66px}
    body.mobile-layout[data-active-tab]:not([data-active-tab="overview"]) .hero{display:none}
    body.mobile-layout[data-active-tab]:not([data-active-tab="overview"]) .tab-panel:not([hidden]){padding-top:16px}
    body.mobile-layout .hero-meta{grid-template-columns:repeat(2,minmax(0,1fr))!important}
    body.mobile-layout .hero-meta .pill{min-width:0;padding:7px 6px;font-size:11px}
    body.mobile-layout .mobile-section-toggle,body.mobile-layout .mobile-settings-action{display:flex}
    body.mobile-layout .mobile-settings-action{grid-column:1/-1}

    body.mobile-layout .tabs{gap:4px;padding:6px 7px;scroll-padding-inline:45%}
    body.mobile-layout .tab{display:grid;grid-template-rows:auto auto;place-items:center;gap:2px;min-width:76px;min-height:50px;padding:6px 9px;font-size:10px;line-height:1.05}
    body.mobile-layout .tab::before{font-size:17px;line-height:1;color:var(--gold-2)}
    body.mobile-layout .tab[data-tab="overview"]::before{content:'⌂'}
    body.mobile-layout .tab[data-tab="characters"]::before{content:'♙'}
    body.mobile-layout .tab[data-tab="places"]::before{content:'⌖'}
    body.mobile-layout .tab[data-tab="stash"]::before{content:'⚿'}
    body.mobile-layout .tab[data-tab="relationships"]::before{content:'∞'}
    body.mobile-layout .tab[data-tab="threads"]::before{content:'✧'}
    body.mobile-layout .tab[data-tab="board"]::before{content:'◆'}
    body.mobile-layout .tab[data-tab="timeline"]::before{content:'◷'}
    body.mobile-layout .tab.active{background:linear-gradient(180deg,rgba(210,177,116,.14),rgba(210,177,116,.07))}

    body.mobile-layout .section-head{margin-bottom:16px}
    body.mobile-layout .section-head h3{font-size:30px}
    body.mobile-layout .section-head p{font-size:14px;line-height:1.45}
    body.mobile-layout section{padding-bottom:calc(var(--mobile-nav-height) + 34px)}
    body.mobile-layout .field,body.mobile-layout .select,body.mobile-layout textarea.field{font-size:16px;min-height:46px}
    body.mobile-layout textarea.field{min-height:128px}
    body.mobile-layout .controls,body.mobile-layout .place-controls,body.mobile-layout .thread-controls{gap:8px;margin-bottom:14px}

    /* Mobile character cards: ornamental, but short enough to browse */
    body.mobile-layout .character-card{border-radius:22px;margin-bottom:2px}
    body.mobile-layout .character-card .portrait{height:238px;min-height:238px;aspect-ratio:auto;margin:6px 6px 0}
    body.mobile-layout .character-card .card-body{padding:14px 14px 15px}
    body.mobile-layout .character-card .card-top{align-items:center}
    body.mobile-layout .character-card .card-top h4{font-size:22px}
    body.mobile-layout .character-card .card-top .subtitle{font-size:11px}
    body.mobile-layout .character-card .status{max-width:108px;overflow:hidden;text-overflow:ellipsis}
    body.mobile-layout .character-card .card-ribbon{margin:10px 0;padding:8px 10px}
    body.mobile-layout .character-card .card-ribbon-copy strong{font-size:9px}
    body.mobile-layout .character-card .card-ribbon-copy small{display:none}
    body.mobile-layout .character-card .card-ribbon-sigil{width:34px;height:34px;font-size:15px}
    body.mobile-layout .character-card .summary{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:0;margin:10px 0;font-size:14px;line-height:1.48}
    body.mobile-layout .character-card .quote{display:none}
    body.mobile-layout .character-card .character-vitals{margin:10px 0 8px;gap:5px}
    body.mobile-layout .character-card .character-vital{padding:7px 4px}
    body.mobile-layout .character-card .character-vital strong{font-size:15px}
    body.mobile-layout .character-card .character-vital span{font-size:8px}
    body.mobile-layout .character-card .tags{min-height:0;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
    body.mobile-layout .character-card .tags::-webkit-scrollbar{display:none}
    body.mobile-layout .character-card .tag{flex:0 0 auto}
    body.mobile-layout .character-card .card-motto{display:none}
    body.mobile-layout .character-card .card-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}
    body.mobile-layout .character-card .card-actions .btn{width:100%;min-height:42px}
    body.mobile-layout .character-card .card-actions .edit-only{grid-column:1/-1}
    body.mobile-layout .character-card .card-identity{left:14px;right:14px;bottom:12px}
    body.mobile-layout .character-card .card-identity-copy strong{font-size:19px}
    body.mobile-layout .card-favorite{left:12px;top:12px;width:42px;height:42px}

    /* Full-screen mobile modals, profiles and forms */
    body.modal-open{overflow:hidden}
    body.mobile-layout.modal-open .tabs{opacity:0;pointer-events:none;transform:translateY(120%)}
    body.mobile-layout .modal-backdrop{z-index:420;padding:0;place-items:stretch;background:rgba(5,6,10,.94)}
    body.mobile-layout .modal-backdrop.open{display:block}
    body.mobile-layout .modal{width:100%!important;max-width:none!important;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0;overflow:auto;overscroll-behavior:contain}
    body.mobile-layout .modal-head{top:0;min-height:64px;padding:12px 14px;border-radius:0;background:rgba(18,19,25,.98)}
    body.mobile-layout .modal-head h3{font-size:22px;line-height:1.1}
    body.mobile-layout .modal-head .btn{min-height:40px}
    body.mobile-layout .modal-body{padding:16px 14px 22px}
    body.mobile-layout .modal-foot{bottom:0;display:grid;grid-template-columns:1fr 1fr;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(18,19,25,.98)}
    body.mobile-layout .modal-foot .btn{width:100%;min-height:46px}
    body.mobile-layout .preview-profile{display:block;border:0;border-radius:0!important;box-shadow:none}
    body.mobile-layout .preview-profile[class*="frame-"] .profile-image{position:relative;top:auto;width:calc(100% - 16px);height:250px;min-height:250px;margin:8px}
    body.mobile-layout .profile-image-overlay{left:10px;right:10px;bottom:10px;padding:10px}
    body.mobile-layout .profile-copy{padding:15px 14px 24px}
    body.mobile-layout .profile-kicker{margin-bottom:11px;padding:8px 10px}
    body.mobile-layout .profile-kicker span:last-child{display:none}
    body.mobile-layout .profile-nav{top:64px;z-index:8;margin:0 -2px 14px;padding:6px;background:rgba(18,19,25,.96)}
    body.mobile-layout .profile-nav button{min-height:40px;padding:8px 11px}
    body.mobile-layout .profile-title-row{display:grid;grid-template-columns:1fr auto;align-items:start}
    body.mobile-layout .profile-title-row>div:last-child{justify-items:end!important}
    body.mobile-layout .profile-copy h3{font-size:34px}
    body.mobile-layout .profile-copy h5{margin-bottom:12px;font-size:10px;line-height:1.45}
    body.mobile-layout .profile-sigil{width:52px;height:52px;font-size:25px}
    body.mobile-layout .profile-register{grid-template-columns:1fr 1fr!important}
    body.mobile-layout .profile-lore-box,body.mobile-layout .profile-secret-wrap,body.mobile-layout .preview-profile[class*="frame-"] .profile-panel{padding:14px;border-radius:15px}
    body.mobile-layout .quick-actions{display:grid;grid-template-columns:1fr 1fr}
    body.mobile-layout .quick-actions .btn{width:100%;min-height:44px}
    body.mobile-layout .quick-actions .edit-only{grid-column:1/-1}

    /* Map and relationship graph are opt-in on a phone */
    body.mobile-layout #places:not(.mobile-map-open) .world-map-shell,
    body.mobile-layout #places:not(.mobile-map-open) .map-toolbar-actions{display:none}
    body.mobile-layout #places.mobile-map-open .world-map-shell{display:block;max-height:56dvh;border-radius:16px}
    body.mobile-layout #places.mobile-map-open .map-toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
    body.mobile-layout #places.mobile-map-open .map-toolbar-actions .map-drag-readout{grid-column:1/-1}
    body.mobile-layout #places .map-toolbar{padding:12px}
    body.mobile-layout #places .mobile-section-toggle{width:100%;min-height:44px}
    body.mobile-layout #relationships:not(.mobile-relations-open) .network{display:none}
    body.mobile-layout #relationships.mobile-relations-open .network{display:block;max-height:56dvh;min-height:430px;border:1px solid var(--line)}
    body.mobile-layout #relationships .mobile-section-toggle{width:100%;min-height:44px}
    body.mobile-layout #relationships .relation-toolbar{gap:9px}

    /* Investigation board becomes a readable list on phone */
    body.mobile-layout #board .board-shell{overflow:visible;border:0;background:transparent;box-shadow:none}
    body.mobile-layout #board .investigation-board{width:100%;height:auto;min-height:0;padding:0;background:transparent;overflow:visible}
    body.mobile-layout #board .board-svg{display:none}
    body.mobile-layout #board #boardCards{display:grid;gap:12px}
    body.mobile-layout #board .board-card{position:relative!important;left:auto!important;top:auto!important;width:100%;min-height:0;padding:15px;touch-action:auto}
    body.mobile-layout #board .board-card-head{cursor:default!important}
    body.mobile-layout #board .board-card-actions{display:grid;grid-template-columns:1fr 1fr}
    body.mobile-layout #board .board-card-actions .btn{width:100%;min-height:42px}
    body.mobile-layout #board #arrangeBoardBtn,body.mobile-layout #board .board-help{display:none!important}
    body.mobile-layout #board .board-toolbar::after{content:'На телефоне доска показана удобным списком. Расположение карточек сохраняется для компьютерного вида.';color:var(--muted);font-size:12px;line-height:1.45}

    /* Other sections */
    body.mobile-layout .thread-card,body.mobile-layout .relation,body.mobile-layout .stash-item,body.mobile-layout .place-card{border-radius:16px}
    body.mobile-layout .thread-head{display:grid;grid-template-columns:1fr auto}
    body.mobile-layout .thread-card .card-actions,body.mobile-layout .stash-actions{display:grid;grid-template-columns:1fr 1fr}
    body.mobile-layout .thread-card .card-actions .btn,body.mobile-layout .stash-actions .btn{width:100%;min-height:42px}
    body.mobile-layout .chronicle-switch{display:grid;grid-template-columns:1fr 1fr;width:100%}
    body.mobile-layout .chronicle-mode{min-height:44px;padding:8px}
    body.mobile-layout .chronicle-person-select,body.mobile-layout .timeline-search{width:100%}
    body.mobile-layout .timeline-wrap{padding:12px}
    body.mobile-layout .timeline{margin-left:4px;padding-left:25px}
    body.mobile-layout #settings .settings-action-row{display:grid!important;grid-template-columns:1fr;gap:8px}
    body.mobile-layout #settings .settings-action-row .btn{width:100%;min-height:46px}
    body.mobile-layout .access-profile{align-items:flex-start}

    @media(max-width:350px){
      body.mobile-layout .hero-meta{grid-template-columns:1fr!important}
      body.mobile-layout .character-card .card-actions,body.mobile-layout .quick-actions,body.mobile-layout .modal-foot{grid-template-columns:1fr}
      body.mobile-layout .profile-title-row{grid-template-columns:1fr}
    }


    body.mobile-layout #profileModal.modal-backdrop,body.mobile-layout #placeViewModal.modal-backdrop{padding:0!important}
    body.mobile-layout #profileModal .modal,body.mobile-layout #placeViewModal .modal{margin:0!important;width:100%!important;height:100dvh!important;max-height:100dvh!important;border-radius:0!important}


    body.mobile-layout .character-card .portrait{height:220px;min-height:220px}
    body.mobile-layout .character-card .summary{-webkit-line-clamp:2}
    body.mobile-layout .character-card .tags{display:none}



    /* v11.7.2: simplified distinctive fantasy cards */
    .character-card{
      padding:10px;
      border-radius:30px;
      background:linear-gradient(180deg,rgba(24,25,31,.96),rgba(17,18,23,.96));
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,rgba(255,255,255,.08));
      box-shadow:0 16px 40px rgba(0,0,0,.22);
    }
    .character-card .card-ambience,
    .character-card .card-corners,
    .character-card .card-shimmer,
    .character-card .card-motto{display:none !important}
    .character-card .portrait{
      height:220px; min-height:220px; margin:0; overflow:hidden;
      border-radius:24px 24px 18px 18px;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent);
      background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01));
      box-shadow:inset 0 -60px 60px rgba(0,0,0,.18);
    }
    .character-card .portrait::before{content:none}
    .character-card .card-body{
      position:relative; z-index:3;
      margin:-18px 10px 4px; padding:18px 16px 15px;
      border-radius:22px;
      background:linear-gradient(180deg,rgba(246,242,233,.98),rgba(236,231,221,.96));
      color:#33261d;
      border:1px solid rgba(99,75,48,.16);
      box-shadow:0 14px 26px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.65);
    }
    .character-card .card-top h4,
    .character-card .card-top .subtitle,
    .character-card .summary,
    .character-card .quote,
    .character-card .character-vital strong,
    .character-card .character-vital span,
    .character-card .card-ribbon-copy small,
    .character-card .card-ribbon-copy strong,
    .character-card .card-identity-copy strong,
    .character-card .card-identity-copy small,
    .character-card .tag,
    .character-card .status{ color:#3a2b20; }
    .character-card .card-top .subtitle{ color:#6f5d4e; }
    .character-card .summary{ color:#46362b; }
    .character-card .quote{ color:#5e4a3d; background:rgba(120,92,60,.05); border:1px solid rgba(120,92,60,.10); }
    .character-card .status{
      background:rgba(255,255,255,.56);
      border:1px solid rgba(99,75,48,.16);
    }
    .character-card .tag,
    .character-card .character-vital{
      background:rgba(255,255,255,.42);
      border-color:rgba(99,75,48,.14);
    }
    .character-card .card-ribbon{
      margin:12px 0 10px;
      padding:9px 11px;
      border-radius:14px;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,rgba(99,75,48,.14));
      background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 12%,transparent),rgba(255,255,255,.38));
      box-shadow:none;
    }
    .character-card .card-ribbon-copy strong{
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#5a4125);
      font-size:10px; letter-spacing:.14em;
    }
    .character-card .card-ribbon-copy small{ margin-top:3px; color:#6d5847; font-size:12px; }
    .character-card .card-ribbon-sigil{
      width:36px;height:36px;border-radius:12px;font-size:16px;
      background:rgba(255,255,255,.64);
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#6a4a2a);
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 28%,transparent);
      box-shadow:none;
      animation:none !important;
      transform:none !important;
    }
    .character-card .card-actions .btn{
      border-color:rgba(99,75,48,.14);
      background:rgba(255,255,255,.44);
      color:#3a2b20;
    }
    .character-card .card-actions .btn.primary{
      background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,rgba(255,255,255,.8)),rgba(255,255,255,.74));
      color:#3a2b20;
      box-shadow:none;
    }
    .character-card .card-identity{
      left:14px;right:14px;bottom:12px;padding:12px 14px;
      border-radius:16px; background:linear-gradient(180deg,rgba(13,14,18,.28),rgba(10,10,14,.72));
      backdrop-filter:blur(2px);
    }
    .character-card .card-mini-sigil{
      width:34px;height:34px;border-radius:12px;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 34%,transparent);
      background:rgba(14,15,21,.7);
    }
    .character-card .theme-ornaments{ inset:0; overflow:visible; }
    .character-card .theme-ornaments span{ filter:none }
    .character-card .portrait-badge{
      width:46px;height:46px;top:16px;right:16px;border-radius:14px;
      background:rgba(17,19,24,.86);
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,transparent);
      box-shadow:0 8px 18px rgba(0,0,0,.22);
    }
    .character-card .portrait-badge::before{ font-size:18px; }
    .character-card .portrait-badge::after{ inset:6px; border-radius:10px; }
    .character-card .frame-banner{
      left:16px; top:14px; padding:6px 10px;
      border-radius:12px; font-size:9px; letter-spacing:.12em;
      box-shadow:none;
    }
    .character-card .card-frame-top,.character-card .card-frame-bottom,
    .character-card .frame-side-left,.character-card .frame-side-right,
    .character-card .frame-garland,.character-card .frame-spikes-top,.character-card .frame-spikes-bottom,
    .character-card .frame-crystals-left,.character-card .frame-crystals-right,
    .character-card .frame-column-left,.character-card .frame-column-right,
    .character-card .frame-crack,.character-card .frame-tear-left,.character-card .frame-tear-right,
    .character-card .portrait-runes,.character-card .frame-vine-left,.character-card .frame-vine-right,.character-card .frame-vine-bottom{opacity:.88}

    /* theme-specific simplified motifs */
    .frame-classic.character-card .card-frame-top,
    .frame-classic.character-card .card-frame-bottom{
      left:20px; right:20px; height:12px;
      background:linear-gradient(90deg,transparent 0 6%,color-mix(in srgb,var(--frame-accent,var(--gold)) 34%,transparent) 6% 12%,transparent 12% 88%,color-mix(in srgb,var(--frame-accent,var(--gold)) 34%,transparent) 88% 94%,transparent 94%);
      clip-path:polygon(0 100%,6% 0,12% 100%,88% 100%,94% 0,100% 100%);
    }
    .frame-classic.character-card .card-frame-top{ top:8px; }
    .frame-classic.character-card .card-frame-bottom{ bottom:8px; }

    .frame-royal.character-card .frame-column-left,
    .frame-royal.character-card .frame-column-right{
      top:20px; bottom:20px; width:18px; opacity:.72;
      background:linear-gradient(180deg,rgba(232,189,82,.22),rgba(255,255,255,.02) 16%,rgba(255,255,255,.01) 84%,rgba(232,189,82,.18));
      border:1px solid rgba(232,189,82,.18);
      box-shadow:none;
    }
    .frame-royal.character-card .frame-column-left{ left:6px; border-radius:14px 0 0 14px; }
    .frame-royal.character-card .frame-column-right{ right:6px; border-radius:0 14px 14px 0; }
    .frame-royal.character-card .frame-column-left::before,
    .frame-royal.character-card .frame-column-right::before,
    .frame-royal.character-card .frame-column-left::after,
    .frame-royal.character-card .frame-column-right::after{ left:2px; right:2px; height:5px; }
    .frame-royal.character-card .frame-banner{ background:linear-gradient(180deg,rgba(129,16,45,.9),rgba(92,12,34,.92)); }

    .frame-verdant.character-card .frame-vine-left,
    .frame-verdant.character-card .frame-vine-right{
      width:54px; height:118px; top:14px; opacity:.92;
      background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 88 160'%3E%3Cpath d='M14 150c14-10 20-22 20-40 0-18-9-30-18-40 21 3 35-9 39-26 1-6 2-12 1-18 12 12 15 25 14 40-2 17-9 30-24 38 11 0 21 8 26 18 5 11 5 23 0 36-6-7-12-13-21-16-9-4-19-5-28 0-4 2-7 5-9 8z' fill='none' stroke='%2376b36c' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cellipse cx='30' cy='84' rx='7' ry='10' fill='%2380bd75' transform='rotate(-40 30 84)'/%3E%3Cellipse cx='54' cy='48' rx='7' ry='10' fill='%2393cb87' transform='rotate(18 54 48)'/%3E%3Cellipse cx='59' cy='126' rx='7' ry='10' fill='%2388c37b' transform='rotate(-18 59 126)'/%3E%3C/svg%3E");
    }
    .frame-verdant.character-card .frame-vine-left{ left:-6px; }
    .frame-verdant.character-card .frame-vine-right{ right:-6px; transform:scaleX(-1); }
    .frame-verdant.character-card .frame-vine-bottom,
    .frame-verdant.character-card .frame-banner{ display:none; }

    .frame-arcane.character-card .portrait-runes{
      left:auto; right:12px; top:10px; width:68px; height:68px; transform:none;
      border-radius:50%; border:1px solid rgba(164,134,242,.28); box-shadow:none;
      background:radial-gradient(circle,rgba(164,134,242,.10),transparent 64%);
      animation:none !important;
    }
    .frame-arcane.character-card .portrait-runes::before{ inset:7px; border-width:1px; }
    .frame-arcane.character-card .portrait-runes::after{ font-size:8px; letter-spacing:.18em; }
    .frame-arcane.character-card .portrait-badge{ display:none; }
    .frame-arcane.character-card .card-frame-top,
    .frame-arcane.character-card .card-frame-bottom{
      left:22px; right:22px; height:10px;
      background:linear-gradient(90deg,transparent,rgba(164,134,242,.24) 15%,rgba(98,181,220,.18) 50%,rgba(164,134,242,.24) 85%,transparent);
    }
    .frame-arcane.character-card .card-frame-top{ top:10px; }
    .frame-arcane.character-card .card-frame-bottom{ bottom:10px; }

    .frame-infernal.character-card .frame-spikes-top,
    .frame-infernal.character-card .frame-spikes-bottom{
      left:18px; right:18px; height:14px; opacity:.8;
      background:linear-gradient(90deg,transparent 0 8%,rgba(224,82,88,.22) 8% 12%,transparent 12% 24%,rgba(240,138,60,.16) 24% 28%,transparent 28% 40%,rgba(224,82,88,.22) 40% 44%,transparent 44% 100%);
      clip-path:polygon(0 100%,8% 36%,16% 100%,28% 18%,36% 100%,50% 30%,64% 100%,76% 22%,84% 100%,100% 42%,100% 100%);
    }
    .frame-infernal.character-card .frame-spikes-top{ top:8px; }
    .frame-infernal.character-card .frame-spikes-bottom{ bottom:8px; }
    .frame-infernal.character-card .frame-banner{ background:linear-gradient(180deg,rgba(105,19,18,.92),rgba(69,14,13,.92)); }

    .frame-frost.character-card .frame-crystals-left,
    .frame-frost.character-card .frame-crystals-right{
      top:12px; bottom:auto; width:44px; height:76px; opacity:.88;
      background:linear-gradient(180deg,rgba(205,241,255,.34),rgba(143,212,237,.12),transparent);
    }
    .frame-frost.character-card .frame-crystals-left{ left:-4px; }
    .frame-frost.character-card .frame-crystals-right{ right:-4px; }
    .frame-frost.character-card .card-frame-top,
    .frame-frost.character-card .card-frame-bottom{
      left:24px; right:24px; height:8px;
      background:linear-gradient(90deg,transparent 0 8%,rgba(195,238,255,.28) 8% 12%,transparent 12% 88%,rgba(195,238,255,.28) 88% 92%,transparent 92%);
    }
    .frame-frost.character-card .card-frame-top{ top:10px; }
    .frame-frost.character-card .card-frame-bottom{ bottom:10px; }

    .frame-cursed.character-card .frame-crack{
      left:auto; right:22px; top:14px; bottom:14px; width:2px; transform:rotate(8deg);
      background:linear-gradient(180deg,transparent,rgba(211,67,84,.34) 24%,rgba(143,114,203,.28) 58%,transparent 86%);
    }
    .frame-cursed.character-card .frame-crack::before{ width:32px; top:54px; left:-14px; }
    .frame-cursed.character-card .frame-crack::after{ width:26px; top:108px; left:-10px; }
    .frame-cursed.character-card .frame-tear-left,
    .frame-cursed.character-card .frame-tear-right{
      top:18px; bottom:18px; width:16px; opacity:.75;
      background:linear-gradient(180deg,transparent,rgba(211,67,84,.08),transparent);
    }
    .frame-cursed.character-card .frame-banner{ background:linear-gradient(180deg,rgba(72,18,36,.92),rgba(44,12,24,.94)); }

    body.mobile-layout .character-card{ padding:8px; border-radius:24px; }
    body.mobile-layout .character-card .portrait{ height:204px; min-height:204px; border-radius:20px 20px 16px 16px; }
    body.mobile-layout .character-card .card-body{ margin:-14px 8px 4px; padding:14px 13px 14px; border-radius:18px; }
    body.mobile-layout .character-card .frame-banner{ top:12px; left:12px; }
    body.mobile-layout .character-card .portrait-badge{ top:12px; right:12px; width:40px; height:40px; }
    body.mobile-layout .character-card .portrait-badge::before{ font-size:15px; }
    body.mobile-layout .character-card .card-ribbon-copy small{ display:block; font-size:11px; }
    body.mobile-layout .character-card .summary{ -webkit-line-clamp:2; }
    body.mobile-layout .frame-verdant.character-card .frame-vine-left,
    body.mobile-layout .frame-verdant.character-card .frame-vine-right{ width:42px; height:92px; top:18px; }
    body.mobile-layout .frame-royal.character-card .frame-column-left,
    body.mobile-layout .frame-royal.character-card .frame-column-right{ width:14px; }
    body.mobile-layout .frame-frost.character-card .frame-crystals-left,
    body.mobile-layout .frame-frost.character-card .frame-crystals-right{ width:34px; height:58px; }
    body.mobile-layout .frame-arcane.character-card .portrait-runes{ width:54px; height:54px; right:10px; top:10px; }




    /* v11.7.3: outer fantasy motifs + darker character cards */
    .character-card{
      overflow:visible;
      padding:10px;
      border-radius:30px;
      background:linear-gradient(180deg,rgba(12,14,19,.98),rgba(9,11,16,.98));
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 20%,rgba(255,255,255,.06));
      box-shadow:0 22px 48px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.04);
    }
    .character-card .theme-ornaments{
      inset:-12px;
      overflow:visible;
      z-index:0;
    }
    .character-card .portrait,
    .character-card .card-body{position:relative;z-index:2}
    .character-card .portrait{
      height:220px; min-height:220px;
      border-radius:22px 22px 18px 18px;
      background:linear-gradient(180deg,rgba(17,20,27,.96),rgba(13,15,21,.96));
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,rgba(255,255,255,.05));
      box-shadow:inset 0 0 0 1px rgba(255,255,255,.03), inset 0 -80px 80px rgba(0,0,0,.24);
    }
    .character-card .card-body{
      margin:-18px 10px 4px;
      padding:18px 16px 15px;
      border-radius:22px;
      background:linear-gradient(180deg,rgba(20,23,31,.98),rgba(14,16,23,.98));
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 15%,rgba(255,255,255,.06));
      box-shadow:0 16px 30px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.04);
      color:#ece3d6;
    }
    .character-card .card-top h4,
    .character-card .card-top .subtitle,
    .character-card .summary,
    .character-card .quote,
    .character-card .character-vital strong,
    .character-card .character-vital span,
    .character-card .card-ribbon-copy small,
    .character-card .card-ribbon-copy strong,
    .character-card .status,
    .character-card .tag{color:#ece3d6 !important}
    .character-card .card-top .subtitle,
    .character-card .character-vital span,
    .character-card .card-ribbon-copy small,
    .character-card .summary{color:#cdbfb0 !important}
    .character-card .quote{
      background:rgba(255,255,255,.03)!important;
      border:1px solid rgba(255,255,255,.05)!important;
      color:#d8c8b8!important;
    }
    .character-card .status,
    .character-card .tag,
    .character-card .character-vital{
      background:rgba(255,255,255,.04)!important;
      border-color:rgba(255,255,255,.08)!important;
      box-shadow:none!important;
    }
    .character-card .card-ribbon{
      background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 14%,rgba(255,255,255,.04)),rgba(255,255,255,.03))!important;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 22%,rgba(255,255,255,.06))!important;
      box-shadow:none!important;
    }
    .character-card .card-ribbon-copy strong{
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 78%,#fff3d8)!important;
    }
    .character-card .card-ribbon-sigil,
    .character-card .card-mini-sigil{
      background:rgba(9,11,16,.74)!important;
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 84%,#fff5e5)!important;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 28%,rgba(255,255,255,.05))!important;
      box-shadow:none!important;
      animation:none!important;
      transform:none!important;
    }
    .character-card .card-actions .btn{
      background:rgba(255,255,255,.04)!important;
      border-color:rgba(255,255,255,.08)!important;
      color:#f0e7db!important;
      box-shadow:none!important;
    }
    .character-card .card-actions .btn.primary{
      background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,rgba(255,255,255,.05)),rgba(255,255,255,.06))!important;
    }
    .character-card .card-identity{
      left:14px; right:14px; bottom:12px;
      border-radius:16px;
      background:linear-gradient(180deg,rgba(10,12,18,.34),rgba(8,9,14,.76));
    }
    .character-card .card-ambience,
    .character-card .card-corners,
    .character-card .card-shimmer,
    .character-card .card-motto{display:none!important}
    .character-card .frame-banner{
      top:-2px; left:12px;
      padding:6px 10px;
      border-radius:12px;
      background:rgba(10,12,18,.9);
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,rgba(255,255,255,.06));
      box-shadow:0 8px 20px rgba(0,0,0,.22);
    }
    .character-card .portrait-badge{
      top:-4px; right:12px;
      width:42px; height:42px;
      border-radius:14px;
      background:rgba(10,12,18,.92);
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 28%,rgba(255,255,255,.06));
      box-shadow:0 8px 20px rgba(0,0,0,.22);
    }
    .character-card .portrait-badge::before{font-size:17px}
    .character-card .portrait-badge::after{inset:6px;border-radius:10px}

    /* ornaments outside the main card silhouette */
    .frame-classic.character-card .card-frame-top,
    .frame-classic.character-card .card-frame-bottom{
      left:18px; right:18px; height:12px; opacity:.75;
      background:linear-gradient(90deg,transparent 0 8%,color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,transparent) 8% 14%,transparent 14% 86%,color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,transparent) 86% 92%,transparent 92%);
      clip-path:polygon(0 100%,7% 0,14% 100%,86% 100%,93% 0,100% 100%);
    }
    .frame-classic.character-card .card-frame-top{top:-6px}
    .frame-classic.character-card .card-frame-bottom{bottom:-6px}

    .frame-royal.character-card .frame-column-left,
    .frame-royal.character-card .frame-column-right{
      top:18px; bottom:18px; width:15px; opacity:.72;
      background:linear-gradient(180deg,rgba(232,189,82,.20),rgba(255,255,255,.02) 16%,rgba(255,255,255,.01) 84%,rgba(232,189,82,.16));
      border:1px solid rgba(232,189,82,.18);
      box-shadow:none;
    }
    .frame-royal.character-card .frame-column-left{left:-8px;border-radius:12px 0 0 12px}
    .frame-royal.character-card .frame-column-right{right:-8px;border-radius:0 12px 12px 0}
    .frame-royal.character-card .frame-column-left::before,
    .frame-royal.character-card .frame-column-right::before,
    .frame-royal.character-card .frame-column-left::after,
    .frame-royal.character-card .frame-column-right::after{left:2px;right:2px;height:5px}
    .frame-royal.character-card .frame-banner{background:linear-gradient(180deg,rgba(129,16,45,.90),rgba(87,12,33,.94))}

    .frame-verdant.character-card .frame-vine-left,
    .frame-verdant.character-card .frame-vine-right{
      width:48px; height:100px; top:14px; opacity:.94; background-repeat:no-repeat; background-size:contain; background-position:center;
      background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 88 160'%3E%3Cpath d='M14 150c14-10 20-22 20-40 0-18-9-30-18-40 21 3 35-9 39-26 1-6 2-12 1-18 12 12 15 25 14 40-2 17-9 30-24 38 11 0 21 8 26 18 5 11 5 23 0 36-6-7-12-13-21-16-9-4-19-5-28 0-4 2-7 5-9 8z' fill='none' stroke='%2376b36c' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cellipse cx='30' cy='84' rx='7' ry='10' fill='%2380bd75' transform='rotate(-40 30 84)'/%3E%3Cellipse cx='54' cy='48' rx='7' ry='10' fill='%2393cb87' transform='rotate(18 54 48)'/%3E%3Cellipse cx='59' cy='126' rx='7' ry='10' fill='%2388c37b' transform='rotate(-18 59 126)'/%3E%3C/svg%3E");
    }
    .frame-verdant.character-card .frame-vine-left{left:-18px}
    .frame-verdant.character-card .frame-vine-right{right:-18px;transform:scaleX(-1)}
    .frame-verdant.character-card .frame-vine-bottom,
    .frame-verdant.character-card .frame-banner{display:none}
    .frame-verdant.character-card .portrait-badge{right:-2px}

    .frame-arcane.character-card .portrait-runes{
      left:auto; right:-6px; top:-8px; width:62px; height:62px; transform:none;
      border-radius:50%; border:1px solid rgba(164,134,242,.28); box-shadow:none;
      background:radial-gradient(circle,rgba(164,134,242,.10),transparent 64%);
      animation:none!important;
    }
    .frame-arcane.character-card .portrait-runes::before{inset:7px;border-width:1px}
    .frame-arcane.character-card .portrait-runes::after{font-size:8px;letter-spacing:.18em}
    .frame-arcane.character-card .portrait-badge{display:none}
    .frame-arcane.character-card .card-frame-top,
    .frame-arcane.character-card .card-frame-bottom{
      left:20px; right:20px; height:8px;
      background:linear-gradient(90deg,transparent,rgba(164,134,242,.24) 18%,rgba(98,181,220,.18) 50%,rgba(164,134,242,.24) 82%,transparent);
    }
    .frame-arcane.character-card .card-frame-top{top:-5px}
    .frame-arcane.character-card .card-frame-bottom{bottom:-5px}

    .frame-infernal.character-card .frame-spikes-top,
    .frame-infernal.character-card .frame-spikes-bottom{
      left:16px; right:16px; height:12px; opacity:.78;
      background:linear-gradient(90deg,transparent 0 8%,rgba(224,82,88,.22) 8% 12%,transparent 12% 24%,rgba(240,138,60,.16) 24% 28%,transparent 28% 40%,rgba(224,82,88,.22) 40% 44%,transparent 44% 100%);
      clip-path:polygon(0 100%,8% 36%,16% 100%,28% 18%,36% 100%,50% 30%,64% 100%,76% 22%,84% 100%,100% 42%,100% 100%);
    }
    .frame-infernal.character-card .frame-spikes-top{top:-6px}
    .frame-infernal.character-card .frame-spikes-bottom{bottom:-6px}
    .frame-infernal.character-card .frame-banner{background:linear-gradient(180deg,rgba(105,19,18,.92),rgba(69,14,13,.92))}

    .frame-frost.character-card .frame-crystals-left,
    .frame-frost.character-card .frame-crystals-right{
      top:10px; bottom:auto; width:34px; height:64px; opacity:.88;
      background:linear-gradient(180deg,rgba(205,241,255,.34),rgba(143,212,237,.12),transparent);
    }
    .frame-frost.character-card .frame-crystals-left{left:-10px}
    .frame-frost.character-card .frame-crystals-right{right:-10px}
    .frame-frost.character-card .card-frame-top,
    .frame-frost.character-card .card-frame-bottom{
      left:24px; right:24px; height:8px;
      background:linear-gradient(90deg,transparent 0 8%,rgba(195,238,255,.28) 8% 12%,transparent 12% 88%,rgba(195,238,255,.28) 88% 92%,transparent 92%);
    }
    .frame-frost.character-card .card-frame-top{top:-5px}
    .frame-frost.character-card .card-frame-bottom{bottom:-5px}

    .frame-cursed.character-card .frame-crack{
      left:auto; right:-4px; top:10px; bottom:10px; width:2px; transform:rotate(8deg);
      background:linear-gradient(180deg,transparent,rgba(211,67,84,.34) 24%,rgba(143,114,203,.28) 58%,transparent 86%);
    }
    .frame-cursed.character-card .frame-crack::before{width:26px;top:48px;left:-12px}
    .frame-cursed.character-card .frame-crack::after{width:22px;top:96px;left:-9px}
    .frame-cursed.character-card .frame-tear-left,
    .frame-cursed.character-card .frame-tear-right{
      top:18px; bottom:18px; width:12px; opacity:.68;
      background:linear-gradient(180deg,transparent,rgba(211,67,84,.08),transparent);
    }
    .frame-cursed.character-card .frame-tear-left{left:-3px}
    .frame-cursed.character-card .frame-tear-right{right:-3px}
    .frame-cursed.character-card .frame-banner{background:linear-gradient(180deg,rgba(72,18,36,.92),rgba(44,12,24,.94))}

    body.mobile-layout .character-card{
      padding:8px; border-radius:24px;
      box-shadow:0 18px 38px rgba(0,0,0,.28);
    }
    body.mobile-layout .character-card .portrait{height:198px;min-height:198px;border-radius:18px 18px 15px 15px}
    body.mobile-layout .character-card .card-body{margin:-14px 8px 4px;padding:14px 13px 14px;border-radius:18px}
    body.mobile-layout .character-card .frame-banner{top:0;left:10px}
    body.mobile-layout .character-card .portrait-badge{top:-2px;right:10px;width:38px;height:38px}
    body.mobile-layout .character-card .portrait-badge::before{font-size:15px}
    body.mobile-layout .character-card .card-ribbon-copy small{display:block;font-size:11px}
    body.mobile-layout .character-card .summary{-webkit-line-clamp:2}
    body.mobile-layout .frame-verdant.character-card .frame-vine-left,
    body.mobile-layout .frame-verdant.character-card .frame-vine-right{width:40px;height:82px;top:18px}
    body.mobile-layout .frame-royal.character-card .frame-column-left,
    body.mobile-layout .frame-royal.character-card .frame-column-right{width:12px}
    body.mobile-layout .frame-frost.character-card .frame-crystals-left,
    body.mobile-layout .frame-frost.character-card .frame-crystals-right{width:28px;height:50px;top:12px}
    body.mobile-layout .frame-arcane.character-card .portrait-runes{width:52px;height:52px;right:-2px;top:-4px}



    /* v11.7.4: ornaments truly outside the card frame */
    .character-card{position:relative;overflow:visible !important;isolation:isolate;padding:12px}
    .character-card .theme-ornaments{
      position:absolute;
      inset:-18px;
      z-index:1;
      pointer-events:none;
      overflow:visible !important;
    }
    .character-card .theme-ornaments > span{position:absolute;display:block;pointer-events:none}
    .character-card .portrait,.character-card .card-body,.character-card .card-favorite{position:relative;z-index:3}
    .character-card .portrait{overflow:hidden}
    .character-card .card-identity{z-index:4}

    /* default hide, then enable per-theme */
    .character-card .card-frame-top,
    .character-card .card-frame-bottom,
    .character-card .frame-side-left,
    .character-card .frame-side-right,
    .character-card .frame-garland,
    .character-card .frame-column-left,
    .character-card .frame-column-right,
    .character-card .frame-vine-left,
    .character-card .frame-vine-right,
    .character-card .frame-vine-bottom,
    .character-card .portrait-runes,
    .character-card .frame-spikes-top,
    .character-card .frame-spikes-bottom,
    .character-card .frame-crystals-left,
    .character-card .frame-crystals-right,
    .character-card .frame-crack,
    .character-card .frame-tear-left,
    .character-card .frame-tear-right,
    .character-card .frame-banner,
    .character-card .portrait-badge{display:none}

    .character-card .frame-banner{
      top:-8px; left:16px; z-index:1;
      padding:6px 10px; border-radius:12px; font-size:9px; letter-spacing:.12em;
      text-transform:uppercase; color:#fff3e0;
      background:rgba(10,12,18,.92); border:1px solid rgba(255,255,255,.08);
      box-shadow:0 10px 18px rgba(0,0,0,.24)
    }
    .character-card .portrait-badge{
      top:-10px; right:16px; z-index:1;
      width:42px; height:42px; border-radius:14px;
      background:rgba(10,12,18,.92); border:1px solid rgba(255,255,255,.08);
      box-shadow:0 10px 18px rgba(0,0,0,.24)
    }
    .character-card .portrait-badge::before{content:attr(data-symbol);position:absolute;inset:0;display:grid;place-items:center;font:700 17px/1 Georgia,serif;color:color-mix(in srgb,var(--frame-accent,var(--gold)) 85%,#fff4df)}
    .character-card .portrait-badge::after{content:'';position:absolute;inset:6px;border-radius:10px;border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent)}

    .frame-classic.character-card .card-frame-top,
    .frame-classic.character-card .card-frame-bottom{display:block;left:22px;right:22px;height:10px;opacity:.82;background:linear-gradient(90deg,transparent 0 8%,color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,transparent) 8% 14%,transparent 14% 86%,color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,transparent) 86% 92%,transparent 92%);clip-path:polygon(0 100%,7% 0,14% 100%,86% 100%,93% 0,100% 100%)}
    .frame-classic.character-card .card-frame-top{top:-10px}
    .frame-classic.character-card .card-frame-bottom{bottom:-10px}
    .frame-classic.character-card .portrait-badge{display:block}

    .frame-royal.character-card .frame-column-left,
    .frame-royal.character-card .frame-column-right{display:block;top:14px;bottom:14px;width:16px;opacity:.74;background:linear-gradient(180deg,rgba(232,189,82,.20),rgba(255,255,255,.02) 16%,rgba(255,255,255,.01) 84%,rgba(232,189,82,.16));border:1px solid rgba(232,189,82,.18)}
    .frame-royal.character-card .frame-column-left{left:-12px;border-radius:12px 0 0 12px}
    .frame-royal.character-card .frame-column-right{right:-12px;border-radius:0 12px 12px 0}
    .frame-royal.character-card .frame-column-left::before,
    .frame-royal.character-card .frame-column-right::before,
    .frame-royal.character-card .frame-column-left::after,
    .frame-royal.character-card .frame-column-right::after{content:'';position:absolute;left:2px;right:2px;height:5px;border-radius:6px;background:linear-gradient(180deg,rgba(232,189,82,.46),rgba(232,189,82,.12))}
    .frame-royal.character-card .frame-column-left::before,
    .frame-royal.character-card .frame-column-right::before{top:6px}
    .frame-royal.character-card .frame-column-left::after,
    .frame-royal.character-card .frame-column-right::after{bottom:6px}
    .frame-royal.character-card .frame-banner{display:block;background:linear-gradient(180deg,rgba(129,16,45,.90),rgba(87,12,33,.94))}
    .frame-royal.character-card .portrait-badge{display:block}

    .frame-verdant.character-card .frame-vine-left,
    .frame-verdant.character-card .frame-vine-right{display:block;width:54px;height:112px;top:8px;opacity:.96;background-repeat:no-repeat;background-size:contain;background-position:center;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 88 160'%3E%3Cpath d='M14 150c14-10 20-22 20-40 0-18-9-30-18-40 21 3 35-9 39-26 1-6 2-12 1-18 12 12 15 25 14 40-2 17-9 30-24 38 11 0 21 8 26 18 5 11 5 23 0 36-6-7-12-13-21-16-9-4-19-5-28 0-4 2-7 5-9 8z' fill='none' stroke='%2376b36c' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cellipse cx='30' cy='84' rx='7' ry='10' fill='%2380bd75' transform='rotate(-40 30 84)'/%3E%3Cellipse cx='54' cy='48' rx='7' ry='10' fill='%2393cb87' transform='rotate(18 54 48)'/%3E%3Cellipse cx='59' cy='126' rx='7' ry='10' fill='%2388c37b' transform='rotate(-18 59 126)'/%3E%3C/svg%3E")}
    .frame-verdant.character-card .frame-vine-left{left:-20px}
    .frame-verdant.character-card .frame-vine-right{right:-20px;transform:scaleX(-1)}
    .frame-verdant.character-card .portrait-badge{display:block}

    .frame-arcane.character-card .portrait-runes{display:block;right:-10px;top:-10px;width:64px;height:64px;border-radius:50%;border:1px solid rgba(164,134,242,.28);background:radial-gradient(circle,rgba(164,134,242,.10),transparent 64%)}
    .frame-arcane.character-card .portrait-runes::before{content:'';position:absolute;inset:7px;border-radius:50%;border:1px dashed rgba(164,134,242,.32)}
    .frame-arcane.character-card .portrait-runes::after{content:'✦ ✧ ✦';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);white-space:nowrap;font:600 8px/1 Georgia,serif;letter-spacing:.18em;color:rgba(225,219,255,.88)}
    .frame-arcane.character-card .card-frame-top,
    .frame-arcane.character-card .card-frame-bottom{display:block;left:24px;right:24px;height:8px;background:linear-gradient(90deg,transparent,rgba(164,134,242,.24) 18%,rgba(98,181,220,.18) 50%,rgba(164,134,242,.24) 82%,transparent)}
    .frame-arcane.character-card .card-frame-top{top:-8px}
    .frame-arcane.character-card .card-frame-bottom{bottom:-8px}

    .frame-infernal.character-card .frame-spikes-top,
    .frame-infernal.character-card .frame-spikes-bottom{display:block;left:18px;right:18px;height:12px;opacity:.80;background:linear-gradient(90deg,transparent 0 8%,rgba(224,82,88,.22) 8% 12%,transparent 12% 24%,rgba(240,138,60,.16) 24% 28%,transparent 28% 40%,rgba(224,82,88,.22) 40% 44%,transparent 44% 100%);clip-path:polygon(0 100%,8% 36%,16% 100%,28% 18%,36% 100%,50% 30%,64% 100%,76% 22%,84% 100%,100% 42%,100% 100%)}
    .frame-infernal.character-card .frame-spikes-top{top:-8px}
    .frame-infernal.character-card .frame-spikes-bottom{bottom:-8px}
    .frame-infernal.character-card .frame-banner{display:block;background:linear-gradient(180deg,rgba(105,19,18,.92),rgba(69,14,13,.92))}
    .frame-infernal.character-card .portrait-badge{display:block}

    .frame-frost.character-card .frame-crystals-left,
    .frame-frost.character-card .frame-crystals-right{display:block;top:8px;width:38px;height:70px;opacity:.90;background:linear-gradient(180deg,rgba(205,241,255,.34),rgba(143,212,237,.12),transparent);clip-path:polygon(42% 0,72% 10%,58% 28%,84% 42%,54% 56%,80% 74%,48% 88%,62% 100%,28% 92%,38% 72%,14% 58%,34% 42%,8% 26%,28% 14%)}
    .frame-frost.character-card .frame-crystals-left{left:-14px}
    .frame-frost.character-card .frame-crystals-right{right:-14px;transform:scaleX(-1)}
    .frame-frost.character-card .card-frame-top,
    .frame-frost.character-card .card-frame-bottom{display:block;left:24px;right:24px;height:8px;background:linear-gradient(90deg,transparent 0 8%,rgba(195,238,255,.28) 8% 12%,transparent 12% 88%,rgba(195,238,255,.28) 88% 92%,transparent 92%)}
    .frame-frost.character-card .card-frame-top{top:-8px}
    .frame-frost.character-card .card-frame-bottom{bottom:-8px}
    .frame-frost.character-card .portrait-badge{display:block}

    .frame-cursed.character-card .frame-crack{display:block;right:-6px;top:8px;bottom:8px;width:2px;transform:rotate(8deg);background:linear-gradient(180deg,transparent,rgba(211,67,84,.34) 24%,rgba(143,114,203,.28) 58%,transparent 86%)}
    .frame-cursed.character-card .frame-crack::before,.frame-cursed.character-card .frame-crack::after{content:'';position:absolute;height:2px;background:linear-gradient(90deg,transparent,rgba(211,67,84,.44),transparent)}
    .frame-cursed.character-card .frame-crack::before{width:26px;top:48px;left:-12px;transform:rotate(28deg)}
    .frame-cursed.character-card .frame-crack::after{width:22px;top:96px;left:-9px;transform:rotate(-30deg)}
    .frame-cursed.character-card .frame-tear-left,
    .frame-cursed.character-card .frame-tear-right{display:block;top:18px;bottom:18px;width:12px;opacity:.68;background:linear-gradient(180deg,transparent,rgba(211,67,84,.08),transparent);clip-path:polygon(44% 0,70% 12%,48% 26%,76% 40%,40% 58%,66% 72%,30% 100%,0 88%,20% 64%,0 40%,26% 18%)}
    .frame-cursed.character-card .frame-tear-left{left:-4px}
    .frame-cursed.character-card .frame-tear-right{right:-4px;transform:scaleX(-1)}
    .frame-cursed.character-card .frame-banner{display:block;background:linear-gradient(180deg,rgba(72,18,36,.92),rgba(44,12,24,.94))}
    .frame-cursed.character-card .portrait-badge{display:block}

    body.mobile-layout .character-card{padding:10px}
    body.mobile-layout .character-card .theme-ornaments{inset:-12px}
    body.mobile-layout .frame-verdant.character-card .frame-vine-left,
    body.mobile-layout .frame-verdant.character-card .frame-vine-right{width:40px;height:82px;top:18px}
    body.mobile-layout .frame-royal.character-card .frame-column-left,
    body.mobile-layout .frame-royal.character-card .frame-column-right{width:12px;left:-10px;right:auto}
    body.mobile-layout .frame-royal.character-card .frame-column-right{right:-10px;left:auto}
    body.mobile-layout .frame-frost.character-card .frame-crystals-left,
    body.mobile-layout .frame-frost.character-card .frame-crystals-right{width:28px;height:54px;top:12px;left:-10px;right:auto}
    body.mobile-layout .frame-frost.character-card .frame-crystals-right{right:-10px;left:auto}
    body.mobile-layout .frame-arcane.character-card .portrait-runes{width:52px;height:52px;right:-2px;top:-4px}
    body.mobile-layout .character-card .portrait-badge{top:-4px;right:10px;width:38px;height:38px}
    body.mobile-layout .character-card .frame-banner{top:-2px;left:10px}



    /* v11.8: true external relief frames */
    #characterGrid{
      padding:30px 26px 38px;
      gap:38px 30px;
      overflow:visible;
    }
    .character-card-wrap{
      position:relative;
      min-width:0;
      isolation:isolate;
      overflow:visible;
    }
    .character-card-wrap .relief-frame{
      position:absolute;
      inset:-27px;
      z-index:0;
      pointer-events:none;
      overflow:visible;
    }
    .character-card-wrap .relief-svg{
      width:100%;
      height:100%;
      display:block;
      overflow:visible;
    }
    .character-card-wrap .character-card{
      position:relative;
      z-index:2;
      overflow:hidden !important;
      padding:10px;
      border-radius:28px;
      background:linear-gradient(180deg,rgba(13,15,21,.99),rgba(9,11,16,.99));
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 20%,rgba(255,255,255,.06));
      box-shadow:0 22px 48px rgba(0,0,0,.36),inset 0 1px 0 rgba(255,255,255,.035);
    }
    .character-card-wrap .character-card::before,
    .character-card-wrap .character-card::after{content:none!important}
    .character-card-wrap .character-card .theme-ornaments{display:none!important}
    .character-card-wrap .character-card .portrait{
      height:220px;
      min-height:220px;
      margin:0;
      border-radius:21px 21px 16px 16px;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,rgba(255,255,255,.05));
      background:linear-gradient(180deg,rgba(18,21,28,.98),rgba(12,14,20,.98));
      box-shadow:inset 0 -80px 80px rgba(0,0,0,.26);
    }
    .character-card-wrap .character-card .card-body{
      margin:-16px 9px 3px;
      padding:18px 15px 15px;
      border-radius:20px;
      background:linear-gradient(180deg,rgba(22,25,33,.99),rgba(14,16,23,.99));
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 14%,rgba(255,255,255,.055));
      box-shadow:0 16px 30px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.035);
    }
    .character-card-wrap .character-card .card-ribbon,
    .character-card-wrap .character-card .quote,
    .character-card-wrap .character-card .tags,
    .character-card-wrap .character-card .card-motto,
    .character-card-wrap .character-card .card-ambience,
    .character-card-wrap .character-card .card-corners,
    .character-card-wrap .character-card .card-shimmer{display:none!important}
    .character-card-wrap .character-card .summary{
      min-height:0;
      margin:12px 0 14px;
      display:-webkit-box;
      -webkit-line-clamp:3;
      -webkit-box-orient:vertical;
      overflow:hidden;
      color:#cdbfb0!important;
      line-height:1.5;
    }
    .character-card-wrap .character-card .card-top h4{color:#f1e8dd!important}
    .character-card-wrap .character-card .card-top .subtitle{color:#bfae9e!important}
    .character-card-wrap .character-card .status{
      color:#e8ddd1!important;
      background:rgba(255,255,255,.035)!important;
      border-color:rgba(255,255,255,.08)!important;
    }
    .character-card-wrap .character-vitals{margin:12px 0 4px}
    .character-card-wrap .character-vital{
      background:rgba(255,255,255,.035)!important;
      border-color:rgba(255,255,255,.07)!important;
      box-shadow:none!important;
    }
    .character-card-wrap .character-vital strong{color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#fff)!important}
    .character-card-wrap .character-vital span{color:#a99b8f!important}
    .character-card-wrap .card-actions{margin-top:14px}
    .character-card-wrap .card-actions .btn{
      background:rgba(255,255,255,.035)!important;
      color:#eee4d8!important;
      border-color:rgba(255,255,255,.075)!important;
      box-shadow:none!important;
    }
    .character-card-wrap .card-actions .btn.primary{
      background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,rgba(255,255,255,.04)),rgba(255,255,255,.045))!important;
    }
    .character-card-wrap .card-identity{
      left:14px;
      right:14px;
      bottom:12px;
      padding:11px 13px;
      border-radius:15px;
      background:linear-gradient(180deg,rgba(10,12,17,.28),rgba(7,8,12,.78));
    }
    .character-card-wrap .card-mini-sigil{
      width:34px;
      height:34px;
      border-radius:12px;
      background:rgba(8,10,15,.76)!important;
      box-shadow:none!important;
    }
    .character-card-wrap .card-favorite{z-index:5}
    .character-card-wrap:hover .relief-frame{filter:brightness(1.05)}
    .character-card-wrap:hover .character-card{transform:translateY(-3px)}
    body.calm-mode .character-card-wrap:hover .character-card{transform:none}

    @media(max-width:900px){
      #characterGrid{padding:26px 22px 34px;gap:34px 24px}
      .character-card-wrap .relief-frame{inset:-22px}
    }
    body.mobile-layout #characterGrid{
      padding:24px 16px 32px;
      gap:30px;
    }
    body.mobile-layout .character-card-wrap .relief-frame{inset:-16px}
    body.mobile-layout .character-card-wrap .character-card{padding:8px;border-radius:23px}
    body.mobile-layout .character-card-wrap .character-card .portrait{height:194px;min-height:194px;border-radius:18px 18px 14px 14px}
    body.mobile-layout .character-card-wrap .character-card .card-body{margin:-13px 7px 3px;padding:14px 12px 13px;border-radius:17px}
    body.mobile-layout .character-card-wrap .character-card .summary{-webkit-line-clamp:2;margin:10px 0 12px}
    body.mobile-layout .character-card-wrap .character-card .card-actions{grid-template-columns:1fr 1fr}



    /* v11.8.1: reliable mobile-menu stacking and layout escape */
    body.mobile-layout.mobile-tools-open{padding-top:calc(65px + env(safe-area-inset-top))!important}
  body.mobile-layout.mobile-tools-open .topbar{
      z-index:240;
      isolation:isolate;
    }
    body.mobile-layout .mobile-tools-backdrop{
      z-index:210;
    }
    body.mobile-layout .toolbar{
      z-index:250;
      isolation:isolate;
      pointer-events:auto;
    }
    .toast-stack,.toast{pointer-events:none!important}
body.mobile-layout main{z-index:auto!important}
body.mobile-layout .tab-panel.panel-entering{animation:none!important;opacity:1!important;transform:none!important}
body.mobile-layout .mobile-tools-toggle{
      position:relative;
      z-index:255;
    }
    .layout-escape-btn{
      display:none;
      position:fixed;
      right:14px;
      bottom:88px;
      z-index:270;
      min-height:44px;
      padding:10px 13px;
      border:1px solid rgba(210,177,116,.32);
      border-radius:14px;
      color:var(--gold-2);
      background:rgba(16,17,23,.96);
      box-shadow:0 14px 34px rgba(0,0,0,.34);
      backdrop-filter:blur(12px);
    }
    body.mobile-layout.layout-forced-mobile .layout-escape-btn{
      display:inline-flex;
      align-items:center;
      justify-content:center;
      gap:7px;
    }
    body.mobile-layout.mobile-tools-open .layout-escape-btn{
      display:inline-flex;
    }
    @media(max-width:760px){
      body.mobile-layout:not(.layout-forced-mobile) .layout-escape-btn{display:none}
    }

  /* v11.7.2: simplified distinctive fantasy cards */
    .character-card{
      padding:10px;
      border-radius:30px;
      background:linear-gradient(180deg,rgba(24,25,31,.96),rgba(17,18,23,.96));
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,rgba(255,255,255,.08));
      box-shadow:0 16px 40px rgba(0,0,0,.22);
    }
    .character-card .card-ambience,
    .character-card .card-corners,
    .character-card .card-shimmer,
    .character-card .card-motto{display:none !important}
    .character-card .portrait{
      height:220px; min-height:220px; margin:0; overflow:hidden;
      border-radius:24px 24px 18px 18px;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,transparent);
      background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01));
      box-shadow:inset 0 -60px 60px rgba(0,0,0,.18);
    }
    .character-card .portrait::before{content:none}
    .character-card .card-body{
      position:relative; z-index:3;
      margin:-18px 10px 4px; padding:18px 16px 15px;
      border-radius:22px;
      background:linear-gradient(180deg,rgba(246,242,233,.98),rgba(236,231,221,.96));
      color:#33261d;
      border:1px solid rgba(99,75,48,.16);
      box-shadow:0 14px 26px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.65);
    }
    .character-card .card-top h4,
    .character-card .card-top .subtitle,
    .character-card .summary,
    .character-card .quote,
    .character-card .character-vital strong,
    .character-card .character-vital span,
    .character-card .card-ribbon-copy small,
    .character-card .card-ribbon-copy strong,
    .character-card .card-identity-copy strong,
    .character-card .card-identity-copy small,
    .character-card .tag,
    .character-card .status{ color:#3a2b20; }
    .character-card .card-top .subtitle{ color:#6f5d4e; }
    .character-card .summary{ color:#46362b; }
    .character-card .quote{ color:#5e4a3d; background:rgba(120,92,60,.05); border:1px solid rgba(120,92,60,.10); }
    .character-card .status{
      background:rgba(255,255,255,.56);
      border:1px solid rgba(99,75,48,.16);
    }
    .character-card .tag,
    .character-card .character-vital{
      background:rgba(255,255,255,.42);
      border-color:rgba(99,75,48,.14);
    }
    .character-card .card-ribbon{
      margin:12px 0 10px;
      padding:9px 11px;
      border-radius:14px;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,rgba(99,75,48,.14));
      background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 12%,transparent),rgba(255,255,255,.38));
      box-shadow:none;
    }
    .character-card .card-ribbon-copy strong{
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#5a4125);
      font-size:10px; letter-spacing:.14em;
    }
    .character-card .card-ribbon-copy small{ margin-top:3px; color:#6d5847; font-size:12px; }
    .character-card .card-ribbon-sigil{
      width:36px;height:36px;border-radius:12px;font-size:16px;
      background:rgba(255,255,255,.64);
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#6a4a2a);
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 28%,transparent);
      box-shadow:none;
      animation:none !important;
      transform:none !important;
    }
    .character-card .card-actions .btn{
      border-color:rgba(99,75,48,.14);
      background:rgba(255,255,255,.44);
      color:#3a2b20;
    }
    .character-card .card-actions .btn.primary{
      background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 18%,rgba(255,255,255,.8)),rgba(255,255,255,.74));
      color:#3a2b20;
      box-shadow:none;
    }
    .character-card .card-identity{
      left:14px;right:14px;bottom:12px;padding:12px 14px;
      border-radius:16px; background:linear-gradient(180deg,rgba(13,14,18,.28),rgba(10,10,14,.72));
      backdrop-filter:blur(2px);
    }
    .character-card .card-mini-sigil{
      width:34px;height:34px;border-radius:12px;
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 34%,transparent);
      background:rgba(14,15,21,.7);
    }
    .character-card .theme-ornaments{ inset:0; overflow:visible; }
    .character-card .theme-ornaments span{ filter:none }
    .character-card .portrait-badge{
      width:46px;height:46px;top:16px;right:16px;border-radius:14px;
      background:rgba(17,19,24,.86);
      border:1px solid color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,transparent);
      box-shadow:0 8px 18px rgba(0,0,0,.22);
    }
    .character-card .portrait-badge::before{ font-size:18px; }
    .character-card .portrait-badge::after{ inset:6px; border-radius:10px; }
    .character-card .frame-banner{
      left:16px; top:14px; padding:6px 10px;
      border-radius:12px; font-size:9px; letter-spacing:.12em;
      box-shadow:none;
    }
    .character-card .card-frame-top,.character-card .card-frame-bottom,
    .character-card .frame-side-left,.character-card .frame-side-right,
    .character-card .frame-garland,.character-card .frame-spikes-top,.character-card .frame-spikes-bottom,
    .character-card .frame-crystals-left,.character-card .frame-crystals-right,
    .character-card .frame-column-left,.character-card .frame-column-right,
    .character-card .frame-crack,.character-card .frame-tear-left,.character-card .frame-tear-right,
    .character-card .portrait-runes,.character-card .frame-vine-left,.character-card .frame-vine-right,.character-card .frame-vine-bottom{opacity:.88}

    /* theme-specific simplified motifs */
    .frame-classic.character-card .card-frame-top,
    .frame-classic.character-card .card-frame-bottom{
      left:20px; right:20px; height:12px;
      background:linear-gradient(90deg,transparent 0 6%,color-mix(in srgb,var(--frame-accent,var(--gold)) 34%,transparent) 6% 12%,transparent 12% 88%,color-mix(in srgb,var(--frame-accent,var(--gold)) 34%,transparent) 88% 94%,transparent 94%);
      clip-path:polygon(0 100%,6% 0,12% 100%,88% 100%,94% 0,100% 100%);
    }
    .frame-classic.character-card .card-frame-top{ top:8px; }
    .frame-classic.character-card .card-frame-bottom{ bottom:8px; }

    .frame-royal.character-card .frame-column-left,
    .frame-royal.character-card .frame-column-right{
      top:20px; bottom:20px; width:18px; opacity:.72;
      background:linear-gradient(180deg,rgba(232,189,82,.22),rgba(255,255,255,.02) 16%,rgba(255,255,255,.01) 84%,rgba(232,189,82,.18));
      border:1px solid rgba(232,189,82,.18);
      box-shadow:none;
    }
    .frame-royal.character-card .frame-column-left{ left:6px; border-radius:14px 0 0 14px; }
    .frame-royal.character-card .frame-column-right{ right:6px; border-radius:0 14px 14px 0; }
    .frame-royal.character-card .frame-column-left::before,
    .frame-royal.character-card .frame-column-right::before,
    .frame-royal.character-card .frame-column-left::after,
    .frame-royal.character-card .frame-column-right::after{ left:2px; right:2px; height:5px; }
    .frame-royal.character-card .frame-banner{ background:linear-gradient(180deg,rgba(129,16,45,.9),rgba(92,12,34,.92)); }

    .frame-verdant.character-card .frame-vine-left,
    .frame-verdant.character-card .frame-vine-right{
      width:54px; height:118px; top:14px; opacity:.92;
      background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 88 160'%3E%3Cpath d='M14 150c14-10 20-22 20-40 0-18-9-30-18-40 21 3 35-9 39-26 1-6 2-12 1-18 12 12 15 25 14 40-2 17-9 30-24 38 11 0 21 8 26 18 5 11 5 23 0 36-6-7-12-13-21-16-9-4-19-5-28 0-4 2-7 5-9 8z' fill='none' stroke='%2376b36c' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cellipse cx='30' cy='84' rx='7' ry='10' fill='%2380bd75' transform='rotate(-40 30 84)'/%3E%3Cellipse cx='54' cy='48' rx='7' ry='10' fill='%2393cb87' transform='rotate(18 54 48)'/%3E%3Cellipse cx='59' cy='126' rx='7' ry='10' fill='%2388c37b' transform='rotate(-18 59 126)'/%3E%3C/svg%3E");
    }
    .frame-verdant.character-card .frame-vine-left{ left:-6px; }
    .frame-verdant.character-card .frame-vine-right{ right:-6px; transform:scaleX(-1); }
    .frame-verdant.character-card .frame-vine-bottom,
    .frame-verdant.character-card .frame-banner{ display:none; }

    .frame-arcane.character-card .portrait-runes{
      left:auto; right:12px; top:10px; width:68px; height:68px; transform:none;
      border-radius:50%; border:1px solid rgba(164,134,242,.28); box-shadow:none;
      background:radial-gradient(circle,rgba(164,134,242,.10),transparent 64%);
      animation:none !important;
    }
    .frame-arcane.character-card .portrait-runes::before{ inset:7px; border-width:1px; }
    .frame-arcane.character-card .portrait-runes::after{ font-size:8px; letter-spacing:.18em; }
    .frame-arcane.character-card .portrait-badge{ display:none; }
    .frame-arcane.character-card .card-frame-top,
    .frame-arcane.character-card .card-frame-bottom{
      left:22px; right:22px; height:10px;
      background:linear-gradient(90deg,transparent,rgba(164,134,242,.24) 15%,rgba(98,181,220,.18) 50%,rgba(164,134,242,.24) 85%,transparent);
    }
    .frame-arcane.character-card .card-frame-top{ top:10px; }
    .frame-arcane.character-card .card-frame-bottom{ bottom:10px; }

    .frame-infernal.character-card .frame-spikes-top,
    .frame-infernal.character-card .frame-spikes-bottom{
      left:18px; right:18px; height:14px; opacity:.8;
      background:linear-gradient(90deg,transparent 0 8%,rgba(224,82,88,.22) 8% 12%,transparent 12% 24%,rgba(240,138,60,.16) 24% 28%,transparent 28% 40%,rgba(224,82,88,.22) 40% 44%,transparent 44% 100%);
      clip-path:polygon(0 100%,8% 36%,16% 100%,28% 18%,36% 100%,50% 30%,64% 100%,76% 22%,84% 100%,100% 42%,100% 100%);
    }
    .frame-infernal.character-card .frame-spikes-top{ top:8px; }
    .frame-infernal.character-card .frame-spikes-bottom{ bottom:8px; }
    .frame-infernal.character-card .frame-banner{ background:linear-gradient(180deg,rgba(105,19,18,.92),rgba(69,14,13,.92)); }

    .frame-frost.character-card .frame-crystals-left,
    .frame-frost.character-card .frame-crystals-right{
      top:12px; bottom:auto; width:44px; height:76px; opacity:.88;
      background:linear-gradient(180deg,rgba(205,241,255,.34),rgba(143,212,237,.12),transparent);
    }
    .frame-frost.character-card .frame-crystals-left{ left:-4px; }
    .frame-frost.character-card .frame-crystals-right{ right:-4px; }
    .frame-frost.character-card .card-frame-top,
    .frame-frost.character-card .card-frame-bottom{
      left:24px; right:24px; height:8px;
      background:linear-gradient(90deg,transparent 0 8%,rgba(195,238,255,.28) 8% 12%,transparent 12% 88%,rgba(195,238,255,.28) 88% 92%,transparent 92%);
    }
    .frame-frost.character-card .card-frame-top{ top:10px; }
    .frame-frost.character-card .card-frame-bottom{ bottom:10px; }

    .frame-cursed.character-card .frame-crack{
      left:auto; right:22px; top:14px; bottom:14px; width:2px; transform:rotate(8deg);
      background:linear-gradient(180deg,transparent,rgba(211,67,84,.34) 24%,rgba(143,114,203,.28) 58%,transparent 86%);
    }
    .frame-cursed.character-card .frame-crack::before{ width:32px; top:54px; left:-14px; }
    .frame-cursed.character-card .frame-crack::after{ width:26px; top:108px; left:-10px; }
    .frame-cursed.character-card .frame-tear-left,
    .frame-cursed.character-card .frame-tear-right{
      top:18px; bottom:18px; width:16px; opacity:.75;
      background:linear-gradient(180deg,transparent,rgba(211,67,84,.08),transparent);
    }
    .frame-cursed.character-card .frame-banner{ background:linear-gradient(180deg,rgba(72,18,36,.92),rgba(44,12,24,.94)); }

    body.mobile-layout .character-card{ padding:8px; border-radius:24px; }
    body.mobile-layout .character-card .portrait{ height:204px; min-height:204px; border-radius:20px 20px 16px 16px; }
    body.mobile-layout .character-card .card-body{ margin:-14px 8px 4px; padding:14px 13px 14px; border-radius:18px; }
    body.mobile-layout .character-card .frame-banner{ top:12px; left:12px; }
    body.mobile-layout .character-card .portrait-badge{ top:12px; right:12px; width:40px; height:40px; }
    body.mobile-layout .character-card .portrait-badge::before{ font-size:15px; }
    body.mobile-layout .character-card .card-ribbon-copy small{ display:block; font-size:11px; }
    body.mobile-layout .character-card .summary{ -webkit-line-clamp:2; }
    body.mobile-layout .frame-verdant.character-card .frame-vine-left,
    body.mobile-layout .frame-verdant.character-card .frame-vine-right{ width:42px; height:92px; top:18px; }
    body.mobile-layout .frame-royal.character-card .frame-column-left,
    body.mobile-layout .frame-royal.character-card .frame-column-right{ width:14px; }
    body.mobile-layout .frame-frost.character-card .frame-crystals-left,
    body.mobile-layout .frame-frost.character-card .frame-crystals-right{ width:34px; height:58px; }
    body.mobile-layout .frame-arcane.character-card .portrait-runes{ width:54px; height:54px; right:10px; top:10px; }


  


    /* v11.9.0: v11.7.2 cards restored in a darker gothic palette */
    .character-card {
      background:linear-gradient(180deg,rgba(16,17,22,.98),rgba(10,11,15,.98));
      border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,#28262d);
      box-shadow:0 18px 44px rgba(0,0,0,.34),inset 0 0 24px rgba(255,255,255,.018);
    }
    .character-card .portrait {
      background:linear-gradient(180deg,rgba(24,25,31,.98),rgba(14,15,20,.98));
      border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 24%,rgba(255,255,255,.06));
      box-shadow:inset 0 -70px 68px rgba(0,0,0,.24);
    }
    .character-card .card-body {
      background:linear-gradient(180deg,rgba(35,34,37,.98),rgba(25,24,28,.98));
      color:#eee5d9;
      border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 15%,rgba(255,255,255,.08));
      box-shadow:0 14px 28px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.04);
    }
    .character-card .card-top h4,
    .character-card .card-ribbon-copy strong,
    .character-card .character-vital strong { color:#f1e7da; }
    .character-card .card-top .subtitle,
    .character-card .summary,
    .character-card .card-ribbon-copy small,
    .character-card .character-vital span { color:#bdb0a2; }
    .character-card .status,
    .character-card .tag,
    .character-card .character-vital {
      color:#ddd2c5;
      background:rgba(255,255,255,.035);
      border-color:rgba(255,255,255,.075);
    }
    .character-card .quote {
      color:#cdbfb2;
      background:rgba(255,255,255,.025);
      border-color:rgba(255,255,255,.06);
    }
    .character-card .card-ribbon {
      background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 12%,rgba(255,255,255,.025)),rgba(255,255,255,.02));
      border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 22%,rgba(255,255,255,.06));
    }
    .character-card .card-ribbon-copy strong {
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 72%,#f4e7d5);
    }
    .character-card .card-ribbon-sigil {
      background:rgba(11,12,17,.72);
      color:color-mix(in srgb,var(--frame-accent,var(--gold)) 82%,#fff0dc);
      border-color:color-mix(in srgb,var(--frame-accent,var(--gold)) 30%,rgba(255,255,255,.05));
      box-shadow:none;
      animation:none!important;
      transform:none!important;
    }
    .character-card .card-actions .btn {
      color:#ece2d6;
      background:rgba(255,255,255,.035);
      border-color:rgba(255,255,255,.075);
    }
    .character-card .card-actions .btn.primary {
      color:#fff0d9;
      background:linear-gradient(180deg,color-mix(in srgb,var(--frame-accent,var(--gold)) 16%,rgba(255,255,255,.035)),rgba(255,255,255,.035));
      box-shadow:none;
    }
    .character-card .card-identity {
      background:linear-gradient(180deg,rgba(8,9,13,.24),rgba(7,8,12,.78));
    }
    .character-card .card-mini-sigil {
      background:rgba(8,9,13,.76);
      box-shadow:none;
    }
    .character-card .card-motto { display:none; }
    .character-card .card-shimmer { opacity:.42; }
    body.calm-mode .character-card .card-shimmer { display:none; }

    body.mobile-layout .character-card .card-body {
      background:linear-gradient(180deg,rgba(35,34,37,.99),rgba(24,23,27,.99));
    }


    /* v11.9.0 — elegant fantasy polish, local maps and restrained motion */
    :root{
      --ease-ritual:cubic-bezier(.22,.72,.25,1);
      --ease-quick:cubic-bezier(.2,.72,.3,1);
    }

    /* Character cards: v11.8.2 personality restored, only duplicate/noisy preview details reduced. */
    #characterGrid{gap:22px;overflow:visible;padding-top:10px}
    #characterGrid .character-card{
      border-radius:28px;
      box-shadow:0 20px 46px rgba(0,0,0,.36),inset 0 1px 0 rgba(255,255,255,.025);
      transition:transform .34s var(--ease-ritual),box-shadow .34s var(--ease-ritual),border-color .34s ease;
    }
    #characterGrid .character-card:hover{
      transform:translateY(-5px);
      box-shadow:0 28px 62px rgba(0,0,0,.43),0 0 32px color-mix(in srgb,var(--frame-accent,var(--gold)) 8%,transparent);
    }
    #characterGrid .character-card .theme-ornaments{opacity:.8;transition:opacity .3s ease,filter .3s ease}
    #characterGrid .character-card:hover .theme-ornaments{opacity:1;filter:brightness(1.07)}
    #characterGrid .character-card .card-identity{
      left:14px;right:14px;bottom:12px;
      padding:10px 12px;
      background:linear-gradient(180deg,rgba(8,10,14,.18),rgba(7,8,12,.82));
      backdrop-filter:blur(7px);
    }
    #characterGrid .character-card .card-identity-copy strong{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#eadfce}
    #characterGrid .character-card .card-identity-copy small{font-size:9px;opacity:.78}
    #characterGrid .character-card .card-body{padding-bottom:15px}
    #characterGrid .character-card .card-ribbon{margin:11px 0 9px;padding:8px 10px}
    #characterGrid .character-card .card-ribbon-copy small{font-size:11px;line-height:1.35}
    #characterGrid .character-card .summary{margin:11px 0 13px;-webkit-line-clamp:3}
    #characterGrid .character-card .tags{margin-top:10px;gap:5px}
    #characterGrid .character-card .tag{padding:4px 7px;font-size:10px;background:rgba(255,255,255,.026)}
    #characterGrid .character-card .character-vitals{gap:7px;margin:11px 0 2px}
    #characterGrid .character-card .character-vital{padding:8px 9px;border-radius:11px}
    #characterGrid .character-card .character-vital strong{font-size:18px}
    #characterGrid .character-card .character-vital span{font-size:9px}
    #characterGrid .character-card .card-actions{gap:7px;margin-top:13px}
    #characterGrid .character-card .card-actions .btn{border-radius:10px}
    body.calm-mode #characterGrid .character-card:hover{transform:none}

    /* Navigation hierarchy and panel transitions. */
    .tabs{box-shadow:0 12px 34px rgba(0,0,0,.18);scrollbar-width:none}
    .tabs::-webkit-scrollbar{display:none}
    .tab{position:relative;transition:color .2s ease,background .2s ease,transform .2s ease}
    .tab::after{content:"";position:absolute;left:18px;right:18px;bottom:4px;height:1px;transform:scaleX(0);background:linear-gradient(90deg,transparent,var(--gold),transparent);transition:transform .28s var(--ease-ritual)}
    .tab.active::after{transform:scaleX(1)}
    .tab:hover{transform:translateY(-1px)}
    .tab-panel.panel-entering{animation:panelRitualIn .48s var(--ease-ritual) both}
    @keyframes panelRitualIn{from{opacity:0;transform:translateY(10px);filter:blur(2px)}to{opacity:1;transform:none;filter:none}}
    .modal-backdrop.open{animation:veilIn .24s ease both}
    .modal-backdrop.open .modal{animation:modalRitualIn .38s var(--ease-ritual) both;transform-origin:50% 18%}
    @keyframes veilIn{from{opacity:0}to{opacity:1}}
    @keyframes modalRitualIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
    .hero-card{transition:border-color .4s ease,box-shadow .4s ease}
    body:not(.calm-mode):not(.effects-off) .hero-card::after{animation:heroSigilDrift 12s ease-in-out infinite}
    @keyframes heroSigilDrift{0%,100%{transform:rotate(12deg) translateY(0);opacity:.82}50%{transform:rotate(15deg) translateY(8px);opacity:1}}
    body.calm-mode .tab-panel.panel-entering,body.effects-off .tab-panel.panel-entering{animation:none}
    body.calm-mode .modal-backdrop.open,body.calm-mode .modal-backdrop.open .modal,body.effects-off .modal-backdrop.open,body.effects-off .modal-backdrop.open .modal{animation:none}

    /* Character of the day note. */
    .daily-character-label{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
    .daily-character-note{font-size:10px;letter-spacing:.04em;text-transform:none;color:var(--muted);opacity:.85}

    /* Local place maps. */
    .local-map-teaser{margin:20px 0 4px;padding:14px;border:1px solid color-mix(in srgb,var(--place-color,var(--gold)) 24%,var(--line));border-radius:15px;background:linear-gradient(135deg,color-mix(in srgb,var(--place-color,var(--gold)) 7%,rgba(255,255,255,.025)),rgba(255,255,255,.018))}
    .local-map-teaser-head{display:flex;justify-content:space-between;gap:12px;align-items:center}
    .local-map-teaser strong{font-family:Georgia,serif;font-size:18px}
    .local-map-teaser span{display:block;margin-top:4px;color:var(--muted);font-size:12px}
    .local-map-modal{width:min(1180px,100%)}
    .local-map-breadcrumbs{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}
    .local-map-breadcrumbs button{border:0;background:transparent;color:var(--gold-2);padding:0;cursor:pointer}
    .local-map-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:16px;padding:18px}
    .local-map-stage-shell{overflow:auto;border:1px solid var(--line);border-radius:18px;background:#0d0e13;box-shadow:inset 0 0 45px rgba(0,0,0,.38)}
    .local-map-stage{position:relative;width:920px;height:580px;overflow:hidden;background:
      radial-gradient(circle at 24% 28%,rgba(210,177,116,.11),transparent 24%),
      radial-gradient(circle at 76% 70%,rgba(94,103,148,.10),transparent 27%),
      repeating-radial-gradient(ellipse at center,rgba(210,177,116,.032) 0 1px,transparent 1px 34px),
      linear-gradient(135deg,#24201b,#13151c 58%,#101116);
      background-size:cover;background-position:center;isolation:isolate}
    .local-map-stage::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px);background-size:46px 46px;mix-blend-mode:screen;opacity:.45}
    .local-map-stage::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:4;box-shadow:inset 0 0 90px rgba(0,0,0,.62)}
    .local-map-point{--point-color:var(--gold);position:absolute;z-index:5;transform:translate(-50%,-50%);border:0;background:transparent;color:var(--ink);min-width:112px;text-align:center;filter:drop-shadow(0 8px 12px rgba(0,0,0,.55));transition:transform .22s var(--ease-quick),filter .22s ease,opacity .2s ease}
    .local-map-point:hover,.local-map-point.active{transform:translate(-50%,-50%) scale(1.08);filter:drop-shadow(0 0 18px color-mix(in srgb,var(--point-color) 62%,transparent))}
    .local-map-point-mark{position:relative;width:30px;height:30px;margin:0 auto 5px;border-radius:50%;border:2px solid color-mix(in srgb,var(--point-color) 68%,white);background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--point-color) 72%,white),var(--point-color) 55%,color-mix(in srgb,var(--point-color) 70%,black));box-shadow:0 0 0 6px color-mix(in srgb,var(--point-color) 12%,transparent)}
    .local-map-point-mark::after{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;border-radius:50%;background:#11131a;transform:translate(-50%,-50%)}
    .local-map-point-label{display:inline-block;max-width:170px;padding:5px 8px;border-radius:9px;border:1px solid color-mix(in srgb,var(--point-color) 22%,var(--line));background:rgba(12,13,18,.86);font-size:11px;line-height:1.2;backdrop-filter:blur(5px)}
    body.editing.role-chronicler .local-map-point,body.editing.role-editor .local-map-point,body.editing.role-owner .local-map-point{cursor:grab;touch-action:none}
    .local-map-point.dragging{cursor:grabbing;z-index:12;transform:translate(-50%,-50%) scale(1.12)}
    .local-map-stage.is-dragging .local-map-point:not(.dragging){opacity:.48}
    .local-map-sidebar{display:flex;min-height:580px;flex-direction:column;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,rgba(31,30,36,.95),rgba(19,20,26,.97));overflow:hidden}
    .local-map-sidebar-head{padding:18px;border-bottom:1px solid var(--line)}
    .local-map-sidebar-head h4{margin:6px 0 5px;font:600 25px/1.05 Georgia,serif}
    .local-map-sidebar-head p{margin:0;color:var(--muted);font-size:13px;line-height:1.45}
    .local-point-list{display:grid;gap:8px;padding:12px;overflow:auto;max-height:288px}
    .local-point-list button{width:100%;text-align:left;border:1px solid var(--line);border-left:3px solid var(--point-color,var(--gold));border-radius:11px;padding:10px;background:rgba(255,255,255,.022);color:var(--ink)}
    .local-point-list button.active{background:color-mix(in srgb,var(--point-color,var(--gold)) 9%,rgba(255,255,255,.025));border-color:color-mix(in srgb,var(--point-color,var(--gold)) 28%,var(--line))}
    .local-point-list strong,.local-point-list small{display:block}.local-point-list small{margin-top:3px;color:var(--muted)}
    .local-point-detail{margin-top:auto;padding:16px;border-top:1px solid var(--line);min-height:180px}
    .local-point-detail h5{margin:6px 0 8px;font:600 22px Georgia,serif}
    .local-point-detail p{margin:0;color:var(--muted);line-height:1.5}
    .local-map-empty{position:absolute;z-index:3;left:50%;top:50%;transform:translate(-50%,-50%);width:min(430px,80%);padding:18px;border:1px dashed var(--line);border-radius:14px;background:rgba(12,13,18,.72);color:var(--muted);text-align:center;backdrop-filter:blur(8px)}
    .local-map-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:0 18px 18px}
    .local-map-hint{margin-left:auto;color:var(--muted);font-size:11px}
    @media(max-width:900px){.local-map-layout{grid-template-columns:1fr}.local-map-sidebar{min-height:auto}.local-point-list{max-height:220px}.local-map-stage{width:820px;height:520px}}
    @media(max-width:620px){.local-map-layout{padding:10px;gap:10px}.local-map-toolbar{padding:0 10px 12px}.local-map-stage{width:760px;height:480px}.local-map-sidebar-head{padding:14px}.local-map-hint{width:100%;margin-left:0}}

    /* Audio controls. */
    .audio-button{position:relative}
    .audio-button.audio-live{color:var(--gold-2);border-color:color-mix(in srgb,var(--gold) 46%,var(--line));background:rgba(210,177,116,.08)}
    .audio-button.audio-live::after{content:"";position:absolute;right:6px;top:6px;width:5px;height:5px;border-radius:50%;background:var(--gold-2);box-shadow:0 0 10px var(--gold)}
    .audio-panel{display:grid;gap:14px}
    .audio-option{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.023)}
    .audio-option strong,.audio-option small{display:block}.audio-option small{margin-top:4px;color:var(--muted);line-height:1.4}
    .audio-option input[type="checkbox"]{width:20px;height:20px;accent-color:var(--gold)}
    .audio-volume{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}.audio-volume input{width:100%;accent-color:var(--gold)}
    .audio-now{padding:12px 14px;border-left:2px solid var(--gold);background:rgba(210,177,116,.05);color:var(--muted);font-size:12px;line-height:1.5}

    @media(prefers-reduced-motion:reduce){.tab-panel.panel-entering,.modal-backdrop.open,.modal-backdrop.open .modal,.hero-card::after{animation:none!important}.character-card,.local-map-point{transition:none!important}}

  

    /* v11.10 — единый шаблон карточек, масштабируемые связи и живая атмосфера */
    #characterGrid { align-items: stretch; }
    .character-card {
      --frame-accent: var(--gold);
      --theme-overlay: radial-gradient(circle at 84% 14%, color-mix(in srgb,var(--frame-accent) 18%,transparent), transparent 34%);
      display:flex;
      flex-direction:column;
      height:100%;
      min-height:620px;
      border-radius:24px;
      background:
        var(--theme-overlay),
        linear-gradient(180deg,rgba(35,32,40,.98),rgba(18,19,25,.985));
      box-shadow:0 18px 42px rgba(0,0,0,.27),inset 0 0 0 1px color-mix(in srgb,var(--frame-accent) 13%,transparent);
    }
    .character-card::before {
      content:"" !important;
      position:absolute !important;
      inset:0 !important;
      z-index:0 !important;
      pointer-events:none !important;
      border-radius:inherit !important;
      border:1px solid color-mix(in srgb,var(--frame-accent) 28%,transparent) !important;
      box-shadow:inset 0 1px 0 rgba(255,255,255,.035),inset 0 0 34px color-mix(in srgb,var(--frame-accent) 5%,transparent) !important;
      background:none !important;
    }
    .character-card::after {
      content:"" !important;
      position:absolute !important;
      left:28px !important;
      right:28px !important;
      top:0 !important;
      height:3px !important;
      z-index:7 !important;
      border-radius:0 0 4px 4px !important;
      background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--frame-accent) 75%,#fff 10%),transparent) !important;
      opacity:.78 !important;
      animation:cardAccentBreath 6s ease-in-out infinite !important;
      pointer-events:none !important;
    }
    @keyframes cardAccentBreath { 0%,100%{opacity:.48;filter:brightness(.9)} 50%{opacity:.92;filter:brightness(1.18)} }
    .character-card .portrait {
      height:238px;
      min-height:238px;
      aspect-ratio:auto;
      border-bottom:1px solid color-mix(in srgb,var(--frame-accent) 24%,transparent);
      background:#15161d;
    }
    .character-card .portrait::before {
      content:"" !important;
      position:absolute !important;
      inset:0 !important;
      z-index:2 !important;
      pointer-events:none !important;
      display:block !important;
      background:var(--theme-pattern,linear-gradient(135deg,transparent,color-mix(in srgb,var(--frame-accent) 7%,transparent))) !important;
      opacity:.72 !important;
      border:0 !important;
      border-radius:0 !important;
      box-shadow:none !important;
      transform:none !important;
    }
    .character-card .portrait::after { z-index:3; }
    .character-card .theme-ornaments { display:none !important; }
    .character-card .card-mini-sigil,
    .character-card .card-ribbon-sigil { display:none !important; }
    .character-card .card-identity { z-index:5; left:17px; right:17px; bottom:14px; }
    .character-card .card-identity-copy small {
      display:inline-flex;
      align-items:center;
      min-height:26px;
      padding:5px 9px;
      border:1px solid color-mix(in srgb,var(--frame-accent) 42%,transparent);
      border-radius:999px;
      color:color-mix(in srgb,var(--frame-accent) 70%,#fff);
      background:rgba(9,10,14,.67);
      backdrop-filter:blur(8px);
      letter-spacing:.14em;
    }
    .character-card .card-identity-copy strong { display:none; }
    .character-card .card-body {
      position:relative;
      z-index:2;
      display:flex;
      flex:1;
      flex-direction:column;
      padding:18px;
    }
    .character-card .card-top { min-height:58px; }
    .character-card .card-top h4 { color:#f4ece2 !important; }
    .character-card .card-ribbon {
      min-height:38px;
      margin:12px 0 0;
      padding:9px 11px;
      border:1px solid color-mix(in srgb,var(--frame-accent) 20%,transparent);
      border-radius:12px;
      background:linear-gradient(90deg,color-mix(in srgb,var(--frame-accent) 8%,transparent),rgba(255,255,255,.018));
    }
    .character-card .card-ribbon-copy strong { color:color-mix(in srgb,var(--frame-accent) 66%,#fff);font-size:11px;letter-spacing:.12em;text-transform:uppercase; }
    .character-card .card-ribbon-copy small { display:none; }
    .character-card .summary {
      min-height:84px;
      margin:14px 0 10px;
      display:-webkit-box;
      -webkit-box-orient:vertical;
      -webkit-line-clamp:4;
      overflow:hidden;
    }
    .card-preview-quote {
      position:relative;
      min-height:70px;
      margin:0 0 13px;
      padding:13px 14px 13px 29px;
      border:1px solid color-mix(in srgb,var(--frame-accent) 22%,transparent);
      border-left:2px solid color-mix(in srgb,var(--frame-accent) 70%,#fff 4%);
      border-radius:13px;
      color:color-mix(in srgb,var(--frame-accent) 34%,#e9dfd4);
      background:linear-gradient(120deg,color-mix(in srgb,var(--frame-accent) 8%,transparent),rgba(255,255,255,.018));
      font:italic 14px/1.46 Georgia,serif;
      display:-webkit-box;
      -webkit-box-orient:vertical;
      -webkit-line-clamp:3;
      overflow:hidden;
    }
    .card-preview-quote::before {
      content:'“';
      position:absolute;
      left:10px;
      top:4px;
      color:color-mix(in srgb,var(--frame-accent) 64%,transparent);
      font:700 28px/1 Georgia,serif;
    }
    .character-card .character-vitals { margin:0 0 12px; }
    .character-card .tags { min-height:28px; margin-top:0; }
    .character-card .card-actions { margin-top:auto; padding-top:15px; }
    .character-card:hover { transform:translateY(-4px);box-shadow:0 24px 54px rgba(0,0,0,.34),0 0 28px color-mix(in srgb,var(--frame-accent) 9%,transparent); }

    .frame-classic { --frame-accent:#d2b174;--theme-pattern:linear-gradient(135deg,transparent 0 72%,rgba(210,177,116,.06)); }
    .frame-royal { --frame-accent:#e8bd52;--theme-pattern:linear-gradient(90deg,rgba(232,189,82,.07) 1px,transparent 1px),linear-gradient(rgba(232,189,82,.04) 1px,transparent 1px);background-size:34px 34px; }
    .frame-infernal { --frame-accent:#e05258;--theme-pattern:radial-gradient(circle at 80% 16%,rgba(255,118,55,.16),transparent 26%),linear-gradient(150deg,transparent 64%,rgba(224,82,88,.09)); }
    .frame-arcane { --frame-accent:#a486f2;--theme-pattern:radial-gradient(circle at 78% 18%,transparent 0 24px,rgba(164,134,242,.15) 25px 26px,transparent 27px),radial-gradient(circle at 78% 18%,transparent 0 37px,rgba(143,212,237,.08) 38px 39px,transparent 40px); }
    .frame-verdant { --frame-accent:#79b982;--theme-pattern:radial-gradient(ellipse at 8% 12%,rgba(121,185,130,.13),transparent 24%),radial-gradient(ellipse at 92% 28%,rgba(121,185,130,.09),transparent 22%); }
    .frame-frost { --frame-accent:#8fd4ed;--theme-pattern:linear-gradient(145deg,transparent 64%,rgba(143,212,237,.13)),linear-gradient(35deg,transparent 72%,rgba(225,248,255,.08)); }
    .frame-cursed { --frame-accent:#d34354;--theme-pattern:linear-gradient(104deg,transparent 0 76%,rgba(211,67,84,.12) 76.5% 77%,transparent 77.5%),radial-gradient(circle at 83% 20%,rgba(121,77,151,.13),transparent 27%); }
    .frame-celestial { --frame-accent:#e6d58f;--theme-pattern:radial-gradient(circle at 18% 20%,rgba(255,245,190,.65) 0 1px,transparent 2px),radial-gradient(circle at 76% 16%,rgba(255,245,190,.45) 0 1px,transparent 2px),radial-gradient(circle at 64% 44%,rgba(212,224,255,.42) 0 1px,transparent 2px),linear-gradient(145deg,rgba(65,74,125,.10),transparent 58%);background-size:73px 67px,91px 83px,117px 101px,auto; }
    .frame-shadow { --frame-accent:#8f78ba;--theme-pattern:radial-gradient(circle at 82% 18%,rgba(106,75,145,.20),transparent 30%),linear-gradient(120deg,rgba(13,11,20,.32),transparent 54%); }
    .frame-storm { --frame-accent:#78a9d2;--theme-pattern:linear-gradient(125deg,transparent 52%,rgba(120,169,210,.14) 53% 54%,transparent 55%),linear-gradient(125deg,transparent 69%,rgba(217,238,255,.08) 70% 70.5%,transparent 71%); }
    .frame-tide { --frame-accent:#65b7b1;--theme-pattern:radial-gradient(ellipse at 90% 28%,transparent 0 27px,rgba(101,183,177,.13) 28px 30px,transparent 31px),radial-gradient(ellipse at 75% 40%,transparent 0 42px,rgba(101,183,177,.07) 43px 45px,transparent 46px); }
    .frame-dawn { --frame-accent:#e6a55f;--theme-pattern:radial-gradient(circle at 84% 18%,rgba(255,190,100,.19),transparent 28%),linear-gradient(145deg,transparent 65%,rgba(230,165,95,.08)); }

    .relation-network-tools { display:flex;align-items:center;gap:6px;margin-left:auto; }
    .relation-network-tools .network-zoom-label { min-width:48px;text-align:center;color:var(--gold-2);font-size:11px;font-variant-numeric:tabular-nums; }
    .network {
      min-height:620px;
      max-height:76vh;
      overflow:auto;
      border:1px solid rgba(210,177,116,.12);
      background:
        radial-gradient(circle at center,color-mix(in srgb,var(--gold) 6%,transparent),transparent 56%),
        linear-gradient(rgba(210,177,116,.025) 1px,transparent 1px),
        linear-gradient(90deg,rgba(210,177,116,.022) 1px,transparent 1px);
      background-size:auto,38px 38px,38px 38px;
      scrollbar-color:rgba(210,177,116,.24) transparent;
    }
    .network svg { display:block;width:auto;min-width:100%;height:auto;min-height:100%;max-width:none;transition:width .24s ease,height .24s ease; }
    .network .edge { fill:none;filter:drop-shadow(0 0 4px rgba(0,0,0,.42));transition:opacity .2s ease,stroke-width .2s ease; }
    .network .edge:hover { filter:drop-shadow(0 0 7px currentColor); }
    .network .node { animation:networkNodeFloat 7s ease-in-out infinite;transform-box:fill-box;transform-origin:center; }
    .network .node:nth-of-type(3n) { animation-delay:-2.1s; }
    .network .node:nth-of-type(4n) { animation-delay:-4.2s; }
    .network .node circle { fill:rgba(35,32,43,.98);stroke-width:1.6;transition:.22s ease; }
    .network .node:hover circle { stroke-width:3;filter:drop-shadow(0 0 11px rgba(210,177,116,.42)); }
    @keyframes networkNodeFloat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-3px)} }

    .panel-entering { animation:panelRuneReveal .54s cubic-bezier(.2,.8,.2,1); }
    @keyframes panelRuneReveal { from{opacity:0;transform:translateY(9px);filter:blur(3px)} to{opacity:1;transform:none;filter:none} }
    .modal-backdrop.open .modal { animation:modalSealOpen .34s cubic-bezier(.2,.8,.2,1); }
    @keyframes modalSealOpen { from{opacity:0;transform:translateY(12px) scale(.985)} to{opacity:1;transform:none} }
    .map-pin-mark,.local-map-point-mark { animation:markerBreath 4.8s ease-in-out infinite; }
    @keyframes markerBreath { 0%,100%{box-shadow:0 0 0 5px color-mix(in srgb,var(--pin-color,var(--point-color,var(--gold))) 16%,transparent)} 50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--pin-color,var(--point-color,var(--gold))) 6%,transparent),0 0 18px color-mix(in srgb,var(--pin-color,var(--point-color,var(--gold))) 24%,transparent)} }
    .btn.primary { position:relative;overflow:hidden; }
    .btn.primary::after { content:"";position:absolute;inset:-60% 55% -60% -45%;transform:skewX(-20deg) translateX(-130%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.10),transparent);transition:transform .75s ease;pointer-events:none; }
    .btn.primary:hover::after { transform:skewX(-20deg) translateX(310%); }
    body[data-active-tab="places"] .mote { background:#8fcfc6; }
    body[data-active-tab="relationships"] .mote { background:#c59be8; }
    body[data-active-tab="threads"],body[data-active-tab="board"] { --ambient-tab-tone:rgba(129,93,170,.10); }
    body[data-active-tab="timeline"] { --ambient-tab-tone:rgba(93,128,176,.09); }
    .ambient::after { content:"";position:absolute;inset:0;background:radial-gradient(circle at 74% 22%,var(--ambient-tab-tone,rgba(210,177,116,.055)),transparent 34%);transition:background 1.1s ease; }
    .ambient::before { content:""; position:absolute; inset:0; pointer-events:none; background-image:var(--section-silhouette,none); background-repeat:no-repeat; background-position:center bottom; background-size:min(1180px,92vw) auto; opacity:.17; filter:saturate(.92); mask-image:linear-gradient(to bottom, transparent 0%, black 16%, black 78%, transparent 98%); transition:opacity .8s ease, background-position .8s ease, filter .8s ease; }
    body.mobile-layout .ambient::before { background-size:160vw auto; opacity:.11; }


    .oracle-actions { display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:stretch; }
    .oracle-action { border:1px solid var(--line);border-radius:16px;padding:13px;background:rgba(255,255,255,.022);display:grid;align-content:space-between;gap:10px; }
    .rune-face { width:72px;height:72px;margin:0 auto;display:grid;place-items:center;border:1px solid rgba(210,177,116,.34);border-radius:50%;color:var(--gold-2);background:radial-gradient(circle,rgba(210,177,116,.14),rgba(35,26,43,.78));font:700 31px Georgia,serif;box-shadow:inset 0 0 18px rgba(210,177,116,.08),0 12px 24px rgba(0,0,0,.25);transition:.35s ease; }
    .rune-face.drawing { transform:rotate(180deg) scale(.82);filter:blur(1px); }
    .rune-reading { min-height:38px;color:var(--muted);font-size:12px;line-height:1.45;text-align:center; }
    .magic-spark { position:fixed;z-index:1000;pointer-events:none;color:var(--spark-color,var(--gold-2));font:16px Georgia,serif;text-shadow:0 0 12px currentColor;animation:magicSparkFly .85s ease-out forwards; }
    @keyframes magicSparkFly { from{opacity:1;transform:translate(-50%,-50%) scale(.6) rotate(0)} to{opacity:0;transform:translate(calc(-50% + var(--spark-x)),calc(-50% + var(--spark-y))) scale(1.35) rotate(var(--spark-r))} }

    .audio-track-select { width:220px;max-width:100%; }
    .audio-now strong { color:var(--gold-2); }
    .audio-live::before { animation:audioPulse 1.8s ease-in-out infinite; }
    @keyframes audioPulse { 0%,100%{opacity:.45}50%{opacity:1;text-shadow:0 0 12px var(--gold)} }

    body.calm-mode .character-card::after,
    body.calm-mode .network .node,
    body.calm-mode .map-pin-mark,
    body.calm-mode .local-map-point-mark,
    body.calm-mode .ambient::after { animation:none !important; }
    body.calm-mode .btn.primary::after { display:none; }

    @media (max-width:760px){
      .character-card{min-height:590px}
      .character-card .portrait{height:220px;min-height:220px}
      .card-preview-quote{min-height:62px;-webkit-line-clamp:2}
      .relation-network-tools{width:100%;margin-left:0;justify-content:flex-start}
      .network{min-height:500px;max-height:68vh}
      .oracle-actions{grid-template-columns:1fr}
    }

  
/* v12.1.2 foundation — cinematic section scenes, generous hit targets and living card flourishes */
.ambient::before{
  background-image:var(--section-scene,none)!important;
  background-position:center 48%!important;
  background-size:cover!important;
  opacity:.34!important;
  filter:saturate(.82) contrast(1.05) drop-shadow(0 18px 55px rgba(0,0,0,.34))!important;
  mask-image:linear-gradient(to bottom,rgba(0,0,0,.76) 0%,#000 18%,#000 82%,transparent 100%)!important;
}
body.mobile-layout .ambient::before{background-size:auto 118vh!important;background-position:center 42%!important;opacity:.24!important}
.network .edge{pointer-events:none}
.network .edge-hit{fill:none;stroke:rgba(255,255,255,.001);stroke-width:18;pointer-events:stroke;cursor:help}
.network .edge-hit:hover + .edge,.network .edge.edge-sounding{opacity:1;stroke-width:4!important;filter:drop-shadow(0 0 7px currentColor)}
@keyframes flourishGlow{0%,100%{opacity:.44;filter:brightness(.88) drop-shadow(0 0 6px color-mix(in srgb,var(--theme-primary) 18%,transparent))}50%{opacity:.86;filter:brightness(1.25) drop-shadow(0 0 16px color-mix(in srgb,var(--theme-primary) 44%,transparent))}}
@keyframes flourishFlicker{0%,100%{opacity:.48;filter:brightness(.9)}16%{opacity:.9;filter:brightness(1.35)}24%{opacity:.58}54%{opacity:.94;filter:brightness(1.16)}71%{opacity:.5}}
.frame-classic .theme-flourish{animation:flourishGlow 5.8s ease-in-out infinite}
.frame-royal .theme-flourish{animation:flourishGlow 4.5s ease-in-out infinite}
.frame-infernal .theme-flourish{animation:flourishFlicker 2.7s steps(6,end) infinite}
.frame-verdant .theme-flourish{animation:flourishGlow 6.4s ease-in-out infinite}
.frame-frost .theme-flourish{animation:flourishGlow 5.1s ease-in-out infinite}
.frame-cursed .theme-flourish{animation:flourishFlicker 3.8s steps(5,end) infinite}
.frame-shadow .theme-flourish{animation:flourishGlow 6.8s ease-in-out infinite}
.frame-storm .theme-flourish{animation:flourishFlicker 2.2s steps(5,end) infinite}



/* v12.1.2 — Living Codex: semantic lore, books, cross-links and immersion */
:root{--codex-paper:#d9c59d;--codex-ink:#352719;--codex-red:#7d293e;--codex-green:#50765b;--codex-blue:#4f7295}
.codex-button{font-family:Georgia,serif;font-size:18px}
.v12-immersive-exit{position:fixed;right:20px;top:18px;z-index:2400;display:none;box-shadow:0 12px 35px rgba(0,0,0,.5)}
body.immersive-mode .v12-immersive-exit{display:inline-flex}
body.immersive-mode .topbar,body.immersive-mode .shell>.tabs,body.immersive-mode .edit-banner,body.immersive-mode footer{opacity:0;pointer-events:none;transform:translateY(-14px)}
body.immersive-mode .topbar,body.immersive-mode .shell>.tabs,body.immersive-mode .edit-banner,body.immersive-mode footer{transition:opacity .45s ease,transform .45s ease}
body.immersive-mode .ambient::before{opacity:.42!important;filter:saturate(1.08) contrast(1.05)}
body.immersive-mode main{padding-top:24px}
body.immersive-mode .tab-panel:not([hidden])>.shell{max-width:1480px}

.chapter-transition{position:fixed;inset:0;z-index:2300;pointer-events:none;display:grid;place-items:center;opacity:0;background:radial-gradient(circle at center,rgba(30,22,32,.42),rgba(7,7,10,.0) 58%);transition:opacity .18s ease}
.chapter-transition.active{opacity:1}
.chapter-transition-card{min-width:min(420px,78vw);padding:22px 30px;text-align:center;border:1px solid rgba(210,177,116,.28);border-radius:24px;background:rgba(12,12,18,.74);backdrop-filter:blur(16px);box-shadow:0 30px 80px rgba(0,0,0,.42);transform:translateY(10px) scale(.97);transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .35s ease}
.chapter-transition.active .chapter-transition-card{transform:none}
.chapter-transition-glyph{font:42px/1 Georgia,serif;color:var(--gold-2);text-shadow:0 0 30px color-mix(in srgb,var(--gold) 50%,transparent)}
.chapter-transition-card strong{display:block;margin-top:10px;font:600 20px Georgia,serif;color:#f3e6cf}.chapter-transition-card small{display:block;margin-top:5px;color:var(--muted);letter-spacing:.08em}

.semantic-groups{display:grid;gap:8px;margin:12px 0 2px}.semantic-group{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}.semantic-group-label{min-width:86px;padding-top:5px;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.13em}.semantic-chip{appearance:none;border:1px solid color-mix(in srgb,var(--chip-color,var(--gold)) 28%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--chip-color,var(--gold)) 8%,rgba(255,255,255,.025));color:color-mix(in srgb,var(--chip-color,var(--gold)) 28%,#f2e8df);padding:5px 9px;font:inherit;font-size:10px;line-height:1.15;cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease}.semantic-chip:hover,.semantic-chip:focus-visible{transform:translateY(-1px);border-color:color-mix(in srgb,var(--chip-color,var(--gold)) 66%,#fff 4%);background:color-mix(in srgb,var(--chip-color,var(--gold)) 14%,rgba(255,255,255,.03));box-shadow:0 8px 22px color-mix(in srgb,var(--chip-color,var(--gold)) 10%,transparent);outline:none}.semantic-chip .chip-icon{margin-right:4px;color:var(--chip-color,var(--gold))}
.alias-line{margin:4px 0 0;color:var(--muted);font-size:10px;font-style:italic}.place-danger{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;border:1px solid color-mix(in srgb,var(--danger-color,#d2b174) 42%,transparent);background:color-mix(in srgb,var(--danger-color,#d2b174) 9%,transparent);color:color-mix(in srgb,var(--danger-color,#d2b174) 42%,#efe6dc);font-size:10px}.place-glyph{position:absolute;right:12px;top:12px;width:38px;height:38px;border-radius:13px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--place-color,var(--gold)) 35%,transparent);background:rgba(9,10,14,.76);color:var(--place-color,var(--gold));font:19px Georgia,serif;box-shadow:0 0 20px color-mix(in srgb,var(--place-color,var(--gold)) 12%,transparent)}.place-card{position:relative}

.lore-link{appearance:none;border:0;border-bottom:1px dotted color-mix(in srgb,var(--gold) 70%,transparent);padding:0 2px;background:linear-gradient(180deg,transparent 56%,color-mix(in srgb,var(--gold) 11%,transparent) 57%);color:var(--gold-2);font:inherit;cursor:pointer;text-decoration:none}.lore-link:hover,.lore-link:focus-visible{color:#fff0c5;border-bottom-style:solid;outline:none}.lore-link.missing{color:#c77f87;border-bottom-color:#c77f87;cursor:help}.wiki-hint{margin-top:5px;color:var(--muted);font-size:10px}.wiki-hint code{color:var(--gold-2);background:rgba(255,255,255,.04);padding:1px 5px;border-radius:5px}
.entity-peek{position:fixed;z-index:2600;width:min(320px,calc(100vw - 28px));padding:14px;border:1px solid color-mix(in srgb,var(--peek-color,var(--gold)) 36%,var(--line));border-radius:17px;background:rgba(13,13,19,.95);backdrop-filter:blur(18px);box-shadow:0 22px 55px rgba(0,0,0,.5),0 0 25px color-mix(in srgb,var(--peek-color,var(--gold)) 9%,transparent);opacity:0;transform:translateY(6px) scale(.98);pointer-events:none;transition:opacity .16s ease,transform .16s ease}.entity-peek.visible{opacity:1;transform:none}.entity-peek .peek-type{color:var(--peek-color,var(--gold));font-size:9px;text-transform:uppercase;letter-spacing:.14em}.entity-peek strong{display:block;margin:5px 0 7px;font:600 17px Georgia,serif;color:#f3e8d8}.entity-peek p{margin:0;color:#bbb0b6;font-size:11px;line-height:1.48}.entity-peek .peek-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}.entity-peek .peek-tags span{font-size:9px;color:var(--muted)}

.codex-modal{width:min(1180px,100%);height:min(820px,94vh);overflow:hidden;background:linear-gradient(145deg,#15141b,#0c0d12)}.codex-modal .modal-body{padding:0;overflow:hidden}.codex-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02)}.codex-shelf{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none}.codex-shelf::-webkit-scrollbar{display:none}.codex-volume{white-space:nowrap;border:1px solid color-mix(in srgb,var(--volume-color,var(--gold)) 30%,var(--line));background:color-mix(in srgb,var(--volume-color,var(--gold)) 8%,rgba(255,255,255,.02));color:#d7ced0;border-radius:10px 10px 5px 5px;padding:8px 12px;cursor:pointer;font-size:10px}.codex-volume.active{border-color:var(--volume-color,var(--gold));color:#fff3d2;box-shadow:inset 0 -3px 0 var(--volume-color,var(--gold)),0 7px 20px color-mix(in srgb,var(--volume-color,var(--gold)) 9%,transparent)}.codex-search{width:min(260px,34vw)}
.codex-spread{height:calc(min(820px,94vh) - 132px);display:grid;grid-template-columns:minmax(230px,31%) 1fr;padding:22px;background:radial-gradient(circle at 50% 15%,rgba(210,177,116,.07),transparent 38%),linear-gradient(135deg,#17151c,#101117)}.codex-index-page,.codex-reading-page{position:relative;min-height:0;color:var(--codex-ink);background:linear-gradient(92deg,rgba(86,55,30,.12),transparent 5%),radial-gradient(circle at 20% 15%,rgba(255,255,255,.42),transparent 32%),linear-gradient(145deg,#e0cca4,#cdb58a);box-shadow:0 18px 45px rgba(0,0,0,.42),inset 0 0 65px rgba(88,57,30,.16)}.codex-index-page{border-radius:14px 2px 2px 14px;border-right:1px solid rgba(79,49,28,.24);padding:24px 18px 24px 24px;overflow:auto}.codex-reading-page{border-radius:2px 14px 14px 2px;padding:30px 34px;overflow:auto;transform-origin:left center}.codex-reading-page.turning{animation:codexTurn .42s cubic-bezier(.35,.02,.18,1)}@keyframes codexTurn{0%{transform:perspective(1200px) rotateY(0);filter:brightness(1)}48%{transform:perspective(1200px) rotateY(-9deg);filter:brightness(.82)}100%{transform:perspective(1200px) rotateY(0);filter:brightness(1)}}.codex-index-title{margin:0 0 14px;font:600 20px Georgia,serif;color:#513622}.codex-index-list{display:grid;gap:5px}.codex-index-item{width:100%;text-align:left;border:0;border-bottom:1px solid rgba(73,47,27,.16);background:transparent;padding:8px 7px;color:#4b3728;cursor:pointer;font:inherit}.codex-index-item:hover,.codex-index-item.active{background:rgba(96,54,27,.08);color:#7d293e}.codex-index-item strong,.codex-index-item small{display:block}.codex-index-item small{margin-top:2px;opacity:.64;font-size:9px}.codex-page-kicker{color:#7d293e;text-transform:uppercase;letter-spacing:.15em;font-size:9px}.codex-reading-page h3{margin:7px 0 3px;font:600 clamp(27px,3vw,43px) Georgia,serif;color:#382719}.codex-subtitle{color:#725a43;font-style:italic}.codex-rule{height:1px;margin:18px 0;background:linear-gradient(90deg,transparent,#855f3c,transparent)}.codex-page-image{float:right;width:min(230px,40%);aspect-ratio:4/5;margin:0 0 18px 24px;border:7px solid rgba(79,49,28,.18);outline:1px solid rgba(79,49,28,.34);object-fit:cover;background:rgba(93,62,38,.12)}.codex-initial{display:grid;place-items:center;font:700 64px Georgia,serif;color:#78573a}.codex-reading-page p{font-family:Georgia,serif;font-size:15px;line-height:1.7;color:#483528}.codex-reading-page .semantic-groups{clear:both;margin-top:17px}.codex-reading-page .semantic-group-label{color:#775e47}.codex-reading-page .semantic-chip{--line:rgba(70,45,25,.18);color:#4c3625;background:rgba(92,53,25,.06)}.codex-page-actions{clear:both;display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.codex-page-actions .btn{color:#382719;border-color:rgba(72,47,28,.32);background:rgba(94,55,28,.08)}.codex-page-footer{position:sticky;bottom:-30px;clear:both;display:flex;justify-content:space-between;align-items:center;margin:24px -34px -30px;padding:12px 24px;background:linear-gradient(180deg,transparent,#cdb58a 35%);color:#725a43;font-size:10px}.codex-empty{padding:40px;text-align:center;color:#745b45}.codex-wax{position:absolute;right:24px;top:20px;width:45px;height:45px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 33% 28%,#b84c58,#6e1e32 72%);color:#e8caa5;font:20px Georgia,serif;box-shadow:0 5px 13px rgba(67,24,28,.35),inset 0 0 0 3px rgba(255,255,255,.06);transform:rotate(7deg)}

.tag-explorer-modal{width:min(900px,100%)}.tag-explorer-summary{display:flex;gap:10px;align-items:center;padding:14px;border-left:3px solid var(--tag-color,var(--gold));background:color-mix(in srgb,var(--tag-color,var(--gold)) 7%,transparent);border-radius:0 14px 14px 0}.tag-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:16px}.tag-result{padding:14px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.025);cursor:pointer;text-align:left;color:inherit}.tag-result:hover{border-color:color-mix(in srgb,var(--tag-color,var(--gold)) 55%,var(--line));transform:translateY(-1px)}.tag-result small,.tag-result strong,.tag-result span{display:block}.tag-result small{color:var(--tag-color,var(--gold));text-transform:uppercase;letter-spacing:.1em;font-size:9px}.tag-result strong{margin:6px 0;color:#f1e6dc}.tag-result span{color:var(--muted);font-size:11px;line-height:1.45}

.archive-whisper{position:relative;overflow:hidden}.archive-whisper::before{content:'✧';position:absolute;right:18px;top:12px;color:rgba(210,177,116,.16);font:92px Georgia,serif;animation:whisperDrift 7s ease-in-out infinite}@keyframes whisperDrift{0%,100%{transform:translateY(2px) rotate(-4deg)}50%{transform:translateY(-7px) rotate(5deg)}}.archive-whisper-result{min-height:72px;margin:12px 0;padding:12px 14px;border:1px solid rgba(210,177,116,.16);border-radius:13px;background:rgba(210,177,116,.035)}.archive-whisper-result strong{display:block;color:var(--gold-2);margin-bottom:5px}.archive-whisper-result span{color:var(--muted);font-size:11px;line-height:1.5}

.cross-reference-panel{margin-top:18px;padding:14px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.02)}.cross-reference-panel h6{margin:0 0 10px;color:var(--gold-2);font:600 13px Georgia,serif}.cross-reference-links{display:flex;gap:7px;flex-wrap:wrap}.cross-reference-link{border:1px solid var(--line);border-radius:999px;padding:6px 9px;background:rgba(255,255,255,.025);color:#d7ced2;font-size:10px;cursor:pointer}.cross-reference-link:hover{border-color:var(--gold);color:#fff1cf}

/* Six additional card volumes */
.frame-fey{--theme-primary:#ff78d8;--theme-secondary:#75f0d0;--theme-deep:#151022;--theme-surface:#2a1740}.frame-fey .theme-emblem{border-radius:50% 45% 50% 12px;background:radial-gradient(circle at 35% 25%,#fff6cb 0 6%,rgba(255,120,216,.55) 10% 38%,rgba(31,14,47,.98) 68%)}.frame-fey .theme-flourish{border-radius:50%;background:conic-gradient(from 12deg,transparent 0 10%,var(--theme-primary) 11% 14%,transparent 15% 31%,var(--theme-secondary) 32% 35%,transparent 36% 100%);animation:themeOrbit 16s linear infinite}.frame-fey .theme-motion{animation:themeFloat 3.7s ease-in-out infinite;box-shadow:0 0 18px var(--theme-secondary)}
.frame-draconic{--theme-primary:#ff864a;--theme-secondary:#d9b454;--theme-deep:#160d0b;--theme-surface:#321711}.frame-draconic .theme-emblem{clip-path:polygon(50% 0,88% 22%,100% 65%,72% 100%,28% 100%,0 65%,12% 22%);background:radial-gradient(circle at 40% 30%,#ffc86b,rgba(129,30,14,.95) 60%)}.frame-draconic .theme-flourish{clip-path:polygon(0 70%,18% 48%,5% 25%,35% 34%,50% 0,65% 34%,95% 25%,82% 48%,100% 70%,66% 61%,50% 100%,34% 61%);background:linear-gradient(145deg,var(--theme-primary),var(--theme-secondary));animation:themePulse 4.2s ease-in-out infinite}.frame-draconic .theme-motion{animation:themeFlicker 3s ease-in-out infinite}
.frame-ancient{--theme-primary:#c8a86d;--theme-secondary:#6b8a74;--theme-deep:#121613;--theme-surface:#252a22}.frame-ancient .theme-emblem{border-radius:10px;background:linear-gradient(145deg,rgba(193,166,104,.25),rgba(24,31,25,.98));box-shadow:inset 0 0 0 3px rgba(200,168,109,.12)}.frame-ancient .theme-flourish{border:3px double color-mix(in srgb,var(--theme-primary) 55%,transparent);border-radius:48% 48% 8px 8px;animation:themeFrostBreathe 7s ease-in-out infinite}.frame-ancient .theme-flourish::before{content:'ᚱ ᛏ ᛉ';position:absolute;inset:0;display:grid;place-items:center;color:var(--theme-secondary);font:11px Georgia,serif;letter-spacing:.18em}.frame-ancient .theme-motion{animation:themePulse 6s ease-in-out infinite}
.frame-blood{--theme-primary:#ff315f;--theme-secondary:#8d0e32;--theme-deep:#14070c;--theme-surface:#2d0c18}.frame-blood .theme-emblem{border-radius:55% 55% 58% 12px;transform:rotate(45deg);background:radial-gradient(circle at 35% 30%,#ff718b,#9f1238 60%,#25050d)}.frame-blood .theme-flourish{width:46px!important;height:64px!important;border-radius:60% 60% 70% 70%;background:linear-gradient(180deg,var(--theme-primary),var(--theme-secondary));clip-path:polygon(50% 0,88% 52%,78% 84%,50% 100%,22% 84%,12% 52%);animation:themeFloat 4.1s ease-in-out infinite}.frame-blood .theme-motion{animation:themeFlicker 3.6s steps(5,end) infinite}
.frame-desert{--theme-primary:#ffbd55;--theme-secondary:#d46d3b;--theme-deep:#1d100b;--theme-surface:#3a2116}.frame-desert .theme-emblem{border-radius:50%;background:radial-gradient(circle,#fff0a2 0 14%,#ffbd55 16% 42%,rgba(60,26,13,.98) 65%)}.frame-desert .theme-flourish{border-bottom:3px solid var(--theme-primary);border-radius:50%;box-shadow:0 12px 0 -9px var(--theme-secondary),0 23px 0 -19px var(--theme-primary);animation:themeWave 6.2s ease-in-out infinite}.frame-desert .theme-motion{animation:themeFloat 5s ease-in-out infinite}
.frame-alchemical{--theme-primary:#86e58e;--theme-secondary:#d6d36b;--theme-deep:#0d1812;--theme-surface:#183323}.frame-alchemical .theme-emblem{border-radius:50% 50% 12px 12px;background:radial-gradient(circle at 50% 65%,rgba(134,229,142,.55),rgba(21,65,38,.96) 58%)}.frame-alchemical .theme-flourish{border:1px solid var(--theme-primary);border-radius:50%;background:linear-gradient(60deg,transparent 47%,var(--theme-secondary) 48% 51%,transparent 52%),linear-gradient(-60deg,transparent 47%,var(--theme-primary) 48% 51%,transparent 52%);animation:themeOrbit 19s linear infinite}.frame-alchemical .theme-motion{animation:themePulse 4.9s ease-in-out infinite}

@media(max-width:760px){.codex-modal{height:96vh}.codex-toolbar{grid-template-columns:1fr}.codex-search{width:100%}.codex-spread{height:calc(96vh - 168px);grid-template-columns:1fr;padding:10px}.codex-index-page{display:none}.codex-reading-page{border-radius:14px;padding:24px 20px}.codex-page-image{width:36%;margin-left:14px}.codex-page-footer{margin-left:-20px;margin-right:-20px}.semantic-group-label{min-width:100%;padding-top:0}.v12-immersive-exit{right:10px;top:10px}.chapter-transition-card{padding:18px 22px}}
@media(prefers-reduced-motion:reduce){.chapter-transition,.codex-reading-page,.archive-whisper::before{animation:none!important;transition:none!important}}


/* v13.5.0 — scalable quest journal */
.thread-workbench-shell{position:relative}
.thread-section-head{align-items:flex-end}
.thread-summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 16px}
.thread-summary-card{position:relative;overflow:hidden;min-height:82px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,rgba(38,34,44,.88),rgba(19,19,25,.92));box-shadow:0 12px 28px rgba(0,0,0,.14)}
.thread-summary-card::after{content:"";position:absolute;inset:auto -28px -48px auto;width:96px;height:96px;border-radius:50%;background:color-mix(in srgb,var(--summary-color,var(--gold)) 14%,transparent)}
.thread-summary-card strong{display:block;font:600 27px/1 Georgia,serif;color:var(--summary-color,var(--gold));margin-bottom:6px}.thread-summary-card span{position:relative;z-index:1;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em}
.thread-workbench-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.thread-primary-filters{display:grid;grid-template-columns:minmax(260px,1.6fr) minmax(150px,.7fr) minmax(170px,.8fr);gap:9px;flex:1}.thread-search-wrap{position:relative;display:block}.thread-search-wrap>span{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted);z-index:2}.thread-search-wrap .field{padding-left:36px;width:100%}
.thread-view-switch{display:flex;gap:5px;padding:4px;border:1px solid var(--line);border-radius:13px;background:rgba(12,12,17,.52);white-space:nowrap}.thread-view-switch .btn{border-color:transparent;background:transparent}.thread-view-switch .btn.active{border-color:rgba(210,177,116,.35);background:rgba(210,177,116,.12);color:var(--gold)}
.thread-filter-drawer{border:1px solid rgba(210,177,116,.14);border-radius:14px;background:rgba(14,14,20,.42);margin-bottom:12px}.thread-filter-drawer summary{cursor:pointer;padding:10px 13px;color:var(--muted);font-size:12px;user-select:none}.thread-filter-drawer[open] summary{color:var(--text);border-bottom:1px solid var(--line)}.thread-advanced-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:9px;padding:11px}.thread-toggle{display:flex;align-items:center;gap:8px;min-height:42px;padding:0 9px;border:1px solid var(--line);border-radius:10px;color:var(--muted);font-size:12px}.thread-filter-drawer #threadResetFilters{min-height:42px}
.thread-arc-nav{display:flex;gap:7px;overflow-x:auto;padding:3px 1px 11px;scrollbar-width:thin}.thread-arc-chip{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;border:1px solid var(--line);border-radius:999px;padding:7px 10px;background:rgba(22,21,28,.72);color:var(--muted);font-size:11px}.thread-arc-chip strong{font-size:10px;color:var(--gold)}.thread-arc-chip.active,.thread-arc-chip:hover{border-color:rgba(210,177,116,.42);color:var(--text);background:rgba(210,177,116,.1)}
.thread-workspace{display:block}.thread-arc-group{margin:0 0 18px;border:1px solid rgba(210,177,116,.13);border-radius:20px;background:linear-gradient(180deg,rgba(27,25,33,.62),rgba(14,14,19,.5));overflow:hidden}.thread-arc-group.collapsed .thread-arc-body{display:none}.thread-arc-header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;padding:14px 16px;border:0;border-bottom:1px solid rgba(210,177,116,.11);background:linear-gradient(90deg,color-mix(in srgb,var(--arc-color,#d2b174) 10%,transparent),transparent 52%);color:inherit;text-align:left;cursor:pointer}.thread-arc-group.collapsed .thread-arc-header{border-bottom:0}.thread-arc-glyph{display:grid;place-items:center;width:39px;height:39px;border:1px solid color-mix(in srgb,var(--arc-color,#d2b174) 40%,transparent);border-radius:12px;color:var(--arc-color,#d2b174);background:color-mix(in srgb,var(--arc-color,#d2b174) 8%,transparent);font:22px Georgia,serif}.thread-arc-title strong{display:block;font:600 20px Georgia,serif}.thread-arc-title span{display:block;margin-top:3px;color:var(--muted);font-size:11px}.thread-arc-stats{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px}.thread-arc-progress{width:90px;height:6px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden}.thread-arc-progress span{display:block;height:100%;background:var(--arc-color,#d2b174)}.thread-arc-body{padding:14px}.thread-arc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.thread-card{cursor:pointer;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.thread-card:hover,.thread-card:focus-visible{transform:translateY(-2px);border-color:color-mix(in srgb,var(--thread-color) 48%,var(--line));box-shadow:0 20px 42px rgba(0,0,0,.25)}.thread-card.thread-tracked::before{content:"✦";position:absolute;top:11px;right:13px;color:var(--thread-color);filter:drop-shadow(0 0 7px color-mix(in srgb,var(--thread-color) 55%,transparent));z-index:3}.thread-card.is-child{margin-left:24px;border-left-width:4px}.thread-parent-note{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:10px;margin:0 0 7px}.thread-card .thread-head{padding-right:18px}.thread-card .thread-head>div{min-width:0}.thread-card h4{overflow-wrap:anywhere}.thread-quest-meta{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0}.thread-meta-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.025);color:var(--muted);font-size:10px}.thread-meta-pill.priority-critical{border-color:rgba(220,90,90,.38);color:#f09a9a}.thread-meta-pill.priority-high{border-color:rgba(223,139,67,.38);color:#efb176}.thread-meta-pill.priority-low{color:#8f9eaa}.thread-objective-mini{display:flex;align-items:center;justify-content:space-between;gap:9px;margin:11px 0 5px;color:var(--muted);font-size:11px}.thread-objective-mini strong{color:var(--text)}.thread-quest-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}.thread-quest-tag{border:0;border-bottom:1px dotted rgba(210,177,116,.4);background:transparent;color:#c9b486;padding:2px 1px;font-size:10px;cursor:pointer}.thread-place-link{border-color:rgba(95,185,139,.25);background:rgba(95,185,139,.07);color:#a7ddc0}.thread-card-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:13px}.thread-card-footer .card-actions{margin:0!important}.thread-open-hint{color:var(--muted);font-size:10px}
.thread-kanban{display:grid;grid-template-columns:repeat(5,minmax(250px,1fr));gap:12px;overflow-x:auto;padding:2px 2px 12px;scrollbar-width:thin}.thread-kanban-column{min-width:250px;border:1px solid var(--line);border-radius:18px;background:rgba(16,16,22,.62);overflow:hidden}.thread-kanban-head{display:flex;align-items:center;justify-content:space-between;padding:12px 13px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.018)}.thread-kanban-head strong{font:600 15px Georgia,serif}.thread-kanban-head span{display:grid;place-items:center;min-width:24px;height:24px;border-radius:999px;background:rgba(210,177,116,.1);color:var(--gold);font-size:10px}.thread-kanban-body{display:grid;gap:9px;padding:10px}.thread-kanban .thread-card{padding:14px}.thread-kanban .thread-card h4{font-size:19px}.thread-kanban .thread-card p{font-size:12px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.thread-kanban .thread-status,.thread-kanban .publication-badge{display:none}.thread-kanban .thread-card h4{word-break:normal;overflow-wrap:break-word;hyphens:auto}.thread-kanban .thread-links,.thread-kanban .thread-quest-tags,.thread-kanban .thread-open-hint{display:none}
.thread-list-wrap{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:rgba(16,16,22,.58)}.thread-list-row{display:grid;grid-template-columns:minmax(220px,1.5fr) 150px 130px 115px 110px auto;gap:12px;align-items:center;padding:11px 13px;border-bottom:1px solid rgba(255,255,255,.055);cursor:pointer}.thread-list-row:last-child{border-bottom:0}.thread-list-row:hover,.thread-list-row:focus-visible{background:rgba(210,177,116,.055)}.thread-list-title strong{display:block;font:600 15px Georgia,serif}.thread-list-title span,.thread-list-cell{color:var(--muted);font-size:11px}.thread-list-progress{height:6px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden}.thread-list-progress span{display:block;height:100%;background:var(--thread-color)}
.thread-view-modal{width:min(900px,94vw)}.thread-dossier-hero{position:relative;overflow:hidden;padding:19px;border:1px solid var(--line);border-top:4px solid var(--thread-color);border-radius:18px;background:linear-gradient(145deg,color-mix(in srgb,var(--thread-color) 9%,rgba(34,31,40,.95)),rgba(17,17,23,.96))}.thread-dossier-hero::after{content:"⌁";position:absolute;right:20px;top:10px;font:88px Georgia,serif;color:color-mix(in srgb,var(--thread-color) 10%,transparent)}.thread-dossier-hero h2{position:relative;z-index:1;margin:6px 0 8px;font:600 34px/1.08 Georgia,serif}.thread-dossier-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:14px;margin-top:14px}.thread-dossier-panel{padding:15px;border:1px solid var(--line);border-radius:16px;background:rgba(16,16,22,.55)}.thread-dossier-panel h4{margin:0 0 11px;font:600 17px Georgia,serif}.thread-objective-list{display:grid;gap:7px}.thread-objective{display:flex;align-items:flex-start;gap:9px;width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.025);color:var(--text);text-align:left}.thread-objective.done{opacity:.62}.thread-objective.done span{text-decoration:line-through}.thread-objective-mark{display:grid;place-items:center;flex:0 0 20px;height:20px;border-radius:6px;border:1px solid color-mix(in srgb,var(--thread-color) 45%,var(--line));color:var(--thread-color)}button.thread-objective:not(:disabled){cursor:pointer}.thread-linked-list{display:flex;flex-wrap:wrap;gap:7px}.thread-linked-list .btn{min-height:34px}.thread-related-list{display:grid;gap:7px}.thread-related-row{display:flex;justify-content:space-between;align-items:center;gap:9px;width:100%;padding:9px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.025);color:var(--text);text-align:left;cursor:pointer}.thread-related-row span{color:var(--muted);font-size:10px}.thread-dossier-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
@media(max-width:1100px){.thread-advanced-grid{grid-template-columns:repeat(3,minmax(140px,1fr))}.thread-list-row{grid-template-columns:minmax(200px,1.4fr) 140px 110px 100px auto}.thread-list-row .thread-list-updated{display:none}}
@media(max-width:820px){.thread-summary-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.thread-workbench-toolbar{align-items:stretch;flex-direction:column}.thread-primary-filters{grid-template-columns:1fr 1fr}.thread-search-wrap{grid-column:1/-1}.thread-view-switch{align-self:flex-start}.thread-arc-grid{grid-template-columns:1fr}.thread-card.is-child{margin-left:12px}.thread-dossier-grid{grid-template-columns:1fr}.thread-list-row{grid-template-columns:minmax(0,1fr) 100px auto}.thread-list-row .thread-list-arc,.thread-list-row .thread-list-priority,.thread-list-row .thread-list-updated{display:none}}
@media(max-width:560px){.thread-summary-strip{grid-template-columns:1fr 1fr;gap:7px}.thread-summary-card{min-height:70px;padding:12px}.thread-summary-card strong{font-size:23px}.thread-primary-filters{grid-template-columns:1fr}.thread-search-wrap{grid-column:auto}.thread-view-switch{width:100%}.thread-view-switch .btn{flex:1}.thread-advanced-grid{grid-template-columns:1fr}.thread-arc-header{grid-template-columns:auto minmax(0,1fr)}.thread-arc-stats{grid-column:1/-1;justify-content:flex-end}.thread-arc-body{padding:9px}.thread-card.is-child{margin-left:0;border-left-width:4px}.thread-list-row{grid-template-columns:minmax(0,1fr) auto;padding:10px}.thread-list-row .thread-list-status{display:none}.thread-dossier-hero h2{font-size:27px}}
body.mobile-layout .thread-workbench-toolbar{display:flex}body.mobile-layout .thread-view-switch{width:100%}

