@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap');
:root{--ink:#17191b;--paper:#e8e5dc;--yellow:#f3d33b;--orange:#ef6e3a;--line:#303337;--muted:#74736c}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Barlow Condensed',Arial,sans-serif;overflow-x:hidden}.noise{position:fixed;inset:0;pointer-events:none;opacity:.11;z-index:10;background-image:radial-gradient(#000 0.7px,transparent .7px);background-size:5px 5px;mix-blend-mode:multiply}.topbar{height:78px;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid var(--ink);background:var(--paper);position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.brand-mark{display:grid;place-items:center;width:38px;height:38px;background:var(--ink);color:var(--yellow);font-weight:800;font-size:24px;transform:skew(-8deg);box-shadow:5px 5px 0 var(--yellow)}.brand strong{display:block;font-size:19px;letter-spacing:2px;line-height:.9}.brand small{font:9px 'Space Mono';letter-spacing:1.5px}.accent,h1 span,h2 span{color:var(--orange)}.top-meta,.updated,.legend,.coordinates,footer{font:10px 'Space Mono';letter-spacing:1px}.signal-dot{display:inline-block;width:7px;height:7px;background:var(--orange);border-radius:50%;margin-right:5px}.slash{margin:0 12px;color:var(--orange)}nav{display:flex;align-items:center;gap:25px;font-size:16px;font-weight:600}nav a{color:inherit;text-decoration:none}nav a:hover{color:var(--orange)}.bili{background:var(--ink);color:var(--paper);padding:9px 13px}.hero{min-height:600px;display:grid;grid-template-columns:1fr 1fr;padding:90px 10vw 75px;border-bottom:2px solid var(--ink);position:relative;overflow:hidden}.hero-copy{max-width:580px;z-index:1}.eyebrow{font:11px 'Space Mono';letter-spacing:1.5px;font-weight:700;margin:0 0 18px}.hero h1{font-size:clamp(70px,10vw,145px);line-height:.82;letter-spacing:-4px;margin:0 0 30px;font-weight:800}.intro{font-size:20px;max-width:430px;line-height:1.3}.hero-actions{display:flex;align-items:center;gap:25px;margin-top:38px}.button{border:2px solid var(--ink);font:700 15px 'Barlow Condensed';letter-spacing:.5px;padding:13px 18px;text-decoration:none;color:var(--ink);background:transparent;cursor:pointer;display:inline-flex;gap:22px;align-items:center}.button.primary{background:var(--yellow);box-shadow:6px 6px 0 var(--ink)}.button:hover{transform:translate(-2px,-2px)}.button.small{padding:9px 13px;font-size:13px;box-shadow:3px 3px 0 var(--ink)}.button.ghost{background:transparent}.updated{line-height:1.7;color:var(--muted)}.updated b{color:var(--orange)}.hero-art{position:relative;min-height:390px;transform:rotate(3deg);margin:0 -8vw 0 4vw;background:var(--ink);clip-path:polygon(8% 0,100% 6%,92% 100%,0 92%)}.sun{position:absolute;width:280px;height:280px;border-radius:50%;background:var(--yellow);top:60px;left:23%;box-shadow:0 0 0 18px var(--orange)}.ring{position:absolute;border:2px solid var(--paper);border-radius:50%;opacity:.55}.ring-a{width:450px;height:180px;top:110px;left:0;transform:rotate(-20deg)}.ring-b{width:180px;height:450px;top:-30px;left:40%;transform:rotate(35deg)}.sticker{position:absolute;right:8%;top:12%;background:var(--paper);padding:13px;font-size:21px;font-weight:700;line-height:.9;transform:rotate(9deg);box-shadow:6px 6px 0 var(--orange)}.coordinates{position:absolute;bottom:32px;left:30px;color:var(--paper);line-height:1.6}.coordinates span{color:var(--yellow)}.route-section{padding:70px 7vw 95px;background:#d6d3c9}.section-head{display:flex;justify-content:space-between;align-items:end;border-bottom:2px solid var(--ink);padding-bottom:22px}.section-head h2,.about h2{font-size:60px;line-height:.85;margin:0;font-weight:800}.controls{display:flex;gap:12px}.legend{display:flex;gap:28px;margin:20px 0 38px;color:var(--muted)}.legend-dot{display:inline-block;width:10px;height:10px;background:var(--yellow);margin-right:7px;border:1px solid var(--ink)}.legend-dot.white{background:var(--paper)}.sample-note{margin-left:auto;color:var(--orange)}.timeline{display:flex;flex-direction:column;gap:30px}.chapter{position:relative}.chapter-head{display:flex;align-items:center;gap:15px;cursor:pointer;user-select:none}.chapter-no{font:12px 'Space Mono';background:var(--ink);color:var(--yellow);padding:9px 11px}.chapter-title{font-size:27px;font-weight:700}.chapter-arrow{margin-left:auto;font-size:25px;transition:transform .2s}.chapter.closed .chapter-arrow{transform:rotate(-90deg)}.chapter-track{border-left:2px solid var(--ink);margin:13px 0 0 17px;padding:18px 0 5px 35px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.chapter.closed .chapter-track{display:none}.episode{background:var(--paper);border:2px solid var(--ink);min-height:177px;padding:18px;position:relative;box-shadow:6px 6px 0 var(--ink);transition:transform .2s}.episode:hover{transform:translate(-3px,-3px)}.episode:before{content:'';position:absolute;width:13px;height:13px;background:var(--yellow);border:2px solid var(--ink);border-radius:50%;left:-44px;top:25px}.episode.side:before{background:var(--paper)}.episode-tag{font:10px 'Space Mono';color:var(--orange);font-weight:700}.episode h3{font-size:25px;margin:15px 0 10px;line-height:.95}.episode p{margin:0;color:#666;font-size:15px}.video-link{display:inline-block;margin-top:18px;color:var(--ink);font:700 12px 'Space Mono';text-decoration:none;border-bottom:2px solid var(--orange)}.video-link.disabled{color:var(--muted);border-color:var(--muted);cursor:not-allowed}.about{display:grid;grid-template-columns:1fr 2fr 1.4fr;gap:40px;padding:80px 10vw;background:var(--ink);color:var(--paper);align-items:start}.about-label{font:12px 'Space Mono';color:var(--yellow);line-height:1.5}.about h2{font-size:64px}.about p:last-child{font-size:18px;line-height:1.35;color:#bbb;margin-top:5px}footer{padding:22px 7vw;background:var(--yellow);display:flex;justify-content:space-between}
@media(max-width:760px){.topbar{height:65px;padding:0 5vw}.top-meta,nav a:not(.bili){display:none}.brand small{font-size:8px}.hero{display:block;padding:70px 8vw 35px}.hero h1{font-size:82px}.hero-art{margin:55px -4vw 0 0;min-height:280px}.sun{width:190px;height:190px;left:25%;top:45px}.hero-actions{align-items:flex-start;flex-direction:column;gap:16px}.section-head{align-items:flex-start;flex-direction:column;gap:20px}.section-head h2{font-size:52px}.legend{flex-wrap:wrap;gap:12px}.sample-note{margin-left:0;width:100%;line-height:1.5}.chapter-track{grid-template-columns:1fr;padding-left:25px}.episode:before{left:-34px}.about{grid-template-columns:1fr;padding:55px 8vw;gap:25px}.about h2{font-size:55px}footer{font-size:8px}}

/* Control room, ambient motion and music player */
:root{--user-bg:none;--bg-opacity:0}.ambient{position:fixed;inset:0;z-index:-2;overflow:hidden;background-image:var(--user-bg);background-size:cover;background-position:center;opacity:var(--bg-opacity);filter:saturate(.7)}.ambient:after{content:'';position:absolute;inset:0;background:linear-gradient(120deg,rgba(243,211,59,.25),transparent 45%,rgba(239,110,58,.18))}.ambient i{position:absolute;width:8px;height:8px;border:1px solid var(--orange);background:var(--yellow);transform:rotate(45deg);animation:drift 14s linear infinite;opacity:.7}.ambient i:nth-child(1){left:12%;top:80%;animation-delay:-2s}.ambient i:nth-child(2){left:37%;top:60%;animation-delay:-7s}.ambient i:nth-child(3){left:70%;top:90%;animation-delay:-10s}.ambient i:nth-child(4){left:88%;top:42%;animation-delay:-4s}.ambient i:nth-child(5){left:54%;top:20%;animation-delay:-12s}.ambient.paused i{animation-play-state:paused}.no-grid .noise{display:none}@keyframes drift{0%{transform:translate(0,0) rotate(45deg);opacity:0}15%{opacity:.8}100%{transform:translate(-90px,-110vh) rotate(405deg);opacity:0}}.icon-button{border:2px solid var(--ink);background:var(--yellow);font-size:20px;width:38px;height:38px;cursor:pointer;box-shadow:3px 3px 0 var(--ink)}.topbar .icon-button{margin-left:12px}.editor{position:fixed;z-index:20;right:0;top:0;width:min(480px,100%);height:100vh;background:var(--paper);border-left:3px solid var(--ink);box-shadow:-15px 0 40px #0002;transform:translateX(105%);transition:transform .35s ease;overflow:auto}.editor.open{transform:translateX(0)}.editor-head{padding:32px 28px 22px;background:var(--ink);color:var(--paper);display:flex;justify-content:space-between}.editor-head h2{font-size:43px;line-height:.8;margin:8px 0}.editor-head .eyebrow{color:var(--yellow);margin:0}.editor-head small{font:11px 'Space Mono';color:#aaa}.close-button{border:0;background:none;color:var(--yellow);font-size:34px;cursor:pointer}.editor-tabs{display:flex;border-bottom:2px solid var(--ink)}.editor-tabs button{flex:1;padding:15px;border:0;background:transparent;font:700 16px 'Barlow Condensed';cursor:pointer}.editor-tabs button.active{background:var(--yellow)}.editor-body{padding:24px 28px}.hidden{display:none!important}.edit-section{border-bottom:1px solid #aaa;padding-bottom:20px;margin-bottom:20px}.edit-section h3{margin:0 0 18px;font-size:23px}.edit-section h3 small{font:9px 'Space Mono';color:var(--orange)}.edit-section label{display:block;font:12px 'Space Mono';margin:13px 0}.edit-section input:not([type=checkbox]),.edit-section textarea,.content-row input,.music-row input{width:100%;margin-top:6px;border:2px solid var(--ink);background:#f4f1e9;padding:10px;font:14px 'Barlow Condensed';color:var(--ink)}.edit-section textarea{resize:vertical}.check{display:flex!important;align-items:center;gap:9px}.check input{accent-color:var(--orange)}output{float:right;color:var(--orange)}.full{width:100%;justify-content:center}.hint{font-size:14px;line-height:1.4;color:var(--muted)}.hint a{color:var(--orange);font-weight:bold}.content-row,.music-row{display:grid;grid-template-columns:24px repeat(5,minmax(0,1fr)) 30px;gap:6px;align-items:center;margin:7px 0}.content-row b{font:11px 'Space Mono'}.content-row input,.music-row input{margin:0;padding:7px;min-width:0}.content-row button,.music-row button{border:0;background:var(--orange);color:white;height:31px;cursor:pointer}.music-row{grid-template-columns:1fr 1fr 30px}.editor-foot{padding:18px 28px 30px;border-top:1px solid #aaa;display:flex;gap:8px;flex-wrap:wrap}.file-label{position:relative}.file-label input{position:absolute;inset:0;opacity:0}.button.danger{background:#d85c42;color:#fff;border-color:var(--ink)}.music-player{position:fixed;z-index:8;bottom:18px;left:50%;transform:translateX(-50%);width:min(820px,92vw);display:flex;align-items:center;gap:12px;background:var(--ink);color:var(--paper);padding:11px 16px;box-shadow:8px 8px 0 var(--orange)}.play-button{background:var(--yellow);border:0;width:36px;height:36px;cursor:pointer;font-weight:bold}.track-info{display:flex;flex-direction:column;min-width:170px;flex:1}.track-info small{font:9px 'Space Mono';color:var(--yellow)}.track-info b{font-size:16px}.player-control,.playlist-button{background:none;border:1px solid #777;color:var(--paper);padding:8px;cursor:pointer}.player-control.mode-control{min-width:48px;color:var(--yellow);border-color:var(--yellow)}.music-player input{accent-color:var(--yellow);width:90px}.playlist-popover{position:fixed;z-index:9;bottom:78px;left:50%;transform:translateX(110px);width:260px;max-height:min(60vh,420px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--paper);border:2px solid var(--ink);padding:15px;box-shadow:5px 5px 0 var(--ink)}.playlist-popover strong{display:block;border-bottom:1px solid #999;padding-bottom:8px}.playlist-item{display:block;width:100%;text-align:left;border:0;background:none;padding:9px;cursor:pointer;font:14px 'Barlow Condensed'}.playlist-item.selected{background:var(--yellow)}.toast{position:fixed;z-index:30;bottom:100px;left:50%;transform:translateX(-50%) translateY(20px);opacity:0;background:var(--yellow);border:2px solid var(--ink);padding:12px 18px;font-weight:bold;transition:.25s}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media(max-width:760px){.topbar .icon-button{margin-left:auto}.music-player{bottom:8px;gap:5px;padding:8px}.track-info{min-width:0}.track-info b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.music-player input{width:55px}.music-player .player-control{padding:6px 5px;font-size:12px}.music-player .mode-control{min-width:42px;font-size:10px}.playlist-popover{left:auto;right:4vw;transform:none;max-height:55vh}.editor-body{padding:20px}.editor-foot{padding:15px 20px}.content-row{grid-template-columns:22px 1fr 30px}.content-row input[data-k=category],.content-row input[data-k=tag],.content-row input[data-k=desc],.content-row input[data-k=video]{display:none}}

/* Visual layout editor */
.layout-custom{position:relative!important;transform:translate(var(--layout-x,0),var(--layout-y,0))!important;width:var(--layout-w,auto)!important;z-index:var(--layout-z,auto)!important}.layout-toolbar{position:fixed;left:14px;bottom:90px;z-index:60;display:flex;gap:6px;align-items:center;padding:8px;background:var(--ink);color:var(--paper);border:2px solid var(--yellow);box-shadow:5px 5px 0 var(--orange)}.layout-toolbar button{border:1px solid var(--yellow);background:transparent;color:var(--paper);padding:7px 9px;cursor:pointer}.layout-toolbar #layoutToggle{background:var(--yellow);color:var(--ink);font-weight:700}.layout-toolbar small{max-width:260px}.layout-editing [data-layout-target]{outline:1px dashed var(--orange);cursor:move}.layout-editing .layout-selected{outline:3px solid var(--yellow);resize:horizontal;overflow:auto}.layout-editing .layout-selected:after{content:'拖动';position:absolute;right:0;bottom:0;background:var(--yellow);color:var(--ink);padding:2px 5px;font:9px 'Space Mono';pointer-events:none}@media(max-width:760px){.layout-toolbar{left:6px;right:6px;bottom:78px;flex-wrap:wrap}.layout-toolbar small{width:100%;max-width:none}}

/* Login modal (triggered via #admin hash) */.login-modal{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}.login-modal.hidden{display:none}.login-modal-card{background:var(--paper);border:2px solid var(--ink);padding:2rem;width:min(380px,90vw);position:relative;box-shadow:10px 10px 0 var(--ink)}.login-modal-close{position:absolute;top:.5rem;right:.75rem;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--muted)}.login-modal-close:hover{color:var(--orange)}.login-modal-card h2{font-size:1.5rem;margin:0 0 1rem;color:var(--ink)}.login-modal-card label{display:block;font:10px 'Space Mono';letter-spacing:.5px;margin-bottom:.75rem;color:var(--ink)}.login-modal-card input{display:block;width:100%;margin-top:4px;padding:.5rem;border:2px solid var(--ink);font:14px 'Barlow Condensed',sans-serif;background:var(--paper)}.login-modal-card .error{color:var(--orange);font:11px 'Space Mono';margin-bottom:.5rem;min-height:1.2rem}.login-modal-card .button{margin-top:.5rem}
