:root{--navy:#0d192c;--navy2:#15243a;--deep:#080f1c;--gold:#d9b77c;--goldbright:#f7deb0;--paper:#eee9db;--muted:#aeb4b8;--hair:rgba(227,207,170,.27);--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--navy);color:var(--paper);font-family:var(--sans);font-size:13px}body:before{content:'';position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.81' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.15'/%3E%3C/svg%3E")}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--goldbright);outline-offset:3px}.hidden{display:none!important}.app{max-width:1920px;margin:auto;min-height:100vh}.masthead{height:94px;padding:0 clamp(24px,4.6vw,88px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--hair);background:rgba(10,20,36,.88)}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;color:var(--paper);font-family:var(--serif);font-size:25px;letter-spacing:2.1px;line-height:.9;font-weight:600}.brand i{color:var(--gold);font-weight:400}.brand small{display:block;letter-spacing:4px;font:8px var(--sans);margin-top:8px;color:#c8c0ab}.brand-star{font:33px var(--serif);color:var(--gold)}.masthead-right{display:flex;align-items:center;gap:46px}.masthead-label,.text-link,.back-link,.small-label,.eyebrow,.plate-meta,.panel-topline,.site-footer,.scene-corner,.gallery-small-watermark{font-size:10px;letter-spacing:2px;font-weight:600}.masthead-label{color:#a6aaac}.text-link,.back-link{border:0;background:none;color:var(--gold);padding:10px 0}.text-link span{font-size:17px;margin-left:10px}.page{padding:0 clamp(24px,4.6vw,88px) 46px}.intro-stack{text-align:center;padding:40px 0 28px}.eyebrow{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--gold);letter-spacing:2.6px}.gold-line{display:inline-block;width:24px;height:1px;background:var(--gold)}h1,h2,p{margin-top:0}.intro-stack h1{font:500 clamp(64px,7vw,106px)/.91 var(--serif);margin:12px 0 18px;letter-spacing:-2px}.intro-stack h1 em,.street-title-group h1 em,h2 em{font-weight:400;color:var(--gold)}.intro-stack p{color:#b8bec0;font-size:12px;letter-spacing:.3px}.atlas-shell{display:grid;grid-template-columns:minmax(0,1.48fr) minmax(345px,.65fr);border:1px solid var(--hair);max-height:700px;min-height:550px}.map-plate{background:#d9d9c7;display:flex;flex-direction:column;min-height:550px;position:relative;overflow:hidden}.plate-meta{height:52px;flex:none;display:flex;justify-content:space-between;align-items:center;padding:0 26px;color:#776e60;background:#e5e3d4}.plate-meta.bottom{border-top:1px solid #c6c5b5;font-size:9px}.plate-meta.top{border-bottom:1px solid #c6c5b5}.london-map{min-height:0;flex:1;width:100%;filter:saturate(.78)}.map-pin{cursor:pointer;outline:none}.map-pin .pin-halo{fill:rgba(144,108,63,.14);stroke:#946d42;stroke-width:1.1}.map-pin .pin-body{fill:#10223a;stroke:#c9aa76;stroke-width:2.1}.map-pin .pin-star{fill:#f6dba4;stroke:none}.map-pin text{font:600 15px var(--serif);letter-spacing:.5px;fill:#19334c}.map-pin .pin-number{font:700 15px var(--sans);fill:#f9e1b8;stroke:none}.map-pin:hover .pin-halo,.map-pin:focus .pin-halo{fill:rgba(178,125,47,.35);stroke-width:2}.map-pin:hover .pin-body{fill:#815b31}.street-list-panel{padding:30px clamp(20px,2.8vw,54px) 22px;background:linear-gradient(140deg,#18283e,#101b2d 78%);display:flex;flex-direction:column}.panel-topline{display:flex;justify-content:space-between;color:var(--gold);font-size:10px}.tiny-star{font-size:18px}.street-list-panel h2{font:500 clamp(34px,3.5vw,56px)/.99 var(--serif);margin:29px 0 10px}.aside-summary{font-size:11px;color:#abb4bd;line-height:1.8;max-width:270px}.street-list{margin-top:20px;border-top:1px solid var(--hair)}.street-row{display:flex;width:100%;align-items:center;gap:16px;padding:17px 1px;background:transparent;border:0;border-bottom:1px solid var(--hair);color:var(--paper);text-align:left;transition:padding .2s,background .2s}.street-row:hover,.street-row:focus-visible{padding-left:9px;background:rgba(217,183,124,.08)}.row-number{color:var(--gold);font:13px var(--serif)}.row-content{flex:1;display:flex;flex-direction:column;gap:5px}.row-title{font:600 23px/.85 var(--serif)}.row-count{color:#9da9b4;letter-spacing:1px;font-size:9px}.row-arrow{font-size:23px;color:var(--gold);font-weight:400}.panel-foot{display:flex;align-items:center;gap:13px;margin-top:auto;padding-top:24px;color:#aab3b8;font-size:10px;line-height:1.7}.circle-spark{display:grid;place-items:center;border:1px solid var(--hair);color:var(--gold);border-radius:50%;width:38px;height:38px;font-size:23px}.site-footer{display:flex;justify-content:space-between;margin-top:23px;color:#717f8c;font-size:9px;letter-spacing:1.7px}.page-street,.page-gallery{padding-top:32px}.street-heading{display:grid;grid-template-columns:1fr 2.1fr 1fr;align-items:center;min-height:141px;padding:6px 0 18px}.street-heading .back-link{justify-self:start;align-self:start}.street-title-group{text-align:center}.street-title-group .eyebrow{font-size:9px}.street-title-group h1{font:500 clamp(46px,5vw,70px)/.97 var(--serif);margin:13px 0 8px}.street-title-group p{font:italic 19px var(--serif);color:#b1b9b9}.street-heading-actions{justify-self:end}.ghost-button,.gold-button{padding:15px 18px;border:1px solid var(--hair);font-size:10px;letter-spacing:1.3px;font-weight:700;background:transparent;color:var(--paper);transition:.2s;white-space:nowrap}.ghost-button:hover{border-color:var(--gold);color:var(--gold)}.gold-button{background:var(--gold);border-color:var(--gold);color:#162239}.gold-button:hover{background:#f8d9a4}.stage-shell,.gallery-stage{border:1px solid var(--hair);background:#080f20}.scene-wrap,.gallery-scene{position:relative;overflow:hidden;aspect-ratio:1440/790;max-height:min(68vh,800px);min-height:390px}.scene-wrap>svg,.gallery-scene>svg{display:block;position:absolute;inset:0;width:100%;height:100%}#streetScene,#galleryScene{transition:filter 1.5s ease}#artLayer,#galleryArt{pointer-events:none}#artLayer.editable{pointer-events:auto;cursor:crosshair;touch-action:none}#artLayer.tool-move{cursor:grab}#artLayer.tool-erase{cursor:cell}#artLayer .motif-element{pointer-events:visiblePainted;cursor:grab}#artLayer .motif-element.selected{filter:drop-shadow(0 0 7px #fff2cd)}.scene-corner{position:absolute;color:#e3d2ae;font-size:9px;pointer-events:none;text-shadow:0 1px 9px #0c1524}.scene-corner.top-left{left:22px;top:20px}.scene-corner.top-right{right:22px;top:20px}.scene-corner.bottom-left{left:22px;bottom:20px}.scene-corner.bottom-right{right:22px;bottom:20px}.street-empty-hint{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);pointer-events:none;text-align:center;display:flex;align-items:center;flex-direction:column;gap:8px;transition:opacity .4s}.street-empty-hint .hint-spark{font:45px var(--serif);color:rgba(238,206,159,.85)}.street-empty-hint>span:not(.hint-spark){font-size:12px;letter-spacing:2.8px;color:#e3cfaa}.street-empty-hint small{font:italic 20px var(--serif);color:#c2bbb2}.street-empty-hint.has-art{opacity:0}.stage-shell.lit .street-empty-hint{opacity:0}.stage-shell.lit #artLayer{filter:drop-shadow(0 0 7px rgba(255,230,159,.9)) drop-shadow(0 0 24px rgba(255,190,112,.45))}.countdown{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(3,11,26,.46);color:#ffefc6;font:400 clamp(110px,17vw,250px)/1 var(--serif);text-shadow:0 0 28px #fff2cd,0 0 90px #fff3b4;z-index:3;animation:countpulse .8s ease both}@keyframes countpulse{0%{transform:scale(.88);opacity:0}35%{opacity:1}100%{transform:scale(1.1);opacity:.85}}.ceremony-caption{pointer-events:none;position:absolute;inset:0;display:flex;justify-content:center;align-items:center;flex-direction:column;background:linear-gradient(180deg,transparent 43%,rgba(7,11,23,.66));text-align:center;padding-top:200px;animation:ceremony 1.6s ease both}.ceremony-caption>span{font:500 clamp(24px,3.8vw,64px) var(--serif);letter-spacing:2px;color:#fff3da;text-shadow:0 0 26px #ffca7e}.ceremony-caption i{color:#f4c97d}.ceremony-caption small{letter-spacing:3px;font-size:9px;color:#efcda4}@keyframes ceremony{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.workshop{display:grid;grid-template-columns:220px 1fr;gap:28px;padding:29px 30px 24px;border:1px solid var(--hair);border-top:0;background:#15243a}.workshop-intro{border-right:1px solid var(--hair)}.small-label{color:var(--gold);font-size:9px;display:block;margin-bottom:12px}.workshop-intro h2{font:500 36px/.9 var(--serif);margin:10px 0}.workshop-intro p{font:italic 16px var(--serif);color:#adb7be}.tool-area{display:flex;align-items:start;flex-wrap:wrap;gap:26px}.button-row,.color-row,.motif-row{display:flex;align-items:center;gap:7px}.tool-btn{display:flex;align-items:center;gap:5px;background:transparent;color:#c4c9c6;border:1px solid var(--hair);padding:7px 9px;font:18px var(--serif);height:36px}.tool-btn span{font:600 8px var(--sans);letter-spacing:1px}.tool-btn:hover,.tool-btn.active{border-color:var(--gold);color:var(--gold);background:rgba(217,183,124,.08)}.color-choice{width:27px;height:27px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:var(--swatch);position:relative}.color-choice.active:after{position:absolute;content:'';inset:-5px;border:1px solid var(--gold);border-radius:50%}.slider-block input{accent-color:var(--gold);width:102px;display:block;margin-top:20px}.motif-row{gap:5px;flex-wrap:wrap}.motif-btn{width:37px;height:36px;border:1px solid var(--hair);background:transparent;color:#ead8b6;font:25px var(--serif)}.motif-btn:hover{border-color:var(--gold);background:rgba(217,183,124,.09)}.workshop-actions{grid-column:2;display:flex;gap:16px;align-items:center;justify-content:flex-end;border-top:1px solid var(--hair);padding-top:22px}.link-button{border:0;background:none;color:#abb4be;font-size:9px;letter-spacing:1.3px}.link-button:hover{color:var(--gold)}.illumination-btn{margin-left:auto;background:var(--gold);color:#111b2d;border:1px solid var(--gold);padding:13px 22px;letter-spacing:1.5px;font-size:11px;font-weight:700}.illumination-btn span:last-child{margin-left:14px;font-size:17px}.illumination-btn:hover{background:#f1d19b}.button-sun{margin-right:9px;font-size:17px}.postlight-panel{display:flex;justify-content:space-between;align-items:center;gap:25px;border:1px solid var(--hair);border-top:0;padding:28px 34px;background:#17273d}.postlight-panel .eyebrow{justify-content:flex-start;font-size:9px}.postlight-panel h2{font:500 38px/.9 var(--serif);margin:8px 0}.postlight-panel p{font:italic 18px var(--serif);color:#aeb6bd;margin-bottom:0}.postlight-actions{display:flex;gap:9px;flex-wrap:wrap}.gallery-stage{max-width:1360px;margin:auto}.gallery-scene{aspect-ratio:1440/710;max-height:640px}.gallery-small-watermark{position:absolute;top:22px;left:22px;color:#e5c895}.gallery-controls{display:flex;align-items:center;justify-content:center;gap:45px;padding:22px;background:#142338;border-top:1px solid var(--hair)}.gallery-arrow{width:49px;height:49px;border:1px solid var(--hair);border-radius:50%;color:var(--gold);background:transparent;font-size:26px}.gallery-arrow:hover{background:rgba(218,178,118,.14);border-color:var(--gold)}.gallery-arrow:disabled{opacity:.25;cursor:not-allowed}.gallery-caption{text-align:center;width:min(62%,470px)}.gallery-caption>span{font-size:9px;letter-spacing:2px;color:var(--gold)}.gallery-caption h2{font:500 31px/.98 var(--serif);margin:7px 0 5px}.gallery-caption p{color:#b6bcc2;font:italic 16px var(--serif);margin:0}.gallery-foot{max-width:1360px;margin:20px auto;display:flex;justify-content:space-between;align-items:center;gap:40px}.gallery-stops{display:flex;gap:9px}.stop-dot{width:26px;height:7px;background:#4b5a69;border:0;padding:0}.stop-dot.active{background:var(--gold)}.gallery-switch select{width:240px;padding:12px 14px;background:#15243a;color:var(--paper);border:1px solid var(--hair)}.modal-backdrop{position:fixed;inset:0;background:rgba(2,9,20,.84);z-index:90;display:flex;align-items:center;justify-content:center;padding:23px;backdrop-filter:blur(7px)}.modal-card{background:#18283e;color:var(--paper);border:1px solid #af946b;box-shadow:0 20px 90px #050914;padding:45px;width:min(100%,490px);position:relative}.modal-card .eyebrow{justify-content:flex-start;font-size:9px}.modal-card h2{font:500 59px/.9 var(--serif);margin:20px 0 15px}.modal-card>p{font:italic 19px var(--serif);color:#b5bfc0;margin-bottom:22px}.modal-close{position:absolute;top:13px;right:15px;background:transparent;border:0;color:var(--gold);font-size:26px}.modal-card label{display:block;letter-spacing:1.6px;font-size:9px;color:var(--gold);margin:19px 0 9px}.modal-card input{width:100%;padding:15px;background:#0f1b30;border:1px solid var(--hair);color:var(--paper)}.modal-card input::placeholder{color:#7c8b99}.mode-note{line-height:1.7;color:#b7b9ba;font-size:11px;padding:14px;border:1px solid var(--hair);margin:21px 0}.full-width{width:100%}.help-card>p{font:400 13px/1.7 var(--sans);color:#c0c4c2}.help-card .mode-note{font-size:11px}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,18px);background:#f1dbaf;color:#16233a;padding:12px 23px;border:1px solid #9b7a4e;z-index:110;opacity:0;pointer-events:none;transition:.25s;max-width:85%;text-align:center;font-size:12px}.toast.visible{transform:translate(-50%,0);opacity:1}@media(max-width:1100px){.atlas-shell{grid-template-columns:1.3fr 1fr}.map-plate{min-height:490px}.street-list-panel{padding:25px}.row-title{font-size:22px}.workshop{grid-template-columns:1fr}.workshop-intro{border-right:0}.workshop-actions{grid-column:1}}@media(max-width:800px){.masthead{padding:0 18px;height:76px}.masthead-label{display:none}.masthead-right{gap:0}.page{padding-left:17px;padding-right:17px}.intro-stack{padding:40px 0}.intro-stack h1{font-size:61px}.atlas-shell{grid-template-columns:1fr;max-height:none}.map-plate{min-height:380px;height:430px}.street-list-panel{padding:28px}.panel-foot{padding-top:16px}.street-heading{grid-template-columns:1fr auto;min-height:0;gap:15px;align-items:start;padding-bottom:24px}.street-title-group{grid-column:1/-1;grid-row:2;text-align:left}.street-title-group .eyebrow{justify-content:flex-start}.street-heading-actions{grid-row:1;grid-column:2}.street-title-group h1{font-size:54px}.scene-wrap,.gallery-scene{aspect-ratio:5/4;min-height:330px}.workshop{padding:22px 15px}.tool-area{gap:20px}.workshop-actions{flex-wrap:wrap}.illumination-btn{width:100%;margin:5px 0 0}.postlight-panel{flex-direction:column;align-items:flex-start}.gallery-controls{gap:13px}.gallery-caption h2{font-size:24px}.gallery-foot{flex-direction:column;align-items:flex-start;gap:18px}.site-footer{gap:12px;font-size:8px}.plate-meta{font-size:8px;padding:0 13px}}@media(max-width:420px){.text-link{font-size:9px}.brand{font-size:21px}.intro-stack h1{font-size:52px}.map-plate{height:350px;min-height:350px}.street-title-group h1{font-size:47px}.scene-wrap,.gallery-scene{aspect-ratio:3/4;min-height:390px}.street-empty-hint{width:80%}.street-empty-hint>span:not(.hint-spark){font-size:10px}.street-empty-hint small{font-size:17px}.gallery-caption>span{font-size:8px}.gallery-controls{gap:10px}.gallery-arrow{width:38px;height:38px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

.adjust-row .tool-btn{min-width:32px;justify-content:center}.adjust-row .tool-btn:disabled{opacity:.25;cursor:default}.adjust-row .tool-btn:disabled:hover{border-color:var(--hair);background:transparent;color:#c4c9c6}

.gallery-share{border:0;border-bottom:1px solid rgba(217,183,124,.65);padding:8px 0 4px;color:var(--gold);background:transparent;letter-spacing:1.4px;font:600 9px var(--sans);margin-top:11px}.gallery-share:hover{color:var(--goldbright)}
/* =========================================================
   THE LONDON LIGHTS · A lavish British winter storybook
   ========================================================= */
:root{--navy:#081329;--navy2:#12243a;--deep:#051022;--gold:#e3ba78;--goldbright:#ffdf9e;--paper:#f8ecda;--muted:#d0bfa8;--hair:rgba(243,199,129,.37);--serif:'Cormorant Garamond',Georgia,serif;--display:'Cinzel',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}
body{background:radial-gradient(ellipse at 50% -15%,#243b5c,#0b1a31 39%,#070f1e 82%);background-attachment:fixed;color:var(--paper)}
body:after{content:'';pointer-events:none;position:fixed;z-index:49;inset:0;opacity:.12;background-image:radial-gradient(circle at 8% 24%,#e5bb72 1px,transparent 1.6px),radial-gradient(circle at 76% 17%,#e5bb72 1px,transparent 1.6px),radial-gradient(circle at 45% 70%,#cddced 1px,transparent 2px);background-size:194px 177px,239px 207px,274px 261px}
.masthead{background:#0a162afa;border-bottom:1px solid #a27b45;box-shadow:0 8px 32px #03091366;height:84px}
.brand{font-family:var(--display);font-size:19px;letter-spacing:1.4px;font-weight:400}.brand i{font-family:var(--serif);font-weight:600;font-size:26px;letter-spacing:0}.brand-star{color:var(--goldbright);font-size:38px;filter:drop-shadow(0 0 10px #c79c5b)}
.masthead-label{font-family:var(--display);font-size:9px;font-weight:400;color:#d8c39b}
.intro-stack{padding:49px 0 33px;position:relative}.intro-stack:before,.intro-stack:after{content:'❧';position:absolute;top:82px;color:#d2a667;font-size:45px;font-family:var(--serif);opacity:.72}.intro-stack:before{left:20%}.intro-stack:after{right:20%;transform:scaleX(-1)}
.intro-stack h1{font:500 clamp(66px,7.9vw,122px)/.86 var(--serif);text-shadow:0 8px 33px #020712;letter-spacing:-2.8px}.intro-stack h1 em{text-shadow:0 0 26px #d6a45e4f}
.intro-stack p{font-family:var(--serif);font-style:italic;font-size:clamp(17px,1.75vw,23px);letter-spacing:.3px;color:#d9c7b0;margin-bottom:0}
.eyebrow,.small-label,.plate-meta,.panel-topline,.scene-corner,.site-footer{font-family:var(--display);font-weight:400;letter-spacing:1.4px}
.atlas-shell{border:5px double #b38f59;box-shadow:0 0 0 1px #e0bd7f33,0 19px 60px #0009;position:relative}
.atlas-shell:after{content:'✶';position:absolute;left:-15px;top:-17px;color:#ecd39b;background:#15243b;padding:4px;z-index:2;font-size:19px}
.map-plate{background:#10233a}
.plate-meta{background:#0d1b31;color:#e1c18c;font-size:10px;min-height:48px}.plate-meta.top{border-bottom:1px solid #a884544f}.plate-meta.bottom{border-top:1px solid #a884544f}
.london-map{filter:none}.map-pin .pin-body{fill:#7b4a24;stroke:#ffdf9e;stroke-width:2.3;filter:drop-shadow(0 0 7px #efae57)}.map-pin .pin-halo{fill:#e3a75f19;stroke:#efbb76b8}.map-pin text{font-family:var(--serif);font-size:18px;font-weight:700;fill:#2d2b30}.map-pin .pin-number{fill:#fff0c1;font-family:var(--display);font-size:14px}
.street-list-panel{background:linear-gradient(145deg,#182b43,#101f37 70%,#0a172b);border-left:1px solid #ac884e66}
.street-list-panel h2{color:#fff3d7;font-size:clamp(45px,4vw,64px)}
.aside-summary{font:italic 19px/1.3 var(--serif);max-width:380px;color:#ddc7a7}.street-row{padding:16px 5px}.street-row:hover{background:linear-gradient(90deg,#a87a3a21,transparent)}.row-title{font-family:var(--serif);font-size:27px}.row-count{letter-spacing:1px;font-size:8px;color:#b3adad}
.site-footer{color:#c9a874;opacity:.93}
.street-heading{border-bottom:1px solid #b99b6888;padding-bottom:23px}.street-title-group h1{font-size:clamp(58px,6.8vw,92px);letter-spacing:-1px;color:#fff3d6}
.street-title-group p{font:italic 21px var(--serif);color:#d5c1a5}
.stage-shell{border:3px double #d6af78;box-shadow:0 16px 70px #000a,0 0 0 1px #fbe1a633;position:relative}
.scene-wrap,.gallery-scene{background:#0d1d35;position:relative}
.scene-wrap:before,.gallery-scene:before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;border:1px solid #e6c58d66;box-shadow:inset 0 0 70px #0008}
.scene-wrap:after,.gallery-scene:after{content:'';position:absolute;inset:10px;z-index:2;pointer-events:none;border:1px solid #f6dca34d}
#streetScene{filter:brightness(.77) saturate(.92);transition:filter 1.6s ease}
.stage-shell.lit #streetScene{filter:brightness(1.12) saturate(1.14)}
#galleryScene{filter:brightness(1.11) saturate(1.16)}
.scene-nightfall{pointer-events:none;position:absolute;inset:0;z-index:1;background:radial-gradient(ellipse at 50% 37%,transparent 15%,rgba(6,11,23,.35) 90%);mix-blend-mode:multiply}
.festive-frame{pointer-events:none;z-index:4;position:absolute;color:#f6d193;top:21px;font-size:19px;text-shadow:0 0 11px #edbd70}.frame-nw{left:26px}.frame-ne{right:26px}
.street-empty-hint{top:48%;padding:18px 24px;background:#0a1939ac;border:1px solid #b9985873;box-shadow:0 15px 35px #0107138a;max-width:73%;z-index:3}
.street-empty-hint .hint-spark{font-size:31px}.street-empty-hint>span:not(.hint-spark){font:500 12px var(--display);letter-spacing:2px}.street-empty-hint small{font-size:19px;color:#f4ddbb;max-width:380px}
.scene-corner{z-index:3;font-size:9px;text-shadow:0 2px 8px #030710}
.scene-corner.bottom-left,.scene-corner.bottom-right{bottom:26px}
.workshop,.postlight-panel{background:linear-gradient(110deg,#172943,#0d1a30);border-color:#b28c5c77;box-shadow:0 10px 38px #0006}
.workshop-intro h2{font-size:47px}.workshop-intro p{font:italic 18px var(--serif);color:#dac6a8}
.workshop .small-label{font:400 9px var(--display);letter-spacing:1px;color:#e8c891}
.tool-btn,.motif-btn,.twinkle-btn{background:#13273b;border:1px solid #9b794e8f;color:#eddbb6;transition:.2s}
.tool-btn:hover,.tool-btn.active,.motif-btn:hover,.twinkle-btn.active,.twinkle-btn:hover{background:#7153296b;border-color:#f3d294;color:#fff1d1}
.motif-btn{font-size:27px;width:40px;height:39px}
.twinkle-row{flex-wrap:wrap}.twinkle-btn{height:36px;padding:4px 10px;font:400 10px var(--display);letter-spacing:1px}
.color-choice{box-shadow:0 0 9px var(--swatch)}
.illumination-btn,.gold-button{background:linear-gradient(120deg,#f4d99c,#bb8742 45%,#ffdd91);color:#101a27;border:1px solid #ffe4ab;box-shadow:0 0 0 2px #6a4d29,0 2px 21px #d7a35755;text-shadow:0 1px 0 #ffe6ae}
.illumination-btn:hover,.gold-button:hover{filter:brightness(1.16)}
.gallery-stage{border:3px double #d2b27c;box-shadow:0 20px 70px #0009}
.gallery-scene{max-height:680px}.gallery-controls{border-top:1px solid #d3b37d; background:#0e2037}.gallery-caption h2{font-size:40px;color:#ffebc8}.gallery-caption p{font-size:20px;color:#d7c5ab}
.gallery-arrow{border-color:#d1ab73;color:#f5d89f}.gallery-arrow:hover{box-shadow:0 0 20px #d9a66e44}
.gallery-switch select{background:#142840;border-color:#b18d5a;color:#f5e3c0}
.modal-card{background:radial-gradient(ellipse at top,#263953,#0e1c31 84%);border:5px double #dfba7d;box-shadow:0 20px 100px #000b, inset 0 0 0 8px #071b328a}
.modal-card h2{color:#ffedca}.mode-note{border-color:#c59c6588;color:#e4cfad}
/* The light drawing is a tiny string of individual bulbs, not a neon solid line. */
#artLayer{z-index:2}
#galleryArt{z-index:2}
.thin-wire{fill:none;stroke-width:1.35;stroke-opacity:.55;stroke-linejoin:round;stroke-linecap:round;pointer-events:visibleStroke}
.light-dot{opacity:.63;filter:drop-shadow(0 0 1px #ffda94);pointer-events:none}
.light-cross{opacity:.3;pointer-events:none}
.motif-wire{opacity:.63;stroke-opacity:.7}.motif-wire path,.motif-wire circle,.motif-wire ellipse{stroke-width:1.6}
.motif-bulbs{pointer-events:none;opacity:.84}
.motif-bulbs path,.motif-bulbs circle,.motif-bulbs ellipse{stroke-linecap:round;stroke-dasharray:1 6;stroke-width:5;fill:none!important;stroke-linejoin:round}
.motif-bulbs circle{stroke-dasharray:1.5 5}
.stage-shell.lit .light-dot,.gallery-scene .light-dot{opacity:1;filter:drop-shadow(0 0 3px currentColor) drop-shadow(0 0 7px #ffe5a6);animation:bulb-dance 2.1s ease-in-out infinite}
.stage-shell.lit .light-cross,.gallery-scene .light-cross{opacity:1;filter:drop-shadow(0 0 6px #ffda82)}
.stage-shell.lit .motif-bulbs,.gallery-scene .motif-bulbs{opacity:1;filter:drop-shadow(0 0 5px #ffdf9d) drop-shadow(0 0 8px #f0a85f);animation:motif-twinkle 2.8s ease-in-out infinite}
.stage-shell.lit .motif-wire,.gallery-scene .motif-wire{opacity:.64}
.stage-shell.lit #artLayer{filter:drop-shadow(0 0 5px #f7cb8c) drop-shadow(0 0 12px #c99454)}
#galleryArt{filter:drop-shadow(0 0 6px #f7cb8c) drop-shadow(0 0 14px #c99454)}
[data-twinkle="slow"] .light-dot,[data-twinkle="slow"] .motif-bulbs{animation-duration:5s!important}
[data-twinkle="steady"] .light-dot,[data-twinkle="steady"] .motif-bulbs{animation:none!important;opacity:1!important}
@keyframes bulb-dance{0%,100%{opacity:.50;filter:drop-shadow(0 0 2px #ffe6aa)}45%{opacity:1;filter:drop-shadow(0 0 6px #fff3ce) drop-shadow(0 0 10px #f5b264)}70%{opacity:.78}}
@keyframes motif-twinkle{0%,100%{opacity:.63}42%{opacity:1}66%{opacity:.81}}
.countdown{z-index:8;background:#051125b8;backdrop-filter:blur(3px)}
.ceremony-caption{z-index:5;justify-content:flex-end;padding:0 20px 52px;background:linear-gradient(0deg,#030b1aa9,transparent 33%)}
.ceremony-caption>span{font-size:clamp(23px,3vw,46px)}
.ceremony-caption small{color:#f7dfb4}
.gallery-small-watermark{z-index:4;color:#f5d79e}
.gallery-snow{pointer-events:none;position:absolute;inset:0;z-index:1;opacity:.18;background-image:radial-gradient(1px 1px at 25px 50px,#fff8d7 100%,transparent),radial-gradient(1.3px 1.3px at 98px 120px,#fbe1aa 100%,transparent);background-size:180px 170px,243px 193px}
@media(max-width:900px){.intro-stack:before{left:3%}.intro-stack:after{right:3%}.intro-stack{padding-top:35px}.street-list-panel{border-left:none;border-top:1px solid #ac884e66}.workshop{gap:15px}.tool-area{gap:19px}.street-empty-hint{max-width:85%}}
@media(max-width:600px){.intro-stack:before,.intro-stack:after{display:none}.brand{font-size:13px;gap:5px}.brand i{font-size:20px}.brand-star{font-size:25px}.brand small{font-size:7px;letter-spacing:1.5px}.masthead{height:65px;padding:0 15px}.masthead .text-link{font-size:9px;letter-spacing:0}.intro-stack h1{font-size:63px}.intro-stack p{font-size:18px;line-height:1.22;padding:0 10px}.plate-meta{font-size:8px;letter-spacing:.4px;gap:10px}.street-title-group h1{font-size:58px}.scene-wrap{aspect-ratio:4/5;min-height:360px}.gallery-scene{aspect-ratio:4/5;min-height:365px}.scene-corner{font-size:7px}.street-empty-hint{top:44%;max-width:90%;padding:12px 14px}.street-empty-hint>span:not(.hint-spark){font-size:9px}.street-empty-hint small{font-size:15px}.gallery-caption h2{font-size:26px}.gallery-caption p{font-size:16px}.twinkle-row{gap:5px}.twinkle-btn{font-size:9px;padding:6px}.workshop-intro h2{font-size:41px}.ceremony-caption{padding-bottom:45px}}
@media(prefers-reduced-motion:reduce){.stage-shell.lit .light-dot,.gallery-scene .light-dot,.stage-shell.lit .motif-bulbs,.gallery-scene .motif-bulbs{animation:none!important;opacity:1}}

/* v3.1: individual fairy-light animation (painted backgrounds remain untouched). */
.stage-shell:not(.lit) .light-dot { opacity:.28; filter:drop-shadow(0 0 .8px currentColor); }
.stage-shell:not(.lit) .motif-bulbs { opacity:.40; }
.stage-shell.lit .light-dot,
.gallery-scene .light-dot {
  opacity:1;
  filter:drop-shadow(0 0 5px currentColor) drop-shadow(0 0 10px #ffe0a0);
  animation:fairy-led-pulse var(--pulse-duration,2.3s) ease-in-out var(--pulse-delay,0s) infinite both;
  transform-box:fill-box;
  transform-origin:center;
  will-change:opacity;
}
.stage-shell.lit .light-dot.bright,
.gallery-scene .light-dot.bright { animation-name:fairy-led-spark; }
.stage-shell.lit .motif-bulbs,
.gallery-scene .motif-bulbs { animation:none; opacity:1; }
.stage-shell.lit .motif-wire,
.gallery-scene .motif-wire { opacity:.27; }
.stage-shell.lit .light-cross,
.gallery-scene .light-cross {
  animation:fairy-cross 3.1s ease-in-out infinite;
  filter:drop-shadow(0 0 7px #ffe5ac);
}
#artLayer .motif-led,#galleryArt .motif-led{pointer-events:none}
[data-twinkle="slow"] .light-dot { animation-duration:calc(var(--pulse-duration,2.3s) * 2.2)!important; }
[data-twinkle="steady"] .light-dot { animation:none!important;opacity:1!important;filter:drop-shadow(0 0 6px currentColor) drop-shadow(0 0 10px #ffe1a8)!important; }
@keyframes fairy-led-pulse {
  0%,100% {opacity:.20;transform:scale(.78);filter:drop-shadow(0 0 1px currentColor)}
  39% {opacity:1;transform:scale(1.4);filter:drop-shadow(0 0 5px currentColor) drop-shadow(0 0 11px #ffe9bd)}
  54% {opacity:.88;transform:scale(1.05)}
  71% {opacity:.30;transform:scale(.85)}
}
@keyframes fairy-led-spark {
  0%,100%,28% {opacity:.26;transform:scale(.72);filter:drop-shadow(0 0 1px currentColor)}
  38%,46% {opacity:1;transform:scale(1.7);filter:drop-shadow(0 0 8px #fff3d2) drop-shadow(0 0 14px currentColor)}
  55%,81% {opacity:.37;transform:scale(.88)}
}
@keyframes fairy-cross {0%,100%{opacity:.10}48%{opacity:.95}65%{opacity:.27}}
@media(prefers-reduced-motion:reduce){
  .stage-shell.lit .light-dot,.gallery-scene .light-dot,
  .stage-shell.lit .light-cross,.gallery-scene .light-cross {animation:none!important;opacity:1!important;transform:none!important;}
}

/* Mobile accessibility: animate fairy lights only with explicit opt-in when OS requests reduced motion. */
.sparkle-opt-in{border:1px solid #dfbb75;color:#f4dcae;background:#1d3049;padding:10px 13px;font:500 10px var(--display,serif);letter-spacing:1px;white-space:nowrap}
.sparkle-opt-in[aria-pressed="true"]{background:#755324;color:#fff1ce}
@media(max-width:600px){.masthead-right{gap:8px}.sparkle-opt-in{font-size:8px;padding:8px 6px}.masthead-label{display:none}}
@media(prefers-reduced-motion:reduce){
 body.motion-opt-in .stage-shell.lit:not([data-twinkle="steady"]) .light-dot,
 body.motion-opt-in .gallery-scene #galleryArt:not([data-twinkle="steady"]) .light-dot{
    animation-name:fairy-led-pulse!important;
    animation-duration:var(--pulse-duration,2.3s)!important;
    animation-delay:var(--pulse-delay,0s)!important;
    animation-iteration-count:infinite!important;
    animation-timing-function:ease-in-out!important;
 }
 body.motion-opt-in .stage-shell.lit:not([data-twinkle="steady"]) .light-dot.bright,
 body.motion-opt-in .gallery-scene #galleryArt:not([data-twinkle="steady"]) .light-dot.bright{animation-name:fairy-led-spark!important}
 body.motion-opt-in .stage-shell.lit:not([data-twinkle="steady"]) .light-cross,
 body.motion-opt-in .gallery-scene #galleryArt:not([data-twinkle="steady"]) .light-cross{animation-name:fairy-cross!important;animation-duration:3.1s!important;animation-iteration-count:infinite!important}
 body.motion-opt-in .stage-shell.lit[data-twinkle="slow"] .light-dot{animation-duration:calc(var(--pulse-duration,2.3s) * 2.2)!important}
 body.motion-opt-in .stage-shell.lit[data-twinkle="steady"] .light-dot,
 body.motion-opt-in .gallery-scene #galleryArt[data-twinkle="steady"] .light-dot{animation:none!important;opacity:1!important}
}

/* v4: per-object effect, independent of current editor palette setting. */
#artLayer,.scene-wrap #artLayer,#artObjects,.gallery-scene #galleryArt{touch-action:none!important;-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important;overscroll-behavior:contain}
#artLayer *,#artObjects *{touch-action:none!important;-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}
.scene-wrap,.stage-shell{ -webkit-user-select:none;user-select:none;-webkit-touch-callout:none; }
[data-effect="steady"] .light-dot{animation:none!important;opacity:1!important;transform:none!important;filter:drop-shadow(0 0 4px currentColor) drop-shadow(0 0 8px #ffe3af)!important}
[data-effect="slow"] .light-dot{animation-duration:calc(var(--pulse-duration,2.3s)*2.25)!important}
[data-effect="steady"] .light-cross{animation:none!important;opacity:.75!important}
/* Override legacy GLOBAL rhythm, which caused changing the next brush to affect old work. */
.stage-shell.lit [data-effect="twinkle"] .light-dot,.gallery-scene [data-effect="twinkle"] .light-dot,.sky-tile [data-effect="twinkle"] .light-dot{animation:fairy-led-pulse var(--pulse-duration,2.3s) ease-in-out var(--pulse-delay,0s) infinite!important;opacity:1}
.stage-shell.lit [data-effect="twinkle"] .light-dot.bright,.gallery-scene [data-effect="twinkle"] .light-dot.bright,.sky-tile [data-effect="twinkle"] .light-dot.bright{animation-name:fairy-led-spark!important}
.stage-shell.lit [data-effect="slow"] .light-dot,.gallery-scene [data-effect="slow"] .light-dot,.sky-tile [data-effect="slow"] .light-dot{animation:fairy-led-pulse calc(var(--pulse-duration,2.3s)*2.25) ease-in-out var(--pulse-delay,0s) infinite!important;opacity:1}
.stage-shell.lit [data-effect="steady"] .light-dot,.gallery-scene [data-effect="steady"] .light-dot,.sky-tile [data-effect="steady"] .light-dot{animation:none!important;opacity:1!important;transform:none!important}
.motif-bulbs{animation:none!important;opacity:1!important}
.motif-wire{opacity:.25!important}
/* Wide horizontal communal-light gallery. */
.gallery-view-heading{max-width:1360px;margin:0 auto 15px;display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}
.gallery-view-switch{display:flex;gap:7px}
.gallery-view-switch button{padding:12px 17px;border:1px solid #a38759;background:#102039;color:#d7c5a9;font:500 11px var(--display,Georgia,serif);letter-spacing:1.1px;cursor:pointer}
.gallery-view-switch button.active{background:linear-gradient(120deg,#e9cb90,#ad8147);color:#152237;box-shadow:0 0 15px #b5914f55}
.gallery-panorama{background:linear-gradient(#0b1a38,#193052 72%,#091a35);border:1px solid #a6875b;position:relative}
.panorama-intro{display:flex;justify-content:space-between;gap:15px;padding:15px 22px;color:#ebd4a6;font:11px var(--display,Georgia,serif);letter-spacing:2px}
.panorama-intro small{font-size:9px;color:#b1bdc8}
.sky-belt{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;touch-action:pan-x;min-height:390px;padding:0 10px 16px;scrollbar-color:#cca46a #10253e}
.sky-tile{position:relative;flex:0 0 clamp(290px,58vw,700px);aspect-ratio:1.45;min-height:300px;border-right:1px solid #ba995b70;scroll-snap-align:center;background:radial-gradient(ellipse at 50% 33%,#213d69,#0b1c37 75%);overflow:hidden;cursor:pointer}
.sky-tile:after{content:'✦';position:absolute;top:9%;right:8%;color:#ffdfa6;text-shadow:0 0 13px #f6c885}
.sky-tile svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 5px #f7cb8c)}
.sky-tile .light-dot{filter:drop-shadow(0 0 4px #ffdfad);}
.sky-tile-caption{position:absolute;bottom:0;left:0;right:0;display:flex;flex-direction:column;gap:4px;padding:33px 18px 15px;background:linear-gradient(transparent,#071528dd);color:#f7ddb0}
.sky-tile-caption span,.sky-tile-caption small{font-size:9px;letter-spacing:1.4px}
.sky-tile-caption strong{font:500 24px var(--serif,Georgia,serif)}
.sky-empty{padding:65px;color:#ecd8ba;font:italic 23px Georgia,serif}
#galleryIndividual{touch-action:pan-y;user-select:none;-webkit-user-select:none}
@media(max-width:600px){.gallery-view-heading{align-items:flex-start}.gallery-view-switch{width:100%}.gallery-view-switch button{flex:1;padding:12px 7px;font-size:10px}.panorama-intro{flex-direction:column}.sky-tile{flex-basis:88vw;min-height:320px}}
@media(prefers-reduced-motion:reduce){body:not(.motion-opt-in) .stage-shell.lit .light-dot,body:not(.motion-opt-in) .gallery-scene .light-dot,body:not(.motion-opt-in) .sky-tile .light-dot{animation:none!important;opacity:1!important}}

/* Explicit reduced-motion override is applied only after the visitor opts in. */
@media(prefers-reduced-motion:reduce){
 body.motion-opt-in .stage-shell.lit [data-effect="twinkle"] .light-dot,
 body.motion-opt-in .gallery-scene [data-effect="twinkle"] .light-dot,
 body.motion-opt-in .sky-tile [data-effect="twinkle"] .light-dot{animation:fairy-led-pulse var(--pulse-duration,2.3s) ease-in-out var(--pulse-delay,0s) infinite!important}
 body.motion-opt-in .stage-shell.lit [data-effect="slow"] .light-dot,
 body.motion-opt-in .gallery-scene [data-effect="slow"] .light-dot,
 body.motion-opt-in .sky-tile [data-effect="slow"] .light-dot{animation:fairy-led-pulse calc(var(--pulse-duration,2.3s)*2.25) ease-in-out var(--pulse-delay,0s) infinite!important}
 body.motion-opt-in .stage-shell.lit [data-effect="steady"] .light-dot,
 body.motion-opt-in .gallery-scene [data-effect="steady"] .light-dot,
 body.motion-opt-in .sky-tile [data-effect="steady"] .light-dot{animation:none!important}
}


/* V5 polish: seamless panorama + non-emoji controls */
.tool-btn,.motif-btn,.twinkle-btn,.gallery-view-switch button,.link-button,.ghost-button,.gold-button,.gallery-share{user-select:none;-webkit-user-select:none}
.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex:0 0 16px}
.btn-icon svg{width:16px;height:16px;display:block}
.tool-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 11px}
.tool-btn span:last-child{font-size:10px;letter-spacing:1px}
.adjust-row .tool-btn{min-width:84px}
.link-button{display:inline-flex;align-items:center;gap:8px}
.link-button .btn-icon svg{width:15px;height:15px}
.twinkle-btn{font-size:10px;letter-spacing:1.1px}
#lightBtn{display:inline-flex;align-items:center;justify-content:center;gap:10px}
#lightBtn .sparkle-icon svg{width:17px;height:17px}
#lightBtn .btn-tail{font-size:16px;line-height:1}
.motif-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.motif-btn{width:auto;height:auto;min-height:58px;padding:7px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:14px;background:linear-gradient(180deg,#13273b,#102033)}
.motif-icon{display:block;width:28px;height:28px;color:#f2d7a0}
.motif-icon svg{width:100%;height:100%;overflow:visible}
.motif-name{font-size:8px;letter-spacing:1.15px;color:#efe0bd;text-transform:uppercase;line-height:1.1;text-align:center}
.gallery-view-switch button{min-width:138px;padding:11px 16px}
#galleryPanorama{border:1px solid var(--hair);background:linear-gradient(180deg,#091629,#071221);padding:0;overflow:hidden}
.panorama-intro{padding:15px 18px 0;color:#f0d8a6}
.panorama-intro small{opacity:.8}
.sky-belt{overflow-x:auto;overflow-y:hidden;padding:12px 0 8px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.sky-belt::-webkit-scrollbar{height:10px}.sky-belt::-webkit-scrollbar-thumb{background:#7f6336;border-radius:999px}
.sky-strip{position:relative;height:430px;min-width:100%;background:radial-gradient(ellipse at top,#183258 0%,#0a1730 55%,#06101e 100%)}
.sky-strip svg{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}
.sky-hotspots{position:absolute;inset:0}
.sky-hotspot{position:absolute;top:0;bottom:0;background:none;border:0;padding:0;margin:0;cursor:pointer}
.sky-hotspot:focus-visible .sky-tag,.sky-hotspot:hover .sky-tag{transform:translate(-50%,-4px);background:rgba(8,20,38,.95);border-color:#f1d69f;color:#fff2cf}
.sky-tag{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:2px;min-width:150px;max-width:210px;padding:10px 12px;background:rgba(7,19,38,.78);backdrop-filter:blur(4px);border:1px solid #c59d5f7a;color:#f5ddb2;transition:.2s;border-radius:999px}
.sky-tag strong{font:500 14px Georgia,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.sky-tag small{font-size:8px;letter-spacing:1.4px;opacity:.84;white-space:nowrap}
.sky-empty{padding:40px 20px;color:#f3d9a8}
/* remove old tile styling side-effects */
.sky-tile,.sky-tile-caption{all:unset}
@media(max-width:800px){.motif-row{grid-template-columns:repeat(2,minmax(0,1fr))}.tool-btn{padding:9px 10px}.gallery-view-switch button{min-width:0}.sky-strip{height:390px}.sky-tag{min-width:120px;max-width:170px;padding:8px 10px}}
@media(max-width:600px){.btn-icon{width:15px;height:15px}.tool-btn span:last-child{font-size:9px}.adjust-row .tool-btn{min-width:68px}.motif-btn{min-height:54px;padding:7px 6px}.motif-icon{width:24px;height:24px}.sky-strip{height:360px}.sky-tag strong{font-size:12px}.sky-tag small{font-size:7px}}


/* V6: Important: old motif outline selectors set circle fill:none!important,
   accidentally extinguishing every LED in preset icons. Keep the outline muted,
   but explicitly fill individual bulbs with their own colour. */
.motif-bulbs > .light-dot,
.motif-bulbs circle.light-dot,
.motif-element .motif-bulbs .light-dot,
#artObjects .motif-bulbs .light-dot,
#galleryArtObjects .motif-bulbs .light-dot,
.sky-strip .motif-bulbs .light-dot {
  fill: var(--bulb-color, #ffe5a7) !important;
  stroke: none !important;
  stroke-dasharray: none !important;
  stroke-width: 0 !important;
  opacity: 1;
  filter: drop-shadow(0 0 2px var(--bulb-color, #ffe5a7));
}
/* Mobile-friendly editor icons, independent of the OS emoji font. */
.motif-btn .motif-icon svg, .tool-btn .btn-icon svg { display:block; color:#f5d9aa; }
.motif-btn .motif-icon, .tool-btn .btn-icon { flex-shrink:0; }
.motif-btn { font-family: Georgia,serif; }
@media (prefers-reduced-motion:reduce) {
 body.motion-opt-in .motif-element[data-effect="twinkle"] .light-dot,
 body.motion-opt-in .motif-element[data-effect="slow"] .light-dot {
   animation-play-state:running!important;
 }
}
