
:root{--ink:#332c42;--muted:#817889;--purple:#7660a3;--deep:#574174;--lilac:#eae2f5;--paper:#f8f6f1;--line:#e6e0e8;--peach:#e8a08a;--green:#80a695;--shadow:0 16px 50px #46375310;font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button{border:0;background:none}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ae8ed0;outline-offset:4px}a{color:var(--deep)}button:hover:not(:disabled){filter:brightness(.97)}svg{display:block}button,input,select,textarea{font-size:13px}p{line-height:1.8}h1,h2,h3,p{margin:0}small{font-size:11px}button{transition:background .18s,color .18s,box-shadow .18s}header{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 36px;border-bottom:1px solid var(--line);background:#fbf9f6}header .brand{display:flex;align-items:center;gap:13px}.brandmark{height:38px;width:38px;border-radius:12px;background:var(--deep);color:#fff;display:grid;place-items:center;font-size:28px;font-family:Georgia;transform:rotate(-8deg)}.brand strong{font-size:20px;letter-spacing:2px}.brand small{display:block;letter-spacing:3px;color:var(--muted);font-size:9px;margin-top:4px}.toplinks{display:flex;align-items:center;gap:28px}.toplinks button{font-size:13px}.toplinks .active{color:var(--deep);position:relative}.toplinks .active:after{content:"";height:3px;width:20px;background:var(--purple);position:absolute;bottom:-33px;left:calc(50% - 10px);border-radius:3px}.pill{border:1px solid var(--line);border-radius:30px;padding:10px 17px;display:inline-flex;gap:8px;align-items:center;background:#fffc}.profile-button{display:flex;align-items:center;gap:12px}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#e7def1;color:var(--deep)}.shell{display:grid;grid-template-columns:84px 1fr;min-height:calc(100vh - 86px)}aside{border-right:1px solid var(--line);display:flex;align-items:center;flex-direction:column;gap:13px;padding:30px 8px;background:#fbf9f6}.navbtn{width:60px;min-height:65px;border-radius:16px;display:flex;gap:7px;align-items:center;justify-content:center;flex-direction:column;font-size:10px;color:var(--muted)}.navbtn .icon{font-size:22px;line-height:1}.navbtn.active{background:#eae2f1;color:var(--deep)}.navbottom{margin-top:auto}.main{padding:31px 32px 20px;min-width:0;max-width:1800px;width:100%;margin:auto}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--purple);font-weight:600}.intro h1{font-weight:500;font-size:31px;letter-spacing:1px;margin:10px 0 8px}.intro h1 em{font-style:normal;color:var(--purple)}.subtle{color:var(--muted);font-size:12px;line-height:1.8}.datebox{text-align:right;font-size:11px;color:var(--muted);line-height:2}.datebox strong{color:var(--ink);font-weight:500;font-size:13px}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-right:5px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 286px;gap:20px;align-items:stretch}.mapcard{border:1px solid #e2dbe7;border-radius:24px;overflow:hidden;background:#eee8f0;min-width:0;position:relative;box-shadow:var(--shadow)}.maptop{position:absolute;z-index:5;top:19px;left:20px;right:20px;display:flex;align-items:center;justify-content:space-between;gap:8px}.mapname{display:flex;gap:10px;align-items:center;background:#fffc;padding:10px 14px;border:1px solid #ffffff;border-radius:14px;box-shadow:0 3px 12px #44345505}.mapname b{font-size:13px;font-weight:600}.mapname small{color:var(--muted);font-size:9px;letter-spacing:1px;display:block;margin-top:3px}.maplive{font-size:10px;color:var(--deep);padding:9px 12px;background:#ffffffba;border:1px solid #fff;border-radius:20px;backdrop-filter:blur(10px)}.mapviewport{height:520px;overflow:hidden;position:relative;touch-action:pan-y;background:radial-gradient(ellipse at 55% 45%,#f8f2f9 0,#ebe5ee 72%);cursor:grab}.mapviewport.dragging{cursor:grabbing}.world{position:absolute;inset:0;transform-origin:center;will-change:transform}.scene{width:100%;height:100%;pointer-events:none}.point{position:absolute;z-index:2;display:flex;align-items:center;gap:7px;white-space:nowrap;transform:translate(-50%,-100%);border-radius:20px;background:#fffffff0;padding:7px 11px 7px 7px;font-size:10px;border:1px solid #fff;box-shadow:0 4px 13px #58437112;min-height:32px}.point:after{content:"";position:absolute;left:17px;bottom:-5px;width:8px;height:8px;background:inherit;transform:rotate(45deg)}.point .pdot{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#eee6f5;color:var(--deep);font-size:11px}.point[data-category=relationship] .pdot{background:#f6e1d8;color:#af765e}.point[data-category=social] .pdot{background:#dfeee4;color:#548577}.point.selected{background:var(--deep);color:#fff;border-color:var(--deep);z-index:3}.point.selected .pdot{background:#ffffff30;color:#fff}.point:hover{box-shadow:0 5px 20px #58437135}.point[hidden]{display:none}.scene-caption{position:absolute;left:26px;bottom:63px;font-size:9px;letter-spacing:1px;line-height:1.8;color:#95879f;pointer-events:none}.compass{position:absolute;right:24px;top:87px;font-family:Georgia;font-size:11px;color:#94859d;display:grid;place-items:center;gap:3px}.compass span{font-size:24px}.mapfoot{position:absolute;bottom:15px;left:18px;right:18px;display:flex;align-items:center;justify-content:space-between;z-index:4;gap:8px}.filters{display:flex;gap:2px;padding:4px;border:1px solid #fff;border-radius:30px;background:#ffffffca;box-shadow:var(--shadow)}.filters button{font-size:11px;padding:8px 13px;border-radius:20px;white-space:nowrap}.filters button.active{color:white;background:var(--deep)}.controls{display:flex;border-radius:20px;padding:3px;background:#ffffffe0;box-shadow:var(--shadow)}.controls button{width:31px;height:31px;font-size:17px}.controls .reset{font-size:12px}.rightcol{display:flex;flex-direction:column;gap:15px}.storycard{background:#fffdfa;border:1px solid var(--line);border-radius:23px;padding:22px;flex:1;position:relative;overflow:hidden}.section-label{font-size:10px;letter-spacing:1px;color:var(--muted);display:flex;align-items:center;justify-content:space-between}.tag{font-size:10px;padding:5px 8px;border-radius:6px;background:#ede7f4;color:var(--deep);display:inline-block}.portrait{height:126px;margin:12px -5px 17px;border-radius:15px;background:#efe7f4;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.portrait svg{height:135px;width:200px;position:relative;z-index:1}.portrait .circle{position:absolute;width:100px;height:100px;border-radius:50%;background:#ddd0e9;top:14px;left:calc(50% - 50px)}.storycard h2{font-size:20px;font-weight:500;line-height:1.55;margin:12px 0 9px}.storycard p{font-size:12px;color:var(--muted)}.personline{font-size:10px;color:var(--muted);margin:15px 0}.personline b{color:var(--ink);font-weight:500}.primary{border-radius:12px;background:var(--deep);color:white;min-height:43px;padding:11px 18px;display:inline-flex;align-items:center;justify-content:center;gap:15px;font-size:12px}.primary.wide{width:100%;justify-content:space-between}.secondary{border:1px solid var(--line);background:#fffafc;border-radius:12px;padding:11px 15px;min-height:43px;font-size:12px}.currentcard{border-radius:20px;padding:18px 20px;background:#eae3f0;border:1px solid #e0d6e7}.currentcard .label{font-size:10px;letter-spacing:1px;color:var(--deep)}.currentcard h3{font-size:14px;font-weight:500;margin:8px 0}.mini-bars{display:flex;gap:5px;margin:12px 0 7px}.mini-bars i{display:block;height:4px;flex:1;background:#cec2dd;border-radius:4px}.mini-bars i.on{background:var(--purple)}.currentbottom{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--deep)}.belowmap{display:flex;justify-content:space-between;margin:14px 4px 0;color:var(--muted);font-size:10px}.belowmap button{font-size:10px;text-decoration:underline;text-underline-offset:3px;color:var(--purple)}.promptbar{margin-top:23px;display:flex;align-items:center;gap:18px;padding:18px 20px;background:#fffdfb;border:1px solid var(--line);border-radius:18px}.spark{height:39px;width:39px;flex-shrink:0;display:grid;place-items:center;border-radius:12px;background:#eee6f5;font-size:23px;color:var(--purple)}.promptbar h3{font-size:13px;font-weight:500}.promptbar p{font-size:10px;color:var(--muted);margin-top:5px}.promptbar .pills{display:flex;gap:7px;margin-left:auto}.pills button{font-size:10px;border:1px solid var(--line);border-radius:20px;padding:10px 12px;white-space:nowrap}.promptbar .arrow{width:35px;height:35px;border-radius:50%;background:var(--deep);color:white;font-size:18px}.footer{display:flex;justify-content:space-between;gap:10px;margin-top:19px;font-size:9px;letter-spacing:.5px;color:#9a929e}.footer b{color:#827487;font-weight:400}.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(100px);z-index:30;background:#3e334c;color:white;padding:13px 23px;border-radius:12px;box-shadow:0 8px 30px #31233730;max-width:90vw;font-size:12px;line-height:1.6;opacity:0;transition:.2s;pointer-events:none}.toast.show{transform:translateX(-50%) translateY(0);opacity:1}dialog{padding:0;border:1px solid #ddd3e5;border-radius:24px;color:var(--ink);background:var(--paper);width:min(820px,calc(100vw - 32px));max-height:90vh;box-shadow:0 30px 120px #38274633;overscroll-behavior:contain}dialog::backdrop{background:#30283955;backdrop-filter:blur(6px)}.dialoghead{display:flex;justify-content:space-between;align-items:flex-start;padding:26px 28px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--paper);z-index:10}.dialoghead h2{font-size:23px;font-weight:500;margin-top:7px}.close{width:36px;height:36px;border-radius:50%;background:#eae4ee;font-size:20px;flex-shrink:0}.dialogbody{padding:24px 28px 28px}.dialogbody>p{font-size:13px;color:var(--muted);margin-bottom:20px}.row{display:flex;gap:12px;align-items:center}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.field{display:block;font-size:12px;margin-bottom:15px}.field>span{display:block;margin-bottom:8px;color:var(--muted)}input:not([type=checkbox]):not([type=range]),select,textarea{width:100%;border:1px solid #ddd5e3;border-radius:10px;background:#fffdfb;color:var(--ink);padding:12px;outline-offset:2px}textarea{min-height:100px;resize:vertical;line-height:1.7}input[type=range]{width:100%;accent-color:var(--purple)}input[type=checkbox]{accent-color:var(--purple);width:16px;height:16px}.personas{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:22px}.persona{border:1px solid var(--line);padding:16px 10px;border-radius:14px;text-align:left;background:#fffdfb}.persona.active{border:1px solid var(--purple);background:#eee6f4}.persona strong{display:block;font-size:13px;margin:10px 0 5px}.persona span{font-size:10px;color:var(--muted)}.persona .symbol{font-family:Georgia;font-size:23px;color:var(--purple)}.notice{font-size:11px;background:#eee8f1;padding:13px 15px;border-radius:11px;color:#796586;line-height:1.8;margin:15px 0}.actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}.timeline{position:relative;border-left:1px solid #d8ccdf;margin-left:7px;padding-left:25px}.timeline article{position:relative;padding-bottom:24px}.timeline article:before{content:"";width:9px;height:9px;background:var(--purple);border-radius:50%;position:absolute;left:-30px;top:4px;box-shadow:0 0 0 4px var(--paper)}.timeline small{color:var(--purple)}.timeline h3{font-size:15px;margin:7px 0}.timeline p{font-size:12px;color:var(--muted)}.choice{padding:19px;border-radius:15px;border:1px solid var(--line);background:#fffdfb;display:flex;flex-direction:column;gap:10px}.choice h3{font-size:15px;font-weight:500}.choice p{font-size:11px;color:var(--muted);line-height:1.8}.choice .gain{color:#58806c}.choice .loss{color:#a87966}.choice button{margin-top:auto}.choice.selected{border-color:var(--purple)}.stat{border-radius:16px;padding:18px;background:#fffdfb;border:1px solid var(--line)}.stat .number{font:36px Georgia;color:var(--deep);margin:10px 0}.stat .bar{height:5px;border-radius:5px;background:#e9e2ef;overflow:hidden}.stat .bar i{display:block;height:100%;background:var(--purple)}.stat label{font-size:12px;color:var(--muted)}.semesterline{display:grid;grid-template-columns:repeat(8,1fr);gap:7px;margin:23px 0}.semesterline div{text-align:center;border-radius:10px;padding:12px 3px;font-size:10px;color:var(--muted);background:#ede8ef}.semesterline div.active{background:var(--deep);color:white}.semesterline div.done{background:#dfd2ea;color:var(--deep)}.listitem{border-bottom:1px solid var(--line);padding:15px 0;display:flex;justify-content:space-between;align-items:center;gap:14px;font-size:12px}.listitem small{display:block;color:var(--muted);margin-top:5px}.empty{padding:30px;text-align:center;color:var(--muted);font-size:12px;border:1px dashed #d6cadf;border-radius:15px}.sources{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.source{padding:17px;border:1px solid var(--line);border-radius:15px;background:#fffdfb;min-width:0}.source h3{font-size:14px;line-height:1.7;font-weight:500;margin:10px 0}.source p{font-size:11px;line-height:1.8;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.source .sourcefoot{display:flex;gap:10px;margin-top:14px;align-items:center;justify-content:space-between;font-size:10px;color:var(--purple)}.sourcefoot button,.sourcefoot a{font-size:10px}.airesult{white-space:pre-wrap;font-size:13px;line-height:1.9;background:#fffdfa;border:1px solid var(--line);padding:20px;border-radius:15px;margin:15px 0;word-break:break-word}.checkline{display:flex;gap:10px;align-items:flex-start;font-size:11px;line-height:1.7;color:var(--muted);margin:16px 0}.reporthero{padding:25px;border-radius:18px;background:#e9dfef;margin-bottom:20px}.reporthero h3{font:25px Georgia,"Songti SC",serif;margin:10px 0;line-height:1.5}.reporthero p{font-size:12px;color:var(--deep)}.recommend{background:#fffdfa;border:1px solid var(--line);padding:20px;border-radius:16px;margin:12px 0}.recommend h3{font-size:17px;font-weight:500;margin:9px 0}.recommend p{font-size:12px;color:var(--muted)}.recommend a{font-size:12px}.maplist button{display:flex;justify-content:space-between;align-items:center;width:100%;border:1px solid var(--line);border-radius:13px;padding:20px;background:#fffdfa;margin-bottom:12px}.maplist small{color:var(--muted)}.legend-list{display:flex;flex-wrap:wrap;gap:8px}.legend-list button{padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:white;font-size:12px}.spinner{width:15px;height:15px;border:2px solid #c5b1d5;border-top-color:var(--deep);border-radius:50%;display:inline-block;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:12px;padding:20px}.error{background:#f8e9e4;color:#995c4e;padding:14px;border-radius:12px;font-size:12px;line-height:1.8}.hidden{display:none!important}.details-content{white-space:pre-wrap;font-size:13px;line-height:1.9;max-height:50vh;overflow:auto}.savehint{font-size:10px;color:var(--muted)}
@media(min-width:1500px){.mapviewport{height:590px}.main{padding:37px 45px}.workspace{grid-template-columns:minmax(0,1fr) 315px}.storycard{padding:25px}.portrait{height:155px}.storycard h2{font-size:23px}}
@media(max-width:1100px){header{padding:0 22px}.toplinks{gap:16px}.main{padding:25px 20px}.workspace{grid-template-columns:minmax(0,1fr) 250px;gap:13px}.storycard{padding:17px}.mapviewport{height:505px}.promptbar .pills button:nth-child(2){display:none}.point{font-size:9px;padding:5px 8px 5px 5px}.maplive{display:none}.intro h1{font-size:27px}.maptop{left:14px}.point .pdot{width:17px;height:17px}.filters button{padding:8px 10px}}
@media(max-width:760px){header{height:72px;padding:0 18px}.brand strong{font-size:17px}.brand small{font-size:8px}.brandmark{width:32px;height:32px}.toplinks{display:none}.profile-button span.name{display:none}.shell{display:block;min-height:calc(100vh - 72px)}aside{position:fixed;bottom:0;left:0;right:0;height:65px;z-index:15;flex-direction:row;padding:3px 12px;justify-content:space-around;gap:0;border-top:1px solid var(--line);border-right:0;background:#fbf9f6f2;backdrop-filter:blur(10px)}.navbtn{width:58px;min-height:53px;gap:4px;border-radius:10px;font-size:9px}.navbtn .icon{font-size:19px}.navbottom{margin:0}aside .desktop-only{display:none}.main{padding:24px 15px 85px}.intro{margin-bottom:18px}.intro h1{font-size:25px;letter-spacing:0;line-height:1.5;margin-top:7px}.intro .subtle{font-size:11px}.datebox{display:none}.eyebrow{font-size:9px}.workspace{grid-template-columns:1fr;gap:15px}.mapviewport{height:435px}.world{width:650px;left:50%;right:auto;transform:translateX(-50%);margin-left:-325px}.maptop{top:13px}.mapname{padding:9px 11px}.mapname b{font-size:12px}.mapname small{font-size:8px}.scene-caption{left:17px;bottom:60px;font-size:8px}.mapfoot{left:10px;right:10px;bottom:12px}.filters button{font-size:10px;padding:8px 9px}.controls button{width:27px;height:29px}.point{font-size:9px;min-height:28px}.rightcol{display:grid;grid-template-columns:1.25fr 1fr;gap:10px}.storycard{padding:16px;border-radius:18px}.storycard .portrait{height:86px;display:none}.storycard h2{font-size:16px;margin:12px 0 8px}.storycard p{font-size:10px}.storycard .personline{font-size:9px;margin:10px 0}.storycard .primary{min-height:36px;padding:9px 10px;font-size:11px}.section-label{font-size:9px}.currentcard{padding:18px 15px;display:flex;flex-direction:column;justify-content:center}.currentcard h3{font-size:13px;line-height:1.7}.currentbottom{flex-direction:column;align-items:flex-start;gap:8px}.belowmap{font-size:9px;gap:10px}.promptbar{margin-top:18px;padding:14px 12px;gap:10px}.promptbar .pills{display:none}.promptbar .arrow{margin-left:auto;flex-shrink:0}.promptbar h3{font-size:12px}.promptbar p{font-size:9px}.spark{width:32px;height:32px}.footer{font-size:8px;line-height:1.8}.footer span:last-child{display:none}dialog{width:calc(100vw - 20px);max-height:91vh;border-radius:20px}.dialoghead{padding:21px 19px 17px}.dialoghead h2{font-size:21px}.dialogbody{padding:20px 19px}.personas{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:1fr}.grid2{gap:11px}.sources{grid-template-columns:1fr}.semesterline{gap:4px}.semesterline div{font-size:9px}.stat{padding:14px}.stats-grid{grid-template-columns:repeat(3,1fr)}.stat .number{font-size:28px}.choice{padding:16px}.row.searchrow{align-items:stretch}.checkline{font-size:10px}.toast{bottom:80px}.portrait svg{width:160px}.maplive{display:block;font-size:9px;padding:7px}.compass{right:17px}.grid2 .field span{font-size:11px}}
@media(max-width:760px){header .brand strong{white-space:nowrap;font-size:16px}header .brand small{letter-spacing:1.5px}header .pill{white-space:nowrap;padding:9px 11px;font-size:10px!important}.profile-button{gap:8px}.world{width:560px;margin-left:-280px}.point:nth-child(5){left:73%!important}.point:nth-child(7){left:27%!important}.maplive{display:none}.mapname small{letter-spacing:.5px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Cinematic campus · V2 */
:root{--ink:#eee3cd;--muted:#a59e92;--purple:#d6b273;--deep:#c49a53;--lilac:#282c30;--paper:#111820;--line:#d0af702b;--peach:#cb9877;--green:#9aa98c;--shadow:0 20px 70px #0006;background:#080d14;color-scheme:dark}body{background:#080d14}h1,h2,.cinema-title,.enter-campus{font-family:"Songti SC","Noto Serif SC",STSong,Georgia,serif}button:focus-visible,a:focus-visible{outline-color:#f4ce85}header{position:fixed;z-index:12;inset:0 0 auto;height:84px;background:linear-gradient(#080e18db,#080e1844);border:0;color:#e8d3ab;padding:0 38px}.brandmark{background:transparent;border:1px solid #c5a2627a;color:#e5c68c;border-radius:50%;transform:none}.brand strong{font-family:"Songti SC",serif;font-weight:500}.brand small{color:#b39c77}.toplinks .active{color:#f0d9a9}.toplinks .active:after{background:#e4c38b;bottom:-27px}.pill{background:#1017209c;border-color:#d3b27b40;color:#e4d0ae}.avatar{background:#d1ae6b1a;color:#e4c78e;border:1px solid #c7a26555}.shell{display:block;height:100dvh;min-height:600px}.main{padding:0;max-width:none;width:100%;height:100%}aside{position:fixed;z-index:12;left:27px;top:140px;bottom:auto;padding:8px 4px;border:1px solid #d9b77523;border-radius:30px;gap:12px;background:#0d141e8c;backdrop-filter:blur(14px);width:64px}.navbtn{width:54px;min-height:62px;color:#b5b0a6}.navbtn.active{background:#d7b97a18;color:#f6da9f}.navbtn .icon{font-size:21px}.navbottom{margin-top:12px}.intro{position:fixed;left:125px;top:111px;right:40px;z-index:7;pointer-events:none;align-items:flex-start}.eyebrow{color:#cbb183;letter-spacing:3px}.intro h1{font-size:36px;font-weight:400;color:#f6e8cb;text-shadow:0 3px 25px #0009;letter-spacing:3px}.intro h1 em{color:#dbb97a}.intro .subtle{color:#c1bbb0}.datebox{color:#a5a99f}.datebox strong{color:#dfcaa3}.workspace{display:block;height:100%}.mapcard{position:fixed;inset:0;border:0;border-radius:0;box-shadow:none;background:#101a26;overflow:hidden}.mapviewport{height:100%;width:100%;background:#101a26;cursor:default;touch-action:pan-y}.world{inset:0;width:100%;height:100%;left:0;right:0;margin:0!important;transform:none;will-change:auto}.scene{display:none}.campus-art{position:absolute;inset:0;background:radial-gradient(ellipse at 55% 55%,#454333,#10202d 70%);background-size:cover;background-position:center 55%}.campus-art:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#070e1bc4 0%,#070e1b20 30%,transparent 52%,#050a1266 78%,#050a14e8 100%);pointer-events:none}.maptop{top:auto;bottom:38px;left:125px;right:auto;gap:16px}.mapname{background:#101721ba;border:1px solid #d5b06b40;color:#e5cfaa;backdrop-filter:blur(10px);border-radius:11px;padding:13px 16px}.mapname small{color:#9b9e9d;letter-spacing:1px}.maplive{background:transparent;border:0;color:#bbb6aa;font-size:11px}.compass{top:110px;right:38px;color:#d7b47b;z-index:5}.scene-caption{left:125px;bottom:112px;color:#b5afa2;font-size:11px;letter-spacing:1px}.mapfoot{left:auto;right:38px;bottom:38px;gap:16px}.filters{background:#0a131dde;border-color:#ceb07140;border-radius:10px;padding:5px;backdrop-filter:blur(12px)}.filters button{color:#bcb7aa;border-radius:6px}.filters button.active{background:#d2ad681f;color:#f1d196}.controls{border-radius:8px;background:#101822d9;border:1px solid #d0ad6b38;color:#dfc798}.rightcol,.belowmap,.promptbar,.footer{display:none}.point{width:62px;height:98px;padding:0;display:flex;flex-direction:column;gap:0;align-items:center;justify-content:flex-end;border:0;border-radius:0;background:none!important;box-shadow:none!important;white-space:nowrap;transform:translate(-50%,-100%);z-index:2;transition:none;color:#ead5ae;isolation:isolate}.point:after{display:none}.point.selected{border:0;color:#ead5ae;background:none}.student-sprite{height:78px;width:52px;overflow:visible;filter:drop-shadow(0 3px 4px #0007);flex-shrink:0}.student-name{font-size:10px;font-weight:400;letter-spacing:2px;color:#f4e9cc;text-shadow:0 2px 5px #000,0 1px 9px #000;background:#081019a6;padding:4px 9px;border:1px solid #c4ad7930;border-radius:20px;margin-top:1px;line-height:1.2}.student-hint{position:absolute;top:-12px;left:50%;transform:translateX(-50%);font-size:8px;letter-spacing:1px;color:#e5c58b;opacity:0;transition:opacity .2s}.point:hover .student-hint,.point:focus-visible .student-hint{opacity:1}.point:hover .student-sprite{filter:drop-shadow(0 0 9px #ffce7980)}.student-bob{animation:walking-bob .8s ease-in-out infinite alternate;transform-origin:center bottom}.student-leg-a{animation:walking-leg 1.3s ease-in-out infinite alternate;transform-origin:24px 56px}.student-leg-b{animation:walking-leg 1.3s ease-in-out infinite alternate-reverse;transform-origin:33px 56px}@keyframes walking-bob{to{transform:translateY(-1px)}}@keyframes walking-leg{to{transform:rotate(5deg)}}.fireflies{position:absolute;inset:0;pointer-events:none;overflow:hidden}.fireflies i{position:absolute;width:3px;height:3px;border-radius:50%;background:#ffda8b;box-shadow:0 0 7px #ffb65b;animation:firefly 6s ease-in-out infinite alternate;opacity:.5}@keyframes firefly{0%{transform:translate(0,8px);opacity:.15}100%{transform:translate(13px,-15px);opacity:.75}}body.scene-paused *{animation-play-state:paused!important}.campus-note{position:fixed;right:40px;bottom:108px;z-index:5;font-size:10px;color:#a6aaa6;letter-spacing:2px;pointer-events:none}.campus-actions{position:fixed;z-index:12;right:36px;top:192px;display:flex;flex-direction:column;gap:10px}.campus-action{background:#111923b8;backdrop-filter:blur(12px);border:1px solid #c3a06140;border-radius:50%;width:42px;height:42px;color:#dec491;font-size:17px}.campus-action:hover{background:#9e784d33}.ambient-state{position:fixed;left:125px;top:224px;z-index:7;color:#b9af9c;font-size:10px;letter-spacing:2px;display:flex;gap:9px;align-items:center}.ambient-state i{height:5px;width:5px;border-radius:50%;background:#c7a363;box-shadow:0 0 8px #e4b664}.gate{position:fixed;inset:0;z-index:50;background:#080d16;overflow:hidden;transition:opacity .65s,visibility .65s;opacity:1}.admission-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.gate:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#050b1820,transparent 58%,#070b1144 76%,#070a10ed 88%,#070a10 100%);pointer-events:none}.gate-brand{position:absolute;z-index:1;left:42px;top:32px;color:#f4ddb1;display:flex;align-items:center;gap:14px}.gate-brand strong{font:22px "Songti SC",serif;letter-spacing:4px;font-weight:400}.gate-brand small{display:block;font-size:8px;letter-spacing:3px;color:#ac9d83;margin-top:6px}.gate-topline{position:absolute;right:40px;top:38px;z-index:2;color:#bcb4a1;letter-spacing:3px;font-size:9px}.gate-bottom{position:absolute;bottom:4.5%;left:0;right:0;z-index:2;display:flex;flex-direction:column;align-items:center;gap:13px}.enter-campus{font-size:27px;letter-spacing:5px;color:#f4d89b;width:370px;max-width:85vw;min-height:63px;border:1px solid #d8b477;border-radius:35px;background:linear-gradient(#2c241bd9,#171411ed);box-shadow:0 0 35px #e5a44919,inset 0 1px #f8e7b44d;display:flex;align-items:center;justify-content:center;gap:25px}.enter-campus:hover{box-shadow:0 0 45px #e5a44935,inset 0 1px #f8e7b488;filter:none!important;background:linear-gradient(#483923dd,#221b12)}.enter-campus span{font:30px Georgia}.gate-bottom p{font-size:11px;letter-spacing:3px;color:#bdac8c}.gate-footnote{font-size:8px;color:#786f60;letter-spacing:1px}.at-gate header,.at-gate .shell,.at-gate .campus-actions,.at-gate .ambient-state,.at-gate .campus-note{visibility:hidden}.campus-entered .gate{opacity:0;visibility:hidden;pointer-events:none}.campus-entered .campus-art{animation:arrive 1s ease-out both}@keyframes arrive{from{filter:brightness(.35)}to{filter:brightness(1)}}#focusShade{position:fixed;inset:0;z-index:30;background:#0009;opacity:0;pointer-events:none;transition:opacity .18s}body.person-focused #focusShade{opacity:1;pointer-events:auto}.focus-person{position:fixed;z-index:31;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;pointer-events:auto;filter:drop-shadow(0 0 14px #ffcc737a);color:#ffe9b9}.focus-person:before{content:"";position:absolute;left:-20px;right:-20px;bottom:8px;height:95px;background:radial-gradient(ellipse,#f8cc7145,transparent 65%);z-index:-1}.focus-person .student-sprite{filter:drop-shadow(0 0 1px #fff5c6) drop-shadow(0 0 5px #efc48388)}.focus-person .student-name{background:#9c77363b;border-color:#e4c68980;color:#fff0c9}.focus-ring{position:absolute;bottom:13px;left:5px;right:5px;height:17px;border:1px solid #e9bf7580;border-radius:50%;box-shadow:0 0 16px #e9bd7955;z-index:-1}.person-card{position:fixed;z-index:32;width:350px;max-width:calc(100vw - 28px);max-height:min(620px,calc(100dvh - 40px));overflow:auto;overscroll-behavior:contain;background:linear-gradient(145deg,#1b232ef8,#101720fa);border:1px solid #cba56280;border-radius:17px;box-shadow:0 28px 90px #0009,0 0 35px #dfb3670c;color:#e5d5b7;padding:23px;backdrop-filter:blur(20px)}.person-card:before{content:"";position:absolute;left:23px;right:23px;top:0;height:1px;background:linear-gradient(90deg,transparent,#f3d99f,transparent)}.person-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.person-card .eyebrow{font-size:8px;letter-spacing:2px}.person-card h2{font-size:29px;letter-spacing:5px;margin-top:9px;font-weight:400;color:#f4dcaf}.person-card .card-close{width:28px;height:28px;border-radius:50%;color:#a99672;border:1px solid #bfa26733;font-size:17px;flex-shrink:0}.person-card .identity{font-size:11px;color:#b7aa91;margin-top:5px}.card-quote{font:15px/1.8 "Songti SC",serif;color:#d5c4a6;margin:16px 0 18px;padding-left:11px;border-left:2px solid #bd98544d}.card-tabs{display:flex;gap:23px;border-bottom:1px solid #bca26829;margin-bottom:17px}.card-tabs button{padding:0 0 9px;font-size:10px;letter-spacing:2px;color:#8d918f;position:relative}.card-tabs button.active{color:#e6c78e}.card-tabs button.active:after{content:"";height:2px;position:absolute;left:0;right:0;bottom:-1px;background:#d4b178}.person-story{border-left:1px solid #b89c632f;margin-left:4px;padding-left:16px}.person-story article{position:relative;margin-bottom:14px}.person-story article:before{content:"";height:5px;width:5px;position:absolute;top:5px;left:-19px;border-radius:50%;background:#d2b179;box-shadow:0 0 7px #f5cc6733}.person-story small{font-size:8px;letter-spacing:2px;color:#bca378}.person-story p{font-size:11px;line-height:1.9;color:#c2c0b7;margin-top:4px}.person-card .card-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:18px;padding-top:14px;border-top:1px solid #bca26829;font-size:8px;color:#8d9089;letter-spacing:1px}.card-enter{color:#ebcc92;font-size:11px;border:1px solid #bea0654d;border-radius:7px;padding:10px 13px;background:#ba965116}.animation-slot{height:180px;border-radius:10px;border:1px dashed #bba06755;display:grid;place-content:center;gap:10px;text-align:center;background:radial-gradient(ellipse,#b4904930,#111a26);color:#b8a27c}.animation-slot .play{width:44px;height:44px;border:1px solid #c8a56b55;border-radius:50%;display:grid;place-items:center;justify-self:center;font-size:17px;color:#e1c188}.animation-slot strong{font-size:12px;font-weight:400;letter-spacing:2px}.animation-slot small{font-size:9px;color:#8e958f}.freeze-label{position:fixed;z-index:31;left:50%;bottom:24px;transform:translateX(-50%);font-size:10px;color:#c9b48c;letter-spacing:3px;pointer-events:none;white-space:nowrap}dialog{background:#111923;color:#e6dcc9;border:1px solid #b59b694f;box-shadow:0 30px 140px #000c}dialog::backdrop{background:#000a;backdrop-filter:blur(5px)}.dialoghead{background:#111923}.dialoghead h2{font-weight:400;color:#edd6ac}.close{background:#d2b16c14;color:#d9bd8e}.dialogbody>p,.subtle{color:#a7a79f}.field>span{color:#b5ad9e}input:not([type=checkbox]):not([type=range]),select,textarea{background:#0b131d;border-color:#ccb17430;color:#e8ddc6}.persona,.choice,.source,.stat,.recommend,.airesult{background:#17212c;border-color:#b69f7130}.persona.active{background:#9f7b3530;border-color:#c7a363}.persona strong{color:#eed7a8}.persona span{color:#a9a59a}.notice,.reporthero{background:#b18e4812;color:#c0b39a}.tag{background:#b5944c1f;color:#dec38e}.primary{background:linear-gradient(145deg,#c6a25e,#94733d);color:#111922}.secondary,.legend-list button,.maplist button{background:#17212b;border-color:#c7a66a38;color:#d4c1a0}.timeline p,.choice p,.source p,.recommend p{color:#b8b8b0}.choice .gain{color:#9fb19a}.choice .loss{color:#c1a488}.stat .number{color:#e7c98f}.stat .bar{background:#2b3136}.semesterline div{background:#1d2932;color:#9ea699}.semesterline div.active{background:#ad8c4e;color:#0e1922}.semesterline div.done{background:#6f613e;color:#f1d69f}.error{background:#713c332f;color:#d3a396}.toast{background:#222821;border:1px solid #bca06455;color:#ecd7ad}.reporthero p{color:#c4b99f}a{color:#dabb81}.empty{border-color:#bea16c33}.modal-open .point{pointer-events:none}
@media(max-width:1100px){.intro{left:112px;top:107px}.intro h1{font-size:30px}.maptop{left:110px;bottom:28px}.maplive{display:none}.mapfoot{right:25px;bottom:28px}.scene-caption{left:110px;bottom:100px}.campus-note{display:none}.ambient-state{left:113px;top:213px}.person-card{width:325px;padding:19px}.point{width:58px;height:90px}.student-sprite{height:72px;width:48px}}
@media(max-width:760px){header{height:72px;padding:0 19px}header .brand strong{font-size:16px}.shell{min-height:100dvh}.main{padding:0;height:100dvh}.intro{top:100px;left:23px;right:24px}.intro h1{font-size:27px;letter-spacing:2px;line-height:1.4;margin:8px 0}.intro .subtle{font-size:10px}.intro .eyebrow{font-size:8px}.mapviewport{height:100dvh}.world{width:100%;height:100%;left:0;margin-left:0!important}.campus-art{background-position:52% center}.point:nth-child(5),.point:nth-child(7){left:var(--character-x)!important}.point{width:45px;height:82px}.student-sprite{width:40px;height:65px}.student-name{font-size:8px;letter-spacing:1px;padding:3px 7px}.ambient-state{left:24px;top:201px;font-size:8px;letter-spacing:1px}.maptop{left:18px;bottom:100px;right:auto}.mapname{padding:10px 12px;border-radius:9px}.mapname b{font-size:10px}.mapname small{font-size:7px}.scene-caption,.compass,.controls{display:none}.mapfoot{left:18px;right:18px;bottom:154px;justify-content:flex-start}.filters{padding:4px}.filters button{font-size:9px;padding:7px 10px}.campus-actions{right:18px;top:214px}.campus-action{height:35px;width:35px;font-size:14px}aside{left:18px;right:18px;top:auto;bottom:17px;width:auto;height:62px;flex-direction:row;padding:4px 8px;justify-content:space-around;gap:0;border:1px solid #c4a66835;border-radius:15px;background:#0b1421d9}.navbtn{width:55px;min-height:48px;gap:4px;border-radius:9px;font-size:9px}.navbtn .icon{font-size:17px}.navbottom{margin:0}.person-card{width:min(320px,calc(100vw - 28px));padding:18px;max-height:calc(100dvh - 110px);border-radius:14px}.person-card h2{font-size:25px}.person-story p{font-size:11px}.freeze-label{font-size:8px;letter-spacing:1px;bottom:20px}.gate-brand{left:22px;top:24px;gap:10px}.gate-brand strong{font-size:18px}.gate-brand small{font-size:7px;letter-spacing:2px}.gate-topline{display:none}.admission-art{object-position:50% center}.gate-bottom{bottom:8%;gap:15px}.enter-campus{width:280px;min-height:57px;font-size:23px;letter-spacing:3px}.gate-bottom p{font-size:9px;letter-spacing:2px}.gate:after{background:linear-gradient(180deg,#080e1820,transparent 55%,#080d1588 75%,#080d15 90%)}.gate-footnote{font-size:7px}.dialoghead{padding:21px 19px}.dialogbody{padding:20px 19px}}
@media(prefers-reduced-motion:reduce){.gate{transition:none}.student-bob,.student-leg-a,.student-leg-b,.fireflies i,.campus-art{animation:none!important}}

.campus-art{background-image:url("/media/ec293a0f90254ad4dedfb75f65b426066f5d8fce64984dcfd882b952b4964267.webp")}

.campus-entered header,.campus-entered .shell,.ambient-state,.campus-actions{user-select:none}.person-card,dialog{user-select:text}
/* V3: cinematic character archive */
header{height:78px;background:linear-gradient(#04080d88,transparent);padding:0 38px;justify-content:flex-end;gap:30px}header>.brand{display:none}.toplinks{margin-left:auto;gap:26px}.toplinks button{font:18px 'Songti SC',STSong,serif;letter-spacing:2px;color:#e6ca8d}.toplinks button.active:after{display:none}.profile-button .avatar,.profile-button .name{display:none}.profile-button .pill{border:0;background:none;font:14px 'Songti SC',serif;padding:0}.intro{left:54px;top:26px;right:auto}.intro .eyebrow{font:16px 'Songti SC',STSong,serif;letter-spacing:3px;color:#e8c986;border-bottom:1px solid #ba964e;padding:0 8px 13px;position:relative}.intro .eyebrow:before{content:'◇';position:absolute;left:-18px;bottom:-9px;font-size:15px}.intro h1{font-size:38px;letter-spacing:7px;margin:13px 0;color:#f8e7b5}.intro h1 em{color:inherit;font-style:normal}.intro .subtle,.datebox,aside,.compass,.scene-caption,.maplive{display:none}.ambient-state{top:auto;bottom:32px;left:50%;transform:translateX(-50%);z-index:14;padding:12px 35px;background:#0b0c10ac;border:1px solid #a98a4d;outline:1px solid #a98a4d66;outline-offset:4px;font:15px 'Songti SC',serif;letter-spacing:2px;color:#e9c887;white-space:nowrap}.ambient-state:before,.ambient-state:after{content:'◇';color:#cba257}.ambient-state i{display:none}.maptop{left:38px;bottom:31px}.mapname{background:transparent;border:none;padding:0;backdrop-filter:none;font-family:'Songti SC',serif}.mapname b{font-size:17px;font-weight:400}.mapname>span{font-size:42px;color:#e4c17e}.mapname small{font-size:8px}.mapfoot{bottom:30px;right:32px}.filters{background:#080c12aa;border-color:#b9964c5c}.filters button{font-size:10px}.controls{display:none}.campus-actions{top:98px;right:28px;gap:8px}.campus-action{width:32px;height:32px;font-size:13px;background:#0b101980;border-color:#c7a56838}.campus-note{display:none}.campus-art:after{background:linear-gradient(180deg,#04081744,transparent 28%,transparent 74%,#05090e66)}
.point{width:64px;height:148px;justify-content:flex-end;transform-origin:bottom center}.realistic-student{width:55px;height:145px;filter:brightness(.85) saturate(.8) drop-shadow(0 3px 3px #0008);animation:realisticWalk 2.8s ease-in-out infinite;transform-origin:50% 96%}.point:nth-child(2n) .realistic-student{animation-delay:-1.3s}.point:nth-child(3n) .realistic-student{animation-delay:-.7s}.point .student-name,.focus-person .student-name,.student-hint{display:none!important}.point:before{content:'';position:absolute;width:42px;height:11px;left:50%;bottom:4px;transform:translateX(-50%);border:1px solid #deb25b80;border-radius:50%;box-shadow:0 0 7px #f7b93c25;background:#0002}.point:focus-visible{outline:none}.point:focus-visible .realistic-student{filter:drop-shadow(0 0 2px #fff0ad) drop-shadow(0 0 6px #d9a04b)}@keyframes realisticWalk{0%,100%{transform:translateY(0) rotate(-.5deg)}50%{transform:translateY(-1.5px) rotate(.5deg)}}.scene-paused .realistic-student{animation-play-state:paused!important}
#focusShade{background:rgba(0,0,0,.58)}.focus-person{align-items:center;justify-content:flex-end;filter:none;pointer-events:auto}.focus-person .realistic-student{animation:none!important;filter:brightness(1.05) saturate(.9) drop-shadow(1px 0 1px #e8b747) drop-shadow(-1px 0 1px #e8b747) drop-shadow(0 0 6px #f5b54499)}.focus-ring{width:57px;height:17px;left:50%;bottom:3px;transform:translateX(-50%);border:2px solid #ffe3a0;box-shadow:0 0 8px #ffe492,0 0 18px #eaa9288a,inset 0 0 7px #ffde7b80;background:#d4961f12}.person-focused #focusConnector{display:block}.person-focused .ambient-state{opacity:0}#focusConnector{display:none;position:fixed;inset:0;width:100%;height:100%;z-index:31;pointer-events:none}#connectorPath{fill:none;stroke:#e4ba65;stroke-width:1.2}#connectorStart,#connectorEnd{fill:#f1cd82}.person-card{width:320px;padding:21px 24px 16px;border:1px solid #d3ad61;outline:1px solid #b48a48;outline-offset:4px;border-radius:0;background:repeating-linear-gradient(135deg,#ffffff02 0px,#ffffff02 1px,transparent 1px,transparent 4px),linear-gradient(130deg,#171611f7,#090c0ff9);box-shadow:0 15px 65px #0008;backdrop-filter:blur(14px);font-family:'Songti SC',STSong,Georgia,serif;max-height:calc(100dvh - 120px);overflow:auto}.person-card:before{display:none}.person-card .eyebrow{font-family:inherit;font-size:13px;letter-spacing:2px;color:#e8c17a}.person-card h2{font-size:35px;letter-spacing:5px;font-weight:400;line-height:1.2;color:#fff0c5;margin:12px 0 7px}.person-card .identity{font-size:14px;letter-spacing:1px;color:#e4d4ae}.person-card-top{gap:2px;align-items:flex-start}.card-close{border:none;background:none;color:#bfa877;font-size:19px;width:22px;height:22px;margin-right:-12px;margin-top:-10px}.gold-divider{height:1px;background:linear-gradient(90deg,#ddbd77,#bc9750,transparent);margin:15px 0 13px}.story-label{color:#dfb86e;font-size:16px;font-weight:400;letter-spacing:2px;margin:0 0 9px}.archive-timeline{margin:0 0 15px 7px;border-left:1px solid #9e7e45}.archive-timeline details{margin:0;position:relative;padding:0 0 10px 19px}.archive-timeline details:last-child{padding-bottom:0}.archive-timeline summary{list-style:none;cursor:pointer;color:#f2e9d2;font-size:14px;letter-spacing:1px;line-height:1.6;outline-offset:4px}.archive-timeline summary::-webkit-details-marker{display:none}.archive-timeline summary:before{content:'';width:9px;height:9px;border-radius:50%;border:1px solid #e8c277;background:#151512;position:absolute;left:-5px;top:6px}.archive-timeline details[open] summary:before{background:#d5ac5a;box-shadow:0 0 6px #cda94c66}.archive-timeline details p{font-family:system-ui,sans-serif;font-size:11px;line-height:1.9;color:#b6ad98;margin:8px 0 4px}.story-film{width:100%;aspect-ratio:16/8.2;border:1px solid #bb964e;padding:0;position:relative;display:block;overflow:hidden;background:#161713}.story-film img{width:100%;height:100%;object-fit:cover;display:block;opacity:.87}.film-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);height:43px;width:43px;border-radius:50%;border:2px solid #f4cd7b;display:grid;place-items:center;padding-left:3px;color:#f9dd9b;background:#0c0a0777;font:21px serif;transition:background .2s}.story-film:hover .film-play{background:#b48b3c77}.film-caption{text-align:center;color:#e9d8ad;font-size:14px;letter-spacing:2px;margin:9px 0}.film-caption small{font-size:10px;color:#ae9871;letter-spacing:1px}#animationNotice{font:11px/1.8 system-ui,sans-serif;color:#b6ab94;margin:8px 0}.card-bottom{border-top:1px solid #cda35630;padding-top:10px;margin-top:7px;gap:6px}.card-bottom>span{font-size:8px;color:#9c8d72}.card-enter{background:none;border:0;border-bottom:1px solid #ba91433d;border-radius:0;padding:5px 0;color:#e2bc74;font:12px 'Songti SC',serif}.ornament-corner{position:absolute;color:#edc579;font:12px serif;line-height:10px}.ornament-corner.tl{left:0;top:0}.ornament-corner.tr{right:0;top:0}.ornament-corner.bl{left:0;bottom:0}.ornament-corner.br{right:0;bottom:0}.freeze-label{bottom:29px;background:#101111cd;border:1px solid #ba934f;outline:1px solid #8b6d3c;outline-offset:4px;padding:12px 45px;color:#e2b966;font:15px 'Songti SC',serif;letter-spacing:2px}.freeze-label:before,.freeze-label:after{content:'◇';margin:0 15px}
@media(min-width:1500px){.person-card{width:335px;padding:24px 26px 18px}.person-card h2{font-size:39px}.point{width:76px;height:168px}.realistic-student{width:62px;height:165px}.point[data-person=lab]{height:104px}.point[data-person=lab] .realistic-student{height:102px;width:40px}}
@media(max-width:1100px){.toplinks{gap:18px}.toplinks button{font-size:14px}.profile-button .pill{font-size:11px}.intro{left:34px}.intro h1{font-size:31px}.intro .eyebrow{font-size:12px}.mapfoot{bottom:90px}.ambient-state{font-size:12px;bottom:29px;padding:11px 20px}.maptop{bottom:86px;left:29px}.mapname b{font-size:14px}.point{width:56px;height:124px}.realistic-student{width:44px;height:121px}.person-card{width:288px;padding:18px 20px 14px}.person-card h2{font-size:31px}.archive-timeline summary{font-size:12px}.person-card .identity{font-size:12px}.freeze-label{font-size:12px;padding:11px 18px}}
@media(max-width:650px){header{height:50px;padding:0 20px;gap:12px}.toplinks{display:flex!important;gap:14px}.toplinks button{font-size:12px}.toplinks button[data-action=knowledge]{display:none}.profile-button .pill{font-size:10px}.intro{top:65px;left:27px}.intro .eyebrow{font-size:12px}.intro h1{font-size:31px}.campus-actions{right:16px;top:145px}.point{width:44px;height:110px}.realistic-student{width:38px;height:108px}.point:before{width:27px;height:8px}.maptop{left:21px;bottom:109px}.mapfoot{left:20px;right:auto;bottom:66px}.ambient-state{font-size:10px;padding:8px 10px;bottom:20px;letter-spacing:1px}.mapname>span{font-size:25px}.mapname small{font-size:7px}.person-card{width:265px;padding:17px 18px 12px;max-height:calc(100dvh - 130px)}.person-card h2{font-size:28px;margin:8px 0}.person-card .eyebrow{font-size:11px}.person-card .identity{font-size:12px}.archive-timeline summary{font-size:12px}.archive-timeline details{padding-bottom:7px}.story-label{font-size:14px}.story-film{aspect-ratio:16/7}.freeze-label{font-size:10px;letter-spacing:0;padding:9px 8px;bottom:21px}.freeze-label:before,.freeze-label:after{margin:0 5px}}
@media(prefers-reduced-motion:reduce){.realistic-student{animation:none}}

.point[data-person="lab"]{height:90px}.point[data-person="lab"] .realistic-student{height:88px;width:34px}
@media(max-width:650px){.person-card{max-height:56dvh}.point[data-person="lab"]{height:77px}.point[data-person="lab"] .realistic-student{height:75px;width:27px}}

dialog.book-mode{width:100vw;max-width:none;height:100dvh;max-height:none;inset:0;margin:0;padding:0;border:0;border-radius:0;background:#0d0c0b;color:#39200d;overflow:auto;box-shadow:none}dialog.book-mode>.dialoghead{display:none}dialog.book-mode>.dialogbody{padding:0;min-height:100%;display:flex;align-items:center;justify-content:center}.book-top{position:fixed;z-index:4;left:0;right:0;top:0;height:50px;display:flex;justify-content:space-between;align-items:center;padding:0 28px;color:#f2dca8;background:linear-gradient(#080808b8,transparent);font:18px 'Songti SC',STSong,serif;letter-spacing:2px}.book-top button{color:#efd39b;background:none;border:0;font:24px 'Songti SC',serif}.book-top button span{font-size:18px}.book-person{font-size:16px}.book-stage{width:100%;aspect-ratio:1672/941;max-height:100dvh;position:relative;background-image:url("/media/8851db26ee48dddb1fca2ef85e19df34178ee31f671ffaf2b725e903d95a5ff8.webp");background-position:center;background-size:100% 100%;font-family:'Songti SC',STSong,Georgia,serif;container-type:inline-size;animation:none}.book-left{position:absolute;left:9.5%;top:8.5%;width:38%;height:82.5%;text-align:center;display:flex;align-items:center;flex-direction:column}.book-chapter{font-size:1.35cqw;letter-spacing:.35cqw;color:#805129;padding-bottom:1cqw;border-bottom:1px solid #9e713a65;width:70%}.book-left h2{font-size:3cqw;font-weight:500;letter-spacing:.4cqw;color:#42230e;margin:.4cqw 0}.book-left-bottom{position:absolute;bottom:0;left:2%;right:2%;font-size:1.13cqw}.book-left-bottom p{line-height:1.8;margin:.8cqw 0 .4cqw;text-shadow:0 1px #ffecba}.book-left-bottom small{font-size:.8cqw}.book-progress{display:flex;gap:1cqw;align-items:center;font-size:.9cqw;color:#674014;padding:0 2cqw}.book-progress>span:first-child{font-size:1.8cqw}.book-progress i{height:2px;background:#95652f66;flex:1;display:block;position:relative}.book-progress b{height:2px;background:#9b641d;display:block}.book-progress b:after{content:'';display:block;float:right;width:.55cqw;height:.55cqw;transform:translateY(-35%);border:1px solid #fff0ba;border-radius:50%;background:#ba7c1d;box-shadow:0 0 7px #ffc350}.book-right{position:absolute;left:54.5%;right:11%;top:13%;bottom:9.5%;display:flex;flex-direction:column}.book-section-title{display:flex;align-items:center;gap:1.5cqw;justify-content:center;font-size:1.35cqw;letter-spacing:.45cqw;white-space:nowrap;color:#63401c}.book-section-title:before,.book-section-title:after{content:'◇';font-size:1cqw;color:#966b34;flex:1;border-bottom:1px solid #9e793962;line-height:0}.book-nodes{display:flex;position:relative;justify-content:space-between;margin:1.5cqw 0 2.6cqw}.book-nodes:before{content:'';position:absolute;left:8%;right:8%;height:1px;background:#8f6835;top:1.05cqw}.book-nodes button{position:relative;background:none;border:0;color:#543617;font:1.15cqw 'Songti SC',serif;letter-spacing:.15cqw;width:30%;display:flex;align-items:center;flex-direction:column;gap:.6cqw}.book-nodes button>span{font-size:2.1cqw;line-height:1;background:#e6c795}.book-nodes button.current>span{color:#a76507;text-shadow:0 0 3px #fff,0 0 8px #ffb922,0 0 15px #f6b537}.book-nodes button:disabled{opacity:.65}.book-main h3{font-size:2.05cqw;letter-spacing:.2cqw;text-align:center;font-weight:600;color:#301a0b;margin:1.3cqw 0 1.8cqw}.book-options{display:grid;gap:1.1cqw}.book-option{display:flex;align-items:center;width:100%;padding:1.05cqw 1.6cqw;border:1px solid #9e733f;background:linear-gradient(110deg,#dab58220,#fff0c135,#ad7d3020);outline:1px solid #a47b3930;outline-offset:-5px;border-radius:5px;gap:1.6cqw;color:#40240e;text-align:left;min-height:5.5cqw;transition:box-shadow .18s,background .18s}.book-option>strong{font:2.8cqw Georgia,serif;font-weight:400}.book-option>span{font:1.35cqw/1.5 'Songti SC',serif;letter-spacing:.08cqw}.book-option small{display:block;color:#7b552d;font: .78cqw/1.5 'Songti SC',serif;margin-top:.3cqw}.book-option:hover,.book-option.chosen{border-color:#a87112;background:linear-gradient(120deg,#fff1c673,#ffe9a855,#e8ba6577);box-shadow:0 0 0 2px #ffeea477,inset 0 0 15px #fff0b8,0 0 15px #e6aa3666}.book-option:disabled{opacity:.45;cursor:not-allowed}.book-check{margin-left:auto;color:#a27017}.book-regret{margin-top:auto;padding-top:1.7cqw;text-align:center}.book-regret>p{font-size:1.7cqw;font-style:italic;letter-spacing:.08cqw;color:#62421e;margin:1.4cqw 0 .6cqw}.book-regret>small{font-size:1cqw;letter-spacing:.08cqw;color:#795630}.book-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:1.65cqw;gap:1cqw}.book-bottom>span{font-size:.85cqw;color:#855a2b}.book-write{font:1.25cqw 'Songti SC',serif;letter-spacing:.2cqw;color:#f9d58f;background:linear-gradient(120deg,#3a2510,#21150b);border:1px solid #a67f3d;outline:1px solid #c29b58;outline-offset:-5px;border-radius:30px;padding:.85cqw 2.2cqw;white-space:nowrap;box-shadow:0 2px 6px #75451833}.book-write:hover{background:#4e3418}.book-write:disabled{opacity:.5;cursor:not-allowed}.book-page-number{font-size:.8cqw;text-align:center;margin-top:1.2cqw}.book-prose{font:1.25cqw/2 'Songti SC',serif;color:#654524;margin:1cqw 0}.book-prose.compact{font-size:1cqw;line-height:1.65;margin:-.6cqw 0 1cqw}.book-mode button:focus-visible{outline:2px solid #985f14;outline-offset:3px}@keyframes openBook{from{opacity:0;transform:scale(.975) translateY(12px)}to{opacity:1;transform:none}}
@media(max-aspect-ratio:1/1){dialog.book-mode>.dialogbody{display:block;padding-top:55px}.book-stage{aspect-ratio:auto;min-height:1150px;max-height:none;background-size:auto 660px;background-position:15% 0;background-repeat:no-repeat;background-color:#e8cfa4}.book-top{padding:0 16px;height:50px;background:#14120f}.book-top button span{font-size:13px}.book-person{font-size:12px;letter-spacing:0}.book-left{left:7%;width:86%;top:20px;height:565px}.book-chapter{font-size:15px;letter-spacing:3px}.book-left h2{font-size:28px;letter-spacing:3px;margin:8px 0}.book-left-bottom{bottom:0;font-size:13px;background:#ead2a8e8;padding:9px;border-radius:5px}.book-progress{font-size:11px;gap:10px}.book-progress>span:first-child{font-size:17px}.book-left-bottom small{font-size:10px}.book-right{position:relative;left:auto;right:auto;top:auto;bottom:auto;padding:630px 24px 35px;background:linear-gradient(transparent 585px,#e8cfa4 625px)}.book-section-title{font-size:16px;letter-spacing:3px;gap:15px}.book-section-title:before,.book-section-title:after{font-size:12px}.book-nodes{margin:22px 0}.book-nodes:before{top:12px}.book-nodes button{font-size:12px;gap:7px}.book-nodes button>span{font-size:25px}.book-main h3{font-size:23px;margin:18px 0}.book-options{gap:14px}.book-option{padding:15px;gap:15px;min-height:83px}.book-option>strong{font-size:30px}.book-option>span{font-size:16px}.book-option small{font-size:11px;margin-top:5px}.book-regret{padding-top:25px}.book-regret>p{font-size:20px;margin:17px 0 10px}.book-regret>small{font-size:12px}.book-bottom{margin-top:24px;gap:10px}.book-bottom>span{font-size:11px}.book-write{font-size:15px;padding:13px 24px}.book-page-number{font-size:11px;margin-top:24px}.book-prose,.book-prose.compact{font-size:14px;line-height:1.9;margin:12px 0}}
@media(prefers-reduced-motion:reduce){.book-stage{animation:none}}

body.scene-paused .book-stage{animation-play-state:running!important}
/* V4.1 · embossed gold on parchment */
.book-option{position:relative;isolation:isolate;border:0!important;outline:0!important;border-radius:0;background:none!important;box-shadow:none!important;padding:1.25cqw 1.8cqw;transition:filter .2s ease;color:#3e230d;overflow:visible;min-height:6cqw}
.book-option:before{content:'';position:absolute;inset:5px 7px;z-index:-1;clip-path:polygon(2% 0,98% 0,100% 12%,100% 88%,98% 100%,2% 100%,0 88%,0 12%);background:linear-gradient(115deg,#ab763617,#fff4d31f 35%,#b4803226);transition:background .2s}
.book-option .gilt-frame{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:-1;fill:none;transition:filter .22s,opacity .22s;opacity:.65}
.gilt-outer{stroke:#966a31;stroke-width:1.5;vector-effect:non-scaling-stroke}.gilt-bevel{stroke:#e8cd9d;stroke-width:1;vector-effect:non-scaling-stroke}.gilt-inner{stroke:#a17944;stroke-width:.8;vector-effect:non-scaling-stroke}.gilt-carving{stroke:#926c39;stroke-width:.85;vector-effect:non-scaling-stroke}.gilt-light{stroke:#fff4c4;stroke-width:1.25;vector-effect:non-scaling-stroke;opacity:0}.gilt-grain{stroke:#e9c471;stroke-width:.65;vector-effect:non-scaling-stroke;opacity:0}
.book-option:not(:disabled):hover:before,.book-option.chosen:before,.book-option:focus-visible:before{background:radial-gradient(ellipse at 45% 0,#fff6c8a6,transparent 64%),radial-gradient(ellipse at 72% 100%,#f6b93c4f,transparent 60%),linear-gradient(105deg,#daa33d3d,#ffe7a54a 40%,#e6b96747 75%,#b47a292f)}
.book-option:not(:disabled):hover .gilt-frame,.book-option.chosen .gilt-frame,.book-option:focus-visible .gilt-frame{opacity:1;filter:drop-shadow(0 0 1px #fff6cc) drop-shadow(0 0 4px #ffcc53) drop-shadow(0 0 11px #eeb23591)}
.book-option:is(:hover,.chosen,:focus-visible) .gilt-outer{stroke:#875310;stroke-width:1.7}.book-option:is(:hover,.chosen,:focus-visible) .gilt-bevel{stroke:#ffedaa;stroke-width:2.1}.book-option:is(:hover,.chosen,:focus-visible) .gilt-inner{stroke:#a6762f;stroke-width:1.05}.book-option:is(:hover,.chosen,:focus-visible) .gilt-light{opacity:.95}.book-option:is(:hover,.chosen,:focus-visible) .gilt-grain{opacity:.8}.book-option:is(:hover,.chosen,:focus-visible) .gilt-carving{stroke:#7f531d}
.book-option>strong,.book-option>span:not(.book-check){text-shadow:0 1px 0 #fff0c28a}.book-option small{color:#825b2d}.book-option.chosen>strong{color:#492905;text-shadow:0 1px 0 #fff0bf,0 0 10px #ffcf6770}.book-check{font-size:1cqw!important;color:#986717;text-shadow:0 1px #ffe8a2}
.book-nodes{margin-bottom:3.5cqw}.book-nodes:before{top:1.05cqw;background:linear-gradient(90deg,#967346,#795320 30%,#dfa337 50%,#795320 70%,#967346);box-shadow:0 1px #fff2ce77}
.book-nodes button>span{display:block;width:1.48cqw;height:1.48cqw;font-size:0!important;line-height:0;transform:rotate(45deg);margin:.32cqw 0 .25cqw;background:linear-gradient(135deg,#ead4af,#d5b780);border:1.5px solid #765124;box-shadow:inset 0 0 0 1px #f7e3b666;position:relative;text-shadow:none!important}
.book-nodes button.current>span{border:1px solid #80520d;background:radial-gradient(circle at 44% 42%,#fffce0 0 8%,#ffe695 16%,#f7b22f 37%,#ad6b09 74%,#744707 100%);box-shadow:inset 0 0 0 2px #fff0b6,0 0 0 2px #ecc775,0 0 0 3px #956721,0 0 7px 3px #ffe095,0 0 22px 4px #efb7378c;color:transparent}
.book-nodes button.current>span:after{content:'';position:absolute;inset:4px;border:1px solid #8c590f99;box-shadow:0 0 3px #ffe692}
.book-nodes button.current:after{content:'◆';position:absolute;top:calc(100% + .5cqw);height:2cqw;width:1px;border-left:1px dotted #96713d;color:#805621;font-size:.45cqw;line-height:0;text-indent:-.19cqw}
@media(max-aspect-ratio:1/1){.book-option{padding:18px 20px;min-height:90px}.book-nodes{margin-bottom:35px}.book-nodes:before{top:12px}.book-nodes button>span{width:18px;height:18px;margin:3px 0 4px}.book-nodes button.current:after{top:calc(100% + 6px);height:19px;font-size:6px;text-indent:-2px}.book-check{font-size:12px!important}}

@media(min-aspect-ratio:1/1){.book-nodes{margin-bottom:2.8cqw}.book-bottom{margin-top:1.1cqw}.book-regret{padding-top:1.2cqw}.book-regret>p{margin:1cqw 0 .5cqw}}


.person-card .story-intro{font:12px/1.85 system-ui,sans-serif;color:#c8bca2;margin:0 0 15px;letter-spacing:.2px}
.person-card a.card-enter{text-decoration:none;white-space:nowrap}

/* Playable edition — preserve the supplied artwork, improve long-form reading. */
:root{color-scheme:dark}body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif}button{min-height:36px}button:focus-visible,input:focus-visible{outline:2px solid #edc784;outline-offset:4px}[hidden]{display:none!important}
.gate{display:grid;place-items:center}.gate .campus-art{filter:brightness(.48);transform:scale(1.05)}.gate:after{background:linear-gradient(180deg,#07111b33,#0b13197a 65%,#090e16)}.gate .gate-brand{top:34px}.gate-center{position:relative;z-index:2;text-align:center;color:#f9e9c3;margin-top:-5vh}.gate-center .gate-kicker{font:11px/2 sans-serif;letter-spacing:5px;color:#d6bb83}.gate-center h1{font:clamp(64px,9vw,130px)/1.6 'Songti SC',STSong,serif;font-weight:400;letter-spacing:.24em;text-indent:.24em;text-shadow:0 4px 50px #15130b}.gate-center p{font:16px/2 'Songti SC',STSong,serif;letter-spacing:3px;color:#e0ccaa}.gate-years{display:flex;align-items:center;gap:18px;justify-content:center;font:12px Georgia;letter-spacing:3px;margin-top:25px;color:#ba9f73}.gate-years i{width:70px;height:1px;background:#c7a97666}.gate-bottom{bottom:6%;gap:12px}#gateImport{color:#ddc59d;font-size:12px;letter-spacing:2px}.gate-footnote{color:#b4a68d;font-size:10px}
header{gap:30px;pointer-events:auto}.toplinks button{font:14px 'Songti SC',serif}.profile-button .pill{font-size:13px}.intro{pointer-events:none;z-index:13}.intro h1{margin:9px 0}.intro .eyebrow{font-size:13px}.game-dateline{font:12px/1.8 sans-serif;letter-spacing:1px;color:#d9c9ab;text-shadow:0 1px 3px #000}.game-dateline span{display:block;font-size:10px;color:#d7bb89}.game-person-label{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);background:#0a1429cc;color:#ffe2ac;font:11px 'Songti SC',serif;padding:5px 10px;border-radius:3px;border:1px solid #cda55d77;white-space:nowrap}.point{transition:filter .2s}.point:hover{filter:drop-shadow(0 0 6px #ffd478)}.point:hover .game-person-label{background:#ac874a;color:#111822}
.current-scene{position:fixed;right:32px;bottom:42px;z-index:15;width:300px;padding:22px 24px;border:1px solid #a5874e80;background:linear-gradient(135deg,#161b1cef,#09121cf2);box-shadow:0 14px 60px #0007;backdrop-filter:blur(12px);color:#e7d2ad}.current-scene>small{font-size:9px;letter-spacing:3px;color:#bda277}.current-scene h2{font:24px/1.5 'Songti SC',serif;letter-spacing:2px;margin:9px 0}.current-scene p{font-size:10px;color:#b9af9a;margin-bottom:16px}.current-scene button{width:100%;justify-content:space-between}.maptop{left:38px;bottom:38px}.ambient-state{bottom:230px;left:auto;right:33px;transform:none;font:10px sans-serif;letter-spacing:1px;padding:10px 16px;border-color:#a98a4d44;outline:0}.ambient-state:before,.ambient-state:after{display:none}.campus-actions{top:100px;right:32px}.year-nav{position:fixed;z-index:12;left:40px;bottom:102px;display:flex;gap:22px;color:#b0aa99;font-size:11px}.year-nav span{display:flex;gap:7px;align-items:center}.year-nav b{font:17px Georgia;font-weight:400;color:#9a8f7b}.year-nav .now{color:#ffdf9d}.year-nav .now b{color:#ffe4ac}.year-nav .past{color:#c8bc9e}#saveStatus{position:fixed;right:37px;bottom:17px;z-index:15;color:#9f9785;font-size:9px}
.dialoghead{border-color:#b79b622d}.dialogbody{font-size:14px}.dialogbody p{line-height:1.95}dialog:not(.book-mode){max-height:87dvh;width:min(790px,calc(100vw - 28px))}.panel-subtitle{font-size:14px;font-weight:500;color:#e6c68d;margin:26px 0 13px}.setup-count{display:flex;align-items:center;justify-content:space-between;color:#dbcaab}.setup-count strong{font:44px Georgia;color:#eac987}.count-presets{display:flex;gap:9px;flex-wrap:wrap}.count-presets button{flex:1;white-space:nowrap}.allocation,.year-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.allocation span,.year-summary span{padding:15px;border:1px solid #bc995e33;border-radius:9px;color:#b9ad96;font-size:11px}.allocation b,.year-summary b{display:block;margin-top:7px;color:#efd19c;font-size:16px;font-weight:400}.people-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.person-entry{display:flex;gap:14px;align-items:center;text-align:left;border:1px solid #a489542f;background:#17212b;padding:17px;border-radius:12px}.person-entry strong{color:#eed7ac;font-weight:500}.person-entry small{display:block;margin-top:7px;font-size:10px;color:#b1a796}.person-entry>span:last-child{margin-left:auto}.person-initial{border:1px solid #b59a684d;width:45px;height:45px;border-radius:50%;display:grid;place-items:center;color:#ecc888;font:24px 'Songti SC',serif}.grades-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin-bottom:12px}.grades-grid>div{text-align:center;background:#b8975310;border:1px solid #b897532c;border-radius:8px;padding:15px 5px}.grades-grid small,.grades-grid span{display:block;font-size:10px;color:#b8aa91}.grades-grid strong{display:block;font:29px Georgia;margin:10px 0;color:#e9c78d}.journal-intro{display:flex;gap:15px;align-items:center;margin-bottom:22px}.journal-intro>b{font:32px Georgia;color:#e9cb99}.journal-intro>span{font-size:11px;color:#b5a98e}.journal-intro button{margin-left:auto}.timeline{margin-top:26px;border-color:#b29a6744}.timeline article:before{background:#ba9654;box-shadow:0 0 0 4px #111923}.timeline small{color:#bd9e67}.timeline h3{font-weight:500;color:#e9d3ad}.timeline p{font-size:13px}.timeline .journal-choice{color:#d2ba90}.calendar-record{opacity:.86}.calendar-record h3{font-size:13px}.left-actions{justify-content:flex-start}.import-label{cursor:pointer}.result-mark{width:52px;height:52px;border:1px solid #bc9d66;border-radius:50%;display:grid;place-items:center;color:#e9c88b;font:26px Georgia;margin:10px auto 25px}.result-prose{font:18px/2.1 'Songti SC',serif!important;color:#e5d5b7!important}.checkline input{flex:none;margin-top:4px}
/* The illustrated left page stays visible; the reading leaf can scroll independently. */
dialog.book-mode{background:radial-gradient(ellipse at 50% 40%,#34291a,#0a0d10 78%)}dialog.book-mode>.dialogbody{height:100dvh;min-height:0;padding:36px 0 12px;display:grid;place-items:center}.book-top{height:44px;font-size:14px;background:linear-gradient(#070b12ee,#070b1280,transparent)}.book-top button{font-size:17px}.book-top button span{font-size:13px}.book-person{font-size:12px;letter-spacing:2px}.game-book{width:min(1500px,100vw);height:min(820px,calc(100dvh - 50px));min-height:500px;max-height:none;aspect-ratio:auto;background-size:100% 100%;container-type:normal;position:relative}.game-left{position:absolute;left:9.5%;top:8.5%;width:37.5%;height:82%;display:flex;align-items:center;flex-direction:column;text-align:center}.chapter-kicker{font:12px 'Songti SC',serif;letter-spacing:3px;color:#7c5025;padding-bottom:12px;border-bottom:1px solid #855c3144;width:83%}.game-left h2{font:clamp(22px,2.5vw,37px)/1.5 'Songti SC',serif;font-weight:500;letter-spacing:3px;color:#45250e;margin:10px 0;max-width:95%}.game-book-location{font:11px 'Songti SC',serif;color:#7c572f;letter-spacing:2px}.left-note{position:absolute;bottom:0;left:0;right:0;border-radius:6px;padding:13px 18px;background:linear-gradient(#eed6adf0,#edcea1ed);box-shadow:0 0 24px #e8c99577}.left-note p{font:13px/1.8 'Songti SC',serif;color:#5a3b20;margin:12px 0 6px}.left-note .leaf-meta{justify-content:center;font-size:11px}.book-save-label{font:9px sans-serif;color:#906d46;letter-spacing:1px}.game-progress{height:2px;background:#a2774744;margin-top:9px}.game-progress i{display:block;height:2px;background:#9b6d22}.game-right{position:absolute;left:54%;right:9.5%;top:9%;bottom:9%;display:flex;flex-direction:column;min-height:0;color:#422813}.leaf-meta{display:flex;align-items:center;justify-content:space-between;font:11px 'Songti SC',serif;color:#846032;letter-spacing:1px;padding-bottom:12px;border-bottom:1px solid #ac844847;gap:8px}.leaf-meta>span{white-space:nowrap}.reading-pane{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:8px 9px 15px 0;scrollbar-width:thin;scrollbar-color:#b9935955 transparent;outline-offset:-2px!important}.scene-prose p{font:15px/1.95 'Songti SC',STSong,Georgia,serif;color:#4b301b;margin:11px 0;text-align:justify}.checkpoint-note{border-top:1px solid #9f773b44;border-bottom:1px solid #9f773b44;padding:10px 0;margin:14px 0;color:#7c572c;font:11px/1.8 sans-serif}.checkpoint-note summary{cursor:pointer;color:#845f2b}.checkpoint-note p{margin:9px 0}.checkpoint-note small{display:block;font-size:10px;color:#9c794a}.your-choice{font:15px 'Songti SC',serif;letter-spacing:2px;color:#6d451b;margin:22px 0 13px}.game-options{display:grid;gap:11px}.game-option{display:flex;align-items:center;gap:12px;border:1px solid #b48a4d88;outline:1px solid #b7975e40;outline-offset:-4px;padding:13px 15px;min-height:77px;background:linear-gradient(120deg,#d6ae6510,#fff3cc33);text-align:left;width:100%;border-radius:3px;color:#4a2b13}.game-option>strong{font:27px Georgia;color:#805421;font-weight:400}.game-option>span{font:14px/1.6 'Songti SC',serif}.game-option small{display:block;font:10px/1.7 sans-serif;color:#88653a;margin-top:5px}.game-option i{margin-left:auto;font:16px Georgia;color:#9e7741}.game-option:hover,.game-option.chosen{border-color:#ae741b;background:#ffedb177;box-shadow:inset 0 0 12px #fff2c480,0 0 14px #b9882944}.game-option.chosen i{color:#ac7012}.game-book-footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #a47b3d44;padding-top:12px;gap:10px}.game-book-footer>span{font:10px sans-serif;color:#8f6939}.game-book-footer .book-write{font:13px 'Songti SC',serif;letter-spacing:1px;padding:13px 20px;min-height:43px}.narrator-mode{font:9px sans-serif;color:#96764e;text-align:center;letter-spacing:1px;margin-top:10px}.end-stamp{border:2px double #99754477;border-radius:50%;width:156px;height:156px;display:flex;flex-direction:column;justify-content:center;align-items:center;margin:25px auto;font:12px Georgia;gap:10px;color:#966638;transform:rotate(-7deg)}.end-stamp strong{font:22px 'Songti SC',serif;letter-spacing:4px}.end-stamp small{font:9px sans-serif}
@media(min-width:1550px){.scene-prose p{font-size:17px}.game-option>span{font-size:16px}.game-option small{font-size:11px}.game-option{padding:16px}.left-note p{font-size:15px}}
@media(max-width:900px){.game-book{min-height:480px}.scene-prose p{font-size:14px;line-height:1.85}.game-left h2{font-size:25px}.game-option{padding:10px}.game-option>span{font-size:13px}.game-book-footer>span{display:none}.game-book-footer{justify-content:flex-end}.current-scene{width:260px;right:22px}.ambient-state{right:23px}.year-nav{left:29px;gap:14px}.toplinks{gap:19px}}
@media(max-width:650px){.gate-center{margin-top:-10vh}.gate-center h1{font-size:70px}.gate-center p{font-size:13px;letter-spacing:2px}.gate-center .gate-kicker{font-size:9px;letter-spacing:3px}.gate-brand strong{font-size:16px}.gate-bottom{bottom:7%}.gate-footnote{font-size:8px}header{height:46px;padding:0 18px;gap:17px}.toplinks{gap:19px}.toplinks button{font-size:12px}.toplinks button[data-action=knowledge]{display:block}.profile-button .pill{font-size:12px}.intro{top:69px;left:25px}.intro h1{font-size:32px}.intro .eyebrow{font-size:10px;padding-bottom:10px}.game-dateline{font-size:10px}.game-dateline span{font-size:9px}.point{height:100px}.realistic-student{height:98px}.game-person-label{font-size:10px;padding:4px 7px;bottom:-17px}.current-scene{bottom:44px;left:18px;right:18px;width:auto;padding:15px 17px}.current-scene>small{font-size:8px}.current-scene h2{font-size:20px;margin:5px 0}.current-scene p{font-size:9px;margin:0}.current-scene button{position:absolute;right:15px;bottom:17px;width:126px;font-size:11px;min-height:38px;padding:9px 10px}.current-scene h2,.current-scene p{max-width:calc(100% - 124px)}.year-nav{bottom:182px;left:23px;gap:25px;font-size:10px}.year-nav b{font-size:14px}.ambient-state,.maptop{display:none}.campus-actions{top:155px;right:17px}.campus-action{min-height:34px}#saveStatus{bottom:23px;right:22px;font-size:9px}.people-grid{grid-template-columns:1fr}.grades-grid{grid-template-columns:repeat(3,1fr)}.dialogbody{padding:20px}.journal-intro{flex-wrap:wrap;gap:8px}.journal-intro button{font-size:11px}.year-summary,.allocation{gap:6px}.year-summary span,.allocation span{padding:10px;font-size:10px}.count-presets button{flex-basis:40%}.dialoghead h2{font-size:22px}
dialog.book-mode>.dialogbody{display:block;height:auto;min-height:100dvh;padding:46px 0 0}.book-top{height:46px;padding:0 17px;background:#0b111a}.book-person{font-size:11px}.game-book{height:auto;min-height:calc(100dvh - 46px);width:100%;background-size:960px 590px;background-position:15% -35px;background-repeat:no-repeat;background-color:#ead0a6;max-height:none}.game-left{position:relative;left:auto;top:auto;width:100%;height:265px;padding:20px 22px}.chapter-kicker{font-size:11px;padding-bottom:8px;width:70%}.game-left h2{font-size:25px;margin:8px 0}.game-book-location{font-size:10px}.left-note{display:none}.game-right{position:relative;left:auto;right:auto;top:auto;bottom:auto;padding:20px 25px 26px;background:linear-gradient(#eed7b1d9,#edd4ab 80px);min-height:calc(100dvh - 305px)}.leaf-meta{font-size:10px;padding-bottom:12px}.reading-pane{overflow:visible;padding-right:0}.scene-prose p{font-size:16px;line-height:2}.game-options{gap:13px}.game-option{padding:16px 14px;min-height:82px}.game-option>span{font-size:15px}.game-option small{font-size:11px}.your-choice{margin-top:25px;font-size:16px}.game-book-footer{position:sticky;bottom:0;padding:12px 0;background:#ecd1a7ed;backdrop-filter:blur(8px);margin-top:10px}.game-book-footer>span{display:block;font-size:10px}.game-book-footer .book-write{font-size:14px;padding:13px 21px}.narrator-mode{font-size:9px}.game-book-footer{justify-content:space-between}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* Keep navigation available at the intermediate tablet breakpoint too. */
.toplinks{display:flex!important}
.game-book{animation:turnLeaf .32s ease-out both}
@keyframes turnLeaf{from{opacity:.55;transform:perspective(1600px) rotateY(-2deg) translateY(3px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.game-book{animation:none}}

/* Use one reading column when a two-page spread would stretch the artwork. */
@media(min-width:651px) and (max-width:900px){
dialog.book-mode>.dialogbody{display:block;height:auto;min-height:100dvh;padding:46px 0 0}.book-top{height:46px;padding:0 17px;background:#0b111a}.book-person{font-size:11px}.game-book{height:auto;min-height:calc(100dvh - 46px);width:100%;background-size:960px 590px;background-position:15% -35px;background-repeat:no-repeat;background-color:#ead0a6;max-height:none}.game-left{position:relative;left:auto;top:auto;width:100%;height:265px;padding:20px 22px}.chapter-kicker{font-size:11px;padding-bottom:8px;width:70%}.game-left h2{font-size:25px;margin:8px 0}.game-book-location{font-size:10px}.left-note{display:none}.game-right{position:relative;left:auto;right:auto;top:auto;bottom:auto;padding:20px 25px 26px;background:linear-gradient(#eed7b1d9,#edd4ab 80px);min-height:calc(100dvh - 305px)}.leaf-meta{font-size:10px;padding-bottom:12px}.reading-pane{overflow:visible;padding-right:0}.scene-prose p{font-size:16px;line-height:2}.game-options{gap:13px}.game-option{padding:16px 14px;min-height:82px}.game-option>span{font-size:15px}.game-option small{font-size:11px}.your-choice{margin-top:25px;font-size:16px}.game-book-footer{position:sticky;bottom:0;padding:12px 0;background:#ecd1a7ed;backdrop-filter:blur(8px);margin-top:10px}.game-book-footer>span{display:block;font-size:10px}.game-book-footer .book-write{font-size:14px;padding:13px 21px}.narrator-mode{font-size:9px}.game-book-footer{justify-content:space-between}}
dialog.book-mode{overflow-x:hidden}

/* A confirmed choice continues on the same paper, with an optional text reveal. */
.story-continuation{margin-top:24px;padding-top:16px;border-top:1px solid #9f773b44;scroll-margin:62px 0 90px}
.story-continuation .choice-echo{font:12px/1.8 'Songti SC',serif;color:#86633d;margin:0 0 16px;padding-left:12px;border-left:2px solid #a17b4580}
#continuationText{min-height:2em;white-space:pre-line}
#continuationText.is-revealing:after{content:'';display:inline-block;width:1px;height:1em;background:#805421;margin-left:3px;vertical-align:-.1em;animation:inkCursor .8s steps(2,end) infinite}
@keyframes inkCursor{to{opacity:0}}
@media(prefers-reduced-motion:reduce){#continuationText.is-revealing:after{animation:none}}

.continuation-announcement{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

/* Real accounts have their own attribution; game memories stay attached to the save. */
.stories-intro{margin-top:0;color:#c9bfae}.person-entry>span:nth-child(2){min-width:0}.person-story-title{display:block;margin-top:10px;color:#d9c39e;font:13px/1.6 'Songti SC',serif}.story-source-top{display:flex;align-items:center;gap:10px;color:#b9ad97;font-size:11px;letter-spacing:1px}.zhihu-label{display:grid;place-items:center;width:25px;height:25px;border:1px solid #bb9e624d;border-radius:6px;color:#e2c183;font:16px 'Songti SC',serif}.story-theme{margin-left:auto;padding:5px 9px;background:#b59a6312;border-radius:4px;font-size:10px;color:#d5bb88}.real-story-title{font:27px/1.5 'Songti SC',STSong,serif;font-weight:400;color:#f0d8ae;margin:21px 0 13px}.dialogbody .real-story-intro{font:16px/1.95 'Songti SC',STSong,serif;color:#dfd0b9;margin:0 0 25px}.story-section-label{font-size:11px;font-weight:500;letter-spacing:2px;color:#bda373;margin:0 0 6px}.real-story-events{list-style:none;margin:0;padding:0}.real-story-events li{display:flex;gap:16px;padding:11px 0;border-bottom:1px solid #b69a6220}.real-story-events li>span{flex:none;font:13px/2.1 Georgia;color:#a4864c}.dialogbody .real-story-events p{margin:0;font-size:13px;line-height:1.9;color:#c9c1b2}.story-reflections{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin:22px 0}.story-reflections section{border:1px solid #b69a6229;border-radius:9px;padding:16px 18px;background:#b69a6207}.story-reflections h4{color:#dfbd80;font-size:12px;font-weight:500;margin:0 0 9px}.dialogbody .story-reflections p{margin:0;font-size:13px;line-height:1.9;color:#bfb6a5}.story-attribution{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:6px}.story-attribution>div{min-width:0}.story-author{font-size:12px;color:#d2bc96}.dialogbody .source-title{color:#a89e8c;font-size:11px;line-height:1.8;margin:6px 0 0;overflow-wrap:anywhere}.story-source-link{display:inline-flex;align-items:center;justify-content:center;gap:15px;white-space:nowrap;text-decoration:none;font-size:12px;min-height:43px;flex:none}.story-source-link:focus-visible{outline:2px solid #edc784;outline-offset:4px}.dialogbody .story-disclosure{font-size:10px;line-height:1.9;color:#9c9484;margin:18px 0 0}.game-memories{margin-top:25px;border-top:1px solid #b69a6233;border-bottom:1px solid #b69a6233;padding:16px 0}.game-memories summary{font-size:12px;color:#c5b18e;cursor:pointer}.game-memories summary span{font-size:10px;margin-left:8px;color:#968a73}.game-memory-body{padding-top:18px}.game-memory-body>p{font-size:12px}.game-memory-body .listitem{font-size:12px}.game-memory-body .listitem:last-child{border:0}
@media(max-width:650px){.real-story-title{font-size:24px;margin-top:18px}.dialogbody .real-story-intro{font-size:15px}.story-reflections{grid-template-columns:1fr;gap:10px;margin:20px 0}.story-reflections section{padding:14px 16px}.story-attribution{align-items:stretch;flex-direction:column;gap:15px}.story-source-link{width:100%;min-height:46px}.real-story-events li{gap:12px}.story-source-top{gap:8px;font-size:10px}.story-theme{letter-spacing:0}.person-story-title{font-size:14px}}
/* Keep the cast cutouts natural; keyboard focus belongs on the name label. */
.point .realistic-student,
.point:hover .realistic-student,
.point:focus-visible .realistic-student {
  filter: brightness(.85) saturate(.8) drop-shadow(0 3px 3px #0008);
}
.point:focus-visible .game-person-label {
  outline: 2px solid #edc784;
  outline-offset: 3px;
}

/* Keep the supplied composition intact; the illustrated CTA has a native hit target. */
.admission-gate {
  display: block;
  background: #080b12;
}

.admission-gate::after {
  content: none;
}

.gate-scene {
  position: absolute;
  bottom: 0;
  left: 50%;
  width: max(100vw, min(177.6833vh, 390vw));
  width: max(100vw, min(177.6833dvh, 390vw));
  aspect-ratio: 1672 / 941;
  transform: translateX(-50%);
}

.gate-artwork {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  user-select: none;
  pointer-events: none;
}

/* These percentages track the button in the original 1672 × 941 artwork. */
.admission-gate .enter-campus {
  position: absolute;
  left: 37.62%;
  top: 86.61%;
  width: 24.7%;
  height: 7.65%;
  max-width: none;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: transparent;
  box-shadow: none;
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transition: background-color 180ms ease, box-shadow 180ms ease;
}

.admission-gate .enter-campus:hover {
  background: #ffdc9010;
  box-shadow: 0 0 32px #f6be4b40, inset 0 0 18px #ffdf9615;
}

.admission-gate .enter-campus:focus-visible {
  outline: 2px solid #ffe4ac;
  outline-offset: 5px;
  box-shadow: 0 0 28px #f6be4b55;
}

.admission-gate .enter-campus:active {
  background: #120c1633;
}

.admission-gate #gateImport {
  position: absolute;
  z-index: 1;
  right: max(20px, env(safe-area-inset-right));
  bottom: max(8px, env(safe-area-inset-bottom));
  min-height: 36px;
  padding: 8px;
  color: #d5bf99;
  font: 11px/1.5 'Songti SC', STSong, serif;
  letter-spacing: 1px;
  text-shadow: 0 1px 4px #000;
  opacity: .7;
}

.admission-gate #gateImport:hover,
.admission-gate #gateImport:focus-visible {
  opacity: 1;
}

.gate .gate-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  .admission-gate .enter-campus {
    transition: none;
  }
}

/* Match the opening film to the exact same frame used by the landing artwork. */
.opening {
  position: fixed;
  z-index: 100;
  inset: 0;
  overflow: hidden;
  background: #080b12;
  opacity: 1;
  transition: opacity 850ms ease-in-out;
}
.opening[hidden] { display: none; }
.opening.is-leaving { opacity: 0; pointer-events: none; }
.opening-video { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center bottom; }
.opening-actions {
  position: absolute;
  z-index: 2;
  right: max(24px, env(safe-area-inset-right));
  top: max(24px, env(safe-area-inset-top));
  display: flex;
  gap: 10px;
}
.opening-control, .opening-play {
  min-height: 42px;
  padding: 10px 19px;
  border: 1px solid #d5b78077;
  border-radius: 999px;
  background: #130f0ad9;
  color: #f1d9ab;
  font: 14px/1.4 'Songti SC', STSong, serif;
  letter-spacing: 1px;
  cursor: pointer;
  backdrop-filter: blur(12px);
  transition: background-color 160ms ease, border-color 160ms ease;
}
.opening-control:hover, .opening-play:hover { background: #342514e6; border-color: #e4bf77; }
.opening-control:focus-visible, .opening-play:focus-visible { outline: 2px solid #ffe1a0; outline-offset: 4px; }
.opening-control span { margin-left: 7px; }
.opening-play {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  padding: 16px 28px;
  font-size: 18px;
}
.opening-play[hidden] { display: none; }
.opening-status {
  position: absolute;
  bottom: max(26px, env(safe-area-inset-bottom));
  left: 50%;
  transform: translateX(-50%);
  margin: 0;
  color: #f1d9ab;
  font: 13px/1.5 'Songti SC', STSong, serif;
  text-shadow: 0 1px 5px #000;
  white-space: nowrap;
}
.opening.is-leaving .opening-actions, .opening.is-leaving .opening-status, .opening.is-leaving .opening-play { visibility: hidden; }
@media (max-width: 600px) {
  .opening-actions { top: max(16px, env(safe-area-inset-top)); right: max(16px, env(safe-area-inset-right)); gap: 8px; }
  .opening-control { padding: 9px 13px; font-size: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .opening, .opening-control, .opening-play { transition: none; }
}

/* The square artwork extends the original 16:9 setup into a continuous night scene. */
dialog.setup-mode{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;overflow:hidden;background:#11151b;box-shadow:none;color-scheme:light}
dialog.setup-mode::backdrop{background:#11151b}
.setup-mode>.dialoghead{display:none}
.setup-mode>.dialogbody{position:relative;isolation:isolate;display:grid;place-items:center;width:100%;height:100%;margin:0;padding:0;overflow:hidden}
.setup-mode .setup-canvas-backdrop{position:absolute;z-index:-2;inset:-2%;width:104%;height:104%;background-position:center;background-size:cover;filter:blur(6px) brightness(.55);transform:none;animation:none;pointer-events:none}
.setup-picture{--node-progress:25%;position:relative;isolation:isolate;container-type:inline-size;width:min(100vw,177.6833vh);width:min(100vw,177.6833dvh);aspect-ratio:1672/941;color:#2b1404;font-family:'Songti SC',STSong,Georgia,serif}
.setup-picture::before{content:'';position:absolute;z-index:-1;left:0;top:50%;width:100%;aspect-ratio:1;transform:translateY(-50%);background-image:url('/media/ba990c89cfe10529b9ce9b6238a091ac26f13b94e38e80589e51a9b816069154.webp');background-position:center;background-size:100% 100%;background-repeat:no-repeat;pointer-events:none}

/* Controls share the original 1672 x 941 coordinate space. Paper never changes with state. */
.setup-picture .picture-hit{position:absolute;z-index:3;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.setup-picture .picture-hit:hover{background-color:#ffd9860a}
.setup-picture .picture-hit:focus-visible,.setup-picture .picture-select:focus-visible,.setup-picture .picture-range:focus-visible{outline:2px solid #edb35c;outline-offset:3px}
.picture-close{left:80.9%;top:10.6%;width:3.5%;height:5%}
.picture-reset{left:19.6%;top:88%;width:6.5%;height:4.2%}
.setup-picture .picture-start{left:61.3%;top:85.1%;width:21%;height:7.2%;border-radius:999px}
.setup-picture .picture-start:hover{box-shadow:0 0 24px #f5b85038}
.setup-picture .picture-preset{top:35.35%;width:15.6%;height:6.5%;border-radius:.5cqw}
.picture-preset>span{opacity:0}
.preset-0{left:17.85%}.preset-1{left:34.2%}.preset-2{left:50.45%}.preset-3{left:66.65%}
.setup-picture .picture-preset[aria-pressed='true']{outline:1px solid #a16b20;outline-offset:-.3cqw;box-shadow:inset 0 0 1.8cqw #ecb24799,0 0 1cqw #eaaa3755}
.picture-preset[aria-pressed='true']::after{content:'✓';position:absolute;right:1.6cqw;top:50%;display:grid;place-items:center;width:1.1cqw;height:1.1cqw;border:1px solid #f8d78c;background:#71410b;box-shadow:0 0 0 1px #81530e;color:#fff0c2;font:700 .9cqw/1 serif;transform:translateY(-50%);border-radius:2px}
.picture-count{position:absolute;left:77.55%;top:25.15%;display:grid;place-items:center;width:4.8%;height:6.5%;font:500 3.6cqw/1 'Songti SC',STSong,Georgia,serif}
.setup-picture .picture-range{appearance:none;-webkit-appearance:none;position:absolute;z-index:4;left:20.6%;top:30.8%;width:58.85%;height:3.6%;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;cursor:ew-resize}
.picture-range::-webkit-slider-runnable-track{height:.7cqw;border:1px solid #816647;border-radius:999px;background:linear-gradient(to right,#e5a849 var(--node-progress),#96836b var(--node-progress));box-shadow:inset 0 1px 2px #563a2455,0 1px #fce5b9}
.picture-range::-webkit-slider-thumb{-webkit-appearance:none;box-sizing:border-box;width:1.15cqw;height:1.15cqw;margin-top:calc(-.225cqw - 1px);border:1px solid #ffd483;background:#824700;box-shadow:0 0 0 1px #754513;transform:rotate(45deg)}
.picture-range::-moz-range-track{height:.7cqw;box-sizing:border-box;border:1px solid #816647;border-radius:999px;background:linear-gradient(to right,#e5a849 var(--node-progress),#96836b var(--node-progress));box-shadow:inset 0 1px 2px #563a2455,0 1px #fce5b9}
.picture-range::-moz-range-thumb{box-sizing:border-box;width:1.15cqw;height:1.15cqw;border:1px solid #ffd483;border-radius:0;background:#824700;box-shadow:0 0 0 1px #754513;transform:rotate(45deg)}
.picture-year{position:absolute;top:54%;display:grid;place-items:center;width:5.8%;height:3.9%;font:600 1.85cqw/1 'Songti SC',STSong,Georgia,serif}
.year-0{left:22.65%}.year-1{left:38.9%}.year-2{left:55.15%}.year-3{left:71.4%}
.setup-picture .picture-select{position:absolute;z-index:4;top:72.1%;height:5.25%;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;appearance:none;color:transparent;box-shadow:none;font:1.25cqw 'Songti SC',STSong,serif;cursor:pointer}
.picture-select option{color:#361d07;background:#f0d3a1;font-size:16px}
.pace-select{left:20.8%;width:27.8%}.motion-select{left:52.25%;width:27.1%}
.picture-select-label{position:absolute;top:73.1%;height:3.05%;display:flex;align-items:center;padding:0 .3cqw;font:600 1.2cqw/1.3 'Songti SC',STSong,serif;pointer-events:none}
.pace-label{left:21.8%;width:23.3%}.motion-label{left:53.25%;width:22.5%}
.picture-save-notice{position:absolute;left:29%;bottom:8.5%;width:29%;color:#68421f;font:.8cqw/1.5 'Songti SC',STSong,serif}
.picture-save-notice button{min-height:0;color:inherit;font:inherit;text-decoration:underline}
.setup-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
body.reduce-effects *,body.reduce-effects *::before,body.reduce-effects *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}

/* Keep the supplied book as the frame; scene artwork is its own replaceable layer. */
.game-book.has-story-art{background-image:url("/media/de97b500d1f76d089e93148aa4cc9725cef53ef1d67c728b61aec52f1ec81a7d.webp")}
.story-illustration{position:absolute;left:6.8%;top:23%;width:43%;height:55%;margin:0;overflow:hidden;pointer-events:none;isolation:isolate;
  -webkit-mask-image:radial-gradient(ellipse at 50% 49%,#000 53%,#000c 65%,transparent 75%);mask-image:radial-gradient(ellipse at 50% 49%,#000 53%,#000c 65%,transparent 75%)}
.story-illustration-image{width:100%;height:100%;display:block;object-fit:cover;object-position:46% 48%;opacity:1;animation:illustration-reveal .6s ease both}
/* Opening a book pauses the campus behind it, not the picture on its page. */
body.scene-paused .story-illustration-image{animation-play-state:running!important}
.game-book.has-story-art .game-left{z-index:1;pointer-events:none}
.game-book.has-story-art .left-note{max-height:29%;overflow-y:auto;pointer-events:auto;font-size:12px}
.game-book.has-story-art .game-left h2{line-height:1.3;font-size:clamp(22px,2.25vw,34px);margin:8px 0}
.game-book.has-story-art .game-book-location{font-size:11px}
@keyframes illustration-reveal{from{opacity:0}to{opacity:1}}
.art-preview-badge{position:fixed;z-index:6;bottom:7px;left:50%;transform:translateX(-50%);font:10px/1.6 sans-serif;letter-spacing:1px;color:#e6cea0;background:#141414c9;padding:4px 12px;border:1px solid #ba934b55;border-radius:20px;pointer-events:none}
@media(max-width:900px){
  .game-book.has-story-art{background-size:960px 590px;background-position:15% -35px}
  .story-illustration{left:0;top:74px;width:100%;height:220px;-webkit-mask-image:linear-gradient(transparent,#000 13%,#000 77%,transparent);mask-image:linear-gradient(transparent,#000 13%,#000 77%,transparent)}
  .story-illustration-image{object-position:50% 39%}
  .game-book.has-story-art .game-left{height:290px;padding-top:14px}
  .game-book.has-story-art .chapter-kicker{font-size:10px;padding-bottom:5px}
  .game-book.has-story-art .game-left h2{font-size:23px;margin:5px 0}
  .game-book.has-story-art .game-book-location{font-size:9px}
  .art-preview-badge{bottom:auto;top:47px;left:auto;right:8px;transform:none;font-size:9px}
}
@media(prefers-reduced-motion:reduce){.story-illustration-image{animation:none}}
.reduce-effects .story-illustration-image{animation:none}

/* A quiet caption outside the masked artwork; all story controls remain usable. */
.illustration-status{position:absolute;z-index:3;left:9%;top:70%;width:38%;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:5px 10px;color:#76552e;font:11px/1.7 'Songti SC',serif;text-align:center;padding:5px 9px;border-radius:3px;background:#eed6adeb}
.illustration-status button{background:transparent;color:#76501c;border:0;border-bottom:1px solid #aa864e;padding:2px 3px;font:inherit;cursor:pointer;min-height:28px}
.illustration-status button:focus-visible{outline:2px solid #916527;outline-offset:3px}
@media(max-width:900px){.side-story-book .illustration-status{top:284px;left:8%;width:84%;font-size:10px;padding:3px 7px}.side-story-book .illustration-status button{min-height:30px}}

.game-right .main-illustration-status{position:static;inset:auto;width:auto;min-height:21px;margin:3px 0 0;padding:1px 5px;flex-shrink:0;font-size:10px;background:transparent;color:#82663e}
.game-right .main-illustration-status button{min-height:26px}
@media(max-width:900px){.game-right .main-illustration-status{font-size:10px;min-height:23px;margin-top:7px}}

/* Side scenes share the main story's illustrated book, typography and controls. */
.side-section-title{margin:28px 0 12px;font:21px 'Songti SC',serif;color:#e5cb9c}.side-section-title small{font:11px system-ui;color:#a99b82;margin-left:12px}
.side-mentor-card .person-initial{background:#3b3021;color:#ead5ac}.side-completion{color:#bdb298;font-size:12px}
.point .game-person-label small{display:block;font:10px/1.6 system-ui;letter-spacing:1px;color:#c1b28e}.point.has-side .game-person-label::after{content:'';position:absolute;right:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:#efc978;box-shadow:0 0 12px #edc87388}.point .game-person-label{position:relative}
.side-invitation{margin:20px 0;padding:15px 17px;border:1px solid #95734155;border-radius:3px;background:#d3b98224;color:#57472d;font:13px/1.75 'Songti SC',serif}.side-invitation>small{font:10px system-ui;letter-spacing:2px;color:#816338}.side-invitation p{margin:7px 0 12px!important;font-size:13px!important;line-height:1.75!important}.side-invitation .side-link{color:#4e432f;border:1px solid #8062397a;background:#ecddbf;padding:7px 12px;font-size:12px;border-radius:3px}.side-invitation .side-later{border:0;background:transparent;color:#796b56;font-size:11px;margin-left:8px;padding:8px}
.side-echo{margin:16px 0;padding:12px 16px;border-left:2px solid #927b51;background:#c5b08812;font-size:12px;color:#655943}.side-echo small{display:block;letter-spacing:2px;font-size:10px}.side-echo button{border:0;background:transparent;padding:0;color:inherit;text-align:left;font:inherit;line-height:1.8}
.main-talk-trigger,.side-ask-link{display:flex;width:100%;align-items:center;justify-content:space-between;margin:20px 0;padding:14px 16px;text-align:left;font:14px/1.7 'Songti SC',serif;color:#70501e;border:1px solid #a6814555;background:linear-gradient(100deg,#ebc67a20,#ffefbf40);border-radius:3px}.main-talk-trigger{font-size:12px;padding:10px 13px}.side-ask-link:hover,.main-talk-trigger:hover{background:#ffedb177}
.mentor-intro{display:grid;grid-template-columns:72px 1fr;gap:22px;align-items:center;margin-bottom:24px}.mentor-intro .mentor-avatar{height:130px;max-width:70px;filter:drop-shadow(3px 5px 3px #0008)}.mentor-intro small{color:#ac9975;letter-spacing:1px}.mentor-intro h3{font:28px 'Songti SC',serif;margin:8px 0}.mentor-intro p{color:#c9c0b0;margin:0}
.side-chapter-list{display:grid;gap:12px;margin:20px 0}.side-chapter{width:100%;text-align:left;border:1px solid #b3976038;border-radius:5px;padding:18px 20px;background:#ffffff04;color:#e7d2b1;display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center}.side-chapter:hover:not(:disabled){background:#cba76312;border-color:#b3976080}.side-chapter:disabled{opacity:.5;cursor:default}.side-chapter strong{display:block;font:18px 'Songti SC',serif}.side-chapter small{display:block;color:#b5a88f;font:11px/1.8 system-ui;margin-top:5px}.side-chapter>span:last-child{font:11px system-ui}.side-source-details{margin-top:22px}.side-source-details>summary{padding:12px 0;color:#b7a584;cursor:pointer;font-size:12px}
.side-story-book .side-vignette{top:25%;height:49%;left:8%;width:41%}.side-vignette .side-campus{inset:0;width:100%;height:100%;background-position:48% 58%;filter:sepia(.12) saturate(.75);animation:none;transform:none}.side-vignette .mentor-avatar{position:absolute;z-index:1;height:92%;width:32%;left:34%;bottom:2%;filter:drop-shadow(4px 6px 4px #0007)}
.side-story-book .game-left h2{font-size:clamp(23px,2.4vw,35px)}.side-story-book .left-note{max-height:24%!important}.side-page-title{font:23px/1.6 'Songti SC',serif;color:#51331a;margin:14px 0 18px;font-weight:500;letter-spacing:2px}.side-story-book .game-option{min-height:65px}.side-story-book .game-option.chosen:disabled{opacity:1}
.side-page-links{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin:24px 0 10px;border-top:1px solid #9f773b33;padding-top:10px}.side-page-links button{color:#86663b;font:11px/1.6 'Songti SC',serif;padding:4px 0;border:0;border-bottom:1px solid #9f773b44;background:none;min-height:32px}.side-adaptation{color:#8c704b;font:11px/1.8 'Songti SC',serif;margin:12px 0}.side-memory{font:12px/1.8 'Songti SC',serif;color:#8a683c;margin:15px 0;padding-left:12px;border-left:2px solid #b7914c66}
.talk-intro{font:14px/1.9 'Songti SC',serif;color:#73532c;margin:6px 0 18px}.talk-history{margin:16px 0}.talk-turn{margin-bottom:24px;scroll-margin:15px}.talk-turn>small,.talk-answer>small{font:10px 'Songti SC',serif;color:#9c7949}.talk-question{font:14px/1.9 'Songti SC',serif;color:#5f401e;margin:8px 0 12px;padding:10px 13px;background:#bd94541c;border-right:2px solid #a88043}.talk-answer{padding:5px 0 8px 14px;border-left:1px solid #a8804388}.talk-answer p{font:15px/1.95 'Songti SC',serif;color:#4b301b;margin:8px 0}.related-mentor{font:12px/1.7 'Songti SC',serif;color:#8a5d27;text-decoration:underline}
.talk-suggestions{display:grid;gap:8px;margin:18px 0}.talk-suggestions button{border:1px solid #b28d554d;background:#ffeab421;border-radius:3px;color:#765329;text-align:left;padding:10px 12px;font:12px/1.7 'Songti SC',serif}.talk-suggestions button:hover{border-color:#ae741b;background:#ffedb166}.talk-label{display:block;margin:20px 0 10px;font:13px 'Songti SC',serif;color:#78562b}.talk-input{display:block;resize:vertical;min-height:110px;width:100%;background:#ffedc54d;color:#4b301b;border:1px solid #a37c4788;border-radius:3px;padding:13px;font:15px/1.9 'Songti SC',serif;box-shadow:inset 0 1px 5px #9a793a0d}.talk-input::placeholder{color:#a68b64}.talk-input:focus-visible{outline:2px solid #a87c3b;outline-offset:2px}.talk-input-meta{display:flex;justify-content:space-between;gap:12px;margin:8px 0;color:#94784f;font:10px/1.6 system-ui}.side-story-book .game-book-footer>span{display:block;line-height:1.6}.side-journal-label{color:#caa86e;font-size:11px;margin-right:8px}.timeline .side-record{border-left-color:#b08b4e}
@media(min-width:901px){.side-story-book .reading-pane{padding-right:12px}.side-story-book .side-page-title{font-size:23px}.side-book-mode .game-book-footer{flex-shrink:0}}
@media(max-width:900px){.side-story-book.has-story-art .story-illustration{left:5%;top:86px;width:90%;height:230px;-webkit-mask-image:radial-gradient(ellipse at 50% 50%,#000 35%,transparent 73%);mask-image:radial-gradient(ellipse at 50% 50%,#000 35%,transparent 73%)}.side-story-book.has-story-art .game-left{height:325px;padding-top:19px}.side-vignette .mentor-avatar{height:90%;width:25%;left:37.5%;bottom:4%}.side-story-book .game-right{padding:20px 26px 28px}.side-story-book .side-page-title{font-size:24px}.side-story-book .game-book-footer>span{max-width:52%}.side-story-book .game-option{min-height:70px}.side-story-book .side-adaptation{font-size:11px}.side-book-mode .book-person{font-size:10px;letter-spacing:1px}}
@media(max-width:650px){.side-chapter{padding:15px 12px;gap:8px;grid-template-columns:24px 1fr auto}.side-chapter strong{font-size:16px}.side-chapter>span:last-child{font-size:10px}.side-book-mode .book-top button{font-size:15px}.side-book-mode .book-person{font-size:9px}.talk-answer p{font-size:15px}.talk-suggestions button{font-size:13px}.side-story-book .game-book-footer .book-write{padding:12px 17px;font-size:13px}.side-story-book .leaf-meta{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.side-vignette *{animation:none!important;transition:none!important}}

/* Reuse the complete mentor profile inside the cinematic gold archive. */
dialog.mentor-archive{position:fixed;inset:var(--archive-top,70px) auto auto var(--archive-left,60%);margin:0;transform:none;width:390px;max-width:calc(100vw - 36px);height:auto;max-height:calc(100dvh - 110px);padding:0;overflow:visible;border:1px solid #d4ac61;outline:1px solid #9e793f;outline-offset:4px;border-radius:0;background:repeating-linear-gradient(135deg,#ffffff02 0 1px,transparent 1px 4px),linear-gradient(130deg,#191811f7,#0a0d10fc);box-shadow:0 18px 80px #000b;color:#ead8af;}
dialog.mentor-archive::backdrop{background:#0009;backdrop-filter:none}
.mentor-archive .dialoghead{background:none;padding:20px 22px 15px;border-bottom:1px solid #c9a35866;gap:10px}.mentor-archive .dialoghead .eyebrow{font:11px/1.7 'Songti SC',serif;letter-spacing:1px;color:#c9a76a}.mentor-archive .dialoghead h2{font:30px/1.35 'Songti SC',serif;letter-spacing:3px;margin-top:9px;color:#fff0cb}.mentor-archive .close{background:none;border:1px solid #c6a36733;color:#d5b47b;width:28px;height:28px;flex-shrink:0;font-size:22px}.mentor-archive .dialogbody{padding:19px 22px 22px;max-height:calc(100dvh - 235px);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#9d8048 #151610;}
.mentor-archive .mentor-intro{grid-template-columns:45px 1fr;gap:14px;margin-bottom:19px}.mentor-archive .mentor-avatar{height:94px;width:39px}.mentor-archive .mentor-intro h3{font-size:19px;margin:7px 0}.mentor-archive .mentor-intro small{font-size:10px}.mentor-archive .mentor-intro p{font:12px/1.8 'Songti SC',serif;color:#cfc2a5}.mentor-archive .side-chapter-list{display:grid;gap:10px}.mentor-archive .side-chapter{padding:13px 9px;gap:10px;border:1px solid #b9934c55;border-radius:0;background:#aa85450a;text-align:left}.mentor-archive .side-chapter strong{font:16px/1.5 'Songti SC',serif}.mentor-archive .side-chapter small{font-size:10px;line-height:1.7}.mentor-archive .side-chapter>span:last-child{font-size:10px;white-space:nowrap}.mentor-archive .side-chapter:disabled{opacity:.65}.mentor-archive .story-disclosure{font-size:10px;line-height:1.9;margin:18px 0;color:#a99b80}.mentor-archive .side-source-details{margin-top:18px;border-top:1px solid #a98a464a;padding-top:15px}.mentor-archive .side-source-details>summary{font:12px/1.9 'Songti SC',serif;color:#dfbd7e;cursor:pointer}.mentor-archive .side-source-details h3{font-size:21px;line-height:1.55}.mentor-archive .side-source-details p{font-size:12px;line-height:1.95}.mentor-archive .side-source-details *{max-width:100%;box-sizing:border-box}.mentor-archive .side-source-details .grid2{grid-template-columns:1fr}.mentor-archive .side-source-details li{font-size:12px;line-height:1.9}.mentor-archive .actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.mentor-archive button.primary,.mentor-archive button.secondary,.mentor-archive a.primary{font-size:11px;padding:10px 13px;border-radius:2px}.mentor-archive .tag{font-size:10px}.mentor-spotlight-person{position:fixed;display:flex;justify-content:center;align-items:flex-end;pointer-events:none;filter:drop-shadow(1px 0 1px #f7cb65) drop-shadow(-1px 0 1px #f7cb65) drop-shadow(0 0 8px #e4ad4888)}.mentor-spotlight-person svg{height:100%;max-width:100%;animation:none!important;filter:none}.mentor-spotlight-person:after{content:'';position:absolute;bottom:2px;width:52px;height:13px;border:2px solid #ffe6a5;border-radius:50%;box-shadow:0 0 9px #ffd479,0 0 18px #e8a22780}.mentor-spotlight-line{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;overflow:visible}.mentor-spotlight-line path{stroke:#dcb565;stroke-width:1;fill:none}.mentor-spotlight-line circle{fill:#ffe0a1}
@media(max-width:760px){dialog.mentor-archive{left:18px;top:65px;width:calc(100vw - 36px);max-height:calc(100dvh - 95px)}.mentor-archive .dialogbody{max-height:calc(100dvh - 225px)}.mentor-archive .dialoghead h2{font-size:26px}.mentor-archive .mentor-spotlight-line{display:none}}

/* Hover isolates the selected person and the archive from the dimmed campus. */
dialog.mentor-archive::backdrop{background:rgba(0,0,0,.67);backdrop-filter:none}
.mentor-archive .mentor-spotlight-person{z-index:2;filter:drop-shadow(1px 0 1px #ffd578) drop-shadow(-1px 0 1px #ffd578) drop-shadow(0 0 8px #ebb649aa)}
.mentor-archive .mentor-spotlight-person svg{opacity:1;filter:brightness(1.13) saturate(1.03);animation:none!important}
.mentor-archive .mentor-spotlight-line{z-index:1}
body.scene-paused .point,body.scene-paused .realistic-student,body.scene-paused .fireflies i{animation-play-state:paused!important}

@media(max-width:760px){.mentor-archive .mentor-spotlight-person{display:flex}.mentor-archive .dialoghead,.mentor-archive .dialogbody{position:relative;z-index:3;background:#141510f5}}

/* Fixed highlight uses the sprite's captured viewport geometry, never label geometry. */
dialog.mentor-archive{transform:none!important;filter:none!important;backdrop-filter:none!important;perspective:none;contain:none}
.mentor-spotlight-person{display:block!important;box-sizing:content-box;padding:0;border:0;margin:0;transform:none!important}
.mentor-spotlight-person svg{flex:none;animation:none!important;transition:none!important}
.mentor-spotlight-person:after{left:50%;transform:translateX(-50%);pointer-events:none}

/* First steps: the same night campus, admission letter and paper as the story. */
.welcome-gate{display:flex;align-items:stretch;flex-direction:column;isolation:isolate;overflow:auto;min-height:100dvh;background:#0a101b;color:#eeddbd;font-family:'Songti SC',STSong,Georgia,serif}
.welcome-art-layer{position:absolute;z-index:-3;inset:0 0 0 23%;overflow:hidden;pointer-events:none}
.welcome-art-layer .gate-artwork{width:100%;height:100%;object-fit:cover;object-position:52% 50%}
.welcome-shade{position:absolute;z-index:-2;inset:0;background:linear-gradient(90deg,#0a101b 0%,#0a101bef 23%,#0a101baa 37%,#0a101b00 65%),linear-gradient(0deg,#070c16d9,transparent 27%,transparent 82%,#070c1677);pointer-events:none}
.welcome-topbar{width:100%;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:30px clamp(26px,4.4vw,84px)}
.welcome-brand{display:flex;align-items:center;gap:14px;font-size:23px;letter-spacing:4px}
.welcome-brand-mark{width:41px;height:49px;display:grid;place-items:center;border:1px solid #ba9a6066;border-radius:1px;color:#d8b777;font-size:24px;letter-spacing:0;box-shadow:inset 0 0 0 4px #d8b77708}
.welcome-brand small{display:block;margin-top:7px;font:10px/1.6 'Songti SC',STSong,serif;color:#c6b598;letter-spacing:2px}
.welcome-text-button{color:#d7c4a5;font:13px/1.5 'Songti SC',STSong,serif;letter-spacing:1px;min-height:44px;padding:10px 0}
.welcome-text-button span{margin-left:8px}
.welcome-copy{width:62%;flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:36px 0 50px clamp(26px,7vw,134px);max-width:min(62%,800px)}
.welcome-kicker{display:flex;align-items:center;gap:16px;color:#cfb888;font:12px/1.7 'Songti SC',STSong,serif;letter-spacing:3px;margin-bottom:25px}
.welcome-kicker::before{content:'';width:30px;height:1px;background:#bb965f}
.welcome-copy h1{font-size:clamp(31px,3.05vw,56px);font-weight:400;line-height:1.55;letter-spacing:3px;color:#f4e7cf;text-shadow:0 3px 22px #04060cad;margin:0}
.welcome-copy h1 em{font-style:normal;color:#dfbe7b}
.welcome-description{font:17px/2 'Songti SC',STSong,serif;color:#c7bca8;margin:23px 0 28px;letter-spacing:1px}
.welcome-save-summary{color:#d4c4a9;font:13px/1.9 'Songti SC',STSong,serif;border-left:1px solid #ae8b5066;padding-left:14px;margin:0 0 25px}
.welcome-gate .enter-campus{position:static;display:inline-flex;align-items:center;justify-content:space-between;gap:32px;min-height:56px;width:auto;min-width:230px;height:auto;max-width:100%;padding:14px 26px;border:1px solid #cfac6c;border-radius:999px;background:linear-gradient(115deg,#7a593d66,#261e1780);box-shadow:inset 0 1px #ffe3a51a,0 7px 30px #06070955;color:#f2d8a5;font:18px/1.5 'Songti SC',STSong,serif;letter-spacing:2px;transition:background .18s,box-shadow .18s,transform .18s}
.welcome-gate .enter-campus:hover{background:linear-gradient(115deg,#9a703b80,#3c2a2080);box-shadow:0 0 30px #f6be4b25;transform:translateY(-1px)}
.welcome-gate .enter-campus:focus-visible,.welcome-text-button:focus-visible,.welcome-bottom button:focus-visible{outline:2px solid #ffe4ac;outline-offset:5px}
.welcome-footnote{color:#aea28c;font:11px/1.8 'Songti SC',STSong,serif;margin-top:16px;letter-spacing:1px}
.welcome-bottom{width:100%;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:14px clamp(26px,4.4vw,84px) 23px;color:#a99d86;font:11px/1.8 'Songti SC',STSong,serif;letter-spacing:1px}
.welcome-gate #gateImport{position:static;min-height:44px;opacity:1;padding:8px 0;color:#d6c3a2;font:13px/1.5 'Songti SC',STSong,serif;letter-spacing:1px}
.welcome-gate #gateImport span{margin-left:8px}
.welcome-copy [hidden]{display:none}

dialog.welcome-mode{position:fixed;inset:0;width:100vw!important;height:100dvh;max-width:none!important;max-height:none!important;margin:0;padding:0;border:0;border-radius:0;background:#0d131e;color:#4a311d;overflow:auto;box-shadow:none;font-family:'Songti SC',STSong,Georgia,serif;color-scheme:light}
dialog.welcome-mode::backdrop{background:#0b111b}
.welcome-mode>.dialoghead{display:none}
.welcome-mode>.dialogbody{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;min-height:100dvh;margin:0;padding:0 0 18px}
.journey-backdrop{position:absolute;z-index:-2;inset:0;pointer-events:none;background-position:center!important;background-size:cover!important;filter:blur(3px) brightness(.38)!important;animation:none!important;transform:none!important}
.journey-topbar{width:100%;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:15px clamp(22px,4vw,72px);color:#d6c3a5;font:12px/1.8 'Songti SC',STSong,serif;letter-spacing:2px}
.journey-back{min-height:44px;color:#ead6b2;font:14px/1.5 'Songti SC',STSong,serif;padding:8px 0;letter-spacing:1px}
.journey-back span{margin-right:9px}
.journey-book{width:min(1180px,96vw);aspect-ratio:1672/941;display:grid;grid-template-columns:1fr 1fr;gap:9%;align-items:center;margin:auto;padding:6.2% 7%;background:url('/media/de97b500d1f76d089e93148aa4cc9725cef53ef1d67c728b61aec52f1ec81a7d.webp') center/100% 100% no-repeat;filter:drop-shadow(0 18px 25px #0009)}
.journey-left{padding:0 3% 0 0;align-self:stretch;display:flex;flex-direction:column;justify-content:center}
.journey-eyebrow{display:flex;gap:10px;align-items:center;color:#865f34;font:12px/1.6 'Songti SC',STSong,serif;letter-spacing:3px;margin:0 0 20px}
.journey-eyebrow::before{content:'◇';font-size:15px}
.journey-left h2{font:400 clamp(28px,3.1vw,43px)/1.65 'Songti SC',STSong,serif;color:#4c2d16;letter-spacing:3px;margin:0 0 20px}
.journey-left h2 em{font-style:normal;color:#8c5d2a}
.journey-letter{font:16px/2.1 'Songti SC',STSong,serif;color:#6e4b2c;max-width:330px;margin:0!important}
.journey-years{margin-top:35px;padding-top:16px;border-top:1px solid #a77d4644;color:#8b653b;font:12px/1.8 Georgia,'Songti SC',serif;letter-spacing:3px}
.journey-years span{display:block;font-family:'Songti SC',STSong,serif;letter-spacing:2px;margin-top:5px}
.journey-step{display:flex;gap:15px;padding:17px 0;border-bottom:1px solid #a17c4440}
.journey-step:first-child{padding-top:0}
.journey-number{font:italic 20px/1.4 Georgia,serif;color:#a17c48;flex:0 0 28px}
.journey-step h3{font:400 20px/1.5 'Songti SC',STSong,serif;color:#5c371a;margin:0 0 7px;letter-spacing:1px}
.journey-step p{font:14px/1.9 'Songti SC',STSong,serif;color:#705030;margin:0!important}
.journey-right .journey-reassurance{font:13px/1.8 'Songti SC',STSong,serif;color:#86623a;margin:17px 0!important}
.journey-start{display:flex;align-items:center;justify-content:center;gap:18px;width:100%;min-height:50px;padding:12px 16px;border:1px solid #5d3b1c;border-radius:999px;background:linear-gradient(#815a33,#5e3a20);color:#ffdfaa;box-shadow:0 4px 12px #744e2929,inset 0 1px #edc28866;font:16px/1.6 'Songti SC',STSong,serif;letter-spacing:1px}
.journey-start:hover{background:linear-gradient(#93693d,#714726)}
.journey-settings{display:block;margin:6px auto 0;min-height:38px;padding:8px 10px;color:#775232;text-decoration:underline;text-decoration-color:#9a723c77;text-underline-offset:5px;font:12px/1.6 'Songti SC',STSong,serif;letter-spacing:1px}
.journey-back:focus-visible,.journey-start:focus-visible,.journey-settings:focus-visible{outline:2px solid #be8b43;outline-offset:4px}
.journey-right [hidden]{display:none}
.welcome-mode .journey-footer{color:#c4b497;font:11px/1.8 'Songti SC',STSong,serif;letter-spacing:2px;padding:7px 20px 0;text-align:center;margin:0}

@media(min-width:901px) and (min-height:640px){.journey-book{width:min(1180px,96vw,calc((100dvh - 105px)*1.777));padding:clamp(40px,5.3vw,70px) clamp(68px,8.5vw,118px)}.journey-left h2{font-size:clamp(28px,3vw,42px)}}
@media(max-width:1000px){.welcome-art-layer{left:10%}.welcome-shade{background:linear-gradient(90deg,#0a101bf2,#0a101bcb 28%,#0a101b22 85%),linear-gradient(0deg,#070c16c9,transparent 40%)}.welcome-copy{max-width:73%;padding-left:6vw}.welcome-copy h1{font-size:clamp(30px,4.2vw,42px)}.journey-book{gap:9%;padding:7% 8%;min-height:530px}.journey-letter{font-size:15px}.journey-step{padding:13px 0}.journey-step h3{font-size:18px}.journey-step p{font-size:13px}.journey-years{margin-top:22px}}
@media(max-width:700px){
 .welcome-gate{min-height:100dvh}.welcome-topbar{padding:20px 23px;gap:12px}.welcome-brand{font-size:20px;gap:10px;letter-spacing:2px}.welcome-brand-mark{width:34px;height:42px;font-size:21px}.welcome-brand small{font-size:9px;letter-spacing:1px}.welcome-text-button{font-size:11px;white-space:nowrap}
 .welcome-art-layer{inset:0 0 24%}.welcome-art-layer .gate-artwork{object-position:50% 38%}.welcome-shade{background:linear-gradient(0deg,#090f1b 3%,#090f1bf5 24%,#090f1b70 53%,#090f1b00 77%,#090f1b77)}
 .welcome-copy{max-width:none;width:100%;padding:160px 26px 20px;justify-content:flex-end;align-items:center;text-align:center}.welcome-kicker{font-size:10px;letter-spacing:2px;margin-bottom:12px;gap:10px}.welcome-kicker::before{width:20px}.welcome-copy h1{font-size:clamp(27px,6.8vw,38px);line-height:1.5;letter-spacing:2px}.welcome-description{font-size:14px;line-height:1.9;margin:15px 0 20px}.welcome-description br{display:none}.welcome-save-summary{font-size:12px;margin-bottom:18px}.welcome-gate .enter-campus{min-width:226px;min-height:52px;font-size:16px;padding:12px 22px}.welcome-footnote{font-size:10px;margin-top:12px}
 .welcome-bottom{padding:0 24px 14px;gap:12px;font-size:9px}.welcome-gate #gateImport{font-size:11px;white-space:nowrap}
 .journey-topbar{padding:12px 22px}.journey-topbar>span{font-size:10px;letter-spacing:1px}.journey-book{display:block;width:calc(100% - 18px);aspect-ratio:auto;min-height:0;padding:56px 34px 44px 58px;background-size:200% 100%;background-position:left center;filter:drop-shadow(0 8px 15px #0008)}.journey-left{padding:0}.journey-eyebrow{font-size:11px;margin-bottom:10px;letter-spacing:2px}.journey-left h2{font-size:30px;line-height:1.6;margin-bottom:14px}.journey-left h2 br{display:block}.journey-letter{font-size:15px;line-height:1.95;max-width:none}.journey-years{margin:18px 0 23px;padding-top:13px;font-size:11px}.journey-years span{display:inline;margin-left:10px;letter-spacing:1px}.journey-step{padding:15px 0;gap:11px}.journey-number{font-size:18px;flex-basis:25px}.journey-step h3{font-size:18px}.journey-step p{font-size:14px}.journey-right .journey-reassurance{font-size:12px;margin:17px 0!important}.journey-start{font-size:15px}.journey-footer{font-size:10px!important;letter-spacing:1px!important}
}
@media(max-height:600px) and (min-width:701px){.welcome-topbar{padding-top:16px;padding-bottom:8px}.welcome-copy{padding-top:12px;padding-bottom:12px}.welcome-copy h1{font-size:32px;line-height:1.4}.welcome-kicker{margin-bottom:12px}.welcome-description{margin:14px 0 20px;font-size:15px}.welcome-bottom{padding-bottom:8px}}
@media(prefers-reduced-motion:reduce){.welcome-gate .enter-campus{transition:none}.welcome-gate .enter-campus:hover{transform:none}}

.welcome-gate .enter-campus span{font:inherit}

/* A second, explicit action is required before replacing an existing story. */
.picture-save-notice.picture-save-confirm{z-index:8;width:min(460px,84vw);padding:20px 24px;border:1px solid #c9a46e99;border-radius:12px;background:#101923f5;color:#e5d4b6;box-shadow:0 15px 60px #0008;line-height:1.8;white-space:normal;text-align:left}
.picture-save-confirm strong{font-size:17px;font-weight:400;letter-spacing:1px}
.picture-save-confirm p{font-size:12px;margin:10px 0 14px;color:#cabb9f}
.picture-save-confirm>div{display:flex;flex-wrap:wrap;gap:10px}
.picture-save-confirm button{min-height:40px;border:1px solid #b6976655;border-radius:999px;padding:8px 15px;margin:0;color:#e7d2af;text-decoration:none;background:#b4945622;font-size:12px}
.picture-save-confirm #confirmRestart{background:#bc9859;color:#101923;border-color:#bc9859}

/* Story collection and reading controls extend the existing night-campus palette. */
.welcome-navigation{display:flex;align-items:center;gap:24px}.welcome-new-story{color:#d2bd94;font:12px/1.6 'Songti SC',STSong,serif;min-height:40px;padding:10px 5px;margin-top:9px;text-decoration:underline;text-underline-offset:5px;text-decoration-color:#ad8d5555}.welcome-new-story[hidden]{display:none}
.campus-tools{display:flex;align-items:center;gap:17px}.campus-settings{color:#d4c1a0;min-height:44px;font-size:12px}
.campus-hint{position:fixed;z-index:12;left:50%;top:100px;transform:translateX(-50%);max-width:calc(100vw - 36px);width:430px;padding:18px 20px;display:flex;gap:16px;align-items:center;background:#101b29ed;border:1px solid #b4915566;border-radius:14px;box-shadow:0 10px 35px #0005;color:#decba9;font:13px/1.8 'Songti SC',STSong,serif;backdrop-filter:blur(12px)}.campus-hint p{margin:0}.campus-hint button{min-width:54px;min-height:44px;color:#f3dba6;text-decoration:underline;flex-shrink:0}.campus-hint[hidden]{display:none}.at-gate .campus-hint{display:none}
.save-error{position:fixed;z-index:110;left:50%;bottom:16px;transform:translateX(-50%);width:min(620px,calc(100vw - 24px));padding:14px 18px;border:1px solid #dfae775e;border-radius:12px;background:#302219;color:#f1d5b0;font-size:12px;box-shadow:0 10px 40px #0008;line-height:1.8}.save-error[hidden]{display:none}.save-error>span{display:block}.save-error button{color:#ffe1b1;text-decoration:underline;min-height:40px;margin-right:16px;padding:7px 0}.toast{z-index:120}
dialog.collection-mode{width:min(1080px,calc(100vw - 36px))!important;max-height:90dvh;background:#101925;border-color:#a489524d;border-radius:20px}.collection-mode .dialoghead{background:#101925ed}.collection-mode .dialogbody{padding:30px clamp(22px,3.2vw,48px) 28px}.collection-heading{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-bottom:32px}.collection-kicker{color:#a99570;font:10px/1.7 Georgia,'Songti SC',serif;letter-spacing:3px;margin:0 0 12px}.collection-heading h3{font:400 clamp(24px,2.8vw,34px)/1.65 'Songti SC',STSong,serif;color:#eddbb6;letter-spacing:2px}.collection-heading p:not(.collection-kicker){font:13px/1.8 'Songti SC',STSong,serif;color:#b4ab98;margin-top:10px}.collection-heading>.primary{white-space:nowrap;min-height:46px}.story-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.story-card{position:relative;padding:25px 27px 16px;border:1px solid #ab8a5042;border-radius:13px;background:linear-gradient(125deg,#26303555,#141e28);overflow:hidden;color:#e4d0a7;min-width:0}.story-card::before{content:'';position:absolute;top:0;left:25px;width:28px;height:3px;background:#a88a5066}.story-card.is-current{border-color:#c6a36499;box-shadow:inset 0 0 36px #ca9b3910}.story-card.is-current::before{background:#dab879}.story-card-top{display:flex;align-items:center;justify-content:space-between}.story-number{font:italic 26px/1 Georgia,serif;color:#a28e69}.story-state{font-size:10px;color:#d9c197;border:1px solid #b9986344;border-radius:999px;padding:5px 10px;display:inline-block;letter-spacing:1px}.story-state.is-complete{color:#b6cba9;border-color:#79977a55;background:#8097780e}.story-card h3{font:400 23px/1.65 'Songti SC',STSong,serif;letter-spacing:1px;margin:16px 0 5px;overflow-wrap:anywhere;color:#edd7b0}.story-card-place{color:#b7ac94;font:12px/1.8 'Songti SC',STSong,serif;margin:0 0 22px;min-height:22px}.story-card-progress{display:flex;justify-content:space-between;align-items:center;font:12px/1.7 'Songti SC',STSong,serif;color:#c6b89e;gap:10px}.story-meter{height:2px;background:#8c74452c;margin:10px 0 16px}.story-meter i{display:block;height:100%;background:#c5a264}.story-time{font-size:10px;color:#978f7d;letter-spacing:.5px;margin:0 0 20px}.story-outcome{font-size:12px;line-height:1.8;color:#b9bea9;margin:0 0 15px}.story-resume{width:100%;justify-content:space-between;min-height:45px;font:14px/1.5 'Songti SC',STSong,serif;border-radius:999px}.story-card-tools{display:flex;gap:18px;flex-wrap:wrap;margin-top:6px}.story-card-tools button{font-size:11px;min-height:40px;color:#baa987;padding:8px 0;text-decoration:underline;text-decoration-color:#a58a553b;text-underline-offset:4px}.story-card.unavailable small{color:#b9a38c;font-size:11px}.collection-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:28px;color:#9c947f;font-size:11px}.collection-footer .secondary{border-radius:999px}.story-empty{text-align:center;border:1px dashed #ad8b4c44;padding:50px 20px;border-radius:15px;background:#bd9b5b06}.story-empty>span{font:34px Georgia,serif;color:#a9946e}.story-empty h3{font:400 22px/1.8 'Songti SC',STSong,serif;color:#e1cba0;margin:18px 0 9px}.story-empty p{font-size:12px;color:#a89f89;margin:0 0 25px}.new-story-letter{padding:14px 0 22px;font:18px/2 'Songti SC',STSong,serif;color:#e3cda5}.letter-mark{font:32px Georgia,serif;color:#b59961;display:block;margin-bottom:15px}.new-story-letter .subtle{font:12px/1.9 'Songti SC',STSong,serif;margin-top:14px;color:#b1a48d}.library-recovery{padding:25px;background:#aa673311;border:1px solid #b8986244;border-radius:12px}.library-recovery h3{font:20px 'Songti SC',STSong,serif;color:#edd1a5}.library-recovery p{color:#c9b99b;font-size:13px;margin:12px 0}.library-recovery button{margin:8px 12px 0 0}.import-field{margin-top:20px}.import-field textarea{margin-top:9px}.import-message{font-size:12px;color:#d6b98b!important;margin:16px 0!important;line-height:1.9}.import-preview{padding:24px;border:1px solid #b59b6644;border-radius:14px;background:#b38f4a09}.import-preview h3{font:400 24px/1.7 'Songti SC',STSong,serif;color:#e9d1a8;margin:14px 0 7px}.import-preview p{font-size:12px;color:#baaf99;margin:8px 0}.preferences-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:22px 0}.preferences-grid select{margin-top:9px}.welcome-copy{padding-top:20px;padding-bottom:28px}.welcome-footnote{margin-top:8px}
@media(max-width:760px){.welcome-topbar{align-items:flex-start}.welcome-navigation{gap:10px;flex-wrap:wrap;justify-content:flex-end;max-width:48%}.welcome-navigation .welcome-text-button{font-size:11px;min-height:34px;padding:5px 0}.welcome-navigation #welcomeAbout{flex-basis:100%;text-align:right;min-height:24px}.welcome-brand small{max-width:145px}.campus-tools{gap:10px}.campus-settings{font-size:11px}.campus-hint{top:160px;font-size:12px;padding:14px 17px;width:calc(100% - 38px)}dialog.collection-mode{width:calc(100vw - 20px)!important;max-height:94dvh}.collection-mode .dialogbody{padding:23px 18px}.collection-heading{display:block;margin-bottom:22px}.collection-heading h3{font-size:26px}.collection-heading>.primary{margin-top:20px;min-height:44px}.story-grid{grid-template-columns:1fr;gap:16px}.story-card{padding:22px 23px 14px}.story-card h3{font-size:23px}.collection-footer{flex-wrap:wrap}.collection-footer>span{font-size:10px}.preferences-grid{grid-template-columns:1fr;gap:5px}.welcome-save-summary{max-width:330px;line-height:1.7}.welcome-copy{padding-top:140px}.welcome-description{margin-top:12px;margin-bottom:15px}.welcome-new-story{margin-top:4px;font-size:11px}.welcome-footnote{max-width:280px}.new-story-letter{font-size:17px}}
@media(max-width:400px){.welcome-brand{font-size:18px}.welcome-brand small{font-size:8px}.welcome-brand-mark{width:30px;height:37px}.welcome-topbar{padding-left:19px;padding-right:19px}.welcome-navigation{column-gap:12px}.story-card-tools{gap:15px}}

@media(min-width:761px){.collection-heading h3 br{display:none}.collection-heading h3{font-size:28px}.collection-heading{margin-bottom:24px}.collection-heading p:not(.collection-kicker){margin-top:8px}.collection-mode .dialogbody{padding-top:22px}}

.campus-menu{display:none}
@media(max-width:760px){#campusHeader .toplinks{display:none!important}#campusHeader{padding:0 22px;height:70px;overflow:visible;justify-content:space-between!important}.campus-menu{display:block;position:relative;color:#e4cda3}.campus-menu summary{font:15px/1.5 'Songti SC',STSong,serif;letter-spacing:1px;list-style:none;cursor:pointer;padding:12px 0;min-height:44px}.campus-menu summary::-webkit-details-marker{display:none}.campus-menu summary span{margin-left:8px;color:#bba272}.campus-menu>div{position:absolute;top:100%;left:0;width:185px;display:grid;padding:8px;background:#101b2af5;border:1px solid #af8a5366;border-radius:12px;box-shadow:0 12px 35px #0007;backdrop-filter:blur(12px)}.campus-menu:not([open])>div{display:none}.campus-menu button{text-align:left;color:#dfc9a3;min-height:44px;padding:10px 13px;font-size:12px;border-radius:7px}.campus-menu button:hover{background:#bc96541a}.campus-tools{gap:19px}.campus-settings{white-space:nowrap;min-height:44px}.world #points .point{left:clamp(13%,var(--mentor-x),87%)!important;top:clamp(34%,var(--mentor-y),70%)!important}}

/* Graduation and the readable Markdown edition reuse the existing ink and paper palette. */
dialog.completion-mode{width:min(780px,calc(100vw - 32px))!important;background:#101b29;border-color:#c3a56a66;border-radius:18px}
.completion-mode .dialoghead{background:transparent}.completion-mode .dialogbody{padding:20px clamp(22px,5vw,60px) 40px}
.graduation-letter{text-align:center;color:#ddc8a1}.graduation-mark{font:italic 34px Georgia,serif;color:#ad8b50;letter-spacing:7px;margin:2px 0 20px}.graduation-letter h3{font:400 clamp(26px,3vw,36px)/1.7 'Songti SC',STSong,serif;color:#f0dcb5;letter-spacing:3px}.graduation-letter .graduation-date{font:12px/2 Georgia,serif;letter-spacing:2px;color:#a89b80;margin:14px 0 24px}.graduation-result{max-width:520px;margin:0 auto;padding:20px 22px;border-top:1px solid #ad8b5044;border-bottom:1px solid #ad8b5044;font:15px/1.9 'Songti SC',STSong,serif;color:#dccba9}.graduation-details{display:flex;justify-content:center;gap:38px;margin:25px 0;color:#a79b83;font-size:11px}.graduation-details b{display:block;font:26px/1.5 Georgia,serif;color:#e7ce9c;margin-bottom:4px}.graduation-letter .primary{min-height:48px;width:min(340px,100%);margin:5px auto 13px;font:15px 'Songti SC',STSong,serif;justify-content:center}.graduation-note{font:12px/1.9 'Songti SC',STSong,serif;color:#ad9f86}.graduation-links{display:flex;justify-content:center;flex-wrap:wrap;gap:15px 25px;margin-top:18px}.graduation-links button{min-height:44px;font-size:12px;color:#d5bd91;text-decoration:underline;text-underline-offset:5px;text-decoration-color:#b4945544}
dialog.memoir-mode{width:min(1100px,calc(100vw - 30px))!important;max-height:92dvh;background:#101925;border-color:#ad8a5066;border-radius:18px}.memoir-mode .dialoghead{background:#101925f5}.memoir-mode .dialogbody{padding:0 24px 26px}.memoir-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:17px 0}.memoir-toolbar>div{display:flex;gap:10px;flex-wrap:wrap}.memoir-toolbar button{min-height:42px;font-size:12px}.memoir-toolbar .memoir-back{color:#cfb68b;text-decoration:underline;text-underline-offset:5px}.memoir-toolbar .primary,.memoir-toolbar .secondary{border-radius:999px}.memoir-layout{display:grid;grid-template-columns:150px minmax(0,1fr);gap:22px;align-items:start}.memoir-contents{position:sticky;top:100px;display:grid;gap:4px}.memoir-contents span{font:10px/1.9 Georgia,serif;color:#9e8c68;letter-spacing:2px;margin:4px 10px 13px}.memoir-contents button{color:#b8ab91;text-align:left;font:13px/1.6 'Songti SC',STSong,serif;padding:10px 12px;min-height:42px;border-radius:7px}.memoir-contents button:hover,.memoir-contents button[aria-current="location"]{color:#efd5a7;background:#b4985720}.memoir-paper{background:#e9dfc8;color:#403a30;border:1px solid #b5a07888;padding:38px clamp(24px,4.5vw,58px) 28px;border-radius:8px;box-shadow:0 8px 30px #0003;overflow-wrap:anywhere}.memoir-cover{border-bottom:1px solid #94826355;padding-bottom:30px;margin-bottom:32px}.memoir-cover>small{font:10px Georgia,serif;letter-spacing:3px;color:#8a7350}.memoir-cover h1{font:400 clamp(27px,3vw,37px)/1.6 'Songti SC',STSong,serif;color:#463824;letter-spacing:2px;margin:15px 0 9px}.memoir-cover p{font:13px/1.9 'Songti SC',STSong,serif;color:#83704e}.memoir-section{scroll-margin-top:105px;padding-bottom:29px;margin-bottom:30px;border-bottom:1px solid #9482633b}.memoir-section:last-child{border-bottom:0;margin-bottom:0}.memoir-section h2{font:400 25px/1.7 'Songti SC',STSong,serif;color:#635035;margin:0 0 24px}.memoir-section h3{font:600 16px/1.9 'Songti SC',STSong,serif;color:#56452f;margin:29px 0 9px}.memoir-section p,.memoir-section li{font:16px/2 'Songti SC',STSong,serif;white-space:pre-wrap;color:#463e32}.memoir-section p{margin:10px 0}.memoir-section ul{padding-left:21px;margin:10px 0}.memoir-section li{font-size:14px;margin:6px 0}.memoir-section a{color:#78603a;text-decoration:underline}.memoir-section .memoir-source{font-size:12px}.memoir-footer{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:25px}.memoir-export-note{font-size:11px;color:#a99b80;text-align:center;margin:17px 0 0;line-height:1.8}.memoir-empty{padding:28px 0;font:16px/1.9 'Songti SC',STSong,serif}.flow-preview-label{position:fixed;left:18px;bottom:10px;z-index:90;padding:7px 12px;border:1px solid #c4a77855;border-radius:8px;background:#0d172beb;color:#e3c79c;font:11px/1.7 'Songti SC',STSong,serif;pointer-events:none}.at-gate .flow-preview-label{bottom:65px}.flow-preview-label[hidden]{display:none}
@media(max-width:760px){.completion-mode .dialogbody{padding:10px 24px 27px}.graduation-mark{font-size:26px;margin-bottom:13px}.graduation-letter h3{font-size:27px;letter-spacing:1px}.graduation-details{gap:25px}.graduation-result{padding:16px 0;font-size:14px}.graduation-letter .graduation-date{font-size:10px}.graduation-links{gap:5px 20px}.memoir-mode .dialogbody{padding:0 14px 20px}.memoir-mode .dialoghead{padding:20px}.memoir-layout{grid-template-columns:1fr;gap:13px}.memoir-contents{position:static;display:flex;overflow-x:auto;gap:5px;padding-bottom:6px}.memoir-contents span{display:none}.memoir-contents button{flex-shrink:0;font-size:12px;white-space:nowrap;padding:9px 12px}.memoir-paper{padding:26px 22px 10px}.memoir-cover h1{font-size:27px}.memoir-section h2{font-size:23px}.memoir-section h3{font-size:16px}.memoir-section p{font-size:16px;line-height:1.95}.memoir-toolbar{gap:5px;padding:10px 0}.memoir-toolbar>div{gap:8px}.memoir-toolbar button{font-size:11px}.memoir-toolbar .primary,.memoir-toolbar .secondary{padding:10px 13px}.memoir-section{scroll-margin-top:95px}.flow-preview-label{font-size:10px;max-width:calc(100vw - 36px)}}
@media(prefers-reduced-motion:reduce){.memoir-section{scroll-behavior:auto}}

/* Keep the existing campus ink, warm paper and book controls. */
.choice-detail{display:none;font:12px/1.7 'Songti SC',serif;color:#8a6b3e;margin-top:7px;white-space:normal}
.game-option.chosen .choice-detail,.game-option:focus-visible .choice-detail{display:block}
.time-bridge{font:13px/1.9 'Songti SC',serif!important;color:#8c6b3b!important;padding:12px 0;margin:0 0 16px!important;border-bottom:1px solid #ad8b5044}
dialog.graduation-decision{width:min(620px,calc(100vw - 32px));max-height:90dvh;padding:30px clamp(20px,5vw,42px);box-sizing:border-box;border:1px solid #bb9c6266;border-radius:16px;background:#14202d;color:#e0cca7}
.graduation-decision::backdrop{background:#060a12c9;backdrop-filter:blur(4px)}
.departure-letter>small{color:#b89c6c;font:12px/2 'Songti SC',serif;letter-spacing:2px}.departure-letter h2{font:400 28px/1.7 'Songti SC',serif}.departure-letter p{font:16px/1.9 'Songti SC',serif}.departure-letter strong{color:#f0d699}.departure-letter .actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}.departure-letter button{min-height:46px}.departure-cancel{display:block;margin:15px auto 0;color:#cbb48d;font-size:13px;text-decoration:underline;text-underline-offset:5px}
.history-link{padding:8px 0;min-height:42px;color:#cbb48d;text-align:left;font:13px/1.7 'Songti SC',serif;text-decoration:underline;text-underline-offset:5px}
.history-link:disabled{opacity:.4;cursor:default}.history-link:focus-visible{outline:2px solid #b3975b;outline-offset:3px}.history-book .history-link{color:#775d35}.history-book .game-options{display:none}
.story-update{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:120;box-sizing:border-box;width:min(670px,calc(100vw - 28px));padding:15px 18px;border-radius:12px;background:#172434f5;border:1px solid #c6a76899;color:#e8d5b4;box-shadow:0 6px 30px #0005;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 14px;font-size:13px;line-height:1.7}
.story-update[hidden]{display:none}.story-update>span{width:100%}.story-update button{color:#edce92;min-height:42px;padding:8px 14px;border:1px solid #bb9c6255;border-radius:8px;font-size:13px}
.story-album{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.album-card{min-width:0;border:1px solid #b79b6944;border-radius:9px;padding:12px;background:#d4c49b16}.album-picture{aspect-ratio:4/3;border-radius:5px;background:#cdbb94;display:flex;align-items:center;justify-content:center;padding:18px;box-sizing:border-box;text-align:center;font:12px/1.8 'Songti SC',serif;color:#796544;overflow:hidden}.album-picture:has(img){padding:0;background:transparent}.album-picture img{width:100%;height:100%;object-fit:cover;display:block}.memoir-section .album-card h3{font-size:16px;margin:10px 0 7px}.memoir-section .album-card p{font-size:13px;margin:7px 0}.album-card>small{display:block;margin-top:12px;color:#8c7650;font-size:11px}.album-card .history-link{color:#7e6034}.memoir-section .album-note{font-size:13px;color:#8c7650}
.main-illustration-status{line-height:1.7}.game-book-footer .history-link{font-size:12px}
@media(max-width:650px){.story-album{grid-template-columns:1fr}.departure-letter .actions>*{width:100%;justify-content:center}.graduation-decision{padding:24px}.story-update{bottom:10px}.choice-detail{font-size:12px}}
@media(prefers-reduced-motion:reduce){.story-update,.graduation-decision{animation:none}}

/* Avoid decoding and repainting the campus hidden behind welcome / reading. */
body.at-gate #world { display: none; }
body.campus-idle #world *, body.campus-idle .fireflies i { animation-play-state: paused !important; }
.story-illustration-image { will-change: auto; }
/* Keep navigation immediate; large full-screen filters and page transforms are costly. */
body.performance-mode .gate, body.performance-mode .game-book,
body.performance-mode .story-illustration-image, body.performance-mode .journey-book {
  animation: none !important; transition: none !important;
}
body.performance-mode dialog::backdrop { backdrop-filter: none !important; }
body.performance-mode dialog, body.performance-mode .game-book-footer { backdrop-filter: none !important; }
body.performance-mode .realistic-student { filter: none; }
#bootStatus { font: 12px/1.8 system-ui,sans-serif; margin-top: 12px; color: #d7c4a5; }
#retryStartup { color: #f3dfb3; border-bottom: 1px solid #aa8b57; padding: 8px 0; }
.welcome-gate button[aria-busy="true"] { opacity: .75; cursor: progress; }
body.performance-mode .welcome-bottom { gap: 14px; }
@media (max-width: 700px) { body.performance-mode .welcome-bottom > span { display: none; } }
@media (pointer: coarse), (max-width: 900px) {
  .realistic-student, .point, .fireflies i { animation: none !important; }
  .person-card, dialog.mentor-archive, .game-book-footer { backdrop-filter: none; }
}

dialog.orientation-hint {
  position: fixed; inset: 0; width: min(340px, calc(100vw - 40px));
  max-height: calc(100dvh - 40px); margin: auto; padding: 30px 25px 25px;
  border: 1px solid #a88953; border-radius: 18px; background: #121923;
  color: #eddfc1; text-align: center; box-shadow: 0 20px 70px #0007;
  font-family: 'Songti SC', STSong, Georgia, serif; overflow: auto;
}
dialog.orientation-hint::backdrop { background: #050a12bd; backdrop-filter: none; }
.orientation-hint .rotate-phone { display: flex; justify-content: center; align-items: center; gap: 9px; margin-bottom: 24px; color: #d3b57b; font: 38px Georgia, serif; }
.rotate-phone span { display: block; width: 59px; height: 32px; border: 2px solid #d3b57b; border-radius: 7px; transform: rotate(-12deg); }
.orientation-hint .orientation-kicker { margin: 0 0 12px; color: #b0a58f; font-size: 11px; letter-spacing: 3px; }
.orientation-hint h2 { color: #f3dfb3; font-size: 24px; font-weight: 400; letter-spacing: 1px; }
.orientation-hint #orientationDescription { margin: 17px 0 25px; font: 13px/1.9 system-ui, sans-serif; color: #c4c1b9; }
.orientation-hint #continuePortrait { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 46px; padding: 12px 18px; border: 1px solid #a88953; border-radius: 24px; background: #baa06a20; color: #f3dfb3; font-size: 14px; }
.orientation-hint small { display: block; margin-top: 14px; color: #a49e90; font: 10px/1.6 system-ui, sans-serif; }
@media (max-width: 700px) {
  .welcome-topbar { padding-top: max(20px, env(safe-area-inset-top)); }
  .welcome-bottom { padding-bottom: max(20px, env(safe-area-inset-bottom)); }
  .book-top { padding-left: max(16px, env(safe-area-inset-left)); padding-right: max(16px, env(safe-area-inset-right)); }
  .game-book-footer { padding-bottom: max(12px, env(safe-area-inset-bottom)); }
  .welcome-text-button, .welcome-navigation button, .book-top button { min-height: 44px; }
}
/* Landscape phones retain readable, scrollable pages on short screens. */
@media (orientation: landscape) and (max-height: 500px) {
  .welcome-topbar { padding-top: max(10px, env(safe-area-inset-top)); padding-left: max(26px, env(safe-area-inset-left)); }
  .welcome-copy { top: 24%; }
  .welcome-copy h1 { font-size: clamp(24px, 4vw, 36px); line-height: 1.3; margin: 10px 0; }
  .welcome-kicker { margin-bottom: 8px; }
  .welcome-description { font-size: 13px; line-height: 1.6; margin: 12px 0; }
  .welcome-gate .enter-campus { min-height: 44px; padding: 11px 22px; margin-top: 12px; }
  .welcome-footnote, .welcome-bottom > span { display: none; }
  .welcome-copy { padding-top: 12px; padding-bottom: 12px; }
  .welcome-bottom { position: absolute; bottom: max(6px, env(safe-area-inset-bottom)); right: 22px; width: auto; padding: 0; }
  dialog.mentor-archive { top: max(12px, env(safe-area-inset-top)); max-height: calc(100dvh - 24px); }
  dialog.book-mode > .dialogbody { display: block; padding-top: 46px; }
  .game-book { max-height: none; }
}
@media (orientation: landscape) and (max-height: 500px) and (min-width: 600px) {
  dialog.book-mode > .dialogbody { height: 100dvh; min-height: 0; }
  .game-book, .game-book.has-story-art { height: calc(100dvh - 46px); min-height: 0; width: 100%; aspect-ratio: auto; background-size: 100% 100%; background-position: center; }
  .game-left { position: absolute; left: 8%; top: 5%; width: 36%; height: 88%; padding: 8px 0; }
  .game-left .chapter-kicker { font-size: 10px; padding-bottom: 5px; }
  .game-left h2 { font-size: 22px; margin: 6px 0; }
  .game-left .game-book-location { font-size: 10px; }
  .game-book.has-story-art .story-illustration { left: 4%; top: 25%; width: 45%; height: 66%; }
  .game-right { position: absolute; left: 54%; right: 6%; top: 7%; bottom: 6%; min-height: 0; padding: 0; background: none; }
  .game-right .leaf-meta { font-size: 10px; padding-bottom: 6px; flex-shrink: 0; }
  .game-right .reading-pane { min-height: 0; overflow-y: auto; padding-right: 6px; overscroll-behavior: contain; }
  .scene-prose p { font-size: 14px; line-height: 1.85; }
  .game-options { gap: 8px; }
  .game-option { min-height: 48px; padding: 10px; }
  .game-option > span { font-size: 13px; }
  .game-option small { font-size: 11px; }
  .your-choice { margin-top: 15px; font-size: 14px; }
  .game-book-footer { position: static; flex-shrink: 0; margin-top: 5px; padding: 4px 0 0; background: none; justify-content: flex-end; }
  .game-book-footer > span { display: none; }
  .game-book-footer .book-write { font-size: 12px; min-height: 44px; padding: 10px 18px; }
  .game-right .main-illustration-status { min-height: 14px; margin-top: 3px; font-size: 9px; }
  .narrator-mode { font-size: 8px; }
  .side-story-book .illustration-status { top: auto; bottom: 7%; left: 8%; width: 36%; font-size: 9px; }
}
