:root{--paper:#f7f5ed;--ink:#243d38;--muted:#586b63;--line:#d9ddd1;--green:#31594a;--accent:#b75233}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,sans-serif}a{color:inherit}header,main,footer{max-width:1180px;margin:auto}header{display:flex;align-items:center;justify-content:space-between;padding:34px 32px;border-bottom:1px solid var(--line)}.brand{font-family:Georgia,serif;font-size:28px;letter-spacing:-1px;text-decoration:none}.brand span{display:block;font:9px Arial,sans-serif;letter-spacing:2px;margin-top:9px}.header-note{font-size:12px;color:var(--muted)}main{padding:0 32px}.intro{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;padding:72px 0 65px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:bold;color:var(--muted)}h1{font:normal clamp(46px,6vw,76px)/1.06 Georgia,serif;letter-spacing:-3px;margin:24px 0}p{line-height:1.65}.lede{color:var(--muted);font-size:17px}.text-link{display:inline-block;font-size:13px;text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:7px;margin-top:20px}.text-link span{margin-left:26px}.cover{height:335px;background:#dce5d9;border-radius:48% 48% 4px 4px;position:relative;overflow:hidden}.sun{width:70px;height:70px;border-radius:50%;background:#d69864;position:absolute;top:45px;right:75px}.horizon{position:absolute;top:185px;inset-inline:0;bottom:0;background:#8baea5}.island{position:absolute;width:270px;height:90px;left:10px;top:179px;background:#537463;border-radius:70% 90% 0 0;transform:rotate(-6deg)}.lighthouse{position:absolute;top:77px;left:110px;width:49px;height:140px;background:#f6f0d9;clip-path:polygon(25% 0,75% 0,100% 100%,0 100%);border-top:12px solid var(--ink)}.lighthouse:before{content:'';position:absolute;top:30px;left:0;width:100%;height:19px;background:#b75233}.lighthouse i{position:absolute;top:77px;left:21px;width:9px;height:18px;background:var(--ink);border-radius:6px 6px 0 0}.waves{position:absolute;inset:245px 0 0;background:repeating-linear-gradient(0deg,transparent 0 18px,#bfd0bc 19px 20px);transform:rotate(-5deg)}.cover-label{position:absolute;bottom:14px;left:0;right:0;text-align:center;letter-spacing:1.5px;font-size:8px}.section-label{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:22px 0}.section-label h2{font:normal 24px Georgia,serif;margin:0}.section-label>span{font-size:11px;color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.card{border:1px solid var(--line);border-radius:8px;overflow:hidden;text-decoration:none;transition:transform .2s,box-shadow .2s}.card:hover{transform:translateY(-4px);box-shadow:0 12px 25px #243d3810}.thumbnail{height:175px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.lantern-art{background:#304d46;gap:13px}.lantern-art span{color:#f0c67a;font-size:40px;text-shadow:0 0 20px #f0c67a66}.lantern-art span:nth-child(even){color:#709488;transform:translateY(-23px)}.shell-art{background:#eadcc5;gap:12px}.shell-art span{font:60px Georgia,serif;color:#97593f;background:#f7efdf;border-radius:20px;padding:5px 12px;transform:rotate(-12deg)}.shell-art span:nth-child(2){transform:rotate(12deg);color:#536e68}.tide-art{background:#d8e5e0}.tide-art div{position:absolute;width:110%;height:150px;top:85px;left:-5%;border-radius:50%;background:#6e9f98;transform:rotate(-12deg)}.card-copy{padding:23px}.card h3{font:normal 26px Georgia,serif;margin:15px 0 10px;display:flex;justify-content:space-between}.card h3 span{font:18px Arial,sans-serif}.card-copy>p:not(.eyebrow){font-size:14px;color:var(--muted);min-height:48px}.tags{display:flex;gap:8px;margin-top:25px}.tags span{border:1px solid var(--line);border-radius:30px;padding:6px 10px;font-size:10px}.note{display:flex;align-items:center;gap:22px;margin:45px 0;background:#eef0e6;padding:22px 28px;border-radius:6px}.note>span{font-size:38px;color:#7c8b60}.note p{margin:0;font-size:13px;color:var(--muted)}footer{display:flex;justify-content:space-between;padding:25px 32px 35px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}[hidden]{display:none!important}button{font:inherit;cursor:pointer}button:disabled{cursor:default}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:5px}.play-heading{text-align:center;margin:35px 0}.play-heading h1{font-size:50px;letter-spacing:-1.5px}.play-heading .lede{max-width:580px;margin:auto}.game-shell{max-width:650px;margin:0 auto 60px;border:1px solid var(--line);border-radius:12px;background:#eeefe5;padding:24px}.game-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.small-button,.primary{border:1px solid #8da194;border-radius:25px;padding:10px 18px;background:transparent;color:var(--ink)}.primary{background:var(--green);color:white;padding:14px 28px}.game-shell #status{text-align:center;min-height:52px;font-size:14px}#actions{text-align:center}.ring{position:relative;width:min(100%,370px);aspect-ratio:1;margin:35px auto;background:radial-gradient(circle,transparent 53%,#c7d2c1 54%,#c7d2c1 55%,transparent 56%)}.ring:after{content:'LET THE HARBOUR REST';position:absolute;top:48%;left:24%;right:24%;font-size:9px;letter-spacing:2px;text-align:center;pointer-events:none}.lantern{position:absolute;width:16%;aspect-ratio:1;transform:translate(-50%,-50%);border:2px solid #68877a;border-radius:50%;background:#49685d;color:#d3ddce;font-size:15px}.lantern.on{background:#efd494;border-color:#b3894c;color:#513c1b;box-shadow:0 0 22px #e9c78070}.memory{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:30px auto;max-width:420px}.shell{aspect-ratio:1;border:1px solid #b6bca8;background:#d4deca;border-radius:14px;font-size:35px;color:var(--ink)}.shell.revealed,.shell.matched{background:#f9f5e8}.shell.matched{border-color:#527960}.tide-track{height:110px;background:#cfddd2;border-radius:16px;margin:55px 0 30px;position:relative;overflow:hidden;border:1px solid #9eafa2}.target-zone{position:absolute;width:18%;left:41%;height:100%;background:#ede0b5;border-inline:2px dashed #8f7851}.tide-pointer{position:absolute;top:32px;width:20px;height:46px;background:#b75233;transform:translateX(-50%);border-radius:20px}.tide-track:after{content:'SAFE WATER';position:absolute;left:41%;width:18%;bottom:10px;text-align:center;font-size:8px;letter-spacing:1px}.pace{margin-top:14px;font-size:12px;color:var(--muted)}.pace input{accent-color:var(--green)}@media(max-width:760px){header,footer{padding:25px 20px}main{padding:0 20px}.intro{grid-template-columns:1fr;gap:30px;padding:40px 0}.intro h1{font-size:58px}.cover{height:270px;max-width:500px;width:100%}.cards{grid-template-columns:1fr}.thumbnail{height:170px}.card-copy>p:not(.eyebrow){min-height:0}.header-note{display:none}.section-label>span{font-size:9px}.section-label h2{font-size:21px}.note{padding:20px}.note br{display:none}footer{gap:15px;flex-wrap:wrap}.game-shell{padding:16px}.ring{margin:30px auto}.memory{gap:8px}.shell{font-size:28px}.play-heading h1{font-size:40px}.play-heading .lede{font-size:15px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Seaside collection: a more tactile board and a harbour for the timing game. */
.game-shell{background:linear-gradient(145deg,#f4f4e9,#e5ebdf);box-shadow:0 15px 45px #243d380c;border-color:#cbd4c2}
.game-bar{padding-bottom:17px;border-bottom:1px solid #cbd4c2}
.small-button:hover{background:#dfe7d8}.primary:hover:enabled{background:#224536;box-shadow:0 4px 14px #243d3826}.primary:active:enabled{transform:translateY(1px)}
.primary:disabled{opacity:.45;box-shadow:none}.primary{min-height:48px;touch-action:manipulation}
.ring{background:radial-gradient(circle at center,#91b0a522 0 30%,transparent 31% 52%,#93ab9670 53% 54%,transparent 55%);border-radius:50%;box-shadow:inset 0 0 60px #74948412}
.ring:before{content:'≋';position:absolute;left:0;right:0;top:33%;text-align:center;color:#849e8d;font:52px Georgia,serif;pointer-events:none}
.ring:after{top:53%;line-height:1.7}.lantern{box-shadow:inset 0 -5px 9px #122f292b,0 5px 10px #29463b18;border:3px solid #6e8c7a;background:radial-gradient(circle at 35% 28%,#668579,#34554b);transition:background .2s,box-shadow .2s}
.lantern.on{background:radial-gradient(circle at 35% 28%,#fff4cb,#e3b85e);box-shadow:0 0 24px #e9c78088,inset 0 -4px 8px #9d742224}
.shell{background:repeating-linear-gradient(45deg,transparent 0 9px,#9cae9018 9px 10px),linear-gradient(135deg,#dfe8d4,#c2d2b6);box-shadow:0 4px 0 #b5c6a6;transition:background .2s,transform .2s}
.shell:hover:enabled{transform:translateY(-2px)}.shell.revealed{background:linear-gradient(145deg,#fffaf0,#eee1c6)}.shell.matched{box-shadow:0 3px 0 #adc3a5;background:#ecf2e1;color:#486b48}
.tide-track{height:260px;margin:26px 0 20px;border-radius:16px;background:#b8d5cc;isolation:isolate;border:1px solid #9fb8a9}
.tide-track:after{content:'GOLDEN CHANNEL';left:38%;width:24%;bottom:14px;color:#47574b;font-size:9px;letter-spacing:1.2px;pointer-events:none;z-index:6}
.tide-sky{position:absolute;inset:0 0 42%;background:linear-gradient(#e9eddb,#d1e0d4)}
.tide-sun{position:absolute;width:49px;height:49px;border-radius:50%;background:#e1b678;left:17%;top:28px;box-shadow:0 0 45px #f8e3b77a}
.tide-cloud{position:absolute;right:16%;top:39px;width:65px;height:14px;border-radius:50px;background:#f7f5edb0}
.tide-cloud:before{content:'';position:absolute;width:28px;height:25px;left:12px;bottom:0;border-radius:50%;background:#f7f5edb0}
.tide-water{position:absolute;left:-15%;width:130%;height:180px;border-radius:45% 50% 0 0;pointer-events:none}
.tide-water-back{top:117px;background:#8bb7aa;transform:rotate(-4deg)}.tide-water-front{top:161px;background:linear-gradient(#5e9588,#477e73);transform:rotate(5deg)}
.tide-guide{position:absolute;inset:165px 4% auto;height:1px;background:#e3efdc66;z-index:3}
.target-zone{left:41%;width:18%;z-index:2;top:108px;height:152px;background:linear-gradient(#f3d59a08,#efce8175);border-inline:1px dashed #e4d0a0}
.target-beacon{position:absolute;width:8px;height:85px;bottom:37px;left:calc(50% - 4px);background:#efe6ce;border-radius:3px;box-shadow:2px 0 0 #244c4220}
.target-beacon:before{content:'';position:absolute;top:-18px;left:-9px;width:26px;height:26px;transform:rotate(45deg);border:3px solid #be9450;background:#f7db95}
.tide-pointer{top:129px;height:68px;width:36px;background:none;border-radius:0;z-index:5;pointer-events:none;will-change:left}
.buoy-top{position:absolute;width:5px;height:29px;background:#744830;top:0;left:16px}.buoy-top:after{content:'';position:absolute;top:0;left:5px;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:15px solid #b54e34}
.buoy-body{position:absolute;top:23px;left:5px;width:27px;height:30px;border-radius:6px 6px 12px 12px;background:linear-gradient(#e5885d 0 35%,#fbedd3 35% 55%,#b75135 55%);border:1px solid #743f2c;box-shadow:inset -5px 0 0 #693b2820}
.buoy-ripple{position:absolute;bottom:9px;left:-8px;width:52px;height:10px;border:1px solid #d9e7d7aa;border-radius:50%;z-index:-1}
.tide-end{position:absolute;bottom:16px;font-size:9px;letter-spacing:2px;color:#e5e9d5;z-index:4}.tide-end-left{left:15px}.tide-end-right{right:15px}
.tide-track.caught{border-color:#9a812f;box-shadow:0 0 0 3px #e2c77455}.tide-track.missed{border-color:#9eb5aa}
.catch-history{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);gap:10px;padding:0;margin:0 0 14px;counter-reset:catch}
.catch-history li{counter-increment:catch;border:1px solid #c5d0bf;border-radius:10px;background:#f8f7ef;padding:10px 0;font:23px Georgia,serif;text-align:center;color:#7e8e7c}
.catch-history li:before{content:'CATCH ' counter(catch);display:block;font:8px Arial,sans-serif;letter-spacing:1.4px;margin-bottom:6px;color:#63755f}.catch-history li.scored{background:#e5edd5;border-color:#99b086;color:#355431}.catch-history li.miss{color:#a3583e}
.tide-controls{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.tide-controls button{min-width:170px}.catch-button{background:#ad4f35}.catch-button:hover:enabled{background:#8c3c27}
.pace{display:inline-flex;align-items:center;gap:10px;margin-top:21px;background:#f6f7ed;border:1px solid #c8d3bf;border-radius:30px;padding:10px 16px;cursor:pointer;min-height:44px;font-size:13px;color:#3c5649;touch-action:manipulation}
.pace input{width:20px;height:20px;margin:0;cursor:pointer}.pace:focus-within{outline:3px solid #b75233;outline-offset:3px}
@media(max-width:480px){.tide-track{height:235px}.tide-sky{bottom:38%}.tide-water-back{top:106px}.tide-water-front{top:147px}.tide-pointer{top:115px}.target-zone{top:97px;height:138px}.tide-guide{top:151px}.tide-controls{gap:9px}.tide-controls button{min-width:0;flex:1;padding:12px 8px;font-size:13px}.catch-history{gap:6px}.catch-history li:before{font-size:7px;letter-spacing:.6px}}

/* Illustrated collection, volume 01. */
body{background:radial-gradient(ellipse at 85% 12%,#e8ecd955,transparent 48%),var(--paper)}
.intro{gap:65px;padding-top:65px}.cover{height:370px;box-shadow:0 18px 40px #27473b10,inset 0 0 0 1px #24473808;background:linear-gradient(160deg,#ecebd7,#d8e5d6)}
.cover .sun{box-shadow:0 0 0 15px #dfb57b12,0 0 0 30px #dfb57b08}.cover .horizon{top:210px;background:linear-gradient(#98b8ac,#709f95)}.cover .island{top:204px}.cover .lighthouse{top:102px}.cover .waves{inset:270px 0 0;opacity:.5}
.cover-boat{position:absolute;right:65px;top:261px;width:51px;height:14px;background:#3a6054;border-radius:0 0 45px 45px;transform:rotate(-5deg)}.cover-boat:before{content:'';position:absolute;bottom:14px;left:24px;width:2px;height:47px;background:#4d6a57}.cover-boat:after{content:'';position:absolute;bottom:18px;left:4px;border-right:19px solid #f8f1dc;border-top:38px solid transparent}
.bird{position:absolute;width:14px;height:7px;border-top:2px solid #648270;border-radius:50%;transform:rotate(8deg)}.bird:after{content:'';position:absolute;left:12px;top:-2px;width:14px;height:7px;border-top:2px solid #648270;border-radius:50%;transform:rotate(-15deg)}.bird-one{top:86px;left:48%}.bird-two{top:106px;left:55%;transform:scale(.7)}.shoreline{position:absolute;left:-25px;bottom:0;width:210px;height:85px;background:#c9d0aa;border-radius:0 90% 0 0;transform:rotate(-7deg)}
.cover-label{bottom:17px;z-index:2;color:#284d42;font-weight:bold}.card{background:#fffdf670;border-color:#d4d9c8;border-radius:12px}.thumbnail{height:210px}.card-copy{padding:25px}.card h3{font-size:28px}.card h3>span{width:28px;height:28px;border-radius:50%;background:#e9eddf;display:flex;align-items:center;justify-content:center;font-size:14px}.tags{align-items:center}.play-card{margin-left:auto;font-size:11px;font-weight:normal;color:#355747;white-space:nowrap}.card:hover .play-card{text-decoration:underline}.art-caption{position:absolute!important;bottom:15px;left:0!important;right:0;top:auto!important;font:8px Arial,sans-serif!important;letter-spacing:1.8px;text-align:center;transform:none!important;background:none!important;padding:0!important;border-radius:0!important;color:#e1e6cb!important;z-index:4}
.lantern-art{background:radial-gradient(circle at 15% 20%,#527367,#203f38);gap:35px}.mini-moon{position:absolute;right:38px;top:25px;width:28px;height:28px;background:#d7dbb4;border-radius:50%}.lantern-string{position:absolute;left:-10px;right:-10px;top:55px;height:40px;border-bottom:1px solid #a2b79388;border-radius:0 0 50% 50%}.mini-lantern{position:relative;top:2px;width:31px;height:43px;display:block;border:4px solid #a18a55;border-radius:5px;background:linear-gradient(90deg,#d9b86a,#fff0ba,#d9b86a);box-shadow:0 0 25px #e3c17455}.mini-lantern:before{content:'';position:absolute;top:-17px;left:4px;width:15px;height:12px;border:2px solid #a18a55;border-radius:50% 50% 0 0}.mini-lantern.dim{top:12px;background:#486858;box-shadow:none;border-color:#708a67}.mini-harbour{position:absolute;bottom:0;left:0;right:0;height:45px;background:repeating-linear-gradient(0deg,#63907d22 0 10px,transparent 10px 11px)}
.shell-art{background:radial-gradient(circle at 40% 25%,#f3e6cc,#dfc9a6);gap:0}.find-card{width:81px;height:98px;background:#faf5e8;border:1px solid #d8c6a1;border-radius:10px;box-shadow:0 7px 10px #80674718;display:grid;place-items:center;transform:rotate(-14deg)}.find-card:nth-child(2){transform:rotate(9deg) translateY(-12px);z-index:2}.find-card:nth-child(3){transform:rotate(20deg) translateY(4px)}.find-card img{width:72px;height:72px}.shell-art .art-caption{color:#806747!important}
.tide-art{background:linear-gradient(#e5ecd8,#c3daca)}.tide-art .mini-tide-sun{top:25px;left:45px;width:38px;height:38px;background:#d4ac6e;border-radius:50%;transform:none}.tide-art .mini-water{top:113px;left:-10%;width:120%;height:125px;border-radius:50% 40% 0 0;background:#739f92;transform:rotate(-6deg)}.tide-art .mini-channel{top:88px;left:49%;width:36px;height:130px;background:linear-gradient(transparent,#ebd29388);transform:none;border-radius:0;border-inline:1px dashed #dccda0}.tide-art .mini-buoy{top:125px;left:37%;width:18px;height:25px;border-radius:4px 4px 9px 9px;transform:rotate(4deg);background:linear-gradient(#d97b52 0 35%,#f4ead1 35% 55%,#a74f36 55%)}.mini-buoy:before{content:'';position:absolute;top:-20px;left:7px;width:2px;height:20px;background:#78503a}.mini-buoy:after{content:'';position:absolute;top:-20px;left:9px;border-left:12px solid #b65238;border-top:5px solid transparent;border-bottom:5px solid transparent}
#play[data-game=lanterns] .game-shell{background:linear-gradient(150deg,#294c43,#193a33);border-color:#3d5f4b;color:#e6ead6}#play[data-game=lanterns] .game-bar{border-color:#55725c}#play[data-game=lanterns] .small-button{color:#e6ead6;border-color:#72866b}#play[data-game=lanterns] .small-button:hover{background:#49684f}
.ring{width:min(100%,420px);background:radial-gradient(circle,transparent 0 52%,#adc09344 53% 53.6%,transparent 54%);box-shadow:none}.ring:before,.ring:after{content:none}
.harbour-centre{position:absolute;inset:28%;border-radius:50%;background:radial-gradient(ellipse at center,#5a807144,transparent 70%);pointer-events:none;text-align:center}.harbour-moon{position:absolute;left:63%;top:5%;width:22px;height:22px;border-radius:50%;background:#dce0b8;box-shadow:0 0 30px #dce0b811}.harbour-tower{position:absolute;top:14%;left:42%;width:28px;height:66px;clip-path:polygon(23% 0,77% 0,100% 100%,0 100%);background:linear-gradient(#c4b485 0 12%,#efe6c7 12% 33%,#a8664a 33% 49%,#e1d9b9 49%)}.harbour-waves{position:absolute;top:47%;left:0;right:0;color:#96b4a0;font:40px Georgia,serif}.harbour-caption{position:absolute;top:77%;left:0;right:0;font:9px/1.6 Arial,sans-serif;letter-spacing:2px;color:#bccbab}
.lantern,.lantern.on{width:18%;border:0;background:transparent;box-shadow:none;border-radius:12px;color:#c3ccae}.lantern-handle{position:absolute;top:8%;left:39%;width:22%;height:18%;border:2px solid #7d9270;border-radius:50% 50% 0 0}.lantern-glass{position:absolute;top:23%;left:24%;width:52%;height:49%;background:linear-gradient(90deg,#36594c,#52715d,#36594c);border:3px solid #7d9270;border-radius:5px;box-shadow:0 5px 10px #112d2744}.lantern-glass:after{content:'';position:absolute;top:0;bottom:0;left:47%;width:2px;background:#7d9270}.lantern-glass i{position:absolute;bottom:10%;left:37%;width:26%;height:26%;border-radius:50% 50% 30% 30%;background:#678361}.lantern.on .lantern-glass{border-color:#b99a5d;background:linear-gradient(90deg,#dfb669,#fff1bb,#dfb669);box-shadow:0 0 30px #f3d08b44,0 5px 10px #112d2744}.lantern.on .lantern-glass:after{background:#b99a5d}.lantern.on .lantern-handle{border-color:#b99a5d}.lantern.on .lantern-glass i{background:#fff8d0}.lantern-number{position:absolute;top:79%;left:0;right:0;font-size:11px}.lantern:hover:enabled .lantern-glass{transform:translateY(-2px)}.lantern:disabled{opacity:.7}
#play[data-game=shells] .game-shell{background:radial-gradient(ellipse at top,#f7ecd5,#e8d7b5);border-color:#d9c59e}#play[data-game=shells] .game-bar{border-color:#d9c59e}.memory{max-width:490px;gap:14px}.shell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;border:1px solid #a7b9a0;border-radius:12px;padding:4px}.card-back{position:absolute;inset:8px;border:1px solid #9eb29799;border-radius:7px;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#64866b}.card-back>span{font:36px Georgia,serif}.card-back small{font:7px Arial,sans-serif;letter-spacing:1.2px;margin-top:4px}.shell img{width:78%;height:72%;object-fit:contain}.find-name{font:9px Arial,sans-serif;letter-spacing:.5px;text-transform:uppercase;color:#675c45}.shell.matched:after{content:'✓';position:absolute;top:5px;right:7px;font-size:12px;color:#567542}.shell.revealed,.shell.matched{box-shadow:0 3px 0 #cbb88e;border-color:#cab790}
.tide-track{cursor:pointer;touch-action:manipulation;user-select:none}.tide-track:focus-visible{outline:3px solid var(--accent);outline-offset:5px}.scene-hint{position:absolute;top:14px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:9px 14px;border:1px solid #f4f3de99;border-radius:30px;background:#f6f5e8da;font-size:12px;color:#31564b;z-index:8;pointer-events:none;box-shadow:0 3px 10px #31564b08}.tide-track.running .scene-hint{background:#30584deb;color:#fff5d9;border-color:#789987}.tide-track>*{pointer-events:none}
@media(max-width:760px){.cover{height:310px}.cover .horizon{top:180px}.cover .island{top:174px}.cover .lighthouse{top:72px}.cover-boat{top:230px;right:65px}.cover .waves{inset:240px 0 0}.thumbnail{height:210px}.intro{gap:35px;padding-top:40px}.memory{gap:10px}.harbour-tower{height:56px}.harbour-caption{font-size:8px;letter-spacing:1.3px}}
@media(max-width:400px){.card-back{inset:5px}.card-back small{font-size:6px;letter-spacing:.5px}.find-name{font-size:7px}.shell{border-radius:9px}.harbour-tower{height:44px}.harbour-waves{font-size:30px}.harbour-caption{font-size:7px}.lantern-number{font-size:10px}.scene-hint{font-size:10px;padding:8px 11px}.cover-boat{right:40px}.memory{gap:8px}}

/* Small refinements within the established flat coastal style. */
.brand{letter-spacing:-.8px;line-height:1.1}.brand span{line-height:1.5}
.card-copy .eyebrow{line-height:1.6}.card-copy>p:not(.eyebrow){line-height:1.7}
.card:hover{box-shadow:0 8px 20px #243d380c;transform:translateY(-3px)}
.small-button{min-height:44px;touch-action:manipulation}
.primary:focus-visible,.small-button:focus-visible{outline:3px solid #b75233;outline-offset:4px}
.art-caption{font-size:9px!important;line-height:1.4!important;text-shadow:none}
.scene-hint{line-height:1.4}.catch-history li{font-variant-numeric:tabular-nums}
#status{line-height:1.65}.find-name{line-height:1.4}
@media(max-width:400px){.art-caption{font-size:8px!important;letter-spacing:1.1px}}

/* A living window: existing flat shapes, small details, slow motion. */
.hero-scene{position:relative;min-width:0}.hero-scene .cover{width:100%;max-width:none;isolation:isolate}
.scene-toggle{position:absolute;right:0;bottom:-29px;border:0;background:none;color:#63796b;font-size:10px;padding:7px 0 7px 12px;min-height:28px;cursor:pointer}
.scene-toggle:hover{color:#243d38;text-decoration:underline}.scene-toggle:before{content:'Ⅱ';display:inline-block;margin-right:6px;font-size:9px}.scene-paused .scene-toggle:before{content:'▷'}
.cover .sun{z-index:1}.cover .horizon{z-index:1}.distant-coast{position:absolute;left:0;top:calc(56.75% - 30px);height:32px;width:100%;fill:#b2c5ad;opacity:.65;z-index:1}
.cover .island{z-index:3}.cover .lighthouse{z-index:4}.cover .lighthouse:after{content:'';position:absolute;top:0;right:0;width:11px;height:100%;background:#d3d8bf66;pointer-events:none}
.tower-window{position:absolute;top:52px;left:22px;width:6px;height:10px;background:#526c56;border-radius:4px 4px 0 0}.tower-highlight{position:absolute;top:8px;bottom:10px;left:11px;width:3px;background:#fff9e640;transform:rotate(3deg)}
.lantern-room{position:absolute;left:122px;top:87px;width:25px;height:20px;background:#f1e3b7;border:3px solid #304c40;border-bottom-width:4px;z-index:5}
.lantern-room:before{content:'';position:absolute;left:-5px;right:-5px;top:-8px;height:6px;background:#304c40;clip-path:polygon(50% 0,100% 100%,0 100%)}.lantern-room i{position:absolute;inset:0 7px;border-inline:1px solid #6e7b54;background:#e9cb88}
.scene-cloud{position:absolute;width:64px;height:11px;border-radius:50px;background:#f9f7e578;z-index:0;animation:coast-cloud-drift 58s ease-in-out infinite}
.scene-cloud:before{content:'';position:absolute;bottom:0;left:12px;width:24px;height:19px;border-radius:50%;background:#f9f7e578}.cloud-one{top:65px;left:23%;animation-delay:-14s}.cloud-two{top:132px;right:12%;width:47px;height:8px;opacity:.65;animation-duration:72s;animation-delay:-39s}.cloud-two:before{width:18px;height:14px;left:9px}
.cover .waves{inset:calc(56.75% + 25px) -8% 10px;background:none;transform:none;opacity:1;z-index:2;pointer-events:none}
.water-lines{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#d9e2c5;stroke-width:1;stroke-linecap:round;opacity:.42}
.water-lines-back{animation:coast-water-back 18s ease-in-out infinite}.water-lines-front{top:20%;height:80%;opacity:.52;animation:coast-water-front 13s ease-in-out infinite}
.cover-boat{z-index:4;transform-origin:50% 80%;animation:coast-boat-bob 8s ease-in-out infinite}
.cover-boat:before{background:#6a7961}.cover-boat:after{filter:none}
.boat-wake{position:absolute;right:54px;top:281px;width:70px;height:7px;border-bottom:1px solid #d8e2c399;border-radius:50%;z-index:3;animation:coast-wake 8s ease-in-out infinite}
.bird{z-index:2;animation:coast-bird-glide 32s ease-in-out infinite}.bird-two{animation-name:coast-bird-glide-small;animation-duration:39s;animation-delay:-11s}
.shoreline{z-index:5}.shore-grass{position:absolute;bottom:28px;left:31px;width:2px;height:21px;background:#81946b;z-index:6;border-radius:2px;transform-origin:bottom;animation:coast-grass 7s ease-in-out infinite}
.shore-grass:before,.shore-grass:after{content:'';position:absolute;bottom:0;width:2px;height:16px;background:#81946b;transform-origin:bottom;border-radius:2px}.shore-grass:before{transform:rotate(-25deg)}.shore-grass:after{transform:rotate(28deg);height:13px}.grass-two{left:60px;bottom:23px;height:16px;opacity:.8;animation-delay:-3s}
.shore-pebble{position:absolute;bottom:15px;left:19px;width:12px;height:6px;border-radius:65% 50% 40% 50%;background:#9dae86;z-index:6;transform:rotate(-9deg)}.pebble-two{left:83px;bottom:18px;width:9px;height:5px;background:#b3be94}
.cover-label{z-index:7}
@keyframes coast-water-back{0%,100%{transform:translateX(-5px) translateY(0)}50%{transform:translateX(6px) translateY(2px)}}
@keyframes coast-water-front{0%,100%{transform:translateX(6px) translateY(0)}50%{transform:translateX(-6px) translateY(3px)}}
@keyframes coast-boat-bob{0%,100%{transform:translateY(0) rotate(-5deg)}35%{transform:translateY(-3px) rotate(-3.5deg)}70%{transform:translateY(1px) rotate(-6deg)}}
@keyframes coast-wake{0%,100%{transform:scaleX(.9);opacity:.6}50%{transform:scaleX(1.08);opacity:.85}}
@keyframes coast-cloud-drift{0%,100%{transform:translateX(-9px)}50%{transform:translateX(13px)}}
@keyframes coast-bird-glide{0%,100%{transform:translate(0,0) rotate(8deg)}50%{transform:translate(16px,-5px) rotate(3deg)}}
@keyframes coast-bird-glide-small{0%,100%{transform:translate(0,0) scale(.7)}50%{transform:translate(-12px,4px) scale(.7)}}
@keyframes coast-grass{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(4deg)}}
.hero-scene.scene-paused .cover *{animation-play-state:paused!important}
@media(max-width:760px){.lantern-room{top:57px}.boat-wake{top:250px}.distant-coast{top:calc(58.06% - 30px)}.cover .waves{top:calc(58.06% + 25px)}.hero-scene{margin-bottom:16px}}
@media(max-width:400px){.boat-wake{right:29px}}
@media(prefers-reduced-motion:reduce){.hero-scene .cover *{animation:none!important}.scene-toggle{display:none}}

/* Tactile play and a small celebration at the end of every game. */
.lantern-glass{transition:box-shadow .25s ease,border-color .25s ease}.ring.solved .harbour-centre{box-shadow:0 0 28px #cfda8c18;transition:box-shadow .8s}.ring.solved .harbour-caption{color:#e6e9c4}
.shell{perspective:700px;overflow:visible;padding:0;background:transparent!important;transition:border-color .25s,box-shadow .25s,transform .15s}
.shell-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .38s cubic-bezier(.2,.7,.3,1);border-radius:11px}
.shell.revealed .shell-inner{transform:rotateY(180deg)}
.shell-back,.shell-front{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;align-items:center;justify-content:center;border-radius:11px;overflow:hidden}
.shell-back{background:repeating-linear-gradient(45deg,transparent 0 9px,#9cae9018 9px 10px),linear-gradient(135deg,#dfe8d4,#c2d2b6)}
.shell-front{transform:rotateY(180deg);flex-direction:column;background:linear-gradient(145deg,#fffaf0,#eee1c6)}.shell.matched .shell-front{background:#edf2df}.shell.matched .shell-front img{animation:pair-settle .35s ease-out}.shell.matched:after{z-index:2}
@keyframes pair-settle{0%{transform:translateY(-3px) scale(1.04)}100%{transform:translateY(0) scale(1)}}
.catch-feedback{position:absolute;left:50%;bottom:44px;transform:translateX(-50%);background:#f7f3e7ee;color:#73513c;border:1px solid #d8cbb0;padding:7px 12px;border-radius:20px;z-index:7;white-space:nowrap;font-size:11px;animation:catch-caption .25s ease-out;box-shadow:0 2px 6px #24453710}
.catch-feedback.catch-success{color:#365741;background:#edf2deee;border-color:#b8c79f}
.catch-ripple{position:absolute;top:175px;width:35px;height:10px;border:1px solid #eef2de;z-index:5;border-radius:50%;transform:translateX(-50%);animation:catch-water .75s ease-out both;pointer-events:none}
@keyframes catch-water{from{transform:translateX(-50%) scale(.6);opacity:.9}to{transform:translateX(-50%) scale(2.4);opacity:0}}
@keyframes catch-caption{from{translate:0 4px;opacity:0}to{translate:0 0;opacity:1}}
.reward-panel{margin:24px 0 0;padding:32px 22px 24px;border:1px solid #bdc9ae;border-radius:16px;background:#f8f7ee;color:#29473c;text-align:center;animation:reward-arrive .45s ease-out}
.reward-medallion{position:relative;width:90px;height:90px;margin:0 auto 12px;background:#e7ecd7;border:1px solid #bfcba9;border-radius:50%;display:grid;place-items:center;box-shadow:0 0 0 6px #e7ecd744}
.reward-medallion img{width:69px;height:69px;object-fit:contain}.reward-lanterns img{width:53px;height:53px;border-radius:13px}.reward-wave{font:52px Georgia,serif;color:#5d8a79;margin-top:17px}.reward-sun{position:absolute;width:21px;height:21px;background:#d5af6c;border-radius:50%;top:17px;left:35px}
.reward-tier-3 .reward-medallion{background:#efe4bf;border-color:#ccb578;box-shadow:0 0 0 6px #e2ca8b22}
.reward-stars{letter-spacing:7px;font-size:20px;color:#a58a4e;margin:8px 0 12px;line-height:1}
.reward-panel h2{font:normal clamp(27px,4vw,35px)/1.15 Georgia,serif;margin:12px 0;color:#29473c;letter-spacing:-.5px}
.reward-message{max-width:380px;font-size:14px;color:#5f715e;margin:12px auto 20px}
.reward-result{display:flex;justify-content:center;align-items:baseline;gap:10px;margin:10px auto 18px}.reward-result strong{font:normal 46px Georgia,serif}.reward-result span{font-size:12px;color:#66765c}
.reward-best{font-size:13px;color:#355d43}.reward-goal{font-size:12px;color:#6d755f;border-top:1px solid #d6ddc7;padding-top:16px;margin:20px 0}
.reward-choices{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.reward-choices a{display:inline-flex;align-items:center;text-decoration:none;font-size:13px}.reward-choices a:hover{background:#e7edda}
.reward-back{display:inline-block;margin:22px 0 6px;font-size:12px;color:#5c735f;text-underline-offset:4px}.reward-storage{font-size:10px!important;line-height:1.5;color:#75806b;margin:10px 0 0}
#play[data-game=lanterns] .reward-panel{background:#edf0df;border-color:#7c9269}
@keyframes reward-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:480px){.reward-panel{padding:25px 16px 20px}.reward-choices{gap:10px}.reward-choices .primary{padding:12px 22px}.catch-feedback{font-size:10px;max-width:95%}.catch-ripple{top:161px}.reward-result strong{font-size:40px}}
@media(prefers-reduced-motion:reduce){.shell-inner{transition:none}.shell.matched .shell-front img,.catch-feedback,.catch-ripple,.reward-panel{animation:none}.catch-ripple{display:none}.lantern-glass{transition:none}}
#play[data-game=lanterns] .reward-panel .small-button{color:#29473c;border-color:#97ab88}

/* The collection cards are small windows into the same coastal world. */
.card-preview{display:block;background:#e2e8d2;isolation:isolate}
.preview-illustration{display:block;width:100%;height:100%;color:#b7cbb2}
.card-preview .art-caption{bottom:13px;font-size:8px!important;letter-spacing:1.4px;line-height:1.4!important;z-index:2}
.preview-finds .art-caption{color:#806747!important}.preview-tide .art-caption{color:#f0efd6!important}
.preview-night .preview-ripples{color:#98b49c}.preview-tide .preview-ripples{color:#d9e2c5}
.preview-lamp-swing,.preview-find,.preview-buoy-bob,.preview-ripples,.preview-cloud{transform-box:fill-box;transform-origin:center}
.preview-lamp-swing{transform-origin:50% 0%;animation:card-lamp-sway 7s ease-in-out infinite;animation-play-state:paused}.swing-second{animation-delay:-2.2s}.swing-third{animation-delay:-4s}
.preview-buoy-bob{animation:card-buoy-bob 8s ease-in-out infinite;animation-play-state:paused}
.card-preview .preview-ripples{animation:card-water-drift 16s ease-in-out infinite;animation-play-state:paused}.preview-cloud{animation:card-cloud-drift 40s ease-in-out infinite;animation-play-state:paused}
.preview-find{transition:transform .35s ease}.card:hover .preview-find,.card:focus-visible .preview-find{transform:translateY(-2px)}.card:hover .find-second,.card:focus-visible .find-second{transform:translateY(-4px)}
.card:hover .card-preview *,.card:focus-visible .card-preview *{animation-play-state:running}
@keyframes card-lamp-sway{0%,100%{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}
@keyframes card-buoy-bob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-2px) rotate(1deg)}}
@keyframes card-water-drift{0%,100%{transform:translateX(-3px)}50%{transform:translateX(4px)}}
@keyframes card-cloud-drift{0%,100%{transform:translateX(0)}50%{transform:translateX(8px)}}
@media(prefers-reduced-motion:reduce){.card-preview *{animation:none!important;transition:none!important}.card:hover .preview-find,.card:focus-visible .preview-find{transform:none}}

/* Deliberate coastline silhouettes, with turf, cliff planes and a sandy edge. */
.cover .distant-coast{height:28px;top:calc(56.75% - 26px);opacity:.7;fill:#b2c5ad}
.hero-headland{position:absolute;left:0;top:calc(56.75% - 16px);width:300px;height:126px;z-index:3;overflow:visible}
.cliff-face{fill:#486958}.headland-turf{fill:#62816a}.cliff-shelf{fill:none;stroke:#779079;stroke-width:2;stroke-linecap:round;opacity:.6}.cliff-seam{fill:none;stroke:#345746;stroke-width:1.4;opacity:.35}.headland-foam{fill:none;stroke:#bacdb4;stroke-width:1.2;stroke-linecap:round;opacity:.7}
.foreground-shore{position:absolute;left:-9px;bottom:-1px;width:235px;height:106px;z-index:5}.shore-sand{fill:#e0dbb5}.shore-turf{fill:#c9d0aa}.shore-contour{fill:none;stroke:#b1bf95;stroke-width:1;stroke-linecap:round;opacity:.55}.shore-stone{fill:#a9b992}
@media(max-width:760px){.cover .distant-coast{top:calc(58.06% - 26px)}.hero-headland{top:calc(58.06% - 16px);width:290px;height:119px}.foreground-shore{width:225px;height:99px}}
@media(max-width:400px){.hero-headland{width:245px;height:108px}.foreground-shore{width:190px;height:91px}}
