:root{--paper:#f5f2ed;--white:#fffcf8;--ink:#344a50;--muted:#82908f;--teal:#347d7e;--teal-dark:#28696c;--coral:#e68170;--coral-dark:#c96657;--gold:#eabd63;--line:#e5e5df;--lavender:#e8e3f2;--shadow:0 12px 35px #4c696614;--font:ui-rounded,"Avenir Next","Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html{min-width:300px;background:var(--paper);scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.5;background:radial-gradient(ellipse at 10% 0,#eceee5 0,transparent 42%),radial-gradient(ellipse at 100% 85%,#eee7ed 0,transparent 35%),var(--paper);min-height:100vh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0;background:transparent}a{color:inherit;text-decoration:none}button:disabled{cursor:default;opacity:.55}button:focus-visible,a:focus-visible{outline:3px solid #ba96e3;outline-offset:4px}h1,h2,h3,p{margin:0}svg{display:inline-block;vertical-align:middle}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.icon{width:22px;height:22px;flex-shrink:0}button{min-height:44px}button:not(.cell){touch-action:manipulation}.topbar{height:100px;max-width:1350px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 35px;gap:22px}.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}.brand-emblem{font-size:49px;line-height:1;color:#bd9970;transform:rotate(12deg);font-family:Georgia,serif}.brand-name{font-family:Georgia,"Times New Roman",serif;font-size:33px;letter-spacing:-1.6px;display:block;line-height:1.05;color:#355c5b}.brand-dot{color:var(--coral)}.brand-tag{display:block;font-size:7.8px;font-weight:700;letter-spacing:2.4px;margin:7px 0 0 1px;color:#829792}.view-tabs{display:flex;background:#e8eae3;border:1px solid #dfe3da;border-radius:30px;padding:5px;gap:2px}.view-tabs button{min-width:99px;padding:9px 17px;border-radius:25px;font-size:12px;font-weight:650;white-space:nowrap;transition:background .2s,box-shadow .2s;color:#81928b}.view-tabs button span{font-size:16px;margin-right:5px}.view-tabs button:hover{color:var(--teal)}body.view-island [data-view=island],body.view-puzzle [data-view=puzzle],body.view-journal [data-view=journal]{background:var(--white);color:var(--teal-dark);box-shadow:0 2px 6px #415a4920}.header-tools{display:flex;gap:10px;align-items:center}.star-wallet{display:flex;align-items:center;gap:8px;height:38px;padding:0 16px 0 10px;background:#fffaf0;border:1px solid #e6ddcb;border-radius:22px;min-width:71px;font-weight:750;font-size:15px}.star-wallet .icon{width:24px;height:24px}.icon-button{display:grid;place-items:center;width:38px;height:38px;min-height:38px;border:1px solid #dee2dc;border-radius:50%;color:#7d918c;background:#f9f8f3;transition:transform .2s,background .2s}.icon-button:hover{background:white;transform:translateY(-1px)}.icon-button[aria-pressed=true]{color:#a294a0;background:#ece7eb}.game-layout{max-width:1350px;padding:12px 35px 35px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.23fr) minmax(0,1fr);gap:30px;align-items:start}.island-heading{display:flex;align-items:center;justify-content:space-between;min-height:105px;margin:0 0 17px}.eyebrow{font-size:9px;font-weight:800;letter-spacing:1.8px;color:#78918a;line-height:1.5;display:flex;align-items:center;gap:8px}.chapter-line{height:1px;width:20px;background:var(--coral)}h1{font-family:Georgia,"Times New Roman",serif;font-size:38px;line-height:1.15;font-weight:400;letter-spacing:-1.5px;margin:12px 0 9px;color:#355954}h1 span{color:var(--coral)}.intro-text{font-size:12px;color:#82958d;letter-spacing:.1px}.chapter-stamp{border:1px solid #d6ddd3;border-radius:50%;width:60px;height:60px;display:flex;align-items:center;justify-content:center;flex-direction:column;font:26px Georgia,serif;color:#9caaa0;margin-left:10px;flex-shrink:0;position:relative}.chapter-stamp:before{content:"";position:absolute;inset:4px;border:1px dashed #d7ded4;border-radius:50%}.chapter-stamp span{font:6px var(--font);letter-spacing:2px;margin-left:2px}.world-card{border-radius:19px;box-shadow:var(--shadow);background:var(--white);overflow:hidden;border:1px solid #e3e5dd}.world{position:relative;aspect-ratio:3/2;isolation:isolate;background:#286b77;overflow:hidden}.world-base{display:block;width:100%;height:100%;object-fit:cover;filter:grayscale(.75) brightness(.60) saturate(.5);transition:filter 1.2s}.world:after{content:"";position:absolute;inset:50% 0 0;pointer-events:none;background:linear-gradient(transparent,#173a4b70);z-index:3}.world #worldLayers,.world #worldPins,#worldGlow{position:absolute;inset:0;pointer-events:none}.world #worldLayers img,.world #worldLayers .world-zone{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity 1s,filter 1s}.world #worldPins{z-index:5}.world #worldPins button{pointer-events:auto}.world-pin{padding:0;line-height:0;position:absolute;transform:translate(-50%,-50%);width:31px;height:31px;min-height:31px;border-radius:50%;background:#fffaf0;border:2px solid #dbc083;box-shadow:0 3px 10px #183b6550;display:grid;place-items:center;color:#ad955f}.world-pin.active,.world-pin.done{background:#fff1bd;border-color:#ffdf8d;box-shadow:0 0 18px #ffeab599}.world-pin .icon{display:block;width:18px;height:18px}.world-pin .pin-number{font-size:11px;font-weight:800}.world-pin.done{color:#608b71}.world-pin.locked{background:#f0ede4c9;color:#718783;border-color:#d9ddcf}.world-caption{position:absolute;bottom:20px;left:22px;right:20px;color:#fff;z-index:4;display:flex;flex-direction:column;text-shadow:0 1px 6px #203b3e70;pointer-events:none}.place-kicker{font-size:7px;font-weight:750;letter-spacing:2px;color:#eeecdb;margin-bottom:3px}.world-caption strong{font:23px Georgia,serif;letter-spacing:-.4px}.world-weather{font-size:9px;margin-top:7px;color:#dce9df;display:flex;align-items:center;gap:5px}.world-weather i{height:4px;width:4px;border-radius:50%;background:#f4d98e;box-shadow:0 0 5px #ffe6ac}.world-spark{position:absolute;color:#fff8d5;z-index:4;opacity:.65;font:26px Georgia,serif;pointer-events:none;animation:twinkle 5s infinite}.spark-one{top:10%;left:18%}.spark-two{right:17%;top:29%;font-size:15px;animation-delay:2s}#worldGlow{z-index:3;background:conic-gradient(from 60deg at 57% 7%,transparent,#fff1a840 4deg,transparent 12deg);opacity:0;transition:opacity 1.3s;mix-blend-mode:screen}.world-progress{display:flex;align-items:center;gap:14px;padding:15px 19px;font-size:10px;color:#83928b}.world-progress>span{white-space:nowrap}.world-progress strong{white-space:nowrap;font-size:10px;color:#667d72}.world-progress progress{flex:1;width:80px;height:5px;appearance:none;border:0;border-radius:10px;overflow:hidden;background:#e7ece2}.world-progress progress::-webkit-progress-bar{background:#e7ece2;border-radius:10px}.world-progress progress::-webkit-progress-value{background:#91b5a4;border-radius:10px;transition:width .8s}.world-progress progress::-moz-progress-bar{background:#91b5a4;border-radius:10px}.task-card{margin-top:19px;background:#fffcf8;border:1px solid #e5e5dd;border-radius:17px;overflow:hidden;box-shadow:0 6px 19px #4d696209}.story-line{display:flex;align-items:center;gap:11px;padding:16px 19px;background:linear-gradient(110deg,#f4f2e9,#fbf8ef)}.avatar{height:40px;width:40px;border-radius:50%;background:radial-gradient(circle at 60% 27%,#d7bfab 0 24%,transparent 25%),linear-gradient(130deg,#be997c,#8f7064);border:3px solid #fff6e7;box-shadow:0 1px 5px #665b4930;display:grid;place-items:center;position:relative;flex-shrink:0;overflow:hidden}.avatar span{font:22px Georgia,serif;color:#fff4dd;z-index:1}.avatar:after{content:"";position:absolute;bottom:-10px;width:40px;height:27px;border-radius:40px 40px 0 0;background:#799b8d}.character-name{font-size:8px;letter-spacing:1.5px;font-weight:800;color:#7b8c78}.character-name span{font-size:8px;letter-spacing:0;font-weight:500;color:#9ba28c}.story-line p{font-family:Georgia,serif;font-size:12px;line-height:1.5;color:#788378;margin-top:4px}.task-content{padding:18px 19px 19px;position:relative}.task-heading{display:flex;gap:10px;align-items:center}.task-number{font:32px Georgia,serif;color:#cdb888;line-height:1}.eyebrow.small{font-size:7px;letter-spacing:1.4px}.task-heading h2{font-size:17px;font-weight:650;margin-top:4px;color:#526c60;line-height:1.2}.task-content>p{margin:10px 0 15px;font-size:11px;color:#8b958b;max-width:90%}.style-options{display:flex;gap:7px;align-items:center;margin:13px 0 17px}.style-options>span{font-size:9px;color:#899487;margin-right:6px}.style-swatch{height:25px;width:25px;min-height:25px;border-radius:50%;border:3px solid #fffdf9;outline:1px solid #e3e6db;transition:transform .2s}.style-swatch:hover{transform:scale(1.12)}.style-swatch.coral{background:#dc8d77}.style-swatch.ocean{background:#79aab7}.style-swatch.sage{background:#9cb496}.style-swatch.selected,.style-swatch[aria-pressed=true]{outline:2px solid #738f80;outline-offset:2px}.primary-button{display:flex;align-items:center;justify-content:center;gap:12px;padding:13px 22px;border-radius:11px;font-size:12px;font-weight:700;background:var(--teal);color:#fff;box-shadow:0 4px 0 #28676a,0 7px 12px #30716a20;transition:background .2s,transform .15s,box-shadow .15s;letter-spacing:.1px}.primary-button:hover:not(:disabled){background:#3b8b87;transform:translateY(-1px)}.primary-button:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 #28676a}.primary-button .icon{width:18px;height:18px}.restore-button{width:100%;justify-content:space-between;background:#e79979;box-shadow:0 3px 0 #c57b60,0 5px 10px #cb8e6220}.restore-button:hover:not(:disabled){background:#eaa183}.restore-button:active:not(:disabled){box-shadow:0 1px 0 #c57b60}.renovation-list{display:flex;flex-wrap:wrap;gap:7px;margin:15px 0 0;padding:0 3px}.renovation-list>span,.renovation-list>.renovation-item{font-size:9px;display:flex;align-items:center;gap:5px;color:#94a092;border:1px solid #e1e5d9;border-radius:20px;padding:5px 9px;background:#f5f5ed}.renovation-list .icon{width:12px;height:12px}.renovation-list .done{background:#e8eee2;color:#78917c;border-color:#d5e1cf}.puzzle-view{padding-top:8px}.puzzle-card{background:#fffdf9;border:1px solid #e2e4dc;border-radius:20px;padding:23px 23px 18px;box-shadow:var(--shadow);overflow:hidden}.puzzle-heading{display:flex;align-items:center;justify-content:space-between}.puzzle-heading .eyebrow{font-size:8px;letter-spacing:1.7px}.puzzle-heading h2{font:26px Georgia,serif;font-weight:400;letter-spacing:-.6px;color:#4b6260;margin-top:6px}.puzzle-mark{font:47px Georgia,serif;color:#c6bacf;line-height:1;margin-left:10px}.level-description{font-size:11px;color:#98a199;margin-top:7px;line-height:1.5}.goal-bar{display:grid;grid-template-columns:.7fr 1fr 1fr;background:#f2f0f5;border:1px solid #e6e0ed;border-radius:13px;padding:13px 0;margin:18px 0 15px;min-height:76px}.goal{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;line-height:1.15}.goal+.goal{border-left:1px solid #e0dbe9}.goal-label{font-size:7px;font-weight:800;letter-spacing:1.3px;color:#a29aad}.goal>strong{font-size:24px;font-weight:700;color:#807092;margin-top:1px}.goal>div{display:flex;align-items:center;justify-content:center;gap:5px;min-height:29px}.goal>div strong{font-size:16px;font-weight:700;color:#7f7494}.goal .icon{width:22px;height:22px}.goal svg:not(.icon){width:27px;height:27px}.board-shell{position:relative;padding:9px;border-radius:15px;background:#d9d9e6;box-shadow:inset 0 2px 6px #9795ad40,0 1px 0 #fff;isolation:isolate}.board-decoration{display:none}#board{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;position:relative;touch-action:none;user-select:none;-webkit-user-select:none}.cell{display:grid;place-items:center;position:relative;min-width:0;min-height:0;width:100%;aspect-ratio:1;border-radius:10px;background:linear-gradient(145deg,#f9f7ff,#eeedf6);border:1px solid #fefcff;box-shadow:0 2px 2px #7f7b9e18,inset 0 -2px 2px #dad9e747;transition:transform .15s,box-shadow .15s,background .2s;touch-action:none;padding:2px;isolation:isolate}.cell>svg{height:88%;width:88%;pointer-events:none;filter:saturate(.95);transition:transform .15s}.cell:hover:not(:disabled)>svg{transform:scale(1.07)}.cell:disabled{opacity:1}.cell.selected{background:#fff8de;border:2px solid #e8b64e;box-shadow:0 0 0 2px #f9cf7e,0 3px 5px #bca85b38;transform:scale(.94);z-index:3}.cell.path{background:linear-gradient(140deg,#fff4d5,#f7e4ac);border-color:#e3c582;box-shadow:inset 0 0 0 1px #f8dda0,0 2px 2px #ac94523b}.cell.path:after{content:"";position:absolute;bottom:2px;right:2px;width:5px;height:6px;border:1px solid #b18c45;border-radius:2px;background:#f6d485;z-index:3}.cell.path:before{content:"";position:absolute;bottom:8px;right:3px;height:2px;width:3px;border:1px solid #b18c45;border-bottom:0;border-radius:2px 2px 0 0;z-index:3}.cell.lit{background:linear-gradient(145deg,#fff9dc,#ffedb1);box-shadow:inset 0 0 0 1px #f6d581,0 0 10px #ffc85c50;border-color:#edd191}.cell.lit:after{background:#fff6b5;box-shadow:0 0 7px 3px #ffdf7c9c;border-color:#d6a94a}.cell.lit:before{border-color:#d6a94a}.cell.hint{animation:hintPulse .7s ease-in-out 3;z-index:3}.cell.popping>svg{animation:popGem .24s ease-out both}.cell.popping{animation:cellFlash .24s ease-out}.cell.shaking{animation:shake .27s ease-in-out}.tile-special{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;background:radial-gradient(circle,#fff9e7d9,transparent 70%);border-radius:10px}.tile-special svg{width:80%;height:80%;filter:drop-shadow(0 2px 2px #4b397b44)}.tile-special:not(:has(svg)){font-size:24px;line-height:1}.cell.special{background:linear-gradient(130deg,#fbf3ff,#ded3f1);border-color:#cdbbe4}.board-message{font-size:10px;text-align:center;color:#9a9aaa;min-height:31px;display:flex;align-items:center;justify-content:center;padding:8px 0 4px;line-height:1.4}.play-button{width:100%;margin-top:6px;min-height:46px;background:#e58e78;box-shadow:0 4px 0 #c46f5d,0 7px 15px #c56f5418;justify-content:space-between;padding-left:20px;padding-right:18px}.play-button:hover:not(:disabled){background:#eb9b85}.play-button:active:not(:disabled){box-shadow:0 1px 0 #c46f5d}.play-button[hidden]{display:none}.puzzle-tools{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:15px}.puzzle-tools button{border:1px solid #e5e4e8;border-radius:9px;background:#f9f8fa;color:#8b859b;font-size:10px;min-height:40px;padding:4px;display:flex;align-items:center;justify-content:center;gap:5px;transition:background .15s}.puzzle-tools button:hover:not(:disabled){background:#eeebf4}.tool-icon{font-size:20px;line-height:1;color:#a499b7}.level-dots{display:flex;align-items:center;justify-content:center;gap:7px;margin:18px 0 12px;min-height:9px}.level-dots>span,.level-dots>button{height:7px;width:7px;min-height:7px;padding:0;border-radius:50%;background:#e6e4e9;color:transparent;font-size:0;display:block;transition:all .3s}.level-dots .active,.level-dots .current{width:21px;border-radius:8px;background:#baa8cc}.level-dots .done,.level-dots .complete{background:#88b3a2}.help-inline{display:flex;gap:6px;align-items:center;justify-content:center;text-align:center;font-size:9px;color:#a5a79c;border-top:1px solid #eeece6;padding-top:12px;line-height:1.5}.help-inline .icon{width:15px;height:15px;opacity:.7}.prototype-note{font-size:8px;letter-spacing:.2px;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:14px;color:#acafa2}.status-dot{height:4px;width:4px;border-radius:50%;background:#9aaf92}.journal-view{display:none;grid-column:1/-1;margin:12px 0 0}.view-journal .journal-view{display:block}.view-journal .island-view,.view-journal .puzzle-view{display:none}.journal-hero{padding:32px 8px;max-width:650px}.journal-hero h1{font-size:51px;line-height:1.07;margin:17px 0 21px}.journal-hero>p:last-child{font-size:14px;line-height:1.8;color:#84968d;max-width:590px}.journal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.journal-card{background:#fffdf8;border:1px solid #e0e4da;border-radius:17px;padding:25px;box-shadow:var(--shadow)}.journal-chapter{font-size:8px;font-weight:700;letter-spacing:1.5px;color:#89a18e}.journal-card h2{font:25px Georgia,serif;color:#577668;margin:17px 0 13px;letter-spacing:-.5px}.journal-card p{color:#94a090;font-size:12px;line-height:1.8}.journal-progress{margin-top:23px;font-size:11px;color:#729780}.journal-progress strong{color:#517961}.journal-card.upcoming{background:#f2f3ec;box-shadow:none}.journal-card.upcoming h2{color:#8b9c8c}.coming-tag{display:inline-block;font-size:8px;letter-spacing:.7px;text-transform:uppercase;color:#9ca790;background:#e8ede1;padding:6px 9px;border-radius:5px;margin-top:23px}.concept-card{display:flex;align-items:center;justify-content:space-between;gap:40px;background:#ebece3;padding:32px;border-radius:16px;margin-top:25px}.concept-card h2{font:27px Georgia,serif;color:#68816d;letter-spacing:-.6px;margin:11px 0}.concept-card p:last-child{font-size:12px;line-height:1.8;color:#92a08b;max-width:650px}.secondary-button{display:flex;align-items:center;justify-content:center;gap:13px;padding:13px 18px;border:1px solid #d5dfd0;border-radius:9px;white-space:nowrap;background:#f5f7ed;color:#779177;font-size:11px;font-weight:600;min-height:44px}.secondary-button:hover{background:#fffdf4}.secondary-button .icon{height:16px;width:16px}.save-note{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:23px 6px;color:#a3ac9c;font-size:10px}.text-button{color:#aa8b83;text-decoration:underline;font-size:10px;white-space:nowrap;padding:4px 0}.game-modal{padding:35px 30px 28px;border:1px solid #e9e6df;border-radius:23px;background:#fffdf8;color:var(--ink);width:min(440px,calc(100vw - 36px));box-shadow:0 25px 90px #1e3c4160;text-align:center;overflow:visible;max-height:calc(100dvh - 60px)}.game-modal::backdrop{background:#243c4d80;backdrop-filter:blur(5px)}.modal-close{position:absolute;right:12px;top:12px;width:30px;height:30px;min-height:30px;font-size:22px;line-height:1;color:#9eaaa0;background:#f2f2e9;border:0}.modal-icon{height:65px;width:65px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;font:44px Georgia,serif;color:#c3a36a;background:#fbf0d3}.modal-icon svg{height:43px;width:43px}.game-modal>.eyebrow{justify-content:center;font-size:8px;color:#a9ad98}.game-modal h2{font:32px Georgia,serif;letter-spacing:-.8px;color:#547268;margin:10px 0 16px;line-height:1.2}.modal-text{font-size:12px;line-height:1.8;color:#8d998d;text-align:left;max-height:45vh;overflow-y:auto}.modal-text p{margin-bottom:10px}.modal-text strong{color:#657d6b}.modal-text ul,.modal-text ol{padding-left:19px;margin:10px 0}.modal-text li{padding:4px 0}.modal-actions{display:flex;flex-direction:column;gap:10px;margin-top:23px}.modal-actions button{min-height:45px;justify-content:center;border-radius:10px;padding:11px 17px;font-weight:650;font-size:12px;background:var(--teal);color:#fff}.modal-actions button.secondary,.modal-actions button.secondary-button{background:#f0f2e9;color:#83937d;border:1px solid #e1e5d7}.modal-actions button.danger{background:#c97766}.toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,15px);padding:12px 20px;max-width:min(90vw,450px);font-size:12px;background:#365a56f2;color:#fff9e9;box-shadow:0 5px 20px #35544d30;border-radius:13px;opacity:0;pointer-events:none;z-index:50;text-align:center;transition:opacity .25s,transform .25s}.toast.show,.toast.visible{opacity:1;transform:translate(-50%,0)}[hidden]{display:none!important}@keyframes popGem{0%{transform:scale(1);opacity:1}45%{transform:scale(1.22);filter:brightness(1.3)}100%{transform:scale(.15);opacity:0}}@keyframes cellFlash{40%{background:#fff9ce;box-shadow:0 0 10px #ffdf7a}100%{background:#f6f4ff}}@keyframes hintPulse{50%{transform:translateY(-3px) scale(1.05);box-shadow:0 0 0 2px #b5a1d6,0 3px 10px #ac93d957}}@keyframes twinkle{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:.85;transform:scale(1.1)}}@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
@media(min-width:1450px){.game-layout{padding-top:23px}.topbar{height:110px}.world-progress{padding:17px 22px}.task-card{margin-top:23px}.story-line{padding:19px 22px}.task-content{padding:21px 22px}.puzzle-card{padding:25px 25px 20px}}
@media(max-width:1050px){.topbar{padding:0 24px;height:90px}.game-layout{padding:10px 24px 30px;gap:21px;grid-template-columns:minmax(0,1.13fr) minmax(0,1fr)}.brand-name{font-size:29px}.brand-emblem{font-size:42px}.brand-tag{font-size:6.5px;letter-spacing:2.1px}.view-tabs button{min-width:auto;padding:7px 12px;font-size:11px}.header-tools{gap:7px}.icon-button{width:34px;height:34px;min-height:34px}.star-wallet{min-width:61px;padding-right:12px;height:35px}.island-heading h1{font-size:31px}.chapter-stamp{width:49px;height:49px;font-size:22px}.island-heading .eyebrow{font-size:7px;letter-spacing:1.3px}.intro-text{font-size:10px}.island-heading{min-height:90px;margin-bottom:14px}.puzzle-card{padding:19px 15px 15px}.puzzle-heading h2{font-size:24px}.puzzle-heading .eyebrow{font-size:7px}.puzzle-mark{font-size:40px}.goal-bar{margin-top:15px;padding:11px 0;min-height:69px}.goal-label{font-size:6px}.goal>div strong{font-size:14px}.goal>strong{font-size:22px}.board-shell{padding:7px}#board{gap:4px}.cell{border-radius:8px}.puzzle-tools button{font-size:9px}.world-caption{left:17px;bottom:17px}.world-caption strong{font-size:20px}.world-progress{gap:10px;padding:12px 15px;font-size:8px}.world-progress strong{font-size:9px}.story-line{padding:13px 14px;gap:9px}.story-line p{font-size:11px}.task-content{padding:16px 14px}.task-heading h2{font-size:16px}.task-content>p{font-size:10px}.world-card{border-radius:16px}.journal-hero h1{font-size:46px}.journal-grid{gap:13px}.journal-card{padding:20px}.journal-card h2{font-size:22px}.concept-card{padding:25px;gap:22px;align-items:flex-start;flex-direction:column}}
@media(max-width:760px){body{background:linear-gradient(160deg,#f4f2e9,#f4f1f1);padding-bottom:90px}.topbar{height:81px;padding:0 20px;gap:12px}.brand{gap:8px}.brand-name{font-size:29px}.brand-emblem{font-size:40px}.brand-tag{font-size:6px;letter-spacing:2px}.header-tools{gap:7px}.star-wallet{height:33px;min-width:57px;padding-left:8px;padding-right:11px;gap:6px;font-size:13px}.star-wallet .icon{width:21px;height:21px}.header-tools .icon-button{height:32px;width:32px;min-height:32px}.header-tools .icon-button .icon{width:19px;height:19px}.view-tabs{position:fixed;bottom:max(13px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:20;width:min(340px,calc(100% - 34px));justify-content:space-between;padding:5px 6px;background:#fdfcf7f2;border:1px solid #e4e7dc;box-shadow:0 6px 30px #41564d25;backdrop-filter:blur(15px);border-radius:28px;gap:5px}.view-tabs button{flex:1;font-size:10px;min-height:43px;padding:7px 10px}.view-tabs button span{font-size:16px;margin-right:5px}body.view-island [data-view=island],body.view-puzzle [data-view=puzzle],body.view-journal [data-view=journal]{background:#e9eee5;box-shadow:none}.game-layout{display:block;padding:3px 17px 17px;max-width:560px}.island-view,.puzzle-view{display:none}.view-island .island-view{display:block}.view-puzzle .puzzle-view{display:block}.view-journal .journal-view{display:block}.island-heading{margin-bottom:17px;min-height:100px;padding:0 3px}.island-heading h1{font-size:34px;letter-spacing:-1.3px;margin:11px 0 8px}.island-heading .eyebrow{font-size:7px;letter-spacing:1.4px}.intro-text{font-size:11px}.chapter-stamp{width:48px;height:48px}.world-card{border-radius:17px}.world{aspect-ratio:3/2}.world-base{object-position:52% center}#worldLayers img{object-position:52% center}.world-caption{left:19px;bottom:18px}.world-caption strong{font-size:23px}.world-weather{font-size:9px}.place-kicker{font-size:7px}.world-progress{padding:14px 17px;font-size:9px;gap:13px}.world-progress strong{font-size:9px}.task-card{margin-top:17px}.story-line{padding:15px 16px}.story-line p{font-size:12px}.task-content{padding:18px 16px}.task-heading h2{font-size:18px}.task-content>p{font-size:11px}.primary-button{min-height:47px}.renovation-list{margin-top:14px}.puzzle-view{padding-top:5px}.puzzle-card{padding:21px 18px 17px;border-radius:20px}.puzzle-heading h2{font-size:28px}.puzzle-heading .eyebrow{font-size:8px}.puzzle-mark{font-size:45px}.level-description{font-size:11px;margin-top:7px}.goal-bar{margin:18px 0 15px;padding:13px 0;min-height:75px}.goal-label{font-size:7px}.goal>strong{font-size:25px}.goal>div strong{font-size:17px}.goal svg:not(.icon){width:28px;height:28px}.board-shell{padding:8px;border-radius:14px}#board{gap:4px}.cell{border-radius:9px}.board-message{font-size:10px;padding-top:10px;min-height:37px}.play-button{min-height:47px;margin-top:5px}.puzzle-tools{margin-top:16px;gap:8px}.puzzle-tools button{font-size:10px;min-height:42px}.level-dots{margin-top:19px;margin-bottom:14px}.help-inline{font-size:9px;padding-top:14px}.prototype-note{font-size:8px;margin-top:13px;gap:7px}.journal-view{margin-top:0}.journal-hero{padding:24px 5px 30px}.journal-hero h1{font-size:42px;line-height:1.12}.journal-hero>p:last-child{font-size:12px;line-height:1.9}.journal-grid{display:flex;flex-direction:column;gap:15px}.journal-card{padding:24px}.journal-card h2{font-size:26px;margin:13px 0}.journal-card p{font-size:12px}.concept-card{padding:24px;gap:20px;margin-top:21px}.concept-card h2{font-size:26px}.concept-card p:last-child{font-size:12px}.secondary-button{font-size:10px;width:100%}.save-note{align-items:flex-start;flex-direction:column;gap:10px;padding:20px 4px}.save-note p{font-size:10px;line-height:1.8}.toast{bottom:86px;font-size:11px}.game-modal{padding:31px 24px 25px}.game-modal h2{font-size:29px}.modal-text{font-size:12px}}
@media(max-width:380px){.topbar{padding:0 15px;gap:8px}.brand-name{font-size:27px}.brand-emblem{font-size:35px}.brand-tag{font-size:5.3px;letter-spacing:1.8px}.header-tools{gap:5px}.header-tools .icon-button{width:29px;height:29px;min-height:29px}.header-tools .icon-button .icon{height:17px;width:17px}.star-wallet{min-width:48px;padding-right:8px;padding-left:6px;font-size:12px;gap:4px;height:30px}.star-wallet .icon{width:18px;height:18px}.game-layout{padding-left:12px;padding-right:12px}.island-heading h1{font-size:30px}.island-heading .eyebrow{font-size:6px;letter-spacing:1.1px}.island-heading{padding-left:3px}.chapter-stamp{width:43px;height:43px}.intro-text{font-size:10px}.puzzle-card{padding:18px 13px 15px}.puzzle-heading h2{font-size:25px}.goal-bar{margin-top:14px}.board-shell{padding:6px}#board{gap:3px}.cell{border-radius:7px}.help-inline{font-size:8px}.world-progress{font-size:8px;gap:10px}.world-progress strong{font-size:8px}.puzzle-tools button{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Keep compact icon artwork while preserving a comfortable touch target. */
.header-tools .icon-button{position:relative}.header-tools .icon-button:before{content:"";position:absolute;inset:-6px;border-radius:50%}

/* Live game state: restoration masks, route markers, and earned progress. */
.world{aspect-ratio:3/2}
.world-layer{position:absolute;inset:0;background:url('./assets/island.webp?v=1.56') center/100% 100% no-repeat;opacity:0;transition:opacity 1.1s ease;pointer-events:none}
.world-layer.revealed{opacity:1}
#worldGlow.lit{opacity:1}
.world-pin.current{background:#fff1bd;border-color:#ffdf8d;box-shadow:0 0 18px #ffeab599;animation:beacon 2s ease-in-out infinite}
.world-pin{font-size:11px;font-weight:750}
.world-pin.locked{opacity:.75}
.village-flag{position:absolute;width:15px;height:12px;background:var(--village-color,#f17f70);clip-path:polygon(0 0,100% 0,75% 50%,100% 100%,0 100%);filter:drop-shadow(0 1px 1px #263f4f);transition:background .3s;pointer-events:none}
.village-flag:after{content:'';position:absolute;left:0;top:0;height:18px;width:2px;background:#e8dab2}
.light-route{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;overflow:visible}
.light-route polyline{stroke:#ecc575;stroke-width:17;stroke-linejoin:round;fill:none;opacity:.65}
.cell{z-index:1}
.cell.is-special{border-color:#cdbbe4;background:linear-gradient(130deg,#fbf3ff,#ded3f1)}
.cell.invalid{animation:shake .27s ease-in-out}
.cell.path:before,.cell.path:after{display:none}
.path-lantern{position:absolute;right:1px;bottom:1px;display:grid;place-items:center;width:13px;height:14px;border-radius:4px;background:#f8e1a6;color:#9c7933;pointer-events:none}
.path-lantern .icon{width:11px;height:11px}
.lit .path-lantern{background:#fff3ad;color:#8b7a32;box-shadow:0 0 5px #f0bb43}
.tile-special.row svg{transform:rotate(45deg)}
.tile-special.col svg{transform:rotate(-45deg)}
.level-dot .icon{display:none}
#colorGoal>span{font-size:16px;font-weight:700;color:#7f7494}
.play-button.is-playing{display:none}
.renovation-list{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.renovation-row{display:flex;align-items:center;gap:7px;font-size:9px;line-height:1.4;color:#7a8c83;background:#edece5;border:1px solid #e2e5da;border-radius:8px;padding:7px 9px;min-width:0}
.renovation-row>span:nth-child(2){flex:1}
.renovation-number{display:grid;place-items:center;flex-shrink:0;width:18px;height:18px;border-radius:50%;font-size:8px;background:#e3e6dc;color:#879686}
.renovation-row small{font-size:7px;white-space:nowrap;color:#6f9b84}
.renovation-row.current{border-color:#d9c393;background:#f8f0db;color:#8b7956}
.renovation-row.done .renovation-number{color:#588e72;background:#d7e9d8}
.renovation-number .icon{width:12px;height:12px}
.help-inline{width:100%;cursor:pointer;min-height:36px}
#soundBtn.muted:after{content:'';position:absolute;width:22px;height:1.5px;transform:rotate(-42deg);background:#8c9d97;pointer-events:none}
#soundBtn{position:relative}
.celebrating .world-card{animation:restoreGlow 1s ease-out}
@keyframes beacon{50%{box-shadow:0 0 0 5px #ffeab538,0 0 24px #ffeab5}}
@keyframes restoreGlow{30%{box-shadow:0 0 0 3px #eccf7999,0 0 35px #f8db7c77}}
@media(max-width:760px){.renovation-list{gap:7px}.renovation-row{font-size:10px;padding:9px}.world-caption strong{font-size:clamp(16px,4vw,23px)}.world-pin{width:29px;height:29px;min-height:29px}.world-pin:before{content:'';position:absolute;inset:-6px}.world-pin .icon{width:17px;height:17px}.style-swatch:before{content:'';position:absolute;inset:-8px}.style-swatch{position:relative}#colorGoal>span{font-size:17px}}
@media(max-width:380px){.renovation-list{grid-template-columns:1fr}.path-lantern{width:11px;height:11px}.path-lantern .icon{width:9px;height:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Keep instructions readable on small screens. */
.eyebrow{font-size:10px}.small.eyebrow{font-size:9px}.intro-text{font-size:13px;color:#657c72}.story-line p{color:#667a6c}.task-content>p{font-size:12px;color:#6e7d70}.level-description{font-size:12px;color:#6e7d73}.board-message{font-size:12px;color:#75718a}.help-inline{font-size:11px;color:#73816e}.prototype-note{font-size:10px;color:#7c8c79}.journal-card p{color:#6d7f6c}.concept-card p:last-child{color:#6e7e67}.save-note{color:#76856e}.modal-text{color:#657968}.goal-label{font-size:9px;color:#84788f}.puzzle-tools button{font-size:12px}.style-options>span{font-size:11px}.view-tabs button{font-size:12px}.world-progress{color:#657c70}.renovation-row{font-size:10px}
@media(max-width:760px){.island-heading .eyebrow{font-size:9px;letter-spacing:1px}.puzzle-heading .eyebrow{font-size:9px}.goal-label{font-size:9px}.board-message{font-size:12px}.task-content>p{font-size:12px}.help-inline{font-size:11px}.prototype-note{font-size:10px}.world-progress{font-size:11px}.world-progress strong{font-size:11px}.puzzle-tools button{font-size:12px}.level-description{font-size:12px}.view-tabs button{font-size:12px}}

/* Phase-one motion: fixed board slots, independently moving game pieces. */
.board-shell{overflow:hidden}
#board{isolation:isolate}
.cell{isolation:auto;z-index:auto}
.cell .piece{position:absolute;inset:2px;display:grid;place-items:center;z-index:2;pointer-events:none;will-change:transform,opacity;transform-origin:50% 55%}
.piece>svg{width:88%;height:88%;pointer-events:none;filter:drop-shadow(0 2px 1px #62607818)}
.cell.selected .piece{filter:brightness(1.08)}
.cell.selected{z-index:auto;transform:none;outline:2px solid #e4b144;outline-offset:-1px}
.path-lantern{z-index:4}
.cell:focus-visible{outline:3px solid #7168a2;outline-offset:1px;z-index:5}
.cell.is-special .piece>svg{opacity:.25}
.cell.is-special:has(use[href='#prism']) .piece>svg{opacity:1;width:90%;height:90%}
.piece .tile-special{z-index:3}
.piece .tile-special svg{width:83%;height:83%}
.board-fx{position:absolute;inset:0;z-index:7;pointer-events:none;overflow:visible}
.fx-beam{position:absolute;display:block;background:linear-gradient(90deg,transparent,#ffe5a3,#fffdf0,#ffe5a3,transparent);box-shadow:0 0 10px 3px #ffdc8499;border-radius:50%;opacity:0;animation:beamFlash 240ms ease-out var(--delay,0ms) both}
.fx-beam.horizontal{left:0;width:100%;height:8px;transform:translateY(-50%)}
.fx-beam.vertical{top:0;height:100%;width:8px;transform:translateX(-50%);background:linear-gradient(transparent,#ffe5a3,#fffdf0,#ffe5a3,transparent)}
.fx-ring{position:absolute;display:block;width:15%;aspect-ratio:1;border:3px solid #fff5c4;background:#ffe39570;border-radius:50%;box-shadow:0 0 15px #ead4ff;animation:bombWave 250ms ease-out var(--delay,0ms) both}
.prism-rays{position:absolute;inset:0;width:100%;height:100%;overflow:visible;animation:prismFlash 250ms ease-out both}
.prism-rays line{stroke:#d9b9ff;stroke-width:.7;stroke-linecap:round;filter:drop-shadow(0 0 2px #fff5ad)}
.fx-spark{position:absolute;width:5px;height:5px;border-radius:1px;background:var(--spark,#ffd479);box-shadow:0 0 4px #fff5d2;animation:sparkFloat 200ms ease-out both}
#modalIcon:has(use[href='#star']){animation:starArrival 550ms cubic-bezier(.2,.8,.3,1) both}
#starCount{display:inline-block}
#board[aria-busy=true] .cell{cursor:wait}
@keyframes beamFlash{0%{opacity:0;scale:.2 1}25%{opacity:1;scale:1 1}100%{opacity:0;scale:1.05 .4}}
@keyframes bombWave{0%{opacity:1;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(-50%,-50%) scale(3.4)}}
@keyframes prismFlash{0%,100%{opacity:0}30%{opacity:1}}
@keyframes sparkFloat{from{transform:translate(-50%,-50%) rotate(0);opacity:1}to{transform:translate(var(--dx),var(--dy)) rotate(150deg);opacity:0}}
@keyframes starArrival{0%{transform:translateY(15px) scale(.4);opacity:0}65%{transform:translateY(-3px) scale(1.12);opacity:1}100%{transform:none;opacity:1}}
@media(prefers-reduced-motion:reduce){.piece{will-change:auto}.board-fx{display:none}#modalIcon{animation:none!important}}

/* Completed objectives stay visibly checked; progress pulses never block input. */
.goal{position:relative;transition:background .2s,color .2s}
.goal.done{background:#e5f0e6;color:#527760}
.goal.done .goal-label{color:#527760}
.goal.done .goal-label:after{content:' ✓';font-size:12px;color:#4d8c65}
.goal.done strong,.goal.done #colorGoal>span{color:#527760}
@media(max-width:760px){.game-layout{padding-left:12px;padding-right:12px}.puzzle-card{padding-left:10px;padding-right:10px}.board-shell{padding:6px}#board{gap:3px}.puzzle-heading,.level-description{margin-left:4px;margin-right:4px}}
.cell.hint{outline:2px solid #a58cc7;outline-offset:-1px;border-color:#a58cc7;box-shadow:inset 0 0 0 1px #d9c5f5,0 0 8px #bda5d34d}

/* Show saved progress only after initialization, never obsolete placeholder data. */
.loading-state{display:none;min-height:55vh;align-items:center;justify-content:center;gap:12px;color:var(--teal);font-size:16px}
.loading-state>span{font:40px Georgia,serif;color:var(--gold)}
.loading-help{text-align:center;margin:30px}
.is-loading .game-layout,.is-loading .view-tabs,.is-loading .header-tools{display:none}
.is-loading .loading-state{display:flex}
/* Chapter journal: only earned memories reveal the story. */
.character-name strong{font:inherit}.avatar[data-character=oren]{background:linear-gradient(140deg,#b6b4aa,#687980)}.avatar[data-character=oren]:after{background:#506778}
.chapter-card{background:var(--white);border:1px solid var(--line);border-radius:20px;padding:26px;display:flex;align-items:center;gap:28px;box-shadow:var(--shadow)}
.chapter-card>div{flex:1}.chapter-card h2{font:30px Georgia,serif;margin:8px 0 12px;color:#355954}.chapter-card p:not(.eyebrow){font-size:14px;line-height:1.8;color:#667a6c}.chapter-card .primary-button{flex-shrink:0;width:auto;min-width:190px;padding:14px 22px}
.chapter-journal-heading{margin:35px 0 18px}.chapter-journal-heading h2{font:28px Georgia,serif;color:#355954}.chapter-journal-heading p{margin-top:8px;color:#687e72;font-size:13px}
.story-timeline{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.story-entry{border:1px solid var(--line);border-radius:15px;background:#f0f0e9;min-width:0;color:#79897e;display:flex;align-items:flex-start;gap:13px;padding:18px}
.story-entry.unlocked{padding:0;background:var(--white);color:var(--ink)}.story-entry button{width:100%;padding:18px;display:flex;align-items:center;gap:13px;text-align:left;border-radius:15px}.story-entry button:hover{background:#f1f5ec}.story-entry button>span:nth-child(2),.story-entry>span:nth-child(2){flex:1;min-width:0}
.story-entry small{display:block;font-size:9px;font-weight:750;letter-spacing:1px;margin-bottom:5px;color:#7b8d7f}.story-entry strong{display:block;font-size:16px;font-weight:650;line-height:1.35}.story-entry span>span{display:block;font-size:12px;line-height:1.6;margin-top:5px;color:#78897d}
.story-number{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;min-height:30px;border-radius:50%;background:#e3e8dd;color:#78927f;font-weight:750}.story-number .icon{width:17px;height:17px}.unlocked .story-number{background:#e0eee0;color:#568267}.story-entry .story-read{font-size:11px;color:var(--teal);white-space:nowrap}.story-entry.current{border-color:#dfc58e;background:#fcf4df;color:#817145}
.puzzle-completion{padding:28px 8px;text-align:center;color:#667e71}.puzzle-completion>.icon{height:65px;width:65px}.puzzle-completion h3{font:26px Georgia,serif;color:#355954;margin:15px 0}.puzzle-completion p{font-size:14px;line-height:1.8}.puzzle-completion[hidden]{display:none}
.puzzles-done .goal-bar,.puzzles-done .board-shell,.puzzles-done .board-message,.puzzles-done .puzzle-tools,.puzzles-done .level-dots,.puzzles-done .help-inline{display:none}
@media(max-width:760px){.chapter-card{padding:22px;display:block}.chapter-card h2{font-size:27px}.chapter-card .primary-button{width:100%;margin-top:20px}.story-timeline{grid-template-columns:1fr}.story-entry button,.story-entry{padding:16px}.story-entry.unlocked{padding:0}.story-entry .story-read{font-size:10px}.story-entry strong{font-size:15px}.chapter-journal-heading{margin-top:27px}}
/* Stationary obstacles: chains restrict swaps; glass needs a power-up. */
.goal[hidden]{display:none}.goal-bar:has(.obstacle-goal:not([hidden])){grid-template-columns:.7fr 1fr 1fr 1fr}
.obstacle-goal>strong{font-size:18px;color:#6b7895}.tile-chain{position:absolute;inset:9% 2%;z-index:5;pointer-events:none;transform:rotate(-30deg)}.tile-chain svg{width:100%;height:100%;fill:#f7e8c45c;stroke:#647b8d;stroke-width:4;filter:drop-shadow(0 1px 0 #fff)}
.cell.chained{border-color:#8195a4;background:linear-gradient(130deg,#f5f3ed,#cbd7df)}.tile-seal{position:absolute;right:1px;top:1px;width:35%;height:35%;min-width:13px;min-height:13px;display:grid;place-items:center;z-index:5;border:1px solid #77a5c4;border-radius:5px;background:#d3eff4d9;color:#5884b6;font-size:15px;box-shadow:0 0 3px #fff;pointer-events:none}
.cell.sealed{box-shadow:inset 0 0 0 2px #94c1d4,0 0 7px #b7e2ec66}.level-dots{flex-wrap:wrap;gap:6px}.level-dot{flex-shrink:0}
@media(max-width:760px){.goal-bar:has(.obstacle-goal:not([hidden])) .goal-label{font-size:8px}.obstacle-goal>strong{font-size:17px}}

/* Registered before/after artwork: physical storm damage, not a colour filter. */
.world-base{filter:none}
.repair-comparison{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0 16px;text-align:left}
.repair-comparison[hidden]{display:none}
.repair-comparison figure{margin:0;min-width:0;background:#eef1e6;border:1px solid #e2e7d9;border-radius:12px;overflow:hidden}
.repair-comparison svg{display:block;width:100%;height:115px;background:#c6ded4}
.repair-comparison figcaption{padding:8px 10px;font-size:11px;font-weight:700;color:#566c61}
.repair-comparison figure:last-child{border-color:#b8cdb4;background:#eaf2e4}
@media(max-width:760px){.repair-comparison{gap:8px}.repair-comparison svg{height:105px}.repair-comparison figcaption{font-size:11px;padding:7px 8px}}

.game-modal{overflow-y:auto;overscroll-behavior:contain}

/* Player-chosen repairs, fixed locks and a warmer light celebration. */
.world-finished{position:absolute;inset:0;background:url('./assets/island.webp?v=1.56') center/100% 100% no-repeat;opacity:0;pointer-events:none}.world-finished.revealed{opacity:1}
.world-pin.available{background:#fffaf0;color:#9a824c;opacity:.92}.world-pin.available:hover{background:#fff0b7}.world-pin.current{z-index:2}
.repair-choice-heading{margin-top:22px}.repair-choice-heading h2{font:23px Georgia,serif;color:#456b5d}.repair-choice-heading p{font-size:12px;color:#6d7e6d;margin-top:5px}
.renovation-row{width:100%;min-height:64px;text-align:left;border:1px solid #dfe4d5;transition:border-color .18s,background .18s;grid-template-columns:27px minmax(0,1fr) auto;gap:8px;font-size:12px;background:#f8f8f0}
.renovation-row.current{border:2px solid #b5a3d7;background:#f3edf9;box-shadow:0 3px 10px #85749b16}.renovation-row:hover{border-color:#8eae9e}.renovation-row small{white-space:nowrap;font-size:12px;font-weight:750}.renovation-number .icon{height:20px;width:20px}
.tile-seal{width:40%;height:42%;border:1.5px solid #6d9bad;background:#e0f5f6f0;box-shadow:0 1px 4px #37637b40}.tile-seal svg{width:85%;height:85%;fill:#a1c9d6;stroke:#456c8b;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.cell.sealed .piece{filter:saturate(.65)}
.level-dot{min-width:29px;min-height:32px;width:29px;height:32px}.level-dot:disabled{opacity:.45}.puzzles-done .level-dots{display:flex}.replay-note{font-size:11px;color:#7e639b;background:#f0e8f7;border-radius:9px;padding:9px 12px;margin-top:12px}.replay-note[hidden]{display:none}
.fx-beam{animation-duration:420ms;background:linear-gradient(90deg,transparent,#d6b3f5,#fff2a4,#a5e6d3,transparent)}.fx-beam.vertical{background:linear-gradient(transparent,#d6b3f5,#fff2a4,#a5e6d3,transparent)}
.fx-rocket-traveller{position:absolute;width:34px;height:34px;display:grid;place-items:center;animation:rocketTravel 410ms cubic-bezier(.25,.1,.5,1) var(--delay) both;filter:drop-shadow(0 0 8px #fff3a9)}.fx-rocket-traveller .icon{width:100%;height:100%;transform:rotate(var(--angle))}
@keyframes rocketTravel{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}12%{opacity:1}85%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(1.2)}}
.fx-ring{animation-duration:420ms;background:#fff1bc48;border-color:#ffe09c}.fx-ring.second{animation-delay:calc(var(--delay) + 70ms);border-color:#e6b5f0;background:transparent}.fx-petal{position:absolute;width:9px;height:13px;background:var(--spark);border-radius:70% 30% 70% 30%;animation:petalBurst 470ms ease-out var(--delay) both;box-shadow:0 0 5px #fff1ca}
@keyframes petalBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}15%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) rotate(160deg) scale(.7)}}
.prism-rays{animation-duration:440ms}.prism-rays line{stroke-width:.8;opacity:.85}.fx-prism-halo{position:absolute;width:35%;aspect-ratio:1;border-radius:50%;background:conic-gradient(#efb5c7,#f9df9a,#a2dfcb,#a5cbed,#cfafe9,#efb5c7);mix-blend-mode:screen;animation:prismBloom 460ms ease-out var(--delay) both}
@keyframes prismBloom{0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(-70deg)}30%{opacity:.8}100%{opacity:0;transform:translate(-50%,-50%) scale(2.8) rotate(100deg)}}
.fx-spark{width:7px;height:7px;border-radius:45% 45% 15% 45%;animation-duration:330ms}.celebration{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:inherit;z-index:5}.celebration i{position:absolute;left:var(--x);top:0;width:7px;height:13px;background:var(--paper);border-radius:2px;animation:confettiFall 1200ms ease-out var(--wait) both}
@keyframes confettiFall{0%{opacity:0;transform:translate(0,-20px) rotate(0)}12%{opacity:.95}100%{opacity:0;transform:translate(var(--drift),600px) rotate(var(--turn))}}
.game-modal.victory #modalIcon{animation:starWelcome 650ms cubic-bezier(.2,.8,.3,1) both}.game-modal.victory{border-color:#e9d496;box-shadow:0 20px 90px #51406c66,0 0 30px #ffde8c30}
@keyframes starWelcome{0%{transform:scale(.4) rotate(-22deg)}55%{transform:scale(1.2) rotate(10deg)}100%{transform:scale(1) rotate(0)}}
@media(max-width:760px){.renovation-row{font-size:11px;min-height:68px;padding:10px 8px;gap:6px;grid-template-columns:22px minmax(0,1fr) auto}.renovation-row small{font-size:11px}.repair-choice-heading h2{font-size:22px}.level-dot{min-width:32px;width:32px;min-height:34px;height:34px}.fx-rocket-traveller{width:27px;height:27px}}
@media(prefers-reduced-motion:reduce){.celebration,.board-fx{display:none}.world-pin.current{animation:none}.world-finished{transition:none}}

.renovation-row{display:grid}.renovation-list .renovation-number .icon{width:19px;height:19px}
.level-dots>.level-dot{display:grid;place-items:center;width:32px;height:34px;min-height:34px;border-radius:9px;font-size:12px;font-weight:750;color:#6b5d7d;border:1px solid #ddd5e5;background:#f3eef7}.level-dots>.level-dot.done{background:#e1efe3;border-color:#bbd5c3;color:#416953}.level-dots>.level-dot.current{background:#e4d4f4;border-color:#b49acb;color:#57416c}.level-dots>.level-dot:disabled{opacity:.5}
.fx-ring.wide{width:24%;border-width:4px}

.piece.special-piece{background:radial-gradient(ellipse,#fff0c388,transparent 70%);border-radius:35%}.piece>.power-art{width:87%;height:87%;filter:drop-shadow(0 3px 2px #4e426c44) drop-shadow(0 0 4px #fff3b999)}.power-art.row{transform:rotate(45deg)}.power-art.col{transform:rotate(-45deg)}.power-direction{position:absolute;left:50%;bottom:1px;transform:translateX(-50%);background:#fff5d9eb;color:#715294;border:1px solid #d4bcdf;border-radius:5px;padding:0 5px;font-size:12px;line-height:15px;font-weight:800;box-shadow:0 1px 2px #6f5e8f30}.piece.power-prism{background:radial-gradient(ellipse,#dfcbf4aa,transparent 70%)}
.cell.is-special .piece>.power-art{opacity:1}

/* Keep moving pieces on transform/opacity; avoid nested offscreen SVG filter passes. */
.piece>svg,.piece>.power-art,.cell.crate .box-piece>svg{filter:none}
.match-shard .piece,.match-shard svg{filter:none;will-change:auto}
.board-effect-surface{pointer-events:none}
