:root { --ink:#e9dfc4; --gold:#d8ad65; --bright:#f7dca2; --bronze:#315b51; --deep:#080a09; --panel:#101713; --muted:#a99e86; --line:rgba(219,176,102,.24); }
* { box-sizing:border-box; }
html { background:var(--deep); scroll-behavior:smooth; }
body { min-width:320px; margin:0; color:var(--ink); background:radial-gradient(ellipse at 68% 52%, #173129 0%, #0d1511 32%, #080a09 72%); font-family:"Songti SC","STSong","Noto Serif CJK SC","PingFang SC",serif; overflow-x:hidden; }
a { color:inherit; text-decoration:none; } button { font:inherit; }
.skip-link { position:fixed; top:-100px; left:16px; z-index:100; padding:12px 16px; border-radius:8px; background:var(--bright); color:#16130d; }.skip-link:focus{top:16px}
.film-grain { position:fixed; inset:0; pointer-events:none; z-index:8; opacity:.2; mix-blend-mode:soft-light; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='5' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.72'/%3E%3C/svg%3E"); }
.star-field { position:fixed; inset:0; z-index:-1; pointer-events:none; background-image:radial-gradient(circle at 16% 22%,rgba(255,226,162,.75) 0 1px,transparent 1.5px),radial-gradient(circle at 79% 21%,rgba(255,226,162,.38) 0 1px,transparent 1.5px),radial-gradient(circle at 90% 74%,rgba(255,226,162,.5) 0 1px,transparent 1.5px),radial-gradient(circle at 38% 88%,rgba(255,226,162,.32) 0 1px,transparent 1.5px); }
.history-header { width:min(1460px,calc(100% - 54px)); height:94px; margin:18px auto 0; padding:0 28px; display:flex; align-items:center; justify-content:space-between; position:relative; z-index:12; border:1px solid rgba(238,207,145,.16); border-radius:4px; background:linear-gradient(90deg,rgba(17,24,20,.75),rgba(17,24,20,.32)); box-shadow:inset 0 1px 0 rgba(255,235,186,.08),0 18px 60px rgba(0,0,0,.2); backdrop-filter:blur(14px); }
.history-header::before,.history-header::after { content:""; position:absolute; width:20px; height:20px; border-color:var(--gold); opacity:.8; }.history-header::before{left:-1px;top:-1px;border-left:1px solid;border-top:1px solid}.history-header::after{right:-1px;bottom:-1px;border-right:1px solid;border-bottom:1px solid}
.brand{display:flex;align-items:center;gap:13px}.brand img{width:59px;height:59px;object-fit:cover;border-radius:50%;box-shadow:0 0 0 1px rgba(224,181,104,.45),0 0 29px rgba(46,106,91,.25)}.brand span{display:grid;gap:3px}.brand b{font-size:1.16rem;letter-spacing:.18em}.brand small{font-family:Georgia,serif;font-size:.62rem;letter-spacing:.2em;color:#bba77c}
.header-status{display:flex;align-items:center;gap:10px;color:#c4b695;font-size:.72rem;letter-spacing:.18em}.header-status i{width:7px;height:7px;border-radius:50%;background:#8bb596;box-shadow:0 0 0 5px rgba(123,176,137,.1),0 0 17px rgba(139,181,150,.85);animation:signal 2.4s infinite}.history-header nav{display:flex;gap:28px;align-items:center;font-size:.84rem}.history-header nav a{color:#c6b99b;transition:color .25s}.history-header nav a:hover{color:var(--bright)}
.hero{width:min(1360px,calc(100% - 54px));min-height:calc(100vh - 137px);margin:0 auto;display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;position:relative}.hero-copy{padding:0 0 5vh 6vw;position:relative;z-index:4}.eyebrow{display:flex;align-items:center;gap:11px;margin:0 0 23px;color:#b9a37a;font-family:Georgia,"Times New Roman",serif;font-size:.67rem;letter-spacing:.23em}.eyebrow span{display:block;width:38px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}.hero h1{margin:0;color:#ece3cf;font-size:clamp(4.5rem,8vw,9rem);line-height:.9;font-weight:500;letter-spacing:.06em;text-shadow:0 10px 35px rgba(0,0,0,.45)}.hero h1 em{font-style:normal;color:transparent;background:linear-gradient(105deg,#826632,#f4dda3 48%,#9d7540);background-clip:text;-webkit-background-clip:text}.school-name{margin:32px 0 9px;font-size:clamp(1.05rem,1.5vw,1.45rem);letter-spacing:.12em;color:#e2d4b7}.hero-note{max-width:395px;margin:0;color:var(--muted);font-family:"PingFang SC",sans-serif;font-size:.92rem;line-height:1.9}.archive-cta{width:min(288px,100%);min-height:72px;margin-top:38px;padding:0 16px 0 25px;display:flex;align-items:center;justify-content:space-between;border:1px solid rgba(239,204,136,.7);background:linear-gradient(105deg,rgba(105,73,35,.75),rgba(185,138,72,.55));box-shadow:inset 0 1px 0 rgba(255,232,182,.5),0 18px 45px rgba(0,0,0,.34);transition:transform .3s,box-shadow .3s,background .3s}.archive-cta:hover{transform:translateY(-5px);background:linear-gradient(105deg,rgba(128,89,39,.88),rgba(211,168,93,.67));box-shadow:inset 0 1px 0 rgba(255,232,182,.7),0 26px 55px rgba(0,0,0,.4)}.archive-cta span{display:grid;gap:5px}.archive-cta small{font-family:Georgia,serif;font-size:.56rem;letter-spacing:.15em;color:#ead1a1}.archive-cta b{font-size:1.05rem;font-weight:500;letter-spacing:.1em}.archive-cta i{width:38px;height:38px;display:grid;place-items:center;border:1px solid rgba(255,231,185,.6);border-radius:50%;font-style:normal;font-size:1.25rem}
.relic-stage{height:min(760px,80vh);min-height:560px;position:relative;display:grid;place-items:center;isolation:isolate}.light-halo{position:absolute;border-radius:50%;filter:blur(4px);z-index:-2}.halo-one{width:min(61vw,800px);aspect-ratio:1;background:radial-gradient(circle,rgba(39,101,83,.42),rgba(19,51,41,.18) 42%,transparent 70%);animation:breathe 7s ease-in-out infinite}.halo-two{width:min(44vw,560px);aspect-ratio:1;border:1px solid rgba(223,181,105,.18);box-shadow:0 0 0 40px rgba(74,117,93,.04),0 0 0 90px rgba(74,117,93,.025)}.axis{position:absolute;background:linear-gradient(90deg,transparent,rgba(222,179,100,.22),transparent)}.axis-v{width:1px;height:88%;background:linear-gradient(180deg,transparent,rgba(222,179,100,.24),transparent)}.axis-h{width:90%;height:1px}.orbit{position:absolute;border:1px solid rgba(230,196,126,.21);border-radius:50%;animation:turn 22s linear infinite}.orbit i{position:absolute;top:14%;left:18%;width:7px;height:7px;border-radius:50%;background:var(--bright);box-shadow:0 0 18px var(--bright)}.orbit-a{width:min(43vw,575px);aspect-ratio:1;transform:rotateX(66deg) rotateZ(-20deg)}.orbit-b{width:min(52vw,690px);aspect-ratio:1;border-style:dashed;transform:rotateX(66deg) rotateZ(26deg);animation-direction:reverse;animation-duration:28s}.orbit-b i{top:auto;bottom:15%;left:auto;right:18%;background:#4c9d83;box-shadow:0 0 18px #4c9d83}.logo-vessel{width:min(28vw,376px);aspect-ratio:1;position:relative;z-index:2;border-radius:50%;overflow:hidden;filter:drop-shadow(0 35px 48px rgba(0,0,0,.58));animation:levitate 6s ease-in-out infinite}.logo-vessel::before{content:"";position:absolute;inset:0;z-index:2;box-shadow:inset 0 0 50px rgba(1,4,3,.55),inset 0 0 0 1px rgba(237,194,107,.52)}.logo-vessel img{width:100%;height:100%;object-fit:cover;transform:scale(1.1);filter:saturate(.86) contrast(1.11)}.time-mark{position:absolute;color:#c5ad7a;font-family:Georgia,serif;font-size:.6rem;letter-spacing:.28em}.mark-top{top:9%;left:50%;translate:-50%}.mark-bottom{bottom:10%;left:50%;translate:-50%}.sightline{position:absolute;width:21%;height:1px;background:linear-gradient(90deg,transparent,rgba(226,188,118,.65));}.line-one{left:2%;top:36%;transform:rotate(21deg)}.line-two{right:2%;bottom:33%;transform:rotate(201deg)}.relic-caption{position:absolute;right:6%;bottom:19%;margin:0;display:grid;gap:4px;text-align:right}.relic-caption b{font-size:1.05rem;font-weight:500;letter-spacing:.2em;color:#d9bd86}.relic-caption span{font-size:.67rem;color:#8e927e;letter-spacing:.08em}
.history-footer{width:min(1360px,calc(100% - 54px));min-height:55px;margin:0 auto;display:flex;align-items:center;justify-content:center;gap:18px;border-top:1px solid rgba(215,169,91,.2);color:#8f876f;font-family:Georgia,serif;font-size:.62rem;letter-spacing:.15em}.history-footer i{width:3px;height:3px;border-radius:50%;background:#b08b4c}
.history-courses{min-height:100vh;background:radial-gradient(ellipse at 80% 10%,#1b3229 0%,#0a0d0b 45%,#080a09 100%)}.course-header{margin-bottom:0}.archive-hero{width:min(1360px,calc(100% - 54px));min-height:370px;margin:0 auto;padding:75px 7vw;display:flex;justify-content:space-between;align-items:center;position:relative;border-bottom:1px solid var(--line);overflow:hidden}.archive-hero::after{content:"";position:absolute;width:720px;height:720px;right:-135px;top:-440px;border-radius:50%;border:1px solid rgba(219,176,102,.19);box-shadow:0 0 0 55px rgba(219,176,102,.035),0 0 0 115px rgba(219,176,102,.02)}.archive-copy{position:relative;z-index:1}.archive-copy h1{margin:0;color:#ebe0c9;font-size:clamp(3.2rem,6vw,6.1rem);font-weight:500;letter-spacing:.1em;line-height:1}.archive-copy>p:last-child{margin:19px 0 0;color:#aaa086;font-size:1rem;letter-spacing:.04em}.archive-stamp{width:190px;height:190px;display:grid;place-items:center;position:relative;z-index:1;border:1px solid rgba(215,173,101,.45);border-radius:50%;color:#d5b271;transform:rotate(-12deg)}.archive-stamp::before{content:"";position:absolute;inset:11px;border:1px solid rgba(215,173,101,.22);border-radius:50%}.archive-stamp span,.archive-stamp b{font-size:2.7rem;font-weight:500;line-height:1}.archive-stamp span{transform:translateX(-42px)}.archive-stamp b{transform:translateX(42px)}.archive-stamp i{position:absolute;width:1px;height:52px;background:#b48a48;transform:rotate(45deg)}.archive-stamp small{position:absolute;bottom:31px;font-family:Georgia,serif;font-size:.46rem;letter-spacing:.15em}
.archive-panel{width:min(1120px,calc(100% - 54px));margin:0 auto;padding:75px 0 110px}.archive-toolbar{display:flex;align-items:end;justify-content:space-between;gap:25px}.archive-toolbar .eyebrow{margin-bottom:12px}.archive-toolbar h2{margin:0;color:#e6dac2;font-size:clamp(2.35rem,5vw,4.3rem);font-weight:500;letter-spacing:.12em;line-height:1}.upload-button{min-height:55px;padding:0 21px;border:1px solid rgba(231,194,127,.72);background:linear-gradient(125deg,#cda25c,#72532a);box-shadow:inset 0 1px 0 rgba(255,237,197,.64),0 12px 32px rgba(0,0,0,.28);color:#17130c;cursor:pointer;font-weight:700;letter-spacing:.08em;transition:transform .22s,filter .22s}.upload-button:hover{transform:translateY(-3px);filter:brightness(1.12)}.upload-button span{font-size:1.3rem;margin-right:8px}.upload-button:focus-visible{outline:3px solid #f1d89c;outline-offset:4px}.collection-empty{min-height:395px;margin-top:36px;display:grid;place-content:center;text-align:center;border:1px solid rgba(224,183,108,.2);background:linear-gradient(135deg,rgba(21,31,25,.75),rgba(13,19,16,.68));position:relative;overflow:hidden}.collection-empty::before,.collection-empty::after{content:"";position:absolute;width:230px;height:230px;border:1px solid rgba(222,183,108,.13);border-radius:50%}.collection-empty::before{top:-115px;left:-115px}.collection-empty::after{right:-115px;bottom:-115px}.empty-relic{width:92px;height:104px;margin:0 auto 18px;position:relative;border:1px solid rgba(214,172,91,.6);clip-path:polygon(28% 0,72% 0,84% 27%,74% 100%,26% 100%,16% 27%);box-shadow:0 0 34px rgba(51,121,91,.26)}.empty-relic::before{content:"";position:absolute;inset:10px 9px 16px;border:1px solid rgba(213,171,90,.4)}.empty-relic span,.empty-relic i{position:absolute;top:40px;width:22px;height:9px;border-top:3px solid #c9a35f;border-radius:50%}.empty-relic span{left:15px}.empty-relic i{right:15px}.empty-relic b{position:absolute;left:50%;bottom:18px;width:27px;height:1px;translate:-50%;background:#c9a35f}.empty-code{margin:0 0 12px;color:#a78c58;font-family:Georgia,serif;font-size:.62rem;letter-spacing:.22em}.collection-empty h3{margin:0;color:#e5d7ba;font-size:1.36rem;font-weight:500;letter-spacing:.08em}.collection-empty>p:last-child{max-width:420px;margin:13px auto 0;color:#98917d;font-family:"PingFang SC",sans-serif;font-size:.86rem;line-height:1.85}.upload-message{min-height:24px;margin:17px 0 0;text-align:center;color:#d5bc8b;font-size:.83rem;letter-spacing:.04em}
@keyframes turn{to{transform:rotateZ(360deg) rotateX(66deg)}}@keyframes relic-orbit{to{transform:rotateY(-360deg)}}@keyframes levitate{50%{transform:translateY(-13px) scale(1.015)}}@keyframes breathe{50%{transform:scale(1.06);opacity:.7}}@keyframes signal{50%{opacity:.55;box-shadow:0 0 0 8px rgba(123,176,137,.04),0 0 18px rgba(139,181,150,.55)}}
.relic-stage{perspective:1100px}.artifact-carousel{width:min(34vw,450px);height:min(34vw,450px);position:relative;z-index:2;transform-style:preserve-3d;animation:relic-orbit 36s linear infinite}.artifact-card{width:158px;height:218px;position:absolute;left:calc(50% - 79px);top:calc(50% - 109px);border:1px solid rgba(228,185,104,.24);border-radius:7px;background-image:linear-gradient(180deg,rgba(3,7,5,.03),rgba(3,7,5,.52)),url('../images/relic-carousel-sprite.png');background-repeat:no-repeat;background-size:100% 100%,500% 200%;box-shadow:inset 0 0 28px rgba(0,0,0,.46),0 19px 38px rgba(0,0,0,.48);backface-visibility:hidden;transform:rotateY(calc(var(--i) * 40deg)) translateZ(clamp(250px,24vw,355px));}.artifact-card::after{content:"";position:absolute;inset:7px;border:1px solid rgba(230,194,124,.16);border-radius:3px}.sprite-a{background-position:center,0% 0%}.sprite-b{background-position:center,25% 0%}.sprite-c{background-position:center,50% 0%}.sprite-d{background-position:center,75% 0%}.sprite-e{background-position:center,100% 0%}.sprite-f{background-position:center,0% 100%}.sprite-g{background-position:center,25% 100%}.sprite-h{background-position:center,50% 100%}.sprite-i{background-position:center,75% 100%}
@media(max-width:780px){.history-header{width:calc(100% - 24px);height:76px;margin-top:12px;padding:0 14px}.brand img{width:48px;height:48px}.brand b{font-size:.98rem}.brand small{display:none}.header-status{font-size:.58rem;letter-spacing:.1em}.hero{width:calc(100% - 30px);min-height:calc(100vh - 88px);grid-template-columns:1fr}.hero-copy{padding:17vh 0 48px 5vw}.hero h1{font-size:clamp(4rem,17vw,6rem)}.relic-stage{position:absolute;inset:6% -20% auto auto;width:80vw;height:55vh;min-height:0;opacity:.48;pointer-events:none}.logo-vessel{width:61vw}.orbit-a{width:80vw}.orbit-b{width:96vw}.time-mark,.relic-caption{display:none}.hero-note{max-width:285px}.history-footer{width:calc(100% - 30px);padding:17px 0;gap:10px;flex-wrap:wrap;text-align:center;line-height:1.6}.history-courses .history-footer{margin-top:0}.course-header nav a{display:none}.archive-hero{width:calc(100% - 30px);min-height:310px;padding:68px 5vw}.archive-stamp{width:125px;height:125px;margin-right:-55px;opacity:.52}.archive-stamp span,.archive-stamp b{font-size:1.8rem}.archive-stamp small{display:none}.archive-panel{width:calc(100% - 30px);padding:58px 0 75px}.archive-toolbar{align-items:start;flex-direction:column}.upload-button{width:100%}.collection-empty{min-height:365px;padding:35px 22px}.history-header nav{gap:0}.history-header nav .header-status{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
@media(max-width:780px){.artifact-carousel{width:61vw;height:61vw}.artifact-card{width:110px;height:152px;left:calc(50% - 55px);top:calc(50% - 76px);transform:rotateY(calc(var(--i) * 40deg)) translateZ(220px)}}

.upload-message[data-kind="success"]{color:#a7d4b0}.upload-message[data-kind="error"]{color:#e5a58b}.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:36px}.course-card{min-height:218px;padding:24px;position:relative;display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(224,183,108,.23);background:linear-gradient(135deg,rgba(21,38,30,.9),rgba(11,16,13,.83));box-shadow:inset 0 1px rgba(255,225,165,.07),0 14px 32px rgba(0,0,0,.22);transition:transform .25s,border-color .25s}.course-card:hover{transform:translateY(-5px);border-color:rgba(231,194,127,.65)}.course-card::before{content:"";position:absolute;width:150px;height:150px;right:-62px;top:-68px;border:1px solid rgba(211,169,91,.19);border-radius:50%;box-shadow:0 0 0 27px rgba(211,169,91,.025)}.course-card-index{color:#b99a5e;font-family:Georgia,serif;font-size:.58rem;letter-spacing:.2em}.course-card b{display:block;width:44px;height:1px;margin:26px 0 18px;background:linear-gradient(90deg,#d5ab60,transparent)}.course-card h3{max-width:85%;margin:0;color:#eadcc1;font-size:1.28rem;font-weight:500;letter-spacing:.08em;line-height:1.45}.course-card p{margin:11px 0 0;color:#938b79;font-family:"PingFang SC",sans-serif;font-size:.78rem}.course-card i{position:absolute;right:24px;bottom:22px;color:#d6b36f;font-style:normal;font-size:1.3rem}.upload-dialog{width:min(580px,calc(100% - 30px));padding:0;border:1px solid rgba(222,181,106,.52);color:#e8dcc5;background:linear-gradient(145deg,#18241d,#0b100d 75%);box-shadow:0 28px 100px rgba(0,0,0,.72)}.upload-dialog::backdrop{background:rgba(3,7,5,.77);backdrop-filter:blur(7px)}.upload-form{padding:32px}.dialog-heading{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:30px}.dialog-heading .eyebrow{margin-bottom:11px}.dialog-heading h2{margin:0;font-size:2rem;font-weight:500;letter-spacing:.1em}.dialog-close{width:36px;height:36px;border:1px solid rgba(224,183,108,.4);border-radius:50%;background:transparent;color:#e2c58f;font-size:1.5rem;line-height:1;cursor:pointer}.upload-form label{display:grid;gap:9px;margin:18px 0;color:#cdbb97;font-size:.84rem;letter-spacing:.08em}.upload-form input{width:100%;min-height:46px;padding:10px 13px;border:1px solid rgba(224,183,108,.25);border-radius:2px;outline:0;background:rgba(1,5,3,.48);color:#f0e5cf;font:inherit;letter-spacing:.02em}.upload-form input:focus{border-color:#d5ad67;box-shadow:0 0 0 3px rgba(213,173,103,.12)}.upload-form input[type="file"]{padding:10px}.upload-form small{color:#8d897a;font-family:"PingFang SC",sans-serif;font-size:.72rem;line-height:1.6;letter-spacing:0}.upload-progress{display:grid;gap:8px;margin:21px 0}.upload-progress span{height:4px;overflow:hidden;background:rgba(223,182,108,.17)}.upload-progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,#6a9d83,#e6bf79);transition:width .2s}.upload-progress b,.form-message{min-height:18px;margin:0;color:#cbb183;font-family:"PingFang SC",sans-serif;font-size:.78rem;font-weight:400}.form-message{color:#e4a68e}.dialog-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:27px}.dialog-actions button{min-height:46px;padding:0 18px;cursor:pointer;font:inherit;letter-spacing:.08em}.dialog-cancel{border:1px solid rgba(224,183,108,.28);background:transparent;color:#c5b28c}.dialog-submit{border:1px solid rgba(246,215,159,.78);background:linear-gradient(125deg,#d4ab65,#795a2f);color:#17130c;font-weight:700}.dialog-submit:disabled{cursor:wait;opacity:.55}
@media(max-width:780px){.course-grid{grid-template-columns:1fr}.upload-form{padding:25px 20px}.dialog-heading h2{font-size:1.72rem}}
