:root{--ink:#070b14;--light:#ece3cf;--brass:#cda44f;--beacon:#f6d78c;--verd:#5f9aa0;--hairline:#ece3cf29;--muted:#ece3cfa8;--serif:"Hoefler Text", "Baskerville", "Iowan Old Style", Georgia, "Times New Roman", serif;--sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;margin:0}body{background:var(--ink);min-height:100svh;color:var(--light);font-family:var(--sans);-webkit-font-smoothing:antialiased;position:relative;overflow-x:hidden}.backdrop{z-index:0;position:fixed;inset:0;overflow:hidden}.photo{filter:blur(2px)saturate(1.06)brightness(.94)contrast(1.04);will-change:transform;background:#070b14 url(/castrum.jpg) 50% 30%/cover no-repeat;animation:52s ease-in-out infinite drift;position:absolute;inset:0;transform:scale(1.1)}.grade{background:linear-gradient(105deg,#04070ed1 0%,#04070e75 38%,#04070e00 72%),linear-gradient(#04070e99 0%,#04070e00 24% 58%,#04070ec7 100%),radial-gradient(120% 80% at 50% 34%,#5f9aa01a 0%,#04070e00 55%);position:absolute;inset:0}.beacon{mix-blend-mode:screen;filter:blur(6px);background:radial-gradient(circle,#f6d78c42 0%,#cda44f1a 32%,#f6d78c00 62%);width:34vmax;height:34vmax;animation:7.5s ease-in-out infinite beat;position:absolute;top:33%;left:50%;transform:translate(-50%,-50%)}.vignette{background:radial-gradient(125% 100% at 50% 36%,#03050a00 42%,#03050a9e 100%);position:absolute;inset:0}.grain{z-index:1;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:7s steps(5,end) infinite grain;position:absolute;inset:-50%}.frame{z-index:2;grid-template-rows:auto 1fr auto;min-height:100svh;padding:clamp(1.25rem,4vw,2.75rem);animation:2.4s cubic-bezier(.22,1,.36,1) both emerge;display:grid;position:relative}header{border-bottom:1px solid var(--hairline);padding-bottom:clamp(1rem,3vw,1.75rem)}.wordmark{color:var(--light);letter-spacing:.34em;text-transform:uppercase;align-items:center;gap:.7ch;font-size:.82rem;font-weight:500;text-decoration:none;display:inline-flex}.wordmark .glyph{width:1.4rem;display:inline-flex}.wordmark .glyph svg{fill:none;width:100%;height:auto;stroke:var(--brass);stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round}.wordmark .glyph svg .wave{stroke:var(--verd)}.wordmark .glyph svg .ray{stroke:var(--beacon)}.wordmark .dot{color:var(--brass)}main{align-self:center;max-width:min(90vw,52rem);padding:clamp(1.5rem,5vw,3rem) 0}h1{font-family:var(--serif);letter-spacing:-.02em;text-shadow:0 1px 44px #04070eb3;font-size:clamp(2.5rem,8vw,6.25rem);font-weight:500;line-height:1}.sub{max-width:38ch;color:var(--muted);text-shadow:0 1px 24px #04070eb3;margin-top:clamp(1.25rem,3vw,1.75rem);font-size:clamp(1rem,1.6vw,1.2rem);line-height:1.5}.cta{margin-top:clamp(1.75rem,4vw,2.5rem)}.cta a{color:var(--light);letter-spacing:.02em;border-bottom:1px solid var(--brass);padding-bottom:.35rem;font-size:1rem;text-decoration:none;transition:color .25s,border-color .25s;display:inline-block}.cta a:hover{color:var(--brass);border-color:var(--verd)}.cta a span{transition:transform .25s;display:inline-block}.cta a:hover span{transform:translate(.25rem)}.contact{flex-direction:column;gap:.9rem;max-width:30rem;margin-top:clamp(1.75rem,4vw,2.5rem);display:flex}.contact .field{border:0;border-bottom:1px solid var(--hairline);width:100%;color:var(--light);font-family:var(--sans);text-shadow:0 1px 24px #04070eb3;background:0 0;padding:.5rem 0;font-size:1rem;transition:border-color .25s}.contact .field:focus{border-color:var(--brass);outline:none}.contact .field::placeholder{color:var(--muted)}.contact textarea.field{resize:vertical}.hp{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.contact .submit{border:0;border-bottom:1px solid var(--brass);color:var(--light);font-family:var(--sans);letter-spacing:.02em;cursor:pointer;background:0 0;align-self:flex-start;margin-top:.4rem;padding:0 0 .35rem;font-size:1rem;transition:color .25s,border-color .25s}.contact .submit:hover{color:var(--brass);border-color:var(--verd)}.contact .submit span{transition:transform .25s;display:inline-block}.contact .submit:hover span{transform:translate(.25rem)}.formstatus{min-height:1.2em;color:var(--muted);text-shadow:0 1px 24px #04070eb3;margin:0;font-size:.85rem}footer{border-top:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:clamp(1rem,3vw,1.75rem);display:flex}.mono{font-family:var(--mono);letter-spacing:.12em;color:var(--muted);font-size:.72rem;text-decoration:none}a.mono:hover{color:var(--brass)}@keyframes drift{0%,to{transform:scale(1.1)translate(0)}50%{transform:scale(1.16)translate(-1.4%,-1%)}}@keyframes beat{0%,to{opacity:.5;transform:translate(-50%,-50%)scale(1)}50%{opacity:.9;transform:translate(-50%,-50%)scale(1.07)}}@keyframes grain{0%{transform:translate(0)}to{transform:translate(-8%,6%)}}@keyframes emerge{0%{opacity:0;filter:blur(7px);transform:translateY(10px)}to{opacity:1;filter:blur();transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.photo,.beacon,.grain,.frame{animation:none}.frame{opacity:1;filter:none;transform:none}}
