/* A illustrated academy atlas: landscape-led cover, quiet reading rooms. */
:root{--paper:#f7f8fa;--surface:#eceff2;--ink:#293845;--quiet:#596774;--accent:#826b4c;--gutter:clamp(22px,5vw,72px);--rule:#dce1e5}
body{background:var(--paper)}
header{position:sticky;top:0;min-height:78px;padding:18px var(--gutter);background:#f9f8f4;border-bottom:1px solid var(--rule);z-index:20}
.brand{display:flex;align-items:center;gap:13px;font-size:19px}.brand:before{content:'✧';font-size:30px;color:var(--accent)}
header nav a{font-size:14px;position:relative;padding:8px 0}header nav a[aria-current]:after{content:'';position:absolute;bottom:-18px;left:0;right:0;height:3px;background:var(--accent)}
.is-home header{background:rgba(13,28,39,.62);border-color:rgba(255,255,255,.16);min-height:78px}.is-home .brand:before{color:#e1cfaa}
.cover{min-height:720px}.cover:after{background:linear-gradient(180deg,rgba(9,23,34,.18),rgba(9,23,34,.36) 45%,rgba(9,23,34,.82))}
.cover-art{object-position:50% 48%}.cover-center{padding:145px 24px 110px}
.cover-kicker{font:400 13px/1.5 var(--text);letter-spacing:.28em;color:#e6d6b8;margin:0 0 25px}
.cover h1 .title-main{font-size:clamp(80px,10vw,142px);letter-spacing:-.07em;line-height:1.22}.cover h1 .title-school{font-size:clamp(27px,3vw,40px);letter-spacing:.28em;margin-top:14px}
.cover-summary{font-size:16px;margin-top:36px;color:#f2f3f5}.cover-nav{margin-top:30px;gap:30px}.cover-nav .primary{background:#e5d6b7;color:#283440;border:1px solid #f2e5ca;border-radius:3px;min-width:190px}.cover-nav a:last-child{font-size:15px}
.cover-foot{position:absolute;bottom:27px;left:0;right:0;text-align:center;font-size:12px;letter-spacing:.18em;color:#c7d1d5}
.world-opening,.places .intro-layout,.characters .section-title{padding:65px 0 50px;text-align:center;margin:0;display:block}
.world-opening:before,.places .intro-layout:before,.characters .section-title:before{display:block;font:12px var(--text);letter-spacing:.2em;color:var(--accent);margin-bottom:18px}
.world-opening:before{content:'WORLD & LORE'}.places .intro-layout:before{content:'BEYOND THE GATES'}.characters .section-title:before{content:'PEOPLE OF AITHER'}
.world-opening h1,.places h1,.characters .section-title h1{font-size:clamp(34px,3.7vw,52px);line-height:1.4;letter-spacing:-.045em}
.world-opening p,.places .intro-copy,.section-title p{font-size:16px;line-height:1.9;margin:20px auto 0;max-width:650px;color:var(--quiet)}
.world-panorama{height:330px;max-width:1120px}.world-panorama figcaption{font-size:15px;background:rgba(249,248,244,.94)}
.world-editorial{max-width:1240px}.history-spread{padding:65px 0;gap:6%;border-bottom:1px solid var(--rule)}
.chapter-heading h2,.power-heading h2{font-size:30px}.history-content .large-copy{font-size:24px}.history-content p{line-height:1.95}
.art-reserved{background:#edf0f2;border:1px solid #dde3e7;position:relative;color:#87939b;min-height:200px}.art-reserved>span{font:13px var(--text);letter-spacing:.02em}.art-reserved figcaption{font-size:11px;margin-top:8px;color:#8c979e}.art-reserved:before{content:'+';font:300 25px var(--text);color:#b8c0c6;margin-bottom:10px}
.power-spread{padding-top:64px}.game-overview{background:#eef1f3;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin-bottom:70px;padding:36px}.game-overview h2{font-size:29px}.game-overview .game-premise{font-size:23px}
.campus-arrival{margin:0;height:460px;min-height:460px}.campus-arrival-copy{left:max(var(--gutter),calc((100vw - 1120px)/2));bottom:48px}.campus-arrival h1{font-size:clamp(42px,5vw,65px);margin-bottom:20px}.campus-arrival-copy p{font-size:16px;margin-bottom:22px}.campus-arrival-copy a{background:#e5d6b7;color:#293845;border-radius:3px}.campus-arrival-location{font-size:12px;right:var(--gutter)}
.campus-welcome,.faculty-spread,.campus-day,.partner-spread,.founder-note{max-width:1120px;padding:55px 0}.campus-welcome{border-bottom:1px solid var(--rule)}.campus-edition .campus-welcome h2,.campus-edition h2,.campus-calendar h2{font-size:30px}
.faculty-spread{background:transparent;border-bottom:1px solid var(--rule)}.faculty-main .study-tabs{gap:12px}.faculty-main .study-tabs button{font:500 22px var(--display);padding:14px 28px;min-height:54px;border:1px solid var(--rule);background:#fff;opacity:1;text-decoration:none}.faculty-main .study-tabs button[aria-selected=true]{background:#2c414e;color:#fff;text-decoration:none}.faculty-main #study-panel{min-height:125px;margin-bottom:15px}
.partner-spread{padding:38px 42px;background:#e9eef1;color:var(--ink);border-left:3px solid #a38c67}.partner-spread .partner-lead{font-size:26px}.partner-spread .partner-note{color:var(--quiet)}
.calendar.campus-calendar{background:#eef1f3;border-top:1px solid var(--rule);padding:55px max(var(--gutter),calc((100vw - 1120px)/2))}.selected-month{font-size:36px}.selected-event h3{font-size:23px}
.characters{max-width:1240px;padding-top:0}.characters .count{display:block;margin-top:20px;color:var(--quiet);font-size:13px}.characters .count b{font:500 16px var(--text);margin-right:5px}
.character-toolbar{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:20px 0;margin:0 0 32px;gap:18px}.filters button{border:1px solid transparent;border-radius:3px;padding:9px 16px;font-size:14px}.filters .active{background:#2c414e;color:#fff}.search-group select,.search-group input{background:#fff;border:1px solid var(--rule);font-size:14px;min-height:44px;border-radius:3px}
.portrait-grid{display:block}.year-group{margin-bottom:48px}.year-heading{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--rule);padding-bottom:14px;margin-bottom:22px}.year-heading h2{font-size:25px}.year-heading span{font-size:13px;color:var(--quiet)}.year-portraits{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px 20px}
.portrait{background:#fff;border:1px solid #e1e5e9;border-radius:3px;overflow:hidden;transition:border-color .2s,transform .2s}.portrait:hover{opacity:1;border-color:#a58e69;transform:translateY(-4px)}.portrait-image{aspect-ratio:4/5;background:#f1f2f3}.portrait-info{padding:14px 13px 0;margin:0;gap:4px}.portrait h3{font-size:21px}.portrait-info span{font-size:12px}.portrait p{font-size:12px;padding:0 13px 16px;margin-top:7px;color:var(--quiet)}
dialog{border:1px solid #d9dfe3;border-radius:5px}.detail-copy h2{font-size:40px}.detail-copy{padding-top:44px}.detail-meta{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.close{border:1px solid var(--rule);border-radius:50%;font-size:26px}.detail-layout>img{background:#fff}
.places{max-width:1240px;padding-top:0}.campus-place-art{height:340px}.campus-place-intro{padding:40px 0}.campus-place-intro h2{font-size:30px}.facility-guide{background:#eef1f3;border:1px solid var(--rule);margin-bottom:64px}.facility-guide dl>div{grid-template-columns:110px 1fr}.facility-guide dt{font-size:20px}.location-row{padding-top:48px;border-top:1px solid var(--rule);gap:6%}.location-row h2{font-size:32px}.location-row .location-lead{font-size:22px}.location-row .art-reserved{aspect-ratio:3/2}.region-nav a{border:1px solid var(--rule);border-radius:3px}.return-campus{border-top:1px solid var(--rule)}
footer{background:#223744;color:#ecf0f1;padding:36px var(--gutter)}.footer-name{font-size:26px}footer p,footer div>a{font-size:13px}.bgm-widget{z-index:30}
@media(max-width:1200px){.campus-welcome,.faculty-spread,.campus-day,.partner-spread,.founder-note{margin-left:var(--gutter);margin-right:var(--gutter)}.year-portraits{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:800px){header{gap:20px}.brand{font-size:17px}.brand:before{font-size:24px}header nav{gap:20px}.year-portraits{grid-template-columns:repeat(3,minmax(0,1fr))}.campus-arrival{height:450px;min-height:450px}.campus-arrival-location{display:none}.campus-welcome{gap:25px}.facility-guide dl>div{display:block}.world-panorama{height:280px}}
@media(max-width:650px){header,.is-home header{padding:14px 20px;min-height:104px;display:flex;align-items:stretch;gap:12px;flex-direction:column}.brand{justify-content:center;font-size:16px}.brand:before{font-size:23px}.is-home header nav,header nav{display:flex;justify-content:space-between;gap:12px}.is-home header nav a,header nav a{font-size:13px;padding:3px 0}header nav a[aria-current]:after{bottom:-10px}.cover{min-height:740px;height:100svh}.cover-center{padding:155px 20px 110px}.cover-kicker{font-size:10px;margin-bottom:25px;letter-spacing:.22em}.cover h1 .title-main{font-size:clamp(72px,20vw,100px)}.cover h1 .title-school{font-size:26px;letter-spacing:.25em}.cover-summary{font-size:14px;line-height:1.9;margin-top:30px}.cover-nav{display:flex;flex-direction:column;gap:8px;margin-top:25px;max-width:none}.cover-nav .primary{min-width:205px;font-size:14px}.cover-nav a:last-child{font-size:13px}.cover-foot{font-size:10px;bottom:22px}.world-opening,.places .intro-layout,.characters .section-title{padding:38px 0 32px}.world-opening{padding-left:22px;padding-right:22px}.world-opening:before,.places .intro-layout:before,.characters .section-title:before{font-size:10px;margin-bottom:14px}.world-opening h1,.places h1,.characters .section-title h1{font-size:32px}.world-opening p,.places .intro-copy,.section-title p{font-size:14px;margin-top:17px}.world-panorama{height:230px}.world-panorama figcaption{font-size:12px;bottom:14px;left:14px}.history-spread{padding:35px 0}.history-content .large-copy{font-size:22px}.chapter-heading h2,.power-heading h2{font-size:27px}.art-reserved{min-height:180px}.game-overview{padding:24px;margin-bottom:40px}.campus-arrival{height:440px;min-height:440px;margin:0}.campus-arrival-copy{left:24px;bottom:35px;right:24px}.campus-arrival h1{font-size:44px}.campus-arrival-copy p{font-size:14px}.campus-welcome,.faculty-spread,.campus-day,.partner-spread,.founder-note{margin-left:22px;margin-right:22px;padding:36px 0}.partner-spread{padding:28px 22px}.campus-edition h2,.campus-edition .campus-welcome h2,.campus-calendar h2{font-size:27px}.faculty-main .study-tabs button{font-size:21px;padding:12px 24px}.faculty-main #study-panel{min-height:150px}.calendar.campus-calendar{padding:35px 22px}.characters,.places{padding-left:22px;padding-right:22px}.character-toolbar{padding:16px 0;gap:16px}.filters{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.filters button{font-size:13px;padding:8px}.search-group{width:100%;gap:8px}.search-group select{width:115px}.search-group label{flex:1;min-width:0}.search-group input{width:100%}.year-portraits{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px}.year-heading h2{font-size:22px}.portrait-info{padding:12px 10px 0}.portrait h3{font-size:19px}.portrait p{padding:0 10px 13px;font-size:11px}.portrait-info span{font-size:11px}.detail-copy h2{font-size:34px}.detail-layout>img{height:370px}.facility-guide{padding:24px;margin-bottom:40px}.location-row{padding-top:30px}.location-row h2{font-size:28px}.campus-place-art{height:240px}.campus-place-intro h2{font-size:27px}.return-campus>p{font-size:23px}}
@media(prefers-reduced-motion:reduce){.portrait:hover{transform:none}}
.art-reserved figcaption{font-size:13px;color:#62717c}.art-reserved>span{color:#62717c}.campus-link{color:#715a3e}
.location-row,.location-row.reverse{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.location-row>*{min-width:0;max-width:100%}.location-row .art-reserved{width:100%}
@media(max-width:650px){.location-row,.location-row.reverse{display:flex}}
.history-spread{grid-template-columns:minmax(0,30%) minmax(0,1fr)}.history-spread>*{min-width:0}.history-content{overflow-wrap:anywhere}.art-reserved figcaption,.art-reserved>span{color:#53636f}
/* The icon uses geometric centering instead of the font's multiplication baseline. */
#character-dialog .close{display:grid;place-items:center;box-sizing:border-box;width:46px;height:46px;min-width:46px;min-height:46px;padding:0;line-height:1;top:18px;right:18px;margin:0;background:#fff;border:1px solid #d5dce1;color:#293845;flex-shrink:0}
#character-dialog .close svg{display:block;width:24px;height:24px;margin:0;pointer-events:none}
#character-dialog .close:hover{opacity:1;background:#edf1f4}
#character-dialog .detail-copy{padding-top:76px}
@media(max-width:650px){#character-dialog .close{top:14px;right:14px}#character-dialog .detail-copy{padding-top:28px}}
.ability-name{display:block;font-size:18px;font-weight:500;line-height:1.6}.ability-description{display:block;font-size:16px;line-height:1.85;margin-top:10px;word-break:keep-all;overflow-wrap:anywhere}

/* Shared reading geometry after the copy revision. */
body{word-break:keep-all;overflow-wrap:break-word}
p,dd,li{word-break:keep-all;text-wrap:pretty}
main :is(article,section,div,figure){min-width:0}
.history-content{overflow-wrap:break-word}
.faculty-spread,.partner-spread,.campus-welcome,.campus-week{
 width:min(1120px,calc(100% - 2 * var(--gutter)));max-width:none;margin-inline:auto;
}
.campus-welcome{display:grid;grid-template-columns:minmax(0,30%) minmax(0,1fr);gap:48px;padding:48px 0;align-items:start}
.campus-welcome h2{max-width:none}
.campus-edition .faculty-spread{display:grid;padding:40px;grid-template-columns:minmax(0,32%) minmax(0,1fr);gap:48px;background:#eaf0f3;align-items:start}
.campus-section-head>p{margin-top:20px;line-height:1.85}
.campus-edition .faculty-main .study-tabs{display:flex;gap:10px;margin:0 0 26px;padding:0;flex-wrap:wrap}
.campus-edition .faculty-main .study-tabs button{font:500 18px/1.4 var(--text);padding:12px 22px;min-height:48px;border:1px solid #d4dce2;background:#fff;color:var(--ink);text-decoration:none}
.campus-edition .faculty-main .study-tabs button[aria-selected=true]{background:#2c414e;color:#fff;border-color:#2c414e}
.faculty-main .study-marker{display:none}
.campus-edition .faculty-main #study-panel{min-height:125px;margin:0}
.faculty-main #study-panel h3{font-size:24px;line-height:1.5;margin-bottom:14px}
.faculty-main #study-panel p{max-width:none;line-height:1.85}
.faculty-main .campus-link{margin-top:16px;padding:8px 0}
.campus-week{padding:64px 0}
.week-heading,.week-after{display:grid;grid-template-columns:minmax(0,30%) minmax(0,1fr);gap:48px;align-items:start}
.week-heading{margin-bottom:28px}.week-after{margin-top:28px;padding-top:0}
.week-table{border-spacing:3px}.week-table th,.week-table td{padding:22px 10px}
.partner-spread{display:grid;grid-template-columns:minmax(0,30%) minmax(0,1fr);gap:48px;padding:36px 40px;margin-bottom:64px}
.partner-spread .partner-lead{margin-bottom:18px;font-size:24px;line-height:1.5}
.partner-spread p{max-width:none;line-height:1.85}.partner-spread .partner-note{margin-top:20px}
.calendar.campus-calendar{grid-template-columns:minmax(0,30%) minmax(0,1fr);gap:48px;padding:48px max(var(--gutter),calc((100% - 1120px)/2))}
.calendar>div:first-child{padding-right:0}.selected-event{grid-template-columns:80px minmax(0,1fr);gap:24px;min-height:0}
.selected-event h3{font-size:22px}.selected-event li{line-height:1.8}#month-picker{margin-bottom:26px}
.game-overview{grid-template-columns:minmax(0,30%) minmax(0,1fr);gap:40px;margin-bottom:40px}
.school-invitation,.campus-place-intro{grid-template-columns:minmax(0,30%) minmax(0,1fr);gap:48px}
.power-heading{display:grid;grid-template-columns:minmax(0,30%) minmax(0,1fr);gap:48px;align-items:start}.power-heading>p{max-width:none}
.facility-guide dl{gap:28px 40px}.facility-guide dl>div{grid-template-columns:minmax(80px,100px) minmax(0,1fr)}
.facility-guide dt{word-break:keep-all}.facility-guide dd{line-height:1.85}
.location-row p:not(.location-lead){line-height:1.85}.location-row .location-lead{margin-bottom:18px}
.portrait-info{align-items:baseline;flex-wrap:wrap}.portrait-info span,.portrait p{font-size:13px}
.detail-copy,.detail-meta dd,.relations button>span{min-width:0}
.detail-desc,.ability-description{overflow-wrap:break-word;text-wrap:pretty}
footer{padding-right:calc(var(--gutter) + 64px);gap:24px}
#campus-day,.location-row{scroll-margin-top:110px}
@media(max-width:900px){
 .campus-edition .faculty-spread{grid-template-columns:1fr;padding:32px;gap:28px}
 .campus-section-head{margin-bottom:0}.campus-section-head>p{max-width:60ch;margin-top:16px}
 .campus-edition .faculty-main #study-panel{min-height:0}
 .campus-welcome,.week-heading,.week-after,.partner-spread,.calendar.campus-calendar{grid-template-columns:minmax(0,28%) minmax(0,1fr);gap:28px}
 .partner-spread{padding:32px}.game-overview{grid-template-columns:1fr;gap:22px}
 .facility-guide dl>div{display:block}.facility-guide dt{margin-bottom:8px}
 .school-invitation,.campus-place-intro{gap:28px}
 .power-heading{gap:28px}
}
@media(max-width:650px){
 :root{--gutter:22px}
 .campus-welcome,.week-heading,.week-after,.partner-spread,.calendar.campus-calendar,.school-invitation,.campus-place-intro{grid-template-columns:1fr;gap:20px}
 .campus-welcome{padding:32px 0}.campus-edition .campus-welcome h2{margin:0}
 .campus-edition .faculty-spread{padding:24px;gap:24px}
 .campus-edition .faculty-main .study-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:24px}
 .campus-edition .faculty-main .study-tabs button{font-size:16px;padding:12px 8px;white-space:nowrap}
 .faculty-main #study-panel h3{font-size:22px}.faculty-main .campus-link{font-size:14px}
 .campus-week{padding:40px 0}.week-heading p,.week-after p{margin:0}.week-after h3{margin:0}
 .week-day{grid-template-columns:60px minmax(0,1fr);gap:12px}.week-day p{gap:8px;font-size:15px}
 .week-after a{margin-top:12px}
 .partner-spread{padding:26px 24px;margin-bottom:40px}.partner-spread>h2{margin:0}
 .partner-spread .partner-lead{font-size:22px;margin-bottom:16px}
 .calendar.campus-calendar{padding:32px var(--gutter);gap:28px}
 .selected-event{grid-template-columns:60px minmax(0,1fr);gap:18px}.selected-event h3{font-size:20px}
 #month-picker{gap:4px}#month-picker button{padding:10px 11px}
 .game-overview{padding:24px;gap:20px}.game-overview .game-premise{font-size:22px}
 .world-opening p br,.power-heading>p br{display:none}
 .power-heading{grid-template-columns:1fr;gap:16px}.power-heading>p{margin-top:0}
 .facility-guide{padding:24px}.facility-guide dl{gap:24px}
 .portrait h3{font-size:19px}.portrait p,.portrait-info span{font-size:13px}
 .flow-pair p br{display:none}.flow-heading h3{font-size:23px}
 footer{padding:30px var(--gutter) 90px}
}
@media(min-width:651px) and (max-width:800px){
 .detail-layout{display:block}.detail-layout>img{position:relative;height:380px;min-height:0;object-position:center 20%}
 #character-dialog .detail-copy{padding:30px}.detail-copy h2{font-size:36px}
}
@media(max-width:380px){
 .campus-edition .faculty-spread{padding:22px 18px}
 .week-day{grid-template-columns:52px minmax(0,1fr);gap:10px}
 .week-day p{font-size:14px}.week-day p span{font-size:12px}
 .flow-heading{align-items:start;flex-direction:column;gap:4px}.flow-heading button{padding-left:0}
}

/* Keep the supplied illustrations complete at every screen width. */
.art-reserved.location-art,.location-row .art-reserved.location-art,.places .location-row .art-reserved.location-art{display:block;aspect-ratio:auto;min-height:0;overflow:hidden;background:transparent}
.location-art img{display:block;width:100%;height:auto;max-width:100%}
.art-reserved.location-art:before{content:none;display:none}
@media(max-width:650px){.places .location-row,.places .location-row.reverse{gap:24px}}

/* Supporting illustration and the timetable's shared free-time treatment. */
.empire-afterwar .location-art{width:min(100%,480px);margin:24px 0}
.week-free,.week-table .week-free{background:#f0f0ed;color:#56636b}
.free-time-slot{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 24px;font-size:18px;line-height:1.6}
.free-time-slot span{font-size:14px;color:var(--ink)}
.week-after .free-time-slot+a{display:inline-block;margin-top:16px}
@media(max-width:650px){.empire-afterwar .location-art{width:100%;max-width:400px;margin:20px 0}.free-time-slot{padding:18px 20px;gap:16px;font-size:16px}.free-time-slot span{font-size:13px}}
