
:root{color-scheme:dark;font-family:Arial,Helvetica,sans-serif;color:#f2f3f4;background:#212528;font-synthesis:none;font-size:16px;--ink:#f2f3f4;--muted:#a3a8ad;--line:#42494f;--yellow:#b2965c;--purple:#c8afd5;--blue:#aebed0}
*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.35}button:focus-visible,a:focus-visible{outline:3px solid #bccdde;outline-offset:5px}button{border:0;background:none}button .icon{flex-shrink:0}.icon{display:inline-block;width:24px;height:24px;background:currentColor;mask:var(--icon) center/contain no-repeat;-webkit-mask:var(--icon) center/contain no-repeat}.topbar{max-width:1250px;margin:auto;min-height:90px;display:flex;align-items:center;justify-content:space-between;padding:0 44px;border-bottom:1px solid var(--line);gap:20px}.wordmark{font:700 31px Georgia,serif;letter-spacing:-1.7px;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:8px}.wordmark .icon{width:29px;height:29px;color:#d9caab}.topnote,.kicker,footer{font-size:12px;font-weight:700;letter-spacing:1.6px}.topnote{color:var(--muted)}.help-button{display:flex;align-items:center;gap:8px;font-size:14px}.help-button:hover{color:var(--purple)}main{max-width:1072px;margin:auto;padding:0 32px}.intro{text-align:center;margin:40px 0 39px}.kicker{margin:0;color:var(--muted);line-height:1.5}.intro h1{font:normal clamp(40px,5vw,57px)/1.1 Georgia,serif;letter-spacing:-2px;margin:13px 0}.intro h1 em{font-weight:normal;position:relative;font-style:italic;z-index:0}.intro h1 em:after{content:'';height:10px;background:var(--yellow);position:absolute;bottom:5px;left:0;right:0;z-index:-1}.intro>p:last-child{font-size:17px;color:var(--muted);margin:0}.game-layout{display:grid;grid-template-columns:minmax(0,460px) minmax(0,310px);gap:100px;justify-content:center;align-items:start}.board-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.board-heading>div{display:flex;align-items:center;gap:12px}.puzzle-number{font-size:12px;letter-spacing:1px;color:var(--muted)}h2{font:normal 23px/1.2 Georgia,serif;margin:0}.difficulty{font-size:12px;padding:7px 10px;background:#292e38;border-radius:4px;color:#a3a8ad}.board-wrap{padding:12px;background:#2b2f36;border:1px solid #42494f;border-radius:15px}.board{display:grid;grid-template-columns:repeat(var(--size,4),minmax(0,1fr));gap:7px}.cell{aspect-ratio:1;border-radius:8px;background:#212528;border:1px solid #42494f;display:flex;justify-content:center;align-items:center;position:relative;min-width:0;padding:0;transition:background .15s,box-shadow .15s;box-shadow:0 2px 0 #00000033}.cell .icon{width:38%;height:38%;min-width:22px;min-height:22px;pointer-events:none}.cell.empty:hover{background:#3d3824}.cell.lit{background:#3d3824;border-color:#847752;box-shadow:0 2px 0 #00000033}.cell.lamp{background:#3d3724;border-color:#847852;box-shadow:0 2px 0 #00000033}.cell.flower{color:var(--purple)}.cell.moth{color:var(--blue);background:#27303a}.cell.flower.lit{background:#2c243d;border-color:#655284;box-shadow:0 2px 0 #00000033}.cell.conflict{background:#3d2425!important;border-color:#845257!important;color:#d3b1b5;box-shadow:0 2px 0 #00000033}.cell.hinted{outline:3px solid var(--purple);outline-offset:1px}.cell small{font-size:12px;position:absolute;right:7px;bottom:6px;font-weight:700}.cell .plus{font-size:21px;font-weight:normal;line-height:1;color:#a3a8ad}.cell.lit .plus{color:#d1c9b3}.inventory{display:flex;align-items:center;justify-content:center;gap:13px;margin-top:24px;min-height:28px}.lamp-supply{display:flex;gap:5px;color:#dacbaa}.lamp-supply .used{color:#a3a8ad}.lamp-supply .icon{width:21px;height:24px}.inventory p{font-size:14px;margin:0;font-weight:600}.feedback{font-size:14px;color:var(--muted);text-align:center;min-height:40px;line-height:1.5;margin:13px 0 8px}.feedback.error{color:#d3b1b5}.feedback.success{color:#b5cfc7}.controls{display:flex;justify-content:center;gap:12px}.controls button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:43px;padding:9px 15px;border:1px solid var(--line);border-radius:6px;font-size:14px;transition:background .15s}.controls button:hover:not(:disabled){background:#2b2f36}.controls .icon{width:18px;height:18px}aside{padding-top:6px}.rules>.kicker{padding-bottom:24px;border-bottom:1px solid var(--line)}.rule{display:flex;gap:16px;margin-top:26px}.rule-symbol{width:28px;height:28px;flex-shrink:0;margin-top:1px}.yellow{color:#e0cea3}.purple{color:var(--purple)}.blue{color:var(--blue)}h3{font-size:15px;line-height:1.5;margin:0 0 5px}.rule p{font-size:14px;line-height:1.65;color:var(--muted);margin:0}.collection{border-top:1px solid var(--line);margin-top:29px;padding-top:24px}.collection nav{display:flex;gap:8px;margin-top:16px}.puzzle-choice{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;font-size:13px;position:relative}.puzzle-choice:hover{border-color:var(--ink)}.puzzle-choice.active{background:var(--ink);color:#a3a8ad;border-color:var(--ink)}.puzzle-choice.solved:not(.active){background:#3d3824;border-color:#847852}.puzzle-choice .icon{width:18px;height:18px}.collection>p:last-child{font:italic 16px Georgia,serif;color:var(--muted);margin:19px 0 0}footer{border-top:1px solid var(--line);margin:42px auto 0;padding:22px 0 26px;display:flex;justify-content:space-between;color:#a3a8ad;font-size:11px;letter-spacing:1px}.completion{margin-top:23px;padding:20px;background:#29382f;border:1px solid #42494f;border-radius:8px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}.completion[hidden]{display:none}.win-check{color:#a3a8ad}.completion h3{font:normal 24px Georgia,serif;margin:0 0 5px}.completion p{font-size:13px;line-height:1.5;color:#a3a8ad;margin:0}.primary{display:flex;align-items:center;justify-content:center;gap:14px;border-radius:6px;background:var(--ink);color:#a3a8ad;padding:13px 18px;font-size:14px;font-weight:600}.primary:hover{background:#3f4450}.primary .icon{width:18px;height:18px}.completion .primary{width:100%;margin-top:3px}dialog{border:1px solid var(--line);border-radius:16px;padding:28px;max-width:min(490px,calc(100% - 28px));max-height:calc(100vh - 40px);color:var(--ink);box-shadow:0 20px 100px #00000030}dialog::backdrop{background:#3b425366;backdrop-filter:blur(3px)}.dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}dialog h2{font-size:33px;letter-spacing:-.8px}dialog p{font-size:15px;line-height:1.65;color:#a3a8ad}.dialog-top button{padding:4px;display:flex}.example{display:grid;grid-template-columns:repeat(3,35px);gap:4px;justify-content:center;margin:18px}.example>span{height:35px;border:1px solid var(--line);border-radius:5px;display:grid;place-items:center}.example .lit{background:#3d3824;border-color:#847852}.example .center{background:var(--yellow)}.keyboard-tip{border-top:1px solid var(--line);padding-top:16px}dialog>.primary{width:100%;margin-top:20px}
@media(min-width:1400px){.intro{margin-top:50px;margin-bottom:45px}.game-layout{gap:115px}}
@media(max-width:850px){.topbar{padding:0 26px;min-height:74px}.topnote{display:none}.game-layout{gap:36px;grid-template-columns:minmax(0,430px) minmax(0,260px)}main{padding:0 24px}.intro{margin:28px 0 32px}.rules>.kicker{padding-bottom:19px}.rule{margin-top:19px;gap:12px}.collection nav{gap:5px}.puzzle-choice{width:34px;height:34px}.rule p{font-size:14px}.cell small{right:5px;bottom:4px}}
@media(max-width:660px){.topbar{padding:0 20px;min-height:66px}.wordmark{font-size:28px}.help-button{font-size:13px}.help-button .icon{width:20px;height:20px}main{padding:0 20px;max-width:480px}.intro{margin:27px 0}.intro .kicker{font-size:10px;letter-spacing:1.5px}.intro h1{font-size:40px;margin:10px 0 12px}.intro>p:last-child{font-size:15px}.game-layout{display:flex;flex-direction:column;gap:30px}.play-area,aside{width:100%}.board-heading{margin-bottom:13px}.board-heading h2{font-size:21px}.puzzle-number{font-size:11px}.difficulty{font-size:11px}.board-wrap{padding:9px;border-radius:12px}.board{gap:6px}.cell{border-radius:6px}.cell small{font-size:11px}.inventory{margin-top:20px}.feedback{margin-top:10px;min-height:40px}.controls{gap:8px}.controls button{flex:1;padding:10px 8px}.collection{order:0;margin:0 0 28px;padding:0;border:0}.collection nav{gap:10px}.puzzle-choice{width:40px;height:40px}.collection>p:last-child{display:none}aside{display:flex;flex-direction:column}.rules{order:1}.rules>.kicker{padding-bottom:16px}.rule h3{font-size:15px}.rule p{font-size:14px}footer{margin-top:30px;gap:15px;line-height:1.5;font-size:10px}footer span:last-child{text-align:right;white-space:nowrap}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media(max-width:400px){.board[data-size="6"] .cell.flower .icon,.board[data-size="6"] .cell.moth .icon{position:absolute;top:2px;width:19px;height:19px;min-width:19px;min-height:19px}.board[data-size="6"] .cell small{bottom:1px;right:0;width:100%;font-size:10px;line-height:11px;text-align:center}.lamp-supply{gap:2px}.lamp-supply .icon{width:18px}}
/* Larger After Dark gardens keep their coordinates and light counts readable. */
.game-layout{grid-template-columns:minmax(0,540px) minmax(0,310px);gap:64px}
.board-heading>div{min-width:0;flex-wrap:wrap;gap:5px 12px}.puzzle-number{white-space:nowrap}.difficulty{flex-shrink:0;margin-left:10px}
.board-tools{display:flex;justify-content:space-between;align-items:center;min-height:27px;margin:-7px 0 10px;font-size:12px;color:var(--muted)}.board-tools button{padding:4px 0;font-size:12px;text-decoration:underline;text-underline-offset:3px}
.board-wrap{overflow-x:auto;scrollbar-width:thin;scroll-padding:8px}.board{--gap:7px;gap:var(--gap)}.board.dense{--gap:5px}.board.zoomed{min-width:calc(var(--size)*48px + (var(--size) - 1)*var(--gap))}
.board.dense .cell.flower .icon,.board.dense .cell.moth .icon{position:absolute;top:9%;width:38%;height:38%;min-width:17px;min-height:17px}.board.dense .cell small{bottom:3px;right:0;width:100%;text-align:center;font-size:11px;line-height:12px}
.inventory{flex-wrap:wrap}.lamp-supply{align-items:center}.lamp-supply strong{font-size:15px;font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600}.lamp-supply:has(strong){gap:8px}
.pack-controls{display:flex;background:#292e38;border-radius:7px;padding:4px;margin-top:15px;gap:4px}.pack-controls button{flex:1;border-radius:4px;min-height:37px;font-size:14px;padding:7px 10px;color:#a3a8ad}.pack-controls button[aria-pressed="true"]{background:#212528;color:var(--ink);box-shadow:0 1px 4px #00000014;font-weight:600}
.collection nav{flex-wrap:wrap}.collection .puzzle-choice{flex-shrink:0}.collection>p:last-child{line-height:1.5}
@media(max-width:850px){.game-layout{grid-template-columns:minmax(0,1fr) 260px;gap:30px}.board.dense{--gap:4px}.board-heading>div{display:block}.board-heading h2{margin-top:4px}.board.dense .cell small{font-size:10px;bottom:1px}.board.dense .cell.flower .icon,.board.dense .cell.moth .icon{top:2px;min-width:16px;min-height:16px;width:16px;height:16px}}
@media(max-width:660px){main{padding:0 12px;max-width:520px}.game-layout{display:flex;gap:30px}.board-heading>div{display:flex}.board-heading h2{margin-top:0}.board-wrap{padding:6px}.board.dense{--gap:3px}.board-tools{font-size:12px}.board.dense .cell.flower .icon,.board.dense .cell.moth .icon{top:8%;width:38%;height:38%;min-width:16px;min-height:16px}.board.dense .cell small{bottom:2px}.pack-controls{max-width:350px}.collection .puzzle-choice{width:38px;height:38px}.collection nav{gap:8px}.intro{margin-bottom:24px}footer{font-size:10px}.board-heading h2{font-size:20px}}
@media(max-width:360px){.board.dense .cell.flower .icon,.board.dense .cell.moth .icon{top:1px;min-width:15px;min-height:15px;width:15px;height:15px}.board.dense .cell small{font-size:10px;line-height:10px;bottom:1px}.board-heading h2{font-size:19px}.difficulty{font-size:10px;padding:6px 7px}.collection .puzzle-choice{width:36px;height:36px}}
@media(min-width:851px){.board-tools button{display:none}} .board.zoomed.dense .cell.flower .icon,.board.zoomed.dense .cell.moth .icon{top:5px;width:22px;height:22px}.board.zoomed.dense .cell small{font-size:12px;line-height:13px;bottom:3px}

/* Optics keeps routes, targets and player notes visually distinct. */
.optics-controls{display:flex;gap:8px;margin:0 0 13px}.optics-controls[hidden],.beam-note[hidden]{display:none}.optics-controls button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:51px;border:1px solid var(--line);border-radius:7px;text-align:left;font-size:13px}.optics-controls button>span:last-child{display:flex;flex-direction:column;gap:3px}.optics-controls small{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.optics-controls button[aria-pressed=true]{border-color:#847752;background:#3d3724;box-shadow:inset 0 0 0 1px #00000033}.optics-controls button[data-tool=violet][aria-pressed=true]{border-color:#42494f;background:#2f243d;box-shadow:inset 0 0 0 1px #00000033}.optics-controls button[data-tool=mark][aria-pressed=true]{border-color:#42494f;background:#293038;box-shadow:inset 0 0 0 1px #00000033}.color-symbol{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700}.amber-symbol{background:#3d3624;color:#dcc9a8}.violet-symbol{background:#2e243d;color:#c1b5ce}.mark-symbol{background:#292f38;color:#a3a8ad;font-size:23px}.beam-note{font-size:12px;line-height:1.5;color:var(--muted);margin:10px 2px 0}.board{position:relative}.board.optical .cell{box-shadow:none;cursor:default;overflow:hidden}.board.optical .cell.socket{cursor:pointer;border:1px dashed #42494f;background:#212528}.board.optical .cell.socket:before{content:'';position:absolute;inset:18%;border:1px solid #42494f;border-radius:50%}.board.optical .cell.socket.lit{background:#3d3824}.board.optical .cell.floor{background:#2b3036;border-color:#42494f}.board.optical .cell.wall{background:#41464d;border-color:#42494f;color:#a3a8ad}.board.optical .cell.wall>span{font-size:26px}.board.optical .cell.mirror{background:#293137;border-color:#42494f;color:#a3a8ad}.mirror-line{font:normal 42px/1 Arial,sans-serif;position:relative;z-index:3;text-shadow:0 0 3px #00000033}.mirror-symbol{font-size:35px;line-height:30px;color:#a3a8ad}.board.optical .cell.violet-light{background:#2f243d;border-color:#42494f}.board.optical .cell.mixed-light{background:linear-gradient(135deg,#3d3824,#2f243d);border-color:#42494f}.board.optical .cell.socket.lamp.amber{background:#3d3724;border:1px solid #847852}.board.optical .cell.socket.lamp.violet{background:#30243d;border:1px solid #42494f;color:#c2b4d0}.board.optical .cell.lamp:before{display:none}.optical .lamp-letter{position:absolute;bottom:2px;right:4px;font-size:10px;font-weight:700;z-index:3}.board.optical .cell.flower{background:#212528;color:#a3a8ad;border-color:#42494f}.board.optical .cell.target-A{color:#e0cca3}.board.optical .cell.target-V{color:#a3a8ad}.board.optical .cell.target-D{color:#a3a8ad;background:linear-gradient(135deg,#3d3724,#2f243d)}.board.optical .cell.flower.lit{background:#343a27;border-color:#42494f}.board.optical .cell.target-D.lit{background:linear-gradient(135deg,#3d3824,#2f243d)}.board.optical .cell.target-A.lit{background:#3d3824}.board.optical .cell.target-V.lit{background:#2f243d}.board.optical .cell.flower .icon{top:24%;width:31%;height:31%;min-width:14px;min-height:14px;z-index:3}.board.optical .cell.moth .icon{z-index:3}.board.optical .cell .target-badge{position:absolute;top:2px;left:0;width:100%;font-size:9px;font-weight:700;line-height:10px;z-index:3}.board.optical .cell small{font-size:9px;line-height:11px;bottom:2px;z-index:3;white-space:nowrap}.amber-text{color:#ddcaa7}.violet-text{color:#a3a8ad}.pencil-mark{color:#a3a8ad;font-size:28px;line-height:1;z-index:3}.board.optical .cell.marked:before{opacity:.4}.beam-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;overflow:visible}.beam-overlay line{stroke:#dbc7a9;stroke-width:2.5;stroke-linecap:round;opacity:.66}.beam-overlay.violet line{stroke:#c2b2d1}.board.optical .cell.beam-source{outline:2px solid #bccdde;outline-offset:-2px}.board.optical .cell .icon,.board.optical .cell .plus{position:relative;z-index:3}.board.optical .cell.flower .icon,.board.optical .cell.moth .icon{position:absolute}.pack-controls button{font-size:12px;padding:7px 6px}.mirror-demo{padding:13px;background:#293038;border-radius:8px;text-align:center}.mirror-demo>span{font-size:28px;color:#dacaaa;letter-spacing:5px}.mirror-demo p{font-size:12px;margin:6px 0 0}.help-targets{font-size:14px;line-height:1.65;padding-left:20px;color:#a3a8ad}.help-targets li{margin:5px 0}
@media(max-width:850px) and (min-width:661px){.board.optical .cell small{font-size:8px;line-height:8px;bottom:1px}.board.optical .cell .target-badge{font-size:8px;top:1px;line-height:8px}.board.optical .cell.flower .icon{top:24%;min-width:11px;min-height:11px;width:11px;height:11px}.mirror-line{font-size:30px}.optics-controls{gap:4px}.optics-controls button{gap:5px;font-size:12px}.color-symbol{width:21px;height:21px}}
@media(max-width:400px){.board.optical .cell.flower .icon{top:25%;min-width:11px;min-height:11px;width:11px;height:11px}.board.optical .cell .target-badge{top:1px;font-size:8px;line-height:8px}.board.optical .cell small{bottom:1px;font-size:8px;line-height:9px}.optical .lamp-letter{font-size:9px;right:2px;bottom:0}.board.optical .cell.lamp .icon{min-width:16px;min-height:16px}.mirror-line{font-size:30px}.pencil-mark{font-size:22px}.optics-controls button{gap:6px;font-size:12px}.optics-controls small{font-size:10px}.color-symbol{width:23px;height:23px}}
.board.optical.zoomed .cell.flower .icon{top:24%;width:17px;height:17px}.board.optical.zoomed .cell .target-badge{font-size:10px;line-height:11px;top:2px}.board.optical.zoomed .cell small{font-size:10px;line-height:11px;bottom:2px}
.board.optical .cell.socket.violet-light{background:#2f243d;border-color:#42494f}.board.optical .cell.socket.mixed-light{background:linear-gradient(135deg,#3d3824,#2f243d);border-color:#42494f}.board.optical .cell.socket.lamp.amber{background:#3d3724}.board.optical .cell.socket.lamp.violet{background:#30243d}
@media(min-width:851px){.board.optical .cell small{font-size:11px;line-height:12px}.board.optical .cell .target-badge{font-size:10px;line-height:11px}}


/* Relax Games: shared night palette and clear interaction states. */
html,body{background:#17191b;color:#f2f3f4;color-scheme:dark}
select,option{color:#f2f3f4;background:#212528}
::selection{background:#42566b;color:#f2f3f4}
.intro h1 em:after{background:#51422a}.puzzle-choice.active,.primary{background:#bccdde;color:#17191b}.primary:hover{background:#d0dce7}dialog{background:#212528;color:#f2f3f4}dialog::backdrop{background:#0009}.cell.lit,.board.optical .cell.socket.lit,.board.optical .cell.target-A.lit,.example .lit{background:#443922;border-color:#8f794e}.cell.lamp,.board.optical .cell.socket.lamp.amber{background:#73582e;color:#f9e1a7;border-color:#c5a35d}.board.optical .cell.socket.lamp.violet{background:#59426f;color:#eddaff;border-color:#ab8bc4}.board.optical .cell.violet-light,.board.optical .cell.socket.violet-light,.board.optical .cell.target-V.lit{background:#3d304b;border-color:#86739c}.board.optical .cell.mixed-light,.board.optical .cell.socket.mixed-light,.board.optical .cell.target-D.lit{background:linear-gradient(135deg,#443922,#3d304b);border-color:#a591a5}.board.optical .cell.wall{background:#111416;border-color:#343b42;color:#73818e}.board.optical .cell.floor{background:#22282c}.board.optical .cell.mirror{background:#38434c;color:#c3d4e4}.beam-overlay line{stroke:#dab365;opacity:.9}.beam-overlay.violet line{stroke:#c397e5}.cell.conflict{background:#4b2c31!important;border-color:#e7a397!important;color:#f3b3b3}.pack-controls button[aria-pressed="true"]{background:#3a434a}.example .center{color:#17191b}
.board.optical .cell.socket,.board.optical .cell.socket:before{border-color:#77828b}
