/* Nocturnal jade, blue silk and rose-silver curves, drawn from the supplied game references. */
/* Keep the portrait's original placement ready for the user's replacement art. */
.incense-portrait[data-art-pending="true"]{visibility:hidden!important;pointer-events:none;aspect-ratio:720 / 1000}
.incense-game{position:absolute;inset:0;z-index:31;overflow:hidden;color:#e9efe1;font-family:"KaiTi","STKaiti","SimSun",serif;background:#142c40}
.incense-game [hidden],.incense-story [hidden]{display:none!important}.incense-atmosphere{position:absolute;inset:0;background:radial-gradient(ellipse at 34% 45%,#7bacac22,transparent 65%),url('assets/incense/night-wash.jpg') center/cover;pointer-events:none}.incense-atmosphere:after{content:"";position:absolute;inset:18px;border:1px solid #7bacc733;border-radius:25px 70px 35px 65px;box-shadow:inset 0 0 60px #0004}
.incense-game button,.incense-story button{font:inherit;cursor:pointer;color:#e9efdf;border:1px solid #8baab36b;background:linear-gradient(140deg,#436879e8,#253e5fe6);padding:10px 19px;border-radius:7px 17px 7px 17px;box-shadow:inset 0 1px #effff524,0 3px 10px #07182440;transition:background .2s,box-shadow .2s,transform .2s;letter-spacing:.06em}
.incense-game button:hover,.incense-story button:hover{background:linear-gradient(140deg,#628e97,#365d7d);box-shadow:0 0 18px #78bcca44}.incense-game button:focus-visible,.incense-story button:focus-visible{outline:2px solid #a6ebdf;outline-offset:4px}.incense-game button:disabled{opacity:.42;cursor:default;transform:none}.incense-game .incense-primary,.incense-story .incense-primary{background:linear-gradient(135deg,#a7d5c4,#69a5ac);color:#17384a;border-color:#c6e7d2;box-shadow:inset 0 1px #f9ffee,0 0 24px #7fb7b026;font-weight:bold}
.incense-bar{position:absolute;inset:32px 45px auto;display:flex;align-items:flex-start;justify-content:space-between;z-index:5;pointer-events:none}.incense-bar>*{pointer-events:auto}.incense-wordmark small{font-size:12px;letter-spacing:.24em;color:#aac9c7}.incense-wordmark h1{font-weight:400;font-size:30px;letter-spacing:.16em;margin:9px 0;color:#e4e0cd;text-shadow:0 2px 10px #0006}.incense-top-actions{display:flex;gap:10px}.incense-top-actions button{padding:8px 15px;font-size:14px}
.incense-canvas{position:absolute;inset:0;z-index:1;pointer-events:none}.incense-view{position:absolute;left:3%;top:15%;bottom:13%;width:69%;z-index:2;touch-action:none;cursor:grab}.incense-view:active{cursor:grabbing}.incense-game[data-mode=board] .incense-inset{height:30vh;min-height:180px;max-height:300px}.incense-game[data-mode=board] .incense-panel{bottom:18%}.incense-game[data-mode=board] .incense-description{margin:20px 0}.incense-game[data-mode=board] .incense-feedback{font-size:13px;line-height:1.8}
.incense-panel{position:absolute;right:3.3%;top:17%;width:23%;max-width:360px;bottom:14%;z-index:3;padding:24px 22px 18px;box-sizing:border-box;isolation:isolate}.incense-panel:before{content:"";position:absolute;inset:0;z-index:-2;border-radius:35px 65px 28px 35px;background:linear-gradient(155deg,#6f8d9b65,#243d5877 50%,#4a577d55);border:2px solid #9bacc795;box-shadow:inset 0 0 0 5px #142d4677,inset 0 0 45px #bacac81a,0 0 20px #83b6bf22;pointer-events:none}.incense-panel:after{content:"";position:absolute;inset:8px;z-index:-1;border:1px solid #c8c3bf45;border-radius:30px 59px 24px 30px;pointer-events:none}.incense-panel-crown{position:absolute;top:-16px;left:calc(50% - 14px);font-size:25px;color:#e0bfbf;text-shadow:0 0 18px #fad5e8}
.incense-kicker{display:block;color:#b9d7d2;font-size:11px;letter-spacing:.13em;text-align:center}.incense-heading{font-size:20px;text-align:center;font-weight:400;margin:9px -4px 12px;letter-spacing:.07em}.incense-inset{height:clamp(120px,22vh,230px);position:relative;border:1px solid #adcaca66;border-radius:50% 50% 45% 45%;background:radial-gradient(ellipse,#a6c6bd20,#0a263663);box-shadow:inset 0 0 30px #a6cbb31c;margin:0 4px 10px;pointer-events:none;z-index:-1}.incense-inset span{position:absolute;bottom:5px;width:100%;text-align:center;color:#c9ded9;font-size:11px;letter-spacing:.2em}
/* The WebGL inset sits above translucent ornament, below readable labels. */
.incense-parts-key{display:flex;gap:4px;justify-content:space-around;font-size:11px;color:#b7d2d1;margin:8px -8px}.incense-parts-key span:before{content:"·";color:#cdb990;margin-right:3px}.incense-description{font-size:14px;line-height:1.8;color:#d3e2d7;margin:10px 0}.incense-step-dots{display:flex;gap:6px;justify-content:center;margin:12px 0}.incense-step-dots i{height:4px;flex:1;max-width:25px;background:#30465e;border-radius:2px}.incense-step-dots i.done{background:#98cebd;box-shadow:0 0 8px #a8ecd65c}.incense-action-row,.incense-rotate{display:flex;gap:5px;justify-content:center;margin:9px 0}.incense-action-row button,.incense-rotate button{font-size:12px;padding:8px 9px;flex:1}.incense-wide{width:100%;font-size:13px;margin-top:5px;padding:9px!important}.incense-feedback{font-size:12px;line-height:1.65;color:#ecd6b7;min-height:18px;margin:9px 0}.incense-volume{display:flex;align-items:center;gap:8px;font-size:11px;color:#a8bdc4}.incense-volume input{min-width:40px;width:60%;accent-color:#9fc9bd;cursor:pointer}
.incense-footer{position:absolute;bottom:30px;left:45px;right:45px;display:flex;align-items:center;justify-content:space-between;gap:30px;z-index:6}.incense-control-note{font-size:14px;color:#c1d8ce;letter-spacing:.06em;max-width:73%}.incense-footer button{font-size:13px;padding:9px 17px}.incense-route{position:absolute;left:22%;right:34%;top:8%;display:flex;align-items:center;gap:12px;z-index:4}.incense-route span{font-size:13px;white-space:nowrap;opacity:.45}.incense-route span.active{color:#bfe8d5;opacity:1;text-shadow:0 0 12px #a4d4c066}.incense-route i{height:1px;flex:1;background:#87b8b34d}
.incense-pins{position:absolute;inset:0;pointer-events:none;z-index:4}.incense-pins button{position:absolute;pointer-events:auto;transform:translate(-50%,-50%);font-size:13px;padding:8px 16px;white-space:nowrap;background:#244d62ef;border-color:#9acbc797;touch-action:none;min-width:78px}.incense-pins button:before{content:"";position:absolute;bottom:100%;left:50%;width:1px;height:18px;background:#8fc9c795}.incense-target{position:absolute;z-index:3;pointer-events:none;transform:translate(-50%,-50%);border:1px dashed #8bdcd5;border-radius:50%;width:95px;height:72px;display:grid;place-items:center;color:#cef7ed;font-size:13px;background:#4facab16}.incense-target.ready{color:#fff0cd;border-style:solid;border-color:#e8d0a0;background:#81d0bb2d}
.incense-board-labels{position:absolute;inset:0;pointer-events:none;z-index:3}.incense-board-labels span{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;font-size:12px;color:#eee3c8;text-shadow:0 1px 3px #102938;background:#233d4a99;border-radius:9px;padding:3px 9px}.incense-board-labels [data-place^=hole]{color:#ebc8c3;background:#463b468e}.incense-board-labels [data-place=goal]{color:#dcf1d0;background:#3c6957ce}
.incense-sound-setting{display:flex;gap:24px;align-items:center;justify-content:space-between;padding:15px 0}.incense-sound-setting input{accent-color:#acd6c4;width:65%}
.incense-master-line{position:absolute;left:10%;bottom:12%;width:52%;background:linear-gradient(90deg,transparent,#142c3de6 12%,#142c3de6 90%,transparent);z-index:5;padding:15px 28px;box-sizing:border-box;pointer-events:none}.incense-master-line span{font-size:13px;color:#bdcbb7;letter-spacing:.14em}.incense-master-line p{font-size:16px;line-height:1.8;margin:7px 0 0;color:#f0ecd9}
.incense-overlay{position:absolute;inset:0;z-index:10;background:#081b2b86;backdrop-filter:blur(6px);display:grid;place-items:center;padding:35px}.incense-dialog{position:relative;width:570px;max-width:80vw;max-height:82vh;overflow:auto;text-align:center;border:3px solid #aab6cc;border-radius:48px 76px 42px 65px;padding:35px 52px 32px;background:radial-gradient(ellipse at top,#567b8c,#223f5a 70%);box-shadow:0 0 0 7px #365970cc,0 0 0 9px #9ab6be66,0 30px 80px #05122099,inset 0 0 55px #bcabca25;box-sizing:border-box}.incense-dialog:before{content:"";position:absolute;inset:10px;border:1px solid #cfc9ce55;border-radius:38px 63px 32px 55px;pointer-events:none}.incense-flower{font-size:38px;color:#d5bcbc;line-height:1;margin-bottom:8px;text-shadow:0 0 22px #e0c6c655}.incense-dialog-eyebrow{font-size:12px;letter-spacing:.18em;color:#bdcccf}.incense-dialog h2{font-size:36px;letter-spacing:.14em;font-weight:400;color:#f0e5ce;margin:16px 0 20px}.incense-dialog-text{font-size:16px;line-height:1.9;color:#d9e6dc;margin:12px 0}.incense-dialog-body{font-size:14px;line-height:2;color:#c3d5d1}.incense-dialog-body small{font-size:12px;color:#a8bfbc}.incense-brief-symbol{width:68px;height:68px;line-height:68px;border-radius:50%;font-size:64px;margin:12px auto;color:#d9d1ad;text-shadow:0 0 20px #e0c6a83d}.incense-dialog-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:22px}.incense-dialog-actions button{font-size:14px}.incense-dialog-actions .incense-primary{min-width:155px}
.incense-observe{position:absolute;inset:auto 28% 19% 15%;padding:18px 25px;text-align:center;border-radius:26px 35px;background:#234358ef;border:1px solid #a9d0c291;z-index:9;box-shadow:0 10px 45px #00132477}.incense-observe p{font-size:17px}.incense-game.observing .incense-inset{position:fixed;width:300px;height:300px;left:calc(43% - 150px);top:18%;background:radial-gradient(circle,#385f72f5,#102e43ee);box-shadow:0 0 0 7px #658b9d99,0 0 60px #b3d9ca33;z-index:7}.incense-game.observing .incense-view{opacity:.35}
.incense-game[data-mode=discover]{background:transparent;z-index:12;pointer-events:none}.incense-game[data-mode=discover] .incense-atmosphere{background:radial-gradient(ellipse at center,#172c35e8 15%,#172b34b5 45%,transparent 74%)}.incense-game[data-mode=discover] .incense-bar,.incense-game[data-mode=discover] .incense-panel,.incense-game[data-mode=discover] .incense-footer{display:none}.incense-game[data-mode=discover] .incense-view{left:15%;top:6%;bottom:28%;width:70%;pointer-events:none}
.incense-story{position:absolute;inset:0;z-index:12;pointer-events:none}.incense-story .incense-portrait{position:absolute;left:7%;bottom:18%;height:67%;max-width:45%;object-fit:contain;filter:drop-shadow(0 15px 30px #0006);animation:incense-arrive .5s ease-out}.incense-transition{position:absolute;inset:0;display:grid;place-content:center;text-align:center;background:radial-gradient(ellipse,#254858,#0d1d35 75%);z-index:30;pointer-events:auto;animation:incense-arrive .6s ease-out}.incense-transition:before{content:"☾";font-size:80px;color:#d8ddca;text-shadow:0 0 55px #d4e5c26b;margin:0 auto 20px}.incense-transition h2{font-size:32px;font-weight:400;letter-spacing:.22em;color:#e5e5d3}.incense-transition p{font-size:15px;color:#a9c8c6;letter-spacing:.15em}.incense-story-action{position:absolute;bottom:13%;left:50%;transform:translateX(-50%);pointer-events:auto}.incense-story-ending{position:absolute;width:570px;left:50%;top:48%;transform:translate(-50%,-50%);padding:40px;border-radius:45px 65px;border:2px solid #abc0caa6;background:linear-gradient(145deg,#355b70ed,#182c44f5);box-shadow:0 0 0 7px #29475caa,0 20px 65px #00142699;pointer-events:auto;text-align:center}.incense-story-ending h2{font-size:32px;letter-spacing:.15em;font-weight:400;color:#e7e3cd}.incense-story-ending p{color:#c6d7d1;line-height:1.9}.incense-story-ending small{color:#adcfca;letter-spacing:.17em}.incense-story-ending div{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:22px}.incense-story-ending button{font-size:14px}
#chapterRoot[data-incense-game=true] .chapter-topbar{display:none}#chapterRoot[data-incense-game=true] .chapter-dialogue{display:none}#chapterRoot[data-night=true] .chapter-vignette{background:linear-gradient(180deg,#06142540,transparent 40%,#030e1855)}#chapterRoot[data-night=true] .chapter-brand small{color:#a8c9c9}
@keyframes incense-arrive{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@media(max-height:800px){.incense-panel{padding:20px 17px 12px;top:16%;bottom:13%}.incense-inset{height:18vh}.incense-heading{font-size:18px;margin:7px 0 10px}.incense-description{font-size:13px;line-height:1.65;margin:8px 0}.incense-step-dots{margin:8px 0}.incense-feedback{font-size:11px;margin:5px 0}.incense-wide{font-size:12px;padding:7px!important}.incense-footer{bottom:23px}.incense-bar{top:25px}.incense-master-line{bottom:11%;padding:10px 20px}.incense-master-line p{font-size:14px}.incense-panel .incense-action-row{margin:5px 0}.incense-dialog{padding:24px 42px}.incense-dialog h2{font-size:31px}}
@media(prefers-reduced-motion:reduce){.incense-game *,.incense-story *{animation:none!important;transition:none!important}}

/* Silver, lacquer and woven silk: a quieter stage for the actual object. */
.incense-footer-actions{display:flex;gap:10px;flex-shrink:0}
.incense-game{background:#101e25;color:#eee6d7;font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.incense-atmosphere{background:radial-gradient(ellipse at 32% 37%,#37575b70,transparent 62%),radial-gradient(ellipse at 90% 85%,#69544225,transparent 60%),linear-gradient(125deg,#152c34,#101921 74%)}
.incense-atmosphere:after{inset:19px;border:1px solid #a8957140;border-radius:2px;box-shadow:inset 0 0 65px #0003}
.incense-wordmark{border-left:2px solid #b5a17d;padding-left:15px}.incense-wordmark small{color:#b9b09c;font-family:"KaiTi","STKaiti",serif;letter-spacing:.18em;font-size:13px}.incense-wordmark h1{font-family:"KaiTi","STKaiti",serif;font-size:30px;letter-spacing:.18em;color:#efe2c9;margin-top:10px}
.incense-bar{inset:31px 42px auto}.incense-top-actions{gap:6px}.incense-game button,.incense-story button{font-family:inherit;border:1px solid #a9a38966;background:linear-gradient(180deg,#304749d9,#233639e8);border-radius:3px;padding:9px 17px;box-shadow:inset 0 1px #faf2d914,0 3px 10px #0002;color:#e6dfd0;letter-spacing:.06em}
.incense-game button:hover,.incense-story button:hover{background:linear-gradient(180deg,#486361,#2f4b4a);box-shadow:0 0 14px #b5b99b20}.incense-game .incense-primary,.incense-story .incense-primary{background:linear-gradient(135deg,#cfc09b,#a59c79);color:#283d3c;border-color:#e2d3b1;box-shadow:inset 0 1px #fff4d7,0 3px 14px #0003}
.incense-top-actions button{font-size:13px;padding:8px 14px;background:#182a31a6;border-color:#83918e55}.incense-route{left:24%;right:32%;top:8%;gap:13px}.incense-route span{font-size:13px;color:#ccc1aa}.incense-route span.active{color:#ead8b4;text-shadow:none}.incense-route i{background:#b1a27b40}
.incense-view{left:1.2%;top:14%;bottom:11%;width:73%}.incense-panel,.incense-game[data-mode=board] .incense-panel{right:3.3%;top:17%;width:22.3%;bottom:14%;max-width:360px;padding:21px 19px 16px}
.incense-panel:before{border-radius:5px;background:linear-gradient(145deg,#294248d9,#192d34e8);border:1px solid #9d947a70;box-shadow:inset 0 0 35px #060f1740,0 12px 35px #0002}.incense-panel:after{inset:6px;border:1px solid #ae9f7524;border-radius:2px}
.incense-panel-crown{color:#c4b28c;font-size:18px;top:-12px;background:#193038;padding:0 9px;left:calc(50% - 18px);text-shadow:none}.incense-kicker{font-size:11px;color:#b9b6a4;letter-spacing:.18em}.incense-heading{font-family:"KaiTi","STKaiti",serif;font-size:23px;color:#eee0c3;font-weight:400;margin:10px 0 13px}
.incense-inset,.incense-game[data-mode=board] .incense-inset{height:24vh;min-height:140px;max-height:255px;margin:0 0 11px;border:0;border-radius:0;background:radial-gradient(ellipse,#52655c35,transparent 69%);box-shadow:none}.incense-game[data-mode=board] .incense-inset{height:30vh;max-height:305px}.incense-inset span{font-size:11px;color:#aebcaf;letter-spacing:.15em}
.incense-parts-key{font-size:12px;color:#c3ccbe;gap:8px;margin:10px 0 14px;white-space:nowrap}.incense-parts-key span:before{content:"";display:inline-block;width:5px;height:5px;margin-right:5px;background:#81c8ca;transform:rotate(45deg)}.incense-parts-key span:nth-child(2):before{background:#e4d6aa}.incense-parts-key span:nth-child(3):before{background:#d8b166}
.incense-description,.incense-game[data-mode=board] .incense-description{font-size:14px;line-height:1.75;color:#dadcca;margin:12px 0}.incense-step-dots{margin:12px 0}.incense-step-dots i{height:2px;background:#61777555}.incense-step-dots i.done{background:#c9bc96;box-shadow:none}
.incense-action-row button,.incense-rotate button{font-size:12px;padding:8px 6px}.incense-wide{font-size:13px}.incense-feedback,.incense-game[data-mode=board] .incense-feedback{font-size:12px;line-height:1.75;color:#d3bd8f;margin:12px 0 10px;min-height:24px}.incense-volume{font-size:11px;color:#a4b2a6}.incense-volume input{accent-color:#b9b18a}
.incense-footer{left:45px;right:45px;bottom:29px;border-top:1px solid #84917b2a;padding-top:17px}.incense-control-note{font-size:14px;color:#c4cab8;letter-spacing:.04em}.incense-footer button{background:#14282fa6;font-size:13px}.incense-pins button{background:#254246ed;border-color:#afbda396;border-radius:2px;padding:8px 15px;font-size:13px}
.incense-board-labels span{font-family:"KaiTi","STKaiti",serif;font-size:14px;background:#202b29d6;border:1px solid #d2bd844d;border-radius:2px;padding:3px 10px;color:#eee0be}.incense-board-labels [data-place^=hole]{color:#e6c4af;background:#342b27de}.incense-board-labels [data-place=goal]{color:#e1e9ce;background:#334b42e8}
.incense-overlay{background:#09121896;backdrop-filter:blur(8px)}.incense-dialog{width:min(620px,77vw);padding:30px 43px 28px;border-radius:7px;border:1px solid #c4b792b0;background:linear-gradient(135deg,#284147f5,#162b33fb);box-shadow:0 0 0 5px #13252de6,0 0 0 6px #a2987440,0 25px 85px #0008}.incense-dialog:before{border-radius:3px;border-color:#b7a97d3b;inset:10px}.incense-flower{color:#d0bd92;font-size:23px;text-shadow:none}.incense-dialog h2{font-family:"KaiTi","STKaiti",serif;font-size:35px;color:#ebdcbb;margin:13px 0 15px}.incense-dialog-eyebrow{font-size:12px;color:#afa991}.incense-dialog-text{font-size:14px;color:#d5dbcc;line-height:1.8}.incense-dialog-body{font-size:13px;color:#c5cdbb}.incense-dialog-body small{font-size:11px;color:#a8b1a4}.incense-dialog-actions{gap:8px;margin-top:21px}.incense-dialog-actions button{font-size:13px;padding:9px 13px}.incense-dialog-actions .incense-primary{min-width:140px}
.incense-brief-illustration{height:130px;display:flex;justify-content:center;margin:3px 0 4px}.incense-brief-illustration img{height:100%;width:165px;object-fit:cover;object-position:center 52%;border-radius:4px;mask-image:radial-gradient(ellipse at center,black 52%,transparent 76%)}.incense-dialog-body p{margin:6px 0 12px}
.incense-story-ending{border:1px solid #aa9f7dbb;border-radius:6px;background:linear-gradient(135deg,#294349f5,#182b33fa);box-shadow:0 0 0 5px #172a31cc,0 20px 65px #0008}
#chapterRoot[data-backstage=true] .chapter-objective,#chapterRoot[data-backstage=true] .chapter-wayfinding,#chapterRoot[data-backstage=true] .chapter-walk-hint{display:none!important}
.incense-transition{display:none!important}
.incense-panel:before{background:linear-gradient(to right,#20363e 0 17px,transparent 17px calc(100% - 17px),#20363e calc(100% - 17px)),linear-gradient(to bottom,#20363e 0 var(--inset-top,80px),transparent var(--inset-top,80px) var(--inset-bottom,290px),#20363e var(--inset-bottom,290px));box-shadow:0 12px 35px #0002}
.incense-inset,.incense-game.observing .incense-inset{background:transparent;box-shadow:none}
.incense-game.observing .incense-panel:before{background:#20363e}
.incense-game.observing .incense-inset{border:1px solid #bcb18b80;border-radius:4px;box-shadow:0 0 0 6px #193038b3,0 12px 45px #0005}
@media(max-height:800px){
  .incense-game[data-mode=repair] .incense-panel{top:15%;bottom:12%;padding:14px 17px 11px}
  .incense-game[data-mode=repair] .incense-heading{font-size:19px;margin:6px 0 8px}
  .incense-game[data-mode=repair] .incense-inset{height:21vh;min-height:135px;margin-bottom:5px}
  .incense-game[data-mode=repair] .incense-parts-key{font-size:11px;margin:5px 0 8px}
  .incense-game[data-mode=repair] .incense-description{font-size:12px;line-height:1.6;margin:6px 0}
  .incense-game[data-mode=repair] .incense-step-dots{margin:8px 0}
  .incense-game[data-mode=repair] .incense-action-row{margin:5px 0}
  .incense-game[data-mode=repair] .incense-action-row button{padding:7px 4px;font-size:11px}
  .incense-game[data-mode=repair] .incense-wide{font-size:12px;padding:7px!important;margin-top:4px}
  .incense-game[data-mode=repair] .incense-feedback{font-size:11px;line-height:1.55;margin:7px 0;min-height:17px}
}
@media(max-height:800px){.incense-panel,.incense-game[data-mode=board] .incense-panel{top:16%;bottom:14%;padding:17px 17px 12px}.incense-inset{height:19vh;min-height:125px}.incense-heading{font-size:20px;margin:8px 0 10px}.incense-description,.incense-game[data-mode=board] .incense-description{font-size:13px;line-height:1.65;margin:8px 0}.incense-parts-key{font-size:11px;gap:4px;margin:8px 0 10px}.incense-feedback,.incense-game[data-mode=board] .incense-feedback{font-size:11px;line-height:1.65;margin:8px 0;min-height:18px}.incense-footer{bottom:23px;padding-top:12px}.incense-dialog{padding:22px 36px}.incense-dialog h2{font-size:31px}.incense-brief-illustration{height:110px}}

/* Tang palette: blue silk, warm timber, ivory paper and a restrained vermilion seal. */
.incense-game{
  --incense-baseline:clamp(86px,12vh,138px);
  --incense-speech-height:clamp(94px,13.5vh,128px);
  --incense-blue:#436c85;
  --incense-ivory:#eee6cb;
  background:#243f53;color:var(--incense-ivory);
}
.incense-atmosphere{
  background:radial-gradient(ellipse at 32% 25%,#60859a69,transparent 65%),
    radial-gradient(ellipse at 85% 85%,#82b29b12,transparent 56%),
    linear-gradient(130deg,#314f65,#243e52 75%);
}
.incense-atmosphere:after{border-color:#a8c3d154;box-shadow:inset 0 0 70px #18324633}
.incense-wordmark{border-color:#de9960}
.incense-wordmark small{color:#c3d5d9}
.incense-wordmark h1{color:#eee6cb;text-shadow:0 2px 6px #18324655}
.incense-game[data-mode=repair] .incense-view{
  left:1.2%;top:14%;width:70%;
  bottom:calc(var(--incense-baseline) + var(--incense-speech-height) + 16px);
}
.incense-game[data-mode=board] .incense-view{left:1.2%;width:70%;bottom:var(--incense-baseline)}
.incense-game[data-mode=repair] .incense-panel,
.incense-game[data-mode=board] .incense-panel{
  right:10%;top:max(104px,15%);bottom:var(--incense-baseline);
  width:24%;max-width:390px;padding:20px 20px 17px;
  display:flex;flex-direction:column;
}
.incense-panel>*{flex-shrink:0}
/* Leave a real transparent opening for the WebGL cutaway underneath this panel. */
.incense-panel:before{
  border:1px solid #b7c9c9;border-radius:8px;
  background:linear-gradient(to right,var(--incense-blue) 0 var(--inset-left,20px),transparent var(--inset-left,20px) var(--inset-right,calc(100% - 20px)),var(--incense-blue) var(--inset-right,calc(100% - 20px))),
    linear-gradient(to bottom,var(--incense-blue) 0 var(--inset-top,80px),transparent var(--inset-top,80px) var(--inset-bottom,290px),var(--incense-blue) var(--inset-bottom,290px));
  box-shadow:0 10px 28px #132d4140;
}
.incense-panel:after{inset:6px;border-color:#a8c3d151;border-radius:4px}
.incense-panel-crown{color:#eed7c6;background:var(--incense-blue);top:-11px;border-radius:2px}
.incense-kicker{color:#d0dfe0;font-size:12px}
.incense-game[data-mode=repair] .incense-heading,
.incense-game[data-mode=board] .incense-heading{color:#fff2d6;font-size:24px;margin:7px 0 12px}
.incense-game[data-mode=repair] .incense-inset{
  height:auto;min-height:122px;max-height:255px;flex:1 1 22vh;margin:0 0 8px;
}
.incense-game[data-mode=board] .incense-inset{height:28vh;min-height:150px;max-height:300px;margin:0 0 8px}
.incense-inset span{color:#e5e9dc;font-size:12px;bottom:4px}
/* Mask fractional WebGL scissor edges without adding layout width or height. */
.incense-game:not(.observing) .incense-inset{outline:2px solid var(--incense-blue);box-shadow:inset 0 0 0 2px var(--incense-blue)}
.incense-game[data-mode=repair] .incense-parts-key,
.incense-game[data-mode=board] .incense-parts-key{color:#f0eadb;font-size:12px;margin:6px 0 10px;gap:5px}
.incense-parts-key span:first-child:before{background:#a8d9d0}
.incense-parts-key span:nth-child(2):before{background:#eee6cb}
.incense-parts-key span:nth-child(3):before{background:#efbe82}
.incense-game[data-mode=repair] .incense-description,
.incense-game[data-mode=board] .incense-description{color:#f4eedf;font-size:14px;line-height:1.7;margin:7px 0}
.incense-game[data-mode=repair] .incense-step-dots{margin:8px 0}
.incense-step-dots i{height:3px;background:#a8c3d13a}
.incense-step-dots i.done{background:#eed7c6}
.incense-game button{
  background:linear-gradient(180deg,#527c93,#436c85);border-color:#afc4c7;
  color:#fff1d8;border-radius:4px;box-shadow:inset 0 1px #e4ece91c,0 3px 7px #18324633;
}
.incense-game button:hover{background:linear-gradient(180deg,#638ca0,#517c95);box-shadow:0 3px 10px #18324644}
.incense-game button:focus-visible{outline-color:#eee6cb}
.incense-game .incense-primary{background:linear-gradient(180deg,#c35350,#ac4145);border-color:#e7b395;color:#fff0d9;box-shadow:inset 0 1px #f9d2ab42,0 3px 8px #18324644}
.incense-game .incense-primary:hover{background:linear-gradient(180deg,#cd6259,#b7494a)}
.incense-game .incense-top-actions button,.incense-game .incense-footer button{background:#314f65;border-color:#a8c3d179}
.incense-game .incense-top-actions button:hover,.incense-game .incense-footer button:hover{background:#436c85}
/* Match the opening HUD's matte octagons, with captions below the artwork. */
.incense-top-actions{--incense-hud-size:58px;align-items:flex-start;gap:9px}
.incense-top-actions>button:not(.incense-hud-button){margin-top:10px}
.incense-game .incense-top-actions .incense-hud-button{
  position:relative;top:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;
  flex:0 0 70px;width:70px;min-width:0;min-height:0;height:auto;padding:0;border:0;border-radius:0;
  background:transparent;box-shadow:none;color:#eee6cb;font:13px/1.4 KaiTi,STKaiti,serif;
  letter-spacing:1.5px;text-align:center;white-space:nowrap;text-shadow:0 2px 4px #183246;
}
.incense-game .incense-top-actions .incense-hud-button:before{
  content:"";display:block;width:var(--incense-hud-size);height:calc(var(--incense-hud-size)*1.04);
  flex-shrink:0;background:var(--incense-hud-art) center/contain no-repeat;
  filter:drop-shadow(1px 2px 1px #10263866) drop-shadow(3px 5px 5px #10263840);
  transition:filter .18s,transform .18s;pointer-events:none;
}
.incense-top-actions [data-incense=sound]{--incense-hud-art:url('assets/ui/incense-hud-sound.svg')}
.incense-top-actions [data-incense=help]{--incense-hud-art:url('assets/ui/incense-hud-help.svg')}
.incense-top-actions [data-incense=pause]{--incense-hud-art:url('assets/ui/incense-hud-pause.svg')}
.incense-game .incense-top-actions .incense-hud-button:hover{background:transparent;box-shadow:none}
.incense-game .incense-top-actions .incense-hud-button:hover:before{transform:translateY(-1px);filter:brightness(1.06) drop-shadow(1px 2px 1px #10263866) drop-shadow(3px 6px 6px #10263848)}
.incense-game .incense-top-actions .incense-hud-button:active:before{transform:translateY(1px) scale(.96)}
.incense-game .incense-top-actions .incense-hud-button:focus-visible{outline:1px solid #eee6cb;outline-offset:4px}
@media(max-height:800px){
  .incense-top-actions{--incense-hud-size:50px;transform:translateY(-14px)}
  .incense-game .incense-top-actions .incense-hud-button{width:62px;flex-basis:62px}
  .incense-top-actions>button:not(.incense-hud-button){margin-top:6px}
}
@media(prefers-reduced-motion:reduce){.incense-game .incense-top-actions .incense-hud-button:before{transition:none}}
.incense-game .incense-pins button{background:#385d72eb;color:#fff0d9;border-color:#c2d5d4;box-shadow:0 3px 8px #17304233;font-size:14px}
.incense-pins button:before{background:#c4d9db}
.incense-game[data-mode=repair] .incense-feedback,
.incense-game[data-mode=board] .incense-feedback{color:#fff0d1;font-size:13px;line-height:1.7;min-height:0;margin:9px 0}
.incense-feedback:empty{display:none}
.incense-volume{color:#e1e5dc;font-size:12px;margin-top:auto;padding-top:12px}
.incense-volume input{accent-color:#eed7c6;flex:1}
.incense-footer{border-color:#a8c3d142}
.incense-control-note{color:#d8e4e4}
.incense-route span{color:#bbd0da;opacity:.7}
.incense-route span.active{color:#eee6cb}
.incense-route i{background:#a8c3d15e}
.incense-master-line{
  left:10.5%;width:54%;bottom:var(--incense-baseline);
  min-height:var(--incense-speech-height);padding:17px 25px 18px;
  border:1px solid #bd966e;border-radius:7px;
  background:linear-gradient(110deg,#eee6cbdb,#eed7c6b3),url('assets/ui/pipa-paper.jpg') center/cover;
  box-shadow:inset 0 0 0 4px #f7edda, inset 0 0 0 5px #c9ae8673,0 7px 22px #18324640;
}
.incense-master-line:before{content:"";position:absolute;left:14px;top:19px;width:3px;height:19px;background:#b73f42;border-radius:1px}
.incense-game[data-mode=repair] .incense-master-line{left:var(--incense-table-left,10.5%);width:var(--incense-table-width,54%)}
.incense-master-line span{display:block;font-size:15px;color:#893d3b;letter-spacing:.12em;font-weight:600}
.incense-master-line p{font-size:17px;line-height:1.75;margin:7px 0 0;color:#304a5b}
.incense-game.observing .incense-panel:before{background:var(--incense-blue)}
.incense-game.observing .incense-inset{flex:none;border-color:#c5d4cf;box-shadow:0 0 0 6px #436c85,0 12px 45px #18324655}
.incense-observe{background:#436c85f5;border-color:#c3d5cf;color:#eee6cb}
.incense-dialog{background:linear-gradient(135deg,#436c85,#2d4f67);border-color:#b8c9c6;box-shadow:0 0 0 5px #304f65,0 0 0 6px #a8c3d15e,0 25px 85px #152d4966}
.incense-dialog-eyebrow,.incense-dialog-body small{color:#cbdedf}
.incense-dialog-text,.incense-dialog-body{color:#efe9d9}
.incense-game .incense-board-labels span{background:#36596ee6;border-color:#a8c3d1a3;color:#fff1d6}
.incense-game .incense-board-labels [data-place^=hole]{background:#963d42e6;border-color:#e3b293;color:#fff0d6}
.incense-game .incense-board-labels [data-place=goal]{background:#4e7c6be8;border-color:#a8ceb9;color:#fff0d6}
@media(max-height:800px){
  .incense-game[data-mode=repair] .incense-panel,.incense-game[data-mode=board] .incense-panel{padding:14px 17px 13px}
  .incense-game[data-mode=repair] .incense-heading,.incense-game[data-mode=board] .incense-heading{font-size:21px;margin:5px 0 8px}
  .incense-game[data-mode=repair] .incense-inset{min-height:105px;margin-bottom:4px}
  .incense-game[data-mode=repair] .incense-parts-key,.incense-game[data-mode=board] .incense-parts-key{font-size:12px;margin:5px 0 7px}
  .incense-game[data-mode=repair] .incense-description,.incense-game[data-mode=board] .incense-description{font-size:13px;line-height:1.6;margin:6px 0}
  .incense-game[data-mode=repair] .incense-feedback,.incense-game[data-mode=board] .incense-feedback{font-size:12px;line-height:1.6;margin:7px 0}
  .incense-game[data-mode=repair] .incense-action-row button{font-size:12px;padding:7px 4px}
  .incense-volume{font-size:12px;padding-top:10px}
  .incense-master-line{padding:14px 24px 15px}
  .incense-master-line:before{top:16px}
  .incense-master-line p{font-size:16px;line-height:1.65;margin-top:6px}
}

/* Reuse the merchant's paper, woven border, stacked leaves and matte seal. */
.incense-overlay{padding:14px;background:#14232487;backdrop-filter:blur(4px)}
.incense-dialog.merchant-book{
  --merchant-ink:#35443f;
  width:min(820px,88vw);max-width:820px;max-height:calc(100svh - 28px);
  padding:20px 72px 34px 18px;overflow:visible;border:0;border-radius:0;
  background:transparent;box-shadow:none;text-align:left;isolation:isolate;
  font-family:var(--sans);
}
.incense-dialog.merchant-book::before{content:none}
.incense-dialog .merchant-book-heading{padding-right:0;gap:24px}
.incense-dialog .incense-dialog-eyebrow{font:12px/1.5 var(--serif);letter-spacing:2.5px;color:#726248}
.incense-dialog.merchant-book h2{font:44px/1.25 var(--serif);font-weight:400;letter-spacing:6px;color:#304840;margin:8px 0 6px}
.incense-dialog .incense-dialog-text{font:16px/1.8 var(--serif);color:#6b6556;letter-spacing:.5px;margin:8px 0 18px}
.incense-dialog .incense-dialog-body{font:16px/1.85 var(--sans);color:#514f43}
.incense-dialog .incense-dialog-body small{font:14px/1.6 var(--serif);color:#796c52;letter-spacing:1px}
.incense-brief-layout{display:grid;grid-template-columns:30% 1fr;gap:32px;align-items:center;min-height:212px;padding:18px 0;border-block:1px solid #7f79614d}
.incense-dialog .incense-brief-illustration{height:190px;margin:0;align-items:center;background:url('assets/incense/sachet-paper-preview.png') center/contain no-repeat;filter:drop-shadow(2px 6px 4px #615c3e25)}
.incense-brief-rules p{font:22px/1.9 var(--serif);color:#3a4f43;margin:0 0 16px}
.incense-dialog .incense-dialog-actions{gap:12px;justify-content:flex-start;align-items:center;margin-top:22px}
.incense-game .incense-dialog-actions button{
  min-height:46px;padding:11px 18px;border:1px solid #68746799;border-radius:1px;
  background-image:url('assets/ui/merchant-paper/paper-grain.png'),linear-gradient(105deg,#f7f0dfb3,#e5e5cf80);
  background-size:256px 256px,auto;color:#3d574b;
  box-shadow:inset 0 0 0 3px #f5f0e1,inset 0 0 0 4px #85927d66;
  font:16px/1.4 var(--serif);letter-spacing:1px;
}
.incense-game .incense-dialog-actions .incense-primary{
  order:2;min-width:174px;margin-left:auto;border-color:#6d3b32;color:#fff3df;
  background:#914e40 url('assets/ui/merchant-paper/paper-grain.png') repeat;
  background-size:256px 256px;box-shadow:inset 0 0 0 3px #914e40,inset 0 0 0 4px #e9cab178;
  font-size:18px;font-weight:400;
}
.incense-game .incense-dialog-actions button:hover{filter:brightness(.97);box-shadow:inset 0 0 0 3px #eee9d9,inset 0 0 0 4px #5b786b99}
.incense-game .incense-dialog-actions .incense-primary:hover{filter:brightness(1.08);box-shadow:inset 0 0 0 3px #914e40,inset 0 0 0 4px #efd8b1a6}
.incense-game .incense-dialog-actions button:focus-visible{outline:2px solid #526b60;outline-offset:4px}
.incense-dialog .incense-sound-setting{font:20px/1.6 var(--serif);color:#465c4d;padding:18px 0}
.incense-dialog .incense-sound-setting input{accent-color:#5d7866;cursor:pointer}
@media(max-height:780px){
  .incense-dialog.merchant-book h2{font-size:38px}
  .incense-dialog .incense-dialog-text{margin-bottom:14px}
  .incense-brief-layout{min-height:170px;padding:14px 0;gap:24px}
  .incense-dialog .incense-brief-illustration{height:165px}
  .incense-brief-rules p{font-size:20px}
  .incense-dialog .incense-dialog-actions{margin-top:18px}
}
@media(max-height:650px){
  .incense-dialog .merchant-book-sheet{padding:18px 26px}
  .incense-dialog .incense-dialog-text{margin:4px 0 12px;font-size:15px}
  .incense-brief-layout{min-height:140px;padding:10px 0}
  .incense-dialog .incense-brief-illustration{height:140px}
  .incense-brief-rules p{font-size:18px;margin-bottom:10px}
  .incense-dialog .incense-dialog-actions{margin-top:16px}
}
.incense-turn-hint{position:absolute;z-index:6;max-width:260px;box-sizing:border-box;padding:11px 15px;color:#fff0d4;background:#294d62ed;border:1px solid #b9d1ce8c;border-radius:4px;box-shadow:0 5px 15px #142d3f40;pointer-events:none}
.incense-turn-hint[hidden]{display:none!important}
.incense-turn-hint b{display:block;font:600 18px/1.5 "KaiTi","Microsoft YaHei",sans-serif;letter-spacing:1px;color:#ffe0a8}
.incense-turn-hint span{display:block;margin-top:3px;font:12px/1.7 "Microsoft YaHei",sans-serif;color:#e0eeee}
