@import"https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600&family=UnifrakturCook:wght@700&display=swap";:root{--parchment: #f4e8c1;--parchment-dark: #e6d7a3;--ink-brown: #3e2723;--ink-burgundy: #5d1f1f;--ink-dark: #1a1410;--gold: #b8860b;--forest-green: #2d4a2b;--blood-red: #8b0000;--stone-gray: #696969}*{box-sizing:border-box}body{margin:0;padding:0;font-family:Cinzel,serif;background-color:var(--ink-dark);color:var(--ink-brown);overflow:hidden}.map-container{width:100vw;height:100vh;position:relative;background-color:var(--parchment);background-image:radial-gradient(ellipse at top left,rgba(139,69,19,.1) 0%,transparent 50%),radial-gradient(ellipse at bottom right,rgba(139,69,19,.15) 0%,transparent 50%);box-shadow:inset 0 0 120px #8b45134d}.journal-frame{position:absolute;top:20px;left:20px;right:20px;bottom:20px;border:3px solid var(--ink-brown);border-radius:15px;background:linear-gradient(135deg,transparent 10px,var(--parchment) 10px);box-shadow:0 0 20px #00000080,inset 0 0 20px #8b451333;overflow:hidden}.map-canvas{width:100%;height:100%;cursor:grab}.map-canvas.dragging{cursor:grabbing}.title-banner{position:absolute;top:20px;left:20px;background:#f4e8c1f2;border:3px solid #8b4513;border-radius:8px;padding:12px 24px;z-index:10;font-family:Cinzel,serif;box-shadow:0 4px 12px #0000004d;text-align:left;cursor:pointer;transition:padding .2s ease,border-radius .2s ease}.title-banner--collapsed{padding:6px 14px;border-radius:6px;border-width:2px}.title-text-collapsed{font-size:.9em;color:var(--ink-brown);font-weight:700;letter-spacing:.5px}.title-text{margin:0;font-size:1.5em;color:var(--ink-brown);text-shadow:1px 1px 2px rgba(0,0,0,.1)}.title-subtitle{margin:5px 0 0;font-size:.85em;color:#5d4037;font-style:italic}.player-sidebar{width:300px;background:var(--parchment-dark);border-left:2px solid var(--ink-brown);overflow-y:auto;display:flex;flex-direction:column}.sidebar-tabs{display:flex;flex-direction:column;height:100%}.tab-bar{display:flex;border-bottom:2px solid var(--ink-brown);flex-shrink:0}.tab-btn{flex:1;padding:10px 8px;font-family:Cinzel,serif;font-size:.85em;font-weight:600;color:#5d4037;background:transparent;border:none;cursor:pointer;transition:background .15s,color .15s}.tab-btn:hover{background:#8b45131a}.tab-btn.active{color:var(--ink-burgundy);background:var(--parchment-dark);border-bottom:2px solid var(--ink-burgundy);margin-bottom:-2px}.tab-content{flex:1;overflow-y:auto;padding:20px}.notes-panel h2{font-family:UnifrakturCook,cursive;color:var(--ink-burgundy);margin:0 0 12px;text-align:center}.notes-empty,.notes-loading{text-align:center;font-size:.85em;color:#5d4037;font-style:italic;margin-top:24px}.notes-node-header{display:flex;align-items:baseline;gap:8px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid rgba(139,69,19,.2)}.notes-node-name{font-family:Cinzel,serif;font-weight:700;font-size:1em;color:var(--ink-brown)}.notes-node-type{font-size:.75em;color:#5d4037;font-style:italic;text-transform:capitalize}.notes-textarea{width:100%;min-height:200px;padding:10px;border:1px solid #8b4513;border-radius:6px;font-family:Cinzel,serif;font-size:.85em;color:var(--ink-brown);background:#fff6;resize:vertical;line-height:1.5;box-sizing:border-box}.notes-textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 4px #b8860b4d}.notes-textarea::placeholder{color:#8b7355;font-style:italic}.changelog-panel h2{font-family:UnifrakturCook,cursive;color:var(--ink-burgundy);margin:0 0 4px;text-align:center}.changelog-version{text-align:center;font-family:Cinzel,serif;font-size:.85em;color:#5d4037;margin:0 0 16px}.changelog-entry h3{font-family:Cinzel,serif;font-size:.9em;font-weight:700;color:var(--ink-burgundy);margin:0 0 4px;border-bottom:1px solid rgba(139,69,19,.2);padding-bottom:4px}.changelog-date{font-weight:400;font-size:.85em;color:#8b7355}.changelog-entry ul{margin:6px 0 16px;padding-left:18px;font-size:.85em;color:#3e2723}.changelog-entry li{margin-bottom:4px}.path-panel h2{font-family:UnifrakturCook,cursive;color:var(--ink-burgundy);margin:0 0 4px;text-align:center}.path-subtitle{text-align:center;font-size:.85em;color:#5d4037;font-style:italic;margin:0 0 16px}.departure-date{margin-bottom:16px;padding:10px;background:#ffffff4d;border-radius:6px;border:1px solid rgba(139,69,19,.2)}.departure-label{display:block;font-size:.8em;font-weight:600;color:var(--ink-burgundy);margin-bottom:6px}.departure-inputs{display:flex;gap:6px;align-items:center}.departure-day,.departure-year{width:52px;padding:5px 6px;border:1px solid #8b4513;border-radius:4px;font-family:Cinzel,serif;font-size:.85em;background:#fff;text-align:center}.departure-month{flex:1;padding:5px 6px;border:1px solid #8b4513;border-radius:4px;font-family:Cinzel,serif;font-size:.85em;background:#fff}.departure-day:focus,.departure-month:focus,.departure-year:focus{outline:none;border-color:var(--gold);box-shadow:0 0 3px #b8860b4d}.departure-display{font-size:.9em;font-weight:600;color:var(--ink-brown)}.arrival-estimate{margin-top:10px;padding:10px;background:#b8860b1a;border:1px solid rgba(184,134,11,.25);border-radius:5px}.arrival-row{display:flex;align-items:baseline;gap:6px;font-size:.85em;padding:2px 0}.arrival-label{font-weight:600;color:var(--ink-burgundy);min-width:50px}.arrival-value{color:var(--ink-brown)}.arrival-season{font-size:.75em;font-style:italic;color:#5d4037;padding-left:56px;padding-bottom:4px}.mode-toggle{display:flex;gap:4px;margin-bottom:16px;background:#8b45131a;border-radius:6px;padding:4px}.toggle-btn{flex:1;padding:8px 12px;border:1px solid transparent;border-radius:4px;background:transparent;font-family:Cinzel,serif;font-size:.8em;cursor:pointer;color:var(--ink-brown);transition:all .2s ease}.toggle-btn.active{background:var(--parchment);border-color:var(--ink-brown);box-shadow:0 1px 3px #0003;font-weight:600}.path-selection{margin-bottom:16px}.path-endpoint{display:flex;align-items:center;padding:8px 10px;margin:6px 0;background:#ffffff4d;border-radius:5px;border-left:3px solid var(--gold)}.endpoint-label{font-weight:600;margin-right:8px;color:var(--ink-burgundy);min-width:40px}.endpoint-value{color:var(--ink-brown);font-size:.9em}.manual-info{font-size:.85em;color:#5d4037;font-style:italic;margin-bottom:8px}.manual-path-list{margin:0;padding-left:20px;font-size:.9em}.manual-path-list li{padding:4px 0;color:var(--ink-brown)}.path-result{margin-bottom:16px}.path-result h3{font-family:Cinzel,serif;font-size:1em;color:var(--ink-burgundy);margin:0 0 8px;border-bottom:1px solid var(--ink-brown);padding-bottom:4px}.route-segment{display:flex;align-items:center;padding:6px 8px;margin:4px 0;background:#fff3;border-left:3px solid var(--gold);font-size:.85em}.segment-from,.segment-to{color:var(--ink-brown)}.segment-arrow{margin:0 4px;color:var(--gold)}.segment-weight{margin-left:auto;font-weight:600;color:var(--ink-burgundy)}.route-total{margin-top:10px;padding:10px;background:#b8860b26;border-radius:5px;text-align:center;font-size:1.1em}.path-error{padding:10px;background:#8b00001a;border:1px solid var(--blood-red);border-radius:5px;color:var(--blood-red);text-align:center;font-size:.9em;margin-bottom:16px}.clear-btn{width:100%;margin-top:8px}.map-legend{margin-top:10px;padding-top:10px;border-top:1px solid rgba(139,69,19,.3);display:flex;gap:20px}.legend-title{display:none}.legend-section{margin-bottom:0}.legend-subtitle{font-family:Cinzel,serif;font-size:.7em;color:var(--ink-brown);margin:0 0 4px;font-weight:600}.legend-items{display:grid;grid-template-columns:1fr 1fr;gap:2px 8px}.legend-item{display:flex;align-items:center;gap:4px;font-size:.7em;color:var(--ink-brown)}.legend-node-symbol{font-size:1.1em;line-height:1;width:16px;text-align:center;flex-shrink:0}.legend-edge-line{flex-shrink:0}.legend-label{white-space:nowrap}.admin-sidebar{width:320px;background:var(--parchment);border-right:3px solid var(--ink-brown);padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.admin-title{font-family:UnifrakturCook,cursive;color:var(--ink-burgundy);margin:0;font-size:1.6em}.admin-subtitle{color:#5d4037;font-style:italic;margin:0 0 12px;font-size:.9em}.back-link{display:inline-block;margin-bottom:16px;padding:8px 16px;background:#8b4513;color:var(--parchment);text-decoration:none;border-radius:5px;font-family:Cinzel,serif;font-size:.85em;transition:background .2s}.back-link:hover{background:sienna}.toolbar{margin-bottom:16px}.toolbar-title{font-family:Cinzel,serif;font-size:1em;margin:0 0 8px;color:var(--ink-burgundy)}.toolbar-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px}.toolbar-btn{display:flex;flex-direction:column;align-items:center;padding:8px 4px;border:2px solid var(--ink-brown);border-radius:6px;background:var(--parchment-dark);cursor:pointer;font-family:Cinzel,serif;transition:all .2s ease}.toolbar-btn:hover{transform:translateY(-1px);box-shadow:0 2px 6px #0003}.toolbar-btn.active{background:var(--ink-brown);color:var(--parchment);border-color:var(--gold)}.toolbar-icon{font-size:1.2em;font-weight:700}.toolbar-label{font-size:.7em;margin-top:2px}.editor-panel{background:var(--parchment-dark);border:1px solid var(--ink-brown);border-radius:8px;padding:14px;margin-bottom:12px}.editor-panel h3{font-family:Cinzel,serif;font-size:1em;color:var(--ink-burgundy);margin:0 0 12px}.editor-label{display:block;font-size:.85em;font-weight:600;color:var(--ink-brown);margin-bottom:10px}.editor-input{display:block;width:100%;padding:7px 10px;margin-top:4px;border:1px solid #8b4513;border-radius:4px;font-family:Cinzel,serif;font-size:.9em;background:#fff}.editor-textarea{resize:vertical;min-height:60px}.editor-input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 3px #b8860b4d}.editor-checkbox{display:flex;align-items:center;gap:8px;font-size:.85em;margin-bottom:10px;cursor:pointer}.editor-info{font-size:.8em;color:#5d4037;margin-bottom:10px;padding:6px 8px;background:#ffffff4d;border-radius:4px}.editor-actions{display:flex;gap:8px}.editor-hint{text-align:center;padding:16px;background:var(--parchment-dark);border-radius:5px;font-style:italic;font-size:.85em;color:#5d4037;margin-bottom:12px}.management-section{margin-top:auto;padding-top:16px;border-top:1px solid var(--ink-brown)}.management-section h3{font-family:Cinzel,serif;font-size:1em;color:var(--ink-burgundy);margin:0 0 10px}.graph-stats{display:flex;justify-content:space-around;margin-top:12px;padding:8px;background:#8b45131a;border-radius:4px;font-size:.8em;color:#5d4037}.medieval-button{background:linear-gradient(135deg,var(--parchment) 0%,var(--parchment-dark) 100%);border:2px solid var(--ink-brown);border-radius:5px;padding:8px 16px;font-family:Cinzel,serif;font-weight:600;font-size:.85em;color:var(--ink-brown);cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0003}.medieval-button:hover{background:linear-gradient(135deg,var(--parchment-dark) 0%,var(--parchment) 100%);box-shadow:0 4px 8px #0000004d;transform:translateY(-1px)}.medieval-button:active{transform:translateY(0);box-shadow:0 1px 2px #0003}.medieval-button.danger{background:linear-gradient(135deg,#8b0000,brown);color:#fff;border-color:#654321}.medieval-button.danger:hover{background:linear-gradient(135deg,brown,#dc143c)}.medieval-button.full-width{width:100%;margin-bottom:8px}.admin-badge{position:absolute;top:20px;left:20px;background:var(--blood-red);color:#fff;padding:8px 16px;border-radius:5px;font-family:Cinzel,serif;font-weight:700;font-size:.85em;pointer-events:none}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--parchment-dark);border-radius:5px}::-webkit-scrollbar-thumb{background:var(--ink-brown);border-radius:5px;border:2px solid var(--parchment-dark)}::-webkit-scrollbar-thumb:hover{background:var(--ink-burgundy)}@keyframes wardenFadeIn{0%{opacity:0}to{opacity:1}}@keyframes wardenSlideIn{0%{opacity:0;transform:translateY(-30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.warden-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#0a0805b3;animation:wardenFadeIn .3s ease-out}.warden-notice{position:relative;width:420px;max-width:90vw;max-height:80vh;overflow-y:auto;background:radial-gradient(ellipse at top left,rgba(139,69,19,.08) 0%,transparent 50%),radial-gradient(ellipse at bottom right,rgba(139,69,19,.12) 0%,transparent 50%),var(--parchment);border:3px solid #8b4513;border-radius:12px;padding:28px 32px;box-shadow:0 0 40px #00000080,inset 0 0 30px #8b451326,0 0 0 1px #b8860b4d;text-align:center;animation:wardenSlideIn .4s ease-out}.warden-seal{font-size:2.4em;color:var(--gold);margin-bottom:4px;text-shadow:0 2px 6px rgba(184,134,11,.4)}.warden-title{font-family:UnifrakturCook,cursive;color:var(--ink-burgundy);font-size:1.4em;margin:0 0 6px}.warden-version{font-family:Cinzel,serif;font-weight:700;font-size:1.1em;color:var(--gold);margin:0;letter-spacing:1px}.warden-date{font-family:Cinzel,serif;font-size:.8em;color:#8b7355;margin:2px 0 0}.warden-divider{height:1px;margin:16px 0;background:linear-gradient(to right,transparent,#8b4513 20%,var(--gold) 50%,#8b4513 80%,transparent)}.warden-changes{text-align:left;padding-left:20px;margin:0;font-family:Cinzel,serif;font-size:.85em;color:var(--ink-brown);line-height:1.7}.warden-changes li{margin-bottom:4px}.warden-changes li::marker{color:var(--gold)}.warden-toggle{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:6px 14px;background:transparent;border:1px solid rgba(139,69,19,.3);border-radius:4px;font-family:Cinzel,serif;font-size:.75em;color:#5d4037;cursor:pointer;transition:background .15s,border-color .15s}.warden-toggle:hover{background:#8b451314;border-color:#8b451380}.warden-chevron{font-size:.7em}.warden-previous{margin-top:12px;text-align:left}.warden-prev-entry{margin-bottom:10px}.warden-prev-entry h4{font-family:Cinzel,serif;font-size:.85em;font-weight:700;color:var(--ink-burgundy);margin:0 0 4px;border-bottom:1px solid rgba(139,69,19,.15);padding-bottom:3px}.warden-prev-date{font-weight:400;font-size:.85em;color:#8b7355}.warden-prev-entry ul{padding-left:20px;margin:4px 0 0;font-family:Cinzel,serif;font-size:.8em;color:var(--ink-brown);line-height:1.6}.warden-prev-entry li::marker{color:var(--stone-gray)}.warden-dismiss{margin-top:4px;padding:10px 32px;font-size:.9em;letter-spacing:.5px}
