@font-face{font-family:GilbertBookman;src:url('assets/bookman.otf') format('opentype');font-display:swap}
:root{color-scheme:light;--paper:#f4e1b5;--paper-light:#fbefd4;--ink:#462711;--outer:#2c170d;--brown:#663617;--orange:#d95108;--gold:#eaa124;--terminal:#100d07;--phosphor:#ffc34b;--online:#237638;--planned:#ad5100;--offline:#a02419;--line:#c49860;--headline:GilbertBookman,Georgia,serif;--mono:'Courier New',monospace}
*{box-sizing:border-box}body{margin:0;padding:12px;background:radial-gradient(ellipse at top,#57301a,var(--outer));color:var(--ink);font-family:var(--mono)}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{font:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--ink);outline-offset:4px}.page{max-width:1400px;margin:auto;background:var(--paper);border:5px solid var(--gold);border-radius:27px;box-shadow:0 0 0 3px #9d491b,inset 0 0 0 2px #bd5c20;overflow:hidden}.landing{display:flex;flex-direction:column;gap:11px;min-height:calc(100svh - 24px)}
.masthead{display:flex;align-items:center;justify-content:center;position:relative;padding:20px 12%;min-height:140px}.identity{width:min(750px,75%);text-align:center}.logo{display:block;width:100%;height:auto}.tagline{font:15px var(--headline);margin:8px 0 0}.sunset{position:absolute;right:4%;width:100px;height:100px}.sweep{height:63px;margin-top:-7px;background:url('assets/sweep.svg') center/100% 100% no-repeat;flex-shrink:0}.headline{font:clamp(25px,3vw,40px)/1.05 var(--headline);text-align:center;margin:0 16px;text-transform:uppercase;letter-spacing:-1px}
.terminal{margin:0 25px;padding:13px 20px 12px;background:var(--terminal);color:var(--phosphor);border:2px solid var(--brown);border-radius:15px;box-shadow:0 0 0 2px var(--gold);font-size:clamp(13px,1.15vw,16px);line-height:1.45;position:relative}.terminal-bar{display:flex;gap:14px;align-items:center;margin-bottom:9px}.terminal-bar h2{margin:0;font:inherit;letter-spacing:1px;white-space:nowrap}.terminal-rule{height:1px;background:var(--phosphor);opacity:.55;flex:1}.skip{border:1px solid #ad7b29;background:none;color:var(--phosphor);font-size:11px;cursor:pointer;padding:2px 7px;white-space:nowrap}.skip:focus-visible{outline-color:var(--phosphor)}.announcement h3,#typed-announcement h3{font:inherit;font-size:1.35em;letter-spacing:.5px;margin:0 0 6px;color:#ffcf6d}.announcement p,#typed-announcement p{margin:0 0 6px}.announcement p:last-child,#typed-announcement p:last-child{margin-bottom:0}.cursor{display:inline-block;width:.64em;height:1em;background:var(--phosphor);vertical-align:middle;margin-top:7px;animation:blink 1.15s step-end infinite}.terminal.typing .announcement{visibility:hidden}.terminal.typing #typed-announcement{position:absolute;left:20px;right:20px;top:45px}.terminal.typing>.cursor{visibility:hidden}.typed-cursor{display:inline-block;width:.6em;height:1em;background:var(--phosphor);vertical-align:text-bottom;margin-left:2px;animation:blink 1.15s step-end infinite}@keyframes blink{0%,49%{opacity:1}50%,100%{opacity:0}}
.availability{width:min(590px,calc(100% - 50px));align-self:center;border:2px solid var(--brown);box-shadow:0 0 0 2px var(--gold);border-radius:12px;background:var(--paper-light);overflow:hidden}.availability h2{font:19px/1.15 var(--headline);text-transform:uppercase;text-align:center;margin:0;background:var(--ink);color:var(--paper-light);padding:6px 12px}.availability table{border-collapse:collapse;width:calc(100% - 24px);margin:1px 12px 0;text-align:left;text-transform:uppercase;font-size:15px;letter-spacing:.3px}.availability tr+tr{border-top:1px solid #d5b78a}.availability th{font-weight:normal;padding:5px 14px;width:55%;white-space:nowrap}.availability td{padding:5px 8px;white-space:nowrap}.lamp{display:inline-block;width:13px;height:13px;border-radius:50%;margin-right:19px;vertical-align:-1px;border:1px solid #0003;box-shadow:inset 0 1px 2px #fff7}.lamp.online{background:#439644}.lamp.planned{background:#ffac14}.lamp.offline{background:#bd392c}.lamp.unknown{background:#888}.online{color:var(--online)}.planned{color:var(--planned)}.offline{color:var(--offline)}.unknown{color:#5e5e5e}.status-note{font-size:10px;text-align:center;margin:4px 8px 5px;color:#765d40}.vpn-access{text-align:center;padding:0 16px 2px}.primary-button{display:inline-block;min-width:310px;padding:9px 28px;background:linear-gradient(#e16b13,#b93c06);color:#fff4d8;border:2px solid var(--ink);outline:2px solid var(--gold);border-radius:10px;text-decoration:none;text-transform:uppercase;font:24px/1.15 var(--headline);box-shadow:inset 0 0 0 2px #ed8a2b}.primary-button:hover{background:#b94108}.primary-button:focus-visible{outline:3px solid var(--ink);outline-offset:5px}.vpn-access p{font-size:11px;margin:7px 0 3px}.vpn-access small{font-size:11px}.footer{margin-top:auto;text-align:center;padding:0 0 7px;display:flex;flex-direction:column;gap:2px}.footer-stripes{height:27px;margin-bottom:5px;background:linear-gradient(to bottom,#f53516 0 16%,var(--paper-light) 16% 20%,#ff6417 20% 36%,var(--paper-light) 36% 40%,#ff8c14 40% 56%,var(--paper-light) 56% 60%,#eeb12b 60% 76%,var(--paper-light) 76% 80%,#936019 80% 100%)}.footer strong{font:19px var(--headline);text-transform:uppercase}.footer>span{font-size:11px}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}
@media(min-width:761px) and (max-height:850px){.landing{gap:8px}.masthead{min-height:0;padding:12px 14% 4px}.identity{width:min(620px,70%)}.tagline{font-size:12px;margin-top:4px}.sunset{width:78px;height:78px}.sweep{height:48px;margin-top:0}.headline{font-size:30px}.terminal{padding:9px 17px;font-size:13px;line-height:1.35}.terminal-bar{margin-bottom:6px}.terminal.typing #typed-announcement{left:17px;right:17px;top:33px}.announcement h3,#typed-announcement h3{font-size:19px}.announcement p,#typed-announcement p{margin-bottom:5px}.cursor{margin-top:4px}.availability h2{font-size:17px;padding:4px}.availability table{font-size:13px}.availability th,.availability td{padding-top:4px;padding-bottom:4px}.primary-button{font-size:21px;padding:7px 25px}.footer-stripes{height:20px;margin-bottom:3px}.footer strong{font-size:16px}.footer{padding-bottom:5px}}
@media(min-width:761px) and (max-height:680px){body{padding:8px}.landing{gap:6px;min-height:calc(100svh - 16px)}.masthead{padding-top:8px}.identity{width:490px}.tagline{display:none}.sunset{width:67px;height:67px}.sweep{height:39px}.headline{font-size:25px}.terminal{font-size:12px;padding-top:8px;padding-bottom:8px}.announcement h3,#typed-announcement h3{font-size:17px}.availability th,.availability td{padding-top:3px;padding-bottom:3px}.status-note{margin-top:2px;margin-bottom:3px}.vpn-access p{margin-top:5px}.footer-stripes{height:16px}}
@media(max-width:760px){body{padding:9px}.page{border-width:4px;border-radius:22px}.landing{gap:15px;min-height:calc(100svh - 18px)}.masthead{padding:22px 17px 4px;min-height:0}.identity{width:100%}.sunset{display:none}.tagline{font-size:clamp(12px,3.7vw,17px);margin-top:14px}.sweep{height:65px;background-size:auto 100%;background-position:25% center;margin-top:0}.headline{font-size:clamp(23px,6.5vw,34px);text-transform:none;letter-spacing:-1px}.terminal{margin:0 15px;padding:15px 13px;font-size:13px;line-height:1.5;border-radius:12px}.terminal-bar{gap:7px;margin-bottom:12px;flex-wrap:wrap}.terminal-bar h2{font-size:12px;letter-spacing:.5px}.skip{font-size:10px}.terminal-rule{min-width:10px}.announcement h3,#typed-announcement h3{font-size:15px;line-height:1.4;margin-bottom:12px}.announcement p,#typed-announcement p{margin-bottom:12px}.terminal.typing #typed-announcement{left:13px;right:13px;top:45px}.availability{width:calc(100% - 30px)}.availability h2{font-size:17px;padding:9px}.availability table{font-size:12px;width:calc(100% - 14px);margin:3px 7px}.availability th{padding:8px 4px;width:54%}.availability td{padding:8px 4px;letter-spacing:0}.lamp{width:12px;height:12px;margin-right:8px}.status-note{font-size:9px;margin:3px 5px 7px}.primary-button{min-width:0;width:100%;max-width:420px;font-size:23px;padding:13px 12px}.vpn-access{padding:0 17px 7px}.vpn-access p{font-size:11px;line-height:1.4;margin-top:12px}.vpn-access small{font-size:10px;display:block;line-height:1.5;margin-top:6px}.footer-stripes{height:28px}.footer strong{font-size:15px}.footer>span{font-size:10px}.footer{padding-bottom:10px}}
@media(prefers-reduced-motion:reduce){.cursor,.typed-cursor{animation:none}}
/* Guide shares the same identity and theme tokens, with a reading-length layout. */
.guide{max-width:1000px}.guide .masthead{padding:25px 12%;min-height:0}.guide .identity{width:100%}.guide-content{padding:20px 30px 35px}.guide h1{font:clamp(27px,5vw,38px) var(--headline);margin:10px 0 15px}.guide h2{font:21px var(--headline)}.guide p,.guide li{font:16px/1.65 Arial,sans-serif}.guide li{padding:4px 0}.guide details{border-top:1px solid var(--line);padding:15px 0}.guide summary{font:19px var(--headline);cursor:pointer}.guide .notice{border-left:4px solid var(--orange);padding:10px 15px;background:#fff5dc}.back-link{font-size:13px}.guide .primary-button{font-size:19px;min-width:0}.guide .footer{margin-top:0}@media(max-width:760px){.guide-content{padding:15px 18px 25px}.guide .masthead{padding:22px 17px 5px}}

/* Inline SVG: non-scaling strokes retain constant thickness through the sweep. */
svg.sweep{display:block;width:100%;overflow:visible;background:none}.sweep path{stroke-width:5px}@media(min-width:761px) and (max-height:850px){.sweep path{stroke-width:4px}}@media(min-width:761px) and (max-height:680px){.sweep path{stroke-width:3px}}

.build-number{font:9px/1.2 var(--mono);color:#745838;letter-spacing:.4px}

/* Build 011: stronger desktop identity stripes; mobile keeps its existing weights. */
@media(min-width:761px){
  .landing{gap:5px}
  svg.sweep{transform:scaleY(1.4);transform-origin:center}
  .sweep path{stroke-width:7px}
  .footer-stripes{height:40px}
}
@media(min-width:761px) and (max-height:850px){
  .sweep path{stroke-width:5.6px}
  .footer-stripes{height:30px}
}
@media(min-width:761px) and (max-height:680px){
  .sweep path{stroke-width:4.2px}
  .footer-stripes{height:24px}
}

/* One palette for both Gilbert stripe bands. */
:root{--signal-1:#f12e16;--signal-2:#ff6017;--signal-3:#ff8b13;--signal-4:#edb02b;--signal-5:#966419}
.sweep path:nth-child(1){stroke:var(--signal-1)}.sweep path:nth-child(2){stroke:var(--signal-2)}.sweep path:nth-child(3){stroke:var(--signal-3)}.sweep path:nth-child(4){stroke:var(--signal-4)}.sweep path:nth-child(5){stroke:var(--signal-5)}
.footer-stripes{background:linear-gradient(to bottom,var(--signal-1) 0 16%,var(--paper-light) 16% 20%,var(--signal-2) 20% 36%,var(--paper-light) 36% 40%,var(--signal-3) 40% 56%,var(--paper-light) 56% 60%,var(--signal-4) 60% 76%,var(--paper-light) 76% 80%,var(--signal-5) 80% 100%)}
