:root {
  --wine-950:#170605; --wine-900:#260706; --wine-800:#430b0d; --wine-700:#681015; --wine-600:#861923;
  --gold-500:#c99537; --gold-400:#e4b858; --gold-200:#f4d99d; --cream:#fbf6eb; --cream-2:#f1e7d6;
  --paper:#f8f4ea; --ink:#221d19; --muted:#71665d; --tech:#071525; --tech-blue:#1699ef;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { background:var(--cream); color:var(--ink); font-family:Arial,Helvetica,sans-serif; margin:0; }
a { color:inherit; text-decoration:none; }
button,input,textarea,select { font:inherit; }
main { min-height:100vh; overflow:hidden; }

.site-header { align-items:center; background:rgba(251,246,235,.95); border-bottom:1px solid rgba(94,57,28,.14); display:flex; height:88px; justify-content:space-between; padding:0 clamp(24px,6vw,96px); position:relative; z-index:10; }
.brand { align-items:center; display:flex; gap:13px; }
.brand-mark { align-items:center; background:var(--wine-800); border:1px solid var(--gold-500); color:var(--gold-200); display:flex; font-family:Georgia,serif; font-size:13px; font-weight:700; height:43px; justify-content:center; letter-spacing:.025em; transform:rotate(45deg); width:43px; }
.brand-mark i { font-style:normal; transform:rotate(-45deg); }
.brand strong,.brand small { display:block; }
.brand strong { font-family:Georgia,serif; font-size:18px; letter-spacing:.02em; }
.brand small { color:#7b6d61; font-size:8px; letter-spacing:.17em; margin-top:3px; text-transform:uppercase; }
nav { align-items:center; display:flex; gap:28px; }
nav a { color:#554b43; font-size:11px; font-weight:800; letter-spacing:.05em; }
nav a:hover { color:var(--wine-700); }
.nav-cta { align-items:center; border:1px solid #8d6a33; display:flex; gap:11px; padding:11px 17px; }
.nav-cta span { color:var(--wine-700); font-size:14px; }

.portal-hero { background:radial-gradient(circle at 79% 34%,rgba(139,23,31,.16),transparent 26%),linear-gradient(108deg,#fbf6eb 0 59%,#190605 59% 100%); display:grid; grid-template-columns:1.05fr .95fr; min-height:calc(100vh - 88px); padding-left:clamp(24px,7.7vw,118px); position:relative; }
.portal-hero::before { background-image:linear-gradient(rgba(106,72,34,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(106,72,34,.045) 1px,transparent 1px); background-size:44px 44px; content:""; inset:0 41% 0 0; position:absolute; }
.portal-hero-copy { align-self:center; max-width:770px; padding:66px 70px 58px 0; position:relative; z-index:2; }
.eyebrow { align-items:center; color:var(--wine-700); display:flex; font-size:10px; font-weight:800; gap:12px; letter-spacing:.2em; margin:0 0 25px; text-transform:uppercase; }
.eyebrow span { background:var(--gold-500); flex:0 0 auto; height:1px; width:38px; }
h1,h2,h3,p { overflow-wrap:break-word; }
h1 { color:#2a1b17; font-family:Georgia,"Times New Roman",serif; font-size:clamp(49px,5vw,77px); font-weight:400; letter-spacing:-.045em; line-height:.99; margin:0; max-width:740px; }
h1 em,h2 em { color:var(--wine-700); font-style:italic; font-weight:400; }
.portal-lead { border-left:2px solid var(--gold-500); color:#62564c; font-family:Georgia,serif; font-size:clamp(16px,1.22vw,19px); line-height:1.7; margin:31px 0 35px; max-width:650px; padding-left:20px; }
.hero-actions { display:flex; flex-wrap:wrap; gap:12px; }
.button { align-items:center; border:0; display:inline-flex; font-size:11px; font-weight:800; justify-content:center; letter-spacing:.065em; min-height:50px; padding:0 23px; transition:.2s ease; }
.button span { font-size:17px; margin-left:14px; }
.button-primary { background:var(--wine-800); color:#fff7e8; }
.button-primary span { color:var(--gold-400); }
.button-primary:hover { background:var(--wine-700); transform:translateY(-2px); }
.button-secondary { border:1px solid rgba(74,50,33,.35); color:#4a3f36; }
.button-secondary:hover { border-color:var(--wine-700); color:var(--wine-700); }
.portal-facts { display:flex; margin:48px 0 0; }
.portal-facts div { border-right:1px solid rgba(83,54,29,.2); min-width:145px; padding:0 25px; }
.portal-facts div:first-child { padding-left:0; }
.portal-facts div:last-child { border:0; }
.portal-facts dt { color:var(--wine-700); font-family:Georgia,serif; font-size:19px; font-weight:700; }
.portal-facts dd { color:#82766d; font-size:9px; letter-spacing:.09em; margin:6px 0 0; text-transform:uppercase; }
.portal-portrait { align-items:end; background:linear-gradient(145deg,#32090a,#110303); display:flex; justify-content:center; min-height:100%; overflow:hidden; position:relative; }
.portal-portrait::before { border:1px solid rgba(225,180,89,.17); content:""; height:120%; position:absolute; transform:rotate(26deg); width:180px; }
.portal-portrait > img:first-child { filter:drop-shadow(0 28px 48px rgba(0,0,0,.58)); height:88%; max-width:87%; object-fit:contain; object-position:bottom; position:relative; z-index:2; }
.portrait-badge { align-items:center; background:rgba(24,5,5,.88); border:1px solid rgba(225,180,89,.48); bottom:30px; display:flex; gap:14px; left:32px; padding:13px 17px; position:absolute; z-index:4; }
.portrait-badge > span { color:var(--gold-400); font-family:Georgia,serif; font-size:13px; letter-spacing:.08em; }
.portrait-badge p,.portrait-badge small,.portrait-badge strong { display:block; margin:0; }
.portrait-badge small { color:rgba(255,245,226,.55); font-size:7px; letter-spacing:.15em; margin-bottom:3px; text-transform:uppercase; }
.portrait-badge strong { color:#fff7e8; font-family:Georgia,serif; font-size:15px; }
.portal-crest { background:rgba(24,5,5,.38); border:1px solid rgba(225,180,89,.28); box-shadow:0 16px 38px rgba(0,0,0,.24); filter:drop-shadow(0 9px 15px rgba(0,0,0,.42)); opacity:.9; padding:7px; position:absolute; right:28px; top:28px; width:128px; z-index:3; }

.portal-access { background:#210706; border-bottom:1px solid rgba(225,180,89,.18); border-top:1px solid rgba(225,180,89,.18); display:grid; grid-template-columns:repeat(5,1fr); padding:0 clamp(24px,6vw,96px); }
.portal-access a { border-left:1px solid rgba(225,180,89,.18); display:grid; min-height:128px; padding:25px 28px; position:relative; transition:.2s ease; }
.portal-access a:last-child { border-right:1px solid rgba(225,180,89,.18); }
.portal-access a:hover { background:#3b0b0e; }
.portal-access small { color:var(--gold-400); font-family:Georgia,serif; font-size:9px; }
.portal-access strong { color:#fff5e2; font-family:Georgia,serif; font-size:17px; margin-top:14px; }
.portal-access span { align-self:end; color:rgba(255,245,226,.45); font-size:8px; letter-spacing:.06em; text-transform:uppercase; }
.portal-access i { color:var(--gold-400); font-size:14px; font-style:normal; position:absolute; right:20px; top:21px; }

.portal-section { padding:118px clamp(24px,7.7vw,118px); }
.section-heading-row { align-items:end; display:grid; gap:70px; grid-template-columns:1.15fr .55fr; margin-bottom:70px; }
.portal-kicker { align-items:center; color:#796e64; display:flex; font-size:9px; font-weight:800; gap:13px; letter-spacing:.17em; margin:0 0 30px; text-transform:uppercase; }
.portal-kicker span { align-items:center; border:1px solid rgba(103,78,48,.35); color:var(--wine-700); display:flex; height:33px; justify-content:center; width:33px; }
.portal-kicker.light { color:rgba(255,244,223,.6); }
.portal-kicker.light span { border-color:rgba(229,185,91,.35); color:var(--gold-400); }
.section-heading-row h2,.technology-copy h2,.portal-contact h2 { font-family:Georgia,serif; font-size:clamp(41px,4.5vw,66px); font-weight:400; letter-spacing:-.035em; line-height:1.03; margin:0; }
.section-heading-row > p { color:var(--muted); font-family:Georgia,serif; font-size:15px; line-height:1.75; margin:0; }
.law-home { background:var(--paper); }
.law-overview { display:grid; gap:22px; grid-template-columns:1.2fr .8fr; }
.course-card { background:var(--wine-800); color:#fff7e8; min-height:410px; padding:38px; }
.course-top { align-items:center; border-bottom:1px solid rgba(229,185,91,.27); display:flex; justify-content:space-between; padding-bottom:19px; }
.course-top span { color:var(--gold-400); font-size:9px; font-weight:800; letter-spacing:.14em; }
.course-top small { color:rgba(255,247,232,.5); font-family:Georgia,serif; }
.course-card h3 { font-family:Georgia,serif; font-size:39px; font-weight:400; margin:70px 0 19px; }
.course-card > p { color:rgba(255,247,232,.63); font-family:Georgia,serif; font-size:15px; line-height:1.75; margin:0; max-width:620px; }
.course-progress { margin-top:55px; }
.course-progress > span { background:rgba(255,255,255,.12); display:block; height:3px; }
.course-progress i { background:var(--gold-400); display:block; height:3px; width:12%; }
.course-progress small { color:rgba(255,247,232,.48); display:block; font-size:8px; letter-spacing:.12em; margin-top:11px; text-transform:uppercase; }
.objective-card { border:1px solid rgba(91,67,40,.22); display:flex; flex-direction:column; min-height:410px; padding:38px; }
.card-number { color:var(--wine-700); font-size:9px; font-weight:800; letter-spacing:.16em; }
.objective-card blockquote { font-family:Georgia,serif; font-size:23px; line-height:1.5; margin:58px 0 30px; }
.objective-card a { align-items:center; color:var(--wine-700); display:flex; font-size:9px; font-weight:800; gap:12px; letter-spacing:.09em; margin-top:auto; text-transform:uppercase; }
.objective-card a span { color:var(--gold-500); font-size:18px; }
.course-metrics { display:grid; gap:1px; grid-column:1/-1; grid-template-columns:repeat(4,1fr); }
.course-metrics article { background:var(--cream-2); min-height:118px; padding:25px; }
.course-metrics strong { color:var(--wine-700); display:block; font-family:Georgia,serif; font-size:25px; }
.course-metrics span { color:#7b6d61; display:block; font-size:8px; letter-spacing:.1em; margin-top:8px; text-transform:uppercase; }

.schedule-portal { background:#230706; color:var(--cream); }
.dark-heading h2 em { color:var(--gold-400); }
.dark-heading > p { color:rgba(255,244,223,.55); }
.room-badge { align-items:center; border:1px solid rgba(229,185,91,.38); display:flex; gap:12px; justify-self:end; min-height:67px; padding:0 23px; }
.room-badge span { color:rgba(255,244,223,.55); font-size:9px; letter-spacing:.13em; text-transform:uppercase; }
.room-badge strong { color:var(--gold-200); font-family:Georgia,serif; font-size:23px; }
.room-badge i { background:rgba(229,185,91,.3); height:28px; margin:0 4px; width:1px; }
.day-tabs { border:1px solid rgba(229,185,91,.2); display:grid; grid-template-columns:repeat(5,1fr); }
.day-tabs button { background:transparent; border:0; border-right:1px solid rgba(229,185,91,.2); color:rgba(255,244,223,.55); cursor:pointer; display:flex; flex-direction:column; gap:10px; min-height:94px; padding:22px; text-align:left; transition:.2s ease; }
.day-tabs button:last-child { border-right:0; }
.day-tabs button small { font-family:Georgia,serif; font-size:9px; }
.day-tabs button span { font-family:Georgia,serif; font-size:21px; }
.day-tabs button:hover,.day-tabs button.active { background:var(--gold-500); color:#260706; }
.selected-day { display:grid; gap:70px; grid-template-columns:.7fr 1.3fr; padding-top:54px; }
.selected-day-title > span { color:var(--gold-400); font-family:Georgia,serif; font-size:12px; }
.selected-day-title h3 { font-family:Georgia,serif; font-size:clamp(31px,3.2vw,47px); font-weight:400; margin:18px 0 12px; }
.selected-day-title p { color:rgba(255,244,223,.5); font-size:10px; letter-spacing:.14em; margin:0; text-transform:uppercase; }
.class-row { align-items:center; border-top:1px solid rgba(229,185,91,.2); display:grid; gap:25px; grid-template-columns:120px 1fr auto; padding:25px 0; }
.class-row:last-child { border-bottom:1px solid rgba(229,185,91,.2); }
.class-row time,.break-row time { color:var(--gold-400); font-family:Georgia,serif; font-size:13px; }
.class-row h4 { font-family:Georgia,serif; font-size:19px; font-weight:400; margin:0 0 7px; }
.class-row p { color:rgba(255,244,223,.5); font-size:11px; margin:0; }
.class-mode { border:1px solid rgba(229,185,91,.25); color:rgba(255,244,223,.58); font-size:8px; letter-spacing:.12em; padding:7px 9px; text-transform:uppercase; }
.break-row { align-items:center; color:rgba(255,244,223,.35); display:grid; font-size:9px; gap:25px; grid-template-columns:120px 1fr; letter-spacing:.16em; padding:12px 0; text-transform:uppercase; }
.break-row time { color:rgba(229,185,91,.45); }

.repository-portal { background:var(--cream); }
.repository-grid { border-left:1px solid rgba(91,67,40,.22); border-top:1px solid rgba(91,67,40,.22); display:grid; grid-template-columns:repeat(3,1fr); }
.subject-card { border-bottom:1px solid rgba(91,67,40,.22); border-right:1px solid rgba(91,67,40,.22); display:flex; flex-direction:column; transition:background .2s ease; }
.subject-card:hover,.subject-card.active { background:#f2e6d2; }
.subject-card.active { box-shadow:inset 0 3px 0 var(--wine-700); }
.subject-summary { display:flex; flex:1; flex-direction:column; min-height:285px; padding:30px; }
.subject-top { align-items:center; display:flex; justify-content:space-between; }
.subject-top > span { align-items:center; background:var(--wine-800); color:var(--gold-200); display:flex; font-size:10px; font-weight:800; height:41px; justify-content:center; letter-spacing:.1em; min-width:41px; padding:0 9px; }
.subject-top small { color:#b3a597; font-family:Georgia,serif; font-size:11px; }
.subject-card h3 { font-family:Georgia,serif; font-size:23px; font-weight:400; line-height:1.25; margin:38px 0 12px; }
.subject-card .subject-summary > p { color:var(--muted); font-size:11px; line-height:1.5; margin:0; }
.subject-card time { color:var(--wine-700); font-size:9px; font-weight:800; letter-spacing:.08em; margin-top:12px; text-transform:uppercase; }
.open-label { align-items:center; border-top:1px solid rgba(91,67,40,.18); display:flex; font-size:9px; font-weight:800; justify-content:space-between; letter-spacing:.08em; margin-top:auto; padding-top:18px; text-transform:uppercase; }
.open-label i { color:var(--wine-700); font-family:Georgia,serif; font-size:22px; font-style:normal; font-weight:400; }
.subject-content { border-top:1px solid rgba(91,67,40,.18); color:var(--muted); font-size:12px; line-height:1.65; margin:0 30px; padding:22px 0 28px; }
.subject-content p { margin:0 0 13px; }
.repository-link { align-items:center; background:var(--wine-800); border:0; color:#fff7e8; cursor:pointer; display:flex; font-size:9px; font-weight:800; justify-content:space-between; letter-spacing:.07em; min-height:44px; padding:0 15px; text-align:left; text-transform:uppercase; transition:.2s ease; width:100%; }
.repository-link:hover,.repository-link:focus-visible { background:var(--wine-700); outline:2px solid var(--gold-500); outline-offset:2px; }
.repository-link span { color:var(--gold-400); font-size:17px; }
.repository-workspace { background:#fffaf0; border:1px solid rgba(91,67,40,.24); margin-top:46px; padding:clamp(24px,4vw,54px); scroll-margin-top:24px; }
.repository-workspace-heading { align-items:end; border-bottom:1px solid rgba(91,67,40,.2); display:grid; gap:35px; grid-template-columns:1fr auto; padding-bottom:34px; }
.repository-workspace-heading > div:first-child { position:relative; }
.repository-workspace-heading p { color:var(--wine-700); font-size:8px; font-weight:800; letter-spacing:.14em; margin:0 0 12px; text-transform:uppercase; }
.repository-workspace-heading h3 { font-family:Georgia,serif; font-size:clamp(28px,3vw,43px); font-weight:400; line-height:1.08; margin:0 0 12px; max-width:820px; }
.repository-workspace-heading small { color:var(--muted); font-size:11px; }
.repository-code { align-items:center; background:var(--wine-800); color:var(--gold-200); display:flex; font-size:11px; font-weight:800; height:48px; justify-content:center; letter-spacing:.08em; margin-bottom:22px; min-width:48px; padding:0 12px; width:max-content; }
.repository-categories { display:flex; flex-wrap:wrap; gap:7px; justify-content:flex-end; }
.repository-categories span { border:1px solid rgba(91,67,40,.24); color:#756557; font-size:8px; font-weight:800; letter-spacing:.08em; padding:8px 10px; text-transform:uppercase; }
.upload-zone { align-items:center; background:#f3eadb; border:1px dashed rgba(104,16,21,.42); cursor:pointer; display:flex; flex-direction:column; margin-top:30px; min-height:205px; padding:36px 24px; text-align:center; transition:.2s ease; }
.upload-zone:hover,.upload-zone:focus-within { background:#eee0ca; border-color:var(--wine-700); }
.upload-zone input { height:1px; opacity:0; overflow:hidden; position:absolute; width:1px; }
.upload-icon { align-items:center; border:1px solid rgba(104,16,21,.32); color:var(--wine-700); display:flex; font-family:Georgia,serif; font-size:27px; height:50px; justify-content:center; margin-bottom:16px; width:50px; }
.upload-zone strong { color:#38251f; font-family:Georgia,serif; font-size:18px; font-weight:400; }
.upload-zone small { color:#817266; font-size:9px; letter-spacing:.04em; margin-top:8px; }
.repository-storage-note { align-items:flex-start; background:#f8f1e5; border-left:2px solid var(--gold-500); display:flex; gap:13px; margin-top:16px; padding:15px 18px; }
.repository-storage-note > span { align-items:center; border:1px solid rgba(104,16,21,.25); color:var(--wine-700); display:flex; flex:0 0 auto; font-family:Georgia,serif; font-size:12px; height:23px; justify-content:center; width:23px; }
.repository-storage-note p { color:#786b60; font-size:10px; line-height:1.55; margin:1px 0 0; }
.repository-storage-note strong { color:#4a352d; }
.repository-status { color:var(--wine-700); font-size:10px; font-weight:800; letter-spacing:.03em; margin:18px 0 0; }
.file-list { border:1px solid rgba(91,67,40,.2); margin-top:28px; }
.file-list-header { align-items:center; background:var(--wine-800); color:#fff7e8; display:flex; justify-content:space-between; min-height:55px; padding:0 20px; }
.file-list-header strong { font-family:Georgia,serif; font-size:15px; font-weight:400; }
.file-list-header span { color:var(--gold-200); font-size:8px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.file-empty { align-items:center; display:flex; flex-direction:column; min-height:180px; padding:35px 20px; text-align:center; }
.file-empty > span { color:var(--gold-500); font-family:Georgia,serif; font-size:34px; }
.file-empty p { color:#55483f; font-family:Georgia,serif; font-size:16px; margin:8px 0; }
.file-empty small { color:#8a7d72; font-size:9px; }
.file-row { align-items:center; border-top:1px solid rgba(91,67,40,.17); display:grid; gap:15px; grid-template-columns:auto 1fr auto; min-height:76px; padding:12px 18px; }
.file-row:first-of-type { border-top:0; }
.file-type { align-items:center; background:#eee1cc; color:var(--wine-700); display:flex; font-size:8px; font-weight:800; height:39px; justify-content:center; width:45px; }
.file-row > div:nth-child(2) strong,.file-row > div:nth-child(2) small { display:block; }
.file-row > div:nth-child(2) strong { color:#3e3029; font-size:11px; }
.file-row > div:nth-child(2) small { color:#8a7c70; font-size:8px; margin-top:5px; }
.file-actions { display:flex; gap:7px; }
.file-actions button { background:transparent; border:1px solid rgba(91,67,40,.26); color:var(--wine-700); cursor:pointer; font-size:8px; font-weight:800; letter-spacing:.05em; min-height:34px; padding:0 10px; text-transform:uppercase; }
.file-actions button:hover { border-color:var(--wine-700); }
.file-actions .delete-file { color:#7a6860; }

.interest-areas { background:#140404; color:var(--cream); }
.area-grid { border-left:1px solid rgba(229,185,91,.2); display:grid; grid-template-columns:repeat(4,1fr); }
.area-grid article { border-bottom:1px solid rgba(229,185,91,.2); border-right:1px solid rgba(229,185,91,.2); border-top:1px solid rgba(229,185,91,.2); min-height:300px; padding:30px; transition:.2s ease; }
.area-grid article:hover { background:rgba(255,255,255,.035); transform:translateY(-5px); }
.area-grid span { color:var(--gold-400); font-family:Georgia,serif; font-size:10px; }
.area-grid h3 { font-family:Georgia,serif; font-size:24px; font-weight:400; line-height:1.2; margin:64px 0 16px; }
.area-grid p { color:rgba(255,244,223,.55); font-size:12px; line-height:1.7; margin:0; }

.technology-banner { min-height:760px; overflow:hidden; position:relative; }
.technology-banner > img { height:100%; inset:0; object-fit:cover; position:absolute; width:100%; }
.technology-overlay { background:linear-gradient(90deg,rgba(2,8,15,.96) 0%,rgba(2,8,15,.78) 48%,rgba(2,8,15,.05) 100%); inset:0; position:absolute; }
.technology-copy { color:white; max-width:700px; padding:125px 0 110px clamp(24px,7.7vw,118px); position:relative; z-index:2; }
.tech-kicker { color:var(--tech-blue); font-size:9px; font-weight:800; letter-spacing:.2em; margin:0 0 28px; text-transform:uppercase; }
.technology-copy h2 em { color:var(--gold-400); }
.technology-copy > p:not(.tech-kicker) { color:#a1b3c2; font-size:15px; line-height:1.8; margin:28px 0 33px; max-width:610px; }
.tech-tags { display:flex; flex-wrap:wrap; gap:8px; }
.tech-tags span { border:1px solid rgba(22,153,239,.35); color:#a9c9df; font-size:8px; font-weight:800; letter-spacing:.1em; padding:9px 11px; text-transform:uppercase; }
.tech-actions { display:flex; flex-wrap:wrap; gap:11px; margin-top:42px; }
.tech-actions a { align-items:center; background:rgba(7,21,37,.8); border:1px solid rgba(22,153,239,.4); display:flex; font-size:10px; font-weight:800; gap:15px; min-height:49px; padding:0 18px; }
.tech-actions a:hover { border-color:var(--gold-400); }
.tech-actions span { color:var(--gold-400); font-size:17px; }

.ecosystem { background:var(--cream-2); }
.ecosystem-grid { display:grid; grid-template-columns:repeat(3,1fr); }
.ecosystem-grid > a { background:var(--paper); border:1px solid rgba(91,67,40,.22); display:flex; flex-direction:column; min-height:380px; padding:35px; transition:.25s ease; }
.ecosystem-grid > a + a { border-left:0; }
.ecosystem-grid > a:hover { background:var(--wine-800); color:white; transform:translateY(-6px); }
.ecosystem-grid small { color:var(--wine-700); font-size:8px; font-weight:800; letter-spacing:.14em; }
.ecosystem-grid > a:hover small { color:var(--gold-400); }
.ecosystem-grid h3 { font-family:Georgia,serif; font-size:30px; font-weight:400; margin:66px 0 18px; }
.ecosystem-grid p { color:var(--muted); font-size:12px; line-height:1.75; margin:0; }
.ecosystem-grid > a:hover p { color:rgba(255,255,255,.62); }
.ecosystem-grid > a > span { border-top:1px solid rgba(91,67,40,.2); color:var(--wine-700); font-size:9px; font-weight:800; letter-spacing:.07em; margin-top:auto; padding-top:18px; text-transform:uppercase; }
.ecosystem-grid > a:hover > span { border-color:rgba(255,255,255,.2); color:var(--gold-200); }

.portal-contact { align-items:end; background:linear-gradient(135deg,#2b0808,#100202); color:var(--cream); display:grid; gap:60px; grid-template-columns:1.1fr .58fr; padding:110px clamp(24px,7.7vw,118px); }
.portal-contact h2 em { color:var(--gold-400); }
.portal-contact > p { color:rgba(255,244,223,.58); font-family:Georgia,serif; font-size:15px; line-height:1.75; margin:0; }
.portal-contact > div:last-child { display:flex; flex-wrap:wrap; gap:10px; grid-column:1/-1; }
.light-button { border-color:rgba(255,244,223,.3); color:white; }
.light-button span { color:var(--gold-400); }
.portal-footer { align-items:center; background:#090101; border-top:1px solid rgba(229,185,91,.15); color:rgba(255,244,223,.43); display:grid; gap:48px; grid-template-columns:auto 1fr auto; padding:45px clamp(24px,6vw,96px); }
.portal-footer .brand { color:white; }
.portal-footer p { font-size:9px; line-height:1.65; margin:0; max-width:560px; }
.portal-footer > div { display:flex; flex-wrap:wrap; gap:18px; justify-content:flex-end; }
.portal-footer > div a { color:var(--gold-200); font-size:8px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }

@media(max-width:1100px){
  .portal-access { grid-template-columns:repeat(3,1fr); }
  .portal-access a:nth-child(4),.portal-access a:nth-child(5) { border-top:1px solid rgba(225,180,89,.18); }
  .repository-grid { grid-template-columns:1fr 1fr; }
  .area-grid { grid-template-columns:1fr 1fr; }
}
@media(max-width:900px){
  nav a:not(.nav-cta) { display:none; }
  .portal-hero { grid-template-columns:1fr; padding:0; }
  .portal-hero-copy { padding:72px 24px 58px; }
  .portal-portrait { min-height:670px; }
  .portal-section { padding:90px 24px; }
  .section-heading-row,.law-overview,.portal-contact { gap:45px; grid-template-columns:1fr; }
  .room-badge { justify-self:start; }
  .selected-day { gap:40px; grid-template-columns:1fr; }
  .repository-workspace-heading { align-items:start; grid-template-columns:1fr; }
  .repository-categories { justify-content:flex-start; }
  .course-metrics { grid-template-columns:1fr 1fr; }
  .technology-copy { padding:100px 24px; }
  .ecosystem-grid { grid-template-columns:1fr; }
  .ecosystem-grid > a + a { border-left:1px solid rgba(91,67,40,.22); border-top:0; }
  .portal-footer { grid-template-columns:1fr; }
  .portal-footer > div { justify-content:flex-start; }
}
@media(max-width:600px){
  .site-header { height:76px; padding:0 18px; }
  .brand-mark { height:36px; width:36px; }
  .brand strong { font-size:16px; }
  .brand small { font-size:7px; }
  .nav-cta { padding:10px 12px; }
  .nav-cta span { display:none; }
  .portal-hero h1 { font-size:43px; }
  .button { width:100%; }
  .portal-facts { display:grid; gap:22px; grid-template-columns:1fr 1fr; }
  .portal-facts div { min-width:0; padding:0 12px; }
  .portal-facts div:nth-child(2) { border:0; }
  .portal-facts div:last-child { padding-left:0; }
  .portal-portrait { min-height:540px; }
  .portrait-badge { bottom:18px; left:18px; }
  .portal-crest { right:16px; top:16px; width:92px; }
  .portal-access { grid-template-columns:1fr; }
  .portal-access a { border-right:1px solid rgba(225,180,89,.18); border-top:1px solid rgba(225,180,89,.18); }
  .portal-access a:first-child { border-top:0; }
  .section-heading-row h2,.technology-copy h2,.portal-contact h2 { font-size:40px; }
  .course-metrics { grid-template-columns:1fr; }
  .day-tabs button { align-items:center; min-height:70px; padding:13px 5px; text-align:center; }
  .day-tabs button span { font-size:16px; }
  .class-row { align-items:start; gap:10px; grid-template-columns:1fr; }
  .class-mode { justify-self:start; }
  .break-row { gap:3px; grid-template-columns:1fr; }
  .repository-grid,.area-grid { grid-template-columns:1fr; }
  .subject-summary { min-height:265px; }
  .file-row { align-items:start; grid-template-columns:auto 1fr; }
  .file-actions { grid-column:1/-1; padding-left:60px; }
  .technology-banner { min-height:780px; }
  .technology-overlay { background:rgba(2,8,15,.82); }
  .portal-contact > div:last-child { display:grid; }
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}
