:root {
    color-scheme: dark;
    --dream-bg: #020711;
    --dream-panel: rgba(5, 13, 28, .72);
    --dream-panel-strong: rgba(6, 16, 34, .9);
    --dream-line: rgba(125, 184, 255, .18);
    --dream-text: #eaf5ff;
    --dream-muted: #91a8c3;
    --dream-blue: #63b4ff;
    --dream-blue-bright: #a9dcff;
}

* { box-sizing: border-box; }
html, body { width: 100%; min-height: 100%; margin: 0; }
body.ad-dream-page {
    min-height: 100dvh;
    overflow: hidden;
    background: var(--dream-bg);
    color: var(--dream-text);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/* 8.14.45: dark cosmic Pillars background behind the interactive universe. */
body.ad-dream-page::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        linear-gradient(rgba(1, 6, 17, .50), rgba(1, 6, 17, .64)),
        radial-gradient(circle at 52% 38%, rgba(18, 65, 118, .10), transparent 48%),
        url('/assets/images/dream-universe-pillars.webp') center center / cover no-repeat;
    transform: scale(1.015);
    filter: saturate(.84) brightness(.82) contrast(1.04);
}

.sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

#dream-universe-canvas {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    touch-action: none;
    cursor: grab;
    z-index: 1;
}
#dream-universe-canvas.is-dragging { cursor: grabbing; }

.ad-dream-vignette,
.ad-dream-stars {
    position: fixed;
    inset: 0;
    pointer-events: none;
}
.ad-dream-vignette {
    z-index: 2;
    box-shadow: inset 0 0 180px rgba(0, 0, 0, .82), inset 0 0 60px rgba(0, 0, 0, .38);
}
.ad-dream-stars {
    z-index: 0;
    opacity: .24;
    background-image:
        radial-gradient(circle at 12% 22%, rgba(255,255,255,.75) 0 1px, transparent 1.5px),
        radial-gradient(circle at 73% 15%, rgba(145,202,255,.66) 0 1px, transparent 1.5px),
        radial-gradient(circle at 39% 72%, rgba(255,255,255,.52) 0 1px, transparent 1.5px),
        radial-gradient(circle at 82% 77%, rgba(154,207,255,.45) 0 1px, transparent 1.5px),
        radial-gradient(circle at 56% 44%, rgba(255,255,255,.32) 0 1px, transparent 1.5px);
    background-size: 270px 270px, 330px 330px, 420px 420px, 510px 510px, 620px 620px;
}

.ad-dream-topbar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 8;
    min-height: 112px;
    display: grid;
    grid-template-columns: minmax(150px, 1fr) auto minmax(150px, 1fr);
    gap: 22px;
    align-items: start;
    padding: 24px 30px 18px;
    background: linear-gradient(to bottom, rgba(1, 5, 13, .95), rgba(1, 5, 13, .72) 62%, transparent);
    pointer-events: none;
}
.ad-dream-topbar > * { pointer-events: auto; }

.ad-dream-back {
    justify-self: start;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 40px;
    padding: 0 2px;
    color: #c9e3fb;
    text-decoration: none;
    font-size: 13px;
    letter-spacing: .04em;
    opacity: .86;
    transition: opacity .2s ease, transform .2s ease;
}
.ad-dream-back:hover { opacity: 1; transform: translateX(-2px); }
.ad-dream-back span:first-child { font-size: 20px; line-height: 1; }

.ad-dream-titleblock {
    text-align: center;
    max-width: 660px;
}
.ad-dream-kicker {
    margin: 0 0 5px;
    color: #6faee8;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .28em;
}
.ad-dream-titleblock h1 {
    margin: 0;
    font-size: clamp(24px, 3.5vw, 42px);
    font-weight: 400;
    letter-spacing: .02em;
}
.ad-dream-titleblock p {
    margin: 7px 0 0;
    color: var(--dream-muted);
    font-size: 13px;
    line-height: 1.45;
}

.ad-dream-languages {
    justify-self: end;
    display: flex;
    align-items: center;
    gap: 6px;
}
.ad-dream-languages a {
    display: grid;
    place-items: center;
    min-width: 32px;
    height: 32px;
    border: 1px solid rgba(122, 178, 230, .16);
    border-radius: 50%;
    color: #86a2be;
    text-decoration: none;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .09em;
    background: rgba(5, 13, 28, .45);
}
.ad-dream-languages a:hover,
.ad-dream-languages a.is-active {
    color: #edf8ff;
    border-color: rgba(113, 186, 255, .48);
    background: rgba(25, 82, 137, .28);
    box-shadow: 0 0 18px rgba(45, 147, 235, .14);
}

.ad-dream-controls {
    position: fixed;
    z-index: 9;
    top: 122px;
    left: 50%;
    transform: translateX(-50%);
    width: min(1180px, calc(100vw - 40px));
    display: grid;
    grid-template-columns: minmax(220px, 1.5fr) minmax(180px, 1fr) auto auto auto auto;
    gap: 8px;
    padding: 8px;
    border: 1px solid rgba(108, 167, 226, .16);
    border-radius: 16px;
    background: rgba(4, 11, 24, .66);
    backdrop-filter: blur(18px) saturate(125%);
    -webkit-backdrop-filter: blur(18px) saturate(125%);
    box-shadow: 0 20px 55px rgba(0,0,0,.24);
}
.ad-dream-controls input,
.ad-dream-controls select,
.ad-dream-controls button {
    width: 100%;
    height: 42px;
    border: 1px solid rgba(118, 174, 229, .14);
    border-radius: 10px;
    background: rgba(10, 24, 48, .6);
    color: #dff0ff;
    font: inherit;
    font-size: 12px;
    outline: none;
}
.ad-dream-controls input,
.ad-dream-controls select { padding: 0 13px; }
.ad-dream-controls input::placeholder { color: #7188a1; }
.ad-dream-controls input:focus,
.ad-dream-controls select:focus,
.ad-dream-controls button:focus-visible {
    border-color: rgba(98, 181, 255, .62);
    box-shadow: 0 0 0 3px rgba(46, 139, 222, .12);
}
.ad-dream-controls button {
    padding: 0 15px;
    white-space: nowrap;
    cursor: pointer;
    transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.ad-dream-controls button:hover,
.ad-dream-controls button.is-active {
    color: #f5fbff;
    border-color: rgba(93, 176, 255, .5);
    background: rgba(29, 91, 151, .34);
}
.ad-dream-select-wrap { min-width: 0; }
.ad-dream-controls select { cursor: pointer; }

.ad-dream-tooltip {
    position: fixed;
    z-index: 20;
    width: min(340px, calc(100vw - 36px));
    padding: 15px 16px 14px;
    border: 1px solid rgba(117, 185, 250, .28);
    border-radius: 14px;
    background: rgba(4, 13, 28, .94);
    box-shadow: 0 20px 65px rgba(0, 0, 0, .48), 0 0 30px rgba(46, 132, 220, .08);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    pointer-events: none;
}
.ad-dream-tooltip-head {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}
.ad-dream-tooltip strong {
    color: #f3f9ff;
    font-size: 15px;
    font-weight: 600;
}
.ad-dream-tooltip p {
    margin: 8px 0 0;
    color: #9bb2ca;
    font-size: 12px;
    line-height: 1.5;
}
.ad-dream-tooltip small {
    display: block;
    margin-top: 9px;
    color: #70a8da;
    font-size: 10px;
    letter-spacing: .05em;
}
.ad-dream-tooltip-enter {
    display: block;
    margin-top: 11px;
    color: #8dccff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.ad-dream-tooltip-visited {
    display: inline-flex;
    align-items: center;
    min-height: 20px;
    padding: 0 7px;
    border-radius: 999px;
    color: #a9dcff;
    background: rgba(49, 136, 214, .16);
    border: 1px solid rgba(91, 173, 246, .18);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.ad-dream-hint {
    position: fixed;
    left: 50%;
    bottom: max(18px, env(safe-area-inset-bottom));
    transform: translateX(-50%);
    z-index: 7;
    width: max-content;
    max-width: calc(100vw - 36px);
    padding: 9px 14px;
    border: 1px solid rgba(108, 165, 218, .12);
    border-radius: 999px;
    color: #718aa5;
    background: rgba(2, 8, 18, .54);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    font-size: 10px;
    letter-spacing: .04em;
    text-align: center;
    pointer-events: none;
}

.ad-dream-empty {
    position: fixed;
    inset: 0;
    z-index: 5;
    display: grid;
    place-items: center;
    pointer-events: none;
}
.ad-dream-empty p {
    color: #9fb6cc;
    padding: 18px 22px;
    border-radius: 14px;
    background: rgba(7, 17, 35, .75);
    border: 1px solid rgba(100, 164, 223, .16);
}

.ad-dream-intro {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: grid;
    place-items: center;
    padding: 28px;
    background: rgba(0, 3, 10, .84);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .4s ease, visibility 0s linear .4s;
}
/*
 * Important: the cinematic intro remains in the DOM after it closes.
 * Some browser/CSS combinations can let the class-level display:grid win over
 * the native [hidden] rule. If that happens, the transparent full-screen layer
 * still sits above the canvas and blocks every click. Explicitly remove it from
 * layout while hidden and only enable pointer input while it is visibly open.
 */
.ad-dream-intro[hidden] {
    display: none !important;
    pointer-events: none !important;
}
.ad-dream-intro.is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition-delay: 0s;
}
.ad-dream-intro-card {
    position: relative;
    width: min(620px, 100%);
    padding: 48px 46px 42px;
    overflow: hidden;
    border-radius: 24px;
    border: 1px solid rgba(111, 182, 248, .24);
    background:
        radial-gradient(circle at 50% 15%, rgba(40, 121, 199, .16), transparent 44%),
        rgba(5, 14, 30, .94);
    box-shadow: 0 28px 100px rgba(0,0,0,.6), 0 0 70px rgba(44, 139, 226, .08);
    text-align: center;
    transform: translateY(15px) scale(.985);
    transition: transform .45s ease;
}
.ad-dream-intro.is-visible .ad-dream-intro-card { transform: translateY(0) scale(1); }
.ad-dream-intro-card h2 {
    position: relative;
    margin: 5px 0 14px;
    font-size: clamp(30px, 5vw, 54px);
    font-weight: 350;
    letter-spacing: .01em;
}
.ad-dream-intro-card > p:not(.ad-dream-kicker) {
    position: relative;
    margin: 0 auto;
    max-width: 520px;
    color: #9fb4ca;
    line-height: 1.68;
    font-size: 14px;
}
.ad-dream-intro-card button {
    position: relative;
    margin-top: 28px;
    min-height: 44px;
    padding: 0 20px;
    border: 1px solid rgba(105, 190, 255, .5);
    border-radius: 999px;
    color: #eef9ff;
    background: rgba(26, 95, 154, .34);
    font: inherit;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    cursor: pointer;
    box-shadow: 0 0 30px rgba(55, 151, 233, .1);
}
.ad-dream-intro-card button:hover { background: rgba(37, 117, 188, .48); }
.ad-dream-intro-orbit {
    position: absolute;
    left: 50%;
    top: 35%;
    width: 320px;
    height: 320px;
    transform: translate(-50%, -50%);
    border: 1px solid rgba(84, 170, 248, .14);
    border-radius: 50%;
    box-shadow: 0 0 80px rgba(59, 146, 223, .12), inset 0 0 80px rgba(59, 146, 223, .05);
}
.ad-dream-intro-orbit::before,
.ad-dream-intro-orbit::after {
    content: "";
    position: absolute;
    inset: 18%;
    border: 1px solid rgba(112, 198, 255, .11);
    border-radius: 50%;
}
.ad-dream-intro-orbit::after { inset: 36%; box-shadow: 0 0 35px rgba(105, 195, 255, .2); }


/* 8.14.48 — manual Dream relations shown in node tooltips */
.ad-dream-tooltip-relations{margin-top:10px;padding-top:9px;border-top:1px solid rgba(218,174,99,.22)}
.ad-dream-tooltip-relations>strong{display:block;margin-bottom:5px;color:#f0cf94;font-size:10px;letter-spacing:.09em;text-transform:uppercase}
.ad-dream-tooltip-relations span{display:block;margin-top:3px;color:rgba(238,242,247,.82);font-size:11px;line-height:1.45}
.ad-dream-tooltip-relations em{color:#e1b96f;font-style:normal}

@media (max-width: 820px) {
    .ad-dream-topbar {
        min-height: 108px;
        grid-template-columns: 1fr auto;
        padding: 16px 18px 14px;
    }
    .ad-dream-titleblock {
        grid-column: 1 / -1;
        grid-row: 2;
        justify-self: center;
        margin-top: -2px;
    }
    .ad-dream-titleblock .ad-dream-kicker,
    .ad-dream-titleblock p { display: none; }
    .ad-dream-titleblock h1 { font-size: 24px; }
    .ad-dream-languages { grid-column: 2; grid-row: 1; }
    .ad-dream-back { grid-column: 1; grid-row: 1; }
    .ad-dream-controls {
        top: 110px;
        width: calc(100vw - 24px);
        grid-template-columns: 1fr 1fr;
        border-radius: 14px;
    }
    .ad-dream-controls .ad-dream-search-wrap { grid-column: 1 / -1; }
    .ad-dream-hint {
        bottom: max(12px, env(safe-area-inset-bottom));
        width: calc(100vw - 28px);
        white-space: normal;
        line-height: 1.35;
    }
}

@media (max-width: 520px) {
    .ad-dream-back span:last-child { display: none; }
    .ad-dream-languages { gap: 3px; }
    .ad-dream-languages a { min-width: 29px; height: 29px; }
    .ad-dream-controls {
        grid-template-columns: 1fr 1fr;
        top: 100px;
    }
    .ad-dream-controls input,
    .ad-dream-controls select,
    .ad-dream-controls button { height: 39px; font-size: 11px; }
    .ad-dream-select-wrap { grid-column: 1 / -1; }
    .ad-dream-intro { padding: 16px; }
    .ad-dream-intro-card { padding: 40px 24px 34px; border-radius: 20px; }
    .ad-dream-intro-card > p:not(.ad-dream-kicker) { font-size: 13px; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation: none !important; transition-duration: .01ms !important; }
}


/* 8.14.49 — Dream Universe v3: Follow this thought + curated Dream Journeys */
.ad-dream-path-panel{
    position:fixed;
    z-index:30;
    top:188px;
    right:24px;
    bottom:24px;
    width:min(390px,calc(100vw - 48px));
    overflow:auto;
    padding:22px 20px 20px;
    border:1px solid rgba(118,183,244,.24);
    border-radius:18px;
    color:#eaf5ff;
    background:linear-gradient(180deg,rgba(5,14,30,.96),rgba(4,10,23,.94));
    box-shadow:0 28px 90px rgba(0,0,0,.55),0 0 40px rgba(53,143,224,.08);
    backdrop-filter:blur(18px) saturate(125%);
    -webkit-backdrop-filter:blur(18px) saturate(125%);
}
.ad-dream-path-panel[hidden]{display:none!important;pointer-events:none!important}
.ad-dream-path-close{
    position:absolute;
    top:10px;
    right:10px;
    width:34px;
    height:34px;
    border:1px solid rgba(124,182,236,.18);
    border-radius:50%;
    color:#aec8df;
    background:rgba(255,255,255,.035);
    font-size:21px;
    line-height:1;
    cursor:pointer;
}
.ad-dream-path-close:hover{color:#fff;border-color:rgba(124,193,255,.5);background:rgba(38,112,177,.2)}
.ad-dream-path-panel h2{margin:3px 34px 8px 0;color:#f2f8ff;font-size:24px;font-weight:500;line-height:1.15}
.ad-dream-path-panel p:not(.ad-dream-kicker){margin:0 0 14px;color:#9db4ca;font-size:12px;line-height:1.55}
.ad-dream-path-steps{list-style:none;margin:18px 0;padding:0;display:grid;gap:7px}
.ad-dream-path-steps li{display:grid;grid-template-columns:26px 1fr;gap:9px;align-items:center;padding:9px 10px;border:1px solid rgba(116,181,243,.12);border-radius:10px;background:rgba(19,50,86,.16)}
.ad-dream-path-steps li span{display:grid;place-items:center;width:24px;height:24px;border:1px solid rgba(116,194,255,.35);border-radius:50%;color:#a9dbff;background:rgba(43,132,209,.13);font-size:9px;font-weight:800}
.ad-dream-path-steps li strong{color:#edf7ff;font-size:11px;font-weight:600;line-height:1.35}
.ad-dream-path-begin{width:100%;min-height:44px;border:1px solid rgba(106,190,255,.44);border-radius:10px;color:#f4fbff;background:linear-gradient(180deg,rgba(42,128,199,.42),rgba(24,83,139,.42));font:inherit;font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;cursor:pointer}
.ad-dream-path-begin:hover{background:linear-gradient(180deg,rgba(55,149,224,.55),rgba(29,98,162,.5));box-shadow:0 0 24px rgba(61,155,235,.12)}
.ad-dream-journey-list{display:grid;gap:10px;margin-top:14px}
.ad-dream-journey-card{padding:13px;border:1px solid rgba(133,185,236,.14);border-radius:12px;background:rgba(16,39,69,.16)}
.ad-dream-journey-card h3{margin:0 0 5px;color:#eef7ff;font-size:15px;font-weight:600}
.ad-dream-journey-card p{margin-bottom:8px!important}
.ad-dream-journey-card small{color:#76acd7;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.ad-dream-journey-route{margin-top:8px;color:#c5d8e9;font-size:10px;line-height:1.55}
.ad-dream-journey-card-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:11px}
.ad-dream-journey-card-actions button{min-height:36px;border:1px solid rgba(116,184,247,.2);border-radius:8px;color:#dbeeff;background:rgba(30,88,143,.19);font:inherit;font-size:9px;font-weight:750;cursor:pointer}
.ad-dream-journey-card-actions button:hover{border-color:rgba(116,190,255,.48);background:rgba(38,112,177,.3)}

@media(max-width:1100px){
    .ad-dream-controls{grid-template-columns:minmax(210px,1.4fr) minmax(170px,1fr) repeat(2,auto)}
    #dream-follow,#dream-journeys{grid-row:2}
    #dream-follow{grid-column:1 / 2}
    #dream-journeys{grid-column:2 / 3}
    #dream-reset{grid-column:3}
    #dream-connections{grid-column:4}
    .ad-dream-path-panel{top:238px}
}
@media(max-width:820px){
    .ad-dream-controls{grid-template-columns:1fr 1fr}
    .ad-dream-path-panel{top:248px;right:12px;bottom:12px;width:calc(100vw - 24px)}
    #dream-follow,#dream-journeys{grid-row:auto;grid-column:auto}
}
@media(max-width:520px){
    .ad-dream-path-panel{top:286px;padding:20px 15px 16px}
    .ad-dream-journey-card-actions{grid-template-columns:1fr}
}
