/* lacyreid.com — "Starry night" jewel-tone theme. Pure CSS, no external assets. */
:root{--night:#0b1033;--sapphire:#16206b;--amethyst:#4a1f6e;--emerald:#0f7a5c;--ruby:#a3204a;--gold:#f2cf73;--gold2:#e7b54a;--ink:#f4f1ff;--muted:#cfc8ea;--card:rgba(20,22,70,.72);--line:rgba(242,207,115,.35);
--display:"Palatino Linotype","Book Antiqua",Palatino,"URW Palladio L","P052",Georgia,serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
--staff:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='60' viewBox='0 0 600 60'%3E%3Cg fill='none' stroke='%23f2cf73' stroke-opacity='.45' stroke-width='1'%3E%3Cpath d='M0 14C150 2 300 30 450 16S600 10 600 10'/%3E%3Cpath d='M0 22C150 10 300 38 450 24S600 18 600 18'/%3E%3Cpath d='M0 30C150 18 300 46 450 32S600 26 600 26'/%3E%3Cpath d='M0 38C150 26 300 54 450 40S600 34 600 34'/%3E%3Cpath d='M0 46C150 34 300 62 450 48S600 42 600 42'/%3E%3C/g%3E%3Cg fill='%23f2cf73' fill-opacity='.8'%3E%3Cellipse cx='120' cy='22' rx='5' ry='3.6' transform='rotate(-20 120 22)'/%3E%3Cpath d='M124.5 21V4' stroke='%23f2cf73' stroke-width='1.3'/%3E%3Cellipse cx='300' cy='34' rx='5' ry='3.6' transform='rotate(-20 300 34)'/%3E%3Cellipse cx='326' cy='28' rx='5' ry='3.6' transform='rotate(-20 326 28)'/%3E%3Cpath d='M304.5 33V14L330.5 9V27' fill='none' stroke='%23f2cf73' stroke-width='1.3'/%3E%3Cellipse cx='480' cy='20' rx='5' ry='3.6' transform='rotate(-20 480 20)'/%3E%3Cpath d='M484.5 19V2q6 4 4 10' fill='none' stroke='%23f2cf73' stroke-width='1.3'/%3E%3C/g%3E%3C/svg%3E")}
*{box-sizing:border-box}
html{background:var(--night)}
body{margin:0;display:flex;flex-direction:column;font:1.0625rem/1.7 var(--sans);color:var(--ink);min-height:100vh;position:relative;overflow-x:hidden;
background:
 radial-gradient(1.5px 1.5px at 12% 18%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 28% 62%,#fff 50%,transparent 51%),radial-gradient(1.2px 1.2px at 47% 9%,#ffe9b0 50%,transparent 51%),radial-gradient(1px 1px at 66% 41%,#fff 50%,transparent 51%),radial-gradient(1.6px 1.6px at 83% 23%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 91% 72%,#d9ccff 50%,transparent 51%),radial-gradient(1.3px 1.3px at 7% 84%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 56% 88%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 38% 35%,#fff 50%,transparent 51%),radial-gradient(1.2px 1.2px at 74% 95%,#ffe9b0 50%,transparent 51%),
 radial-gradient(ellipse at 80% 0%,rgba(163,32,74,.28),transparent 45%),radial-gradient(ellipse at 0% 40%,rgba(15,122,92,.22),transparent 45%),
 linear-gradient(170deg,#0b1033 0%,#16206b 40%,#3a1c63 75%,#4a1f6e 100%) fixed;background-size:420px 420px,420px 420px,420px 420px,420px 420px,420px 420px,420px 420px,420px 420px,420px 420px,420px 420px,420px 420px,auto,auto,auto;background-attachment:fixed}
/* twinkling sparkles + drifting notes (decorative layers) */
body::before,body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0}
body::before{background:radial-gradient(2px 2px at 20% 30%,#fff,transparent 60%),radial-gradient(2.5px 2.5px at 70% 15%,#ffe9b0,transparent 60%),radial-gradient(2px 2px at 85% 55%,#fff,transparent 60%),radial-gradient(2px 2px at 35% 80%,#e6dcff,transparent 60%),radial-gradient(2.5px 2.5px at 55% 50%,#fff,transparent 60%);animation:twinkle 4s ease-in-out infinite alternate}
body::after{content:"♪   ✦      ♫        ♬     ♩          ♪      ♫";white-space:pre;font:2rem/1 var(--display);color:rgba(242,207,115,.16);top:auto;bottom:-3rem;left:-10%;width:130%;inset-inline:auto;animation:drift 38s linear infinite}
@keyframes twinkle{0%{opacity:.25}100%{opacity:1}}
@keyframes drift{0%{transform:translate(0,0) rotate(-4deg)}50%{transform:translate(8%,-55vh) rotate(3deg)}100%{transform:translate(16%,-110vh) rotate(-4deg)}}
header.site,main,footer.site{position:relative;z-index:1}
h1,h2,h3,.brand{font-family:var(--display);line-height:1.2;font-weight:600}
h1{font-size:clamp(2.1rem,5.2vw,3.4rem);margin:.2em 0;font-style:italic;background:linear-gradient(90deg,#fff6d8,var(--gold),#fff6d8);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 30px rgba(242,207,115,.25)}
h2{color:var(--gold);font-size:1.7rem;font-style:italic;margin-top:2.6rem;padding-bottom:1.6rem;background:var(--staff) left bottom/360px 36px no-repeat}
h2::before{content:"✦ ";font-style:normal;color:#e8a7ff;font-size:.8em}
h3{color:#fff6d8;font-size:1.3rem}
a{color:#ffd98a;text-underline-offset:3px}a:hover{color:#fff}
a:focus-visible,.btn:focus-visible,input:focus,select:focus,textarea:focus{outline:3px solid var(--gold);outline-offset:2px}
.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:#fff;color:#000;padding:.5rem;z-index:9}
header.site{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem clamp(1rem,4vw,3rem);background:rgba(11,16,51,.6);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.brand{font-size:1.65rem;text-decoration:none;color:#fff6d8;font-style:italic}.brand::before{content:"♫";font-style:normal;color:var(--gold);margin-right:.4rem;font-size:1.05em;text-shadow:0 0 12px rgba(242,207,115,.7)}
.brand span{display:block;font:500 .72rem var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-style:normal;margin-left:1.75rem}
nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem 1.2rem;margin:0;padding:0}nav a{text-decoration:none;color:var(--ink);padding:.3rem 0;border-bottom:2px solid transparent}nav a:hover{color:var(--gold)}nav a[aria-current]{border-color:var(--gold);color:var(--gold)}
main{flex:1;width:100%;max-width:68rem;margin:0 auto;padding:2rem clamp(1rem,4vw,3rem) 3rem}
.hero{position:relative;padding:3rem clamp(1.25rem,4vw,3rem) 5rem;margin-top:1rem;border-radius:22px;overflow:hidden;border:1px solid var(--line);
background:var(--staff) center bottom/110% 70px no-repeat,radial-gradient(circle at 85% 20%,rgba(232,167,255,.35),transparent 40%),linear-gradient(135deg,rgba(22,32,107,.9),rgba(74,31,110,.9));box-shadow:0 0 60px rgba(150,110,255,.25),inset 0 0 40px rgba(242,207,115,.08)}
.hero::after{content:"♫";position:absolute;right:6%;top:8%;font:7rem/1 var(--display);color:rgba(242,207,115,.22);animation:bob 6s ease-in-out infinite;pointer-events:none}
.ff{background:var(--staff) center bottom/110% 70px no-repeat,radial-gradient(circle at 15% 15%,rgba(15,122,92,.5),transparent 45%),linear-gradient(135deg,rgba(74,31,110,.95),rgba(110,22,60,.9))}
.ff::after{content:"♬"}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-12px) rotate(6deg)}}
.eyebrow{text-transform:uppercase;letter-spacing:.2em;font-size:.78rem;color:var(--gold);margin:0}
.eyebrow::before{content:"✦ ";color:#e8a7ff}
.lead{font-size:1.2rem;color:var(--muted);max-width:42rem}
.btn{display:inline-block;margin:.25rem .3rem .25rem 0;background:linear-gradient(135deg,#f6dc8c,#e0a93f);color:#1b1240;padding:.75rem 1.3rem;border-radius:999px;text-decoration:none;border:0;font:600 1rem var(--sans);cursor:pointer;box-shadow:0 0 18px rgba(242,207,115,.45)}
.btn:hover{color:#1b1240;box-shadow:0 0 28px rgba(242,207,115,.8)}
.btn.ghost{background:transparent;color:var(--gold);box-shadow:inset 0 0 0 2px var(--gold)}.btn.ghost:hover{color:#fff}
button[disabled]{opacity:.6;cursor:not-allowed}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1.4rem;margin:2rem 0}
.cards article{position:relative;border-radius:18px;padding:1.5rem;border:1px solid rgba(255,255,255,.14);background:linear-gradient(160deg,rgba(15,122,92,.55),rgba(11,16,51,.85));box-shadow:0 0 26px rgba(15,122,92,.35)}
.cards article:nth-child(3n+2){background:linear-gradient(160deg,rgba(163,32,74,.55),rgba(11,16,51,.85));box-shadow:0 0 26px rgba(163,32,74,.35)}
.cards article:nth-child(3n){background:linear-gradient(160deg,rgba(120,60,190,.6),rgba(11,16,51,.85));box-shadow:0 0 26px rgba(150,90,230,.35)}
.cards article::after{content:"♪";position:absolute;top:.8rem;right:1rem;color:rgba(242,207,115,.5);font-size:1.4rem}
.cards article:nth-child(3n+2)::after{content:"♫"}.cards article:nth-child(3n)::after{content:"♬"}
.cards h2,.cards h3{margin-top:0;background:none;padding:0}.cards h2::before,.cards h3::before{content:none}
.photo{margin:2rem 0;padding:1rem;text-align:center;min-height:12rem;display:grid;place-items:center;border:2px dashed var(--line);border-radius:18px;color:var(--muted);background:rgba(11,16,51,.45)}
.events{list-style:none;padding:0}.events li{border-left:4px solid var(--gold);background:var(--card);padding:1rem 1.25rem;margin:1rem 0;border-radius:0 14px 14px 0;box-shadow:0 0 20px rgba(120,90,230,.2)}
.events time{font-weight:600;color:var(--gold)}.events h2{margin:.2rem 0;font-size:1.3rem;background:none;padding:0}.events h2::before{content:none}
.rep{list-style:none;padding-left:0}.rep li{margin:.5rem 0;padding-left:1.6rem;position:relative}.rep li::before{content:"♪";position:absolute;left:0;color:var(--gold)}
.note{font-size:.9rem;color:var(--muted);font-style:italic}.plain{padding-left:1.2rem}
section{position:relative}
.contact{display:grid;gap:.4rem;max-width:36rem;background:var(--card);padding:1.6rem;border-radius:18px;border:1px solid var(--line)}
.contact input,.contact select,.contact textarea{font:inherit;padding:.65rem;border:1px solid rgba(242,207,115,.5);border-radius:10px;background:rgba(255,255,255,.95);color:#1b1240;margin-bottom:.6rem}
.hp{position:absolute;left:-9999px}
footer.site{text-align:center;color:var(--muted);padding:2.2rem 1.5rem 1.5rem;font-size:.9rem;border-top:1px solid var(--line);background:var(--staff) center 0/600px 40px repeat-x,rgba(11,16,51,.55)}
footer.site::before{content:"✦ ♪ ✦";display:block;color:var(--gold);letter-spacing:.5em;margin-bottom:.5rem}
/* repair feature */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.repair{position:relative;max-width:46rem;padding:1.8rem 2rem;border-radius:20px;border:1px solid rgba(242,207,115,.45);background:radial-gradient(circle at 90% 10%,rgba(242,207,115,.18),transparent 40%),linear-gradient(150deg,rgba(15,122,92,.7),rgba(22,32,107,.88) 60%,rgba(74,31,110,.9));box-shadow:0 0 34px rgba(15,122,92,.45)}
.repair::after{content:"\266B";position:absolute;right:1.4rem;top:1rem;font-size:2.2rem;color:rgba(242,207,115,.45)}
.repair h3{margin:.3rem 0 .6rem;font-size:1.55rem}.repair .addr{color:var(--muted);font-size:.95rem}.repair .addr::before{content:"\2726  ";color:var(--gold)}
.repair-mini{margin:1.5rem 0;padding:.9rem 1.2rem;border-left:4px solid var(--gold);border-radius:0 12px 12px 0;background:rgba(15,122,92,.35)}
.soon{display:inline-block;margin:0;padding:.2rem .8rem;border-radius:999px;border:1px solid var(--line);color:var(--gold);font-size:.85rem;font-style:italic}
.e404{text-align:center;padding:4rem clamp(1.25rem,4vw,3rem) 6rem}.e404 .big{font:italic 600 clamp(4rem,14vw,8rem)/1 var(--display);color:var(--gold);text-shadow:0 0 40px rgba(242,207,115,.5);margin:0}.e404 .lead{margin:1rem auto 1.5rem}
.form-error{max-width:36rem;margin:0 0 1.2rem;padding:1rem 1.2rem;border-radius:12px;background:rgba(163,32,74,.55);border:1px solid #ff9db5;color:#fff}
/* photos */
img{max-width:100%;height:auto;display:block}
.hero.home{display:grid;grid-template-columns:1fr minmax(220px,340px);gap:2.5rem;align-items:center}
.portrait{margin:0;justify-self:center}
.portrait img,.framed img{border-radius:18px;border:3px solid var(--gold);box-shadow:0 0 0 6px rgba(242,207,115,.15),0 0 40px rgba(232,167,255,.45)}
.portrait img{aspect-ratio:3/4;object-fit:cover}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.8rem;margin:1.5rem 0}
.framed{margin:1.5rem 0}.gallery .framed{margin:0}.framed img{width:100%;aspect-ratio:4/3;object-fit:cover}.framed.narrow{max-width:420px}.framed.narrow img{aspect-ratio:3/4}
figcaption{margin-top:.7rem;text-align:center;font:italic 1.05rem var(--display);color:var(--gold)}figcaption::before{content:"♪ "}
.contact-head{display:flex;align-items:center;gap:1.2rem}.avatar{width:96px;height:96px;border-radius:50%;object-fit:cover;object-position:top;border:3px solid var(--gold);box-shadow:0 0 22px rgba(242,207,115,.5)}
/* r8: desktop only - spread the drifting notes across the full 130vw strip (mobile untouched) */
@media (min-width:761px){body::after{content:"♪ ✦ ♫ ♬ ♩ ♪ ♫ ✦ ♬ ♪ ✦ ♫ ♬ ♩ ♪ ♫ ✦ ♬";white-space:nowrap;text-align:center;word-spacing:calc((130vw - 19em) / 17)}}
@media (max-width:760px){.hero.home{grid-template-columns:1fr}.portrait{max-width:300px}}
@media (max-width:600px){.hero::after{font-size:4.5rem;opacity:.7}h2{background-size:260px 30px}body::after{font-size:1.4rem}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* r12: expandable articles, "date to be announced" */
.cards.insights{align-items:start}
.cards details{margin-top:1rem}
.cards summary{display:inline-block;cursor:pointer;list-style:none;padding:.4rem 1rem;border-radius:999px;border:1px solid var(--line);color:var(--gold);font-weight:600;font-size:.95rem}
.cards summary::-webkit-details-marker{display:none}
.cards summary::before{content:"+ "}.cards details[open] summary::before{content:"\2212  "}
.cards summary:hover{color:#fff}.cards summary:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.cards details p{margin:.9rem 0 0}
.events .tba{font-weight:600;color:var(--gold)}

/* r16: photo layouts (no inline styles; strict CSP) */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,340px);gap:2rem;align-items:center;margin:1.5rem 0}
.split.rev>div{order:0}
.split:not(.rev){grid-template-columns:minmax(200px,320px) minmax(0,1fr)}
.split .framed{margin:0;justify-self:center;width:100%}
.split h2{margin-top:0}
.framed.wide{max-width:640px;margin-left:auto;margin-right:auto}
.framed.sky img{aspect-ratio:1600/684;object-fit:cover}
.gallery.tall{max-width:46rem}.gallery.tall .framed img{aspect-ratio:3/4}
@media (max-width:760px){.split,.split:not(.rev){grid-template-columns:1fr}.split .framed{max-width:340px}}

/* r19 */
.gallery.tall{margin-left:auto;margin-right:auto}
.split{align-items:start}
