:root{--navy:#020b18;--ink:#061126;--paper:#f7f5ef;--gold:#c9972b;--line:#d6d1c7;--telegram:#27a7e7;--paper-muted:#eae7dd;--ink-soft:#0611269e;--ink-faint:#06112661;--font-display:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;font-family:var(--font-body);--radius:10px;--radius-sm:6px;--pl-bg-dark:#070d18;--pl-gold:#d7a329;--pl-gold-soft:#d7a3292e;--pl-ivory:#f7f2e8;--pl-paper:#efe2bf;--pl-ink:#111827;--pl-muted:#6b7280;--explore-land:#423a2c;--explore-coast:#6a5c46;--explore-text-soft:#9e9a93;--explore-ocean:#16233c}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-weight:800}button{font-family:inherit}a{color:inherit}::selection{background:var(--gold);color:var(--navy)}.app-shell{flex-direction:column;height:100vh;display:flex}.app-shell[data-mode=explore]{background:var(--navy)}.app-header{background:var(--navy);color:var(--paper);justify-content:space-between;align-items:baseline;gap:16px;padding:18px 28px;display:flex}.app-header-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:4px;font-size:12px;font-weight:700;display:block}.app-header h1{color:var(--paper);font-size:22px}.app-header-controls{align-items:center;gap:16px;display:flex}.app-header-meta{color:#f7f5ef99;white-space:nowrap;font-size:13px}.mode-switcher{border:1px solid #f7f5ef40;border-radius:999px;gap:2px;padding:3px;display:flex}.mode-switcher-btn{color:#f7f5efb3;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 16px;font-size:13px;font-weight:600}.mode-switcher-btn:hover{color:var(--paper)}.mode-switcher-btn--active{background:var(--gold);color:var(--navy)}.mode-switcher-btn--active:hover{color:var(--navy)}.app-shell[data-mode=explore] .mode-switcher-btn--active{background:var(--navy);border:1.5px solid var(--gold);color:var(--gold)}.app-shell[data-mode=explore] .mode-switcher-btn--active:hover{color:var(--gold)}.filters-panel{background:var(--paper);border-bottom:1px solid var(--line);padding:10px 28px}.filters-bar{align-items:center;gap:16px;display:flex}.filters-toggle{border:1px solid var(--line);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:7px 14px;font-size:13px;font-weight:600}.filters-toggle:hover{border-color:var(--gold);color:var(--gold)}.filters-toggle--active{border-color:var(--gold);color:var(--gold);background:#c9972b14}.filters-body{padding-top:12px}.filters-row{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:10px;display:flex}.filter-field{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;flex-direction:column;gap:4px;font-size:11px;display:flex}.filter-field select{border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--ink);text-transform:none;background:#fff;min-width:160px;padding:6px 8px;font-size:13px}.filter-field--confidence{min-width:160px}.filter-field--checkbox{text-transform:none;flex-direction:row;align-items:center;gap:6px}.filters-reset{border:1px solid var(--line);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:7px 14px;font-size:13px}.filters-reset:hover{border-color:var(--gold);color:var(--gold)}.filters-count{color:var(--ink-soft);margin-left:auto;font-size:13px;font-weight:600}.app-shell[data-mode=explore] .filters-panel{background:var(--navy);border-bottom-color:var(--explore-coast)}.app-shell[data-mode=explore] .filters-toggle{border-color:var(--line);color:var(--paper)}.app-shell[data-mode=explore] .filters-count{color:var(--explore-text-soft)}.app-shell[data-mode=explore] .filters-body{background:var(--paper);border-top:1px solid var(--line);margin:12px -28px -10px;padding:12px 28px 10px}.branch-legend{flex-wrap:wrap;gap:6px;display:flex}.branch-chip{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:4px 10px 4px 6px;font-size:12px;line-height:1.3;display:inline-flex}.branch-chip-dot{background:var(--chip-color,#999);border-radius:50%;flex:none;width:9px;height:9px}.branch-chip--active{border-color:var(--gold);background:#c9972b1f;font-weight:700}.app-main{flex:1;min-height:0;display:flex}.app-map{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);flex:1;margin:10px;position:relative;overflow:hidden}.app-shell[data-mode=explore] .app-map{background:var(--explore-ocean);border-color:var(--explore-coast)}.app-side{border-left:1px solid var(--line);background:var(--paper);flex-direction:column;flex:none;width:360px;display:flex;overflow-y:auto}.app-side--journey{width:400px}.node-card{border-bottom:1px solid var(--line);padding:20px}.node-card--empty{color:var(--ink-faint);font-size:14px}.node-card-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.node-card-branch{color:var(--chip-color);align-items:center;gap:6px;font-size:12px;font-weight:700;display:inline-flex}.node-card-close{cursor:pointer;color:var(--ink-soft);background:0 0;border:none;font-size:20px;line-height:1}.node-card-journey-step{text-transform:uppercase;letter-spacing:.04em;color:var(--pl-gold);margin-bottom:8px;font-size:11px;font-weight:700;display:inline-block}.node-card h3{margin-bottom:8px;font-size:17px;line-height:1.35}.node-card--journey{background:var(--pl-ivory);padding:24px 20px}.node-card-journey-meta{color:var(--ink-soft);flex-wrap:wrap;align-items:baseline;gap:8px 10px;margin-bottom:20px;font-size:12.5px;display:flex}.node-card-journey-lesson{color:var(--pl-gold);font-weight:700}.node-card-journey-label{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);margin-bottom:5px;font-size:10.5px;display:block}.node-card-journey-headline{font-size:21px;font-weight:700;line-height:1.3;font-family:var(--font-display);color:var(--ink);margin:0 0 24px}.node-card-journey-block{border-left:3px solid var(--chip-color,var(--pl-gold));margin-bottom:28px;padding-left:14px}.node-card-journey-block p{color:var(--ink);margin:0;font-size:14.5px;line-height:1.5}.node-card-disclosure{border-top:1px solid var(--line);margin:18px 0 4px;padding-top:12px}.node-card-disclosure-toggle{cursor:pointer;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:12px;font-weight:700;display:inline-flex}.node-card-disclosure-toggle:hover{color:var(--pl-gold)}.node-card-disclosure-chevron{font-size:11px;transition:transform .2s;display:inline-block}.node-card-disclosure--open .node-card-disclosure-chevron{transform:rotate(90deg)}.node-card-disclosure-body{grid-template-rows:0fr;transition:grid-template-rows .25s;display:grid}.node-card-disclosure--open .node-card-disclosure-body{grid-template-rows:1fr}.node-card-disclosure-body-inner{min-height:0;overflow:hidden}.node-card-disclosure-body-inner>*+*{margin-top:12px}.node-card-chips{flex-wrap:wrap;gap:6px;display:flex}.node-card-chip{border:1px solid var(--line);color:var(--ink-soft);background:#fff;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:inline-flex}.node-card-journey-next-hint{color:var(--ink-faint);flex:1;margin:0;padding:9px 10px;font-size:12.5px;font-style:italic}.node-card-meta{color:var(--ink-soft);gap:10px;margin-bottom:12px;font-size:12px;display:flex}.node-card-flag{color:#7a2530;border-radius:var(--radius-sm);background:#c13a461f;border:1px solid #c13a4659;margin-bottom:12px;padding:6px 10px;font-size:12px;font-weight:700}.node-card-fields{grid-template-columns:auto;gap:2px 0;margin:0 0 12px;display:grid}.node-card-fields dt{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin-top:8px;font-size:11px}.node-card-fields dd{margin:2px 0 0;font-size:13.5px;line-height:1.45}.node-card-source{color:var(--telegram);word-break:break-word;margin-bottom:10px;font-size:12.5px;display:block}.node-card-telegram{color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:center;gap:7px;margin-bottom:10px;padding:7px 12px;font-size:13px;font-weight:600;text-decoration:none;transition:border-color .15s,background .15s;display:inline-flex}.node-card-telegram:hover{border-color:var(--telegram);background:#27a7e714}.node-card--journey .node-card-telegram{margin-bottom:14px;padding:11px 18px;font-size:14px}.node-card-telegram svg{flex-shrink:0}.node-card-checklater{border-radius:var(--radius-sm);background:#c9972b1f;border:1px solid #c9972b66;margin-bottom:10px;padding:8px 10px;font-size:12.5px}.node-card-tags{flex-wrap:wrap;gap:6px;display:flex}.node-tag{color:var(--ink-soft);background:var(--paper-muted);border-radius:999px;padding:2px 8px;font-size:11px}.node-card-journey-nav{border-top:1px solid var(--line);gap:8px;margin-top:16px;padding-top:16px;display:flex}.node-card-journey-nav button{border:1px solid var(--line);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;background:0 0;flex:1;padding:9px 10px;font-size:13px;font-weight:600}.node-card-journey-nav button:hover:not(:disabled){border-color:var(--pl-gold);color:var(--pl-gold)}.node-card-journey-nav button:disabled{opacity:.35;cursor:default}.unlocated-panel{flex:1;padding:16px 20px}.unlocated-panel h4{margin-bottom:4px;font-size:13px}.unlocated-hint{color:var(--ink-soft);margin:0 0 10px;font-size:11.5px}.unlocated-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.unlocated-item{text-align:left;border-radius:var(--radius-sm);cursor:pointer;width:100%;color:var(--ink);background:0 0;border:1px solid #0000;align-items:flex-start;gap:8px;padding:6px 8px;font-size:12.5px;display:flex}.unlocated-item:hover{background:var(--paper-muted)}.unlocated-item--active{border-color:var(--gold);background:#c9972b1a}.unlocated-item .branch-chip-dot{margin-top:5px}.app-timeline{border-top:1px solid var(--line);background:var(--paper);flex:none;height:170px;overflow:auto hidden}.app-shell[data-mode=explore] .app-timeline{background:var(--navy);border-top-color:var(--explore-coast)}.journey-steps{align-items:center;gap:14px;height:100%;padding:0 24px;display:flex}.journey-step{background:color-mix(in srgb, var(--pl-ivory) 78%, transparent);cursor:pointer;border:1px solid #b4965a38;border-radius:12px;flex-direction:column;flex:1 1 0;align-items:center;gap:4px;min-width:108px;padding:12px 8px;transition:transform .2s,box-shadow .2s,border .2s;display:flex;box-shadow:0 6px 18px #0000000f}.journey-step:hover{transform:translateY(-2px);box-shadow:0 10px 26px #0000001a}.journey-step-number{background:var(--chip-color,var(--pl-gold));width:22px;height:22px;color:var(--pl-ivory);border-radius:50%;justify-content:center;align-items:center;font-size:11.5px;font-weight:700;display:flex}.journey-step-code{color:var(--ink);font-size:12.5px;font-weight:700}.journey-step-title{color:var(--ink-soft);text-align:center;font-size:11.5px;font-weight:600;line-height:1.25}.journey-step-date{color:var(--ink-faint);text-align:center;font-size:10.5px}.journey-step--active{border:2px solid var(--pl-gold);box-shadow:0 12px 30px #0000001f, 0 0 0 3px var(--pl-gold-soft);transform:translateY(-4px)}.journey-step--active:hover{transform:translateY(-4px)}.journey-step--active .journey-step-number{background:var(--pl-gold)}.timeline{height:100%;position:relative}.timeline-label{z-index:5;text-transform:uppercase;letter-spacing:.04em;width:fit-content;color:var(--explore-text-soft);pointer-events:none;font-size:11px;font-weight:700;position:sticky;top:6px;left:14px}.timeline--empty{color:var(--explore-text-soft);padding:20px;font-size:13px}.timeline-track{min-width:100%;height:100%;position:relative}.timeline-axis{background:var(--line);height:1px;position:absolute;top:14px;left:0;right:0}.timeline-tick{color:var(--explore-text-soft);font-size:11px;font-weight:600;position:absolute;top:0;transform:translate(-50%)}.timeline-tick:after{content:"";background:var(--line);opacity:.6;width:1px;height:150px;margin:3px auto 0;display:block}.timeline-node{cursor:pointer;background:0 0;border:none;align-items:center;height:20px;padding:0;display:flex;position:absolute}.timeline-node-dot{background:var(--chip-color,var(--gold));border:2px solid var(--gold);z-index:1;border-radius:50%;width:12px;height:12px;display:block;position:relative}.timeline-node-tooltip{z-index:20;box-sizing:border-box;background:var(--navy);border:1px solid var(--gold);border-radius:var(--radius-sm);text-align:center;pointer-events:none;width:max-content;max-width:220px;padding:6px 9px;line-height:1.35;position:fixed;transform:translate(-50%,calc(-100% - 10px))}.timeline-node-tooltip-date{color:var(--pl-ivory);white-space:nowrap;font-size:11px;font-weight:700}.timeline-node-tooltip-event{color:#f7f2e8bf;margin-top:2px;font-size:10.5px}.timeline-node-tooltip:after{content:"";border-left:6px solid #0000;border-right:6px solid #0000;border-top:7px solid var(--gold);position:absolute;bottom:-7px;left:50%;transform:translate(-50%)}.timeline-node-tooltip:before{content:"";z-index:1;border-left:5px solid #0000;border-right:5px solid #0000;border-top:6px solid var(--navy);position:absolute;bottom:-5.5px;left:50%;transform:translate(-50%)}.timeline-node-bar{background:var(--gold);opacity:.55;border-radius:1px;height:2px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.timeline-node--active .timeline-node-dot{transform:scale(1.35);box-shadow:0 0 0 4px #c9972b66,0 0 10px 2px #c9972b8c}.timeline-node--active .timeline-node-bar{opacity:.9}.flatmap{width:100%;height:100%;position:relative}.flatmap--journey-atlas{background:var(--pl-paper)}.flatmap-svg{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.flatmap-svg:active{cursor:grabbing}.flatmap-bg{fill:var(--explore-ocean)}.flatmap-bg--journey{fill:var(--pl-paper)}.flatmap-grain{pointer-events:none;mix-blend-mode:multiply}.flatmap-land{fill:var(--explore-land);stroke:var(--explore-coast);stroke-width:1px;filter:url(#landBevel)drop-shadow(2px 4px 3px #020b1866)}.flatmap-land--journey{fill:url(#journeyLandShade);stroke:#78582e66;stroke-width:1.1px;filter:url(#landBevel)drop-shadow(3px 6px 8px #3a240947)}.flatmap-route{fill:none;stroke-linecap:round;stroke-linejoin:round;transition:stroke .25s,stroke-width .25s,opacity .25s}.flatmap-route--completed{stroke:#1a3a5c;stroke-width:2.5px;opacity:1}.flatmap-route--future{stroke:#826e464d;stroke-width:1.5px}.flatmap-marker{cursor:pointer}.flatmap-marker:hover{filter:drop-shadow(0 0 3px #020b1873)}.flatmap-marker--active{filter:drop-shadow(0 0 0 2px var(--gold)) drop-shadow(0 0 4px #c9972bb3)}.flatmap-marker-tooltip{z-index:20;box-sizing:border-box;background:var(--navy);border:1px solid var(--gold);border-radius:var(--radius-sm);text-align:center;width:max-content;max-width:220px;line-height:1.35;font-family:var(--font-body);pointer-events:none;padding:6px 9px;position:fixed;transform:translate(-50%,calc(-100% - 10px))}.flatmap-marker-tooltip-code{color:var(--pl-ivory);white-space:nowrap;font-size:11px;font-weight:700}.flatmap-marker-tooltip-event{color:#f7f2e8bf;margin-top:2px;font-size:10.5px}.flatmap-marker-tooltip:after{content:"";border-left:6px solid #0000;border-right:6px solid #0000;border-top:7px solid var(--gold);position:absolute;bottom:-7px;left:50%;transform:translate(-50%)}.flatmap-marker-tooltip:before{content:"";z-index:1;border-left:5px solid #0000;border-right:5px solid #0000;border-top:6px solid var(--navy);position:absolute;bottom:-5.5px;left:50%;transform:translate(-50%)}.flatmap-waypoint{cursor:pointer}.flatmap-waypoint-medallion{fill:var(--pl-bg-dark);stroke:color-mix(in srgb, var(--pl-gold) 90%, transparent);stroke-width:2px;filter:drop-shadow(0 3px 5px #00000047);transform-box:fill-box;transform-origin:50%;transition:transform .2s,stroke-width .2s,filter .2s}.flatmap-waypoint:hover .flatmap-waypoint-medallion{transform:scale(1.08)}.flatmap-waypoint-number{fill:#f5e8c8;text-anchor:middle;font-size:13px;font-weight:700;transition:fill .2s}.flatmap-waypoint--active .flatmap-waypoint-medallion{fill:var(--pl-gold);stroke-width:2.5px;filter:drop-shadow(0 0 3px #d7a329a6)drop-shadow(0 0 11px #d7a32973);transform:scale(1.16)}.flatmap-waypoint--active .flatmap-waypoint-number{fill:var(--pl-bg-dark)}.flatmap-waypoint-tooltip{opacity:0;pointer-events:none;transition:opacity .15s}.flatmap-waypoint:hover .flatmap-waypoint-tooltip{opacity:1}.flatmap-waypoint-tooltip rect{fill:var(--pl-bg-dark)}.flatmap-waypoint-tooltip text{fill:var(--pl-ivory);text-anchor:middle;font-size:11px;font-weight:600}.flatmap-waypoint-leader{stroke:#020b1866;stroke-width:1px;stroke-dasharray:2 2}.flatmap-cluster{cursor:pointer}.flatmap-cluster circle{fill:var(--navy);stroke:var(--gold);stroke-width:2px}.flatmap-cluster text{fill:var(--paper);text-anchor:middle;font-size:12px;font-weight:700}.flatmap-cluster:hover circle{stroke-width:3px}.flatmap-controls{flex-direction:column;gap:4px;display:flex;position:absolute;bottom:14px;right:14px}.flatmap-controls button{border:1px solid var(--line);background:var(--paper);width:30px;height:30px;color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;font-size:15px;line-height:1}.flatmap-controls button:hover{border-color:var(--gold);color:var(--gold)}@media (width<=768px){.app-shell[data-mode=journey]{grid-template-rows:auto minmax(0,55fr) auto minmax(0,45fr);grid-template-areas:"header""map""steps""card";height:100vh;display:grid}.app-shell[data-mode=journey] .app-header{grid-area:header;justify-content:flex-end;align-items:center;min-height:44px;max-height:44px;padding:6px 14px}.app-shell[data-mode=journey] .app-header-title,.app-shell[data-mode=journey] .app-header-meta{display:none}.app-shell[data-mode=journey] .app-main{display:contents}.app-shell[data-mode=journey] .app-map{border:none;border-bottom:1px solid var(--line);border-radius:0;grid-area:map;width:100%;height:100%;margin:0}.app-shell[data-mode=journey] .flatmap-controls{display:none}.app-shell[data-mode=journey] .app-timeline{grid-area:steps;height:auto;padding:10px 0}.app-shell[data-mode=journey] .journey-steps{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;gap:8px;height:auto;padding:0 12px;overflow-x:auto}.app-shell[data-mode=journey] .journey-step{scroll-snap-align:center;flex:none;width:108px;min-width:108px}.app-shell[data-mode=journey] .app-side{border-left:none;border-top:1px solid var(--line);grid-area:card;width:100%;height:100%;padding:0 16px;overflow-y:auto}.app-shell[data-mode=journey] .node-card--journey{padding:18px 0 20px}.app-shell[data-mode=journey] .node-card-journey-headline{margin-bottom:16px;font-size:19px}.app-shell[data-mode=journey] .node-card-journey-block p{font-size:14.5px;line-height:1.5}.app-shell[data-mode=journey] .node-card-journey-nav{background:var(--pl-ivory);border-top:1px solid var(--line);margin:16px -16px 0;padding:12px 16px;position:sticky;bottom:0}.app-shell[data-mode=explore]{height:auto;min-height:100vh}.app-shell[data-mode=explore] .app-header{align-items:center;min-height:44px;max-height:44px;padding:6px 14px}.app-shell[data-mode=explore] .app-header h1{display:none}.app-shell[data-mode=explore] .app-header-eyebrow{margin-bottom:0;font-size:9px}.app-shell[data-mode=explore] .app-header-meta{display:none}.app-shell[data-mode=explore] .filters-panel{padding:8px 14px}.app-shell[data-mode=explore] .app-main{flex-direction:column}.app-shell[data-mode=explore] .app-map{border-left:none;border-right:none;border-radius:0;flex:none;width:100%;height:50vh;margin:0}.app-shell[data-mode=explore] .app-side{border-left:none;border-top:1px solid var(--explore-coast);flex:none;width:100%;max-height:60vh;overflow-y:auto}.app-shell[data-mode=explore] .app-timeline{flex:none;width:100%;height:120px}.app-shell[data-mode=explore] .filters-body{z-index:50;max-height:75vh;padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));background:var(--paper);border-top:2px solid var(--gold);border-radius:16px 16px 0 0;margin:0;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -8px 24px #020b1859}.app-shell[data-mode=explore] .filters-row{flex-direction:column;align-items:stretch;gap:10px}.app-shell[data-mode=explore] .filter-field select{width:100%;min-width:0}.app-shell[data-mode=explore] .filters-backdrop{z-index:49;background:#020b1873;display:block;position:fixed;inset:0}}.filters-backdrop{display:none}
